Skip to content

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. 创建工作空间并克隆仓库

bash
mkdir -p ~/revo3_ws/src
cd ~/revo3_ws/src
git clone https://github.com/BrainCoTech/brainco_revo3_ros2.git

2. 安装依赖并构建

bash
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.bash

3. 启动系统

无硬件仿真模式:

bash
ros2 launch revo3_driver revo3_system.launch.py hand_side:=right if_sim:=true

硬件模式:

bash
ros2 launch revo3_driver revo3_system.launch.py hand_side:=right

双手模式:

bash
ros2 launch revo3_driver dual_revo3_system.launch.py

仿真优先

首次验证建议先使用 if_sim:=true,确认 ROS 2 环境、模型加载和控制器启动正常后,再连接真实硬件。

系统要求

  • 操作系统:Ubuntu 22.04
  • ROS 版本:ROS 2 Humble
  • 依赖包ros2_controlros2_controllersxacrorobot_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 自动检测。若需要稳定的串口别名,可以运行仓库提供的配置脚本:

bash
cd ~/revo3_ws/src/brainco_revo3_ros2/revo3_driver/setup
bash bootstrap_revo3.sh
bash check_revo3_setup.sh

若当前用户无法访问 /dev/ttyUSB*,请将用户加入 dialout 用户组并重新登录:

bash
sudo usermod -a -G dialout $USER

控制接口

硬件接口为每个关节提供以下 command interfaces:

  • position:位置,单位 rad
  • velocity:速度,单位 rad/s
  • effort:力矩前馈,对应电流 mA
  • kp:位置控制增益
  • kd:速度控制增益

状态接口包括:

  • position:位置,单位 rad
  • velocity:速度,单位 rad/s
  • current:电流,单位 A
  • motor_state:SDK 原始状态 bitmask

更多接口细节请参考仓库中的 revo3_driver/README.mdrevo3_driver/README_INTERFACES_CN.md

手型参数

常用 launch 参数:

参数示例值描述
hand_sideright / left选择右手或左手
if_simtrue / false是否使用无硬件仿真模式

硬件控制前请确认灵巧手供电、串口连接、从站 ID 和通信参数与实际设备一致。

相关资源

帮助