Filters
The service applies a chain of filters to outgoing forces before they reach the
device. Each filter can be configured per-session (via configure or HTTP) or
globally (via settings).
Filter pipeline
Forces pass through these stages in order:
your force → [osc-damper] → [force-gate] → [damping] → [force-scale] → device
| Stage | What it does | Scope | How to configure |
|---|---|---|---|
| Osc-damper | Detects oscillation, reduces gain | Per-device (automatic) | Internal — not user-configurable |
| Force gate | Attenuates force during detected oscillation | Per-session | configure.force_gate or config/filters/force_gate |
| Damping | Adds viscous resistance (scalar and/or directional) | Per-session | configure.damping or config/filters/damping |
| Force scale | Global multiplier on all forces | Global | POST /settings → devices/force_scale |
Safe trajectory
Safe trajectory is a position-mode filter — it rate-limits the cursor
velocity when using set_cursor_position, ensuring smooth motion toward the
target.
| Setting key | Default | Description |
|---|---|---|
features/safe_trajectory/enabled | false | Enable position rate limiting |
features/safe_trajectory/max_vel | 0.5 | Maximum cursor velocity (m/s) |
Configure via Settings:
curl -X POST http://localhost:10001/settings \
-H "Content-Type: application/json" \
-d '{"features/safe_trajectory/enabled": true, "features/safe_trajectory/max_vel": 0.3}'