ROS 2 drivers for OnRobot Grippers. This repository was inspired by Osaka-University-Harada-Laboratory/onrobot.
The current build of this package only supports the OnRobot RG series, only tested on the OnRobot RG6 gripper. The package supports various control methods, like physical device control via Modbus, or simulated gripper either by self-simulation, or leveraging Isaac Sim's simulation environment.
- Ubuntu 22.04 PC
- ROS 2 Humble (Python3)
- Controller for OnRobot RG2 / RG6
- Modbus TCP/IP
- Simulated (WIP)
- Isaac Sim
- CLI controller
- Width / Height / Joint value cross calculation service
- GripperCommand action server
- pyModbus >= 3.9.2
Navigate into your ROS 2 workspace and copy this repo to your source folder
cd src && git clone https://github.com/ABC-iRobotics/onrobot-ros2.git && cd ..
Build the package (and installing python prerequisites)
colcon build --packages-select onrobot_rg_msgs onrobot_rg_description onrobot_rg_control
After installation the controller server and the controller can be run separately.
ros2 run onrobot_rg_control OnRobotControllerServer
Or by using the included example launch file.
ros2 launch onrobot_rg_control bringup.launch.py
Use the CLI controller by running in a new terminal:
ros2 run onrobot_rg_control OnRobotController --ros-args -p /onrobot/gripper:=<your gripper type>
Using parameters require using DeclareLaunchArgument and LaunchConfiguration in launch files, command line arguments, or ROS parameters.
Command line argument:
<name>:=<value>
ROS parameter:
--ros-args -p /onrobot/<name1>:=<value1> -p /onrobot/<name2>:=<value2> ...
Using launch arguments and ros-args parameter the controller server can be customized:
Name | Argument | Usage | Values | Default |
---|---|---|---|---|
Gripper | gripper | Sets the used gripper type. | rg2, rg6 | rg6 |
Control | control | Sets gripper control method. | modbus, sim (WIP), isaac | modbus |
Offset | offset | Defines fingertip offset on one side | 0 - 80 | 5 |
For Modbus TCP/IP control the available parameters:
Name | Argument | Usage | Values | Default |
---|---|---|---|---|
IP | ip | Sets Compute Box IP. | 0.0.0.0 - 255.255.255.255 | 192.168.1.1 |
Port | port | Sets Compute Box Modbus port. | 0 - 65535 | 502 |
Changer Address | changer_addr | Defines controlled device | 63 - 67 | 65 |
For Isaac Sim control the available parameters:
Name | Argument | Usage | Values | Default |
---|---|---|---|---|
Isaac joint states | isaac_joint_states | Sets joint state topic | /* | /isaac_joint_states |
Isaac joint commands | isaac_joint_commands | Sets joint commands topic | /* | /isaac_joint_commands |
Using the OnRobotRGControllerServer a query can be requested on /onrobot/pose. Using the GripperPose srv message setting either width, height or joint angle the service rensponds with the completed state information. This helps to identify the height offset in a set width between the fingertips.
In case of any issues, check the official resources:
- OnRobot RG2
- OnRobot RG6
- OnRobot Modbus Manual Chapter 6.2 Page 51.
- ROS2 Joint Control: Extension Python Scripting
Makány András - Graduate student at Obuda University
This software is released under the MIT License, see LICENSE.