-
Notifications
You must be signed in to change notification settings - Fork 364
Description
In #2347 the controller switch mechanism was modified to disable activating a controller, if the hardware interface, whose command interface it would claim is not active.
This modification makes it impossible for inactive hardware interfaces to get any information from the ROS2 world (as creating a subscription is also not possible), therefore it is no longer possible to set certain runtime parameters of the hardware interface, necessary for starting the control loop.
This change breaks the kroshu driver, that implements hardware interfaces for all KUKA robot OS-s
Example:
It is possible to set the cycle time of an industrial robot before the control loop is started. This configuration was until now possible using a custom controller, that changed a command interface (=member variable) of the hardware interface, and the on_activate()
callback could take this into account. Now the on_activate()
can only start the control loop with the deafult cycle time, as it is no longer possible, to transfer this information in runtime, before the hardware interface is activated.
Proposal
If it is not feasable to enable controller activation in such a case by default, I would suggest to make this configurable, so that some inactive command interfaces can be claimed. (Something similar is mentioned in #2318 in a different context: some controllers have to remain active after an error to make error recovery possible)
@bmagyar @MarqRazz @saikishor what are your thoughts about this?