egm-for-abb-robots

:gear: Using Externally Guided Motion (EGM) to control ABB robots in C#.

Author: Felipe Fronchetti (ffronchetti@lsu.edu)

Last update: 01/07/2024

:new: Our latest application for HoloLens 2 using EGM is now available at: https://github.com/fronchetti/roboart

Disclaimer: This repository is not supported, sponsored, or approved by ABB. Always refer to the official EGM application manual for consistent information.

:warning: Warning

The organization and authors of this repository are not liable for any consequential damage or injury that any code or information available in this repository may produce to you or others. The code available in this repository should be used only for reading purposes as different robots and settings may act differently during program execution. Use the code and information available here at your own risk, and always make sure you are following all the safety procedures recommended by your robot manufacturer. Robots can be dangerous if used inappropriately, be careful!

What is EGM?

Diagram describing the application of EGM

EGM is a feature available in RobotWare 6 and 7 that provides external devices the ability to interact and manipulate ABB robots through a network. In this approach, the information is encoded using Google Protocol Buffers and transported through UDP sockets. EGM is a great option for those who need to manipulate an ABB robot from an external device.

For a more detailed explanation, visit the Externally Guided Motion - Application Manual provided by ABB.

Why should I use EGM?

In our laboratory, we implement applications in mixed reality that are used to manipulate ABB robots. Such applications are made in Unity using the Microsoft Mixed Reality Toolkit. One of the current limitations of Unity is that it does not accept external development kits, such as the ABB PC SDK. One may argue that other options (e.g., ABB Robot Web Services) could be used to solve this problem, but most of the available alternatives do not allow developers to directly manipulate ABB robots from external devices. For this reason, in our laboratory, we tend to implement communication between devices and ABB robots using EGM. EGM is simple, efficient, and works perfectly with Unity (or any other environment that allows UDP communication in C#).

For those looking for options that are not implemented in C#, please refer to libraries such as abb_libegm (in C++) and abbegm (in Rust).

What is available in this repository?

Common questions

Sanity Checklist

To help developers (and myself) with common issues with EGM, here is a sanity checklist:

Need help?

If your question is related to the information contained in this repository, feel free to open a new issue.