Breathing Life Into Machines
- ABB robot with Externally Guided Motion [3124-1] option installed.
- See
abb_egm_hello_world
for detailed guidance on how to set up real-time control of ABB robots from an external PC.
Message Address | Arg Format | Description |
---|---|---|
/enable | bool | Toggle follow motion target on/off for all robots. |
/motion/reset | int | Motion target reset for Robot {index}. Reset defaults to a normalized coordinate of (0.5, 0.8, 0,5) within the safety bounds. |
/motion/pos | int, float, float, float | Motion target position {x, y} for Robot {index} (normalized coordinate). World target position is calculated based on the safety bounds. |
/motion/rot | int, float, float, float | Motion target orientation {rx, ry, rz} for Robot {index} (in degrees). |
/motion/rot/rx | int, float | Motion target x-axis rotation {rx} for Robot {index} (normalized range from [0, 1] to [-180, 180] degrees). Other rotation axes set to 0. |
/motion/rot/ry | int, float | Motion target y-axis rotation {ry} for Robot {index} (normalized range from [0, 1] to [-180, 180] degrees). Other rotation axes set to 0. |
/motion/rot/rz | int, float | Motion target z-axis rotation {rz} for Robot {index} (normalized range from [0, 1] to [-180, 180] degrees). Other rotation axes set to 0. |
/bounds/pos | int, float, float, float | Safety bounds position {x, y} of the center of the safety boundary (in meters), relative to the base of Robot {index}. bounds.pos.z value is auto-calculated based on bounds.height to maintain minimum distance from the ground. |
/bounds/width | int, float | Safety bounds width of Robot {index} safety boundary (in meters). |
/bounds/height | int, float | Safety bounds height of Robot {index} safety boundary (in meters). |
/bounds/depth | int, float | Safety bounds depth of Robot {index} safety boundary (in meters). |
The templates
folder has basic templates for communicating over OSC to the EGM Server
, including Processing, Grasshopper, and TouchOSC.
TouchOSC is an easy-to-use interface builder that can send and receive OSC messages from multiple sources. It's the quickest way to build your own interactive touch interface on your desktop, phone, or tablet — plus it's supported on nearly every operating system: Windows / macOS / Linux / iOS / Android / RasPi.
We can use TouchOSC to talk to the EGM Sever:
- Download TouchOSC for your platform here.
The desktop version is free.
- Open TouchOSC and configure your network settings.
- Open a template file in TouchOSC and press the play button to start running the file.
- Press the dot in the upper right corner to close the file.
- Tested on TouchOSC 1.2.7.190
- TouchOSC User Manual
Processing is a creative coding platform for sketching with code.
We can use Processing and the third-party library oscP5 to talk to the EGM Sever:
- Download and install Processing.
- Download and install oscP5 following these instructions.
- Copy
controller_template.pde
into your Processing Sketchbook. - Configure your network settings:
- Press play and run.
Python is a powerful and flexible programming language. We can use Python and the third-party library python-osc to talk to the EGM Server:
- Download and install Python.
- Install the
python-osc
library using pip:
pip install python-osc
- Run the
controller_template.py
script from command line with the following arguments:
python controller_template <ip_address> <port>
Example:
python controller_template "192.168.1.138" 55556
See example of 2D normalization.
This example updates the position of one robot's motion target when hovering, and enables/disables motion on mousePressed
.
This example updates the position of one robot's motion target based on the position of a physics-enabled box that you can throw around the canvas.
- Tested on Processing 4.3, oscP5 0.9.8, and controlP5 2.2.5