磁力计动态校准
我正在研究作为IMU一部分的磁力计AK8975。这对我来说似乎很棘手。该芯片提供3D向量作为输出,描述地球上任何地方或附近的地球磁场。 我尝试了两种航向计算算法:一种很简单arctan(-y/x),另一种是倾斜(俯仰)和倾斜(横滚)抵消的数学运算,如下所述。倾斜度和倾斜度都给出错误的输出。 当旋转地球时,使用两个算法中的任何一个,我都能获得正确的航向(使用简单的可用开放学习资源),使地球保持水平。 我尝试校准软铁和硬铁错误。我可以用3D绘制它并显示一个完美的3D球体。仍然不适用于倾斜或偏角。 任何指针都会有所帮助。 代码及其实现如下: void Compass_Heading() { double MAG_X; double MAG_Y; double cos_roll; double sin_roll; double cos_pitch; double sin_pitch; cos_roll = cos(roll); sin_roll = sin(roll); cos_pitch = cos(pitch); sin_pitch = sin(pitch); //// Tilt compensated Magnetic filed X: MAG_X = magnetom_x*cos_pitch + magnetom_y*sin_roll*sin_pitch + magnetom_z*cos_roll*sin_pitch; //// Tilt compensated Magnetic …