Robotics StackExchange | Archived questions

Controlling ABB with ROS2?

I'm looking into getting an ABB arm. It doesn't appear that there is any driver for ROS2.

Would it be correct to say that the only way for me to use things like MoveIt would be to use ROS1?

https://github.com/robotics/open_abb

If I wanted to use the arm with ROS2, I would either need to have a custom driver or I would be limited to controlling the arm with packages like the above, is that right?

Asked by infantasy on 2020-12-30 18:48:13 UTC

Comments

Related: ros-industrial/abb_robot_driver#6.

Asked by gvdhoorn on 2020-12-31 05:54:47 UTC

Answers

I don't use ABB robots and don't know, but cursory googling would tell me:

  1. That package you linked does not seem to advertise a FollowJointTrajectory action or equivalent, so you won't be able to use that with MoveIt. Looks like you can use it to connect to your robot even without ROS though.

  2. http://wiki.ros.org/abb_driver is the driver that will let you use MoveIt. edit: Looks like https://github.com/ros-industrial/abb_robot_driver is the newer one.

  3. You can always port the ROS1 driver to ROS2 and publish it. This is welcome and a common thing in the open-source ecosystem. You can post issues on their Github and/or Discourse if you're stuck. Feel free to just try it out.

edit: To clarify, it's always better to check if there are existing efforts. As noted in the comments, someone already posted this Github issue concerning a port to ROS2.

Asked by fvd on 2020-12-31 05:11:56 UTC

Comments

For users with the EGM option on their controller, I would recommend they use ros-industrial/abb_robot_driver instead of abb_driver.

The latter is just about deprecated.

And:

You can always port the ROS1 driver to ROS2 and publish it. This is welcome and a common thing in the open-source ecosystem. You can post issues on their Github and/or Discourse if you're stuck. Feel free to just try it out.

while everything is open-source, I would add the nuance that every porting effort should not be just started without at least trying to reach out to the developers/maintainers of the ROS 1 version of the package you're planning to port.

They may already be working on something, and it would be a waste of effort to have multiple attempts going on in parallel.

Note: I'm not saying you should ask for permission. That would be something else, and not needed.

Asked by gvdhoorn on 2020-12-31 05:55:41 UTC

Thanks so much for the helpful answers! I had seen abb_driver but missed abb_robot_driver.

Just to make sure I understand, again, would it be correct to say that the only way for me to use things like MoveIt without writing a new driver would be to use ROS1 + an existing driver like abb_driver or abb_robot_driver?

And if I wanted to use the arm with ROS2, I would either need to write a new ROS2 driver (that could be based on abb_robot_driver) or I would be limited to controlling the arm with packages like the open_abb package, is that right?

Asked by infantasy on 2020-12-31 13:15:50 UTC

would it be correct to say that the only way for me to use things like MoveIt without writing a new driver would be to use ROS1 + an existing driver like abb_driver or abb_robot_driver?

well, there is another option, which would involve using the ros1_bridge, which bridges ROS 1 and ROS 2 node graphs. But whether that would be viable really depends on what you want to do exactly.

So if you could provide some more details on what "using the arm with ROS2" means, perhaps we can provide better answers.

Asked by gvdhoorn on 2021-01-01 04:19:12 UTC

@gvdhoorn I'm trying to do pick and place. So I'd want to be able to read the current position (xyz and orientation) of the robot arm, and telling it to move into some other position. It would be okay if it moved directly there (and didn't do any obstacle avoidance). Not super sure if this answers your question.

Asked by infantasy on 2021-01-29 22:40:51 UTC

Then the bridge would probably be sufficient, and you could use the old driver (ie: abb_driver).

It would be okay if it moved directly there (and didn't do any obstacle avoidance).

that isn't really related to the driver, or robot interface in general, but would depend on your choice of motion planner.

Asked by gvdhoorn on 2021-01-30 07:54:37 UTC

There's a ROS2 driver here that's fairly mature now: https://github.com/PickNikRobotics/abb_ros2

Asked by AndyZe on 2022-04-04 08:25:10 UTC

Comments