我正在尝试实现一个卡尔曼滤波器,使用三轴加速度计和三轴陀螺仪作为传感器来获取物体的方向。
选择用于预测阶段动态模型很简单,它是:
new_angle = angle + angular_velocity * time
new_angular_velocity = angular_velocity
但是我手头没有浮点支持,而且我需要每个精度位来模拟角度。因此,我的计划是将角度表示为32位整数数据,表示完整的2 pi
旋转为2^32个小步骤。
因此,整数溢出可以自动处理包裹(2 pi
与0
方向相同)。
但是这也给过滤器带来了问题:如果估计的角度为359°
,而我的测量值为0°
,则过滤器会假设有一个巨大的创新,导致不确定性和奇怪的值。
有没有办法让过滤器意识到这种可能的包裹?在上述情况下只给出1°
的创新?
为了规避这个问题,我考虑使用角度差而不是角度,但我找不到合适的模型。