File size: 4,487 Bytes
433d630 24d755d 433d630 24d755d 3c328d4 24d755d 3c328d4 24d755d 8f7d403 0f8d4cb 8f7d403 0f8d4cb 8f7d403 24d755d 3c328d4 24d755d | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 | ---
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
|