从IMU的原始加速度计数据中去除重力-->请批准数学和算法

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

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

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

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

accelerometer sensors gravity
2个回答
4
投票

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

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


0
投票

正如您上面提到的,我使用了四元数方法,但我得到了 IMU 没有移动的原始加速度值,当我们将这些值与 GPS 进行比较时,我得到了不同的经度和纬度值,任何人请重播此问题。

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