1

给定三个角速度vx, vy,vz关于x,yz轴,以弧度每秒测量,从 IMU 的速率陀螺仪派生,我如何为一个样本和下一个样本之间的整个旋转产生等效的四元数,即旋转的积分dt当前样本和前一个样本之间的时间?

主要问题是这三个角速度是相互独立测量的,但旋转不是可交换的。这意味着在积分期间应用角速度的顺序将影响计算的四元数,就像将欧拉角转换为四元数会根据应用欧拉旋转的顺序产生不同的四元数(例如x,然后y,然后z,与其他一些顺序)。

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

但是,当提出相关问题时,我看到很多对四元数导数的引用,我想知道是否可以将角速度(欧拉角的导数)直接转换为四元数导数(尽管可能会受到轴排序的影响灵敏度),然后以某种方式整合四元数导数以转换回四元数跨越时间dt

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

4

1 回答 1

0

我在Ashwin Narayan的这篇出色的文章中找到了答案。

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

更新(2):用户harold指出了这个答案,它在 C++ 代码中显示了相同的四元数求幂,这比 rowan 中的 NumPy 代码更易读。

于 2019-10-31T01:19:48.993 回答