| --- |
| license: cc-by-4.0 |
| tags: |
| - robotics |
| - mlp |
| - numpy |
| - obstacle-avoidance |
| - simulation |
| pretty_name: Sim Driving MLP (NumPy) |
| --- |
| |
| # Sim Driving MLP โ 279-parameter obstacle-avoidance policy (NumPy) |
|
|
| A deliberately tiny neural network: **4 ultrasonic distances in, one driving command |
| out.** 279 parameters, float32, trained and verified entirely inside our robot |
| simulation studio. Small enough to read, small enough to run on an MCU-class device. |
|
|
| **Trained on simulation data from a virtual map โ no real-world or customer data.** |
|
|
| ## Architecture |
|
|
|  |
|
|
| | part | meaning | |
| |------|---------| |
| | input (4) | ultrasonic distances: **F**ront, **L**eft, **R**ight, **B**ack (normalized with the included `norm_mean` / `norm_std`) | |
| | output (5 + 1) | 5 command logits โ `FWD / LEFT / RIGHT / STOP / BACK` โ plus 1 turning-angle regression head | |
|
|
| ## Metrics (validation, virtual map) |
|
|
| | metric | value | |
| |--------|-------| |
| | command accuracy | **97.2 %** (best epoch 529 / 572) | |
| | turning-angle MAE | ~6.9ยฐ | |
|
|
| The `.npz` also embeds `meta_json`: the full 572-epoch training history |
| (per-class accuracy, loss, angle MAE per epoch), so the training curve is inspectable. |
| The plot below is drawn directly from that embedded history: |
|
|
|  |
|
|
| ## Load and run (NumPy only, no framework) |
|
|
| ```python |
| import numpy as np |
| |
| d = np.load("sim_driving_mlp.npz") |
| x = np.array([[120.0, 45.0, 200.0, 300.0]]) # F, L, R, B distances (mm) |
| x = (x - d["norm_mean"]) / d["norm_std"] |
| |
| h = np.maximum(x @ d["W0"] + d["b0"], 0) |
| h = np.maximum(h @ d["W1"] + d["b1"], 0) |
| y = h @ d["W2"] + d["b2"] |
| |
| cmd = ["FWD", "LEFT", "RIGHT", "STOP", "BACK"][int(np.argmax(y[0, :5]))] |
| angle = float(y[0, 5]) |
| print(cmd, angle) |
| ``` |
|
|
| ## The simulator and the target robot |
|
|
| The studio stage where the model's four inputs are defined: ultrasonic sensors |
| F/L/R/B with datasheet-based noise models, checked by the built-in self QA/QC |
| checklist. On the right, the local LLM explains a warning from that checklist, |
| citing the stage report as its basis. |
|
|
|  |
|
|
| A driving run on the 8 m ร 8 m virtual map used for data collection |
| (green: ultrasonic rays from the robot): |
|
|
|  |
|
|
| And this exact model running in the studio's 3D evaluation stage. The left panel |
| shows the live inference at the current step: the four sensor inputs (F/L/R/B, mm), |
| the softmax over the five commands with FORWARD selected, and the angle head: |
|
|
|  |
|
|
| The target hardware: a tracked test robot with the ultrasonic sensors mounted on |
| the hand, the same F-channel placement the simulator reproduces. |
|
|
|  |
|
|
| ## Where this fits: our 4-layer stack |
|
|
|  |
|
|
| *(Diagram is in Korean; it is the same figure used on our website, demo video, and |
| companion dataset.)* |
|
|
| This model is a **layer-2 artifact** of our stack โ an edge neural network verified |
| through the 8-stage physics simulation workflow of our robot simulation studio. |
| Every stage of that workflow runs self QA/QC (layer 3) and reports through an |
| on-premise conversational LLM (layer 4); the record formats those layers produce |
| are shown in our companion dataset: |
| [NCDTech/human-gated-qaqc-knowledge-example](https://huggingface.co/datasets/NCDTech/human-gated-qaqc-knowledge-example) |
|
|
| ## ํ๊ตญ์ด |
|
|
| **์ด์ํ 4๋ฐฉํฅ ๊ฑฐ๋ฆฌ(์ ยท์ขยท์ฐยทํ)๋ฅผ ๋ฃ์ผ๋ฉด ์ฃผํ ๋ช
๋ น์ด ๋์ค๋ 279 ํ๋ผ๋ฏธํฐ์ง๋ฆฌ ์์ |
| ์ ๊ฒฝ๋ง**์
๋๋ค. ์ ํฌ ๋ก๋ด ์๋ฎฌ๋ ์ด์
์คํ๋์ค์ 8๋จ๊ณ ์ํฌํ๋ก(๋ฐ์ดํฐ ์์ง โ ํ์ต โ |
| ํ๊ฐ โ ๋ฌผ๋ฆฌ ์๋ฎฌ๋ ์ด์
๊ฒ์ฆ)๋ฅผ ํต๊ณผํ ๊ณ์ธต 2(์ฃ์ง ์ ๊ฒฝ๋ง) ์ฐ์ถ๋ฌผ์ด๋ฉฐ, **๊ฐ์ ๋งต |
| ์๋ฎฌ๋ ์ด์
๋ฐ์ดํฐ๋ก๋ง ํ์ต**ํ์ต๋๋ค โ ์ค๋ฐ์ดํฐยท๊ณ ๊ฐ ๋ฐ์ดํฐ ์์. |
|
|
| ์ถ๋ ฅ์ ์ฃผํ ๋ช
๋ น 5ํด๋์ค(์ ์ง/์ขํ์ /์ฐํ์ /์ ์ง/ํ์ง) + ํ์ ๊ฐ ํ๊ท 1๊ฐ. |
| ๊ฒ์ฆ ์ ํ๋ 97.2 %, ๊ฐ๋ ์ค์ฐจ ์ฝ 6.9ยฐ. ํ์ผ ์์ ์ ๊ทํ ํต๊ณ์ 572 ์ํฌํฌ ํ์ต |
| ์ด๋ ฅ ์ ์ฒด๊ฐ ํจ๊ป ๋ค์ด ์์ด ํ์ต ๊ณก์ ์ ๊ทธ๋๋ก ํ์ธํ ์ ์์ต๋๋ค. |
|
|
| Learn more: https://huggingface.co/NCDTech ยท https://www.ncdtech.org |
|
|