Revo 3 ROS 2 驱动与控制
BrainCo Revo3 ROS 2 面向需要把 Revo 3 接入机器人控制栈的开发者,提供硬件驱动、ros2_control 接口、启动文件、URDF/xacro 模型描述和 MIT 指令控制器。项目基于 ROS 2 Humble,可用于真实硬件控制,也可在无硬件环境下启动仿真模式验证流程。
适用场景
- 在 ROS 2 工作空间中控制单只或双只 Revo 3 灵巧手
- 使用
ros2_control管理关节命令和状态反馈 - 在 RViz 中加载 Revo 3 模型,验证关节状态和 TF
- 基于 MIT 控制接口实现自定义上层控制节点
快速开始
1. 创建工作空间并克隆仓库
mkdir -p ~/revo3_ws/src
cd ~/revo3_ws/src
git clone https://github.com/BrainCoTech/brainco_revo3_ros2.git2. 安装依赖并构建
cd ~/revo3_ws
source /opt/ros/humble/setup.bash
rosdep install --from-paths src --ignore-src --rosdistro humble -y
colcon build --packages-up-to revo3_driver --symlink-install
source install/setup.bash3. 启动系统
无硬件仿真模式:
ros2 launch revo3_driver revo3_system.launch.py hand_side:=right if_sim:=true硬件模式:
ros2 launch revo3_driver revo3_system.launch.py hand_side:=right双手模式:
ros2 launch revo3_driver dual_revo3_system.launch.py仿真优先
首次验证建议先使用 if_sim:=true,确认 ROS 2 环境、模型加载和控制器启动正常后,再连接真实硬件。
系统要求
- 操作系统:Ubuntu 22.04
- ROS 版本:ROS 2 Humble
- 依赖包:
ros2_control、ros2_controllers、xacro、robot_state_publisher - 硬件连接:硬件模式需要 Revo 3 灵巧手通过 Modbus 串口连接主机
SDK 依赖
仓库已在 revo3_driver/vendor/dist 内置测试过的 BC Revo3 SDK v1.0.4,新克隆后通常无需额外下载 SDK 文件即可构建。
核心功能包
revo3_driver
Revo 3 硬件驱动包,提供基于 ros2_control 的硬件接口和启动文件,可通过 Modbus 串口连接真实灵巧手,也支持无硬件仿真模式。
revo3_description
Revo 3 机器人描述包,包含 URDF/xacro、mesh 资源和 RViz 配置,用于模型可视化、状态发布和后续机器人系统集成。
revo3_mit_controller
MIT 指令控制器插件,用于向 Revo 3 电机发送位置、速度、力矩前馈以及控制增益相关指令。
revo3_mit_controller_msgs
MIT 控制消息定义包,为上层控制节点提供标准 ROS 2 消息接口。
串口配置
默认协议文件使用 SDK 自动检测。若需要稳定的串口别名,可以运行仓库提供的配置脚本:
cd ~/revo3_ws/src/brainco_revo3_ros2/revo3_driver/setup
bash bootstrap_revo3.sh
bash check_revo3_setup.sh若当前用户无法访问 /dev/ttyUSB*,请将用户加入 dialout 用户组并重新登录:
sudo usermod -a -G dialout $USER控制接口
硬件接口为每个关节提供以下 command interfaces:
position:位置,单位 radvelocity:速度,单位 rad/seffort:力矩前馈,对应电流 mAkp:位置控制增益kd:速度控制增益
状态接口包括:
position:位置,单位 radvelocity:速度,单位 rad/scurrent:电流,单位 Amotor_state:SDK 原始状态 bitmask
更多接口细节请参考仓库中的 revo3_driver/README.md 和 revo3_driver/README_INTERFACES_CN.md。
手型参数
常用 launch 参数:
| 参数 | 示例值 | 描述 |
|---|---|---|
hand_side | right / left | 选择右手或左手 |
if_sim | true / false | 是否使用无硬件仿真模式 |
硬件控制前请确认灵巧手供电、串口连接、从站 ID 和通信参数与实际设备一致。