飞行器控制笔记(三)——姿态解算之方向余弦更新姿态
0向量叉乘的性质
对于向量
m=[b1b2b3]
, 和向量
n⃗ =[k1k2k3]
,它们之间的叉乘
m×n=[m]×⋅n
,其中,
[m]×=⎡⎣⎢0b3−b2−b30b1b2−b10⎤⎦⎥
一 旋转矩阵
我上一篇博客记录了当前的机体坐标可以通过对大地坐标进行三次绕轴的基本旋转得到,用坐标变换矩阵的形式可以表示为
Rbe=Rx(ϕ)Ry(θ)Rz(ψ)
,这表示了从大地坐标到机体坐标的变化,而姿态解决是通过机体坐标的变化来计算机体坐标相对于大地坐标的状态,因此需要求得
Reb
,也就是对应地从机体坐标系按
先旋转−ϕ再旋转−θ最后旋转−ψ
从而转换到大地坐标,即
Reb=Rz(−ψ)Ry(−θ)Rx(−ϕ)=⎡⎣⎢cosψsinψ0−sinψcosϕ0001⎤⎦⎥⋅⎡⎣⎢cosθ0−sinθ010sinθ0cosθ⎤⎦⎥⋅⎡⎣⎢1000cosϕ−sinϕ0sinϕcosϕ⎤⎦⎥=⎡⎣⎢cosθcosψcosθsinψ−sinθcosϕsinθsinϕ−sinψcosϕsinψsinθsinϕ+cosψcosϕsinϕcosθcosψsinθcosϕ+sinψsinϕsinψsinθcosϕ−cosψsinϕcosϕcosθ⎤⎦⎥(19)(20)(21)
上面这个就是从机体到大地的旋转矩阵,有的书上也叫姿态矩阵,因为可以通过这个矩阵求出欧拉角,因此,先把
Reb
写成下面的形式:
Reb=⎡⎣⎢r11r21r31r12r22r32r13r23r33⎤⎦⎥
这两种形式相对比可以得到:
⎧⎩⎨⎪⎪ψθϕ=arctanr21r11=arcsin−r31=arctanr32r33
从上面这个式子可以看出,要想求得机体的姿态,需要先推导出旋转矩阵与机体角速率之间的关系,最后求解一组微分方程得到旋转矩阵,再通过上式转换为欧拉角。
二 旋转矩阵与机体角速率之间的关系
感觉其实求解机体姿态的过程就是在讨论机体动参考系相对了于大地定参考系的运动,回忆下大二学的理论力学,这个运动是叫做牵连运动的,而由于牵连运动会在动参考系中产生科氏加速度。科氏加速度对于我这飞机的飞行应该是没多大的影响,但与之相关的科氏定理则可以将旋转矩阵与机体角速率联系起来。
科氏定理如下:
derdt=dbrdt+eω×er
其中上标
e
是指向量在大地坐标系中的投影,上标
b
是指向量在机体坐标系中的投影。如果只考虑机体坐标系的转动,那么在机体坐标系中矢径
br
相对于机体的方向与大小都将是恒定的,因此
dbrdt=0
从而有
derdt=eω×er
而陀螺仪所测得的是在机体坐标系下的角速率
bω
,因而为了方便地实际应用,很自然地就想到将这个式子的左右两边都变换到机体坐标系中,即:
d[Reb⋅br]dtReb′⋅br+Reb⋅dbrdtReb′⋅br=Reb⋅bω×Reb⋅br=Reb⋅(bω×br)=Rbe⋅[bω]×⋅br(4)(5)(6)
最终得到旋转矩阵变化率与机体角速率之间的关系:
Reb′=Reb⋅[bω]×
很完美,这又是一组简单的一阶微分方程,初始时刻
Reb=⎡⎣⎢100010001⎤⎦⎥
,通过使用笔记一当中的数值计算方法,很容易就能解出来,进而得到姿态角。这种方法的好处在于更新旋转矩阵的过程中不会出现万向节死锁的现象,但是要计算的参数比较多,一共有九个未知量,计算量较大,但是好像APM飞控解算姿态用的就是这种方法,国内的开源飞控以及某宝上卖的姿态传感器模块基本都是用的四元数法更新姿态。
参考文献
- 全权,多旋翼飞行器设计与控制.北京:电子工业出版社,2018
- 秦永元,惯性导航.北京:科学出版社,2006