4

我正在使用这个设备 ( 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

有人可以检查这是否正确吗?我不确定,因为在测试它时,我在旋转传感器板时获得了一些高加速度,但如果设备在不旋转的情况下移动,我可以获得一些加速度数据(但比旋转期间的加速度小得多)。

此外,我有一个问题,如果加速度计是否在原地旋转,它是否也在测量加速度!

4

2 回答 2

3

另一种方法是区分加速度以给出加加速度(使用有限差分,j = (a2 - a1) / dt)。通过衰减/泄漏函数运行 jerk(使用半衰期衰减计算值而不是简单的乘数)。然后整合 jerk(梯形规则,a = dt * (j1 + j2) * 0.5),它将消除 DC 偏移(重力)。再次通过衰减函数运行此信号。
衰减函数可避免值螺旋式下降,但会降低您看到的动态加速度值的幅度,并将对信号引入一些整形。因此,您将不再获得“准确”的 m/s/s 读数值。但它对于短时运动很有用。

当然,您可以只使用高通滤波器,但这通常需要固定的采样率,并且如果您使用卷积(有限脉冲响应滤波器),计算成本可能更高。

于 2014-08-15T13:02:07.347 回答
2

这比你想象的要容易。你可能想看看我的帖子: http ://www.varesano.net/blog/fabio/simple-gravity-compensation-9-dom-imus

于 2012-07-24T10:22:33.023 回答