文章目录
基于误差状态卡尔曼滤波器的四元数运动学
4. 扰动,导数和积分
4.1 SO(3)SO(3)中的加法和减法运算符
在向量空间 R n \mathbb{R}^n Rn中,加和减操作是通过’+‘和’-'号实现的。在 S O ( 3 ) SO(3) SO(3)中,这是不行的,但是可以定义等效运算符以建立适当的微积分语料库。
我们因此在元素 R ∈ S O ( 3 ) \mathsf{R} \in SO(3) R∈SO(3)和 R \mathsf{R} R的正切空间的元素 θ ∈ R 3 \boldsymbol{\theta} \in \mathbb{R}^3 θ∈R3间定义加和减操作符, ⊕ , ⊖ \oplus, \ominus ⊕,⊖。
加操作符 “加”操作符 ⊕ : S O ( 3 ) × R 3 → S O ( 3 ) \oplus: SO(3) \times \mathbb{R}^3 \to SO(3) ⊕:SO(3)×R3→SO(3)得到一个 S O ( 3 ) SO(3) SO(3)中的一个元素 S \mathsf{S} S,它以一个(通常很小的)旋转构成 S O ( 3 ) SO(3) SO(3)的参考元素,即,
S = R ⊕ θ ≜ R ∘ E x p ( θ ) R , S ∈ S O ( 3 ) , θ ∈ R 3 . (157) \mathsf{S = R \oplus} \boldsymbol{\theta} \triangleq \mathsf{R} \circ \mathrm{Exp}(\boldsymbol\theta)~~~~\mathsf{R, S} \in SO(3),~\boldsymbol{\theta} \in \mathbb{R}^3~.\tag{157} S=R⊕θ≜R∘Exp(θ) R,S∈SO(3), θ∈R3 .(157)
请注意,可以为 S O ( 3 ) SO(3) SO(3)的任何表示形式定义此运算符。特别是对于四元数和旋转矩阵,
q S = q R ⊕ θ = q R ⊗ E x p ( θ ) (158) \mathbf{q}_\mathsf{S} = \mathbf{q}_\mathsf{R} \oplus \boldsymbol{\theta} =\mathbf{q}_\mathsf{R} \otimes \mathrm{Exp}(\boldsymbol{\theta})~\tag{158} qS=qR⊕θ=qR⊗Exp(θ) (158)
R S = R R ⊕ θ = R R ⋅ E x p ( θ ) . (159) \mathbf{R}_\mathsf{S} = \mathbf{R}_\mathsf{R} \oplus \boldsymbol{\theta} = \mathbf{R}_\mathsf{R} \cdot \mathrm{Exp(\boldsymbol{\theta})}~.\tag{159} RS=RR⊕θ=RR⋅Exp(θ) .(159)
减操作符 “减”操作符 ⊖ : S O ( 3 ) × S O ( 3 ) → R 3 \ominus:SO(3) \times SO(3) \to \mathbb{R}^3 ⊖:SO(3)×SO(3)→R3是上面的逆。它返回 S O ( 3 ) SO(3) SO(3)的两个元素间的向量角度差 θ ∈ R 3 \boldsymbol{\theta} \in \mathbb{R}^3 θ∈R3。该差在参考元素 R \mathsf{R} R的正切向量空间中被表达,
θ = S ⊖ R ≜ L o g ( R − 1 ∘ S ) R , S ∈ S O ( 3 ) , θ ∈ R 3 , (160) \boldsymbol{\theta} = \mathsf{S \ominus R} \triangleq \mathrm{Log}(\mathsf{R}^{-1} \circ S)~~~~\mathsf{R,~S} \in SO(3),~\boldsymbol{\theta} \in \mathbb{R}^3~,\tag{160} θ=S⊖R≜Log(R−1∘S) R, S∈SO(3), θ∈R3 ,(160)
对于四元数和旋转矩阵,
θ = q S ⊖ q R = L o g ( q R ∗ ⊗ q S ) (161) \boldsymbol{\theta} = \mathbf{q}_\mathsf{S} \ominus \mathbf{q}_\mathsf{R} = \mathrm{Log}(\mathbf{q}_\mathsf{R}^* \otimes \mathbf{q}_\mathsf{S} ) \tag{161} θ=qS⊖qR=Log(qR∗⊗qS)(161)
θ = R S ⊖ R R = L o g ( R R ⊤ R S ) . (162) \boldsymbol{\theta} = \mathbf{R}_\mathsf{S} \ominus \mathbf{R}_\mathsf{R} = \mathrm{Log}(\mathbf{R}_\mathsf{R}^\top \mathbf{R}_\mathsf{S})~.\tag{162} θ=RS⊖RR=Log(RR⊤RS) .(162)
在这两种情况下,注意,即时的向量差通常被假设很小,上述的定义对任何值都成立(直到 S O ( 3 ) SO(3) SO(3)流形的第一次覆盖,即对角度 θ < π \theta < \pi θ<π)。
4.2 四个可能的导数定义
4.2.1 从向量空间到向量空间的函数
标量和向量的情况遵循导数的经典定义:给定一个函数 f : R m → R n f:\mathbb{R}^m \to \mathbb{R}^n f:Rm→Rn,我们使用{
+ + +, − - −}来定义导数
∂ f ( x ) ∂ x ≜ lim δ x → 0 f ( x + δ x ) − f ( x ) δ x ∈ R n × m (163) \frac{\partial f(\mathbf{x})}{\partial \mathbf{x}} \triangleq \lim\limits_{\delta \mathbf{x} \to 0} \frac{f(\mathbf{x+\delta x}) - f(\mathbf{x})}{\delta \mathbf{x}} ~~~~~~~~\in \mathbb{R}^{n \times m}\tag{163} ∂x∂f(x)≜δx→0limδxf(x+δx)−f(x) ∈Rn×m(163)
欧拉积分得到该形式的线性表达式
f ( x + Δ x ) ≈ f ( x ) + ∂ f ( x ) ∂ x Δ x ∈ R n f(\mathbf{x} + \Delta \mathbf{x}) \approx f(\mathbf{x}) + \frac{\partial f(\mathbf{x})}{\partial \mathbf{x}} \Delta \mathbf{x}~~~~~~~~\in \mathbb{R}^n f(x+Δx)≈f(x)+∂x∂f(x)Δx ∈Rn
4.2.2 从SO(3)到SO(3)的空间
给定一个函数 f : S O ( 3 ) → S O ( 3 ) f:SO(3) \to SO(3) f:SO(3)→SO(3),其中 R ∈ S O ( 3 ) \mathsf{R} \in SO(3) R∈SO(3)以及一个局部的小角度变量 θ ∈ R 3 \boldsymbol{\theta} \in \mathbb{R}^3 θ∈R3,我们使用{
⊕ , ⊖ \oplus, \ominus ⊕,⊖}来定义如下导数
∂ f ( R ) ∂ θ ≜ lim δ θ → 0 f ( R ⊕ δ θ ) ⊖ f ( R ) δ θ ∈ R 3 × 3 (164) \begin{aligned}\frac{\partial f(\mathsf{R})}{\partial \boldsymbol{\theta}} \triangleq \mathop{\lim}\limits_{\delta \boldsymbol{\theta} \to 0} \frac{f(\mathsf{R} \oplus \delta \boldsymbol{\theta}) \ominus f(\mathsf{R})}{\delta \boldsymbol{\theta}}~~~~~~~~~~~~\in \mathbb{R}^{3 \times 3}\end{aligned} \tag{164} ∂θ∂f(R)≜δθ→0limδθf(R⊕δθ)⊖f(R) ∈R3×3(164)
= lim δ θ → 0 L o g ( f − 1 ( R ) f ( R E x p ( δ θ ) ) ) δ θ (165) = \mathop{\lim}\limits_{\delta \boldsymbol{\theta} \to 0} \frac{\mathrm{Log(f^{-1}(\mathsf{R})~f(\mathsf{R}~\mathrm{Exp}(\delta \boldsymbol{\theta})))}}{\delta \boldsymbol{\theta}} \tag{165} =δθ→0limδθLog(f−1(R) f(R Exp(δθ)))(165)
欧拉积分得到该形式的表达式,
f ( R ⊕ Δ θ ) ≈ f ( R ) ⊕ ∂ f ( R ) ∂ θ Δ θ ≜ f ( R ) E x p ( ∂ f ( R ) ∂ θ Δ θ ) ∈ S O ( 3 ) f(\mathsf{R} \oplus \Delta \boldsymbol{\theta}) \approx f(\mathsf{R}) \oplus\frac{\partial f(\mathsf{R}) }{\partial \boldsymbol{\theta}} \Delta \boldsymbol{\theta} \triangleq f(\mathsf{R}) ~\mathrm{Exp}(\frac{\partial f(\mathsf{R}) }{\partial \boldsymbol{\theta}} \Delta \boldsymbol{\theta})~~~~\in SO(3) f(R⊕Δθ)≈f(R)⊕∂θ∂f(R)Δθ≜f(R) Exp(∂θ∂f(R)Δθ) ∈SO(3)
4.2.3 从向量空间到SO(3)的函数
对于函数 f : R m → S O ( 3 ) f:\mathbb{R}^m \to SO(3) f:Rm→SO(3),我们用 ′ + ′ '+' ′+′表示对向量施加扰动,而 ′ ⊖ ′ '\ominus' ′⊖′表示 S O ( 3 ) SO(3) SO(3)的差,
∂ f ( x ) ∂ x ≜ l i m δ x → 0 f ( x + δ x ) ⊖ f ( x ) δ x ∈ R 3 × m (166) \frac{\partial f(\mathbf{x})}{\partial \mathbf{x}} \triangleq \mathop{lim}\limits_{\delta \mathbf{x} \to 0} \frac{f(\mathbf{x} + \delta \mathbf{x}) \ominus f(\mathbf{x})}{\delta \mathbf{x}}~~~~~~~~~~\in \mathbb{R}^{3\times m} \tag{166} ∂x∂f(x)≜δx→0limδxf(x+δx)⊖f(x) ∈R3×m(166)
= l i m δ x → 0 L o g ( f − 1 ( x ) f ( x + δ x ) ) ) δ x (167) = \mathop{lim}\limits_{\delta \mathbf{x} \to 0}\frac{\mathrm{Log}(f^{-1}(\mathbf{x}) ~ f(\mathbf{x} + \delta \mathbf{x})))}{\delta \mathbf{x}} \tag{167} =δx→0limδxLog(f−1(x) f(x+δx)))(167)
欧拉积分得到该形式的表达式,
f ( x + Δ x ) ≈ f ( x ) ⊕ ∂ f ( x ) ∂ x Δ x ≜ f ( x ) E x p ( ∂ f ( x ) ∂ x Δ x ) ∈ S O ( 3 ) f(\mathbf{x} + \Delta \mathbf{x}) \approx f(\mathbf{x}) \oplus \frac{\partial f(\mathbf{x})}{\partial \mathbf{x}} \Delta \mathbf{x} \triangleq f(\mathbf{x}) ~\mathrm{Exp(\frac{\partial f(\mathbf{x})}{\partial \mathbf{x}} \Delta \mathbf{x})} \in SO(3) f(x+Δx)≈f(x)⊕∂x∂f(x)Δx≜f(x) Exp(∂x∂f(x)Δx)∈SO(3)
4.2.4 从SO(3)到向量空间的函数
对于函数 f : S O ( 3 ) → R n f:SO(3) \to \mathbb{R}^n f:SO(3)→Rn,我们用 ′ ⊕ ′ '\oplus' ′⊕′表示 S O ( 3 ) SO(3) SO(3)扰动, ′ − ′ '-' ′−′表示向量差,
∂ f ( R ) ∂ θ ≜ lim δ θ → 0 f ( R ⊕ δ θ ) − f ( R ) δ θ ∈ R n × 3 (168) \frac{\partial f(\mathsf{R})}{\partial \boldsymbol{\theta}} \triangleq \mathop{\lim}\limits_{\delta \boldsymbol{\theta} \to 0} \frac{f(\mathsf{R} \oplus \delta \boldsymbol{\theta}) - f(\mathsf{R}) }{\delta \boldsymbol{\theta}}~~~~~~\in \mathbb{R}^{n \times 3} \tag{168} ∂θ∂f(R)≜δθ→0limδθf(R⊕δθ)−f(R) ∈Rn×3(168)
= lim δ θ → 0 f ( R E x p ( δ θ ) ) − f ( R ) δ θ (169) = \mathop{\lim}\limits_{\delta \boldsymbol{\theta} \to 0} \frac{f(\mathsf{R} ~\mathrm{Exp}(\delta \boldsymbol{\theta})) - f(\mathsf{R}) }{\delta \boldsymbol{\theta}}\tag{169} =δθ→0limδθf(R Exp(δθ))−f(R)(169)
欧拉积分得到该形式的表达式,
f ( R ⊕ δ θ ) ≈ f ( R ) ⊕ ∂ f ( R ) ∂ θ Δ θ ≜ f ( R ) + E x p ( ∂ f ( R ) ∂ θ Δ θ ) ∈ S O ( 3 ) f(\mathsf{R} \oplus \delta \boldsymbol{\theta}) \approx f(\mathsf{R}) \oplus\frac{\partial f(\mathsf{R}) }{\partial \boldsymbol{\theta}} \Delta \boldsymbol{\theta} \triangleq f(\mathsf{R}) + \mathrm{Exp}(\frac{\partial f(\mathsf{R}) }{\partial \boldsymbol{\theta}} \Delta \boldsymbol{\theta})~~~~\in SO(3) f(R⊕δθ)≈f(R)⊕∂θ∂f(R)Δθ≜f(R)+Exp(∂θ∂f(R)Δθ) ∈SO(3)
4.3 有用的,且非常有用的,旋转的雅可比
让我们考虑对一个向量 a \mathbf{a} a,绕轴 u \mathbf{u} u旋转 θ \theta θ弧度。让我们以三种等效形式表达旋转规范,即 θ = θ u , q = q { θ } \mathbf{\boldsymbol\theta} = \theta \mathbf{u},~\mathbf{q} = \mathbf{q}\{\boldsymbol\theta\} θ=θu, q=q{ θ}且 R = R { θ } \mathbf{R} = \mathbf{R}\{\boldsymbol\theta\} R=R{ θ}。我们对旋转结果关于不同幅度的雅可比矩阵感兴趣。
4.3.1 关于向量的雅可比
向量 a \mathbf{a} a的旋转相对于此向量本身的导数很一般,
∂ ( q ⊗ a ⊗ q ∗ ) ∂ a = ∂ ( R a ) ∂ a = R . (170) {\color{red} \frac{\partial (\mathbf{q \otimes a \otimes q^*})}{\partial \mathbf{a}} = \frac{\partial \mathbf{(R~a)}}{\partial \mathbf{a}} = \mathbf{R}}~.\tag{170} ∂a∂(q⊗a⊗q∗)=∂a∂(R a)=R .(170)
4.3.2 关于四元数的雅可比
相反,关于四元数 q \mathbf{q} q的旋转的导数很棘手。为了方便,我们对四元数使用较浅的符号, q = [ w , v ] = w + v \mathbf{q} = [w, \mathbf{v}] = w + \mathbf{v} q=[w,v]=w+v。我们利用式(35),(34),以及恒等式 a × ( b × c ) = ( c × b ) × a = ( a ⊤ c ) b − ( a ⊤ b ) c \mathbf{a \times (b \times c) = (c \times b) \times a} = \mathbf{(a^\top c)b - (a^\top b) c} a×(b×c)=(c×b)×a=(a⊤c)b−(a⊤b)c,从而开发基于四元数的旋转(107),
a ′ = q ⊗ a ⊗ q ∗ = ( w + v ) ⊗ a ⊗ ( w − v ) = w 2 a + w ( v ⊗ a − a ⊗ v ) − v ⊗ a ⊗ v = w 2 a + 2 w ( v × a ) − [ ( − v ⊤ a + v × a ) ⊗ v ] = w 2 a + 2 w ( v × a ) − [ ( − v ⊤ a ) v + ( v × a ) ⊗ v ] = w 2 a + 2 w ( v × a ) − [ ( − v ⊤ a ) v − ( v × a ) ⊤ v + ( v × a ) × v ] = w 2 a + 2 w ( v × a ) − [ ( − v ⊤ a ) v + ( v ⊤ v ) a − ( v ⊤ a ) v ] = w 2 a + 2 w ( v × a ) + 2 ( v ⊤ a ) v − ( v ⊤ v ) a . (171) \begin{aligned}\mathbf{a}' =& \mathbf{q} \otimes \mathbf{a} \otimes \mathbf{q}^* \\ =& (w + \mathbf{v}) \otimes \mathbf{a} \otimes (w - \mathbf{v}) \\ =& w^2\mathbf{a} + w(\mathbf{v \otimes a - a \otimes v}) - \mathbf{v \otimes a \otimes v} \\ =& w^2\mathbf{a} + 2w(\mathbf{v \times a}) - [(-\mathbf{v}^\top \mathbf{a} + \mathbf{v \times a}) \otimes \mathbf{v}] \\ =& w^2\mathbf{a} + 2w(\mathbf{v \times a}) - [(-\mathbf{v}^\top \mathbf{a}) \mathbf{v} + \mathbf{(v \times a) \otimes v}] \\ =& w^2\mathbf{a} + 2w(\mathbf{v \times a}) - [(-\mathbf{v}^\top \mathbf{a})\mathbf{v} -\cancel{(\mathbf{v \times a})^\top \mathbf{v}} + \mathbf{(v \times a) \times v}]\\ =& w^2\mathbf{a} + 2w(\mathbf{v \times a}) - [(-\mathbf{v}^\top \mathbf{a})\mathbf{v} +\mathbf{(v^\top v)a} - \mathbf{(v^\top a)v}]\\ =& w^2\mathbf{a} + 2w(\mathbf{v \times a}) + 2(\mathbf{v}^\top \mathbf{a})\mathbf{v} - (\mathbf{v}^\top \mathbf{v})\mathbf{a}~. \\ \end{aligned} \tag{171} a′========q⊗a⊗q∗(w+v)⊗a⊗(w−v)w2a+w(v⊗a−a⊗v)−v⊗a⊗vw2a+2w(v×a)−[(−v⊤a+v×a)⊗v]w2a+<