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
mavlink stream -d /dev/ttyACM0 -s ATTITUDE_QUATERNION -r 100
可以看到 IMU 频率提高到了 100 HZ 左右,但是这在飞控下电后还原为 50 HZ,因此有以下两种方法可以开机自动设置为 想要的 IMU 频率。
在飞控的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
下载指定版本的 px4 源码
git clone -b v1.13.0 --recursive https://github.com/PX4/PX4-Autopilot.git
在PX4固件内的 mavlink_main.cpp 文件下,修改源码
然后编译自己飞控对应的 px4 固件,我这里是 Kakute H7
make holybro_kakuteh7_default
进入DFU模式,刷写 PX4 固件
make holybro_kakuteh7_default upload
最后会停在下面这个地方 Waiting for bootloader...
然后一直读取不到 bootloader,这里我没有管他,挂在后台,(注意一定要挂着,如果终止的话 QGroundControl 会无法识别飞控)然后打开 QGroundControl,点左上角的 Q 进入 Vehicle Setup,然后进入 Firmware 界面,接下来拔插 USB 连接线,右边会弹出一个窗口,然后选择自定义文件
~/PX4-Autopilot/build/holybro_kakuteh7_default/holybro_kakuteh7_default.bin
然后刷写固件,这样就将 PX4 固件刷写进 Kakute H7 中了。