视觉SLAM_02_旋转矩阵
说明:转发请注明作者和出处;以下文章内容为精简版,详细版以pdf格式的幻灯片形式呈现,请见链接:视觉SLAM_02_旋转矩阵.pdf
0.目录
- 0.目录
- 1.点、向量和坐标系
- 2.坐标系间的欧氏变换
- 3.变换矩阵与齐次坐标
- 4.参考文献
1.点、向量和坐标系
设R3\mathbb{R}^3R3空间内的一组基为(e1,e2,e3)(\boldsymbol e_1, \boldsymbol e_2, \boldsymbol e_3)(e1,e2,e3),则任意向量a\boldsymbol{a}a在这组基下有一个坐标:
a=[e1,e2,e3][a1a2a3]=a1e1+a2e2+a3e3(1)\boldsymbol{a} = [\boldsymbol e_1, \boldsymbol e_2, \boldsymbol e_3] \begin{bmatrix} a_1 \\ a_2 \\ a_3 \end{bmatrix} = a_1 \boldsymbol e_1 + a_2 \boldsymbol e_2 + a_3 \boldsymbol e_3 \tag{1} a=[e1,e2,e3]⎣⎡a1a2a3⎦⎤=a1e1+a2e2+a3e3(1)
这里(a1,a2,a3)T(a_1, a_2, a_3)^T(a1,a2,a3)T称为a\boldsymbol{a}a在此基下的坐标。外积如下定义:
a×b=∥e1e2e3a1a2a3b1b2b3∥=[a2b3−a3b2a3b1−a1b3a1b2−a2b1]=[0−a3a2a30−a1−a2a10]b=defa^b(2)\boldsymbol{a} \times \boldsymbol{b} = \begin{Vmatrix} \boldsymbol e_1 & \boldsymbol e_2 & \boldsymbol e_3 \\ a_1 & a_2 & a_3 \\ b_1 & b_2 & b_3 \end{Vmatrix} = \begin{bmatrix} a_2 b_ 3 - a_3 b_2 \\ a_3 b_1 - a_1 b_3 \\ a_1 b_2 - a_2 b_1 \end{bmatrix} = \begin{bmatrix} 0 & -a_3 & a_2 \\ a_3 & 0 & -a_1 \\ -a_2 & a_1 & 0 \end{bmatrix} \boldsymbol{b} \overset{def}{=} \boldsymbol{a} \hat{\,} \boldsymbol{b} \tag{2} a×b=∥∥∥∥∥∥e1a1b1e2a2b2e3a3b3∥∥∥∥∥∥=⎣⎡a2b3−a3b2a3b1−a1b3a1b2−a2b1⎦⎤=⎣⎡0a3−a2−a30a1a2−a10⎦⎤b=defa^b(2)
a\boldsymbol{a}a的反对称矩阵:
a^=[0−a3a2a30−a1−a2a10](3)\boldsymbol{a} \hat{\,} = \begin{bmatrix} 0 & -a_3 & a_2 \\ a_3 & 0 & -a_1 \\ -a_2 & a_1 & 0 \end{bmatrix} \tag{3} a^=⎣⎡0a3−a2−a30a1a2−a10⎦⎤(3)
2.坐标系间的欧氏变换
刚体运动过程中,物体坐标系到世界坐标系之间,相差了一个欧氏变换。欧氏变换由旋转和平移组成。
设某个单位正交基(e1,e2,e3)(\boldsymbol e_1, \boldsymbol e_2, \boldsymbol e_3)(e1,e2,e3)经过一次旋转变成了(e1′,e2′,e3′)(\boldsymbol e^{'}_1, \boldsymbol e^{'}_2, \boldsymbol e^{'}_3)(e1′,e2′,e3′),对于同一个向量a\boldsymbol{a}a它在两个坐标系下的坐标为[a1,a2,a3]T[a_1, a_2, a_3]^T[a1,a2,a3]T和[a1′,a2′,a3′][a^{'}_1, a^{'}_2, a^{'}_3][a1′,a2′,a3′],因为向量本身没有变,所以
[e1,e2,e3][a1a2a3]=[e1′,e2′,e3′][a1′a2′a3′](4)[\boldsymbol e_1, \boldsymbol e_2, \boldsymbol e_3] \begin{bmatrix} a_1 \\ a_2 \\ a_3 \end{bmatrix} = [\boldsymbol e^{'}_1, \boldsymbol e^{'}_2, \boldsymbol e^{'}_3] \begin{bmatrix} a^{'}_1 \\ a^{'}_2 \\ a^{'}_3 \end{bmatrix} \tag{4} [e1,e2,e3]⎣⎡a1a2a3⎦⎤=[e1′,e2′,e3′]⎣⎡a1′a2′a3′⎦⎤(4)
整理有:
[a1a2a3]=[e1Te1′e1Te2′e1Te3′e2Te1′e2Te2′e2Te3′e3Te1′e3Te2′e3Te3′]=defRa′(5)\begin{bmatrix} a_1 \\ a_2 \\ a_3 \end{bmatrix} = \begin{bmatrix} \boldsymbol e^{T}_1 \boldsymbol e^{'}_1 & \boldsymbol e^{T}_1 \boldsymbol e^{'}_2 & \boldsymbol e^{T}_1 \boldsymbol e^{'}_3 \\ \boldsymbol e^{T}_2 \boldsymbol e^{'}_1 & \boldsymbol e^{T}_2 \boldsymbol e^{'}_2 & \boldsymbol e^{T}_2 \boldsymbol e^{'}_3 \\ \boldsymbol e^{T}_3 \boldsymbol e^{'}_1 & \boldsymbol e^{T}_3 \boldsymbol e^{'}_2 & \boldsymbol e^{T}_3 \boldsymbol e^{'}_3 \end{bmatrix} \overset{def}{=} \boldsymbol R \boldsymbol a^{'} \tag{5} ⎣⎡a1a2a3⎦⎤=⎣⎡e1Te1′e2Te1′e3Te1′e1Te2′e2Te2′e3Te2′e1Te3′e2Te3′e3Te3′⎦⎤=defRa′(5)
其中,
R=[e1Te1′e1Te2′e1Te3′e2Te1′e2Te2′e2Te3′e3Te1′e3Te2′e3Te3′]\boldsymbol R = \begin{bmatrix} \boldsymbol e^{T}_1 \boldsymbol e^{'}_1 & \boldsymbol e^{T}_1 \boldsymbol e^{'}_2 & \boldsymbol e^{T}_1 \boldsymbol e^{'}_3 \\ \boldsymbol e^{T}_2 \boldsymbol e^{'}_1 & \boldsymbol e^{T}_2 \boldsymbol e^{'}_2 & \boldsymbol e^{T}_2 \boldsymbol e^{'}_3 \\ \boldsymbol e^{T}_3 \boldsymbol e^{'}_1 & \boldsymbol e^{T}_3 \boldsymbol e^{'}_2 & \boldsymbol e^{T}_3 \boldsymbol e^{'}_3 \end{bmatrix}R=⎣⎡e1Te1′e2Te1′e3Te1′e1Te2′e2Te2′e3Te2′e1Te3′e2Te3′e3Te3′⎦⎤
即为旋转矩阵(方向余弦矩阵),刻画了旋转前后同一个向量的坐标变换关系。
向量a\boldsymbol{a}a在坐标系1和坐标系2下的坐标为a1\boldsymbol{a_1}a1,a2\boldsymbol{a_2}a2,则:
a1=R12a2+t12(6)\boldsymbol{a_1} = \boldsymbol R_{12} \boldsymbol{a_2} + \boldsymbol{t_{12}} \tag{6} a1=R12a2+t12(6)
这里的R12\boldsymbol R_{12}R12是指“把坐标系2中的向量变换到坐标系1中表示”。t12\boldsymbol t_{12}t12实际是坐标系1原点指向坐标系2原点的向量在坐标系1下取的坐标。
3.变换矩阵与齐次坐标
假设进行了两次变换:R1,t1\boldsymbol R_1, \boldsymbol t_1R1,t1和R2,t2\boldsymbol R_2, \boldsymbol t_2R2,t2:
b=R1a+t1,c=R2b+t2\boldsymbol b = \boldsymbol R_1 \boldsymbol a + \boldsymbol t_1, c = \boldsymbol R_2 \boldsymbol b + \boldsymbol t_2 b=R1a+t1,c=R2b+t2
则从a\boldsymbol aa变到c\boldsymbol cc为:
c=R2(R1a+t1)+t2\boldsymbol c = \boldsymbol R_2 (\boldsymbol R_1 \boldsymbol a + \boldsymbol t_1) + \boldsymbol t_2 c=R2(R1a+t1)+t2
这种形式多次变换之后显得很罗嗦,因此引入齐次坐标表示方法:
[a′1]=[Rt0T1][a1]=defT[a1]\begin{bmatrix} \boldsymbol a^{'} \\ 1 \end{bmatrix} = \begin{bmatrix} \boldsymbol R & \boldsymbol t \\ \boldsymbol 0^T & 1 \end{bmatrix} \begin{bmatrix} \boldsymbol a \\ 1 \end{bmatrix} \overset{def}{=} \boldsymbol T \begin{bmatrix} \boldsymbol a \\ 1 \end{bmatrix} [a′1]=[R0Tt1][a1]=defT[a1]
矩阵T\boldsymbol TT称为变换矩阵,暂时用a~\tilde{\boldsymbol a}a~表示a\boldsymbol aa的齐次坐标,两次变换的叠加:
b~=T1a~,c~=T2b~⇒c~=T2T1a~\tilde{\boldsymbol b} = \boldsymbol T_1 \tilde{\boldsymbol a}, \tilde{\boldsymbol c} = \boldsymbol T_2 \tilde{\boldsymbol b} \Rightarrow \tilde{\boldsymbol c} = \boldsymbol T_2 \boldsymbol T_1 \tilde{\boldsymbol a} b~=T1a~,c~=T2b~⇒c~=T2T1a~
4.参考文献
- 高翔等. 视觉SLAM十四讲:从理论到实践第二版. 北京:电子工业出版社,2019.8.
视觉SLAM_02_旋转矩阵相关推荐
- 视觉SLAM十四讲学习笔记-第三讲-旋转矩阵和Eigen库
专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习 ...
- [视觉SLAM十四讲]学习笔记1-刚体运动之旋转矩阵与变换矩阵
[视觉SLAM十四讲]学习笔记1-刚体运动之旋转矩阵与变换矩阵 1点.向量和坐标系 2 坐标系间的欧式变换 2.1 欧式变换之旋转 2.2 欧式变换之平移 3 变换矩阵与齐次坐标 4 Eigen库的简 ...
- 半闲居士视觉SLAM十四讲笔记(3)三维空间刚体运动 - part 1 旋转矩阵
本系列文章由 youngpan1101 出品,转载请注明出处. 文章链接: http://blog.csdn.net/youngpan1101/article/details/71086500 作者: ...
- 三维空间坐标的旋转算法详解_视觉slam | 三维空间刚体运动的五种表达:旋转矩阵 变化矩阵 欧拉角 旋转向量 四元数及互相转换...
原po:高翔slam十四讲-刚体运动 1.旋转矩阵 考虑一次旋转 Before: 坐标系(e1,e2,e3), 向量(a1,a2,a3) After: 坐标系(e1',e2',e3'), 向量(a1' ...
- 单目和多目视觉统一标定
单目和多目视觉统一标定 一.单目视觉标定 在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立相机成像的几何模型,这些几何模型参数就是相机参 ...
- 视觉惯性SLAM:VINS-Mono
视觉惯性SLAM:VINS-Mono 这篇博客 一些符号说明 IV 测量数据的预处理 A.视觉处理前端 B.IMU预积分 V. 初始化 A.Vision-Only SfM in Sliding Win ...
- 视觉惯性SLAM: VI ORB-SLAM
视觉惯性SLAM: VI ORB-SLAM 这篇博客 视觉惯性SLAM 预备知识 符号说明: 相机投影变换矩阵 IMU数据更新方程 IMU数据的预积分 VI ORB-SLAM各环节工作方式 Initi ...
- 视觉与机械手标定系统技术解决方案
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 一 .手眼标定的两种情形 首先讲一下在工业应用中,手和眼(摄像机) ...
- VSLAM~提取特征后求旋转矩阵
视觉里程计 视觉里程计简介 ----------------------------------------------------------------------------------- 特征 ...
最新文章
- 5-Python3从入门到实战—基础之数据类型(列表-List)
- 【转】从源码分析PreparedStatement是如何防止SQL注入的?
- 【若依(ruoyi)】table定制列宽
- P2152 [SDOI2009]SuperGCD
- Oracle_11g_R1和R2官方下载地址
- 如何让开关打开_安卓手机如何打开USB调试模式
- MySQL 8.0开始Group by不再排序
- weblogic问题: Unable to resolve 'jdbc.mydb'. Resolved 'jdbc'; remaining name '
- 中文乱码之springboot框架中两工程之间参数传递乱码
- Java-JVM调优经验
- dnf mysql数据库密码,MYSQL8在CentOS8环境中的安装过程(DNF/YUM)
- 支付设计白皮书:支付系统的概念与中国互联网支付清算体系
- 网络安全应急响应-恶意代码分析技术
- 计算机开机主机无法启动,手把手教你电脑无法启动怎么办
- Excel单元格提取数字
- 如何绘制日式厚涂插画_厚涂样式
- 传统产业如何进行数字化转型
- 自问自答(JavaScript篇)
- Latex 表格内换行
- 【面经】寒冬中的一年半前端跳槽
热门文章
- Win10《芒果TV》商店版更新v3.2.3:新增应用内意见反馈、播放重试、透明磁贴
- 在 iPhone 和 Android 上恢复已删除的微信消息/聊天的 3 种方法
- 感悟:20条不被发现的职场潜规则
- dism++装net3.5及微软商店恢复
- 画一个 “月饼” 陪我过中秋,使用 ESP32-C3 制作炫彩月饼(我为嵌入式工程师争取月饼)
- 计算机计划300字作文,计划作文300字7篇
- 500以内的机械键盘 横向纵向评测
- 汉字创意 字体图形化设计
- 【OpenPose】1.OpenPoseDemo文件的使用与解读
- android 模拟电脑按键精灵,模拟精灵_安卓模拟精灵_和按键精灵一样的软件