我正在使用这个设备 ( http://www.sparkfun.com/products/10724 ) 并且已经成功地实现了一个非常好的工作方向估计,该估计基于基于这个http://www 的磁力计、加速度计和陀螺仪数据的融合。 x-io.co.uk/node/8#open_source_imu_and_ahrs_algorithms实现。现在我想计算动态加速度(测量没有静态重力加速度的加速度)。为此,我想到了以下想法。
计算原始加速度计数据的运行平均值。如果原始加速度在一段时间内保持稳定(运行平均值和当前测量的原始数据之间的差异很小),我们假设设备没有移动并且我们正在测量原始重力。现在将重力矢量和当前方向保存为四元数。这种方法假设我们的设备在没有重力的情况下无法持续加速。
为了计算没有重力的加速度,我现在正在执行以下四元数计算:
RA = Quaternion with current x,y,z raw acceleration values
GA = Quaternion with x,y,z raw acceleration values of estimated gravity
CO = Quaternion of current orientation
GO = saved gravity orientation
DQ = GO^-1 * CO // difference of orientation between last gravity estimation and current orientation
DQ = DQ^-1 // get the inverse of the difference
SQ = DQ * GA * DQ^1 // rotate gravity vector
DA = RA - SQ // get the dynamic acceleration by subtracting the rotated gravity from the raw acceleration
有人可以检查这是否正确吗?我不确定,因为在测试它时,我在旋转传感器板时获得了一些高加速度,但如果设备在不旋转的情况下移动,我可以获得一些加速度数据(但比旋转期间的加速度小得多)。
此外,我有一个问题,如果加速度计是否在原地旋转,它是否也在测量加速度!