An openFrameworks addon for controlling and interacting with robot arms.
- Getting Started
- Contact Info
- Additional Resources
- Known Issues
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 6-axis robots. We've included a number of examples that show you how different ways of controlling and interacting with a robot arm, including direct manipulation, geometry-based manipulation, motion capture-based interactions, and keyframe animation. 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 just work with Universal Robot's UR5 robot. In future developments, we would like to include kinematic models for additional robot brands. Please contact us if you would like us to include your robot model or if you would like specific features implemented.
Please see the
installAddons.sh script to clone all the external addons used in the examples. Also please note that these addons might depend on other external addons. Please reference the README for each of the external addons.
ofxRobotArm is structured as two parts:
ofxURDriver holds the specific control software and kinematic model for a UR5 robot;
ofxRobotArm holds the generic tools and techniques for controlling and interacting with a robot arm.
ofxURDriver adapts ThomasTimm's ur_modern_driver package for ROS to openFrameworks. To customize
ofxRobotArm to work with your specific model and brand of robot, use
ofxURDriver as a template for your robot's kinematic model and control protocol.
We've also included a number of example projects that show you the most common ways of programming 6-axis robots:
1. Direct Manipulation
example-basic-movelets you use your mouse to drag around and rotate your robot.
2. Timeline & KeyFramed Animation
example-timelinelets you use build keyframed animations to record and play robot movements.
3. Geometry-Driven Movements
example-follow-pathlets you import 2D and 3D paths for the robot to follow.
example-follow-surfacelets you project paths on a 3D surface for the robot to follow.
4. Motion Capture Based Interactions
example-follow-mocaplets the robot follow a rigid body detected by an OptiTrack Motion Capture System.
example-follow-mocap-pathlets you record a path for the robot follow using an OptiTrack Motion Capture System.
We've included a tutorial for getting started with
- Start with
example-basic-moveto learn how set up your robot for open-loop control, and to get the basic structure and workflow for
- Next try
- After that, move on to the geometry examples:
- The motion capture examples
example-follow-mocap-pathare fairly advanced and require very specific hardware configurations to run properly. A more common motion capture sensor, like a Kinect, could be used in place of an OptiTrack system to get similar results.
ofxRobotArm is licensed for NON-COMMERCIAL USE ONLY.
Copyright (c) 2016, Daniel Moore, Madeline Gannon, and The Frank-Ratchye STUDIO for Creative Inquiry All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- All advertising materials mentioning features or use of this software must display the following acknowledgement: This product includes software developed by Daniel Moore, Madeline Gannon, and The Frank-Ratchye STUDIO for Creative Inquiry.
- Neither the name of Daniel Moore, Madeline Gannon, and The Frank-Ratchye STUDIO for Creative Inquiry nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
- The terms of this License form a binding agreement between you, an individual user or non-commercial organization ("you" or "your"), and us
regarding your non-commercial use of this software. By downloading, accessing or otherwise using this software you indicate your agreement to be bound by these License terms.
PLEASE NOTE THAT THIS LICENSE IS INTENDED FOR NON-COMMERCIAL USE ONLY. IF YOU INTEND TO USE THIS SOFTWARE FOR A COMMERCIAL PURPOSE, PLEASE CONTACT firstname.lastname@example.org TO ARRANGE A COLLABORATION AGREEMENT WITH US BASED ON OUR COMMERCIAL LICENSE TERMS.
THIS SOFTWARE IS PROVIDED BY Daniel Moore, Madeline Gannon, and The Frank-Ratchye STUDIO for Creative Inquiry ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Daniel Moore, Madeline Gannon, and The Frank-Ratchye STUDIO for Creative Inquiry BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Here are some of the references and resources that have made
There are several known issues:
- Crashing on Exit when Not Connected to a robot
- Intermittent Protective Stops or Sudden Stops
- Collision Detection
- UR3/UR10 Support
- Support for ABB Robot Arms
- More Robot Arms!