四元数的姿态解算就是求解四元数的微分方程:
![](https://img.kancloud.cn/77/f9/77f9b40a78e128719bffc253c08fe5cb_1235x715.png)
![](https://img.kancloud.cn/49/2a/492abecc0cc113fc60746af123314253_959x281.png)
:-: 图 4.2.2-1 四元素姿态解算流程
下面为四元数进行姿态解算的具体步骤:
**1. 初始化四元数**
姿态计算开始,将已知载体的初始姿态角带入式4.2.2-1,求出初始时刻的四元数:
![](https://img.kancloud.cn/d8/e0/d8e08d937d7e7c3c952a58605af35ede_654x221.png)-------------(4.2.2-1)
**2. 获取角速度、加速度、磁力计的值**
陀螺仪测量得到的角速度为:`$ [w_x, w_y, w_z] $`,加速度计测量得到的加速度为:`$ [a_x, a_y, a_z] $`,磁力计测量得到的磁场为:`$ [m_x, m_y, m_z] $`。
**3. 将加速度计测量值、磁力计测量值化为单位向量**
**4. 从四元数中获取重力向量和磁场向量**
**(1)通过旋转矩阵乘以加速度计的输出值得到重力向量`$ [\nu_x, \nu_y, \nu_z] $`**
![](https://img.kancloud.cn/7b/36/7b36ceebfdb93c7dd72f0774cc8e8221_525x311.png)
加速度计的实际测量值为`$ [a_x, a_y, a_z] $`,它与重力向量`$ [\nu_x, \nu_y, \nu_z] $`同是表示在 b坐标系下的向量,它们之间的误差按式(4.2.2-3)计算:
```[tex]
[e_x, e_y, e_z] = [\nu_x, \nu_y, \nu_z] × [a_x, a_y, a_z]-------------(4.2.2-3)
```
存在误差的原因是:通过对陀螺仪测得的角速度进行积分获取姿态角时存在的积分误差,从而导致重力向量`$ [\nu_x, \nu_y, \nu_z] $`的不准确。
**(2)通过旋转矩阵乘以磁力计的输出值得到磁场向量**
磁力线由北指向南,近乎垂直于地球表面。由于Y轴与磁力线垂直,所以在Y轴上的磁场为 0 ,地球磁场就为:`$ [b_x, 0, b_z] $`,但是这个磁场向量有时是未知的,所以需要经过以下两个步骤才能得到准确角速度值。
1)求出磁场向量
![](https://img.kancloud.cn/8a/94/8a94290c42365a4c51c0c8fa94dec64e_782x287.png)-----------------------------(4.2.2-X)
2)求出角速度
磁力计在XOY平面上(n系)的向量大小必定相同,令`$ b_x = \sqrt{h_{x}^{2} + h_{x}^{2}},b_z = h_z,b_y = 0 $`,然后通过式(4.2.2-X1)求出角速度:
![](https://img.kancloud.cn/f5/f7/f5f70ea48acf904280516c682aafdb98_727x168.png)-----------------------------(4.2.2-X1)
误差为:
```[tex]
[e_x, e_y, e_z] = [m_x, m_y, m_z] × [w_x, w_y, w_z]-------------(4.2.2-3a)
```
**5. 计算误差**
![](https://img.kancloud.cn/cd/cd/cdcd0b3649a326e1393f8e969c182724_402x172.png)-----------------------------(4.2.2-X)
**6. 利用误差修正陀螺仪**
使用PI算法来修改误差:
![](https://img.kancloud.cn/33/f2/33f22c0f4fb2fb36335129cba82ecf76_334x106.png)-----------------------------(4.2.2-4)
`$ K_{p} $`比例系数,`$ e $`误差,`$ K_{i} $`积分系数,`$ w $`为修正后的陀螺仪数据(角速度)。
**7. 利用修正后的陀螺仪数值更新四元数**
利用一阶龙格—库塔法求解微分方程,一阶龙格—库塔法表达式如式(4.2.2-5)
```[tex]
\dot{x} = f[x(t), w(t)]x(t+T) = x(t) + Tf[x(t), w(t)]---------(4.2.2-5)
```
四元数更新如式(4.2.2-6):
![](https://img.kancloud.cn/b6/b3/b6b3a40d67828ed20d5320333055d103_744x272.png)------------(4.2.2-6)
第**4**步到第**7**步需要不断地迭代,直到满足为止。
**8. 将更新后的四元素规范化**
![](https://img.kancloud.cn/4f/11/4f11f2e8295431c87e1d7602cf60822b_436x145.png)---------(4.2.2-7)
**9. 将四元数转换为欧拉角**
![](https://img.kancloud.cn/38/58/3858bb6b0606e0401bff075b07b7b24a_799x333.png)---------(4.2.2-8)
至此,四元数的姿态解算就完成了。下图表示四元素姿态的解算流程。
![](https://img.kancloud.cn/b1/79/b179b83cd76cd3b11be4ac7aea58964b_1349x733.png)