我正在使用这个设备(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
有人能检查一下这是否正确吗?我不确定,因为在测试时,我在旋转我的传感器板时得到了一些高加速度,但是我能够获得一些加速度数据(但比旋转时的访问小得多),如果设备不旋转而移动的话。
此外,我有一个问题,加速度计是否也测量加速度,如果它是旋转的地方或不!
发布于 2014-08-15 13:02:07
另一种方法是区分accel (使用有限差分,j= (a2 - a1) / dt)。运行一个衰减/泄漏函数(使用半衰期衰减计算值,而不是简单的乘数)。然后,积分该反射器(梯形规则,a= dt * (j1 + j2) * 0.5),它将消除直流偏移量(重力)。再一次通过衰减函数运行这个信号。
衰减函数避免了数值的螺旋下降,但会减少你所看到的动态加速度值的大小,并将对信号进行一些整形。因此,您将不会得到“精确的”m/s/s读数。但它对短时运动是有用的。
当然,你可以用高通滤波器代替,但这通常需要一个固定的采样率,如果你使用卷积(有限脉冲响应滤波器),那么计算成本可能会更高。
发布于 2012-07-24 10:22:33
这比你想象中要简单。你可能想看看我在这里的帖子:http://www.varesano.net/blog/fabio/simple-gravity-compensation-9-dom-imus
https://stackoverflow.com/questions/10801951
复制相似问题