Skip to content

What is the suggested way to handle hardware intefaces running at different rates #793

Closed
@VladimirIvan

Description

@VladimirIvan

I have a few HW interfaces that run at higher rate (200Hz) and one interface that runs at a lower rate (30Hz). The slower interface does use blocking calls when performing read() and write() so it would limit high rate interfaces to 30Hz when called in the same control loop. I do need to run some controllers that talk to both the fast and slow interfaces at the same time so I can't run each interface in a separate node.

My solution would be to make the slow interface run in separate thread and synchronise it with the main loop. Commands will be picked up at 30Hz and states will be repeated at 200Hz until a new read() updates them in the parallel thread. This will not need any new features in ros2_control so it's not a feature request but I'm wondering if this is the right solution. Are there any features already implemented that would solve this issue that I may have missed in the documentation?

Thanks

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