Skip to content

feat(sim): synthetic IMU sensor-data generator for fall/crash scenarios (domain-randomised) #59

Description

@nandal

Background

The acute fast-path detector (design discussion #58; epics #28 / #37) needs training and test data, and real labelled falls are scarce. Good news: a fall/crash is physically describable — rigid-body kinematics projected into the body frame yields accelerometer (≈ 2nd derivative + gravity) and gyro (angular velocity) traces. We already have a simulation scaffold in app/test/sim/.

The task

Build a generator that synthesises labelled sensor windows for the target events:

  • Classes: bike crash · pedestrian slip (with quick recovery → a negative) · fall on stairs · hard-sit / phone-drop (hard negatives) · normal activity.
  • Signals: accelerometer + gyroscope (+ barometer for the stairs altitude drop, speed/GPS for bike).
  • Domain randomisation (the important part — this is what closes the sim-to-real gap): randomise sensor noise/bias/quantisation, sampling jitter, and phone placement/orientation (pocket / hand / bag), plus body/device variance.
  • Emit a common, documented format that the benchmark and training scripts consume.

Acceptance criteria

  • Generates each class with tunable parameters and a seed (deterministic given the seed).
  • Documented schema; a few example traces committed.
  • Lives alongside / extends app/test/sim/.

Guardrails / notes

  • Purely synthetic — no real user data. This is the off-device raw-trace stand-in used for training/eval only; on-device the LivenessSource boundary still emits only a verdict.
  • Generating plausible data is easy; generating data that transfers to a real phone is the point — lean hard on domain randomisation, and don't over-claim realism (the honest-metrics rule).

Why this is a good first issue / help wanted

Self-contained, no GPU or ML depth needed, and it unlocks the benchmark and training work. Part of the on-device acute-detector epic.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions