不知道群里的老铁们是否经常疑问,如何查看pixhawk里面的磁罗盘使用的是哪个呢?像PIXHAWK2有三个磁罗盘,那到底那一个是主要的罗盘呢?
我们可以在Mission Planner里面的全部参数列表,看到关于所有罗盘的ID如下图:
那么如何解码这些数字呢?
其实,在ardupilot的代码里面存有一个python的脚本,叫做decode_devid.py, 就是专门来做这事儿的。这个脚本存在主程序 ardupilot/Tools/scripts/ 的目录下,使用时,只需要使用python IDE运行这个脚本, 并给出你要查询的ID的数字号码,就可以自动显示出该磁罗盘的型号,以及使用的信号是什么。该脚本在这里可以直接拿到:https://github.com/ArduPilot/ard ... pts/decode_devid.py
比如说,我是用的是ubuntu系统,下载了ardupilot主飞控代码之后,使用系统命令终端terminal进入到ardupilot文件夹里,并输入以下指令:
ardupilot $ ./Tools/scripts/decode_devid.py 723977 -C
按下回车,就会得到答案:
bus_type:I2C(1) bus:1 address:12 devtype:11(0xb) DEVTYPE_ICM20948
啊,原来我的一号罗盘,也就是我的外置罗盘,使用的是ICM20948原件,走的是I2C总线。
继续发掘另外的两个ID,出现的结果用截屏显示:
所以结果就揭晓了:另外两个pixhawk2内置的磁罗盘,一个是LSM303D,另外一个是AK8963,走的都是SPI总线。一开始看到这个答案我有些纳闷,根据官方资料,pixhawk2里面没有AK8963啊,只有LSM和MPU9250。结果仔细一研究MPU的资料,原来MPU9250里面的磁罗盘就是一个AK8963,真相大白。
希望对大家有帮助,手边有pixhawk或者pixhawk2的小伙伴,也可以拿来看看你的飞控磁罗盘是啥了~
|
|