Skip to content

System Architecture

Vladyslav Vytrykush edited this page Sep 4, 2026 · 1 revision

Ось окремий, чистий блок розділу System Architecture англійською мовою:


System Architecture

  [ HS-1 Motion Capture Suit ]               [ MoSy Edge Core ]               [ Physical Actuation ]
  (ESP32-C3 + BNO055 IMU Array)            (50 Hz Control Loop)           (16-Channel PWM Servo Driver)
               │                                    │                                    │
               ▼                                    ▼                                    ▼
       [ serial_reader ] ───────────────► [ bno055_mapper ] ───────────────► [ onnx_engine ]
      (UART Serial JSON)                 (Vector [1x112])                     (Policy [1x8])
                                                                                    │
                                                                                    ▼
                                           [ pca9685_driver ] ◄────────────── [ servo_mapper ]
                                              (8x Servos)                       (PWM Pulse us)

The MoSy motion control architecture bridges high-speed human telemetry with hardware actuation via a decoupled 5-stage pipeline:

  1. Telemetry Ingestion (serial_reader): Asynchronously reads raw ASCII JSON frames from the ESP32-C3 over USB-Serial (115200 baud).
  2. State Vector Normalization (bno055_mapper): Parses Euler orientations across three arm segments (shoulder, forearm, hand) and normalizes angles into a 112-dimensional state vector [1, 112].
  3. Edge AI Policy Inference (onnx_engine): Evaluates the policy tensor using onnxruntime in $<0.1\text{ ms}$, producing 8 target joint actions bounded in $[-1.0, 1.0]$.
  4. Kinematic Servo Mapping (servo_mapper): Maps actions to joint angles using calibration parameters from config/joints.json and converts angles to microsecond pulse widths ($500,\mu\text{s} \dots 2500,\mu\text{s}$).
  5. I2C Signal Output (pca9685_driver): Transmits 12-bit PWM values to the PCA9685 servo driver at 50 Hz.

Clone this wiki locally