ROS 2 与 Modbus 集成
目标:把 Modbus 设备(IO、电缸、仪表、简易驱动)纳入 ROS 2 /
ros2_control
本地相关仓库:../开源项目/modbus_hardware_interface、ros2_modbus、modbus_rtu
1. 在机器人栈中的位置
1 | Controller Manager (ros2_control) |
Modbus 不适合替代 EtherCAT 做高动态多轴同步;适合外围与慢回路。
2. 三条常见接入路线
| 路线 | 包 | 说明 |
|---|---|---|
| A. ros2_control 插件 | modbus_hardware_interface |
URDF/ros2_control 标签里映射 register↔interface |
| B. 独立节点桥 | ros2_modbus |
YAML 配置读写,发 Topic/Service |
| C. RTU 总线服务 | openvmp/modbus_rtu |
串行总线以 ROS 接口暴露,可本地 API 或远程 |
3. ros2_control 映射要点
配置中通常要声明:
- 服务器 IP/端口或串口参数
- 每个 State/Command interface 对应的:表类型、地址、数量、缩放/转换
注意:
read()/write()周期与 Modbus 超时匹配- 失败时硬件接口应有明确降级(保持、报错、禁用)
- float 多寄存器转换集中在一处,写单测
4. 推荐落地步骤
- 用 pymodbus 或 modpoll 按点表读通
- 固定缩放与字序
- 选 A/B/C 路线接入 ROS
- 先只读状态,再开放写命令
- 加 ACL/网络隔离(尤其 TCP)
5. 安全提醒
- 急停、安全扭矩关闭:不要只靠 Modbus 写线圈
- 命令寄存器要防:上电默认值、Retain 式误写、连接闪断重连后的脏写
下一篇:08-调试与排障.md
正在加载留言…