Skip to content
Tomasz Winiarski edited this page Jul 20, 2016 · 20 revisions

A software to control a dual-arm system composed of two modified IRP-6 manipulators

IRp-6 is an electric, industrial, serial manipulator. Originally a single IRp-6 arm possessed 5 degrees of freedom (DOFs), however both IRp-6 manipulators possessed by our Institute were extended by additional degrees of freedom (i.e. the twist of the wrist). As a result the Robotics Laboratory 012 of WUT is equipped with two modified Irp6 manipulators, called:

  • Postument - with 6 degrees of freedom.
  • Track with 7 DOFs (it is located on a moving platform - a prismatic DOF).

Both manipulators are supplemented with force-torque sensors, two-finger grippers and colour cameras integrated with their end-effectors.

Irp6 software in its current version bases on Robot Operating System (ROS) and supports the Ubuntu 16.04 Linux operating system and ROS Kinetic. We advice to pass the ROS tutorials to become familiar with ROS, before one starts to program the robots. We also use git and GitHub as a standard, obligatory collaboration platform. Please learn how to use GitHub, before you start to develop your software.

The software to control IRp6 manipulators (IRpOS - IRp6 operating system) is composed out of the ROS and OROCOS packages. The There are three main modules of software to control Irp6 robot. Every module run as a ROS node:

  • Low level real-time Orocos software driver. This module is obligatory and can run both in hardware mode to control real robots and in no-hardware mode for the testing purpose.
  • Non real-time, high level application specific node (usually a python script and python library)
  • A module to compute visual data, typically created with usage of DisCODe framework. When there is no camera in the system the DisCODe ROS node is no needed. The DisCODe documentation and tutorial can be found at our wiki.

The low level manipulator driver can be treated as a virtual effector of robot or as a hardware abstraction layer. The virtual effector is implemented in C++ in Orocos robot programming framework and is executed as the real time ROS node. Its role is to: maintain low level manipulator drives control, interpolate and execute trajectory, realize position-force control, realize impedance control etc. From the other side it creates an intuitive and effective interface for high level applications, usually written in python and run as non-realtime ROS nodes. In general this part of software is ready to be used for the large class of robotic applications.

The software can run in two major modes:

  • hardware to control the real manipulators
  • nohardware to run the software without usage of real robots

The software can run both in laboratories of Robot Programing Group (012, P109) at Electronic Faculty and on other PCs (student's notebooks etc.). The Robot Programing Group laboratories are prepared to compile and run IRpOS, i.e. the required ROS and OROCOS packages are installed. On other PCs it is needed to be done by the user. In the Robot Programing Group laboratories there is a ready to run installation of IRpOS located at /opt/ws_irp6, prepared with a custom jenkins build sewer. For the purpose of IRpOS development in Robot Programing Group laboratories or at other PCs the IRpOS packages can be installed with the following procedure to create the catkin workspace and compile the source codes. The hardware mode can be run only in 012 laboratory. The no hardware mode can be run on every PC with properly installed IRpOS.

To work with IRp6 software:

  • You need to create your own Github account (if you do not have one)
  • When there is a need to create or modify the software, we advice to use Eclipse IDE for C++. Although Eclipse has some drawbacks it is very effective in usage unless it does not work fine ;)
  • You should organize the repositories in the catkin workspace. In general all of the software created for the purpose of student thesis should be located in individual GitHub repositories. Some advices are written in GitHub wiki for Irp6