我们知道,对于运动,我们都要为其设立一个参考系,因为运动都是相对的,陀螺仪输出了值,这个值是相对与谁呢??我们在地球上,相对参考系当然是地面。假如我们在动车上做实验,陀螺仪输出的值是相对与谁呢??当然是动车!!!! 那为什么是动车呢?那我就告诉你,因为开机陀螺仪初始化的时候陀螺仪是相对火车静止的,故开机对谁静止,陀螺仪输出的值就是相对于谁的运动速率。 回到主题,DMP自检时刻保存了开机时的陀螺仪速率,其实就是让陀螺仪检测到的速率去除开机时刻的速率,自然得到了陀螺仪与开机时刻参考系的相对速率,也就是我们需要的有效值。这也就是抑制温漂的原理。 再来看看加速度重心的校准程序,与陀螺仪一样,均是修正相对参考系的速率和位置。但是加速度传感器不一样,只要传感器不动,其重力加速度方向是不变的,默认的是-Y是重力加速的的正方向。如果在模块非水平情况下进行了重力校准,那么-Y就不是重力方向了,为了得到无论模块处于什么状态是都需要—y是重力的正方向,我们就有这样的一个高大上的办法。那就是“不要对重力进行校准”。 改掉源代码就是在使用accel_sens前加一行: accel_sens=0;使其重力校准失效!!!即可!!!