ROS2 driver for SAKE Robotics EZGripper. This driver provides standard ROS2 integration for EZGripper control.
Your EZGripper servos must be upgraded to Protocol 2.0 to use this driver.
How to Check: If your servos are using Protocol 1.0, this driver will not work.
How to Upgrade: See Servo Upgrade Guide
This driver depends on the generic EZGripper DDS interface for hardware communication:
- Generic Interface: https://github.com/SAKErobotics/ezgripper-dds-interface
- This Repository: ROS2 wrapper for generic interface
- Purpose: ROS2 integration with standard topics/actions
┌─────────────────────────────────────────────────┐
│ Generic EZGripper DDS Interface │
│ (Protocol 2.0 Hardware + Generic DDS) │
└─────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────┐
│ ROS2 Driver (This Repo) │
│ - ROS2 Topics: /ezgripper_{side}/gripper_cmd │
│ - ROS2 Actions: control_msgs/GripperCommand │
│ - ROS2 Services: calibration │
└─────────────────────────────────────────────────┘
- EZGripper with Protocol 2.0 servos
- ROS2 Humble or newer
- Python 3.8+
Need to upgrade servos? See Servo Upgrade Guide
# Clone into your ROS2 workspace
cd ~/ros2_ws/src
git clone https://github.com/SAKErobotics/ezgripper_ros2_v2.git
# Install dependencies (automatically installs generic interface)
rosdep install --from-paths src --ignore-src -r -y
# Build
cd ~/ros2_ws
colcon build --symlink-install
source install/setup.bash# Launch driver
ros2 launch ezgripper_ros2_v2 single_gripper.launch.py
# Control gripper (close)
ros2 action send_goal /ezgripper_left/gripper_cmd control_msgs/action/GripperCommand "{command: {position: 0.0, max_effort: 0.5}}"
# Control gripper (open)
ros2 action send_goal /ezgripper_left/gripper_cmd control_msgs/action/GripperCommand "{command: {position: 0.1, max_effort: 0.5}}"For multiple grippers, launch independent instances:
# Terminal 1: Left gripper
ros2 launch ezgripper_ros2_v2 single_gripper.launch.py side:=left servo_id:=1
# Terminal 2: Center gripper
ros2 launch ezgripper_ros2_v2 single_gripper.launch.py side:=center servo_id:=2
# Terminal 3: Right gripper
ros2 launch ezgripper_ros2_v2 single_gripper.launch.py side:=right servo_id:=3Benefits of Independent Instances:
- Better isolation and fault tolerance
- Independent gripper control
- Flexible configuration per gripper
- Easier debugging and maintenance
ros2 launch ezgripper_ros2_v2 single_gripper.launch.py port:=/dev/ttyUSB1ros2 launch ezgripper_ros2_v2 single_gripper.launch.py servo_id:=2ros2 launch ezgripper_ros2_v2 single_gripper.launch.py side:=right/ezgripper_{side}/joint_states(sensor_msgs/JointState) - Current gripper positions/diagnostics(diagnostic_msgs/DiagnosticArray) - Hardware status and errors
/ezgripper_{side}/gripper_cmd(control_msgs/GripperCommand) - Gripper control
/ezgripper_{side}/calibrate(std_srvs/Empty) - Calibrate gripper zero position
This driver is compatible with MoveIt and ros2_control. The standard ROS2 interfaces allow seamless integration with existing MoveIt configurations.
The driver uses standard ROS2 messages and interfaces, making it compatible with:
- ros2_control
- Navigation stacks
- Custom ROS2 applications
- Visualization tools (RViz, RQt)
sudo adduser $USER dialout
# Then reboot# Check serial port
ls -la /dev/ttyUSB*
# Check diagnostics
ros2 topic echo /diagnostics
# Calibrate gripper
ros2 service call /ezgripper_left/calibrate std_srvs/Empty# Reinstall generic interface
pip uninstall ezgripper-dds-interface
pip install git+https://github.com/SAKErobotics/ezgripper-dds-interface.git
# Rebuild ROS2 driver
cd ~/ros2_ws
colcon build --symlink-install --packages-select ezgripper_ros2_v2
source install/setup.bash- Servo Upgrade Guide - Upgrade servos to Protocol 2.0
- Contributing - Development guide
- Changelog - Version history
- GitHub Issues: https://github.com/SAKErobotics/ezgripper_ros2_v2/issues
- SAKE Robotics: https://sakerobotics.com/
BSD License - See LICENSE file
This driver uses the generic EZGripper DDS interface as its foundation and adds ROS2-specific integration.