0. 简介
在自动驾驶中,我们常常会面对这线性代数位姿表示和坐标系变换问题。之前作者陆陆续续写了一些
1. 线性代数位姿
1.1 矩阵伴随
RTexp(p∧)R⇒exp(p∧)R=exp((RTp)∧)=Rexp((RTp)∧)
1.2 四元数实部和虚部
一个标量和一个矢量来表示四元数就会如下图所示,这样会便于我们计算四元数之间的累乘变换
q=[q0q1q2q3]T=[wxyz]T=[sv]T
乘法运算中,向量的计算方法比较容易记忆,相乘后实部为两实部相乘减去两虚部正交,虚部为两个四元数和实部和虚部交叉相乘的和加上虚部的叉积。连续旋转两个角度可以用这两个旋转对应的四元数的乘积来表示,即
q(t1+t2)=q(t1)q(t2)
qa⊗qb=q(a)q(b)== wawb−xaxb−yayb−zazb+(waxb+xawb+yazb−zayb)i+(wayb−xazb+yawb+zaxb)j+(wazb+xayb−yaxb+zawb)k[sasb−vaTvbTsavb+sbva+va×vb]
1.3 四元数与时间
我们说四元数是除了旋转矩阵以外的另一种对旋转表达方式,并且它不具备奇异性,可以表达任意三维旋转,因此有必要学习一下它对时间的求导方式。
首先来看四元数和角轴的转换关系,假设某个旋转运动的旋转轴为单位向量
u, 绕该轴旋转的角度为
θ 那这个旋转的对应的四元数可表示为:
q=[cos2θusin2θ]
对时间求导:当旋转一段微小时间时,旋转经过角度可以视为趋于
0 ,因此上述四元数为:
Δq=[cos2θusin2θ]≈[1u2δθ]=[121δθ]
其中,
δθ 的方向为旋转轴,模长为(这段时间内非常微小的)旋转角度。
下面对时间求导:
q˙=Δt→0limΔtq(t+Δt)−q(t)=Δt→0limΔtq(t)⊗q(Δt)−q(t)=Δt→0limΔtq⊗Δq−q=Δt→0limΔtq⊗([121δθ]−[10])=q⊗Δt→0limΔt([021δθ])=q⊗[021ω]
上式中,
ω=limΔt→0Δtδθ 是求导时间的角速度。
1.4 旋转矩阵和旋转向量
从旋转向量到旋转矩阵基本就是通过罗德里格斯公式表明:
R=cosθI+(1−cosθ)nnT+sinθn∧
从旋转矩阵到旋转向量的过程可以利用矩阵迹(trace)的性质进行推导:
tr(R)⇒θ=cosθ tr(I)+(1−cosθ) tr(nn)T+sinθ n∧=3cosθ+(1−cosθ)=1+2cosθ=arccos2tr(R)−1
1.5 李群李代数扰动
李群(
SO(3))对应的李代数
(ϕ1,ϕ2)的指数映射时。并且两个李代数其中有一个为小量时,二次项以上的小量都可以忽略。此时, BCH 公式有以下线性形式:
ln(exp(ϕ1∧)exp(ϕ2∧))∨≈{Jl(ϕ2)−1ϕ1+ϕ2当ϕ1为小量Jr(ϕ1)−1ϕ2+ϕ1当ϕ2为小量
当我们对一个旋转
R左乘或者右乘一个扰动
ΔR时,BCH 近似过程可以表示为:
exp(Δϕ∧)exp(ϕ∧))exp(Δϕ∧)exp(ϕ∧))=exp((ϕ+Jl−1(ϕ)Δϕ)∧)=exp((ϕ+Jr−1(ϕ)Δϕ)∧)
而反过来,当我们对一个李代数
ϕ 加上一个微小扰动
Δϕ 时,通过 BCH 可以近似为:
exp((ϕ+Δϕ)∧)=exp(JlΔϕ)∧exp(ϕ∧)=exp(ϕ∧)exp(JrΔϕ)∧
1.6 李群累加
对于李群而言,由于其没有向量空间上的加法操作,因此为了引入导数的概念,这里用一个映射将局部坐标
ξ 映射到李群元素
a 在李群空间附近的邻域上,用来作为李群上的 “加法” 操作,所以常常会使用
⊕来表示李群的加法,如下所示:
a⊕ξ≜aexp(ξ^)
式中,
ξ∈Rn 是
a 系下的局部坐标,这个也是我们所说的极小值右乘的做法,以李群 SO(3) 为例,局部坐标可以表示为
ξ=ωt,其几何意义为以
a 作为参考系下的一个角度扰动;
ξ^ 为
ξ 的对应李代数,当然也可以像上面表示为
ξ∧;
expξ 为李代数到李群的指数映射;
ξ^=[ωt]× 为李代数,李代数可以转化为反对称矩阵。通过
×来表示角度扰动(旋转轴+旋转角度)的旋转向量。
2. 各种传感器默认坐标系
2.1 摄像头坐标系
评论(0)