视觉SLAM14讲笔记-第3讲-三维空间刚体运动

空间向量之间的运算包括:
数乘、加法、减法、内积、外积。
内积:可以描述向量间的投影关系,结果是一个标量。
a ⃗ ⋅ b ⃗ = ∑ i = 1 3 a i b i = ∤ a ∤ ∤ b ∤ c o s ⟨ a , b ⟩ \vec{a} \cdot \vec{b}=\sum_{i=1}^3{{a _i}{b_i}} =\nmid a \nmid \nmid b \nmid cos \langle a,b \rangle a b =i=13aibi=a∤∤bcosa,b

外积:外积的方向垂直于这两个向量,大小为两个向量张成的四边形的有向面积,结果还是一个向量。
a × b = a ∧ ⋅ b a \times b = a^{\wedge } \cdot b a×b=ab
a ∧ a^{\wedge } a a ⃗ \vec{a} a 的反对称矩阵。

旋转向量的引出:由两个向量的外积引出,在右手法则下,我们用右手的4个指头从a转向b,大拇指朝向就是旋转向量的方向,事实上也是 a × b a \times b a×b的方向。

旋转矩阵是正交矩阵。即满足 A T ⋅ A = E A^{T} \cdot A = E ATA=E 。即旋转矩阵的逆为自身转置的矩阵。且是一个行列式为1的正交矩阵。注意:旋转矩阵不一定是对称矩阵。

齐次坐标系的引出:因为空间运动不止有旋转,还有平移,例如
a ′ = R a + t a^{\prime }=Ra+t a=Ra+t
转换为矩阵形式
[ a ′ 1 ] = [ R t 0 1 ] [ a 1 ] = T [ a 1 ] \begin{bmatrix} a^{\prime }\\ 1\end{bmatrix}=\begin{bmatrix} R&t\\ 0&1\end{bmatrix} \begin{bmatrix} a\\ 1\end{bmatrix} = T\begin{bmatrix} a\\ 1\end{bmatrix} [a1]=[R0t1][a1]=T[a1]
T为变换矩阵, [ a 1 ] \begin{bmatrix} a\\ 1\end{bmatrix} [a1]为向量a的齐次形式。即在一个三维向量的末尾添加1,将其变成了四维向量,称为齐次坐标。

关于变换矩阵T的逆,也有公式,如下:
T − 1 = [ R T − R T t 0 1 ] T^{-1} = \begin{bmatrix} R^{T}&-R^{T}t\\ 0&1\end{bmatrix} T1=[RT0RTt1]

的引出:上面我们看到的旋转矩阵R是特殊正交群(Special Orthogonal Group)。变换矩阵T称为特殊欧式群(Special Euclidean Group)。

旋转向量的第2次引出:由于旋转矩阵由(9个元素)和变换矩阵由(16个元素)组成,存在冗余,且自身带有约束(旋转矩阵必须是个正交矩阵),不利于导数的计算(后面使用非线性优化的方式,要对求解元素求导)。而旋转向量可以用3个元素描述,平移向量可以用3个元素描述。

罗德里格斯公式的引出:指导旋转向量到旋转矩阵的转换。
R = cos ⁡ θ ⋅ I + ( 1 − c o s θ ) n n T + s i n θ n ∧ R=\cos\theta\cdot I +(1-cos\theta)nn^{T} + sin\theta n^{\wedge} R=cosθI+(1cosθ)nnT+sinθn
反之也可以得到旋转矩阵到旋转向量的转换。

欧拉角的引出:为了直观的表述绕X、Y、Z角度变化了多少,引出了欧拉角,根据绕不同轴的前后顺序,可以有不同类型的欧拉角,一般最常见的是rpy角(它是按ZYX的旋转顺序,rpy对应yaw-pitch-roll,即偏航-俯仰-滚转)。
但是有奇异性,所以在slam中很少用欧拉角表达姿态。

四元数的引出:正是由于欧拉角的奇异性,所以才有了四元数的引出。缺点是不够直观。一个四元数拥有1个实部和3个虚部。
q = q 0 + q 1 i ⃗ + q 2 j ⃗ + q 3 k ⃗ {q}=q_0 + q_1\vec{i} +q_2\vec{j}+q_3\vec{k} q=q0+q1i +q2j +q3k
Eigen中我们习惯使用下面对应表示
q = w + x i ⃗ + y j ⃗ + z k ⃗ {q}=w + x\vec{i} +y\vec{j}+z\vec{k} q=w+xi +yj +zk

假设某个旋转是绕单位向量 n = [ n x , n y , n z ] n= \begin{bmatrix} n_x,&n_y,&n_z\\ \end{bmatrix} n=[nx,ny,nz]进行了角度为 θ \theta θ的旋转
旋转向量和四元数的转换
q = [ c o s θ 2 , n x s i n θ 2 , n y s i n θ 2 , n z s i n θ 2 ] T q=\begin{bmatrix} cos\dfrac{\theta}{2},&n_xsin\dfrac{\theta}{2},&n_ysin\dfrac{\theta}{2},&n_zsin\dfrac{\theta}{2}\\ \end{bmatrix}^{T} q=[cos2θ,nxsin2θ,nysin2θ,nzsin2θ]T
反之,四元数也可以转换为旋转向量
{ θ = 2 a r c c o s q 0 [ n x , n y , n z ] T = [ q 1 , q 2 , q 3 ] T / s i n θ 2 \begin{cases} \theta = 2arccosq_0 \\ \begin{bmatrix} n_x,&n_y,&n_z\\ \end{bmatrix}^{T}= \begin{bmatrix} q_1,&q_2,&q_3\\ \end{bmatrix}^{T}/sin\dfrac{\theta}{2}\\ \end{cases} θ=2arccosq0[nx,ny,nz]T=[q1,q2,q3]T/sin2θ

四元数之间的运算不过多复述,感觉目前用的地方并不多。

这里再提一下四元数与旋转矩阵之间的转换
假设四元数为 q = q 0 + q 1 i ⃗ + q 2 j ⃗ + q 3 k ⃗ {q}=q_0 + q_1\vec{i} +q_2\vec{j}+q_3\vec{k} q=q0+q1i +q2j +q3k ,则
R = [ 1 − 2 q 2 2 − 2 q 3 2 2 q 1 q 2 − 2 q 0 q 3 2 q 1 q 3 + 2 q 0 q 2 2 q 1 q 2 + 2 q 0 q 3 1 − 2 q 1 2 − 2 q 3 2 2 q 2 q 3 − 2 q 0 q 1 2 q 1 q 3 − 2 q 0 q 2 2 q 2 q 3 + 2 q 0 q 1 1 − 2 q 1 2 − 2 q 2 2 ] R = \begin{bmatrix} 1-2q_2^2-2q_3^2&2q_1q_2-2q_0q_3&2q_1q_3+2q_0q_2\\ 2q_1q_2+2q_0q_3&1-2q_1^2-2q_3^2&2q_2q_3-2q_0q_1 \\2q_1q_3-2q_0q_2&2q_2q_3+2q_0q_1&1-2q_1^2-2q_2^2 \end{bmatrix} R= 12q222q322q1q2+2q0q32q1q32q0q22q1q22q0q312q122q322q2q3+2q0q12q1q3+2q0q22q2q32q0q112q122q22

由旋转矩阵到四元数
q 0 = t r ( R ) + 1 2 , q_0 =\dfrac{\sqrt{tr(R)+1}}2, q0=2tr(R)+1 , q 1 = m 23 − m 32 4 q 0 , q_1 =\dfrac{m_{23}-m_{32}}{4q_0}, q1=4q0m23m32,

q 2 = m 31 − m 13 4 q 0 , q_2 =\dfrac{m_{31}-m_{13}}{4q_0}, q2=4q0m31m13, q 2 = m 12 − m 21 4 q 0 , q_2 =\dfrac{m_{12}-m_{21}}{4q_0}, q2=4q0m12m21,

3D空间的几种变换:
欧式变换:也称为刚体变换,长度、夹角,体积不随着变换而改变。
相似变换:增加了缩放系数,体积比不变。
仿射变换:进一步抽象,变换后仍然保持平行性,同时增加了缩放系数。
射影变换:再进一步抽象,从真实世界到相机照片的变换是一个射影变换。
随着变换的进一步抽象,自由度的变化也在变化,如下:
变换名称 矩阵形式 自由度 欧式变换 [ R t 0 1 ] 6 相似变换 [ s R t 0 1 ] 7 仿射变换 [ A t 0 1 ] 12 射影变换 [ A t a T 1 ] 15 \begin{array}{c|lcr} \text{变换名称} & \text{矩阵形式} & \text{自由度} \\ \hline 欧式变换 & \begin{bmatrix} R&t\\ 0&1\end{bmatrix} & 6 \\ 相似变换 &\begin{bmatrix} sR&t\\ 0&1\end{bmatrix} & 7 \\ 仿射变换 & \begin{bmatrix} A&t\\ 0&1\end{bmatrix} & 12 \\ 射影变换 & \begin{bmatrix} A&t\\ a^T&1\end{bmatrix}& 15 \end{array} 变换名称欧式变换相似变换仿射变换射影变换矩阵形式[R0t1][sR0t1][A0t1][AaTt1]自由度671215

习题1:验证旋转矩阵是正交矩阵
参考网址:https://zhuanlan.zhihu.com/p/419854977

你可能感兴趣的:(高博代码学习,笔记,线性代数)