Skip to content

Revo 3 ROS 2 Driver & Control

BrainCo Revo3 ROS 2 is for developers who need to integrate Revo 3 into a robot control stack. It provides the hardware driver, ros2_control interface, launch files, URDF/xacro description, and MIT command controller. The project targets ROS 2 Humble and supports both real hardware control and simulation mode without hardware.

Use Cases

  • Control one or two Revo 3 hands from a ROS 2 workspace
  • Manage joint commands and state feedback with ros2_control
  • Load the Revo 3 model in RViz to verify joint states and TF
  • Build custom upper-level control nodes on top of the MIT control interface

Quick Start

1. Create a workspace and clone the repository

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

2. Install dependencies and build

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. Launch the system

Simulation mode without hardware:

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

Hardware mode:

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

Dual-hand mode:

bash
ros2 launch revo3_driver dual_revo3_system.launch.py

Start with simulation

For first-time validation, start with if_sim:=true to verify the ROS 2 environment, model loading, and controller startup before connecting real hardware.

Requirements

  • Operating system: Ubuntu 22.04
  • ROS version: ROS 2 Humble
  • Dependencies: ros2_control, ros2_controllers, xacro, robot_state_publisher
  • Hardware connection: Hardware mode requires a Revo 3 hand connected through Modbus serial

SDK Dependency

The tested BC Revo3 SDK v1.0.4 is included in revo3_driver/vendor/dist, so a fresh clone can usually build without downloading extra SDK files.

Core Packages

revo3_driver

Hardware driver package for Revo 3. It provides a ros2_control hardware interface and launch files for both real hardware over Modbus serial and simulation mode without hardware.

revo3_description

Robot description package for Revo 3, including URDF/xacro files, meshes, and RViz configuration for visualization, state publishing, and robot system integration.

revo3_mit_controller

MIT command controller plugin for sending position, velocity, torque feedforward, and control gain commands to Revo 3 motors.

revo3_mit_controller_msgs

MIT controller message definition package for upper-level ROS 2 control nodes.

Serial Configuration

The default protocol files use SDK auto detection. If stable serial aliases are needed, run the setup scripts included in the repository:

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

If the current user cannot access /dev/ttyUSB*, add the user to the dialout group and log in again:

bash
sudo usermod -a -G dialout $USER

Control Interfaces

The hardware interface exposes the following command interfaces for each joint:

  • position: position in rad
  • velocity: velocity in rad/s
  • effort: torque feedforward as current in mA
  • kp: position control gain
  • kd: velocity control gain

State interfaces include:

  • position: position in rad
  • velocity: velocity in rad/s
  • current: current in A
  • motor_state: raw SDK status bitmask

For more interface details, see revo3_driver/README.md and revo3_driver/README_INTERFACES_CN.md in the repository.

Launch Parameters

Common launch parameters:

ParameterExampleDescription
hand_sideright / leftSelect the right or left hand
if_simtrue / falseEnable simulation mode without hardware

Before hardware control, verify the hand power supply, serial connection, slave ID, and communication parameters against the actual device setup.

Help