- 更新 MID360 雷达配置 - 修复 TEB planner 可视化相关代码 - 调整串口驱动参数 - 移除 bringup_real.launch.py 中的冗余代码 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| config | ||
| docs | ||
| include/rm_serial_driver | ||
| launch | ||
| src | ||
| CMakeLists.txt | ||
| LICENSE | ||
| package.xml | ||
| README.md | ||
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 步:
- 修改
include/rm_serial_driver/protocol.hpp- 定义数据结构 - 修改
src/rm_serial_driver.cpp- 添加处理逻辑 - 重新编译 -
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!