公式推导及由来

  • 0 数学表达式
  • 1 位姿表达—运动方程
    • 1.1 基础知识
    • 1.2 旋转矩阵
    • 1.3 变换矩阵
    • 1.4 旋转向量
    • 1.5 欧拉角
    • 1.6 四元数

0 数学表达式


由于相机是在某些时刻采集数据的,所以我们只关心这一段时间机器人的位置和所处地图,将该段时间由连续变为离散,t=1,⋯,Kt = 1,\cdots,Kt=1,⋯,K。各个时刻的位置为 xk=1:Kx_{k=1:K}xk=1:K​,构成了机器人的轨迹。地图是由路标(Landmark)构成的,对应的每一离散时刻,传感器会采集到 NNN 个路标点 y1,⋯,yNy_1,\cdots,y_Ny1​,⋯,yN​。
运动方程:从 k−1k-1k−1 时刻到 kkk 时刻,机器人的位置变化
观测方程:在 kkk 时刻于 xkx_kxk​ 出检测到了某一路标 yjy_jyj​
{xk=f(xk−1,uk)+wk,k=1,⋯,Kzk,j=h(xk,yj)+vk,j,(k,j)∈O(0.1)\begin{cases} x_{k}=f(x_{k-1},u_k)+w_k, &k=1,\cdots,K \\ z_{k,j}=h(x_k,y_j)+v_{k,j}, &(k,j)\in \mathcal{O} \end{cases} \tag{0.1}{xk​=f(xk−1​,uk​)+wk​,zk,j​=h(xk​,yj​)+vk,j​,​k=1,⋯,K(k,j)∈O​(0.1)其中 uku_kuk​ 、wkw_kwk​ 和 vkv_kvk​ 分别表示传感器的输入、运动和观测时的噪声。 O\mathcal{O}O 是一个集合,记录着在哪个时刻观察到了哪个路标, zk,jz_{k,j}zk,j​ 表示在 kkk 时刻观察到的 jjj 路标的像素坐标(图片),xkx_kxk​ 表示为用外参 R,tR,tR,t 描述相机的旋转、平移,yjy_jyj​ 表示路标点在世界坐标系下的坐标 PwP_wPw​ ,h(xk,yj)h(x_k,y_j)h(xk​,yj​) 表示在 xkx_kxk​ 处观察到 yjy_jyj​。
当知道运动测量的读数 uuu 以及传感器的读数 zzz 时,如何求解定位问题(估计 xxx)和建图问题(估计 yyy),即为状态估计(State Estimation)问题。


1 位姿表达—运动方程


1.1 基础知识


空间的一组 (e1,e2,e3)(e_1,e_2,e_3)(e1​,e2​,e3​) ,任意向量 aaa 在这组基下的坐标为 a=[e1,e2,e3][a1a2a3]=a1e1+a2e2+a3e3(1.1.1)a=[e_1,e_2,e_3]\left[\begin{array}{c}a_1 \\a_2\\a_3\end{array}\right]=a_1e_1+a_2e_2+a_3e_3\tag{1.1.1}a=[e1​,e2​,e3​]​a1​a2​a3​​​=a1​e1​+a2​e2​+a3​e3​(1.1.1) (a1,a2,a3)T(a_1,a_2,a_3)^T(a1​,a2​,a3​)T 称为 aaa 在此基下的坐标。

内积
对于 a,b∈R3a,b\in \mathbb{R}^3a,b∈R3 ,内积写为a⋅b=aTb=∑i=13aibi=∣a∣∣b∣cos⁡⟨a,b⟩(1.1.2)a\cdot b=a^Tb=\sum_{i=1}^{3}a_ib_i=|a||b|\cos\langle a,b\rangle\tag{1.1.2}a⋅b=aTb=i=1∑3​ai​bi​=∣a∣∣b∣cos⟨a,b⟩(1.1.2) 其中 ⟨a,b⟩\langle a,b\rangle⟨a,b⟩ 指向量 a,ba,ba,b 的夹角。
另外,当 aaa 为单位向量时,∣a∣∣b∣cos⁡⟨a,b⟩=∣b∣cos⁡⟨a,b⟩|a||b|\cos\langle a,b\rangle=|b|\cos\langle a,b\rangle∣a∣∣b∣cos⟨a,b⟩=∣b∣cos⟨a,b⟩ 表示为 bbb 在 aaa 上的投影。

外积
外积
a×b=∥e1e2e3a1a2a3b1b2b3∥=[a2b3−a3b2a3b1−a1b2a1b2−a2b1]=[0−a3a2a30−a1−a2a10]⁣b=defa∧b(1.1.3)a \times b=\left\|\begin{matrix} e_1 &e_2&e_3\\a_1 &a_2&a_3\\b_1 &b_2&b_3\end{matrix}\right\|=\left[\begin{matrix}a_2b_3-a_3b_2\\a_3b_1-a_1b_2\\a_1b_2-a_2b_1\end{matrix}\right]=\left[\begin{matrix} 0&-a_3&a_2\\a_3&0&-a_1\\-a_2&a_1&0\end{matrix}\right]\!b\overset{def}{=}a^\wedge b\tag{1.1.3}a×b=​e1​a1​b1​​e2​a2​b2​​e3​a3​b3​​​=​a2​b3​−a3​b2​a3​b1​−a1​b2​a1​b2​−a2​b1​​​=​0a3​−a2​​−a3​0a1​​a2​−a1​0​​b=defa∧b(1.1.3)
外积得到的结果是向量,向量方向由右手定则确定,大小为 ∣a∣∣b∣sin⁡⟨a,b⟩|a||b|\sin\langle a,b\rangle∣a∣∣b∣sin⟨a,b⟩,几何意义以向量为临边的平行四边形的面积,物理意义是两个向量所在面的法向量。对于外积运算可知,a∧a^\wedgea∧ 为反对称矩阵。
外积的性质
当 aaa 为单位向量(∥a∥=1\|a\|=1∥a∥=1)时
(a∧)2=aaT−I(a∧)3=a∧(aaT−I)=−a∧(a∧)4=a∧(−a∧)=−(a∧)2(1.1.4)\begin{aligned}&(a^\wedge)^2=aa^T-I\\&(a^\wedge)^3=a^\wedge(aa^T-I)=-a^\wedge\\&(a^\wedge)^4=a^\wedge(-a^\wedge)=-(a^\wedge)^2\end{aligned}\tag{1.1.4}​(a∧)2=aaT−I(a∧)3=a∧(aaT−I)=−a∧(a∧)4=a∧(−a∧)=−(a∧)2​(1.1.4)

混合积
标量三重积(Scalar triple product)
a⋅(b×c)=b⋅(c×a)=c⋅(a×b)a\cdot (b \times c) = b\cdot (c \times a) =c\cdot (a \times b)a⋅(b×c)=b⋅(c×a)=c⋅(a×b)
几何意义为三个向量为临边的平行六面体的体积

(a⋅(b×c))a=(a×b)×(a×c)(a\cdot(b \times c)) a = (a\times b)\times (a\times c)(a⋅(b×c))a=(a×b)×(a×c)

向量三重积
a×(b×c)=b(a⋅c)−c(a⋅b)a\times(b \times c)=b(a\cdot c)-c(a\cdot b)a×(b×c)=b(a⋅c)−c(a⋅b)
(a×b)×c=b(a⋅c)−a(b⋅c)(a\times b) \times c=b(a\cdot c)-a(b\cdot c)(a×b)×c=b(a⋅c)−a(b⋅c)

记法:因为等号左边叉乘结果是向量,所以等号右边也是向量。只需记忆等号左边哪两个向量先叉乘和第三个向量的位置关系即可。如 b,cb,cb,c 先叉乘且 aaa 在其左边,则等号右边表明的向量关系为 b−cb-cb−c,点乘是标量,向量顺序(a⋅ca\cdot ca⋅c 和 c⋅ac\cdot ac⋅a一样)无所谓;再如 a,ba,ba,b 先叉乘且 ccc 在其右边,则等号右边表明的向量关系为 b−ab-ab−a。等号右边再将其余向量补全。以第二个向量(bbb)为基准,第二个向量(bbb)减括号里的另一个向量。

a×(b×c)+b×(c×a)+c×(a×b)=0a\times (b\times c)+b\times (c\times a)+c\times (a\times b)=0a×(b×c)+b×(c×a)+c×(a×b)=0


1.2 旋转矩阵

习惯上将向量写在变量右侧,即使用的是列向量而非行向量。
对于同一个向量 aaa,在不同基底下的坐标
a=[e1,e2,e3][a1a2a3]=[e1′,e2′,e3′][a1′a2′a3′][a1a2a3]=[e1Te1′e1Te2′e1Te3′e2Te1′e2Te2′e2Te3′e3Te1′e3Te2′e3Te3′][a1′a2′a3′]=defRa′(1.2.1)\begin{aligned}a=[e_1,e_2,e_3]\left[\begin{matrix}a_1 \\a_2\\a_3\end{matrix}\right]&=[e_1^\prime,e_2^\prime,e_3^\prime]\left[\begin{matrix}a_1^\prime \\a_2^\prime\\a_3^\prime\end{matrix}\right]\\ \left[\begin{matrix}a_1\\a_2\\a_3\end{matrix}\right]&=\left[\begin{matrix}e_1^Te_1^\prime &e_1^Te_2^\prime &e_1^Te_3^\prime \\e_2^Te_1^\prime &e_2^Te_2^\prime &e_2^Te_3^\prime \\e_3^Te_1^\prime &e_3^Te_2^\prime &e_3^Te_3^\prime\end{matrix}\right]\left[\begin{matrix} a_1^\prime \\a_2^\prime\\a_3^\prime\end{matrix}\right]\overset{def}{=}Ra^\prime\end{aligned}\tag{1.2.1}a=[e1​,e2​,e3​]​a1​a2​a3​​​​a1​a2​a3​​​​=[e1′​,e2′​,e3′​]​a1′​a2′​a3′​​​=​e1T​e1′​e2T​e1′​e3T​e1′​​e1T​e2′​e2T​e2′​e3T​e2′​​e1T​e3′​e2T​e3′​e3T​e3′​​​​a1′​a2′​a3′​​​=defRa′​(1.2.1)
旋转矩阵 RRR (Rotation Matrix)描述了旋转本身(一个基通过旋转矩阵旋转到另一个基)。同时,矩阵各分量为两个基的内积,由于基为单位向量,所以实际上是各基向量夹角的余弦值,也成为方向余弦矩阵(Direction Cosine Matrix)。
nnn 维旋转矩阵的集合定义为:
SO(n)={R∈Rn×n∣RRT=I,det(R)=1}(1.2.2)SO(n)=\{R\in \mathbb{R}^{n\times n}|RR^T=I,det(R)=1\}\tag{1.2.2}SO(n)={R∈Rn×n∣RRT=I,det(R)=1}(1.2.2)
SO(n)SO(n)SO(n) 是特殊正交群(Special Orthogonal Group)。RRR 为正交矩阵,且行列式为 111(旋转矩阵的约束条件)。


1.3 变换矩阵

为了使旋转矩阵和平移向量为线性变换,引入了齐次坐标(Homogeneous Coordinate)和变换矩阵(Transform Matrix)。
数学技巧:在一个三维向量的末尾添加 111,将其变成四维向量,称为齐次坐标(为了满足矩阵的乘法),意义为向量乘以任意非零常数,仍表示为同一向量。[kxkykzk](=k[xyz1])⇌[xyz1](1.3.1)\left[\begin{matrix}kx\\ky\\kz\\k\end{matrix}\right]\left(=k\left[\begin{matrix}x\\y\\z\\1\end{matrix}\right]\right)\rightleftharpoons \left[\begin{matrix}x\\y\\z\\1\end{matrix}\right]\tag{1.3.1}​kxkykzk​​​=k​xyz1​​​⇌​xyz1​​(1.3.1)非齐次坐标转换为齐次坐标之后,有
[a′1]=[Rt0T1][a1]=defT[a1](1.3.2)\left[\begin{matrix}a^\prime\\1\end{matrix}\right]=\left[\begin{matrix}R&t\\0^T&1\end{matrix}\right]\left[\begin{matrix}a\\1\end{matrix}\right]\overset{def}{=}T\left[\begin{matrix}a\\1\end{matrix}\right]\tag{1.3.2}[a′1​]=[R0T​t1​][a1​]=defT[a1​](1.3.2)
TTT 的集合定义为SE(3)={T=[Rt0T1]∈R4×4∣R∈SO(3),t∈R3}(1.3.3)SE(3)=\left\{T=\left [ \begin{matrix}R&t\\0^T&1\end{matrix} \right ]\in\mathbb{R}^{4\times 4}|R\in SO(3),t\in \mathbb{R}^3\right\}\tag{1.3.3}SE(3)={T=[R0T​t1​]∈R4×4∣R∈SO(3),t∈R3}(1.3.3)
SE(3)SE(3)SE(3) 称为特殊欧氏群(Special Euclidean Group)。关于变换矩阵 TTT,具有特别的结构:左上角为旋转矩阵,右侧为平移向量,左下角为 000 向量,右下角为 111。

求逆:
二维矩阵块,“主对调负变号,再除以行列式”。
T−1=1R[1−t0TR]=[R−1−R−1t0T1]=[RT−RTt0T1]T^{-1}=\frac{1}{R}\left[\begin{matrix}1&-t\\0^T&R\end{matrix}\right]=\left[\begin{matrix}R^{-1}&-R^{-1}t\\0^T&1\end{matrix}\right]=\left[\begin{matrix}R^T&-R^Tt\\0^T&1\end{matrix}\right]T−1=R1​[10T​−tR​]=[R−10T​−R−1t1​]=[RT0T​−RTt1​]
(−R−1-R^{-1}−R−1 左乘矩阵,不是右乘是为了使右上块维数对应)

若绕静坐标系(世界坐标系)旋转,则左乘矩阵,即变换矩阵 * 坐标矩阵;若绕动坐标系(自身坐标系)旋转,则右乘矩阵,即坐标矩阵 * 变换矩阵。实际上,对一个图像、点云进行旋转,则均是左乘矩阵实现。
TlrT_{lr}Tlr​ 理解为 rrr 帧的坐标转换到 lll 帧的坐标的变换矩阵,也可以读作 lll 帧坐标在 rrr 帧坐标系下的变换。


1.4 旋转向量

旋转矩阵 RRR (变换矩阵 TTT) 的缺点是 RRR(TTT) 有9(16)个量,但旋转(变换)一次只有3(6)个自由度改变,且 RRR 本身自带约束条件 —— 引出旋转向量(Rotation Vector)。
事实上,任意旋转都可以用一个旋转轴和一个旋转角度来刻画。于是,使用一个向量:方向为与旋转轴 nnn (单位向量表示方向)一致,大小为旋转角 θ\thetaθ(弧度制),这种向量称为旋转向量,也叫角轴或轴角(Axis Angle)。

旋转向量转换为旋转矩阵
由罗德里格斯公式(Rodrigues’s Formula)证得:
R=cos⁡θI+(1−cos⁡θ)nnT+sin⁡θn∧(1.4.1)R=\cos\theta I+(1-\cos\theta)nn^T+\sin\theta n^\wedge\tag{1.4.1}R=cosθI+(1−cosθ)nnT+sinθn∧(1.4.1)旋转矩阵转换为旋转向量
对罗德里格斯公式两边取迹。tr(R)=cos⁡θtr(I)+(1−cos⁡θ)tr(nnT)+sin⁡θtr(n∧)=3cos⁡θ+(1−cos⁡θ)tr(nTn)=1+2cos⁡θ(1.4.2)\begin{aligned}tr(R)&=\cos\theta~tr(I)+(1-\cos\theta)tr(nn^T)+\sin\theta~tr(n^\wedge)\\&=3\cos\theta+(1-\cos\theta)tr(n^Tn)\\&=1+2\cos\theta\end{aligned}\tag{1.4.2}tr(R)​=cosθ tr(I)+(1−cosθ)tr(nnT)+sinθ tr(n∧)=3cosθ+(1−cosθ)tr(nTn)=1+2cosθ​(1.4.2)则θ=arccos⁡tr(R)−12(1.4.3)\theta=arc\cos\frac{tr(R)-1}{2}\tag{1.4.3}θ=arccos2tr(R)−1​(1.4.3)
关于转轴 nnn,旋转轴上的向量在旋转之后不改变n=Rn(1.4.4)n=Rn\tag{1.4.4}n=Rn(1.4.4)表示转轴 nnn 是矩阵 RRR 特征值为 111 对应的特征向量。


1.5 欧拉角

旋转矩阵、旋转向量对人类来说表达旋转很不直观。欧拉角用于人机交互。
万向锁使欧拉角具有奇异性。


1.6 四元数

旋转向量带有奇异性(θ\thetaθ 角的周期性)。实际上,找不到不带奇异性的三维向量表述方式。
用复数集合 C\mathbb{C}C 表示复平面上的向量,而复数的乘法表示复平面上的旋转:乘上复数 iii 相当于逆时针把一个复向量旋转 90∘90^\circ90∘。类比于此,表示三维空间旋转的复数:四元数(Quaternion),是紧凑的、没有奇异性的代数。
一个四元数有一个实部和三个虚部。q=q0+q1i+q2j+q3kq=q_0+q_1i+q_2j+q_3kq=q0​+q1​i+q2​j+q3​k也可以用一个标量和一个向量表示q=[s,v]T,s=q0∈R,v=[q1,q2,q3]T∈R3q=[s,v]^T,s=q_0\in \mathbb{R},v=[q_1,q_2,q_3]^T\in \mathbb{R}^3q=[s,v]T,s=q0​∈R,v=[q1​,q2​,q3​]T∈R3用单位四元数表示三维空间任意旋转。

四元数的运算

有两个四元数 qa=sa+xai+yaj+zak=[sa,va]Tq_a=s_a+x_ai+y_aj+z_ak=[s_a,v_a]^Tqa​=sa​+xa​i+ya​j+za​k=[sa​,va​]T ,qb=sb+xbi+ybj+zbk=[sb,vb]Tq_b=s_b+x_bi+y_bj+z_bk=[s_b,v_b]^Tqb​=sb​+xb​i+yb​j+zb​k=[sb​,vb​]T

加减法
qa±qb=[sa±sb,va±vb]Tq_a\pm q_b=[s_a\pm s_b,v_a\pm v_b]^Tqa​±qb​=[sa​±sb​,va​±vb​]T
乘法
虚部单位相乘满足右手定则,便于记忆 ijkijkijkijkijkijk 正向正号,反向负号qaqb=sasb−xaxb−yayb−zazb+(saxb+xasb+yazb−zayb)i+(sayb−xazb+yasb+zaxb)j+(sazb+xayb−yaxb+zasb)k\begin{aligned}q_aq_b&=s_as_b-x_ax_b-y_ay_b-z_az_b\\&+(s_ax_b+x_as_b+y_az_b-z_ay_b)i\\&+(s_ay_b-x_az_b+y_as_b+z_ax_b)j\\&+(s_az_b+x_ay_b-y_ax_b+z_as_b)k\\\end{aligned}qa​qb​​=sa​sb​−xa​xb​−ya​yb​−za​zb​+(sa​xb​+xa​sb​+ya​zb​−za​yb​)i+(sa​yb​−xa​zb​+ya​sb​+za​xb​)j+(sa​zb​+xa​yb​−ya​xb​+za​sb​)k​或qaqb=[sasb−vaTvb,savb+sbva+va×vb]Tq_aq_b=[s_as_b-v_a^Tv_b,s_av_b+s_bv_a+v_a\times v_b]^Tqa​qb​=[sa​sb​−vaT​vb​,sa​vb​+sb​va​+va​×vb​]T
因为忽略复数单位的情况下,iii和iii相乘为i×i=−1i\times i=-1i×i=−1可视为负点乘,iii和jjj相乘为i×j=ki\times j=ki×j=k可视为叉乘。因此对于虚部的向量来说,四元数的乘法是叉乘-点乘

模长∥qa∥=sa2+xa2+ya2+za2\|q_a\|=\sqrt{s_a^2+x_a^2+y_a^2+z_a^2}∥qa​∥=sa2​+xa2​+ya2​+za2​​性质∥qaqb∥=∥qa∥∥qb∥\|q_aq_b\|=\|q_a\|\|q_b\|∥qa​qb​∥=∥qa​∥∥qb​∥共轭qa∗=sa−xai−yaj−zak=[sa,−va]Tq_a^*=s_a-x_ai-y_aj-z_ak=[s_a,-v_a]^Tqa∗​=sa​−xa​i−ya​j−za​k=[sa​,−va​]T共轭与本身相乘,得到实四元数,实部为模长的平方:q∗q=qq∗=[sa2+vTv,0]Tq^*q=qq^*=[s_a^2+v^Tv,0]^Tq∗q=qq∗=[sa2​+vTv,0]Tq−1=q∗/∥q∥2q^{-1}=q^*/\|q\|^2q−1=q∗/∥q∥2以此定义得qq−1=q−1q=1qq^{-1}=q^{-1}q=1qq−1=q−1q=1如果 qqq 为单位四元数,其逆和共轭就是同一个量。同时,乘积的逆具有和矩阵相似得性质:(qaqb)−1=qb−1qa−1.(q_aq_b)^{-1}=q_b^{-1}q_a^{-1}.(qa​qb​)−1=qb−1​qa−1​.
四元数表示旋转
空间点 p=[x,y,z]∈R3p=[x,y,z]\in\mathbb{R}^3p=[x,y,z]∈R3,旋转用单位四元数 qqq 表示。旋转步骤:首先将 ppp 转换为与四元数同一形式。由于四元数虚部为向量,故点 ppp 的四元数形式为(虚四元数)p=[0,x,y,z]T=[0,v]Tp=[0,x,y,z]^T=[0,v]^Tp=[0,x,y,z]T=[0,v]T旋转之后的点 p′p^\primep′ 可表示为(类似于矩阵对角化) p′=qpq−1(1.6.1)p^\prime=qpq^{-1}\tag{1.6.1}p′=qpq−1(1.6.1)求得点 p′p^\primep′ 为四元数(虚四元数)形式,最终三维坐标形式为 p′p^\primep′ 的虚部1

四元数到其他旋转的转换
对于式子(1.6.1)来说,要将四元数表示的旋转转换为通常形式(左乘旋转矩阵) p′=Xpp^\prime=Xpp′=Xp 的形式,先引入如下定义:
设 q=[s,v]Tq=[s,v]^Tq=[s,v]T ,定义符号 +{}^++ 和 ⊕{}^\oplus⊕ 为:q+=[s−vTvsI+v∧]q⊕=[s−vTvsI−v∧]q^+=\left[\begin{matrix}s &-v^T\\v&sI+v^{\wedge}\end{matrix}\right]~~~~~~q^\oplus=\left[\begin{matrix}s&-v^T\\v&sI-v^\wedge\end{matrix}\right]q+=[sv​−vTsI+v∧​]      q⊕=[sv​−vTsI−v∧​]故有q1q2=q1+q2=q2⊕q1q_1q_2=q_1^+q_2=q_2^\oplus q_1q1​q2​=q1+​q2​=q2⊕​q1​
则p′=Xp=qpq−1=q(q−1)⊕p=q+(q−1)⊕p(1.6.2)\begin{aligned}p^\prime&=Xp\\&=qpq^{-1}=q(q^{-1})^\oplus p\\&=q^+(q^{-1})^\oplus p \end{aligned}\tag{1.6.2}p′​=Xp=qpq−1=q(q−1)⊕p=q+(q−1)⊕p​(1.6.2)(最后一步是因为倒数第二步 qqq 维数 2×12\times12×1,而 (q−1)⊕(q^{-1})^\oplus(q−1)⊕ 维数为 2×22\times22×2 不满足矩阵乘法)
q+(q−1)⊕=[100TvvT+s2I+2sv∧+(v∧)2]q^+(q^{-1})^\oplus=\left[\begin{matrix}1&0\\0^T&vv^T+s^2I+2sv^\wedge+(v^\wedge)^2\end{matrix}\right]q+(q−1)⊕=[10T​0vvT+s2I+2sv∧+(v∧)2​]令R=vvT+s2I+2sv∧+(v∧)2(1.6.3)R=vv^T+s^2I+2sv^\wedge+(v^\wedge)^2\tag{1.6.3}R=vvT+s2I+2sv∧+(v∧)2(1.6.3)因为 p′p^\primep′ 和 ppp 为虚四元数,有p′=q+(q−1)⊕p[0v′]=[100TR][0v]v′=Rv(1.6.4)\begin{aligned}p^\prime&=q^+(q^{-1})^\oplus p\\\left[\begin{matrix}0\\v^\prime\end{matrix}\right]&=\left[\begin{matrix}1&0\\0^T&R\end{matrix}\right]\left[\begin{matrix}0\\v\end{matrix}\right]\\v^\prime&=Rv \end{aligned}\tag{1.6.4}p′[0v′​]v′​=q+(q−1)⊕p=[10T​0R​][0v​]=Rv​(1.6.4)则,右下角的分块矩阵给出了四元数到旋转矩阵的关系。
对式子(1.6.3)求迹,得tr(R)=tr(vvT)+3s2+tr((v∧)2)=v12+v22+v32+3s2−2(v12+v22+v32)=4s2−1(1.6.5)\begin{aligned}tr(R)&=tr(vv^T)+3s^2+tr((v^\wedge)^2)\\&=v_1^2+v_2^2+v_3^2+3s^2-2(v_1^2+v_2^2+v_3^2)\\&=4s^2-1\end{aligned}\tag{1.6.5}tr(R)​=tr(vvT)+3s2+tr((v∧)2)=v12​+v22​+v32​+3s2−2(v12​+v22​+v32​)=4s2−1​(1.6.5)(sss (四元数)到 RRR (旋转矩阵)的关系)
四元数到旋转向量的关系为四元数到旋转矩阵加上旋转矩阵到旋转向量的关系,所以由式子(1.4.3)得θ=arccos⁡tr(R)−12=arccos⁡(2s2−1)\begin{aligned}\theta&=arc\cos~\frac{tr(R)-1}{2}\\&=arc\cos~(2s^2-1)\end{aligned}θ​=arccos 2tr(R)−1​=arccos (2s2−1)​有二倍角公式 cos⁡2θ=2cos⁡2θ−1\cos2\theta=2\cos^2\theta-1cos2θ=2cos2θ−1
则cos⁡θ=2s2−1=2cos⁡2θ2−1\cos\theta=2s^2-1=2\cos^2\frac{\theta}{2}-1cosθ=2s2−1=2cos22θ​−1所以θ=2arccos⁡s(1.6.6)\theta=2~arc\cos~s\tag{1.6.6}θ=2 arccos s(1.6.6)
sss 为由单位四元数 qqq 的实部,由于旋转向量在旋转前后是不变的,所以旋转向量的方向可由 qqq 的虚部 vvv 表示 [nx,ny,nz]T=[v1,v2,v3]T/sin⁡θ2[n_x,n_y,n_z]^T=[v_1,v_2,v_3]^T/\sin\frac{\theta}{2}[nx​,ny​,nz​]T=[v1​,v2​,v3​]T/sin2θ​
(因为 nnn 为单位向量 ,所以用单位四元数 qqq 的虚部表示时需要将虚部单位化,又由式子(1.6.6)可得 s=cos⁡θ2s=\cos\frac{\theta}{2}s=cos2θ​,所以 vvv 的模长为 sin⁡θ2\sin\frac{\theta}{2}sin2θ​)
{θ=2arccos⁡s[nx,ny,nz]T=[v1,v2,v3]T/sin⁡θ2(1.6.7)\begin{cases}\theta=2~arc\cos s\\ [n_x,n_y,n_z]^T=[v_1,v_2,v_3]^T/\sin\frac{\theta}{2}\end{cases}\tag{1.6.7}{θ=2 arccoss[nx​,ny​,nz​]T=[v1​,v2​,v3​]T/sin2θ​​(1.6.7)


A→\to→B 旋转矩阵(B) 旋转向量(B) 四元数(B)
旋转矩阵(A) N/A (1.4.3)(1.4.4) 很繁琐
旋转向量(A) (1.4.1) N/A (1.6.7)
四元数(A) (1.6.3) (1.6.7) N/A


  1. 参考四元数和旋转(Quaternion & rotation) 3.4 ↩︎

SLAM公式引出、推导和理解 1-1相关推荐

  1. SLAM公式引出、推导和理解 3

    目录 4 优化问题-处理噪声 4.1 状态估计 4.2 非线性最小二乘 BA与图优化 4 优化问题-处理噪声 4.1 状态估计 由于SLAM的数学表达式为 { x k = f ( x k − 1 , ...

  2. SLAM公式引出、推导和理解 2-2

    目录 3 视觉里程计 3.1 特征点法 3.2 相机运动 对极几何 PnP ICP 3 视觉里程计 根据相邻的图像信息估计出粗略的相机运动,给后端(非线性优化)提供良好的初始值.算法主要分为特征点法和 ...

  3. 罗德里格斯公式附图推导,理解

    罗德里格斯公式推导 一,基础准备 1. 旋转矩阵 2. 旋转向量 3. 向量叉积 二,公式推导 1.符号说明与图例 2. 公式推导 三,公式理解和深入 四,极限的方式简洁推导罗德里格斯公式 罗德里格斯 ...

  4. 专题2(附篇):平面问题的差分解之差分公式的推导

    因为实际工程中几乎不可能找到弹性力学模型求解时的偏微分方程的解析解,所以人们就想到用泰勒级数把求解偏微分方程的问题改为求解代数方程的问题来近似.又因为不同的差分方法会带来不同的求解速度和精度,而速度和 ...

  5. 卡尔曼滤波原理公式详细推导过程[包括引出]

    卡尔曼滤波在很多项目中都有用到,但是对于原理却很少有详细分析,而只是直接应用,在看完b站up主DR_CAN视频推导后自行推导一遍和查看其他资料后进行总结,将从最初的递归算法,利用数据融合,协方差矩阵, ...

  6. 递推最小二乘法的推导和理解

    递推最小二乘法的推导和理解 最小二乘法 快速回顾最小二乘法的推导 建立误差平方 将其最小化 一种对最小二乘法理解的视角 递推最小二乘法 在线实时预测问题 推导思路与详细过程 将k时刻的表达式写成k-1 ...

  7. 全概公式和贝叶斯公式的理解

    目录(?)[+] 条件概率 首先,理解这两个公式的前提是理解条件概率,因此先复习条件概率. P(A|B)=P(AB)P(B) 理解这个可以从两个角度来看.  第一个角度:在B发生的基础上,A发生的概率 ...

  8. CTR经典模型串讲:FM / FFM / 双线性 FFM 相关推导与理解

    CTR 系列文章: 广告点击率(CTR)预测经典模型 GBDT + LR 理解与实践(附数据 + 代码) CTR经典模型串讲:FM / FFM / 双线性 FFM 相关推导与理解 CTR深度学习模型之 ...

  9. 点绕坐标系旋转旋转矩阵推导、理解

    点绕坐标系旋转旋转矩阵推导.理解 开会过程中,翻笔记本时突然发现了之前推导的点绕坐标系旋转的旋转矩阵求解过程.在直觉上,一个点绕3个坐标轴旋转的旋转矩阵在形式上看起来是一致的,观感上比较优雅.整齐,但 ...

最新文章

  1. unity透明通道加颜色_Unity-雪地效果的实现
  2. 涉密服务器虚拟化软件,虚拟化软件解决方案
  3. 什么是工业光纤收发器,工业收发器的作用是什么?
  4. 论文发表在什么期刊上_医学论文发表期刊论文范文
  5. C语言中二维数组移动一行,二维数组对每一行进行排序。。
  6. 常规对数据库库的操作
  7. Kap for Mac(轻量级屏幕录像机)免费版
  8. 四、Linux常用命令——文件搜索命令
  9. 林德物料搬运公司成功案例:基于功能需求开发的软件模型质量保障
  10. jquery手机端带农历的万年历插件
  11. 北航计算机组成原理课程设计-2020秋 PreProject-Logisim-时序逻辑电路
  12. Redis安装部署(Windows/Linux)
  13. 故宫元宵节首开夜场,票务系统HTTPS加密护航
  14. WFP过滤开发(一)
  15. 纸质文档转成电子档,30秒即可快速搞定(亲测有效)!
  16. 非真,亦非假——20世纪数学悖论入侵机器学习
  17. opengles绘制天空穹
  18. Make It a Chorus: Knowledge- and Time-aware Item Modeling for Sequential Recommendation sigir 20
  19. YTUOJ 3920复读机
  20. mac M1 安装nvm步骤

热门文章

  1. html link 怎么设置密码,TP-Link 无线路由器设置密码方法_设置tp link路由器的无线密码方法图解...
  2. [搞笑]经典到发狂的语录(转载)
  3. B站Up主自制秃头生成器,一键get张东升同款发型,网友:秃的太过真实
  4. 暗光增强论文Attention Guided Low-light Image Enhancement with a Large Scale Low-light Simulation Dataset翻译
  5. 帮粉丝脱单!1月份最佳人气小姐姐和小哥哥推荐
  6. 纸短情长计算机数字音乐,网易云音乐与众多独立音乐人达成深度合作 平台入驻音乐人超7万...
  7. Recovery模式【转】
  8. 三星i9100的线刷教程
  9. HashMap面试题知识大全
  10. 昨天的明天,也就是今天!