为啥移动控制器时偏航角消失?

Posted

技术标签:

【中文标题】为啥移动控制器时偏航角消失?【英文标题】:Why does yaw angle goes away when I move controller?为什么移动控制器时偏航角消失? 【发布时间】:2022-01-11 11:26:53 【问题描述】:

我的 PCB 上有一个MPU9250,我使用带有 Madgwick 滤波器的 AHRS 系统来获取偏航角。我从这里获取源代码:https://github.com/sonphambk/MPU9250/tree/master/Src 并在那里更改了MadgwickAHRSupdate 函数,正如有人在这里所说的:Madgwick sensor fusion on LSM9DS0。现在偏航角是相当准确的,但是有一个问题。当我移动我的 PCB 时,不旋转它,偏航角改变如下:

如果我不旋转 PCB,为什么偏航角会发生变化?我必须在我的代码中更改什么?

【问题讨论】:

【参考方案1】:

您必须记住,AHRS 是一个数学上超级复杂的问题。数据处理开始时的一个小错误可能会在以后的某个时候导致巨大的偏差。如果您确定提供的代码被其他人使用并且他们没有漂移,那么我建议检查传感器的原始数据流。如果 MPU9250 是从中国供应商或 Ebay 购买的,则很有可能它们无法使用。检查电压、输出信噪比、采样率一致性是必须的。

如果您认为硬件部分工作完美,请尝试卡尔曼滤波器或过滤输入数据。此外,环境条件可能会影响传感器读取 - 磁场、热量等。

附:不旋转地移动 PCB 并不像您想象的那样无辜。人的手不断地颤抖并产生噪音。

【讨论】:

感谢您的回答。我在 AHRS 之前使用了 IMU 系统,它按预期工作。我检查了每个传感器——陀螺仪、加速度计和磁力计,它们也按预期工作。 “P.S. 移动 PCB 不旋转并不像你想象的那么无辜。人的手不断地颤抖并产生噪音。” - 我将它移动到一个笔直且水平的表面上,所以它无法旋转。 “尝试卡尔曼滤波器” - 我找不到陀螺仪、加速度计和磁力计的卡尔曼滤波器 卡尔曼滤波器也没有帮助我。 github.com/suhetao/stm32f4_mpu9250 - 我从这里获取代码块并使用 miniAHRS.h 标头。结果是一样的,当我移动控制器时,偏航角消失了。 您能否提供原始加速度计和陀螺仪输出数据及时与错误率的关系图? 我知道是因为磁力计。在此处查看问题:electronics.stackexchange.com/questions/600577/…

以上是关于为啥移动控制器时偏航角消失?的主要内容,如果未能解决你的问题,请参考以下文章

无需校准即可计算偏航角

使用 CMQaternion 计算偏航角

OpenGL,俯仰强制偏航为0

自动驾驶汽车控制模块简介

为啥添加导航控制器会使我的数组消失?

倾斜补偿罗盘