内容简介:坐标系但是,这种表示方式在多次进行变换时会有不便(
视觉Slam笔记I
第二讲-三位空间刚体运动
点与坐标系:
基础概念:
-
坐标系:左手系和右手系。右手系更常用。定义坐标系时,会定义世界坐标系,相机坐标系,以及其他关心对象的坐标系。空间中任意一点可由空间的基的线性表出。
-
加减法:用坐标描述更方便。
-
内积:点乘得数,即
-
外积:叉乘得向量,即
右手系下,得到按照右手定则获取的向量。
-
坐标系间的变换:
通过平移(向量的加减)和旋转(有多种描述方式,见下)
-
2D情况:二维坐标点表示位置+一个旋转角表示朝向。
-
3D情况:三维坐标点表示位置+一个旋转角(角度间的变换使用旋转,旋转方式有多种,见下)。
旋转矩阵:(描述旋转的第一种方式)
坐标系 (e_1,e_2,e_3) 经过旋转变成 (e'_1,e'_2,e'_3) ,在三维空间中,向量 a 保持不动,那么如何表出它在 (e'_1,e'_2,e'_3) 下的坐标:
- 线性表出法向量
a坐标:两坐标系实质是分别用两组不同的基去表示同一个点,则两者的线性组合是相等的: - 左右两边同时左乘
(e_1,e_2,e_3)的转置,得到:
- R即为 旋转矩阵 。
- 性质:
- R是一个正交矩阵(矩阵的逆即矩阵的转置,或转置×本身即为一个单位矩阵)。
- R的行列式值为1。
- 满足上述性质的矩阵都可以称为 旋转矩阵 ,使用集合表示:
,又称特殊正交群SO(3)。
- 固定表示方式(下标顺序):
且满足矩阵关系:
。
因此,空间中不同坐标系下点坐标的变换可以使用:
即旋转+平移的形式完全描述
- 理论依据:欧拉定理,刚体在三维空间中的一般运动,可分解为刚体上方某一点的平移,以及绕经过此点的旋转轴的转动。
但是,这种表示方式在多次进行变换时会有不便( ),因此使用增广的方式进行表示:
- 其中,
称为变换矩阵,
的形式称为齐次坐标。
- 齐次坐标性质:齐次坐标乘上任意非0常数时仍表达同一坐标
- 变换矩阵的集合:称为特殊欧式群SE(3):
旋转向量和欧拉角:
旋转矩阵在实际中更常用,但这些概念也是需要清楚的。
旋转矩阵R是一个3×3的矩阵,有九个元素,但仅有三个自由度,也就是存在描述方式上的冗余,那么能否以更少的元素表达旋转?
刚体旋转存在一个转轴(向量),还有转过的角度,于是想用 角度乘以向量 (单位化过后)的形式去描述旋转。
旋转向量
-
一个向量,方向为旋转轴方向,长度为转过的角度。(单位向量乘角度大小)
-
又称角轴/轴角。
-
罗德里格斯公式可以将旋转向量( n ,theta)转换成旋转矩阵R:
-
旋转矩阵R也可以转换成旋转向量( n ,theta):
n 是特征向量。
欧拉角
- 将旋转分解成三个方向上的转动,常用顺序为yaw-pitch-roll(也就是绕Z-Y-X方式转,注意 ,不同地方在绕Z转之后,所绕的Y轴可能是原来的Y轴,也可能是转动后的Y轴)
-
- 万向锁(Gimbal Lock):欧拉角存在奇异性(特定值下,旋转的自由度减1)
-
在pitch方向旋转完毕后,roll方向旋转和yaw方向旋转是重合的。由此,欧拉角不适合插值或迭代,故不常用。
四元数:
吸取了旋转矩阵和旋转向量、欧拉角的优点,是一种优秀的描述方式。
- 2D情况下,可以用单位复数表达旋转:
\[z=x+iy=\rho e^{i\theta} \]
- 用z乘以i,相当于旋转了90度(
),乘-i转动-90度。
在三维情况下,四元数可作为扩充定义的复数
-
特点1:有三个虚部+一个实部
-
特点2:虚部之间存在关系:
-
单位四元数可以表达三维空间的旋转:
-
四元数也能定义很多运算:
-
四元数转换成旋转向量:
-
旋转向量转换成四元数:
-
用四元数表示旋转:
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 【每日笔记】【Go学习笔记】2019-01-04 Codis笔记
- 【每日笔记】【Go学习笔记】2019-01-02 Codis笔记
- 【每日笔记】【Go学习笔记】2019-01-07 Codis笔记
- vue笔记3,计算笔记
- Mysql Java 驱动代码阅读笔记及 JDBC 规范笔记
- 【每日笔记】【Go学习笔记】2019-01-16 go网络编程
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Is Parallel Programming Hard, And, If So, What Can You Do About
Paul E. McKenney
The purpose of this book is to help you understand how to program shared-memory parallel machines without risking your sanity.1 By describing the algorithms and designs that have worked well in the pa......一起来看看 《Is Parallel Programming Hard, And, If So, What Can You Do About 》 这本书的介绍吧!