MicoAir H743 飞控 uXRCE‑DDS 客户端配置笔记

张开发
2026/6/8 21:04:30 15 分钟阅读
MicoAir H743 飞控 uXRCE‑DDS 客户端配置笔记
1. 编译与烧录 Bootloader1.1 编译 BootloadercdPX4-Autopilotmakemicoair_h743_bootloader生成文件位于build/micoair_h743_bootloader/主要文件micoair_h743_bootloader.bin– 用于 DFU 烧录1.2 烧录 Bootloader使用 dfu‑util安装 dfu‑utilUbuntusudoaptinstalldfu-util使飞控进入 DFU 模式按住飞控上的BOOT按钮同时插入 USB 线保持 2 秒后松开。确认设备dfu-util-l应显示类似Found DFU: [0483:df11]的信息。烧录 Bootloadersudodfu-util-d0483:df11-a0-s0x08000000:leave-Dbuild/micoair_h743_bootloader/micoair_h743_bootloader.bin注意若出现Invalid DFU suffix signature警告可忽略若提示多个设备用-d 0483:df11指定 VID/PID。验证烧录完成后拔掉 USB重新上电不再按 BOOT用 QGroundControl 检查能否连接。2. 修改固件以添加自定义 uXRCE‑DDS 话题2.1 编辑dds_topics.yaml文件路径PX4-Autopilot/src/modules/uxrce_dds_client/dds_topics.yaml在publications:段中添加或修改话题。例如添加input_rcpublications:-topic:/fmu/out/input_rctype:px4_msgs::msg::InputRc# ... 其他已有话题缩进要求使用两个空格不可用 Tab。2.2 编译主固件makemicoair_h743_default生成文件build/micoair_h743_default/micoair_h743_default.px42.3 烧录主固件方法一QGroundControl推荐打开 QGC →应用设置→固件。用 USB 连接飞控不要按 BOOTQGC 会自动检测。点击“自定义固件文件…”选择编译好的.px4文件。点击“烧录”等待完成。方法二dfu‑util高级sudodfu-util-d0483:df11-a0-s0x08020000:leave-Dbuild/micoair_h743_default/micoair_h743_default.px4偏移地址0x08020000是常见 Bootloader 预留空间不同飞控可能不同。若无法启动请改用 QGC。3. 修改 uXRCE‑DDS 客户端的默认 QoS 策略一般不需要修改因为消息尺寸不匹配通常由px4_msgs版本不一致引起。若确有需求例如强制所有话题使用RELIABLE可修改源码3.1 修改dds_client.h文件PX4-Autopilot/src/modules/uxrce_dds_client/dds_client.h找到类似以下定义的位置具体变量名可能随版本变化// 示例默认可靠性策略staticconstexpruint8_tUXRCE_DDS_DEFAULT_RELIABILITYUXR_RELIABILITY_BEST_EFFORT;改为UXR_RELIABILITY_RELIABLE即可。3.2 重新编译并烧录固件makemicoair_h743_default# 然后按 2.3 节烧录风险提示修改全局 QoS 可能增加网络负载仅在充分理解后使用。4. NSH 调试常用命令通过串口如/dev/ttyACM0波特率 57600或 USB 虚拟串口进入 NuttX Shell。命令说明help列出所有命令listener topic [-n N]监听 uORB 主题-n指定打印次数uorb top实时显示所有 uORB 主题的发布频率param show param查看参数值param set param value设置参数param save保存参数到存储dmesg显示内核日志可用于查看 uXRCE‑DDS 创建 writer 的信息uxrce_dds_client start serial -d /dev/ttyS3 -b 921600手动启动 uXRCE‑DDS 客户端TELEM3 端口uxrce_dds_client stop停止客户端mavlink status查看 MAVLink 实例占用的串口mavlink stop-all停止所有 MAVLink 实例释放串口典型调试流程检查input_rc是否内部发布listener input_rc若显示never published说明 RC 硬件/协议未配置。查看 uXRCE‑DDS 是否成功创建 data writerdmesg|grepinput_rc手动启动客户端若未自动启动uxrce_dds_client stop uxrce_dds_client start serial-d/dev/ttyS3-b9216005. 机载电脑连接 uXRCE‑DDS Agent5.1 安装 Micro‑XRCE‑Agentsudoaptinstallros-ros2-distro-micro-xrce-dds-agent# 例如 Humble: ros-humble-micro-xrce-dds-agent5.2 启动 Agent串口方式假设飞控 TELEM3 通过 USB‑TTL 转接板连接到机载电脑的/dev/ttyUSB0sudo-EMicroXRCEAgent serial--dev/dev/ttyUSB0-b921600-d166参数说明serial– 串口传输--dev /dev/ttyUSB0– 实际设备节点可用ls /dev/ttyUSB*确认-b 921600– 波特率必须与飞控端一致-d 166– DDS 域 ID应与飞控参数UXRCE_DDS_DOM_ID相同默认 0 或 166使用sudo -E保留当前用户环境变量如 ROS_DOMAIN_ID。5.3 验证连接Agent 启动后应显示[info] [client] ...日志并在飞控 NSH 中看到connected信息。6. QGC 中配置 uXRCE‑DDS 相关参数虽然 uXRCE‑DDS 客户端通常由启动脚本自动运行但可通过 QGC 修改关键参数连接飞控进入参数页面。搜索以下参数并修改参数作用推荐值UXRCE_DDS_CFG通信接口101TELEM1, 102TELEM2, 103TELEM3103对应 /dev/ttyS3SER_TEL3_BAUDTELEM3 波特率921600UXRCE_DDS_DOM_IDDDS 域 ID166与 Agent 的-d一致UXRCE_DDS_NSROS 2 命名空间留空或/修改后点击保存飞控重启后生效。7. 解决常见问题7.1ros2 topic echo无数据但topic info显示有发布者原因QoS 不匹配或消息定义版本不一致。解决ros2 topicecho--qos-reliability best_effort /fmu/out/input_rc并确保px4_msgs版本与飞控固件匹配cd~/workspace/ws_sim/src/px4_msgsgitcheckout release/1.17# 或 v1.17.0cd~/workspace/ws_sim colcon build --packages-select px4_msgssourceinstall/setup.bash7.2 飞控报ERROR [uxrce_dds_client] Missing device原因未正确设置UXRCE_DDS_CFG或串口被占用。解决paramsetUXRCE_DDS_CFG103# TELEM3param save mavlink stop-all# 释放串口uxrce_dds_client start serial-d/dev/ttyS3-b9216007.3listener input_rc显示never published原因RC 接收机未连接或协议参数错误。解决paramsetRC_INPUT_PROTO2# SBUS 协议param savereboot7.4ros2 topic hz报Change payload size ... larger than history payload size原因px4_msgs消息定义与飞控固件不匹配。解决按 7.1 节同步px4_msgs版本。8. 附录完整工作流示例编译 Bootloader首次或更新 Bootloader 时makemicoair_h743_bootloadersudodfu-util-d0483:df11-a0-s0x08000000:leave-Dbuild/micoair_h743_bootloader/micoair_h743_bootloader.bin修改话题列表编辑src/modules/uxrce_dds_client/dds_topics.yaml添加input_rc。编译主固件makemicoair_h743_default烧录主固件通过 QGC。配置飞控参数QGC 或 NSHparamsetUXRCE_DDS_CFG103paramsetSER_TEL3_BAUD921600paramsetUXRCE_DDS_DOM_ID166param savereboot启动 Agent机载电脑sudo-EMicroXRCEAgent serial--dev/dev/ttyUSB0-b921600-d166验证ros2 topic list|grepinput_rc ros2 topicecho--qos-reliability best_effort /fmu/out/input_rc文档版本基于 PX4 v1.16.0 及 MicoAir H743 硬件编写不同飞控或 PX4 版本可能需要调整串口设备及参数。

更多文章