Guides¶
Every task guide, grouped by what you are trying to do. If you are new, start with EMG classification: it runs in one command and establishes the App + Stream + Pipeline pattern everything else assumes.
Start here¶
Complete runnable experiments, walked through line by line against a real file in examples/.
- EMG classification - two-class Rest/Fist with CatBoost on RMS+MAV features. The best first read.
- EMG regression with VHI - continuous 5-DOF control, recorded through the Virtual Hand and pushed back to it.
- Examples directory - one paragraph on each runnable example, with its command and what is worth changing.
Connecting hardware¶
Getting samples out of an amplifier and into a Stream.
- Pick a device from the UI -
DevicePicker: choose the amplifier from a dropdown at runtime instead of hardcoding it. Start here if you are new to the hardware. - Connect OTB devices - the OT Bioelettronica sources in detail: wiring, modes, channel geometry, dropout counters.
Driving a device¶
Anything that moves is a target: three methods, and a TOML control map naming which model output drives which control. Concepts › Controls explains the system itself.
- Drive your own device - your prosthesis, motors or cursor, from Python. Start here: the copyable example runs without hardware.
- Drive a remote target - the contract to serve if your device is already its own program.
- Build a remote target, stage by stage - that same contract, built in seven stages with a checkpoint at each.
- Integrate the Virtual Hand - the one remote target this project ships.
- Install the Virtual Hand - the installer CLI, and where a build is looked for.
Recording¶
- Enable on-disk recording - the four lines that start writing sessions.
- Record and replay - capture sessions, read them back programmatically.
- Record good training data - cycle-style recording, how many cycles you actually need, verifying templates before training.
- Record for proportional control - the graded counterpart: why three cued classes make a three-class model whatever you fit, and the followed-cursor block that fixes it.
- Track a force target - isometric force tracking against a trapezoid, on an amplifier AUX channel, with the target recorded as its own stream.
Models and features¶
- Add a custom model - wire
extract/train/predictfor any ML library. - Record for proportional control - if your regressor is dead below 30 % effort or goes the wrong way when the subject contracts harder, the fix is in the recording protocol.
- Feature extraction cookbook - copy-paste
@pipeline.extractsnippets (RMS+MAV, bandpass+envelope, spectral, sliding RMS, onset detection, multi-stream fusion). - Use the recipe feature set - the shipped feature recipes.
- Keep state between pipeline stages - rolling windows, stateful models, gating side effects on change.
- Post-process predictions -
PostProcessorandmyogestic.outputs.filtersfor output smoothing.
Extending the framework¶
- Add a custom source - implement the
Sourceprotocol for a new device, file format or transport. - Add a custom widget - a class with a
.ui(ctx)method that draws ImGui commands. - Publish a data stream - an
Outletis a paced sender for telemetry: predictions to a recorder, a stream another application reads. If something moves, you want a target, not this.
Operations¶
- Run headless (no GUI) - unattended recording and prediction; signal handling; protocol-driven scripts.