Installation

This guide walks you through installing the Tesollo ROS 2 gripper packages from scratch. By the end, you will have a fully built workspace ready to control your Delto gripper.

Prerequisites

Before you begin, make sure you have:

  • Ubuntu with ROS 2 installed and working. The supported combinations are:

    Ubuntu Version

    ROS 2 Distribution

    22.04 (Jammy)

    Humble Hawksbill

    24.04 (Noble)

    Jazzy Jalisco

  • A terminal where you can run ros2 --help without errors. If that command fails, your ROS 2 installation is not set up correctly – revisit the official ROS 2 installation guide first.

Note

What is ROS 2? ROS 2 (Robot Operating System 2) is a framework for building robot software. It provides tools for communication between different parts of a robot system. If this is your first time using ROS 2, the ROS 2 tutorials are a great place to start.

Step 1: Install Required System Packages

The gripper drivers use ros2_control, which is the standard ROS 2 framework for controlling hardware. You need to install it along with its controller plugins.

For ROS 2 Humble (Ubuntu 22.04):

sudo apt update
sudo apt install ros-humble-ros2-control ros-humble-ros2-controllers

For ROS 2 Jazzy (Ubuntu 24.04):

sudo apt update
sudo apt install ros-jazzy-ros2-control ros-jazzy-ros2-controllers

Note

What does this install? ros2-control is the hardware abstraction layer that lets ROS 2 talk to motors and sensors in a standardized way. ros2-controllers provides ready-made controllers like the Joint Trajectory Controller (for position control) and the Effort Controller (for direct current/torque control). The Delto gripper drivers rely on both of these.

Optional: Gazebo Simulation

If you want to test your gripper in simulation before connecting real hardware, install Gazebo:

For ROS 2 Humble:

sudo apt install ros-humble-ros-gz

For ROS 2 Jazzy:

sudo apt install ros-jazzy-ros-gz

Step 2: Create a Workspace

If you already have a ROS 2 workspace (for example ~/ros2_ws), you can skip this step.

A workspace is a directory where you put all your ROS 2 packages. Here is how to create one:

mkdir -p ~/ros2_ws/src

Note

What is a workspace? In ROS 2, a workspace is a folder structure where your source code lives (in the src/ directory). The build tool colcon compiles everything inside src/ and puts the results in build/, install/, and log/ directories. You can name your workspace anything, but ros2_ws is the most common convention.

Step 3: Clone the Repository

Navigate into the src/ directory of your workspace:

cd ~/ros2_ws/src

Option B: Clone Only the Gripper Model You Need

If you only need one gripper model, you can save download time by initializing only the submodules you need. The shared submodules (dg_tcp_comm and dg_hardware) are always required.

cd ~/ros2_ws/src
git clone https://github.com/tesollodelto/tesollo_ros2.git
cd tesollo_ros2

Then run the command for your specific model:

DG-5F (5-finger hand):

git submodule update --init dg5f_ros2 dg_common/dg_tcp_comm dg_common/dg_hardware

DG-5F-S (5-finger hand, small version):

git submodule update --init dg5f_s_ros2 dg_common/dg_tcp_comm dg_common/dg_hardware

DG-4F (4-finger gripper):

git submodule update --init dg4f_ros2 dg_common/dg_tcp_comm dg_common/dg_hardware

DG-3F-M (3-finger gripper):

git submodule update --init dg3f_m_ros2 dg_common/dg_tcp_comm dg_common/dg_hardware

Note

After this step, you will see empty directories for other models (e.g., dg4f_ros2/, dg3f_b_ros2/). This is normal – empty submodule directories take no disk space and are ignored by the build tool.

Option C: Clone a Single Model Independently

Each gripper model can also be cloned as a standalone repository. You must also clone the shared dependencies alongside it:

cd ~/ros2_ws/src
git clone https://github.com/tesollodelto/dg5f_ros2.git
git clone https://github.com/tesollodelto/dg_hardware.git
git clone https://github.com/tesollodelto/dg_tcp_comm.git

Replace dg5f_ros2 with your model (dg4f_ros2, dg3f_m_ros2, dg5f_s_ros2).

Step 4: Install Dependencies with rosdep

Before building, let ROS 2 automatically install any missing dependencies:

cd ~/ros2_ws
rosdep install --from-paths src --ignore-src -r -y

Note

What does rosdep do? rosdep reads the package.xml files in your source code and installs any system packages they depend on. The flags mean:

  • --from-paths src – look at packages in the src/ directory

  • --ignore-src – don’t try to install packages that are already in your source tree

  • -r – continue even if some packages can’t be resolved

  • -y – answer “yes” to all installation prompts

Step 5: Build the Workspace

Now compile everything:

cd ~/ros2_ws
colcon build --symlink-install

This will take a minute or two. You should see output showing each package being built.

Note

What does colcon build do? colcon is the ROS 2 build tool. It finds all the packages in your src/ directory and compiles them in the correct order (respecting dependencies). The --symlink-install flag creates symbolic links instead of copying files, which means you can edit Python scripts and config files without rebuilding.

Step 6: Source the Workspace

After a successful build, you need to source the workspace so that ROS 2 can find your newly built packages:

source ~/ros2_ws/install/setup.bash

Warning

You must run this command in every new terminal you open, or add it to your ~/.bashrc file so it runs automatically:

echo "source ~/ros2_ws/install/setup.bash" >> ~/.bashrc

Step 7: Verify the Installation

Check that the gripper packages are visible to ROS 2:

ros2 pkg list | grep dg

You should see output similar to this (depending on which models you installed):

dg3f_m_description
dg3f_m_driver
dg3f_m_gz
dg4f_description
dg4f_driver
dg4f_gz
dg5f_description
dg5f_driver
dg5f_gz
dg5f_s_description
dg5f_s_driver
dg5f_s_gz
delto_hardware
delto_tcp_comm

If you see your gripper model’s packages listed, congratulations – your installation is complete.

Platform Limitations

ARM64 / NVIDIA Jetson

The dg_sdk_ros2_bridge package includes a proprietary SDK library (libDGSDK.so) that is only available for x86_64 architectures. If you are building on an ARM64 platform (such as NVIDIA Jetson), this package will fail to build.

Workaround: Exclude the SDK bridge package from your build:

colcon build --symlink-install --packages-ignore dg_sdk_ros2_bridge dg_msgs

This does not affect the main ros2_control-based drivers (delto_hardware), which work on all platforms.

Troubleshooting

“Could not find a package configuration file provided by ros2_control”

This means the ros2_control packages are not installed. Install them:

# For Humble:
sudo apt install ros-humble-ros2-control ros-humble-ros2-controllers

# For Jazzy:
sudo apt install ros-jazzy-ros2-control ros-jazzy-ros2-controllers

“Could not find a package configuration file provided by controller_manager”

Same as above – install ros2-control:

sudo apt install ros-${ROS_DISTRO}-ros2-control ros-${ROS_DISTRO}-ros2-controllers

Build fails with “package not found” for dg5f_driver (or similar)

If you used Option B (single model), make sure you also initialized the shared submodules:

cd ~/ros2_ws/src/tesollo_ros2
git submodule update --init dg_common/dg_tcp_comm dg_common/dg_hardware

“colcon build” produces no output or finishes instantly

Make sure you are in the workspace root (~/ros2_ws), not inside the src/ directory. colcon looks for packages in the src/ subdirectory of your current directory.

“ros2 pkg list” does not show my packages

Make sure you sourced the workspace:

source ~/ros2_ws/install/setup.bash

If you added this to ~/.bashrc, open a new terminal and try again.

Next Steps

Now that your workspace is built, head to the Quick Start guide to connect to your gripper and send your first commands.