Architecture Overview

This page explains how the Tesollo ROS 2 gripper software is organized and how the different components work together. Understanding this architecture will help you choose the right approach for your application and troubleshoot issues.

Repository Structure

The tesollo_ros2 repository is organized as a collection of git submodules, each containing a specific gripper model or shared library:

tesollo_ros2/
├── dg3f_b_ros2/          [submodule] DG-3F (B type) -- discontinued
├── dg3f_m_ros2/          [submodule] DG-3F (M type) -- 3-finger gripper
├── dg4f_ros2/            [submodule] DG-4F -- 4-finger gripper
├── dg5f_ros2/            [submodule] DG-5F -- 5-finger hand (left/right)
├── dg5f_s_ros2/          [submodule] DG-5F-S -- 5-finger small hand (20-DOF/15-DOF)
├── dg_common/
│   ├── dg_hardware/      [submodule] delto_hardware -- ros2_control hardware interface
│   └── dg_tcp_comm/      [submodule] delto_tcp_comm -- TCP communication library
└── dg_sdk_ros2_bridge/   [submodule] SDK bridge + dg_msgs definitions

Each gripper model repository (e.g., dg5f_ros2) contains three ROS 2 packages:

  • description – URDF model, meshes, RViz display launch files

  • driver – Controller configurations and launch files for ros2_control

  • gz – Gazebo simulation launch files

The shared packages in dg_common/ are used by all gripper models.

Two Integration Paths

There are two ways to control a Delto gripper from ROS 2. You must choose one per gripper, because the gripper only accepts a single TCP connection at a time.

Option B: SDK Bridge

digraph B {
    rankdir=LR;
    node [shape=box, style=filled, fillcolor="#E8F0FE"];

    User [label="User Application", fillcolor="#FFF3E0"];
    Bridge [label="dg_sdk_ros2_bridge"];
    SDK [label="DG SDK\n(libDGSDK.so)"];
    FW [label="Gripper\nFirmware", fillcolor="#E8F5E9"];

    User -> Bridge [label="services / topics"];
    Bridge -> SDK;
    SDK -> FW;
}

How it works:

  1. Your application calls ROS 2 services or reads topics from the bridge node.

  2. The dg_sdk_ros2_bridge node translates these into DG SDK function calls.

  3. The DG SDK (libDGSDK.so) handles communication with the gripper firmware.

Best for: Direct SDK access, recipe management, advanced PID tuning, blend motion, TCP space control, in-hand manipulation.

Warning

Both paths communicate with the gripper over TCP. Since the gripper only accepts a single connection, you must choose one path per gripper instance. Running both simultaneously will cause connection errors.

Decision Guide

Question

ros2_control

SDK Bridge

Are you using MoveIt?

Yes

No

Do you need simulation?

Yes (Gazebo)

No

Do you need recipe management?

No

Yes

Do you want standard ROS 2 interfaces?

Yes

Partially

ARM64 / Jetson support?

Partially

No (x86_64 only)

Submodule Strategy

Each gripper model is an independent git repository, allowing:

  • Per-model deployment – Clone only the gripper model you need, saving download time and disk space

  • Independent versioning – Each model is released and tagged separately, so updates to one model do not affect others

  • Unified development – The parent repository (tesollo_ros2) aggregates everything for developers who work across models