Skip to content

Feature: deterministic replay for debugging #27

@manankharwar

Description

@manankharwar

Debugging a live filter run is painful. You get a bad trajectory, but by the time you notice it the moment is gone and you can't reproduce it without re-running the whole bag from scratch with the same random seed and timing.

The ask is a mode where FusionCore can replay a recorded sensor sequence and produce bit-identical output every time. This means:

  • No wall-clock timestamps in the state update path when running in replay mode
  • Deterministic sigma point generation (fixed seed or fully deterministic math)
  • A way to dump and restore the full filter state at any point so you can bisect a bad run

Practically, the workflow would look like: record a bag, replay it with FusionCore in deterministic mode, tweak a parameter in the YAML, replay again, diff the trajectories. Right now you can do this but small timing differences between replays make the output non-identical which makes parameter sensitivity analysis really hard.

robot_localization has had this open since at least 2022 and it never shipped. The core issue is that their architecture mixes wall time and message time in ways that are hard to untangle. FusionCore already uses message timestamps for all sensor updates so this should be significantly cleaner to implement.

Low priority but would make the benchmarking story a lot stronger and help users debug their configs without needing hardware in the loop every time.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions