请输入
菜单

PX4 Mavros Topic 消息频率修改

【视频教程】PX4 MAVROS Topic 消息频率修改 提高飞控IMU数据输出频率

方法一:在线指令修改 Mavros Topic 消息频率

1. 连接飞控

通过USB连接MicoAir743飞控至电脑

2. 查看 Mavros Topic 消息频率

QGroundControl -> Analyze Tools -> MAVLink 检测

3. 输入Mavros Topic 消息频率修改指令

切换到QGroundControl -> Analyze Tools -> MAVLink 控制台 ,输入以下指令:

C 复制代码
mavlink stream -d /dev/ttyACM0 -s HIGHRES_IMU -r 100
  • ttyACM0 表示 USB

  • HIGHRES_IMU 表示指定修改频率的 Mavros Topic

  • 100 表示 指定发送频率;

  • 代码表示设置 HIGHRES_IMU 发送到 USB 口的数据频率为 100Hz

4. 验证修改后 Mavros Topic 消息频率

注意:

  • 飞控串口硬件序号参考飞控说明文档(如,MicoAir743 Telem1 为 ttyS0;NxtPX4 Telem1 为 ttyS0

  • 如果使用串口,该串口模式需设置为 Onboard

  • 发送频率同时受飞控硬件条件和数据链路带宽限制,实际频率不一定能达到设定值

  • 使用方法一在飞控重启后会恢复成默认速率,需要重新设置

  • 设置指令要求指定端口已启动,未启动端口会导致该指令执行失败

方法二:TF 卡离线设置 Mavros Topic 消息频率

1. 在飞控 TF 卡下添加文件

根目录下创建 /etc/extras.txt,编辑加入以下内容:

C 复制代码
mavlink start -d /dev/ttyACM0 -b 921600
mavlink stream -d /dev/ttyACM0 -s HIGHRES_IMU -r 200

2. 将 TF 卡插回飞控

飞控启动后会执行一次该文件里的指令

3. 验证是否生效

QGroundControl -> Analyze Tools -> MAVLink 检测

可以看到,设置已经生效,但实际上由于飞控硬件条件限制, HIGHRES_IMU 数据发送频率只有 185Hz 左右;在实际使用中,应该把数据频率控制在能够达到的合适范围

注意:

  • 飞控上电后,USB 口只有接入电脑或机载电脑后才启动,飞控先启动再接入 USB 口,将导致在执行该文件时指令执行失败,设置发送频率不成功;

  • 飞控上电后,串口 (配置过参数的)无论是否接入设备会直接启动,并执行该指令;

方法三:修改源码预设 Mavros Topic 发送频率

MicoAir743 及 NxtPX4v2 飞控板配置文件已合并到 PX4-Autopilot 官方仓库,可自定义修改并编译固件

1. 下载源码并搭建编译环境

参考 PX4-Autppilot 官方教程:https://docs.px4.io/main/en/development/development.html

2. 修改代码

修改 /src/modules/mavlink 文件目录下 mavlink_main.cpp 文件

  • 使用 串口 获取 Mavros Topic 数据修改 MAVLINK_MODE_ONBOARD 下的设置,找到对应的 Mavros Topic,后面对应的数字为预设发送频率
  • 使用 USB 获取 Mavros Topic 数据修改 MAVLINK_MODE_CONFIG 下的设置,找到对应的 Mavros Topic,后面对应的数字为预设发送频率

3. 编译指定固件

编译MicoAir743飞控的PX4固件

C 复制代码
make micoair_h743_default

编译NxtPX4v2飞控的PX4固件

C 复制代码
make hkust_nxt-dual_default

4. 使用 QGroundControl 重新烧录固件

5. 修改 HIGHRES_IMUXXXHz 并验证

在代码中修改为了150Hz并在QGC中验证

上一个
INAV飞控常见问题
下一个
Ardupilot/PX4/INAV/Betaflight设置飞控方向
最近修改: 2025-05-07Powered by