MOVE_AI/src/rm_serial_driver
Robofish d459b500ba fix: 修复配置文件和代码中的小问题
- 更新 MID360 雷达配置
- 修复 TEB planner 可视化相关代码
- 调整串口驱动参数
- 移除 bringup_real.launch.py 中的冗余代码

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-09 14:12:26 +08:00
..
config driver ok 2026-03-04 17:50:55 +08:00
docs driver ok 2026-03-04 17:50:55 +08:00
include/rm_serial_driver fix protucal 2026-03-04 18:16:02 +08:00
launch driver ok 2026-03-04 17:50:55 +08:00
src fix: 修复配置文件和代码中的小问题 2026-03-09 14:12:26 +08:00
CMakeLists.txt driver ok 2026-03-04 17:50:55 +08:00
LICENSE driver ok 2026-03-04 17:50:55 +08:00
package.xml driver ok 2026-03-04 17:50:55 +08:00
README.md driver ok 2026-03-04 17:50:55 +08:00

RM Serial Driver

ROS 2 串口驱动程序,用于与单片机进行可靠的串口通信。

特性

  • 自动重连机制,断线后持续尝试重连
  • CRC16 校验保证数据完整性
  • 完善的异常处理,稳定可靠
  • 实时统计监控(接收/发送/错误计数)
  • 易于修改通信协议

快速开始

1. 安装依赖

# 安装 serial 库
git clone https://github.com/ZhaoXiangBox/serial.git
cd serial
mkdir build && cd build
cmake ..
make
sudo make install

2. 编译

cd ~/MOVE_AI
colcon build --packages-select rm_serial_driver
source install/setup.bash

3. 配置串口

编辑 config/serial_config.yaml

/rm_serial_driver:
  ros__parameters:
    device_name: /dev/ttyACM0    # 修改为你的串口设备
    baud_rate: 115200             # 修改为你的波特率

4. 启动驱动

# 使用配置文件启动
ros2 launch rm_serial_driver rm_serial_driver.launch.py

# 或直接运行节点
ros2 run rm_serial_driver rm_serial_driver --ros-args --params-file config/serial_config.yaml

5. 查看数据

# 查看所有话题
ros2 topic list

# 查看 MCU 数据
ros2 topic echo /serial/data_mcu

# 查看裁判系统数据
ros2 topic echo /serial/data_ref

# 发送 AI 控制命令
ros2 topic pub /serial/data_ai rm_msgs/msg/DataAI "{...}"

配置参数

参数 类型 默认值 说明
device_name string /dev/ttyACM0 串口设备路径
baud_rate int 115200 波特率
reconnect_interval_ms int 1000 重连间隔(毫秒)
enable_statistics bool true 启用统计信息
topic_prefix string serial ROS 话题前缀

话题接口

订阅

  • /serial/data_ai (rm_msgs/msg/DataAI) - AI 控制命令

发布

  • /serial/data_mcu (rm_msgs/msg/DataMCU) - 单片机姿态数据
  • /serial/data_ref (rm_msgs/msg/DataRef) - 裁判系统数据

协议格式

所有数据包格式:

+----+----------+-------+
| ID |   Data   |  CRC  |
+----+----------+-------+
| 1B |    N     |  2B   |
  • ID: 数据包类型 (0xC4=MCU, 0xA8=裁判系统)
  • Data: 实际数据内容
  • CRC: CRC16-CCITT 校验码

详细协议说明请查看 协议修改指南

修改协议

只需 3 步:

  1. 修改 include/rm_serial_driver/protocol.hpp - 定义数据结构
  2. 修改 src/rm_serial_driver.cpp - 添加处理逻辑
  3. 重新编译 - colcon build

详细步骤请查看 docs/PROTOCOL_GUIDE.md

故障排查

串口无法打开

# 检查串口设备
ls -l /dev/ttyUSB* /dev/ttyACM*

# 添加用户到 dialout 组
sudo usermod -aG dialout $USER
# 注销后重新登录

# 临时修改权限
sudo chmod 666 /dev/ttyACM0

查看详细日志

ros2 run rm_serial_driver rm_serial_driver --ros-args --log-level debug

测试串口

# 使用 minicom
sudo apt install minicom
minicom -D /dev/ttyACM0 -b 115200

文档

许可证

Apache License 2.0

贡献

欢迎提交 Issue 和 Pull Request