## 核心更新 ### 1. 决策节点 (rm_decision) - 新增决策节点作为系统核心控制器 - 整合视觉自瞄控制(云台)和运动控制(底盘) - 50Hz控制频率,实时决策 - 订阅: /data_mcu, /data_ref, /vision/aim, /nav_status, /cmd_vel_move - 发布: /data_ai (综合控制), /nav_goal (导航目标) ### 2. 消息系统重构 - 新增 DataAim.msg - 视觉自瞄控制(仅云台) - 新增 ChassisMode.msg - 底盘模式定义 - 新增 GimbalState.msg - 云台状态数据 - 修改 DataAI.msg - 综合控制指令(云台+底盘) ### 3. 视觉系统 ROS2 集成 - 创建 GimbalROS 适配器,替代直接串口通信 - 订阅 /data_mcu 获取云台状态 - 发布 /vision/aim 输出云台控制指令 - 修改所有视觉任务文件使用 ROS2 接口 ### 4. 视觉系统标准化 (rm_vision_bringup) - 添加 package.xml 使 rm_vision 成为标准 ROS2 包 - 创建 sentry_vision.launch.py - Sentry 专用启动 - 创建 calibration.launch.py - 统一标定工具 - 支持参数化启动不同类型的视觉程序 ### 5. 数据流架构 MCU ↔ Serial Driver → Vision/Decision → Simple Move → Nav2 ## 启动方式改进 之前: cd build/mr_vision && ./standard_mpc configs/standard4.yaml 现在: ros2 launch rm_vision_bringup sentry_vision.launch.py ## 文档更新 - 完善 README.md,添加完整系统架构图 - 新增 CHANGELOG.md 记录更新历史 - 添加详细的启动流程和标定工具说明 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
8.5 KiB
8.5 KiB
完整启动流程文档
系统架构
┌─────────────────┐
│ rm_vision │ 视觉节点
│ (GimbalROS) │
└────────┬────────┘
│ /gimbal/vision (DataAI)
│ 云台控制指令
↓
┌─────────────────┐
│ rm_serial_driver│ 串口驱动
└────────┬────────┘
│ 串口
↓
┌─────────────────┐
│ MCU │ 下位机
└─────────────────┘
↑
│ /data_mcu (DataMCU)
│ 云台状态反馈
│
┌─────────────────┐
│ rm_simple_move │ 导航节点
└─────────────────┘
│ /cmd_vel_move (Twist)
│ 底盘控制指令
↓
┌─────────────────┐
│ rm_serial_driver│
└─────────────────┘
话题映射表
| 话题 | 类型 | 方向 | 说明 |
|---|---|---|---|
/data_mcu |
rm_msgs/DataMCU |
MCU → 上位机 | 云台状态(姿态、弹速等) |
/data_ref |
rm_msgs/DataRef |
MCU → 上位机 | 裁判系统数据 |
/gimbal/vision |
rm_msgs/DataAI |
视觉 → MCU | 视觉云台控制指令 |
/cmd_vel_move |
geometry_msgs/Twist |
导航 → MCU | 底盘运动控制指令 |
/nav_goal |
rm_msgs/NavGoal |
决策 → 导航 | 导航目标点 |
/nav_status |
rm_msgs/NavStatus |
导航 → 决策 | 导航状态反馈 |
/current_pose |
geometry_msgs/PoseStamped |
导航 → 决策 | 当前位置 |
完整启动流程
步骤 1: 编译所有包
cd ~/MOVE_AI
# 编译消息包
colcon build --packages-select rm_msgs
# 编译串口驱动
colcon build --packages-select rm_serial_driver
# 编译导航节点
colcon build --packages-select rm_simpal_move
# 编译视觉(如果需要)
colcon build --packages-select mr_vision
# 加载环境
source install/setup.bash
步骤 2: 启动串口驱动(核心节点)
终端 1:启动 rm_serial_driver
source install/setup.bash
ros2 run rm_serial_driver rm_serial_driver --ros-args \
-p device_name:=/dev/ttyACM0 \
-p baud_rate:=115200
预期输出:
========================================
RM Serial Driver 启动中...
设备: /dev/ttyACM0
波特率: 115200
========================================
话题配置:
发布: /data_mcu (MCU状态)
发布: /data_ref (裁判系统)
订阅: /gimbal/vision (视觉控制)
订阅: /cmd_vel_move (导航控制)
✓ 串口打开成功
RM Serial Driver 启动完成!
故障排查:
# 如果串口打开失败,检查设备
ls -l /dev/ttyACM*
ls -l /dev/ttyUSB*
# 添加串口权限
sudo usermod -a -G dialout $USER
# 重新登录生效
# 或临时授权
sudo chmod 666 /dev/ttyACM0
步骤 3: 验证串口通信
终端 2:查看 MCU 数据
source install/setup.bash
ros2 topic echo /data_mcu
预期输出:
mode: 0
q0: 1.0
q1: 0.0
q2: 0.0
q3: 0.0
yaw: 0.0
yaw_vel: 0.0
pitch: 0.0
pitch_vel: 0.0
bullet_speed: 15.0
bullet_count: 0
---
如果能看到数据,说明串口通信正常!
步骤 4: 启动导航节点(可选)
终端 3:启动 rm_simple_move
source install/setup.bash
ros2 launch rm_simpal_move simple_move.launch.py
预期输出:
[rm_simple_move]: 话题配置:
[rm_simple_move]: 输入: /nav_goal
[rm_simple_move]: 输出: /cmd_vel_move (统一输出)
[rm_simple_move]: PID模式: 直接计算发布到 /cmd_vel_move
[rm_simple_move]: NAV模式: Action /navigate_to_pose → 导航 → /cmd_vel → 转发到 /cmd_vel_move
[rm_simple_move]: 状态: /nav_status, /current_pose
[rm_simple_move]: RMSimpleMove 启动
步骤 5: 启动视觉节点(如果需要)
终端 4:启动视觉
source install/setup.bash
# 方式 1: 使用已修复的 standard_mpc
./build/mr_vision/standard_mpc configs/standard.yaml
# 方式 2: 使用其他视觉节点(需要先修复)
# ./build/mr_vision/balance_infantry_mpc configs/balance_infantry.yaml
预期输出:
[GimbalROS] Initialized with ROS2 topics
[GimbalROS] Subscribe: /data_mcu
[GimbalROS] Publish: /gimbal/vision
[GimbalROS] Waiting for first quaternion...
[GimbalROS] First q received.
测试流程
测试 1: 验证话题连接
# 查看所有话题
ros2 topic list
# 应该看到:
# /data_mcu
# /data_ref
# /gimbal/vision
# /cmd_vel_move
# /nav_goal
# /nav_status
# /current_pose
# 查看话题信息
ros2 topic info /gimbal/vision
ros2 topic info /data_mcu
测试 2: 测试导航功能
# PID 模式导航到 (2, 2)
ros2 topic pub /nav_goal rm_msgs/msg/NavGoal "{
mode: 0,
target_x: 2.0,
target_y: 2.0,
target_angle: 0.0,
max_speed: 1.0,
tolerance: 0.2
}" --once
# 查看导航状态
ros2 topic echo /nav_status
# 查看底盘控制指令
ros2 topic echo /cmd_vel_move
测试 3: 测试视觉控制(如果视觉节点运行)
# 查看视觉发送的云台控制指令
ros2 topic echo /gimbal/vision
# 应该看到:
# mode: 0/1/2
# yaw: ...
# pitch: ...
# vx, vy, wz: ...
最小启动配置
如果只需要测试串口通信和导航:
# 终端 1: 串口驱动
ros2 run rm_serial_driver rm_serial_driver
# 终端 2: 导航节点
ros2 launch rm_simpal_move simple_move.launch.py
# 终端 3: 发送导航目标
ros2 topic pub /nav_goal rm_msgs/msg/NavGoal "{mode: 0, target_x: 1.0, target_y: 1.0, target_angle: 0.0, max_speed: 1.0, tolerance: 0.2}" --once
完整启动配置(包含视觉)
# 终端 1: 串口驱动
ros2 run rm_serial_driver rm_serial_driver
# 终端 2: 导航节点
ros2 launch rm_simpal_move simple_move.launch.py
# 终端 3: 视觉节点
./build/mr_vision/standard_mpc configs/standard.yaml
# 终端 4: 监控(可选)
ros2 topic echo /data_mcu
启动脚本
创建一个启动脚本 start_all.sh:
#!/bin/bash
# 启动所有节点
cd ~/MOVE_AI
source install/setup.bash
# 启动串口驱动(后台)
gnome-terminal -- bash -c "source install/setup.bash && ros2 run rm_serial_driver rm_serial_driver; exec bash"
# 等待串口驱动启动
sleep 2
# 启动导航节点(后台)
gnome-terminal -- bash -c "source install/setup.bash && ros2 launch rm_simpal_move simple_move.launch.py; exec bash"
# 等待导航节点启动
sleep 2
# 启动视觉节点(如果需要)
# gnome-terminal -- bash -c "source install/setup.bash && ./build/mr_vision/standard_mpc configs/standard.yaml; exec bash"
echo "所有节点已启动!"
echo "使用 'ros2 topic list' 查看话题"
echo "使用 'ros2 topic echo /data_mcu' 查看 MCU 数据"
使用方法:
chmod +x start_all.sh
./start_all.sh
关闭流程
# 方式 1: 在每个终端按 Ctrl+C
# 方式 2: 使用脚本关闭所有节点
pkill -f rm_serial_driver
pkill -f rm_simple_move
pkill -f standard_mpc
常见问题
Q1: 串口打开失败
# 检查设备
ls -l /dev/ttyACM*
# 添加权限
sudo usermod -a -G dialout $USER
# 重新登录
# 或临时授权
sudo chmod 666 /dev/ttyACM0
Q2: 收不到 /data_mcu 数据
- 检查串口连接是否正常
- 检查 MCU 是否正常运行
- 检查波特率是否匹配(默认 115200)
Q3: 视觉节点等待四元数超时
- 确保
rm_serial_driver已启动 - 确保 MCU 正在发送数据
- 检查
/data_mcu话题是否有数据
Q4: 导航不动
- 检查
/cmd_vel_move是否有数据 - 检查
rm_serial_driver是否订阅了/cmd_vel_move - 检查 TF 变换是否正常
调试工具
# 查看所有节点
ros2 node list
# 查看所有话题
ros2 topic list
# 查看话题频率
ros2 topic hz /data_mcu
# 查看话题信息
ros2 topic info /gimbal/vision
# 录制数据
ros2 bag record -a
# 查看 TF 树
ros2 run tf2_tools view_frames
性能监控
# 查看节点资源占用
top -p $(pgrep -f rm_serial_driver)
# 查看话题带宽
ros2 topic bw /data_mcu
# 查看话题延迟
ros2 topic delay /data_mcu
下一步
- ✅ 串口驱动正常运行
- ✅ 导航节点正常运行
- ⏳ 修复剩余的视觉节点文件
- ⏳ 测试完整的视觉+导航+串口流程
文档
- 使用指南:
GIMBAL_ROS_GUIDE.md - 迁移状态:
ROS2_MIGRATION_STATUS.md - 本文档:
COMPLETE_STARTUP_GUIDE.md