Upload README.md
Browse files
README.md
CHANGED
|
@@ -6,16 +6,26 @@ tags:
|
|
| 6 |
- numpy
|
| 7 |
- obstacle-avoidance
|
| 8 |
- simulation
|
|
|
|
|
|
|
|
|
|
|
|
|
| 9 |
pretty_name: Sim Driving MLP (NumPy)
|
| 10 |
---
|
| 11 |
|
| 12 |
-
# Sim Driving MLP
|
| 13 |
|
| 14 |
-
|
| 15 |
-
out.** 279 parameters, float32, trained and verified entirely inside our robot
|
| 16 |
-
simulation studio. Small enough to read, small enough to run on an MCU-class device.
|
| 17 |
|
| 18 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 19 |
|
| 20 |
## Architecture
|
| 21 |
|
|
@@ -24,7 +34,7 @@ simulation studio. Small enough to read, small enough to run on an MCU-class dev
|
|
| 24 |
| part | meaning |
|
| 25 |
|------|---------|
|
| 26 |
| input (4) | ultrasonic distances: **F**ront, **L**eft, **R**ight, **B**ack (normalized with the included `norm_mean` / `norm_std`) |
|
| 27 |
-
| output (5 + 1) | 5 command logits
|
| 28 |
|
| 29 |
## Metrics (validation, virtual map)
|
| 30 |
|
|
@@ -33,8 +43,8 @@ simulation studio. Small enough to read, small enough to run on an MCU-class dev
|
|
| 33 |
| command accuracy | **97.2 %** (best epoch 529 / 572) |
|
| 34 |
| turning-angle MAE | ~6.9ยฐ |
|
| 35 |
|
| 36 |
-
The `.npz` also embeds `meta_json`: the full 572-epoch training history
|
| 37 |
-
|
| 38 |
The plot below is drawn directly from that embedded history:
|
| 39 |
|
| 40 |

|
|
@@ -59,27 +69,25 @@ print(cmd, angle)
|
|
| 59 |
|
| 60 |
## The simulator and the target robot
|
| 61 |
|
| 62 |
-
The studio stage where the model's four inputs are defined: ultrasonic sensors
|
| 63 |
-
|
| 64 |
-
|
| 65 |
-
|
| 66 |
-
[demo video (22 min, Korean)](https://youtu.be/ftsw_vbfw6E).
|
| 67 |
|
| 68 |

|
| 69 |
|
| 70 |
-
A driving run on the 8 m ร 8 m virtual map used for data collection
|
| 71 |
-
(green: ultrasonic rays from the robot):
|
| 72 |
|
| 73 |

|
| 74 |
|
| 75 |
-
And this exact model running in the studio's 3D evaluation stage.
|
| 76 |
-
|
| 77 |
-
the softmax over the five commands with FORWARD selected, and the angle head:
|
| 78 |
|
| 79 |

|
| 80 |
|
| 81 |
-
The target hardware: a tracked test robot with the ultrasonic sensors mounted on
|
| 82 |
-
the hand, the same F-channel placement the simulator reproduces.
|
| 83 |
|
| 84 |

|
| 85 |
|
|
@@ -87,25 +95,29 @@ the hand, the same F-channel placement the simulator reproduces.
|
|
| 87 |
|
| 88 |

|
| 89 |
|
| 90 |
-
*(Diagram is in Korean; it is the same figure used on our website, demo video, and
|
| 91 |
-
companion dataset.)*
|
| 92 |
|
| 93 |
-
This model is a **layer-2 artifact** of our stack
|
| 94 |
-
|
| 95 |
-
Every stage of that workflow runs self QA/QC (layer 3) and reports through an
|
| 96 |
-
|
| 97 |
-
are shown in our companion dataset:
|
| 98 |
[NCDTech/human-gated-qaqc-knowledge-example](https://huggingface.co/datasets/NCDTech/human-gated-qaqc-knowledge-example)
|
| 99 |
|
| 100 |
## ํ๊ตญ์ด
|
| 101 |
|
| 102 |
-
**์ด์ํ 4๋ฐฉํฅ ๊ฑฐ๋ฆฌ(์ ยท์ขยท์ฐยทํ)๋ฅผ ๋ฃ์ผ๋ฉด ์ฃผํ ๋ช
๋ น์ด ๋์ค๋
|
| 103 |
-
|
| 104 |
-
|
| 105 |
-
|
|
|
|
|
|
|
|
|
|
| 106 |
|
| 107 |
์ถ๋ ฅ์ ์ฃผํ ๋ช
๋ น 5ํด๋์ค(์ ์ง/์ขํ์ /์ฐํ์ /์ ์ง/ํ์ง) + ํ์ ๊ฐ ํ๊ท 1๊ฐ.
|
| 108 |
-
|
| 109 |
-
|
|
|
|
|
|
|
| 110 |
|
| 111 |
Learn more: https://huggingface.co/NCDTech ยท https://www.ncdtech.org ยท Demo video: https://youtu.be/ftsw_vbfw6E
|
|
|
|
| 6 |
- numpy
|
| 7 |
- obstacle-avoidance
|
| 8 |
- simulation
|
| 9 |
+
- edge
|
| 10 |
+
- embedded
|
| 11 |
+
- industrial
|
| 12 |
+
- sensor-data
|
| 13 |
pretty_name: Sim Driving MLP (NumPy)
|
| 14 |
---
|
| 15 |
|
| 16 |
+
# Sim Driving MLP: a 270-parameter obstacle-avoidance policy (NumPy)
|
| 17 |
|
| 18 |
+
**270 learnable parameters ยท 1.05 KB of weights ยท 0.0103 ms per inference ยท 1.95 KB peak inference memory ยท numpy only, no framework.**
|
|
|
|
|
|
|
| 19 |
|
| 20 |
+
Inference numbers measured on a 12th-gen i7 laptop CPU, average over 100,000 runs.
|
| 21 |
+
|
| 22 |
+
(An earlier revision of this card said 279 parameters. That count included the file's normalization and metadata arrays. The learnable weight and bias count is 270.)
|
| 23 |
+
|
| 24 |
+
A deliberately tiny neural network: **4 ultrasonic distances in, one driving command out.**
|
| 25 |
+
|
| 26 |
+
Small enough to read, small enough to run on an MCU-class device.
|
| 27 |
+
|
| 28 |
+
**Trained on simulation data from a virtual map. No real-world or customer data.**
|
| 29 |
|
| 30 |
## Architecture
|
| 31 |
|
|
|
|
| 34 |
| part | meaning |
|
| 35 |
|------|---------|
|
| 36 |
| input (4) | ultrasonic distances: **F**ront, **L**eft, **R**ight, **B**ack (normalized with the included `norm_mean` / `norm_std`) |
|
| 37 |
+
| output (5 + 1) | 5 command logits (`FWD / LEFT / RIGHT / STOP / BACK`) plus 1 turning-angle regression head |
|
| 38 |
|
| 39 |
## Metrics (validation, virtual map)
|
| 40 |
|
|
|
|
| 43 |
| command accuracy | **97.2 %** (best epoch 529 / 572) |
|
| 44 |
| turning-angle MAE | ~6.9ยฐ |
|
| 45 |
|
| 46 |
+
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.
|
| 47 |
+
|
| 48 |
The plot below is drawn directly from that embedded history:
|
| 49 |
|
| 50 |

|
|
|
|
| 69 |
|
| 70 |
## The simulator and the target robot
|
| 71 |
|
| 72 |
+
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.
|
| 73 |
+
|
| 74 |
+
On the right, the local LLM explains a warning from that checklist, citing the stage report as its basis.
|
| 75 |
+
|
| 76 |
+
This screen is a frame from our [demo video (22 min, Korean)](https://youtu.be/ftsw_vbfw6E).
|
| 77 |
|
| 78 |

|
| 79 |
|
| 80 |
+
A driving run on the 8 m ร 8 m virtual map used for data collection (green: ultrasonic rays from the robot):
|
|
|
|
| 81 |
|
| 82 |

|
| 83 |
|
| 84 |
+
And this exact model running in the studio's 3D evaluation stage.
|
| 85 |
+
|
| 86 |
+
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:
|
| 87 |
|
| 88 |

|
| 89 |
|
| 90 |
+
The target hardware: a tracked test robot with the ultrasonic sensors mounted on the hand, the same F-channel placement the simulator reproduces.
|
|
|
|
| 91 |
|
| 92 |

|
| 93 |
|
|
|
|
| 95 |
|
| 96 |

|
| 97 |
|
| 98 |
+
*(Diagram is in Korean; it is the same figure used on our website, demo video, and companion dataset.)*
|
|
|
|
| 99 |
|
| 100 |
+
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.
|
| 101 |
+
|
| 102 |
+
Every stage of that workflow runs self QA/QC (layer 3) and reports through an on-premise conversational LLM (layer 4).
|
| 103 |
+
|
| 104 |
+
The record formats those layers produce are shown in our companion dataset:
|
| 105 |
[NCDTech/human-gated-qaqc-knowledge-example](https://huggingface.co/datasets/NCDTech/human-gated-qaqc-knowledge-example)
|
| 106 |
|
| 107 |
## ํ๊ตญ์ด
|
| 108 |
|
| 109 |
+
**์ด์ํ 4๋ฐฉํฅ ๊ฑฐ๋ฆฌ(์ ยท์ขยท์ฐยทํ)๋ฅผ ๋ฃ์ผ๋ฉด ์ฃผํ ๋ช
๋ น์ด ๋์ค๋ 270 ํ๋ผ๋ฏธํฐ์ง๋ฆฌ ์์ ์ ๊ฒฝ๋ง**์
๋๋ค.
|
| 110 |
+
|
| 111 |
+
์ถ๋ก 1ํ 0.0103 ms, ์ถ๋ก ๋ฉ๋ชจ๋ฆฌ 1.95 KB, ์์กด์ฑ์ numpy ํ๋ (12์ธ๋ i7 ๋
ธํธ๋ถ CPU์์ 10๋ง ํ ํ๊ท ์ค์ธก).
|
| 112 |
+
|
| 113 |
+
(์ด์ ํ์ "279 ํ๋ผ๋ฏธํฐ"๋ ์ ๊ทํยท๋ฉํ ๋ฐฐ์ด๊น์ง ์ผ ์์น์๊ณ , ํ์ต ๊ฐ์ค์น ๊ธฐ์ค ์ ํํ ์๋ 270์
๋๋ค.)
|
| 114 |
+
|
| 115 |
+
์ ํฌ ๋ก๋ด ์๋ฎฌ๋ ์ด์
์คํ๋์ค์ 8๋จ๊ณ ์ํฌํ๋ก(๋ฐ์ดํฐ ์์ง โ ํ์ต โ ํ๊ฐ โ ๋ฌผ๋ฆฌ ์๋ฎฌ๋ ์ด์
๊ฒ์ฆ)๋ฅผ ํต๊ณผํ ๊ณ์ธต 2(์ฃ์ง ์ ๊ฒฝ๋ง) ์ฐ์ถ๋ฌผ์ด๋ฉฐ, **๊ฐ์ ๋งต ์๋ฎฌ๋ ์ด์
๋ฐ์ดํฐ๋ก๋ง ํ์ต**ํ์ต๋๋ค (์ค๋ฐ์ดํฐยท๊ณ ๊ฐ ๋ฐ์ดํฐ ์์).
|
| 116 |
|
| 117 |
์ถ๋ ฅ์ ์ฃผํ ๋ช
๋ น 5ํด๋์ค(์ ์ง/์ขํ์ /์ฐํ์ /์ ์ง/ํ์ง) + ํ์ ๊ฐ ํ๊ท 1๊ฐ.
|
| 118 |
+
|
| 119 |
+
๊ฒ์ฆ ์ ํ๋ 97.2 %, ๊ฐ๋ ์ค์ฐจ ์ฝ 6.9ยฐ.
|
| 120 |
+
|
| 121 |
+
ํ์ผ ์์ ์ ๊ทํ ํต๊ณ์ 572 ์ํฌํฌ ํ์ต ์ด๋ ฅ ์ ์ฒด๊ฐ ํจ๊ป ๋ค์ด ์์ด ํ์ต ๊ณก์ ์ ๊ทธ๋๋ก ํ์ธํ ์ ์์ต๋๋ค.
|
| 122 |
|
| 123 |
Learn more: https://huggingface.co/NCDTech ยท https://www.ncdtech.org ยท Demo video: https://youtu.be/ftsw_vbfw6E
|