Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Decide how to publish non-trajectory information #21

Closed
nbbrooks opened this issue Jan 8, 2021 · 6 comments
Closed

Decide how to publish non-trajectory information #21

nbbrooks opened this issue Jan 8, 2021 · 6 comments
Milestone

Comments

@nbbrooks
Copy link
Contributor

nbbrooks commented Jan 8, 2021

Decide how to publish additional info to ROS side, tool state, digital I/O, robot mode, safety mode, and tcp pose. Do we create controllers or to spin another thread to publish this stuff

@nbbrooks nbbrooks added this to the Beta driver milestone Jan 8, 2021
@nbbrooks nbbrooks changed the title decide how to publish other stuff towards ROS side, tool state, digital I/O, robot mode, safety mode, tcp pose (create controllers or to spin another thread to publish this stuff) Decide how to publish additional information Jan 8, 2021
@nbbrooks nbbrooks changed the title Decide how to publish additional information Decide how to publish non-trajectory information Jan 8, 2021
@livanov93
Copy link
Contributor

livanov93 commented Jan 13, 2021

Here I am more fan of multiple controller creation which would be based on controller_interface.
This approach only tends to make a huge list of state and command controllers like:

  • TcpPoseStateController
  • IOStateController
  • IOController
  • RobotModeStateController
  • SafetyModeStateController
  • SpeedSliderController
  • ToolStateController
  • ExternalUrScriptController
  • ResetMotionController
    ...
    These controllers would interface with driver via one of these state, command or sensor interfaces.

Other option is to hold onto ROS1 approach and spin multiple threads and callbacks within hardware interface to register topics.

@AndyZe
Copy link
Contributor

AndyZe commented Jan 14, 2021

^that's my understanding from ros2_control meetings, as well

@gavanderhoorn
Copy link
Contributor

I would say "officially", drivers should always have used the *Controller approach to publish additional information. Even in ros_control (ie: the ROS 1 version).

It's just that it was so easy to do it with realtime publishers from the hardware_interface itself, no one really bothered.

ps: I really don't like to use the Controller suffix for something which doesn't actually control anything. I believe we don't have to any more in ros2_control, so it would be great if we could avoid it. It leads to many questions ("ah, so the joint_state_controller let's me execute motions?", well, no ..).

@livanov93
Copy link
Contributor

@destogl
Copy link
Contributor

destogl commented Feb 18, 2021

ps: I really don't like to use the Controller suffix for something which doesn't actually control anything. I believe we don't have to any more in ros2_control, so it would be great if we could avoid it. It leads to many questions ("ah, so the joint_state_controller let's me execute motions?", well, no ..).

Unfortunately, we still have it... I agree fully with you....

@livanov93

This approach only tends to make a huge list of state and command controllers like:

I think we can solve this issue by creating a few general controllers/publishers. Basically, we need only GPIOController and an extension of the joint_state_controller which enables the definition of states one wants to have published.

I think this is the most general approach and could make many people happy :)

@destogl
Copy link
Contributor

destogl commented Feb 23, 2021

@nbbrooks nbbrooks closed this as completed Mar 2, 2021
andy-Chien pushed a commit to NanyangBot/Universal_Robots_ROS2_Driver that referenced this issue Oct 5, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants