Bilateral teleoperation over network (source code and video)

It’s been more than a year since I made a post as I’ve been quite busy to be honest. Thankfully, I passed my PhD viva and I’m currently working as a researcher at King’s College London. Currently on my way to come up with a research plan, nevertheless, due to other various tasks I do in parallel, I managed to create some C++ code for bilateral teleoperation, i.e. teleoperation with force feedback using two Geomagic Touch devices by 3DSystems over a network. You can find the code on Github.

The bilateral teleoperation system uses a position – position configuration. This means that the angular values of the joints are only exchanged between the devices. The upside is that there is no need for force sensors and external tools, as required by the position-force configuration, to receive forces from the remote environment. This conveniently keeps the system nice and simple but also more functional as all the moving parts of the robotic arm will respond to any change imposed by the remote environment. The downside is that in terms of transparency (quality of telepresence) during contact it is just not as good as the alternative.

The touchp2p.cpp file once compiled on each PC where the Touch devices are connected, runs a PID controller that receives reference angular values of the joints of the other device. It is only required to set the correct IPs of the remote and local machine on each side of the teleoperation system. The code uses the Boost C++ library for the networking and multithreading bits. The library to control these devices, namely OpenHaptics, is not open source but at least for educational purposes I’m allowed to share my code. The math and the relevant code behind the PID controller design are the same for any device of similar type anyway. Here is a video (even though the point is to experience the demo through touch):

Note: The PID values in the code are not exactly optimized, so in case you optimize them feel free to share them with me. Also, as always the code is not so clean but it works. Enjoy!

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

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s