Show EOL distros: 

abb: abb_common | abb_driver | abb_irb2400_moveit_config | abb_irb2400_moveit_plugins | abb_irb2400_support | abb_irb5400_support | abb_irb6600_support | abb_irb6640_moveit_config | abb_moveit_plugins | irb_2400_moveit_config | irb_6640_moveit_config

Package Summary

ROS-Industrial nodes for interfacing with ABB robot controllers.

This package is part of the ROS-Industrial program and contains nodes for interfacing with ABB industrial robot controllers.

abb: abb_driver | abb_irb2400_moveit_config | abb_irb2400_moveit_plugins | abb_irb2400_support | abb_irb5400_support | abb_irb6600_support | abb_irb6640_moveit_config | abb_irb6640_support | abb_resources

Package Summary

ROS-Industrial nodes for interfacing with ABB robot controllers.

This package is part of the ROS-Industrial program and contains nodes for interfacing with ABB industrial robot controllers.

abb: abb_driver | abb_irb2400_moveit_config | abb_irb2400_moveit_plugins | abb_irb2400_support | abb_irb4400_support | abb_irb5400_support | abb_irb6600_support | abb_irb6640_moveit_config | abb_irb6640_support | abb_resources

Package Summary

ROS-Industrial nodes for interfacing with ABB robot controllers.

This package is part of the ROS-Industrial program and contains nodes for interfacing with ABB industrial robot controllers.

Package Summary

ROS-Industrial nodes for interfacing with ABB robot controllers.

This package is part of the ROS-Industrial program and contains nodes for interfacing with ABB industrial robot controllers.

  • Maintainer status: maintained
  • Maintainer: Levi Armstrong (Southwest Research Institute) <levi.armstrong AT swri DOT org>
  • Author: Edward Venator, Jeremy Zoss, Shaun Edwards
  • License: BSD

Overview

This package is part of the ROS-Industrial program.

Features

This package currently supports the following:

  • IRC5 controllers with RobotWare 5.13 and up

  • Single mechanical units (ie: a basic 6 axis robot)
  • Up to 4 integrated external linear axes (in a single mechanical unit)

  • Joint state reporting for all axes (in a single mechanical unit)
  • Trajectory downloading for all axes (in a single mechanical unit)

The driver is largely manipulator agnostic, meaning that it will work with just about any ABB robot an IRC5 controller is compatible with.

Multi-group robots

There is no special support for robot controllers configured with multiple mechanical units, but this can be worked-around by setting up multiple instances of the RAPID programs and assigning them to specific units. Paired with multiple instances of the ROS nodes (appropriately namespaced) this supports asynchronous motion execution and state reporting in multi-group robot setups.

YuMi

While it is possible to use this driver with YuMi, for now this is not recommended.

There are many packages that target YuMi specifically, one of which is kth-ros-pkg/yumi. As of now, users of an IRB 14000 are suggested to consider using that package.

Status

The package is usable as-is, but is not feature complete. However, no significant development is planned, as development focus has shifted to abb_libegm and abb_librws.

Community contributed usability enhancements and new features will however be accepted and merged.

Requirements

The ABB ROS Server code is written in RAPID, using a socket interface and multiple parallel tasks. The code was originally tested on an IRC5 controller, with an IRB-2400 robot, but other combinations should also work. The following controller options are required:

  • 623-1: Multitasking

  • 672-1: Socket Messaging (in recent RobotWare versions, this option is included with 616-1: PC Interface)

RobotWare OS version 5.13 or later is required due to the use of certain socket options. Earlier versions may work, but will require modifications to the RAPID code.

Tutorials

Use the links on the Tutorials page for access to the tutorials. These explain how to install and set up the RAPID programs on the controller, as well as how to use them in conjunction with the ROS nodes in this package.

Nodes

robot_state

Connects to the StateServer RAPID task on the controller and publishes joint states.

Action Feedback

feedback_states (control_msgs/FollowJointTrajectory)
  • Provide feedback of current vs. desired joint position (and velocity/acceleration).

Published Topics

joint_states (sensor_msgs/JointState)
  • Joint state for all joints of the connected robot.

Parameters

robot_ip_address (str, default: none)
  • IP address of the controller to connect to. If this is not set the node will exit.
~port (integer, default: 11002)
  • TCP port the StateServer RAPID task is listening on.
robot_description (str, default: none)
  • The urdf xml robot description.
controller_joint_names ([str, str, str, ..])
  • (optional) A list containing all joints the driver should assume control over. If this parameter is not found, the driver will try to extract this from the robot_description parameter, but this will result in all joints in the urdf to be included. If the driver should only publish joint states for a subset of the joints in the urdf, the controller_joint_names parameter must be set.

motion_download_interface

Connects to the MotionServer RAPID task on the controller and uploads trajectories.

Subscribed Topics

joint_states (sensor_msgs/JointState)
  • Joint state for all joints of the connected robot.
joint_path_command (trajectory_msgs/JointTrajectory)
  • Execute a pre-calculated joint trajectory on the robot.

Services

joint_path_command (industrial_msgs/CmdJointTrajectory)
  • Execute a new motion trajectory on the robot.
stop_motion (industrial_msgs/StopMotion)
  • Stop execution of the current motion at the earliest time possible.

Parameters

robot_ip_address (str, default: none)
  • IP address of the controller to connect to. If this is not set the node will exit.
~port (integer, default: 11000)
  • TCP port the MotionServer RAPID program is listening on.
robot_description (str, default: none)
  • The urdf xml robot description.
controller_joint_names ([str, str, str, ..], default: none)
  • (optional) A list containing all joints the driver should assume control over. If this parameter is not found, the driver will try to extract this from the robot_description parameter, but this will result in all joints in the urdf to be included. If the driver should only control a subset of the joints in the urdf, the controller_joint_names parameter must be set.

Contact us/Technical support

For questions about this package or ROS-Industrial in general, please contact the developers by posting a message in the ROS-Industrial category on ROS Discourse.

Wiki: abb_driver (last edited 2020-08-11 12:42:03 by GvdHoorn)