ros-industrial / abb_libegm

A C++ library for interfacing with ABB robot controllers supporting Externally Guided Motion (689-1)
BSD 3-Clause "New" or "Revised" License
93 stars 53 forks source link

Add external axes support #88

Closed jontje closed 4 years ago

jontje commented 4 years ago

As per title.

This PR partially fixes issue https://github.com/ros-industrial/abb_libegm/issues/20.

Example:

It will now be possible to use abb_libegm to control a system that has one RAPID motion task for a robot, and one motion RAPID task for a track, by setting up an EGM communication channel for each of the them. And a system could look like this:

track_and_robot

gavanderhoorn commented 4 years ago

So I find this PR hard to review, as I cannot (readily) test it.

Will the State Machine addin require any changes for this to work?

What is the limit on the nr of tasks that could be added this way?

jontje commented 4 years ago

So I find this PR hard to review, as I cannot (readily) test it.

I hope you believe me if I say I have tested it enough 😄

Will the State Machine addin require any changes for this to work?

The StateMachine Add-In has some issues with RAPID motion tasks that doesn't control TCP robots, but they are minor problems.

Regardless, abb_libegm and this PR doesn't know anything about that, and this PR will work with any arbitrary EGM setup that control external axes in a seperate RAPID motion task.

What is the limit on the nr of tasks that could be added this way?

If I remember correctly, then EGM can only handle 4 simultaneous channels. And I think the limit of RAPID tasks is 20 (with the Multitasking option) but only a few can be motion tasks (with the MultiMove option).

gavanderhoorn commented 4 years ago

So I find this PR hard to review, as I cannot (readily) test it.

I hope you believe me if I say I have tested it enough smile

Whether I believe you is irrelevant. The whole point of doing these reviews is to catch potential problems caused by using the code with setups you haven't/didn't consider(ed).

jontje commented 4 years ago

Whether I believe you is irrelevant. The whole point of doing these reviews is to catch potential problems caused by using the code with setups you haven't/didn't consider(ed).

Naturally.

However, as far as I know, I am probably the only one with any deeper understanding of the implementation, so it is of course difficult for anyone else to make anything expect a cursory review.

gavanderhoorn commented 4 years ago

Thanks @jontje.

jontje commented 4 years ago

Thanks for the review @gavanderhoorn, much appreciated!

It would be good to at some (minimal) documentation on how to setup such a system (ie: with an external axis), but perhaps this should be done on the side of the add-in.

Agreed, and I think it would make most sense to include it in the issue for sample codes,