使用陀螺仪,一般来说主要是为了获得稳定的姿态角。姿态角里面,一般分为三种类型:横滚角,偏航角,俯仰角。 这里先科普一下基本概念,三种姿态角,字面意思上就是:如果物体是一辆小车的话,俯仰角就是对应车头的抬起和下降,现实里面的状态就是上坡和下坡。横滚角就是车辆翻滚,现实里面状态就是车辆翻车。而偏航角就是车辆转向的角度,对应现实里面车辆的转弯操作。
而陀螺仪一般有分为六轴和九轴,这里的六轴就是指陀螺仪的三个方向(xyz)和加速度计的三个方向。一般所称呼的陀螺仪其实是指的这些集合体。而九轴则是多了磁力计的三个方向。 这里面,唯一需要注意的就是六轴陀螺仪姿态角中,偏航角必然会飘。但是九轴陀螺仪的磁力计会受到磁场波动干扰(电机)。那么如果想要获得不被电机所干扰的稳定偏航角应该怎么做呢?答案就是换一个精度高一些的陀螺仪。 这里,我经过市面上的比对,发现这款BNO085芯片。自身精度就很高,完全可以用来获得稳定的偏航角。 而且,因为精度较高,其他的变量也可以用来做精细的调整和感知。因为这个陀螺仪本身的噪声就比较小,属于车规级的芯片。 下面就介绍一下如何读取这个芯片。这个芯片拥有自己的一套私有协议。可以运行在SPI,IIC和UART上,因为这个芯片本身的输出速率并不需要那么快。所以这里使用IIC进行读取。 不过这个芯片因为需要连续多次的传输信息,且在数据位中定义了传输方向,所以相较于普通的IIC寄存器方式通讯,少了发送寄存器地址以及读操作时的重新START功能。 这里使用的IIC读写都是经过更改的,读取寄存器部分是从官方的arduino例程中移植的,经过测试可以使用。
|