55 lines
3.1 KiB
Markdown
55 lines
3.1 KiB
Markdown
# Fire Gimbal Control — Roadmap
|
||
|
||
Forward-looking plan for the software/firmware. Present-state docs live alongside
|
||
this one ([architecture.md](architecture.md), [modules-reference.md](modules-reference.md),
|
||
[known-issues.md](known-issues.md), …); this file records **intent**, not status.
|
||
Keep entries dated; move shipped items into the reference docs.
|
||
|
||
## Near-term / in progress
|
||
|
||
- **Hardware self-test framework (`test` command).** Modular on-rig validation
|
||
with profiles, on-disk text reports, and baseline/drift comparison — replaces
|
||
`gimbal diag`. Covers gimbal (homing, encoder, friction, backlash, balance), IMU
|
||
(config, health, drift), and host/LattePanda (thermal, disk, memory, load). See
|
||
[test-command.md](test-command.md); tests blocked on not-yet-integrated
|
||
components are tracked in [test-roadmap.md](test-roadmap.md).
|
||
- **Firmware support (next):** a homing-report `HM` line (firmware-measured
|
||
homing duration + endstop counts) and a load-capture `LP` primitive
|
||
(peak/mean CS, SG, PWM during a move) so the friction/balance/homing-time
|
||
metrics come off the firmware clock instead of host `ST` sampling; plus a
|
||
`PING`/`PONG` link-health command for `test system link`.
|
||
|
||
## Planned components & integrations
|
||
|
||
- **MQTT → RabbitMQ migration.** Move the control/telemetry channel onto the
|
||
project's RabbitMQ stack. Decision pending between (a) RabbitMQ's MQTT plugin
|
||
(near-zero firmware change, keeps QoS/retain/reconnect) and (b) native AMQP via
|
||
a new `IControlChannel` implementation (richer routing/durable queues, but must
|
||
re-engineer retained "last value" semantics). The abstraction seam already
|
||
exists (`IControlChannel`). _(TODO: confirm approach, target release.)_
|
||
- **RGB camera.** _Largely landed._ The Alvium 1800 U-2040c runs end-to-end on the
|
||
rig (software-triggered acquire → quality gate → JXL → `CamEvent`), so the
|
||
`camera/rgb` self-test is no longer blocked on integration. What remains is
|
||
tuning against a real scene — see [known-issues.md](known-issues.md) #15–#18 —
|
||
and the capture logic itself is described in
|
||
[architecture.md](architecture.md#image-capture).
|
||
- **Per-angle white balance.** Exposure and gain are already remembered per
|
||
heading; WB is still left to the camera's continuous auto. Extending the store
|
||
to WB ratios is the natural follow-on once exposure gating is proven on a lit
|
||
scene. _(TODO: confirm it is worth the extra state.)_
|
||
- **Thermal camera.** Add the thermal sensor with radiometric handling (NUC,
|
||
temperature range); enables the `camera/thermal` self-test. _(TODO: model/SDK,
|
||
calibration workflow.)_
|
||
|
||
## Cross-cutting / later
|
||
|
||
- **Supply-voltage telemetry** (bus-voltage sense → firmware) to enable
|
||
`gimbal/supply` and brown-out detection. _(TODO: hardware path.)_
|
||
- **Generic, multi-tower deployment.** Continue removing site-specific
|
||
assumptions (tower identity is already config-driven). _(TODO.)_
|
||
- _Stubs to expand: long-term storage/offload, remote update,
|
||
observability/metrics, security hardening._
|
||
|
||
> Detailed, implementer-ready specs for tests blocked on the above hardware live
|
||
> in [test-roadmap.md](test-roadmap.md).
|