提高mavros中IMU话题的发布频率


在上位机上很多时候都需要用到无人机的IMU信息,我用的飞控硬件是Pixhawk 4,感觉IMU还算比较好的,但是mavros实际发送的IMU频率只有50HZ,对于vins来说这个频率有点低了。
mavros中的IMU话题有两个,一个原始数据,另外一个是飞控计算过后的IMU数据。下面介绍两种方法来提高两个IMU话题的发布频率。

提高波特率

提高发布频率过后数据的传送量一下变的大起来了,首先需要提高波特率。
我使用的PX4固件版本为1.90,这个版本和以前的1.82变化还是挺大的。更改参数SER_TEL2_BAUD设置和上位机接的串口波特率。我使用的是串口二。
飞控这边设置好了过后在mavros启动的时候注意波特率的输入,对于1500000mavros会报错的问题,我之前的博客提到了解决办法。

提高方法

命令行方式

mavros可以对飞控发送mavlink消息从而实现发布频率的更改。
启动mavros过后,输入下面的命令就可以更改相应的频率。

原始IMU数据

下面我们rostopic hz来前后对比一下IMU的频率。

rostopic hz /mavros/imu/data_raw

这个时候我们可以发现发布频率为50hz。
接下来新开一个终端输入下面命令。

rosrun mavros mavcmd long 511 105 10000 0 0 0 0 0

我们再次用rostopic hz查看频率发现频率提高到了100hz。
如果想要提到更高的频率只需要减小10000这个参数,这个就是设置时间间隔的现在间隔为10000us所以是100hz。

飞控计算过后的IMU数据

对于飞控计算过后的IMU数据类似的,不过命令不太一样。

rosrun mavros mavcmd long 511 31 10000 0 0 0 0 0

下面我们rostopic hz来看一下IMU的频率是否真的提高了

rostopic hz /mavros/imu/data

此时实际频率到达了100hz。

总结

虽然通过这种方式简单,之后也可以加入launch文件,但是还是比较麻烦,下面通过设置开机启动文件的方式来解决这个问题。

更改启动文件

先把飞控的内存卡取出来,用读卡器插上,然后在根目录下面建立一个etc的目录,然后在目录下面新建一个extras.txt的文件。
然后把下面些内容复制进去保存退出过后,给飞控上电,之后测试频率就OK。

mavlink stream -d /dev/ttyS2 -s ATTITUDE_QUATERNION -r 100
mavlink stream -d /dev/ttyS2 -s HIGHRES_IMU -r 100

这个具体的原理就是配置PX4的开机启动文件,通过设置mavlink发布的速率达到更改mavrosIMU发布频率的目的。
里面的-d 选项后面的是指的mavlink的端口,我用的串口2所以是/dev/ttyS2 ,如果是串口1就是/dev/ttyS1,如果是USB连接的就是 /dev/ttyACM0-s是发布的消息,-r自然就是发布的速率了。
mavros话题 /mavros/imu/data_raw对应的是HIGHRES_IMU。
mavros话题 /mavros/imu/data对应的是ATTITUDE_QUATERNION。
这个命令可以直接在mavlink控制台里面输入,测试没问题了过后再写在SD卡里面。

发布了63 篇原创文章 · 获赞 50 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_38649880/article/details/89419736
IMU