ABB Driver

  • The ABB Totalflow driver for KEPServerEX connects to ABB Totalflow devices that support the native Totalflow serial protocol. The Totalflow protocol is typically used in upstream Oil & Gas for process control and hydrocarbon measurement at the wellhead, as well as in midstream Oil & Gas facilities.
  • ABB offers several software tools to ease and enhance the use of ABB drives. Especially when straightforward routines cannot be applied, these tools provide a user-friendly and easy-to-use approach for the selection, commissioning and use of ABB drives.
  • The DriveConfig kit is a new drive configuration tool for ABB component drives, ACS55, offering fast and safe configuration of unpowered drives. DriveBrowser for monitoring and tuning low voltage general machinery, standard, and industrial drives over Ethernet network.
  • You must enter an e-mail address. You must enter a password. Forgot your password?

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 LinksDependencies (3)
Used by (4)

ABB (ABBN: SIX Swiss Ex) is a leading global technology company that energizes the transformation of society and industry to achieve a more productive, sustainable future. By connecting software to its electrification, robotics, automation and motion portfolio, ABB pushes the boundaries of technology to drive performance to new levels.

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: developed
  • Maintainer: Shaun Edwards <sedwards AT swri DOT org>
  • Author: Edward Venator, Jeremy Zoss, Shaun Edwards <sedwards AT swri DOT org>
  • License: BSD
  • Bug / feature tracker: https://github.com/ros-industrial/abb/issues
  • Source: git https://github.com/ros-industrial/abb.git (branch: hydro)
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 LinksDependencies (2)
Used by (8)

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: developed
  • Maintainer: Shaun Edwards <sedwards AT swri DOT org>
  • Author: Edward Venator, Jeremy Zoss, Shaun Edwards <sedwards AT swri DOT org>
  • License: BSD
  • Bug / feature tracker: https://github.com/ros-industrial/abb/issues
  • Source: git https://github.com/ros-industrial/abb.git (branch: indigo)
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 LinksDependencies (3)
Used by (15)
Jenkins jobs (7)

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
  • Bug / feature tracker: https://github.com/ros-industrial/abb_driver/issues
  • Source: git https://github.com/ros-industrial/abb_driver.git (branch: kinetic-devel)
Package LinksDependencies (3)
Jenkins jobs (6)

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
  • Bug / feature tracker: https://github.com/ros-industrial/abb_driver/issues
  • Source: git https://github.com/ros-industrial/abb_driver.git (branch: kinetic-devel)

Abb Drive Run Enable Missing

Contents

  1. Features
  2. Nodes
    1. robot_state
    2. motion_download_interface

Overview

This package is part of the ROS-Industrial program.

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_robot_driver (with abb_libegm and abb_librws).

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

YuMi

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

Users who have the EGM option available, consider using abb_robot_driver, as it will offer the best possible motion quality.

The driver does not include any robot models (ie: _description packages) however. Various sources for those exist, one of which could be kth-ros-pkg/yumi.

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.

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 (

Abb Driver Installer

[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

Abb Drive Reset

(industrial_msgs/CmdJointTrajectory)
  • Execute a new motion trajectory on the robot.
stop_motion (industrial_msgs/StopMotion)

Abb Drive Software

  • 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.
Abb~port (

Abb Drives

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.

Note: This tutorial assumes basic familiarity with the ABB robot controller. Consult the manufacturer's documentation for further details on any of the steps listed in this tutorial.
Please ask about problems and questions regarding this tutorial on answers.ros.org. Don't forget to include in your question the link to this page, the versions of your OS & ROS, and also add appropriate tags.
Description: This tutorial walks through the steps of installing the ROS server code on the ABB robot controller and configuring the required controller settings.
Keywords: ABB, Industrial, IRC5
Tutorial Level: INTERMEDIATE
Next Tutorial: Next, you'll learn how to run and manage the ABB ROS Server Running the server

Contents

  1. Configuring Controller Settings

This tutorial has two parts: installing server code and configuring the controller with the appropriate tasks.

Prerequisites

The ABB ROS Server code is written in RAPID, using a socket interface and multiple parallel tasks. The code was originally tested on an IRC-5 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.

Installing Server Code

All files in the abb_driver/rapid (Indigo and later) directory should be copied to the robot controller. This tutorial assumes the files are copied to a 'ROS' subdirectory under the system's HOME directory (e.g. /<system>/HOME/ROS/*).

See the manufacturer's documentation for file-transfer methods. RobotStudio Online and USB drives are often convenient methods to transfer files to the controller.

Configuring Controller Settings

The ROS Server code requires 3 tasks. Some modules are loaded to specific tasks, and others are shared between tasks, as described below:

File Overview

  • Shared by all tasks
    • ROS_common.sys -- Global variables and data types shared by all files

    • ROS_socket.sys -- Socket handling and simple_message implementation

    • ROS_messages.sys -- Implementation of specific message types

  • Specific task modules
    • ROS_stateServer.mod -- Broadcast joint position and state data

    • ROS_motionServer.mod -- Receive robot motion commands

    • ROS_motion.mod -- Issues motion commands to the robot

Create Tasks

  1. Browse to Controller tabConfiguration EditorControllerTask, then right-click New Task

    (In RobotStudio 5, this is found under ABBControl PanelConfigurationTopicsControllerTask)

  2. Create 3 tasks as follows:

    Name

    Type

    Trust Level

    Entry

    Motion Task

    ROS_StateServer

    SEMISTATIC

    NoSafety

    main

    NO

    ROS_MotionServer

    SEMISTATIC

    SysStop

    main

    NO

    T_ROB1

    NORMAL

    main

    YES

    It is easiest to wait until all configuration tasks are completed before rebooting the controller.

    NOTES:

    1. The T_ROB1 motion task probably already exists on your controller.

    2. If T_ROB1 has existing motion-control modules, you may need to rename the main() routine in ROS_Motion.mod to ROS_main(). In this case, set the Entry point for T_ROB1 task to ROS_main().

    3. For multi-robot controllers, specify the desired robot (e.g. rob1) for each task

    4. SEMISTATIC tasks will auto-start when controller is booted. They are visible, but cannot be easily seen for troubleshooting. For debug or development purposes, it may be desired to set both ROS_*Server tasks to Type=NORMAL.

Create Signals

  1. Browse to Controller tabConfiguration EditorI/O SystemSignal, then right-click New Signal

    (In RobotStudio 5, this is found under ABBControl PanelConfigurationTopicsI/OSignal)

  2. Create 7 signals as follows:

    Name

    Type of Signal

    signalExecutionError

    Digital Output

    signalMotionPossible

    Digital Output

    signalMotorOn

    Digital Output

    signalRobotActive

    Digital Output

    signalRobotEStop

    Digital Output

    signalRobotNotMoving

    Digital Output

    signalRosMotionTaskExecuting

    Digital Output

    It is easiest to wait until all configuration tasks are completed before rebooting the controller.

Tie Signals to the System Outputs

  1. Browse to Controller tabConfiguration EditorI/O SystemSystem Output, then right-click New System Output

    (In RobotStudio 5, this is found under the ABBControl PanelConfigurationTopicsI/OSystem Output)

  2. Add one entry for signal as follows:

    Signal Name

    Status

    Arg 1

    Arg 2

    Arg 3

    Arg 4

    signalExecutionError

    Execution Error

    N/A

    T_ROB1

    N/A

    N/A

    signalMotionPossible

    Runchain OK

    N/A

    N/A

    N/A

    N/A

    signalMotorOn

    Motors On State

    N/A

    N/A

    N/A

    N/A

    signalRobotActive

    Mechanical Unit Active

    ROB_1

    N/A

    N/A

    N/A

    signalRobotEStop

    Emergency Stop

    N/A

    N/A

    N/A

    N/A

    signalRobotNotMoving

    Mechanical Unit Not Moving

    ROB_1

    N/A

    N/A

    N/A

    signalRosMotionTaskExecuting

    Task Executing

    N/A

    T_ROB1

    N/A

    N/A

Load Modules to Tasks

  1. Browse to Controller tabConfiguration EditorControllerAutomatic Loading of Modules, then right-click New Automatic Loading of Modules

    (In RobotStudio 5, this is found under ABBControl PanelConfigurationTopicsControllerAutomatic Loading of Modules)

  2. Add one entry for each server file as follows:

    File

    Task

    Installed

    All Tasks

    Hidden

    HOME:/ROS/ROS_common.sys

    NO

    YES

    NO

    HOME:/ROS/ROS_socket.sys

    NO

    YES

    NO

    HOME:/ROS/ROS_messages.sys

    NO

    YES

    NO

    HOME:/ROS/ROS_stateServer.mod

    ROS_StateServer

    NO

    NO

    NO

    HOME:/ROS/ROS_motionServer.mod

    ROS_MotionServer

    NO

    NO

    NO

    HOME:/ROS/ROS_motion.mod

    T_ROB1

    NO

    NO

    NO

  3. After the last change, select YES to restart the controller and apply the changes.

Updating Software

Abb Drive Rbcu

To update robot-server files with new code versions, use the following procedure to ensure that the changes are actually applied:

  1. Copy the new/updated files onto the robot controller, as before.
  2. Restart the controller using a P-Start

    • ABBRestartAdvancedP-StartOK

    • NOTE: This will erase any existing modules that have been loaded to memory. This may cause compilation issues on restart. If this is a concern, try another method: Warm Start, manually reloading modules (may require setting SEMISTATIC tasks to NORMAL tasks), etc.

  3. After the controller reboots, the new changes should be active.