Skip to content
Bilateral teleoperation (teleoperation with force feedback) with two 3D Systems Touch devices in Position-Position configuration
C++ Makefile
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


C/C++ application for bilateral teleoperation (teleoperation with force feedback) with two 3D Systems Touch devices in Position-Position configuration.

This software has been tested under Ubuntu 18.04 and Fedora 30 using 3D Systems Touch (USB interface) and Geomagic Touch (Ethernet interface) devices. The main libraries used for this application are OpenHaptics and Boost C++.


For Ubuntu:

sudo apt-get install make g++ qt5-default libqt5widgets5 libqt5opengl5 freeglut3-dev libncurses5-dev zlib1g-dev

For Fedora:

dnf install make g++ qt5-devel freeglut ncurses-devel zlib-devel

Of course to be able to calibrate and control the haptic devices you need to install the device drivers and OpenHaptics libraries which are currently available (along with installation instructions) on

You also need to install the Boost C++ library (for the multi-threading and networking functionalities of the code). I recommend downloading the latest version from

Set up

Each haptic device needs to be connected to a PC. Both PCs should belong to the same network and IPs must be defined in the touchp2p.cpp file. Each PC must run the application using the touchp2p.cpp file by assigning the correct IPs at the top of the file.

For your convenience I have also added a Makefile similar to the ones that the OpenHaptics examples use.

Future work

There is always room for improvement. Apart from improving the code itself, the PID controller needs fine-tuning. Another interesting feature would be to include some stability control algorithm to compensate for latency introduced by the network.

Special thanks to Professor Marcelo A. C. Fernandes as this code is based on previous effort for a similar project.

You can’t perform that action at this time.