Skip to content

CreativeInquiry/ofxRobotArm

Repository files navigation

ofxRobotArm V2021.BETA.1

TESTED ON THE FOLLOWING BOTS

  1. ABB IRB120

USE AT YOUR OWN RISK

PLEASE HELP FIX THE BUGS

An openFrameworks addon for controlling and interacting with robot arms.

IRB120

About

ofxRobotArm is an openFrameworks addon for doing creative things with robot arms. The goal of the addon is to remove as many technical barriers as possible to get up and running with robots. We've included an example of how to get up and running with ofxRobotArm and your robot arm. By developing ofxRobotArm for openFrameworks, we hope to help you extend human-robot interaction in new and diverse ways.

Currently the addon is configured to work with Universal Robot's and ABB robot arms (untested). KUKA and xArm Support is pending.

Development for ofxRobotArm was sponsored by The Frank-Ratchye STUDIO for Creative Inquiry. Technical development was lead by Dan Moore and Madeline Gannon.

For Mac and Linux Only (Pending Windows support the URDriver needs to be rewritten)

Building on macOS 11.4 Big Sur and XCode Version 12.5.1 (12E507) is sort of working at the moment!

You need to turn on Build Active Architecture Only in the Architectures of Build Settings otherwise it won't link. We need the dependencies recompiled for arm64 and x86_64.

Tested on Ubuntu 20.04 and macOS 10.15

KinematicModel

Dependencies

After download, you can run the installAddons.sh script to clone all the external addons used in the ofxRobotArm examples and the core of ofxRobotArm.

Non Core Addon depedencies

  • ofxGizmo
  • ofxEasing
  • ofxTiming
  • ofxYAML
  • ofxSTL

You will need to download the other precompiled dependencies via GIT LSF

  • libabb_libegm
  • libabb_librws
  • protobuf
  • relaxedIK

On Linux You will need to install boost

apt install libboost-all-dev

On Mac you will need to unzip the boost.zip and replace the version shipped with openFrameworks.

Overview

ofxRobotArm is structured in multiple parts: Controllers, Drivers, Kinematics, Models, Path, Utils, and World. Controllers contain the main RobotController and other useful controllers. Drivers contains the drivers for each manufacturer ofxRobotArm supports: Universal Robots, ABB, xArm, and many more are coming. Kinematics contains the forward and inverse kinematic solvers. Model contains the representation of the robot arm loaded from a URDF. Path contains helper classes for interfacing with paths. Utils contain many useful utilities. World contains useful classes for describing the working enviroment.

Examples

We've also included an example project that show you the most common ways of programming 6-axis robots:

**1. FOLLOW_GIZMO 
The Robot follows the end effector goal position and prientation represented as a gizmo. This allows for direct manipulation of the end effector pose.
**2. LOOK_AT_TARGET
The orientation of the end effector is set by the look-at transform from the end effector Pose to the look at target gizmo.  
**3. FOLLOW_CIRCLE
This mode follows a sprial path that is generated at run time.  The orientation is set by the end effector goal gizmo. 

Licensing

ofxRobotArm is licensed under the THE ANTI-CAPITALIST SOFTWARE LICENSE (v 1.4)

Contact Info

Dan Moore | Make It Do A Thing! | @danzeeeman

Madeline Gannon | A TON A TON | @madelinegannon

The Frank-Ratchye STUDIO for Creative Inquiry | studioforcreativeinquiry.org | @creativeinquiry

Additional Resources

Here are some of the references and resources that have made ofxRobotArm possible:

Known Issues

There are several known issues but please report anything you see out of place or weird. There are known weirdnesses with the initial orientation with some bots, requiring the invsere of the read orientation. If you would like to help out with this issue please go here

UR5

Future Development

  • CollisionIK
  • More Robot Arms!