修改PX4飞控的 IMU 频率

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 卡(适用于有 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

方法二:修改固件源码然后重新烧写固件(适用于没有 SD 卡槽的飞控)

下载指定版本的 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 中了。

猜你喜欢

转载自blog.csdn.net/qq_44998513/article/details/132683878
IMU