组合导航ESKF关键知识点:姿态计算&观测校正

文章详细阐述了姿态计算的不同方法,包括在ESKF(扩展卡尔曼滤波)中使用等效旋转矢量进行propagation和update过程,以及在observation过程中如何利用四元数或姿态阵计算姿态误差。校正阶段则涉及四元数的乘法运算来调整姿态。文章还探讨了四种不同的观测与校正配合方式,确保姿态量的正确更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.姿态计算

方法: 等效旋转矢量为小量时才可以使用加减法;四元数和姿态阵采用乘法; 欧拉角只有物理意义不直接用于计算。
ESKF中状态量的建立使用等效旋转矢量;ESKF 的prediction和update过程使用等效旋转矢量做运算;

1.1 progation过程姿态变化量采用等效旋转矢量计算

因为短时间内姿态变化量是小量,可以与陀螺转动积分的结果,在delta_t小段时间内做代数运算。以初始时刻姿态为基准,求出姿态变化量等效旋转矢量,转化为姿态变化量四元数,求出新时刻姿态先验值。
ϕ k + 1 = θ k + 1 + 1 12 θ k × θ k + 1 Δ q k + 1 k = r o t a t e V e c t o r 2 q u a t e r n i o n ( ϕ k ) q k + 1 n a v _ p r i o r = q k ∗ Δ q k + 1 k \phi_{k+1}=\theta_{k+1}+\frac{1}{12}\theta_{k}\times\theta_{k+1} \newline \Delta{q^k_{k+1}} = rotateVector2quaternion(\phi_k) \newline q^{nav}_{k+1}\_prior = q_{k}*\Delta{q^k_{k+1}} ϕk+1=θk+1+121θk×θk+1Δqk+1k=rotateVector2quaternion(ϕk)qk+1nav_prior=qkΔqk+1k

1.2 observation过程姿态的误差量使用四元数或者姿态阵计算

因为观测的姿态和递推出来的姿态都是大量,不可以直接转为等效旋转矢量做加减法。采用四元数或者等效旋转阵相乘求出姿态误差量以后才能转化为姿态误差量等效旋转矢量。
Δ q = q k + 1 _ o b s n a v ∗ i n v e r s e ( q k + 1 n a v _ p r i o r ) ϕ k + 1 _ o b s = q u a t e r n i o n d 2 r o t a t i o n V e c t o r ( Δ q ) \Delta{q} = q^{nav}_{k+1\_obs}*inverse(q^{nav}_{k+1}\_prior) \newline \phi_{k+1}\_{obs}=quaterniond2rotationVector(\Delta{q}) Δq=qk+1_obsnavinverse(qk+1nav_prior)ϕk+1_obs=quaterniond2rotationVector(Δq)

1.3 ESKF prediction和updation全用等效旋转矢量运算

ϕ k + 1 _ p o s t \phi_{k+1}\_{post} ϕk+1_post

1.4correction过程姿态的校正采用四元数或者姿态阵计算

Δ q _ p o s t = r o t a t e V e c t o r 2 q u a t e r n i o n ( ϕ k _ p o s t ) q k + 1 = Δ q _ p o s t ∗ q k + 1 n a v _ p r i o r \Delta{q} \_{post}= rotateVector2quaternion(\phi_k\_{post}) \newline q_{k+1} = \Delta{q\_{post}} * q^{nav}_{k+1}\_{prior} Δq_post=rotateVector2quaternion(ϕk_post)qk+1=Δq_postqk+1nav_prior

2.观测与校正配合

观测误差姿态量的构建与最后校正的形式密切相关,但是记住一个原则就不会错:令增益系数K=1是,按照公式得出的姿态量应该等于 q k + 1 n a v _ o b s q^{nav}_{k+1}\_{obs} qk+1nav_obs
当增益系数为1时,可以看做如下公式成立。
Δ q _ p o s t = Δ q \Delta{q}\_{post} = \Delta{q} Δq_post=Δq
以下四种情况,就可以凑出姿态的观测量。

2.1 观测与校正配合1

Δ q = q k + 1 _ o b s n a v ∗ i n v e r s e ( q k + 1 n a v _ p r i o r ) q k + 1 = Δ q _ p o s t ∗ q k + 1 _ p r i o r \Delta{q} = q^{nav}_{k+1\_obs}*inverse(q^{nav}_{k+1}\_prior) \newline q_{k+1} = \Delta{q\_{post}} * q_{k+1}\_{prior} Δq=qk+1_obsnavinverse(qk+1nav_prior)qk+1=Δq_postqk+1_prior

2.2观测与校正配合2

Δ q = i n v e r s e ( q k + 1 _ o b s n a v ) ∗ q k + 1 n a v _ p r i o r q k + 1 = q k + 1 _ p r i o r ∗ i n v e r s e ( Δ q _ p o s t ) \Delta{q} = inverse(q^{nav}_{k+1\_obs})*q^{nav}_{k+1}\_prior \newline q_{k+1} = q_{k+1}\_{prior}*inverse(\Delta{q\_{post}}) Δq=inverse(qk+1_obsnav)qk+1nav_priorqk+1=qk+1_priorinverse(Δq_post)

2.3 观测与校正配合3

Δ q = q k + 1 n a v _ p r i o r ∗ i n v e r s e ( q k + 1 _ o b s n a v ) q k + 1 = i n v e r s e ( Δ q _ p o s t ) ∗ q k + 1 _ p r i o r \Delta{q} = q^{nav}_{k+1}\_prior*inverse(q^{nav}_{k+1\_obs}) \newline q_{k+1} = inverse(\Delta{q\_{post}}) * q_{k+1}\_{prior} Δq=qk+1nav_priorinverse(qk+1_obsnav)qk+1=inverse(Δq_post)qk+1_prior

2.4 观测与校正配合4

Δ q = i n v e r s e ( q k + 1 n a v _ p r i o r ) ∗ q k + 1 _ o b s n a v q k + 1 = q k + 1 _ p r i o r ∗ Δ q _ p o s t \Delta{q} = inverse(q^{nav}_{k+1}\_prior)*q^{nav}_{k+1\_obs} \newline q_{k+1} = q_{k+1}\_{prior} * \Delta{q\_{post}} Δq=inverse(qk+1nav_prior)qk+1_obsnavqk+1=qk+1_priorΔq_post

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值