组合导航原理(二)——使用方向余弦进行姿态更新
关于坐标系
导航坐标系n
(1) 导航坐标系n相当是跟随载体运动的。(教科书上是:北东地,注意地是向下的)
(教材上,是北,东,地, 这个顺序对应 速度向量的各个元素的位置! )
(2)而载体坐标系b,X是前进方向,b系的Z轴和n系的Z轴一般是不平行的,也就是初始时刻,有转换关系Cnb(0)。
(教材上,是前,右,下,对应X,Y,Z)
对于角速度向量的理解:
(1)角速度在R系的投影,就是绕R系各轴旋转的速度。ωR = [ 绕R系X轴旋转的角速度, 绕R系Y轴旋转的角速度,绕R系Z轴旋转的角速度]
(2)假设e相对于i系的角速度向量 ωeie= [ 0,0,ωe]T,(绕Z轴旋转)
(3) 将ωeie ,放到n系下,并投影到n系下各轴。
角速度 = 速度 / 运动半径
(1)n系相对于地球系e向东运动,将使得n轴发生旋转。
(2) n系相对于地球系e向北运动,将使得e轴发生旋转,但是方向和右手握的方向相反,所以是负的
(3) 平行于地轴的旋转,可以分解成以N轴和Z轴的旋转,利用这个关系得到绕Z轴旋转的角速度
角速度要与半径R运算,才能算出速度
关于旋转矩阵
(虚线是i系下的坐标)
解析:
(1)每个测量设备,只能测出点在它【自身坐标系】下的坐标(向量)。如【红色】的向量在【i系】下的坐标。
(2)如果知道在【统一基准】下【单位向量】 xi、yi、zi,那么就可以通过 【向量V】投影到 xi、yi、zi,就可以得到【V点】在统一基准下的坐标。
(3)如果xi、yi、zi 是单位向量,V点在i系下的坐标是[xv , yv , z v],在【统一基下的坐标】 = [xi , yi , zi]3*3 [xvi , yvi , zvi]T 即可
(虚线是统一基准系下的坐标)
* [xi , yi , zi]3*3 是在统一基的列向量, [xvi , yvi , zvi]T 是参考i系下的坐标。
坐标之间的转换:
(虚线是b系下的坐标)
令:
[xi , yi , zi]3*3 是【在统一基】的向量为Ci,
[xvi , yvi , zvi]T 是【参考i系】下的坐标为Vi
[xb , yb , zb]3*3 是【在统一基】的向量为Cb,
[xvb , yvb , zvb]T 是【参考b系】下的坐标为Vb
【V点】在统一基下的坐标 = CiVi= CbVb
Vi = Ci -1CbVb
假设,Ci为单位矩阵,那么相当于i系的各个【坐标基】与【统一坐标基】是重合的。
那么:
Vi = CibVb
Cib 理解 :
(1)b系的【坐标轴】,在i系下的向量,通过列向量的形式组织成矩阵。
(2)用于将在【b系下的坐标Vb】,转换到【i系下的坐标】
问题:如何得到Cib ?
(1)传感器测量值,只是在【b系下的坐标Vb】,要统一到【i系下的坐标】
(2)如果能测得如下角度:
(注意,公式上的n,在这里应该写为i,图片是其他地方借鉴的)
(3) 有一点很重要的是,Ψ 角是对于i系的x方向(或北向)
(4)问题转化为:如何得到Ψ、θ、γ?
IMU 角速度测量
说明:
1. IMU只能测出每个时间点的[ωx,ωx,ωz],它不能直接测出Ψ、θ、γ
2. Ψ、θ、γ 的计算,不是直接对各个时间的[ωx,ωy,ωz] 进行简单的时间积分!!
关于角速度
假设:
(1)现在的时间是tm-1 , 在tm-1 的瞬间测到角速度[ωx(m-1),ωy(m-1),ωz(m-1)]。
(2)已经得到Cib(m-1) (它可以看成是坐标基),假设,现在需要在tm-1 开始,对Cib(m-1) 进行旋转。
那么:
说明:
(1)t是指,从tm-1 开始,过去了的时间
那么,在t = 0时刻,对Rz进行求导:
同理:
那么,对于
(1)R1(t) = Ry(t)Rx(t)
(2)R2(t) = Rx(t)Ry(t)
对【某一瞬间的旋转矩阵求导】,得到的是【角速度矩阵】。(注意要强调某一瞬间,也就是它和Cib(m-1) 还没什么关系)
(反过来说,是不是对【角速度矩阵】积分,就能得到【某一瞬间的旋转矩】???)
扩展一下:
Ω1 = Ω2 = Ωx + Ωy
这告诉我们: 任意绕着xy轴旋转的旋转变换, 其角速度矩阵都可以分解成单独沿着x旋转以及单独沿着y旋转的角速度矩阵的和, 并且这种和是满足交换律的. 进一步的计算可以推广到沿着xyz三个轴的旋转
结论:【角速度矩阵】,就是【角速度分量组成的向量】的反对称矩阵。
详细推导:
当ψ,Φ,Θ 都足够小的时候,旋转顺序变得不重要
上面b相当于b(t),n相当于b(t+Δt),对C求导相当于[ Cb(t)b(t+Δt) ]' , 对角线求导为0 , 非对角求导为角速度。
下面的东西,可以从这个角度考虑,避免复杂的东西:
(1)Cib(t+Δt) = Cib(t)*Cb(t)b(t+Δt)
(2) [ Cb(t)b(t+Δt) ]' 求导等于 ωbib x
(3) [ Cib(t+Δt)] ' = Cib(t) * [ Cb(t)b(t+Δt) ]' = Cib(t) ωbib x
关于Cib
假设姿态角Ψ、θ、γ ,和均是时间的函数,对式两边同时微分,可得:
必须注意:
(1)对Ψ、θ、γ 进行微分,并不是得到 [ωx,ωx,ωz] ;
(2)Ψ、θ、γ 是想对于i系的,
(3)而 [ωx,ωx,ωz] 是相当于在时间为tm-1 的b系的
转换一下:
x号是将向量转换为反对称矩阵的意思
(以上的n,在这里改成i)
【Ψ、θ、γ 的微分】
理解:
(1) ωbnb ,是b系,相对于i系的【角速度向量】(问题:和【ωx,ωx,ωz】有什么关系?)。
(2)ωbnb ,内含 [ θ', Ψ', γ' ],ωiib ≠ [ θ', Ψ', γ' ]T
(3),好像是在说,【角速度矩阵 [ωbnb X] 】,经过Cnb 进行变换,得到(Cnb)'
(4)(Cnb)' , 就是描述【b系相对于n系】【旋转的速度】。
(5)一般來說,使用 Ω = [ωbnb X]
遗留问题:如何将【Ψ'、θ'、γ'】 与【ωx,ωx,ωz】产生联系?
现在假设:
(1)在时间为tm-1 的旋转矩阵Cib(m-1)
(2)IMU读取到有tm-1 的各个轴的旋转速度, [ωx(m-1),ωx(m-1),ωz(m-1)]
(3)假设ωiib 已知(现在暂时没有头绪,除非 [ θ', Ψ', γ' ]T 能测出来才能直接算,假设已知)
要求:Cib(m)
在《捷联惯导算法与组合导航原理》P14中,有:
Cib(m) = Cib(m-1) + ∫ C'(τ)dτ = Cib(m-1) + ∫ C(τ) Ω (τ) dτ , τ ∈ [0 , tm - tm-1]
(使用Ω(t)代替 [ωnnb(t) X ])
按照上图,就比较好理解:
1. Cib(m-1) 理解为里程,相当于b系相对于i系,在tm-1,已经旋转了多少了;
2. ∫ C'(τ)dτ 理解为增量;
3. 速度就是C'(t),因为速度是变的,所以是个函数;
4. Cib(m) 理解为在tm 的里程,相当于b系相对于i系,在tm,已经旋转了多少了;
在《捷联惯导算法与组合导航原理》P15中,介绍了:
1. Cib(m) = Cib(m-1) e ∫ Ω(τ)dτ ,τ ∈ [0 , tm - tm-1] (推导过程书上有,还要补充【矩阵积分】、【指数矩阵】)
(注意对比: Cib(m) = Cib(m-1) + ∫ C'(τ)dτ = Cib(m-1) + ∫ C(τ) Ω (τ) dτ )
2. 【可交换性条件】, 是Cib(m-1) e ∫ Ω(τ)dτ Cib(m-1) + ∫ C(τ) Ω (τ) dτ )的【必要条件】。(书上有证明)
(1)必须要补充一点,使用进行vi = Cib vb 旋转计算,等价于vb绕某一固定【向量μ】,旋转α度。
(2)可以由Cib 计算出【向量μ】。事实上μ 是 Cib 【特征值】为1的【特征向量】。(查看【罗德里格斯公式】)
3. 【可交换性条件】,直白点说,就是在[0 , tm - tm-1] 时间内,Cib等效使用【罗德里格斯公式】进行旋转的向量μ,必须是固定的。换句话说,[0 , tm - tm-1] 时间内,采集频率必须很高,高到旋转向量μ来不及发生变化。
重点来了!!!!!!!(希望有人告诉我是不是这样??)
Ω(τ) = [ωiib(t) X ] = [ ωx(t),ωx(t),ωz(t) ]T X
ω(t) = [ ωx(t),ωx(t),ωz(t) ]T
(书上竟然没有说!!,是直接写出来的,为啥会这样?)
也就是:
苦苦要求的ωiib 竟然就是IMU能够直接输出的三轴角速度【ωx,ωx,ωz】
再求 Cib(m) = Cib(m-1) e ∫ Ω(τ)dτ
令:T = tm - tm-1, 那么 τ ∈ [0 , T]
《捷联惯导算法与组合导航原理》P16中,有公式:
ω(τ) = 【ωx(τ),ωx(τ),ωz(τ)】
Cib(m) = Cib(m-1) e[θ(T)X]
说明:
(1)sinθ(T) = sin(||θ(T) ||) ,θ(T) 是向量
(2)θ(T) 可以看成来,是[0 , T]期间,三轴旋转的【角度增量】,注意不要和【Ψ、θ、γ】的增量混淆
注意:【ωx,ωx,ωz】 不是传感器直接输出的吗?那怎么得到在[0, T]之间的角度函数ω(τ) = 【ωx(τ),ωx(τ),ωz(τ)】????
猜想:(希望有人告诉我是不是这样??)
单独对ωx 进行建模,例如上面,可以假设多项式:
ωx(τ) = at + b
ωx(τ) = at² + bt + c
最简单的姿态更新算法流程:(希望有人告诉我是不是这样??)
后续:
关于【指数矩阵eA】的误区:
千万不要将eA 想象为
而是:
所以,求解eA = I + A + A2/2! + A3/3!,根据A的特性决定到哪一项???
接上
误区一:IMU测量的是【角增量】,上一时点,到下一时间点的【角度增量】。
* IMU还会测量 【比力】,fb = a - g
猜测:
(1)ω(t) 的函数是不好确定的,那么用ω积分来计算角积分,会带来损失;
(2)可以想象成汽车, 每个时刻的里程(角度增量)更加容易得到,也更加准确。就像直接得到了图上积分的区间面积一样。
误区二:关于eA
如果A 是反对称矩阵,A = VX,那么有准确的解析解:
需要补充的知识
1. 各种参考坐标系:https://blog.csdn.net/absll/article/details/124764404
(1)i系:原点在地心,x轴指向春分点,Z轴与自转轴重合。一般认为是绝对不动的坐标系。
(2)n系:导航坐标系。实际上惯性导航最终要将结果解算到此坐标系下。
(3)b系:载体坐标系。以IMU为重心,IMU的轴为XYZ轴的系。
(4)e系:地心地物坐标系。x轴指中央子午线与赤道交点,随着地球一起转动。
2. 角速度定义
假定有符号:ωpRb
坐标系b,相对于【参考系R】的角速度,在坐标系P下的投影。
容易得到:ωpRb = - ωpbR
3. 重点:角度叠加公式
ωnie + ωnen = ωnin
ωnen : 导航坐标系,相对于地心地物坐标系的角速度。(由载体的运动速度有关)
ωnie :地心地物坐标系,相对于绝对静止的i系得角度。(由地球自转角速度、纬度有关)
ωbib :这是IMU理论上的角速度,这就是说,IMU的角速度是绝对的。(猜测!)
4. 转换矩阵的说明
(1)符号说明
Cnb:由b系转换到n系,通常也是求姿态的结果。 [Ψ(t),θ(t),γ(t)]T 就是b系相对于n系旋转的欧拉角。
Cnb(m) :Cnb 是随时间变化的,所以,加入了时间m。意思是:在t = m时,由b系转换到n系。
Cb(t)b(t + Δt) :b系相对于自身也是会发生变化的,意思是:由 T = t + Δt时的b系,转换到T = t 时的b系。
例子:IMU输出了在 T = t + Δt 的角度增量 [ Δθx,Δθy,Δθz ] T , 可以认为,b系在T = t + Δt时,相对于b系在T = t 时,旋转了[ Δθx,Δθy,Δθz ] T
直接可以用【小角度欧拉角旋转矩阵】,近似计算出Cb(t)b(t + Δt)
(2)链式计算 Cda = CdbCba
这个很好理解,由a转到b,再b由转到d,等于a转到d。
利用这个办法:
Cnb(k) = Cn(k)n(k-1) Cn(k-1)b(k-1) Cb(k-1)b(k)
Cn(k-1)b(k-1) 可以写成Cnb(k-1)
解析:
(1) Cb(k-1)b(k) 上面有了。对应的角速度是: ωbib 直接是IMU得出(其实IMU测得是Δθ = ∫ωbib(t)dt)!!!!不是ωbnb
(下面对Cnb 微分,用的是ωbnb 有区别)
(2)Cnb(k-1) 是上一次更新好的值,已有。
(3)Cn(k)n(k-1) 导航系也是在运动的,地球动它也动,因为IMU的角度是相对于i系,所以一切相对于i系会动的东西,都要考虑进去。
要记得:ωnin = ωnie + ωnen , 就是计算Cn(k)n(k-1) 要用到的角速度。
5. 姿态叠加无意义
[Ψ(t),θ(t),γ(t)]T
不要试图对某时的欧拉角进行加减: [Ψ(t),θ(t),γ(t)]T + [Ψ(t+Δt),θ(t+Δt),γ(t+Δt)]T
这样做是无意义的 [Ψ(t+Δt),θ(t+Δt),γ(t+Δt)]T 只能通过变换,变为 [Ψ(t),θ(t),γ(t)]T
6. 小角度欧拉角旋转矩阵(非常重要)
[Ψ(t),θ(t),γ(t)]T 都是小角度时:
(1) [Ψ(t),θ(t),γ(t)]T 都是小角度,只会发生在b系在tk时,相对于b系在tk-1时,的欧拉角,也就是Cb(k-1)b(k) 用到的。在Cnb ,b相对于n的欧拉角不是小角度 !!
(2)sinΨ ≈ Ψ , 联想一下在sin函数在0处的斜率 k =1
(2)sinΨsinθ = Ψθ ≈ 0 ; 两个小等于0
(3)cosΨ ≈ 1
那么:
换句话说:
要注意的地方:
(1)要根据欧拉角旋转的顺序,定义Δθ向量的顺序。
(2)Δθ = [Δθx ,Δθy,Δθz] ,就是IMU在t = k时刻输出的角度增量。
7. 另一种方式求(CRb(t))', 方向余弦矩阵微分
(这里有误,应该是ωbRb (τ),要b系相对于R系的角速度)
8.
Ω (t) = ωbnb(t) x
注意:是b相对于n的角速度,因为下面要求的是Cnb
但是:如果IMU测得角速度(ωbib)又是绝对的,所以又有转换关系
接上:
Cnb(t+Δt) = Cnb(t) + ∫ C'(τ)dτ = Cnb(t) + ∫ C(τ) Ω (τ) dτ
加上【可交换条件( t ~ t +Δt 期间定轴旋转)】,得到:
Cnb(t+Δt) = Cnb(t) e[ΔθX]
那么,可以得知:
Cb(t)b(t+Δt) = e[ΔθX] ( 就好像是李代数,旋转矩阵C对应李代数Δθ)
对比:
Cb(t)b(t+Δt) ≈ I + ΔθX
更加准确
遗留的问题:
要求载体系b相对于导航系n
Cnb(t+Δt) = Cnb(t) e∫Ω (τ) dτ=Cnb(t)Cb(t)b(t+Δt)
Ω (τ) = ωbnb(t),b系相对于n系的角速度。
但是载体系b相对于惯性系i
Cib(t+Δt) = Cib(t) e∫Ω (τ) dτ= Cib(t)Cb(t)b(t+Δt)
Ω (τ) = ωbib(t),b系相对于i系的角速度。
问:IMU输出的是 Δθ = ∫ωbib(t)dτ ,不是Δθ = ∫ωbnb(t)dτ ,应该怎么办?
(1)Ci(t)b(t) = Ci(t)n(t)Cn(t)b(t)
(2)Cib(t+Δt) = Ci(t)b(t)Cb(t)b(t+Δt) , 这里用的是Δθ = ∫ωbib(t)dτ
(3)(1)代入(2)得到:
Cib(t+Δt) = Ci(t)n(t)Cn(t)b(t)Cb(t)b(t+Δt)
(4)作业两边,乘以 Cn(t+Δt) i(t+Δt) ,得到:
Cn(t+Δt) i(t+Δt)Cib(t+Δt) = Cn(t+Δt) i(t+Δt) Ci(t)n(t)Cn(t)b(t)Cb(t)b(t+Δt)
左边化简:
Cn(t+Δt) b(t+Δt) = Cn b(t+Δt) = Cn(t+Δt) i(t+Δt) Ci(t)n(t)Cn(t)b(t)Cb(t)b(t+Δt)
思考一个问题:
Ci(t+Δt) n(t+Δt) 与Ci(t) n(t+Δt) 有无区别?
应该是没有区别的,因为i是不动的,所以i在t和t+Δt 状态一样, 那么: Ci(t+Δt) n(t+Δt) = Ci(t) n(t+Δt) ,从而 Cn(t+Δt) i(t+Δt) = Cn(t+Δt) i(t)
因此:
Cn b(t+Δt) = Cn(t+Δt) i(t) Ci(t)n(t)Cn(t)b(t)Cb(t)b(t+Δt)
= Cn(t+Δt) n(t) Cn(t)b(t)Cb(t)b(t+Δt) , 这里用的是Δθ = ∫ωbib(t)dτ , 是IMU的输出
而:
Cn(t+Δt) n(t) = [ Cn(t)n(t+Δt) ]T
根据方向余弦矩阵微分的结论:
Cn(t)n(t+Δt) = e∫Ω (τ) dτ , Ω (τ) = ∫ωiindτ
ωiin 是 导航系相对于惯性系的角速度,根据【角速度叠加】法则:
ωnie + ωnen = ωnin
ωnen : 导航坐标系,相对于【地心地物坐标系】的角速度。(由载体的运动速度有关,可以计算)
ωnie :【地心地物坐标系】,相对于绝对静止的i系得角度。(由地球自转角速度、纬度有关,可以计算)