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:
@@ -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"
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user