空间向量之间的运算包括:
数乘、加法、减法、内积、外积。
内积:可以描述向量间的投影关系,结果是一个标量。
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=1∑3aibi=∤a∤∤b∤cos⟨a,b⟩
外积:外积的方向垂直于这两个向量,大小为两个向量张成的四边形的有向面积,结果还是一个向量。
a
×
b
=
a
∧
⋅
b
a \times b = a^{\wedge } \cdot b
a×b=a∧⋅b
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 AT⋅A=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}
[a′1]=[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}
T−1=[RT0−RTt1]
群的引出:上面我们看到的旋转矩阵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+(1−cosθ)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=
1−2q22−2q322q1q2+2q0q32q1q3−2q0q22q1q2−2q0q31−2q12−2q322q2q3+2q0q12q1q3+2q0q22q2q3−2q0q11−2q12−2q22
由旋转矩阵到四元数
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=4q0m23−m32,
q 2 = m 31 − m 13 4 q 0 , q_2 =\dfrac{m_{31}-m_{13}}{4q_0}, q2=4q0m31−m13, q 2 = m 12 − m 21 4 q 0 , q_2 =\dfrac{m_{12}-m_{21}}{4q_0}, q2=4q0m12−m21,
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文章来源:https://www.toymoban.com/news/detail-679802.html
习题1:验证旋转矩阵是正交矩阵
参考网址:https://zhuanlan.zhihu.com/p/419854977文章来源地址https://www.toymoban.com/news/detail-679802.html
到了这里,关于视觉SLAM14讲笔记-第3讲-三维空间刚体运动的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!