-
Notifications
You must be signed in to change notification settings - Fork 54
Description
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.