Skip to content

Deterministic startup of hardware interfaces #2811

@firesurfer

Description

@firesurfer

Is your feature request related to a problem? Please describe.

Currently the setup order of hardware interfaces is non deterministic in the way that when we have multiple hardware interfaces the order of: init, configure,activate is not staged.

By staged I mean that all hardware interfaces have to finish a specific stage before any hardware interface can go into the next stage

Example with two hardware interfaces

Interface A -> on_init
Interface B -> on_init

Interface A -> on_configure
Interface B -> on_configure

Interface A -> on_activate
Interface B -> on_activate

-> When all interfaces are done -> start read/write

This would help a lot in our case with sharing common hardware resources (ethercat bus master) between hardware interfaces.

Describe the solution you'd like

I suggest adding an additional flag to the configuration of the controller manager (e.g. deterministic_startup)
which enforces in the resource manager the staging procedure described above.

Describe alternatives you've considered

I currently see for our case only two alternatives:

a) Introduce a separate process which handles the setup and have the hardware interfaces communicate with that process -> But then I do not have to use ros2control at all
b) Basically introduce our own state machine in all related hardware interfaces which the startup procedure

Additional context

Questions:

  1. Would a PR with such a feature be appreciated ?
  2. Is there any big show stopper I am not aware of that prohibits implementing such a feature ?

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions