发表于《开源一块飞控SS0》
tmn_A作者
8个月27天前修改于 8个月27天前IP:广东
948821
9楼

现在写一下捷联惯导的算法。再次强调是简化后的,且只给出结论。这些均来自《捷联惯导算法与组合导航原理》。

先从定义开始。

首先是欧拉角。欧拉角是一种直观地描述旋转的方式。欧拉角的定义有很多种,这里只介绍两种。

第一种是工程上最常用的,几乎所有开源工程,惯导文献都使用这种定义的欧拉角。JY901b也是如此。

定义方式如下:

初始时机体xyz轴对准东北天

先绕机体此时的z轴旋转$\psi$,也称YAW,Y,航向角,角度范围-180°~180°

再绕机体此时的x轴旋转$\theta$,也称PITCH,P,俯仰角,角度范围-90°~90°

最后绕机体此时的y轴旋转$\gamma$,也称ROLL,R,横滚角,角度范围-180°~180°

(角度范围不一定是这样,比如有的文献中YAW角范围0~360°,有些直接传回弧度制等等,不过相互转化是很简单的)

由于欧拉角的缺陷,俯仰角接近90°或-90°时,会出现失效问题。表现有很多,比如我之前这篇文章重刚体定点转动的两种可解情况的求解——欧拉-潘索情形与拉格朗日-泊松情形中出现的“章动角为0时分不清自转与进动现象”(当然那篇文章中欧拉角的定义时物理上常用的,和这个有区别),如果使用欧拉角微分方程直接求解姿态,这样还会导致该方程不可解(当然我们不会用这种算法,精度不够)。而且这种欧拉角是相对于东北天坐标系的,不一定适合探空火箭。所以,《捷联惯导算法与组合导航原理》中介绍了一种适用于运载火箭的欧拉角定义,定义如下:

初始时xy轴在弹道平面内,x轴水平,y轴竖直,z轴由右手螺旋法则确定方向

先绕机体此时的z轴转$\theta$ ,角度范围-180°~180°

再绕机体此时的y轴转$\psi$ ,角度范围-90°~90°

最后绕机体此时的x轴转$\gamma$ ,角度范围-180°~180°

(还需要弹道平面与正北方向的夹角)

这样奇异点再与弹道平面垂直处,火箭几乎不可能出现这种情况。

因为现在使用的欧拉角主要还是给人看,计算都用的四元数,imu也基本随便放的,所以我认为第一种方式反而更好,市面上买得到的内置解算算法的imu几乎都是第一种,资源更多,以后用上好的imu,只能自己写算法的时候再用第二种。当然决定自己写姿态算法的话那就无所谓看喜好了。

接下来是姿态矩阵,主要是有点绕,写清楚先。

$C^a_b$是b系到a系的坐标变换矩阵,也是a系到b系的坐标系变换矩阵(过渡矩阵),也就是有:

$\vec{x}_a = C^a_b\vec{x}_b$(def.1)(坐标向量的变换)

$(\hat{i}_a,\hat{j}_a,\hat{k}_a) = (\hat{i}_b,\hat{j}_b,\hat{k}_b) C^a_b$(def.2)(基变换)

一般称固连在机体的坐标系为b系,参考的导航坐标系为n系,称$C^n_b$为姿态矩阵。

接下来是最难理解的四元数,一般用归一化四元数(模为1,即4个分量平方和为1)表示状态。

每个四元数都能写成一个标量加一个矢量的形式$Q = q_0+q_1\hat{i}+q_2\hat{j}+q_3\hat{k} = a+\vec{b}$(这里的虚数单位只看加减与数乘能等效于单位矢量,而且矢量好像就是从这里来的,不过具体我不懂)(def.3)

简单介绍四元数乘法,四元数乘法不满足交换律,满足结合律与消去律。四元数乘号记作$\circ$。分量形式展开即可,只需满足:

$\hat{i}\circ\hat{i} = -1,\hat{j}\circ\hat{j} = -1,\hat{k}\circ\hat{k} = -1$(def.4)

$\hat{i}\circ\hat{j} = \hat{k} ,\hat{j}\circ\hat{k} = \hat{i} ,\hat{k}\circ\hat{i} = \hat{j}$ (def.5)

$\hat{j}\circ\hat{i} = -\hat{k} ,\hat{k}\circ\hat{j} = -\hat{i} ,\hat{i}\circ\hat{k} = -\hat{j}$ (def.6)

更简单的有哈密顿公式,与上面等价:

$\hat{i}\circ\hat{i} = \hat{j}\circ\hat{j} = \hat{k}\circ\hat{k} = \hat{i}\circ\hat{j}\circ\hat{k} = -1$ (def.7)

本文不会涉及除以上外的四元数相关的数学内容。

由欧拉定理,任意转动达到的末状态都能由绕某等效轴的一次定轴转动达到。旋转矢量$\vec{\phi}$,方向为该等效轴的方向,大小为转角,满足右手螺旋为正,反之为负。

所以任意姿态都能由一次定轴转动从最初的东北天转过来,而这些都可以用一个四元数表示。用四元数表示比欧拉角更加便于姿态更新。

可以证明有:

$Q = q_0+q_1\hat{i}+q_2\hat{j}+q_3\hat{k} = \cos\frac{\phi}{2}+\frac{\vec{\phi}}{\phi}\sin\frac{\phi}{2}$(def.8)

其中:

$q_0^2+q_1^2+q_2^2+q_3^2 = 1$(def.9)

评论
文号 / 948821

百炼成钢
名片专栏发私信
学术分 0
总主题 15 帖总回复 172 楼拥有证书:进士 机友 笔友
注册于 2020/08/28 12:52:17最后登录 2026/10/30 21:53:39
主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:广东

个人简介

辰星引力工作室成员,火箭爱好者,嵌入式爱好者,物理爱好者,还有亚雷斯塔克劳利是我老婆。

笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的