《视觉SLAM十四讲》学习系列(2)—三维空间刚体运动
来源:互联网 发布:netbeans ide 高级编程 编辑:程序博客网 时间:2024/05/17 02:44
《视觉SLAM十四讲》学习系列(2)—三维空间刚体运动
- 视觉SLAM十四讲学习系列2三维空间刚体运动
- 基础数学知识
- 标准正交基
- 反对称矩阵
- 正交矩阵
- 旋转矩阵
- 坐标系间的欧氏变换
- 变换矩阵与齐次坐标
- 旋转向量
- 欧拉角
- 四元数
- 定义与基本运算
- 加法和减法
- 乘法
- 共轭
- 模长
- 逆
- 数乘与点乘
- 用四元数表述旋转
- 四元数到旋转矩阵的转换
- 定义与基本运算
- 各种表示方式的比较
- 相似仿射射影变换
- 基础数学知识
本文主要内容来自《视觉SLAM十四讲》第三讲-三维空间刚体运动。介绍SLAM中的一个基本问题:刚体在三维空间中的运动如何描述。在书中介绍了四种方法:旋转矩阵、旋转向量、欧拉角和四元数。
基础数学知识
标准正交基
在线性代数中,一个内积空间的正交基(orthogonal basis)是元素两两正交的基。称基中的元素为基向量。假若,一个正交基的基向量的模长都是单位长度1,则称这正交基为标准正交基。
反对称矩阵
对于三维空间中的向量
将上述过程记为
正交矩阵
正交矩阵即逆为自身转置的矩阵。
旋转矩阵
坐标系间的欧氏变换
相机运动时一个刚体运动,即同一个在各个坐标系下的长度和夹角都不会发生变化,这类变换称为欧式变换。这样的欧式变换由一个旋转和一个平移组成。设某个单位正交基
左乘
我们将中间的矩阵拿出来定义为旋转矩阵
变换矩阵与齐次坐标
为了便于描述,引入齐次坐标和变换矩阵,重写为:
我们在三维向量的末尾添加1,将其变为四维向量,称齐次坐标。公式中矩阵
旋转向量
旋转向量是旋转矩阵的另一种表达方式,使用一个三维向量来描述旋转,由旋转轴
从旋转矩阵求旋转角:
关于转轴
即转轴
欧拉角
欧拉角提供了一种非常直观的方式来描述旋转,它使用三个分离的转角,即将一个旋转分解成三次饶不同轴的旋转。
ZYX 转角相当于把任意旋转分解成以下三个轴上的转角 :
1、绕物体的 Z 轴旋转,得到偏航角 yaw
2、绕旋转之后的 Y 轴旋转,得到俯仰角 pitch
3、绕旋转之后的 X 轴旋转,得到滚转角 roll
但是欧拉角的一个重大缺陷是会碰到万向锁问题:在俯仰角为
(确实不好理解,笔者最终找到了直观演示视频,其中讲解比较详细,也可参考维基)
四元数
定义与基本运算
四元数是Hamilton找到的一种扩展的复数。一个四元数拥有一个实部和三个虚部(故事上说他原先找了很久带两个虚部的,结果怎么也找不到,最后豁然开朗找到了三虚部的四元数):
其中
现有两个四元数
加法和减法
四元数
乘法
乘法是把
虽然稍为复杂,但形式上也是整齐有序的。如果写成向量形式并利用内外积运算,该表达会更加简洁:
在该乘法定义下,两个实的四元数乘积仍是实的,这与复数也是一致的。然而,注意到,由于最后一项外积的存在,该乘法通常是不可交换的,除非
共轭
四元数的共轭为:
即把虚部取成相反数。四元数共轭与自己本身相乘,会得到一个实四元数,其实部为模长的平方:
模长
四元数的模长定义为:
可以验证,两个四元数乘积的模即为模的乘积。这保证单位四元数相乘后仍是单位四元数。
逆
一个四元数的逆为:
按此定义,四元数和自己的逆的乘积为实四元数的1:
同时,乘积的逆有和矩阵相似的性质:
对于单位四元数,即
数乘与点乘
和向量相似,四元数可以与数相乘:
点乘是指两个四元数每个位置上的数值分别相乘:
用四元数表述旋转
在复数域
首先,我们把三维空间点用一个虚四元数来描述:
然后,用另一个四元数
那么,旋转后的点
可以验证,计算结果的实部为
四元数到旋转矩阵的转换
设四元数
反之,由旋转矩阵到四元数的转换如下。假设矩阵为
各种表示方式的比较
相似、仿射、射影变换
详细性质可见下表(相似变换的不必性质为“体积比“,不是体积!):
其中
仿射变换中的矩阵
影射变换左下角为缩放
- 《视觉SLAM十四讲》学习系列(2)—三维空间刚体运动
- 半闲居士视觉SLAM十四讲笔记(3)三维空间刚体运动
- 半闲居士视觉SLAM十四讲笔记(3)三维空间刚体运动
- 半闲居士视觉SLAM十四讲笔记(3)三维空间刚体运动
- 半闲居士视觉SLAM十四讲笔记(3)三维空间刚体运动
- 半闲居士视觉SLAM十四讲笔记(3)三维空间刚体运动
- SLAM学习--三维空间刚体运动
- 《视觉SLAM十四讲》学习系列(1)—经典视觉SLAM框架
- 视觉slam14讲——第3讲 三维空间刚体运动
- 《视觉SLAM十四讲》学习笔记(一)
- 视觉SLAM十四讲调试
- 《视觉SLAM十四讲》内容摘要
- 半闲居士视觉SLAM十四讲笔记(2)初识 SLAM- part 1 基础理论
- 视觉SLAM十四讲 第六章程序出错(转载)
- 《视觉SLAM十四讲》书籍图片资源
- 《视觉SLAM十四讲》书籍图片资源
- 半闲居士视觉SLAM十四讲笔记(2)初识 SLAM- part 2 linux CMake、Kdevelop
- 视觉SLAM十四讲-第九讲例程运行出错
- 2017第十八届成都家具展(世纪城新国际会展中心)会刊(参展商名录)
- 聚合支付发展关键期,态度支付将何去何从?
- 绑定DOM对象属性来触发事件处理函数
- Android_BottomTabBar
- cas5.1x单点登陆后退出到指定页面,服务器端配置
- 《视觉SLAM十四讲》学习系列(2)—三维空间刚体运动
- linux就该这么用
- IE浏览器的事件冒泡机制
- ORA-28000:the account is locked错误解决
- 比特币能取代黄金吗?比特币价值定位分析
- javascript认识
- MySQL的主从复制与半同步复制
- 17.11.22
- php-tp5的validate自动验证