笔者这些日子一直在学四元数Kalman滤波,看的文献有工程师写的,也有数学、物理工作者写的.读书的时候笔者就曾听说过四元数,在现代物理里,四元数似乎并没有起到很大的作用,物理工作者更多谈及的是
约定
首先约定一些符号表征方法.笔者使用西文字母
然后是一些常用记号.
:单位矩阵.在不加声明的情况下读者应能自行分辨其维数,笔者不再额外声明. :Kronecker符号,其定义如下:
:Levi-Civita符号,其定义如下:
:Pauli矩阵,其定义如下:
$$\begin{equation}
\sigma_1 = \left(
\sigma_2 =
\left(
\sigma_3 =
\left(
\end{equation}$$
容易证明Pauli矩阵具有如下对易关系(多层内积空间与泡利矩阵(Pauli matrices)的运算性质):
从以上两则关系可以推出
群
群的定义
其中
Euler角
规定3个Euler角分别是横滚角(Roll),俯仰角(Pitch),航向角(Yaw),它们分别对应绕
这样规定是因为在工程项目中,载具通常使用前左上(FLU)坐标系,即载具机头朝前时,载具前、左、上三个方向分别为
轴正方向.在这种坐标系中,横滚角描述了载具立轴与铅垂线的夹角,这是一个绕 轴的转动;俯仰角描述了载具纵轴与水平面的夹角,这是一个绕 轴的转动;航向角描述了载具纵轴与子午面的夹角,这是一个绕 轴的转动.
规定绕
通过上述3个基础旋转可以组合得到3维空间中的任意旋转,要注意的是旋转顺序不可交换,有效的旋转顺序一共有12种,本文采用
当旋转对象是参考向量的坐标时,则对于同样的旋转矩阵,坐标的旋转方向刚好与基底的旋转方向相反.
生成元
生成元的定义是Lie群在单位元处的切空间.根据单位元的定义,容易判断
$$\begin{equation}\begin{split}
\varepsilon_1 &= \frac{\partial R(r,p,y)}{\partial r}\Bigg|{(0,0,0)}
=
\left(
\varepsilon_2 &= \frac{\partial R(r,p,y)}{\partial p}\Bigg|{(0,0,0)}
=
\left(
\varepsilon_3 &= \frac{\partial R(r,p,y)}{\partial y}\Bigg|_{(0,0,0)}
=
\left(
\end{split}\end{equation}$$
用上述3个生成元可以张成一个线性空间
其中
这表示
四元数乘法群
四元数的定义
记
上的群结构
封闭性,根据Pauli矩阵的对易关系
可以得到
$$g_a g_b=\varepsilon_{abc}g_c-\delta_{ab}g_0,$$
于是对于任意
$$\begin{equation}\begin{split}
AB&=(A_0 g_0 + A_a g_a)(B_0 g_0 + B_b g_b)\\
&=A_0 B_0 g_0 g_0 + A_a B_0 g_a g_0 + A_0 B_a g_0 g_a + A_a B_b g_a g_b\\
&=(A_0 B_0 - A_aB_a)g_0 + (A_0 B_c + A_c B_0 + A_a B_b \varepsilon_{abc})g_c,
\end{split}\end{equation}$$
若记
- 定义
上的共轭映射
$$\begin{equation}
:\mathbb{H}\rightarrow \mathbb{H};A=A_\mu g_\mu\mapsto A^=A_0g_0-A_ag_a,
\end{equation}$$
则
用
于是
结合律,
单位元,即
; 逆元,由范数诱导
.
现在再将注意力放到
使用这套记号,