Ask Your Question

ROS connection to ABB IRB120

asked 2018-10-15 09:42:11 -0600

Redouanr21 gravatar image


I'm trying to connect ROS to my ABB IRB120 robot. I followed both tutorials ( and ). When I boot up my IRC5 controller is does say "Waiting for ROS connection", so that parts works.

I also installed the ABB package ( ) and the ABB experimental package ( ).

Now I'm kinda stuck. How do I connect to the robot? Which parameters/settings do I need to change? I'm new to ROS.

I'm using ROS melodic with Ubuntu 18.04.

Kind regards

edit retag flag offensive close merge delete

2 Answers

Sort by ยป oldest newest most voted

answered 2018-10-15 10:25:35 -0600

gvdhoorn gravatar image

The tutorials assume a certain level of experience with other ROS packages, so if you don't have that, it's easy to get confused.

After installing all the necessary files on the controller, you'll need to start the appropriate launch file on the ROS PC. For your IRB 120, that would be robot_interface_download_irb120_3_58.launch which is provided by the abb_irb120_support package.

So after building your workspace with the abb and abb_experimental repositories cloned into it, you source /path/to/your/workspace/devel/setup.bash and then:

roslaunch abb_irb120_support robot_interface_download_irb120_3_58.launch robot_ip:=<IP_OF_YOUR_ROBOT>

where you replace <IP_OF_YOUR_ROBOT> with the actual IP of your IRC5 controller.

If that is successful you should now have a few topics publishing information (general robot/controller status and a JointState topic) and a new action server of the control_msgs/FollowJointTrajectory type.

This last one you can send trajectories to and the driver will start executing them.

A popular choice for software that can generate such trajectories for you is MoveIt and for the IRB 120 a MoveIt configuration package is provided in the abb_experimental repository. You should be able to start it -- after having shutdown the previous launchfile -- with:

roslaunch abb_irb120_moveit_config moveit_planning_execution.launch robot_ip:=<IP_OF_YOUR_ROBOT>

where again you replace <IP_OF_YOUR_ROBOT> with the actual IP of your IRC5 controller.

At this point you can plan and execute motions with MoveIt.

Please always keep robot safety in mind especially if you run things in auto mode.

Finally, see Working with ROS-Industrial Robot Support Packages for more information on how to use ROS-Industrial robot support packages and see wiki/abb_driver for more information about the nodes in abb_driver and which information they publish and subscribe.

edit flag offensive delete link more


Note btw:

I'm using ROS melodic with Ubuntu 18.04.

the ABB packages have not been released into Melodic nor have they been extensively tested with it. You might run into issues trying to use them.

gvdhoorn gravatar image gvdhoorn  ( 2018-10-15 10:28:20 -0600 )edit

I was able to connect to the robot so thats works, I also was able to run it with Moveit. Everything works fine. But now I want to control the robot through code. I know I need a action client that communicates with the action server of the FollowJointTracjetory.

Redouanr21 gravatar image Redouanr21  ( 2018-11-12 05:33:39 -0600 )edit

Part 2:

And I need to write it to the goal. But my question now is, is there somewher an example code which I can run so the robot will move to a random position by code?

Redouanr21 gravatar image Redouanr21  ( 2018-11-12 05:33:48 -0600 )edit

One thing I coudnt figure out it. You said I should run roslaunch abb_irb120_moveit_config moveit_planning_execution.launch robot_ip:=<ip_of_your_robot> to make connection and control the robot through MoveIT. But when I do that, I cant get any connection (IP is replaced by IP of robot)

Redouanr21 gravatar image Redouanr21  ( 2018-11-16 04:33:58 -0600 )edit

Is ip_of_your_robot the actual IP of the robot? IRC5 controllers have multiple ethernet ports, not all of which are connected to the same (internal) network. You'll want to use the correct one (not the service port fi).

gvdhoorn gravatar image gvdhoorn  ( 2018-11-16 05:05:25 -0600 )edit

I managed to connect to robot with MoveIt. I see the actual robot in his current position. Now when I plan and execute a position, I get some info on the flexpendant. It says start received and sending xxx points to Motion task. But the robot doesnt move.

Redouanr21 gravatar image Redouanr21  ( 2018-11-16 05:14:35 -0600 )edit

Sometimes I dont get the info on the flexpendant but I get this error:

[ERROR] [1542366774.450927329]: Controller is taking too long to execute trajectory (the expected upper bound for the trajectory execution was 2.288109 seconds). Stopping trajectory.
Redouanr21 gravatar image Redouanr21  ( 2018-11-16 05:15:08 -0600 )edit

re: controller is taking too long: you need to disable "trajectory execution monitoring" with MoveIt, as abb_driver is not performant enough and the robot will move too slowly. See #q196586 for how to do it from a launch file.

gvdhoorn gravatar image gvdhoorn  ( 2018-11-16 11:44:50 -0600 )edit

answered 2019-08-22 03:09:42 -0600

Archilles gravatar image

After you run the codes, you should press the PLAY button on the FlexPendant. Otherwise, the ABB Controller is just connecting to the PC but the robot does not execute any movement. It will wait you several seconds, then it fails due to timeout.

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower


Asked: 2018-10-15 09:42:11 -0600

Seen: 1,030 times

Last updated: Oct 15 '18