QGroundControl 连接上飞控后,打开 Analyze Tools 下的 MAVLink Inspector 界面
可以看到当前的 IMU 频率为50 HZ,或者在终端启动 mavros,终端输入
sudo chmod 777 /dev/ttyACM0
roslaunch mavros px4.launch
然后查看频率
rostopic hz /mavros/imu/data_raw
可以看到终端输出
可以看到 IMU 频率收敛到 50HZ 左右。
在QGC的 MAVLink Console 中执行命令:
mavlink stream -d /dev/ttyACM0 -s HIGHRES_IMU -r 100
可以看到 IMU 频率提高到了 100 HZ 左右,但是这在飞控下电后还原为 50 HZ,因此有以下两种方法可以开机自动设置为 想要的 IMU 频率。
方法一:修改 SD 卡(适用于有 SD 的飞控,如果没有 SD 卡则用方法二)
在飞控的sd卡的根目录下创建`/etc/extras.txt`,写入
mavlink start -d /dev/ttyACM0 -b 921600
mavlink stream -d /dev/ttyACM0 -s ATTITUDE_QUATERNION -r 200
mavlink stream -d /dev/ttyACM0 -s HIGHRES_IMU -r 200
将 SD 卡重新插入飞控,然后查看飞控 IMU 频率
可以看到 IMU 频率提高到了 173 HZ 左右, 没有到 200 HZ 是因为我的飞控最高只能到 173 HZ。
这个具体的原理就是配置PX4的开机启动文件,通过设置 MAVLink 发布的速率达到更改 mavros IMU发布频率的目的。
mavros话题 /mavros/imu/data_raw
对应的是 HIGHRES_IMU
。
mavros话题 /mavros/imu/data
对应的是 ATTITUDE_QUATERNION