接下来是四元数的更新。这里必须介绍各种坐标系,但是嘛……毕竟简化了,所以就说两个,b代指固连在机体上的坐标系,n代指导航使用的参考坐标系,一般选取方向固定东北天的坐标系。然后这里近似认为n系是不运动的,因为之前说了速度不太快,位移不太大的假设,探空火箭又是向上发射的水平位移就更小了。(就算考虑了也顶不住低成本MEMS的爆炸一样的误差)
因此,我们可以按照上述的顺序继续进行,更新四元数,从其能输出四元数来看,市面上能买到的自带算法的imu也是这么做的(如果使用高精度IMU,不近似的话,流程稍有差异,详见《捷联惯导算法与组合导航原理》)。
记$Q^a_b$是a系转到b系的四元数,那么我们实际上是要把已知的$Q^n_{b(m-1)}$ 更新为$Q^n_{b(m)}$ 。
有:
$Q^n_{b(m)} = Q^n_{b(m-1)}\circ Q^{b(m-1)}_{b(m)}$(B1)
$Q^{b(m-1)}_{b(m)} = \cos\frac{\phi_m}{2}+\frac{\vec{\phi}_m}{\phi_m}\sin\frac{\phi_m}{2}$(B2)
只需更具A部分求解出的旋转矢量,利用(B1)和(B2)式就能更新四元数。现在这个四元数已经存储了所有当前姿态信息,接下来要把它转为更直观(欧拉角)和更易于运算(姿态矩阵)的形式。
值得说的是,如果使用JY901b等内置姿态解算程序的imu,可以直接得到四元数,前面的就不要搞了。如果是自己写代码,还有很多要写的。首先就是这个三角函数运算计算机来做肯定需要泰勒展开再截断运算,就算是直接调用库也是这样,再加上计算机的浮点误差,这个四元数很快会偏移出归一化四元数,所以要定时归一化;其次要结合加速度传感器和磁力计的数据进行融合,这个算法就较为复杂了,还是那句话,如果自己写,且不是硬件资源太紧张还是用kalman滤波算法比较好。
推导详见《捷联惯导算法于组合导航原理》