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
mkdir -p ~/revo3_ws/src
cd ~/revo3_ws/src
git clone https://github.com/BrainCoTech/brainco_revo3_ros2.git2. Install dependencies and build
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. Launch the system
Simulation mode without hardware:
ros2 launch revo3_driver revo3_system.launch.py hand_side:=right if_sim:=trueHardware mode:
ros2 launch revo3_driver revo3_system.launch.py hand_side:=rightDual-hand mode:
ros2 launch revo3_driver dual_revo3_system.launch.pyStart 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:
cd ~/revo3_ws/src/brainco_revo3_ros2/revo3_driver/setup
bash bootstrap_revo3.sh
bash check_revo3_setup.shIf the current user cannot access /dev/ttyUSB*, add the user to the dialout group and log in again:
sudo usermod -a -G dialout $USERControl Interfaces
The hardware interface exposes the following command interfaces for each joint:
position: position in radvelocity: velocity in rad/seffort: torque feedforward as current in mAkp: position control gainkd: velocity control gain
State interfaces include:
position: position in radvelocity: velocity in rad/scurrent: current in Amotor_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:
| Parameter | Example | Description |
|---|---|---|
hand_side | right / left | Select the right or left hand |
if_sim | true / false | Enable simulation mode without hardware |
Before hardware control, verify the hand power supply, serial connection, slave ID, and communication parameters against the actual device setup.