Skip to content

Conversation

@Nibanovic
Copy link

This PR implements the "async slave controller" functionality present in realtime_tools PRs:

In short:

  • ability to spawn async hardware and have it synchronized to an external robot clock via blocking read() (first PR)
  • ability to pin async controllers to that hardware so their update() is executed between hardware read/write. This is mediated via signaling thread wakeups using the Monitor pattern

For details and validation, check the comments in their respective PRs.

Yara Shahin and others added 7 commits January 15, 2026 15:55
* controller update() waits on signal from hardware that read() is complete
* statistics for sync_signal_latency, time between read signal and controller update() call
* statistics for sync_trigger, number of times update() was triggered
* initialize all parameters
* pass in clock from the CM to the async function handler
* only note sync_trigger statiustics if in slave mode
* use trigger_clock to trigger_update
* use internal async_function_handler period instead of calulating one in trigger_update
- has 0.9 * rw_rate timeout on waiting
- we measure latency between last sync signal and the time we actually wake up
@mergify
Copy link
Contributor

mergify bot commented Jan 20, 2026

@Nibanovic, all pull requests must be targeted towards the master development branch.
Once merged into master, it is possible to backport to jazzy, but it must be in master
to have these changes reflected into new distributions.

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

Successfully merging this pull request may close these issues.

1 participant