orin-status docs: README, plan (sources, UPS estimate)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DDwfd6Ki8UfG4hK6W5YpJz
This commit is contained in:
2026-10-12 16:37:10 +09:00
parent 0c45e68045
commit 4e565266cc
2 changed files with 43 additions and 2 deletions
+4 -1
View File
@@ -10,15 +10,18 @@ This file serves as the minimalist portal to other docs
## What this repo is about ## What this repo is about
The acquisition and processing cluster on the Orin, developed and deployed as one The acquisition and processing cluster on the Orin, developed and deployed as one
unit: `recorder` now; `can-bridge`, `obd-poller`, `gnss` and `decoder` as they are unit: `recorder` and `orin-status` now; `can-bridge`, `obd-poller`, `gnss` and `decoder` as they are
needed. needed.
| Binary | Installed as | Does | | Binary | Installed as | Does |
|---|---|---| |---|---|---|
| `recorder` | `yukart-recorder.service` | Raw CAN + GNSS to disk, in sessions, under a storage bound | | `recorder` | `yukart-recorder.service` | Raw CAN + GNSS to disk, in sessions, under a storage bound |
| `orin-status` | `yukart-orin-status.service` | The Orin's health on the bus, once a second: temperatures, CPU/GPU load, memory, power, fan, WiFi/LTE/tablet links, UPS battery (`yukart/host/*`) |
```bash ```bash
scripts/deploy-recorder.sh # build, glibc check, install on the car Orin scripts/deploy-recorder.sh # build, glibc check, install on the car Orin
scripts/deploy-orin-status.sh # build on the development Orin, glibc check, install
yukart-orin-status --once # on an Orin: one reading as JSON, no broker
yukart-recorder ctl status # on the Orin yukart-recorder ctl status # on the Orin
yukart-recorder ctl start "cold start" # manual session, ends only on stop yukart-recorder ctl start "cold start" # manual session, ends only on stop
yukart-recorder ctl mark "indicator left on" yukart-recorder ctl mark "indicator left on"
+39 -1
View File
@@ -1,7 +1,7 @@
--- ---
type: plan type: plan
status: active status: active
updated: 2026-10-09 updated: 2026-10-12
--- ---
# Initial plan # Initial plan
@@ -16,6 +16,9 @@ updated: 2026-10-09
Phase 3; MQTT at ~890 frames/s is still unproven). Phase 3; MQTT at ~890 frames/s is still unproven).
4. `decoder` — frames to named signals via the DBC in `contracts`. 4. `decoder` — frames to named signals via the DBC in `contracts`.
Alongside: **`orin-status`** — in place (2026-10-12), the first publisher on the
bus. Below.
## Recorder ## Recorder
Reads SocketCAN and gpsd directly. It is tier 1, and the broker is a single point Reads SocketCAN and gpsd directly. It is tier 1, and the broker is a single point
@@ -106,3 +109,38 @@ enough to time individual frames against position.
workstation while the development Orin is offline; `check-glibc.sh` gates it. workstation while the development Orin is offline; `check-glibc.sh` gates it.
- **Copy-off.** Recordings stay on the car until the parked-at-home step in the - **Copy-off.** Recordings stay on the car until the parked-at-home step in the
power plan, or a manual `rsync`. power plan, or a manual `rsync`.
## orin-status
The Orin's own health as envelopes on `yukart/host/<signal>`, retained, once a
second; names and units from contracts `signals.json` (source `host`). Tier 2,
ordered after the broker only.
| Group | Source |
|---|---|
| Temperatures | thermal zones `cpu`, `gpu`, `soc*` (hottest), `tj`; the `cv*` zones read EAGAIN while the vision accelerators are off and are skipped |
| Load and memory | `/proc/stat`, the GPU's `load` (tenths of a percent), `/proc/meminfo` (one pool for CPU and GPU) |
| Power and fan | onboard INA3221 `VDD_IN`; `pwm_tach` |
| Network | `/sys/class/net` counters → kbit/s; WiFi level from `/proc/net/wireless`; the modem from `mmcli -m any -J` every 5 s on its own thread; the tablet link is carrier on `usb0`/`usb1`, counted on `l4tbr0` |
| UPS | INA219 on `/dev/i2c-7` `0x41`, below |
- A reading that fails is not published. Its retained value ages and `svc-gw`
shows it stale.
- Service state on `yukart/system/orin-status`: `ready`, or `degraded` with the
failed sources; last will `stopping`.
### UPS battery
- **Read-only.** Only register pointers are ever written; the INA219 stays at its
power-on configuration. Current is shunt voltage (10 µV per bit) over 0.01 Ω
(Waveshare's demo code), positive when charging. Bus voltage is 4 mV per bit.
- **State:** `charging` above +50 mA, `discharging` below −50 mA (on battery:
input lost), `idle` between.
- **Charge** is an estimate from a 21700 resting-voltage table per cell, the
reading corrected by the pack's I·R drop (0.15 Ω, a rough figure) and smoothed.
Waveshare's demo maps 9.0–12.6 V linearly instead, which swings with load.
Steadiest at rest on input power, least reliable while charging.
- The ignition-off policy (orin-nano-env-setup `docs/impl/plans/POWER.md`) needs
the same readings. It should take them from here, or live here, rather than
open the INA219 a second time.