Go to file
2026-03-11 08:36:21 +08:00
.github 改simple move 2026-03-11 08:36:21 +08:00
src 改simple move 2026-03-11 08:36:21 +08:00
.gitignore 移除视觉部分,单独使用rm_vision 2026-03-07 23:32:55 +08:00
CHANGELOG.md feat: 重构系统架构,添加决策节点和ROS2视觉集成 2026-03-05 15:47:25 +08:00
COMPLETE_STARTUP_GUIDE.md feat: 重构系统架构,添加决策节点和ROS2视觉集成 2026-03-05 15:47:25 +08:00
mapping.sh add 完整形态地图 2026-03-10 22:21:53 +08:00
nav.sh 改simple move 2026-03-11 08:36:21 +08:00
README.md feat: 重构系统架构,添加决策节点和ROS2视觉集成 2026-03-05 15:47:25 +08:00

MOVE_AI

青岛理工大学 QUT MOVE 战队 RoboMaster 比赛上位机代码仓库

支持步兵/英雄/无人机、哨兵、雷达等兵种,集成导航、自瞄、决策等功能。


📋 目录


🏗️ 系统架构

┌─────────────────────────────────────────────────────────────────┐
│                          下位机 (MCU)                            │
│                    (STM32 + 电机 + IMU + 传感器)                 │
└────────────────────────────┬────────────────────────────────────┘
                             │ 串口通信
                             ↓
┌─────────────────────────────────────────────────────────────────┐
│                    rm_serial_driver (串口驱动)                   │
│  ┌──────────────────────────────────────────────────────────┐  │
│  │ 发布: /data_mcu (MCU状态)                                 │  │
│  │       /data_ref (裁判系统数据)                            │  │
│  │       /gimbal/state (云台状态)                            │  │
│  │ 订阅: /data_ai (综合控制指令)                             │  │
│  └──────────────────────────────────────────────────────────┘  │
└───────┬─────────────────────────────────────────────┬───────────┘
        │                                             │
        ↓                                             ↓
┌──────────────────┐                         ┌──────────────────┐
│   rm_vision      │                         │  rm_decision     │
│   (视觉系统)      │                         │  (决策节点)       │
├──────────────────┤                         ├──────────────────┤
│ 订阅:             │                         │ 订阅:             │
│ /gimbal/state    │                         │ /data_mcu        │
│                  │                         │ /data_ref        │
│ 发布:             │                         │ /vision/aim      │
│ /vision/aim ─────┼─────────────────────────→ /nav_status      │
│ (云台控制)        │                         │ /cmd_vel_move    │
└──────────────────┘                         │                  │
                                             │ 发布:             │
┌──────────────────┐                         │ /data_ai ────────┼──┐
│  rm_simple_move  │                         │ /nav_goal        │  │
│  (运动控制)       │                         └────────┬─────────┘  │
├──────────────────┤                                  │            │
│ 订阅:             │                                  │            │
│ /nav_goal ←──────┼──────────────────────────────────┘            │
│                  │                                               │
│ 发布:             │                                               │
│ /cmd_vel_move ───┼───────────────────────────────────────────────┘
│ /nav_status      │
└────────┬─────────┘
         │
         ↓
┌──────────────────┐
│   Nav2 Stack     │
│   (导航系统)      │
├──────────────────┤
│ - 路径规划        │
│ - 避障            │
│ - 定位            │
└──────────────────┘

🔧 功能模块

1. rm_serial_driver - 串口驱动

  • 与下位机 MCU 进行串口通信
  • 接收 MCU 状态、裁判系统数据、云台状态
  • 发送综合控制指令到 MCU

2. rm_vision - 视觉系统

  • 自瞄识别与跟踪
  • 能量机关识别
  • 输出云台控制指令yaw/pitch 角度、速度、加速度)

3. rm_simple_move - 运动控制

  • PID 模式:直接速度控制
  • NAV 模式:调用 Nav2 进行路径规划和导航
  • 输出底盘速度指令

4. rm_decision - 决策节点(核心控制器)

  • 整合视觉自瞄控制(云台)
  • 整合运动控制指令(底盘)
  • 根据裁判系统、导航状态做决策
  • 输出统一的 /data_ai 控制指令

5. Nav2 - 导航系统

  • 全局路径规划
  • 局部避障
  • SLAM 定位

🚀 快速开始

环境要求

  • Ubuntu 22.04
  • ROS 2 Humble
  • C++17

编译

cd /home/robofish/MOVE_AI
colcon build --symlink-install
source install/setup.bash

📡 启动流程

方式一:分步启动(推荐调试)

1 启动串口驱动

ros2 launch rm_serial_driver serial_driver.launch.py

2 启动导航系统

ros2 launch rm_nav_bringup nav.launch.py

3 启动视觉系统

Sentry 哨兵(推荐):

ros2 launch rm_vision_bringup sentry_vision.launch.py

其他机器人类型:

# 标准步兵
ros2 launch rm_vision_bringup vision.launch.py vision_type:=standard_mpc

# 平衡步兵
ros2 launch rm_vision_bringup vision.launch.py vision_type:=balance_infantry_mpc

# 自瞄调试模式
ros2 launch rm_vision_bringup vision.launch.py vision_type:=auto_aim_debug_mpc

# 能量机关调试
ros2 launch rm_vision_bringup vision.launch.py vision_type:=auto_buff_debug_mpc

# 自定义配置文件
ros2 launch rm_vision_bringup vision.launch.py config:=sentry.yaml

4 启动决策节点

ros2 launch rm_decision decision.launch.py

方式二:一键启动(待实现)

ros2 launch rm_bringup full_system.launch.py

🎯 标定工具

视觉系统提供了完整的标定工具链:

相机标定

# 1. 采集标定图像(按 's' 保存,'q' 退出)
ros2 launch rm_vision_bringup calibration.launch.py calibration_type:=capture

# 2. 标定相机内参
ros2 launch rm_vision_bringup calibration.launch.py calibration_type:=calibrate_camera

# 3. 手眼标定
ros2 launch rm_vision_bringup calibration.launch.py calibration_type:=calibrate_handeye

# 4. 机器人-世界手眼标定
ros2 launch rm_vision_bringup calibration.launch.py calibration_type:=calibrate_robotworld_handeye

# 5. 视频分割工具
ros2 launch rm_vision_bringup calibration.launch.py calibration_type:=split_video

自定义参数:

# 指定配置文件和输出目录
ros2 launch rm_vision_bringup calibration.launch.py \
  calibration_type:=capture \
  config:=calibration.yaml \
  output_folder:=my_calibration_data

📊 话题接口

核心话题

话题名称 消息类型 发布者 订阅者 说明
/data_mcu rm_msgs/DataMCU serial_driver decision MCU 状态数据
/data_ref rm_msgs/DataRef serial_driver decision 裁判系统数据
/gimbal/state rm_msgs/GimbalState serial_driver vision 云台状态(姿态、速度)
/vision/aim rm_msgs/DataAim vision decision 视觉自瞄控制(仅云台)
/nav_goal rm_msgs/NavGoal decision simple_move 导航目标
/nav_status rm_msgs/NavStatus simple_move decision 导航状态反馈
/cmd_vel_move geometry_msgs/Twist simple_move decision 底盘速度指令
/data_ai rm_msgs/DataAI decision serial_driver 综合控制指令(云台+底盘)

数据流向

视觉控制流:
MCU → /gimbal/state → Vision → /vision/aim → Decision → /data_ai → MCU

底盘控制流:
Decision → /nav_goal → SimpleMove → /cmd_vel_move → Decision → /data_ai → MCU

导航反馈流:
SimpleMove → /nav_status → Decision

🧪 测试命令

查看话题列表

ros2 topic list

监控关键话题

# 查看决策输出
ros2 topic echo /data_ai

# 查看底盘速度
ros2 topic echo /cmd_vel_move

# 查看视觉自瞄
ros2 topic echo /vision/aim

# 查看导航状态
ros2 topic echo /nav_status

发送导航目标

NAV 模式(路径规划)

ros2 topic pub --once /nav_goal rm_msgs/msg/NavGoal \
  "{mode: 1, target_x: 4.0, target_y: -4.0, target_angle: 0.0, max_speed: 1.0, tolerance: 0.1}"

PID 模式(直接控制)

ros2 topic pub --once /nav_goal rm_msgs/msg/NavGoal \
  "{mode: 0, target_x: 1.0, target_y: 0.5, target_angle: 0.0, max_speed: 0.5, tolerance: 0.05}"

可视化

# 启动 RViz 查看导航
rviz2 -d $(ros2 pkg prefix rm_bringup)/share/rm_bringup/rviz/nav.rviz

# 查看 TF 树
ros2 run tf2_tools view_frames

📝 消息定义

DataAim视觉自瞄 - 仅云台)

uint8 mode              # 0:空闲 1:自瞄 2:小符 3:大符
float32 yaw             # 偏航角
float32 yaw_vel         # 偏航角速度
float32 yaw_acc         # 偏航角加速度
float32 pitch           # 俯仰角
float32 pitch_vel       # 俯仰角速度
float32 pitch_acc       # 俯仰角加速度

DataAI综合控制 - 云台+底盘)

uint8 mode              # 云台模式
float32 yaw, yaw_vel, yaw_acc
float32 pitch, pitch_vel, pitch_acc
float32 vx, vy, wz      # 底盘速度
uint8 reserved          # 底盘模式

NavGoal导航目标

uint8 MODE_PID = 0      # PID 直接控制
uint8 MODE_NAV = 1      # Nav2 导航
uint8 mode
float32 target_x, target_y, target_angle
float32 max_speed, tolerance

ChassisMode底盘模式

uint8 MODE_MANUAL = 0   # 手动控制
uint8 MODE_FOLLOW = 1   # 跟随云台
uint8 MODE_SPIN = 2     # 小陀螺
uint8 MODE_NAV = 3      # 导航模式

🐛 调试技巧

检查节点状态

ros2 node list
ros2 node info /rm_decision

检查话题连接

ros2 topic info /data_ai

查看参数

ros2 param list /rm_decision
ros2 param get /rm_decision enable_aim

日志级别

ros2 run rm_decision decision_node --ros-args --log-level debug

📂 项目结构

MOVE_AI/
├── src/
│   ├── rm_serial_driver/    # 串口驱动
│   ├── rm_vision/           # 视觉系统
│   ├── rm_nav/              # 导航相关
│   │   └── rm_simple_move/  # 运动控制
│   ├── rm_decision/         # 决策节点
│   ├── rm_msgs/             # 消息定义
│   └── rm_bringup/          # 启动文件
└── README.md

🤝 贡献

欢迎提交 Issue 和 Pull Request

📄 许可证

本项目采用 MIT 许可证。


青岛理工大学 QUT MOVE 战队 | RoboMaster 2026