Skip to content

Connection Failure with IRB 120 on RobotWare 6.04 - RWS API Incompatibility? #89

@hylander2126

Description

@hylander2126

Please bear with me as this is my first time creating an issue within github.

Objective:

I am trying to connect a physical ABB IRB 120 robot to a ROS 2 Humble workspace using the abb_ros2 driver built from the humble branch source. The goal is to establish a basic EGM connection to eventually send joint commands.

Yes, I know the current package does not include support for IRB120 but I'm looking to add my work to that end.

My Environment:

  • Robot: ABB IRB 120
  • Controller: IRC5
  • Firmware: RobotWare 6.04.0140
  • ROS Distro: ROS 2 Humble
  • OS: Ubuntu 22.04

Observed Behavior:

When using configure_via_rws:=true: The ROS driver fails to initialize, repeatedly printing the following warning:

[WARN] [ABBHardwareInterfaceUtilities]: Failed to establish RWS connection to the robot controller (waiting indefinitely), reason: 'Failed to collect complementary mechanical unit info'
And after the ROS driver is launched and waiting, starting the RAPID program on the FlexPendant results in a timeout error on the robot's event log:
T_ROB1 -> Communication timedout

When using configure_via_rws:=false
$ ros2 launch abb_bringup abb_control.launch.py description_package:=irb120_config description_file:=irb120_egm.urdf.xacro runtime_config_package:=irb120_config controllers_file:=irb120_controllers.yaml use_fake_hardware:=false configure_via_rws:=false launch_rviz:=false rws_ip:=192.168.125.1 rws_port:=80 [INFO] [launch]: All log files can be found below /home/hylander/.ros/log/2025-09-02-16-43-10-816698-laptop-ubeast-43975 [INFO] [launch]: Default logging verbosity is set to INFO [INFO] [robot_state_publisher-1]: process started with pid [43977] [INFO] [ros2_control_node-2]: process started with pid [43980] [INFO] [spawner-3]: process started with pid [43982] [INFO] [spawner-4]: process started with pid [43984] [ros2_control_node-2] [WARN] [1756845791.084291971] [controller_manager]: [Deprecated] Passing the robot description parameter directly to the control_manager node is deprecated. Use '~/robot_description' topic from 'robot_state_publisher' instead. [ros2_control_node-2] [INFO] [1756845791.084722179] [resource_manager]: Loading hardware 'ABBMultiInterfaceHardware' [ros2_control_node-2] [INFO] [1756845791.093792884] [resource_manager]: Initialize hardware 'ABBMultiInterfaceHardware' [ros2_control_node-2] [INFO] [1756845791.094137845] [ABBSystemHardware]: Generating robot controller description from HardwareInfo. [ros2_control_node-2] [INFO] [1756845791.094270194] [ABBSystemHardware]: Configured component joint_1 of type joint with range [-2.880, 2.880] [ros2_control_node-2] [INFO] [1756845791.094289160] [ABBSystemHardware]: Configured component joint_2 of type joint with range [-1.920, 1.920] [ros2_control_node-2] [INFO] [1756845791.094299136] [ABBSystemHardware]: Configured component joint_3 of type joint with range [-1.920, 1.222] [ros2_control_node-2] [INFO] [1756845791.094309237] [ABBSystemHardware]: Configured component joint_4 of type joint with range [-2.793, 2.793] [ros2_control_node-2] [INFO] [1756845791.094320025] [ABBSystemHardware]: Configured component joint_5 of type joint with range [-2.094, 2.094] [ros2_control_node-2] [INFO] [1756845791.094329507] [ABBSystemHardware]: Configured component joint_6 of type joint with range [-6.981, 6.981] [ros2_control_node-2] [INFO] [1756845791.094368004] [ABBSystemHardware]: Robot controller description: [ros2_control_node-2] ============================================================ [ros2_control_node-2] = Summary of robot controller at ':0' [ros2_control_node-2] ============================================================ [ros2_control_node-2] # General Information: [ros2_control_node-2] |- RobotWare version: [ros2_control_node-2] |- System name: [ros2_control_node-2] |- System type: [ros2_control_node-2] |- Options: [ros2_control_node-2] [ros2_control_node-2] # Mechanical Units: [ros2_control_node-2] |- Unit: [ros2_control_node-2] [ros2_control_node-2] # Mechanical Unit Groups: [ros2_control_node-2] |- N/A (only for MultiMove systems) [ros2_control_node-2] ============================================================ [ros2_control_node-2] [INFO] [1756845791.094376683] [ABBSystemHardware]: Configuring EGM interface... [ros2_control_node-2] [INFO] [1756845791.094625272] [ABBSystemHardware]: Configuring EGM for mechanical unit group on port 6510 [ros2_control_node-2] [INFO] [1756845791.095339411] [resource_manager]: Successful initialization of hardware 'ABBMultiInterfaceHardware' [ros2_control_node-2] [INFO] [1756845791.095647039] [resource_manager]: 'configure' hardware 'ABBMultiInterfaceHardware' [ros2_control_node-2] [INFO] [1756845791.095667192] [resource_manager]: Successful 'configure' of hardware 'ABBMultiInterfaceHardware' [ros2_control_node-2] [INFO] [1756845791.095683203] [resource_manager]: 'activate' hardware 'ABBMultiInterfaceHardware' [ros2_control_node-2] [INFO] [1756845791.095692273] [ABBSystemHardware]: Connecting to robot... [robot_state_publisher-1] [INFO] [1756845791.097717614] [robot_state_publisher]: got segment base [robot_state_publisher-1] [INFO] [1756845791.097804646] [robot_state_publisher]: got segment base_link [robot_state_publisher-1] [INFO] [1756845791.097817009] [robot_state_publisher]: got segment flange [robot_state_publisher-1] [INFO] [1756845791.097824623] [robot_state_publisher]: got segment link_1 [robot_state_publisher-1] [INFO] [1756845791.097831245] [robot_state_publisher]: got segment link_2 [robot_state_publisher-1] [INFO] [1756845791.097837766] [robot_state_publisher]: got segment link_3 [robot_state_publisher-1] [INFO] [1756845791.097844237] [robot_state_publisher]: got segment link_4 [robot_state_publisher-1] [INFO] [1756845791.097850732] [robot_state_publisher]: got segment link_5 [robot_state_publisher-1] [INFO] [1756845791.097857561] [robot_state_publisher]: got segment link_6 [robot_state_publisher-1] [INFO] [1756845791.097863909] [robot_state_publisher]: got segment tool0 [robot_state_publisher-1] [INFO] [1756845791.097870463] [robot_state_publisher]: got segment world [spawner-3] [INFO] [1756845791.423314036] [spawner_joint_state_broadcaster]: waiting for service /controller_manager/list_controllers to become available... [spawner-4] [INFO] [1756845791.450399373] [spawner_joint_trajectory_controller]: waiting for service /controller_manager/list_controllers to become available... [ros2_control_node-2] [INFO] [1756845791.595817874] [ABBSystemHardware]: Not connected to robot... [ros2_control_node-2] [INFO] [1756845792.595975695] [ABBSystemHardware]: Not connected to robot... [ros2_control_node-2] [INFO] [1756845793.596670057] [ABBSystemHardware]: Not connected to robot... ^C[WARNING] [launch]: user interrupted with ctrl-c (SIGINT)

Diagnostics

I've confirmed the robot is communicating with the PC using tcpdump (robot is 192.168.125.1 and PC is 192.168.125.208) Port is 6510 and configured on both ROS and robot-side. But I can never get ROS to reply back to the IRB120.

The RAPID module is loaded on the robot.

My codebase (ported from irb1200_support) can be found here:
https://github.com/hylander2126/abb_irb120_ros2

Any help would be greatly appreciated, I have been working on this for about two weeks now.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions