跳转至

46. 多机编队与 Qt 控制界面

46.1 学习目标

让多台机器人和 Qt Application Framework(Qt)界面接入既有 ROS 2 系统,不产生节点重名、话题串车或重复速度发布。Qt 用于构建桌面图形界面;本章把它当作 ROS 2 客户端使用。

图形界面框架可以显示机器人状态并通过 ROS 2 接口发送目标,但界面程序仍是普通 ROS 2 客户端,不能代替底盘驱动和安全控制器。

46.2 适用范围

ROS 2 多机器人编队与 Qt 控制界面。不同车型的编队接口和控制包需要分别核对。

46.3 操作前检查

  • 单车底盘和网络分别通过。
  • 每台机器有唯一名称、IP、命名空间和配置记录。
  • 急停和单车停止命令不依赖编队节点。

46.4 工作原理

多机系统可以共享网络,但每台机器的状态和命令要有明确归属。逻辑标识符(Logical Identifier, ID)用于在配置和界面中区分机器人;命名空间给节点和话题加前缀;Domain ID可以把不同 ROS 2 通信域分开。Qt 客户端只订阅反馈并发布经过限制的目标,不再启动一套底盘驱动,也不把界面按钮状态当成机器人真实状态。

46.5 操作步骤

  1. 为每台机器人分配固定逻辑 ID 和命名空间。
  2. 检查节点、话题、TF frame 和参数是否带唯一前缀。
  3. 逐台上线,只验证状态订阅,不先发编队命令。
  4. 启动 Qt 后用 ros2 topic info --verbose 核对发布者和订阅者。
  5. 使用低速单车选择测试,确认不会控制错误机器人。
  6. 再运行编队,记录网络延迟、丢包和掉队处理。
  7. 关闭界面或编队节点,确认各底盘停止或回到安全模式。

46.6 验收标准

  • 节点、话题和 TF 无跨车冲突。
  • Qt 显示来自机器人反馈,而非本地假定。
  • 选择单车时其他机器人不响应。
  • 网络中断和上层退出后底盘安全停止。

46.7 故障排查

现象 检查
多车互相串话题 命名空间、绝对话题名和 remap
TF 树混在一起 frame 前缀和 robot_state_publisher
Qt 显示正常但车不动 发布话题、QoS、控制优先级和底盘订阅
掉线后继续走 命令超时和失联策略

代码资源边界

教材源码仓库没有与本章绑定的多机 Qt 控制工程;本章只给出命名空间、反馈与失联安全边界。

章节导航

上一章:仿真与 Gazebo · 返回本篇 · 下一章:毫米波雷达、人体跟踪与深度学习