docs: sync control source to AK60 RPi5 BiSS-C

This commit is contained in:
Nick Hermes
2026-07-06 10:21:23 +00:00
parent edb8648f78
commit 5883620f73
18 changed files with 32083 additions and 31969 deletions

View File

@@ -40,7 +40,7 @@ Rationale: the controller is not deciding polishing strategy. It is executing/lo
## 4. Affected layers
- Host controller: normalize/validate direction aliases and include direction in manual setpoints/log events.
- Teensy firmware: accept direction in `MANUAL_START`, `SETPOINT`, and future `SEGMENT_START`; map to ODrive command sign.
- Teensy firmware: accept direction in `MANUAL_START`, `SETPOINT`, and future `SEGMENT_START`; map to AK60 command direction/sign convention.
- Host ↔ Teensy protocol: add `spindle_direction` / `commanded_spindle_direction` enum values `cw` / `ccw`.
- Telemetry channels: add `spindle_direction_setpoint` and `spindle_direction_actual` as recommended channels.
- Run/manual-session logs: record direction separately from RPM; RPM remains a non-negative magnitude.
@@ -51,8 +51,8 @@ Rationale: the controller is not deciding polishing strategy. It is executing/lo
## 5. Safety implications
- Direction must not be inferred from signed RPM; use explicit enum plus non-negative RPM magnitude.
- Direction reversal while spindle is moving should be ramped/handled safely by firmware/ODrive implementation. The scaffold currently defines the contract; Cédric should decide whether live reversal is allowed directly or requires ramp-to-zero before applying the new direction.
- ODrive sign mapping is a commissioning item: firmware must be configured so UI `cw`/`ccw` matches physical observed tool rotation.
- Direction reversal while spindle is moving should be ramped/handled safely by firmware/AK60 implementation. The scaffold currently defines the contract; Cédric should decide whether live reversal is allowed directly or requires ramp-to-zero before applying the new direction.
- AK60 direction mapping is a commissioning item: firmware must be configured so UI `cw`/`ccw` matches physical observed tool rotation.
Safety decision:
@@ -72,14 +72,14 @@ Safety decision:
- [x] Host contract tests for enum values and alias normalization.
- [x] Schema field test for `commanded_spindle_direction`.
- [x] Telemetry channel test for direction channels.
- [ ] Firmware compile/build check once Cédric maps this into Teensy/ODrive code.
- [ ] Firmware compile/build check once Cédric maps this into Teensy/AK60 code.
- [ ] Bench test confirms UI `cw` physically rotates clockwise by the documented convention.
- [ ] Bench test confirms UI `ccw` physically rotates counter-clockwise by the documented convention.
- [ ] Bench test confirms live reversal behavior is safe or blocked until spindle reaches zero.
## 8. Open questions
- Cédric: confirm the ODrive command/sign mapping and whether live direction reversal requires ramp-to-zero.
- Cédric: confirm the AK60 command/direction mapping and whether live direction reversal requires ramp-to-zero.
- Antoine/Normand: confirm the physical viewing convention: current draft uses “viewed from above the toolhead looking down toward the mirror/tool contact.”
## 9. Implementation notes

View File

@@ -0,0 +1,44 @@
---
title: AK60 / Raspberry Pi 5 / BiSS-C Source Sync
status: draft
requested_by: Antoine Letarte
generated_by: Nick / Hermes
project: P11-Polisher-Fullum
repo: polisher-control
source_truth: false
created: 2026-07-06
privacy: technical-only
---
# AK60 / Raspberry Pi 5 / BiSS-C Source Sync
## Purpose
Align the repo foundation with Antoine's accepted hardware corrections before Cédric writes firmware against stale assumptions.
## Source references
- P11 firmware source: `software-suite/control/firmware/Fullum-Polisher-Machine-Control-Firmware-Spec-v1.md`
- Repo mirror: `docs/reference/fullum-control-firmware-spec/Fullum-Polisher-Machine-Control-Firmware-Spec-v1.md`
- Electrical audit TLDR: `2026-07-06-Polisher-Control-Electrical-Audit-TLDR.md`
- Change gate: `CEDRIC-PROP-20260609-001`
## Accepted corrections now reflected here
1. Host computer is **Raspberry Pi 5 + touchscreen**, not Raspberry Pi 4.
2. Toolhead spindle path is **CubeMars AK60-6 V1.1 KV80**, not ODrive S1 + M8325s.
3. Table encoder order is `DHR162DB20BAAS30DA02` + `SAR162C143AF14WAP00`, which means **BiSS-C / RS422**.
4. Arm encoder order is `BR10DCD14B12DH00` + `BM120A190A1ABA00`, which means **BiSS-C / RS422**.
## Cédric implementation cautions
- Do not treat CAN stop/disable as a safety-rated AK60 stop. The safety basis must remove AK60 power through the hardwired safety-controlled post-contactor path and be bench-tested.
- Freeze AK60 CAN topology before firmware lock: IDs, frame rates, stale-frame timeouts, fault handling, startup behavior, and whether AK60 shares a CAN bus with KWR75B.
- Freeze BiSS-C implementation details before encoder firmware lock: frame timing, CRC/status bits, RS422 transceiver/pinout, shielding, and error handling.
- Preserve `cw` / `ccw` as explicit direction enums separate from non-negative RPM; bench-map them to physical rotation.
## Acceptance checks
- Firmware source and repo mirror no longer name ODrive/M8325s as the current spindle basis.
- Repo start docs, LLM context, roadmap, commissioning checklist, open questions, and machine capability profile now use AK60/RPi5/BiSS-C language.
- Host-side tests and JSON validation should still pass after this docs/source refresh.