我正在尝试使用 GPS 和陀螺仪推断车辆的方位。
为此,我首先使用陀螺仪读数和车辆的(已知)偏航轴获得偏航分量,然后随着时间的推移整合结果并将其添加到之前的轴承。
我已经实现了以下内容的实时可视化:
- 车辆偏航轴方向
- 陀螺仪报告的旋转矢量的方向
- 原始 GPS 方位
- 外推轴承
大约有一半的时间效果很好:外推的方位在车辆转弯时平稳移动,并且 GPS(更新一秒后)几乎完美地与它对齐。另一半时间,陀螺仪似乎受到偏差的影响,导致外推轴承即使在车辆静止时也会漂移。
可视化显示陀螺仪旋转矢量随机改变方向,只要我没有遇到偏差问题并且车辆没有转动(表明我从陀螺仪得到接近白噪声的东西,这就是我'会期望)。当偏差问题发生时,陀螺仪方向保持不变,证实了我的怀疑,我患有偏差。
基于车辆在同一方向上转向的时间不会超过 1 到 4 分钟的假设,并且观察到偏差以更长的时间间隔(几分钟)来来去去,我尝试使用高通滤波器来消除偏差。我使用了 5 阶巴特沃斯滤波器。
初始截止频率为(对应 4 分钟的周期),当我将设备旋转 90° 时,一旦旋转停止,轴承就会向相反的方向漂移。然后我从那里开始向下工作:在(半小时)效果仍然可见,但要弱得多,并且在(一小时)它几乎消失了。
真实世界的测试,然而,仍然导致随机偏差,比我在原始值中所经历的还要大.
然后我尝试将频率增加到并注意到我可能患有过冲,因为轴承现在反弹并在旧轴承和新轴承之间的某个值附近振荡。
然后我又回到了原来的并试验了滤波器阶数和特性:首先我尝试了一个一阶巴特沃斯滤波器,然后是一个五阶贝塞尔滤波器——但无济于事。
这里的错误在哪里,我如何在不引入任何其他甚至更不理想的工件的情况下消除偏见?