将IMU角速度精确转换为四元数

问题描述 投票:0回答:1

给定关于vxvyvz轴的三个角速度xyz,以每秒弧度为单位,从IMU的速率陀螺仪得出,我如何产生一个样本与下一个样本之间的整个旋转的等价四元数,即当前样本与先前样本之间的时间上的旋转积分dt

主要问题是这三个角速度是相互独立地测量的,但旋转不是可交换的。这意味着在积分过程中施加角速度的顺序会影响计算的四元数,就像将Euler角转换为四元数会根据Euler旋转的施加顺序产生不同的四元数一样(例如x,然后y,然后是z,再加上其他顺序)。

[我认为正确的做法是将时间步长dt分成多个较短的时间段样本,例如例如N=10,然后将每个速度除以该数字,得到vx' = vx/Nvy' = vy/Nvz' = vz/N,然后以最大到最小的顺序以旋转方式应用旋转N次,以计算实际旋转在每种情况下都超过间隔dt/N,并将其累积到最终旋转四元数中。

不过,在询问相关问题时,我看到了很多有关四元数导数的参考文献,我想知道是否有可能将角速度(欧拉角的导数)直接转换为四元数导数(同样,虽然可能遭受轴有序灵敏度),然后以某种方式积分四元数导数以转换回四元数跨越时间dt

似乎应该有一个“正确”的方法来执行此操作,因为每个使用速率陀螺仪的​​IMU都必须解决此问题。任何对此的见解将不胜感激!

computational-geometry quaternions euler-angles imu
1个回答
0
投票

我在Ashwin Narayan的this excellent post中找到了答案。

更新(1):rowan library在Python中实现必要的四元数求幂。

© www.soinside.com 2019 - 2024. All rights reserved.