说明(中文)
这个仓库包含一个教学/演示用的 ROS2(Humble)系统,展示了一个小型 pipeline:
robot_solver:预测并“开火”(可配置为随机延迟、运行时开启/关闭)并发布模拟命中/robot_solver/hit。robot_sensor:接收命中信号,发布传感器观测,并在收到Collect动作期间暂停或在完成后停止发布。robot_tracker:卡尔曼滤波跟踪器,发布robot_tracker/target,在目标静止时发起Collect动作(或响应命中后等待静止再发起)。robot_controller:实现Collectaction server,发布robot_controller/collect_started与robot_controller/collect_done。robot_interfaces:消息/服务/动作定义(msg/Target.msg,msg/RobotState.msg,action/Collect.action等)。robot_bringup:bringup launch 文件,便于启动整套系统(包括可视化节点)。
快速开始(开发机上)
先安装依赖并确保使用 ROS2 Humble 环境:
# 进入工作区
cd ~/rv
# 如果还没安装,确保已安装 ROS2 Humble
# source ROS2 环境(替换为你系统的路径)
source /opt/ros/humble/setup.bash
# 构建整个工作区(第一次建议全量构建)
colcon build
# 构建完成后 source 安装空间
source install/setup.bash启动整套演示(带 RViz 可视化):
# 在工作区根目录
ros2 launch robot_bringup bringup.launch.py常用单包构建 / 调试
# 仅构建 tracker
colcon build --packages-select robot_tracker
# 仅构建 solver
colcon build --packages-select robot_solver
# 构建完成后别忘了
source install/setup.bash控制与交互
- 运行时可以通过 topic
/robot_solver/enable_fire(类型std_msgs/Bool)控制 solver 是否允许开火。仓库中有一个用于 RViz 的交互式按钮脚本robot_tracker/scripts/viz_markers.py,它会在 RViz 中创建InteractiveMarker(话题名/fire_toggle/...),点击按钮会往这个 topic 发布 true/false,从而开启或关闭开火行为。 robot_controller会在回收开始时发布robot_controller/collect_started,完成时发布robot_controller/collect_done。robot_sensor和robot_tracker会订阅这些话题来暂停或恢复行为。
重要文件与位置
src/robot_solver/:solver 节点代码与参数src/robot_sensor/:模拟传感器节点src/robot_tracker/:跟踪与可视化脚本(scripts/viz_markers.py)src/robot_controller/:Collect action serversrc/robot_interfaces/:消息 / 动作 / 服务定义src/robot_bringup/launch/bringup.launch.py:顶层 bringup 启动文件
ros2 node list | grep viz
ps aux | egrep 'viz_markers.py|rviz' --color=auto pkill -f viz_markers.py
ros2 launch robot_bringup bringup.launch.py