Skip to content

Enable communication to an inactive hardware interface #2484

@Svastits

Description

@Svastits

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?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions