A ROS-based open-source tool suite for creating task-based robot control interfaces for manipulation and navigation. CRAFTSMAN allows non-robotics-experts to design and use cutting-edge user interfaces and control software for robotics systems.

The CRAFTSMAN project brings together several different technologies developed at TRACLabs.  It arose out of projects with NASA exploring inverse kinematics (TRAC-IK) and object-centric task encoding (Affordance Templates), and the control system we developed for the Atlas robot during the DARPA Robotics Challenge.  The basic CRAFTSMAN framework is an open-source tool suite based on the Robot Operating System (ROS) messaging and 3D visualization capabilities.  In recent projects, we have extended CRAFTSMAN to address the specific needs in industrial automation for International Fortune 500 companies, bimanual manipulation for the US government, and multi-limbed mobile manipulation for commercial robotics retailers.   In each case, we provide powerful yet simple-to-use robot control software and operator interfaces, customized for the client’s specific needs.


CRAFTSMAN components have been designed to work together in order to provide advanced manipulation capabilities for robot applications. CRAFTSMAN has been used with many different robot systems, and was developed to provide an easy-to-configure and easy-to-use tool suite for both expert and non-expert developers. It provides advanced kinematics and motion-generation algorithms for both configuration and Cartesian spaces. It also provides a graphical task description language called the Affordance Template (AT) framework that uses the underlying motion algorithms to greatly simplify the design and use of task-oriented behaviors. The current software implementation uses libraries from the ROS ecosystem, including the inter-process messaging and 3D visualization tools, and provides integration with standard navigation packages for systems that have mobile capabilities.


CRAFTSMAN architecture

Given a Cartesian end effector goal, goal tolerance settings, and task compliance (or conditioning) requirements, the Inverse Kinematics Library module, TRAC-IK, provides inverse kinematic solutions to a higher-level Cartesian Motion Planner. The Robot Interaction Tools module provides an application programming interface (API) for specifying Cartesian goals and requirements—either by a human teleoperator (through ROS’s RViz 3D interaction environment) or by robot applications defined by an Affordance Template—and executing the resulting plans on the robot hardware.  The Affordance Template specification is a task  description language that provides robot-independent definitions for tasks that can be used in a variety of contexts on different robot platforms. The Affordance Template layer of CRAFTSMAN provides interactive capabilities for human operators to monitor and adjust task goals at run-time, but it also supports fully autonomous execution.

Affordance templates allow a programmer to specify sequences of end effector waypoints represented in the coordinate systems of the environmental objects that a robot interacts with. Virtual overlays of both the objects and the task-specific end effector waypoints can be visualized in a 3D interactive environment, along with an avatar of the robot at its current location and the robot’s sensory data. Waypoints can be defined using any reference frame in the robot’s workspace, but are usually defined with respect to objects. Waypoints include conditioning information like the type of navigation to use or the style of arm motion to prefer (e.g., straight-line versus joint motion).  Waypoints can also specify attached objects to the robot, so that expected grasped objects will be accounted for automatically when checking collisions during planning.

During execution, templates can be localized (and scaled) by an operator (aligning CAD models to perception data in a 3D environment) or by autonomous perception algorithms. The waypoints associated with each template object move accordingly. Recent extensions to the affordance template specification language allow stance locations for mobile systems to be specified with respect to the virtual AT objects such that the robot “knows” where to move to in order to accomplish the manipulation task.

In the videos below, the first video is a brief tutorial on how to add navigation waypoints.  The second link leads to the TRACLabs CRAFTSMAN tutorial playlist.  Please visit our channel on Youtube for more details.



P. Beeson and B. Ames. “TRAC-IK: An Open-Source Library for Improved Solving of Generic
Inverse Kinematics”. In: Proceedings of the IEEE RAS Humanoids Conference. Seoul, Korea,
P. Beeson, S. Hart, and S. Gee. “Cartesian Motion Planning & Task Programming with
CRAFTSMAN”. In: RSS 2016 Workshop on Task and Motion Planning. Ann Arbor, Michigan,

S. Hart, P. Dinh, and K. Hambuchen. “The Affordance Template ROS Package for Robot
Task Programming”. In: IEEE International Conference on Robotics and Automation (ICRA).