组合导航原理(四)——等效旋转向量

在t ~ t+Δt时间内,必须定轴旋转的解决思路:

(1)如果传感器带来的误差 > 不可交换性带来的误差,可以直接默认可交换性条件成立。

(2)提高采样率,使得Δt足够小,小到旋转轴来不及变化

 

IMU 输出的是  Δθ =  [ Δθx, Δθy, Δθz ] T , Δθ 是在t +  Δt 相对于时刻的 三轴角增量

问题1:如果使用方向余弦矩阵 Cb(t)b(t + Δt) 如何决定先绕哪个轴,后绕哪个轴来计算?

 

 (不同的绕法,有不同的结果)

当t与 t + Δt 时间内,Δθ = [Δθx, Δθy, Δθz]T足够小,有: 

 

 也就是:

 当t与 t + Δt 时间内,Δθ = [Δθx, Δθy, Δθz]T足够小,C = I + Δθ X

Δθ = [Δθx, Δθy, Δθz]T 

* 顺序依然是 [滚转roll(Φ),俯仰pitch(θ),偏航yaw(Ψ)]

* 那么是不是安装的时候,x轴要沿着航向的方向放置???

 

说明:

 

 这是使用【可交换性条件】下,使用角增量进行姿态更新。

 

  这是使用【等效旋转向量】下,使用角增量进行姿态更新。

虽然都长得差不多,但是ϕm是经过数学推导,考虑了【可交换性条件】不成立的情况的。

 

 

等效旋转矢量ϕ

如果找到b系,在( t ~ t + Δt)的等效旋转矢量ϕ, 其转角|| ϕ || 依然是微小量,但是不同于:

Cb(t)b(t+Δt)≈ I + ΔθX ,  

效旋转矢量ϕ 是严格数学推导的,最终可以用于:

Cb(t)b(t+Δt) = I + sin|| ϕ || *μX + (1-cos|| ϕ || )(μX)²

μ = ϕ / || ϕ || 

或者:

qb(t)b(t+Δt) = cos(|| ϕ || / 2) + ϕ / || ϕ || *sin(|| ϕ || / 2) 

 最后,可以用:

Cb(t+Δt) = Cb(t) Cb(t)b(t+Δt)

 

总体思路:

(1)对ϕ 进行微分(求导),得到ϕ‘

(2)对ϕ‘ 进行积分,得到ϕ

 

等效旋转向量微分

 b 系和 R 系相对姿态对应的四元数记作 qRb ,可写作如下三角函数形式:

 

为书写方便我们将省略四元数 qRb的上下标,简写为 q,角速度向量 ωbRb 简写 为 ω,等效旋转矢量 ϕRb 简写为 ϕ。

将上述四元数记作

(1)q = f1 + f2ϕ 

(2)f1 ≡ cos (ϕ / 2)

(3)f2 ≡ 1 / ϕ * sin(ϕ / 2)

 

回顾一下:

q' = 1 / 2 q ◦ ω

* 虽然qb(t)b(t+Δt)  = [ 1, 1 / 2 Δθ ],Δθ 是发生在 t ~ t+Δt,但是对Δθ微分后,就不用一定是在t ~ t+Δt的角速度了。

* ω = [0 , ωbRb,x bRb,y bRb,z ] T

q' = 1 /2 f1 * ω + 1 / 2 * f* ϕ ◦ ω

又:

pv ◦ qv = (0 + p1i + p2j + p3k) ◦ (0 + q1i + q2j + q3k)

= −(p1q1 + p2q2 + p3q3) + (p2q3 − p3q2)i + (p3q1 − p1q3)j + (p1q2 − p2q1)k

= −pvTqv + pv X  qv

q' = 1 / 2 * f1 * ω + 1 / 2 * f2 ( ϕ × ω − ϕTω )

对q = f1 + f2ϕ  求导:

(1)q' = f1' + f2'ϕ + f2ϕ'

(2)f1' = − 1/2 * sin(ϕ / 2) * ϕ' = [ 1 / ϕ * sin(ϕ / 2) ] *ϕ * -1/2   ϕ' = -1/2 * f2*ϕϕ'

(3)f2' = 1 / 2 cos (ϕ / 2) * ϕ' / ϕ  − sin (ϕ / 2) * ϕ' / ϕ²  = ϕ' / ϕ * (1 / 2 * f1 - f2 )

q' = -  1 / 2 * ϕϕ'f2  + ϕ'/ ϕ (1/2f1 - f2) ϕ + f2ϕ'

两个式子相等,整理得:

 ϕ' = 1 / 2 * f1 / f2 * ω  + 1 / 2 * (ϕ x ω) - ϕ'/ ϕ * (1 / 2 * f1 / f2 - 1) ϕ + 1 / 2 *  ϕ ϕ' - 1 /2 * ϕTω

 

因为 ϕ' 还是一个向量,但是1 / 2 *  ϕ ϕ' - 1 /2 * ϕTω 是标量,因此:

1 / 2 *  ϕ ϕ' - 1 /2 * ϕTω = 0

ϕ' /  ϕ =  1 /(ϕ²)*ϕTω 代入:

ϕ' = 1 / 2 * f1 / f2 * ω   + 1 / 2 (ϕ × ω) − 1 / ϕ² (1/ 2* f1/ f2 − 1 )(ϕTω)ϕ

三重矢积公式 

 (ϕ Tω)ϕ

= ϕ × (ϕ × ω) + ϕ Tϕω

= ϕ × (ϕ × ω)+ ϕ² ω

ϕ˙ = ω + 1 /2 (ϕ × ω) + 1/ ϕ² ( 1 − 1 /2 * f1 /f2 ) ϕ × (ϕ × ω)

将f1、f2回代,得到:

 ϕ' = ω + 1 /2 (ϕ × ω) + 1 /ϕ² [ 1 −  ϕ* sin* ϕ / 2(1 − cos ϕ)  ] ϕ x( ϕ x ω)

在 上一节中,有:

(1)在绕旋转单位向量μ,旋转小角度Φ, [ Δθx,Δθy,Δθz]T 也是小值的时候

Φ*μ = Δθ。 C ≈ I + Φ*μ X = I + ΔθX

(2)换句话说,Δθ = [ Δθx,Δθy,Δθz]T 是旋转向量 μ,模长为Φ = ||Δθ|| 。

(3) Φ = ||Δθ||  ,Φ就是绕μ旋转的角度。

(4)最后可以写为:||Δθ||*μ =Δθ ,μ = Δθ / ||Δθ||

所以,在转角 || ϕ || 很小的时候,旋转向量可以认为是 ϕ = [ Δθx,Δθy,Δθz]T

ϕ‘ = [ ωx,ωy,ωz] = ω,这么说,角速度也是一个向量

而上式,相当于给ϕ‘ =ω 加了改正项

 

 

等效旋转向量积分

 

 注意,因为 b在T = tk-1时刻,对比b在T = t 时还没发生旋转,所以  ϕ( tk-1) = 0

 

因此,不要忘记了,下面所计算的,是b在  tk-1  ~ tk时刻的等效旋转矢量:

 Δθ(t) 也就是IMU在 T = t时的输出

那么,上式等号右侧依然有ϕ(t),所以要按照迭代积分:

 

 因为在(tk-1,tk)内,ϕ(t) 分量都是微小值,因此,上式:

 

ϕtt-Δt  = Δθ(t) +  1 / 2 * ∫t-Δt t Δθ(τ) X ω(τ) dτ

 (对比一下,非常眼熟!)

tk-1 =  t - Δt

 

如何使用等效旋转向量步骤:

(1)假设( t - Δt, t ) 之间的角速度函数 ω(τ) = ω0 、 ω(τ) = a + b(t - tk-1)  ... 等等

(可以让时间归零,让时间 t∈[0, t - tk-1])

(2)求得Δθ (τ) t-Δt t ω(τ) dτ  函数表达式,注意 Δθ (τ) 是表达式,不需要求得其结果

(3)代入ϕtt-Δt =  Δθ(t) +  1 / 2 *t-Δt t Δθ(τ) X ω(τ) dτ , 算的其结果

 

总体思路

(1)IMU输出的是t时刻,相对于上一时刻的角速度增量,Δθ(t) = [Δθx,Δθy,Δθz] T

(2)利用Δθ(tk-2)、Δθ(tk-1)、Δθ(t) , 模拟出在 t ∈ [tk-1, t] 时刻的角速度ω(τ)

(3)使用ω(τ)的函数对Δθ(t)添加修正量

(4)计算旋转向量或四元素

 

 


 

单子样: (tk-1,tk),或(t - Δt, t)时间内,ω(τ)  = ω0

ϕtt-Δt =  Δθ(t) +  1 / 2 *t-Δt t Δθ(τ) X ω(τ) dτ

 Δθ (τ) t-Δt t ω0 dτ = Δt ω0

回代

ϕtt-Δt = Δθ(t)  +  1 / 2 *tt-Δt  Δθ(τ) X ω(τ) dτ

      = Δθ(t)  +1 / 2 * ∫t t+Δt Δt ω0 X ω0  dτ

      = Δθ(t) 

 因为ω0 X ω0 = 0 结果相当于对IMU的输出,没有添加任何改正,就作为ϕtt-Δt 

 

双字样

 

 

 

 

 

posted on 2023-02-18 10:27  耀礼士多德  阅读(102)  评论(0编辑  收藏  举报