四元数相关的基本推导,主要是扰动相关。然后记下了一些error-state kalman相关的公式。
不做具体说明时,都是右手系
四元数乘法
其中为四元数乘法,和为四元数,四元数乘法满足结合律和分配律。四元数乘法为二元运算,可以写成两种等价的形式:
其中,为实数,为其中虚数向量。
左手系和右手系在四元数计算上的区别:
- 右手系:, ,
- 左手系:,,
Eigen中的四元数运算如果使用方法
coeffs()
输出系数,输出的向量是按照排列的。在Eigen中四元数的构造函数中,输入参数顺序是按照排列的。所以想使用四元数乘法的时候可以构造四元数使用Eigen的四元数相乘函数来避免这些问题。但是想使用Eigen的四元数系数进行四元数乘法运算时(尤其对于论文里面经常提到的矩阵),其形式为
当然计算结果自然是按照排列的四元数
由于
因此有
扰动及求导
先交代一些东西
下文可能使用局部到全局坐标系的变换更容易理解
局部扰动
局部扰动也就是把扰动加在目前的坐标系数据下,然后再通过坐标系之间的关系变到其他坐标系下,具体形式为:
其扰动放在右边,其原因为,可以满足先对局部数据进行扰动调整再通过坐标系关系变换到其他坐标系下。典型的应用为IMU预积分,具体形式为。旋转矩阵形式类似。其对时间求导形式为:
其中为局部角速度(当前坐标系的角速度),为(不要在意维数的问题)。具体推导如下:
全局扰动
和局部扰动相对,也就是先通过坐标系的关系变换到其他坐标系下再进行扰动。具体形式为:
由于,也就是扰动没有加在局局部下,是加在了坐标系之间的变换这种全局关系中。其时间导数为:
其中是全局角速度,也就是要目标坐标系下的角速度,不是当前坐标系下的角速度。
其他的求导
旋转矩阵与四元数关系
(不要在意维数的细节问题)
系统运动(局部)
连续时间
论文里面多是给的连续时间的推导结果
true state
:
其中与为测量值,与为true bias,与为噪声。
nominal state
:
error state
:
TODO:和的推导有时间补上
离散时间
其实和连续时间没差多少,就是把导数变成已经积分好的。数值积分方法还可以使用其他的,之后的具体形式都需要重新推导,这里是示例。
nominal state
:
error state
:
矩阵可以通过以上内容很容易推导出来,具体形式懒得写了。
error state的期望为,在预测的过程中就是为了计算协方差矩阵,改变当前期望分布