如何执行陀螺仪数据的离散积分?

时间:2011-01-11 11:33:25

标签: c++ c robotics sensor tilt-sensor

陀螺仪测量角度旋转速度时产生的角度是否合适? 我的问题是我该怎么做?我到目前为止所做的只是添加我检测到的所有角度,这似乎是非常错误的

AngleIntegrated = GyroDegPersec * (1/GyroBandWidth);

建议非常受欢迎。感谢

3 个答案:

答案 0 :(得分:2)

您需要将与时间进行整合。理想情况下,您应该以常规(固定)时间间隔T对陀螺仪进行采样,然后将该采样间隔T纳入您的积分计算中。

请注意,T必须小到足以满足奈奎斯特准则。

答案 1 :(得分:1)

您可以在离散域中集成。假设角速率是da,它的时间积分是a。 k是离散步数。

a(k) = a(k-1) + T*0.5*(da(k) + da(k-1))

例如,da(k)是当前角速率读数。 da(k-1)是预先的角速率读数。 a(k-1)是前一步的积分值(旋转角度)。 T是采样率。如果传感器每1毫秒输出一次,则T变为0.001。

当k> 0时,您可以使用此公式。必须给出初始值a(0)。

答案 2 :(得分:0)

当然知道你不能指望从长远来看具有正确的值(通过积分,你的错误窗口将随着时间的推移而增加)我会做的是读取陀螺仪,插入当前读取和前几个读取获得平滑的曲线(例如使用当前读数和前两个的抛物线),然后从上次读取时间和当前时间计算该抛物线的积分。