Files
svc-core/README.md
T
mikkeli ba6100fd17
/ crosscheck (push) Successful in 1s
replay-session.sh: a recorded session's frames through the decoder, live to displays
Frames go onto vcan_replay (the recorder never sees them); the decoder service
stands aside for the replay and comes back however it ends.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DDwfd6Ki8UfG4hK6W5YpJz
2026-10-14 08:59:51 +09:00

3.9 KiB

type
type
reference

Core services

Part of Project Yukart, making an old 2008 Mitsubishi Z27AG a bit smarter with modern technologies.
This file serves as the minimalist portal to other docs

What this repo is about

The acquisition and processing cluster on the Orin, developed and deployed as one unit: recorder, decoder, gnss, imu, orin-status and obd-poller now; can-bridge as it is needed.

Binary Installed as Does
recorder yukart-recorder.service Raw CAN + GNSS to disk, in sessions, under a storage bound; every yukart/vehicle/* value (decoded and OBD-II) beside them
decoder yukart-decoder.service The car's own broadcast frames to named signals (yukart/vehicle/*): every z27ag signal in contracts' signals.json, laid out by its can block. Booleans on change, numbers ≤ 20/s, each refreshed once a second; reads only
bus-bench not installed: a test tool Raw CAN and decoded-signal load over MQTT, measured: loss, latency, broker CPU (report)
obd-poller yukart-obd-poller.service OBD-II mode 01 on the K-line through the Bluetooth ELM327 (address in /etc/default/yukart-elm), the single writer to the car; never on CAN. The obd_* signals, calibration references (yukart/vehicle/*): rpm, speed, throttle, load, MAF, timing, O2 every round; temperatures and trims every 5 s. Lets go of the adapter after a minute of ECU silence
gnss yukart-gnss.service gpsd's fix as single values on yukart/gnss/*: fix, speed, heading, position, altitude, satellites
imu yukart-imu.service The WT61 (plus) on any USB-UART adapter, found by itself (adapter and speed), turned into the car's frame (--forward, --right): roll, pitch, gravity-free longitudinal and lateral g, yaw rate on yukart/imu/*, at most every 40 ms. Never writes to the module
orin-status yukart-orin-status.service The Orin's health on the bus, once a second: temperatures, CPU/GPU load, memory, power, fan, WiFi (with SSID)/LTE/tablet links, the CAN interface, the ELM's Bluetooth link, UPS battery (yukart/host/*). Powers the Orin off cleanly when the UPS pack stays below 11.0 V while discharging for 30 s
scripts/deploy-recorder.sh                 # build, glibc check, install on the car Orin
scripts/deploy-native.sh BIN               # build BIN on the development Orin, glibc check, install;
                                           # deploy-{decoder,gnss,obd-poller,orin-status}.sh wrap it.
                                           # Redeploy after any contracts signals.json change
yukart-decoder --list                      # the signals it decodes, and where
zstdcat can-*.log.zst | yukart-decoder --replay   # what it would publish for a recording
scripts/replay-session.sh SESSION_DIR [SKIP_S]   # on the Orin: replay a session's frames through a
                                           # decoder on vcan_replay, live to displays; never recorded
yukart-obd-poller --elm ADDR --once        # on the Orin, service stopped: adapter, protocol,
                                           # supported PIDs and one value each
yukart-gnss --once                         # the next fix as JSON, no broker
yukart-imu --once                          # find the WT61, 3 s of readings as JSON, no broker
yukart-orin-status --once                  # on an Orin: one reading as JSON, no broker
yukart-recorder ctl status                 # on the Orin
yukart-recorder ctl start "cold start"     # manual session, ends only on stop
yukart-recorder ctl mark "indicator left on"
yukart-recorder ctl stop

Recordings live in /var/lib/yukart/recordings/, one directory per session — layout in the initial plan.

  • For implementation practice guidelines, refer to the guidelines;
  • For implementation plans and history, refer to them;