姿态变换(一)——旋转矩阵
文章目录
- 一、二维旋转矩阵
- 1.向量绕原点旋转
- 2.坐标轴绕原点旋转
- 二、三维旋转矩阵
- 1.坐标轴绕z轴旋转
- 2.坐标轴绕y轴旋转
- 3.坐标轴绕x轴旋转
- 4.向量绕某一坐标轴旋转
一、二维旋转矩阵
1.向量绕原点旋转
在二维坐标系xoy中,存在一个向量a=[x,y],将其绕原点O逆时针旋转 θ \theta θ角度,定义逆时针旋转为正,得到新的向量a’=[x’,y’],如图所示。
设向量a的长度为r,则容易得到a的坐标为
[ x y ] = r [ cos λ sin λ ] \begin{bmatrix} x \\ y \\ \end{bmatrix} = r \begin{bmatrix} \cos\lambda \\ \sin\lambda \end{bmatrix} [xy]=r[cosλsinλ]
向量a’的长度同样为r,可以得到a’的坐标为
[ x ′ y ′ ] = r [ cos ( λ + θ ) sin ( λ + θ ) ] = r [ cos λ cos θ − sin λ sin θ sin λ cos θ + cos λ sin θ ] = [ x cos θ − y sin θ y cos θ + x sin θ ] = [ cos θ − sin θ sin θ cos θ ] [ x y ] \begin{bmatrix} x' \\ y' \end{bmatrix} = r \begin{bmatrix} \cos(\lambda + \theta) \\ \sin(\lambda + \theta) \end{bmatrix} = r \begin{bmatrix} \cos\lambda\cos\theta-\sin\lambda\sin\theta \\ \sin\lambda\cos\theta+\cos\lambda\sin\theta \end{bmatrix} = \begin{bmatrix} x\cos\theta-y\sin\theta \\ y\cos\theta+x\sin\theta \end{bmatrix} = \begin{bmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} [x′y′]=r[cos(λ+θ)sin(λ+θ)]=r[cosλcosθ−sinλsinθsinλcosθ+cosλsinθ]=[xcosθ−ysinθycosθ+xsinθ]=[cosθsinθ−sinθcosθ][xy]
所以可以得到旋转矩阵为
C n b = [ cos θ − sin θ sin θ cos θ ] C_{n}^{b} = \begin{bmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{bmatrix} Cnb=[cosθsinθ−sinθcosθ]
2.坐标轴绕原点旋转
和向量的旋转不同的是,坐标轴的旋转是将坐标轴xoy绕原点O进行旋转,向量保持不动。将坐标轴xoy绕原点O逆时针旋转 θ \theta θ角度,定义逆时针旋转为正,得到一个新的坐标系x’oy’,如图所示。
向量a在坐标系xoy中的坐标为
[ x y ] = r [ cos λ sin λ ] \begin{bmatrix} x \\ y \\ \end{bmatrix} = r \begin{bmatrix} \cos\lambda \\ \sin\lambda \end{bmatrix} [xy]=r[cosλsinλ]
根据几何关系可以得到向量a’的坐标为
{ x ′ = x cos θ + y sin θ y ′ = y cos θ − x sin θ \begin{cases} x' = x \cos\theta + y \sin\theta \\ y' = y \cos\theta - x \sin\theta \end{cases} {x′=xcosθ+ysinθy′=ycosθ−xsinθ
整理成矩阵形式可以得到
[ x ′ y ′ ] = [ cos θ sin θ − sin θ cos θ ] [ x y ] \begin{bmatrix} x' \\ y' \end{bmatrix} = \begin{bmatrix} \cos\theta & \sin\theta \\ -\sin\theta& \cos\theta \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} [x′y′]=[cosθ−sinθsinθcosθ][xy]
可以得到旋转矩阵为
C b n = [ cos θ sin θ − sin θ cos θ ] C_b^{n}= \begin{bmatrix} \cos\theta & \sin\theta \\ -\sin\theta& \cos\theta \end{bmatrix} Cbn=[cosθ−sinθsinθcosθ]
我们对比一下向量旋转矩阵 C n b C_n^{b} Cnb和坐标轴旋转矩阵 C b n C_b^{n} Cbn,可以看到 C n b = ( C b n ) T C_n^{b}=(C_b^{n})^{T} Cnb=(Cbn)T,向量旋转矩阵和坐标轴旋转矩阵刚好为转置的关系。因为将向量a逆时针旋转 θ \theta θ角度,相当于将坐标轴顺时针旋转 − θ -\theta −θ角度,将 − θ -\theta −θ带入 C b n C_b^{n} Cbn中便可以得到 C n b C_n^b Cnb。
二、三维旋转矩阵
1.坐标轴绕z轴旋转
定义坐标系Oxyz满足右手系,存在一个向量a的坐标为 [ x y z ] T \begin{bmatrix} x & y & z \end{bmatrix}^T [xyz]T,将坐标轴Oxyz绕z轴逆时针旋转 θ \theta θ角度,定义右手拇指指向z轴正方向,四指弯曲指向方向为正方向,得到新的坐标系Ox’y’z’,向量a在新坐标系Ox’y’z’下的坐标为 [ x ′ y ′ z ′ ] T \begin{bmatrix} x' & y' & z' \end{bmatrix}^T [x′y′z′]T,如图所示。
坐标轴绕z轴旋转,向量a在z轴上的坐标不变,x轴和y轴上的坐标和二维旋转中的坐标轴旋转相同,所以容易得到向量a在新坐标系Ox’y’z’下的坐标为
[ x ′ y ′ z ′ ] = [ cos θ sin θ 0 − sin θ cos θ 0 0 0 1 ] [ x y z ] \begin{bmatrix} x' \\ y' \\ z' \end{bmatrix} = \begin{bmatrix} \cos\theta & \sin\theta & 0 \\ -\sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \\ z \end{bmatrix} ⎣⎡x′y′z′⎦⎤=⎣⎡cosθ−sinθ0sinθcosθ0001⎦⎤⎣⎡xyz⎦⎤
所以绕z轴旋转的旋转矩阵为
C z = [ cos θ sin θ 0 − sin θ cos θ 0 0 0 1 ] C_z = \begin{bmatrix} \cos\theta & \sin\theta & 0 \\ -\sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{bmatrix} Cz=⎣⎡cosθ−sinθ0sinθcosθ0001⎦⎤
2.坐标轴绕y轴旋转
和绕z轴旋转相似,定义右手拇指指向y轴正方向,四指弯曲指向方向为正方向。几何推导关系和绕z轴旋转相似,不再进行推导,直接给出旋转矩阵如下
C y = [ cos θ 0 − sin θ 0 1 0 sin θ 0 cos θ ] C_y = \begin{bmatrix} \cos\theta & 0 & -\sin\theta \\ 0 & 1 & 0 \\ \sin\theta & 0 & \cos\theta \\ \end{bmatrix} Cy=⎣⎡cosθ0sinθ010−sinθ0cosθ⎦⎤
3.坐标轴绕x轴旋转
定义右手拇指指向x轴正方向,四指弯曲指向方向为方向。旋转矩阵为
C x = [ 1 0 0 0 cos θ sin θ 0 − sin θ cos θ ] C_x = \begin{bmatrix} 1 & 0 & 0 \\ 0 & \cos\theta & \sin\theta \\ 0 & -\sin\theta & \cos\theta \\ \end{bmatrix} Cx=⎣⎡1000cosθ−sinθ0sinθcosθ⎦⎤
4.向量绕某一坐标轴旋转
向量的旋转和二维坐标系中的向量旋转相似,绕某一个坐标轴进行旋转时,相当于坐标轴进行反方向的旋转,所以只需要将旋转的角度取负值代入对应的坐标轴旋转矩阵即可。
注:欢迎转载,转载请注明出处,谢谢!!!
姿态变换(一)——旋转矩阵相关推荐
- 三维空间刚体变换:旋转矩阵
点与坐标系 向量与坐标 空间中最基本的元素是点,点没有长度.体积.将两个点连接得到向量,向量表示由某点指向另一个点的有向线段. 对于一空间基底为 [ i j k ] \begin{bmatrix}i& ...
- 车辆姿态表达:旋转矩阵、欧拉角、四元数的转换以及eigen、matlab、pathon方法实现
目录 1 概述 2 原理 2.1 旋转矩阵 2.1.1 绕x轴旋转 2.1.2 绕y轴旋转 2.1.3 绕z轴旋转 2.2 欧拉角 2.2.1 基本思想 2.2.2 欧拉角的缺点 2.3 四元数 2. ...
- 关于位姿变换的一点体会
关于位姿变换的一点体会 1.题外话 2.刚体的位姿变换 2.1 位姿变换的定义 2.2 旋转矩阵的具体形式 2.2.1 二维情况 2.2.2 三维情况 3.旋转方向 4.平移方向 1.题外话 对于刚体 ...
- 【自动驾驶】26.【很清晰】旋转矩阵,欧拉角,四元数,旋转向量和齐次变换矩阵
原文链接:https://blog.csdn.net/varyshare/article/details/91899049 前言 这几个名词都是用来描述一个物体的位置和姿态的.它们之间可以相互转化,而 ...
- 【计算机视觉】opencv姿态解算6 理论算法调研 PNP问题 5种算法
关于PnP(pespective-n-point)的一些方法 最小PnP问题 P3P问题中假设没有噪声,使用几何约束,可以解得相机的位姿.不具有唯一解. P4P问题中分为线性方法和基于P3P的方法. ...
- 1.1 机器人学之空间描述和变换
文章目录 参考博文 描述位置 描述姿态 位姿描述 映射:不同坐标系变换 齐次变换矩阵 算子 平移算子 旋转算子 变换算子 小结 变换的计算 其他姿态描述方法 X-Y-Z固定角 Z-Y-X欧拉角 Z-Y ...
- 旋转矩阵转欧拉角(二自由度约束)
旋转矩阵转欧拉角 1 关于欧拉角 2 转换公式推导 2.1 由欧拉角构造旋转矩阵 2.2 由旋转矩阵推算欧拉角 2.2.1 一般情况 2.2.2 约束滚转角 3 转换代码(C++) 3.1 欧拉角-- ...
- 基于四元素法的捷联惯导姿态更新算法
摘要 本文主要介绍了机载捷联惯导系统常用的姿态更新算法--四元素法,并重点介绍了利用四元素法进行姿态更新的一般过程. 关键词:四元素法,连贯导,姿态 1 引言 ...
- 3维旋转矩阵推导与助记
旋转矩阵的应用范围比较广,是姿态变换,坐标变换等的基础.本篇先介绍旋转矩阵的推导过程与助记方法. 旋转矩阵的旋转其实包含两种意思,一是在同一个坐标系下,向量的旋转:二是坐标系的旋转,使得同一向量在不同 ...
最新文章
- linux 内核 struct file 获取文件名 全路径
- SpringMVC的数据响应-页面跳转-返回ModelAndView3(应用)
- 分享我工作10年收藏的程序员技术网站
- Spring3中js/css/jpg/gif等静态资源无法找到(No mapping found for HTTP request with URI)问题解决(转)...
- matlab anova 如何不画图,方差分析的数据处理和作图
- matlab知识集锦
- python model如何获取分类错误的数据_如何用python获取美股数据?
- 计算机专业学微机原理与接口技术,信息技术学院计算机科学与技术专业《微机原理与接口技术.doc...
- 提取WORD中的所有InlineShape图片并保存成文件
- 随机数抽奖程序 html,半小时撸一个抽奖程序
- 无源晶振(crystal)和有源晶振(oscillator)的区别
- Spring Cloud Gateway配置熔断CircuitBreaker
- 最简单的神经网络的例子,神经网络简单应用实例
- 「杀不掉的」僵尸(zombie)进程
- 站长号平台关于必须绑定手机才能发帖的相关说明
- android Preference以及监听事件学习
- Html-标题,表格,段落标记
- 小裙子怎样画?如何画出一条好看又自然的小短裙?
- 江苏事业单位招聘考计算机专业课,江苏省事业单位计算机专技岗备考指南
- 高端旗舰投影仪选购指南:当贝X3 Pro、当贝F5观影更沉浸!
热门文章
- 【Code Pratice】—— 第几天、K倍区间、煤球数量
- python调用函数指定次数_扣丁学堂Python在线视频之Python限制函数调用次数实例
- JS 中常用判断为空的方法
- 63、灭火器配置要求
- DUCATI XDIAVEL:杜卡迪最值得买的车:魔鬼诱惑 —— XDiavel S 评测
- VS2010快捷键及设置
- [ubuntu20]动态ip在路由器上mac地址绑定ip(虚拟机不能用Mac地址绑定IP)
- [Python] 如何证明两组样本有显著性差异(t-test假设检验)
- 饼图legend显示百分比
- 2022-2028全球连续氧化铝纤维行业调研及趋势分析报告