dg_sdk_ros2_bridge¶
ROS 2 bridge for the Delto Gripper SDK (DG SDK).
Warning
The DG SDK (libDGSDK.so) is only available for x86_64 architectures. This package cannot be used on ARM-based platforms (such as NVIDIA Jetson or Raspberry Pi).
Note
Ensure the bundled SDK version matches your gripper firmware. Check the SDK release notes for compatibility information.
Overview¶
The dg_sdk_ros2_bridge package provides a ROS 2 node that wraps the proprietary DG SDK library, exposing all gripper functions as ROS 2 topics and services. This is an alternative to using delto_hardware with ros2_control.
Note
What is the difference between the SDK bridge and ros2_control? The ros2_control approach (delto_hardware) gives you a standardized hardware interface that works with standard ROS 2 controllers, MoveIt, and the broader ROS 2 ecosystem. The SDK bridge gives you direct access to all proprietary SDK functions – including recipe management, advanced gain tuning, blend motion, TCP space control, and more. Choose based on your needs.
When to Use Which¶
Use Case |
Recommended Approach |
|---|---|
Standard position/effort control |
|
MoveIt integration |
|
Trajectory following |
|
Recipe management |
|
Use the same functions as the DGManager program |
|
Blend motion (multi-waypoint smooth paths) |
|
Warning
Important: The gripper only accepts one TCP connection at a time. You cannot run delto_hardware and dg_sdk_ros2_bridge simultaneously for the same gripper. Choose one approach per gripper instance.
Architecture¶
Your Application
|
v (ROS 2 topics & services)
dg_sdk_ros2_bridge node
|
v (C++ function calls)
DG SDK (libDGSDK.so)
|
v (TCP/IP)
Gripper Firmware
The bridge node acts as a translator: it receives ROS 2 service calls from your application and forwards them to the proprietary DG SDK library, which handles the actual communication with the gripper.
Published Topics¶
The bridge node continuously publishes gripper data on these topics:
Topic |
Type |
Rate |
Description |
|---|---|---|---|
|
|
Continuous |
Joint positions, velocities, currents, and temperatures |
|
|
Continuous |
F/T sensor readings (6 values per finger) |
|
|
Continuous |
GPIO input/output states |
|
|
Continuous |
System diagnostic information |
Services by Category¶
The bridge exposes 86+ services for full SDK functionality. Here they are organized by category:
System Settings¶
Service |
Description |
|---|---|
|
Configure gripper system parameters |
|
Set gripper options |
|
Establish connection to the gripper |
|
Close connection |
|
Start the gripper system |
|
Stop the gripper system |
|
Configure the gripper’s IP address |
System Configuration¶
Service |
Description |
|---|---|
|
Set low-pass filter coefficient for sensor data smoothing |
|
Configure how the gripper behaves on power-up |
|
Set a single GPIO output |
|
Set all GPIO outputs at once |
|
Configure motor torque limiting |
|
Set which recipe runs automatically on boot |
|
Write configuration to the gripper’s persistent storage |
|
Run a system diagnostic check |
|
Backup all recipes from the gripper |
|
Restore recipes to the gripper |
Joint Gain Settings (PID Tuning)¶
Service |
Description |
|---|---|
|
Set proportional gain (per joint, per finger, or all joints) |
|
Set derivative gain |
|
Set integral gain |
|
Set all PID gains together |
|
Switch between PID control modes |
Motion Time¶
Service |
Description |
|---|---|
|
Set how long a motion should take (per joint, per finger, or all) |
Position and Current Control¶
Service |
Description |
|---|---|
|
Enable position control mode |
|
Enable direct current control mode |
|
Set target motor current |
Motion Commands¶
Service |
Description |
|---|---|
|
Move joints to target positions |
|
Real-time servo mode for smooth continuous motion |
|
Enable/disable manual teach mode (freely move joints by hand) |
|
Execute a pre-configured grasp motion |
|
Configure grasp parameters and force limits |
TCP (Tool Center Point) Control – Experimental¶
Service |
Description |
|---|---|
|
Set PID gains for TCP space control |
|
Set motion time for TCP space motions |
|
Move fingertips to target poses in Cartesian space |
|
Get current TCP (fingertip) pose |
|
Set PID gains for in-hand manipulation |
|
Execute in-hand manipulation |
|
Zero the fingertip sensor data |
Recipe Management¶
Service |
Description |
|---|---|
|
Save the current pose as a recipe |
|
Save a target pose as a recipe |
|
Load a saved pose recipe |
|
Save current PID gains as a recipe |
|
Load saved PID gain settings |
|
Save grasp parameters as a recipe |
|
Load saved grasp parameters |
Blend Motion (Multi-Waypoint)¶
Service |
Description |
|---|---|
|
Update a blend motion waypoint |
|
Add a waypoint to the blend queue |
|
Clear all waypoints from the blend queue |
|
Configure blend motion parameters |
|
Execute the blend motion |
|
Stop the currently running blend motion |
Data Getters¶
Service |
Description |
|---|---|
|
Get the latest gripper data on demand |
|
Get the latest F/T sensor data |
|
Get the latest GPIO states |
|
Get the current communication cycle time |
|
Get the data processing status |
|
Get the latest diagnostic information |
Step-by-Step Usage Example¶
Here is a basic workflow for using the SDK bridge:
Step 1: Launch the bridge node.
ros2 run dg_sdk_ros2_bridge dg_sdk_ros2_bridge_node
Step 2: Configure and connect to the gripper.
# Set up the gripper system parameters
ros2 service call /dg/SetGripperSystem dg_msgs/srv/SetGripperSystem "{...}"
# Connect to the gripper
ros2 service call /dg/ConnectToGripper dg_msgs/srv/ConnectToGripper "{...}"
# Start the system
ros2 service call /dg/SystemStart dg_msgs/srv/SystemStart "{}"
Step 3: Monitor gripper data.
# Watch joint positions, velocities, and currents
ros2 topic echo /dg/gripper_data
# Watch F/T sensor data
ros2 topic echo /dg/fingertip_sensor_data
Step 4: Send motion commands.
# Move all joints to target positions
ros2 service call /dg/MoveJointAll dg_msgs/srv/MoveJointAll "{...}"
Step 5: Stop and disconnect.
ros2 service call /dg/SystemStop dg_msgs/srv/SystemStop "{}"
ros2 service call /dg/DisconnectToGripper dg_msgs/srv/DisconnectToGripper "{}"
Message Types¶
All custom messages and services used by the bridge are defined in the dg_msgs package. See Message Definitions and Service Definitions for complete definitions.