ROS-Industrial Tutorials Overview

ROS-Industrial contains many software packages. The packages are split into two categories: general and vendor specific. General information about each package can be found by following links to the package specific-wiki.

Contact us using the developers group (swri-ros-pkg-dev) if you find any problems/issues with these tutorials.

Bugs related to a specific vendor stack should be reported to that stack's issue tracker, see the package pages for links. All other issues can be submitted to the generic issue tracker. Use GitHub to report bugs or submit feature requests. [View active issues]

General ROS-Industrial

The following sections cover ROS-Industrial general capabilities, libraries, messages, etc.

Training

The training class curriculum is recommended for new users to both ROS and ROS-Industrial.

  1. Basic Developers' Training Class Curriculum - ROS-I Consortium class for C++ programmers starting with basic Linux and concluding with a vision-enabled pick and place project. Includes slides, step-by-step exercises, and test code. Visit GitHub for the code.

General

These tutorials cover assorted topics on ROS-Industrial. The tutorials do not have a specific order and are meant to be followed on a topic by topic basis.

  1. Create a URDF for an Industrial Robot

    Walks through the steps and conventions for creating a Unified Robot Description Format (URDF) for an industrial robot.

  2. Create a MoveIt Package for an Industrial Robot

    Walks through the steps of creating a moveIt package for an industrial robot. The moveIt package provides collision-aware path planning for the robot.

  3. Working with ROS-Industrial Robot Support Packages

    This tutorial will provide an overview of the files and directories that make up a ROS-Industrial robot support package and show how to make proper use of the functionality provided by such packages.

  4. Create a Joint Position Streaming Interface utilizing TCP Socket Libraries

    These notes apply to creating the joint position streaming interface on an industrial controller using the ROS-Industrial TCP socket libraries. This interface is good for basic motion and proof of concept integration.

  5. Create a kinematics solution using IK Fast

    This tutorial describes how to automatically create a fast, closed-form analytical kinematics solution for your robot using the IKFast module from OpenRAVE.

Industrial Calibration Toolbox

  1. Intrinsic Camera Calibration (work in progress)

    This tutorial shows how to use the intrinsic camera calibration package to compute the camera intrinsic parameters using a rail guide and calibration target. The procedure uses a slightly different cost function than OpenCV and Matlab. It relies on knowing the distance the camera is moved between successive images. When performed precisely, the routine is both quicker because it requires fewer images and more accurate because the parameters have lower co-variance.

  2. Multi-Camera Extrinsic Calibration with a Target

    This tutorial explains how to perform an extrinsic calibration of a network of cameras, through two examples. You will learn how to write and run a calibration script which defines the cameras, the targets, and a series of observations. You will also learn how to modify an existing Xacro or Urdf model to provide a seamless interface for installing the calibration results. You will also be introduced to the concept of a cost function. One significant contribution of this library is the variety of cost functions it contains.

  3. Extrinsic calibration of the David SLS-2 mounted on a robot

    This tutorial shows how to perform the extrinsic calibration of a David SLS-2 3D sensor on an industrial Fanuc robot.

  4. Extrinsic Calibration of Camera(s) to a Static Target (Deprecated)

    This tutorial will explain how to use the industrial_extrinsic_cal package to calibrate one or two cameras to a checkerboard or circle grid target. If using two cameras, they both should have the same target in their field of view. If using the unchanged repository provided yaml files for parameters, then you will need at least one Asus/Kinect cameras and a checkerboard (12x12 square checkerboard (11x11 points)) or circle grid (5x7 circles).

  5. Webcam calibration

    Simple example for industrial extrinsic calibration using a webcam

Create a new tutorial:

Industrial MoveIt

The Industrial MoveIt software package contains industrial add-ons to the MoveIt motion planning library.

  1. Creating Custom IK Solver with constrained_ik

    Creating custom instance of IK solver using constrained IK package

  2. Adding constrained_ik to MoveIt kinematics

    Covers the steps to expose constrained_ik as an IK solver for MoveIt

Create a new tutorial:

Industrial Trajectory Filters

The Industrial Trajectory Filters package contains filters for the trajectory_msgs/JointTrajectory messages.

The following are Industrial Trajectory Filter specific tutorials:

  1. Converting arm navigation trajectory filters into MoveIt Planning Request Adapters

    This tutorial describes how to convert an Arm Navigation Trajectory Filter Plugin into a MoveIt Planning Request Adapter that can be compiled in a catkin package. (<=Groovy)

  2. Developing a Planning Request Adapter

    This tutorial is a step by step development of a planning request adapter using a simple smoothing filter as an example

  3. Using a planning adapter inside of MoveIt.

    This tutorial will show you how to use a planning request adapter with MoveIt.

Tutorials for using trajectory filters with Arm Navigation (deprecated in Groovy, unsupported in Hydro and later):

  1. Utilizing Trajectory Filters with a Generated Arm Navigation Package

    Gives an overview of the common industrial trajectory filters and shows how to apply them to an auto-generated arm navigation package

Vendor Specific Tutorials

ROS-Industrial provides supporting software for many vendor platforms. Each platform requires different setup and configuration steps in order to be used with ROS-Industrial.

ABB

The ABB software package contains drivers and supporting packages for ABB industrial robots.

The following tutorials are provided to demonstrate installation and operation of an ABB robot using the ROS Industrial interfaces:

  1. Installing the ABB ROS Server

    This tutorial walks through the steps of installing the ROS server code on the ABB robot controller and configuring the required controller settings.

  2. Running the ROS Server

    This tutorial describes how to run the ABB ROS Server, so the robot will execute motion commands sent from the ROS client node.

The following tutorials show how to use the ABB Robot Studio with the driver:

  1. Using Simulated Robot in Robot Studio
    This tutorial describes how to setup the ABB RobotStudio simulator for use with the ROS-Industrial driver.

Create a new tutorial:

Fanuc

The Fanuc software package contains drivers and supporting packages for Fanuc industrial robots.

Indigo

  1. Installation of ROS-Industrial on Fanuc controllers

    This tutorial guides you through an installation of the ROS-Industrial programs on Fanuc controllers.

  2. Configuration of ROS-Industrial on Fanuc controllers

    This tutorial guides you through the configuration of the ROS-Industrial Fanuc components on the controller.

  3. Running the ROS-Industrial programs on your Fanuc robot

    This tutorial explains how to run the ROS-Industrial programs installed in the previous tutorial(s) in simulation and on the real hardware.

Jade

  • Please refer to the Indigo tutorials.

Kinetic

  • Please refer to the Indigo tutorials.

Motoman

The Motoman software package contains drivers and supporting packages for Motoman industrial robots.

The following tutorials are general motoman tutorials and utilize several packages:

  1. Perform Path Planning in Simulation Using Arm Warehouse Viewer

    Gives instructions for launching the arm warehouse viewer for the motoman sia10D robot.

The following tutorials are specific to the dx100 package (<= ROS Groovy):

  1. Creating a DX100 Server Application(<=Groovy)

    This tutorial walks through the steps of creating a server application for the dx100 controller. The server application runs on the controller and allows communications with ROS nodes.

The following tutorials are specific to the motoman_driver package(>=ROS Hydro). This package supports drivers for DX100, DX200, and FS100 controllers:

  1. Installing the Motoman FS/DX ROS Server (Indigo)

    This tutorial walks through the steps of installing the ROS server code on the FS and DX robot controllers

  2. Installing the Motoman FS/DX100 ROS Server(Hydro)

    This tutorial walks through the steps of installing the ROS server code on the FS/DX100 robot controller

  3. Using the Motoman FS/DX ROS Interface(Hydro)

    This tutorial walks through the steps of using the FS/DX interface

  4. Creating a Dual-Arm System (Indigo+)

    This tutorial is related to the setup and configuration for a Dual-Arm system(Multi-Groups) using the Motoman driver

Create a new tutorial:

Robotiq

The Robotiq software package contains drivers and supporting packages for Robotiq adaptive grippers.

  1. Control of an S-Model Gripper using the Modbus TCP protocol

    This tutorial explains how to use the "robotiq_s_model_control" and "robotiq_modbus_tcp" packages to control an S-Model Gripper configured with the Modbus TCP protocol. Please visit this website for more information on the Robotiq Adaptive Robot Grippers.

  2. No Title

    This tutorial explains how to control a Robotiq C-model gripper over modbus RTU protocol using the ROS-I Robotiq packages

Create a new tutorial:

Universal Robot

The Universal Robot software package contains drivers and supporting packages for Universal Robot industrial robots.

The following tutorials are provided to demonstrate installation and operation of a Universal Robot using the ROS Industrial interfaces:

  1. Getting Started with a Universal Robot and ROS-Industrial

    This tutorial guides you through the process of establishing first contact between ROS-Industrial and a Universal Robot controller.

Create a new tutorial:

External Package Tutorials

The following sections provide links to external packages on which ROS-Industrial depends on heavily.

MoveIt

The MoveIt package is the core arm planning library for ROS-Industrial. Tutorials can be found here.

Implementation Notes

The tutorials below include just implementation notes. They may or may not become complete tutorials themselves. They are included here because the information in them is not found anywhere else.

  1. Improving ROS-Industrial motion on an Industrial Robot (Implementation Notes)

    This tutorial gives some background information and hint/tips/tricks to achieve faster and smoother motion when using ROS-Industrial

  2. Porting from Google Code to Github (Implementation Notes)

    Short instructions for moving a package from Google code to Github

  3. Create a simple EtherCAT IO network (Implementation Notes)

  4. ROS-Industrial Pull Request Review Process

    Outline of the ROS-Industrial core repository pull request review process.

  5. Verifying a new robot package (Implementation Notes)

  6. Porting Arm Navigation Package from Fuerte to Groovy (Implementation Notes)

  7. Installing PCL Plugin in ParaView (Implementation Notes)

  8. File and directory layout for robot support repositories (Implementation Notes)

    How to organise files and directories within a robot support repository

Coming Soon Tutorials

Tutorials for the following packages are coming soon.

Adept

The Adept software package contains drivers and supporting packages for Adept industrial robots.

Coming Soon

Industrial Core

The Industrial Core software package contains core functionality for ROS-Industrial.

Coming Soon

Deprecated

The tutorials below have been deprecated since they do not apply to the current release of ROS-Industrial. The description indicates the last ROS-Industrial version in which they applied.

1. Create an Arm Navigation Package for and Industrial Robot(<=Groovy)

  • This tutorial describes how to create and arm navigation package.

Wiki: Industrial/Tutorials (last edited 2015-01-20 15:31:23 by Paul Hvass)