ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Train the AI, See Results in Realtime
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗An interactive browser demo for AI data-annotation training. Trainees label a scene, then watch a simulated AI act on their labels. Every missed, loose or wrong label shows up in the outcome.
Educational simulation. Outcomes come from simple rules, not a real AI model, real inference or measured safety results.
Double-click index.html, or serve the folder (python3 -m http.server). No build step, dependencies or network needed. Tests: node tests/run.js.
GitHub Pages: push the repo and enable Pages on the branch root. All paths are relative and .nojekyll is included, so it works as-is.
| Page | What it is |
|---|---|
index.html | Overview: hero, how it works, scene teaser |
projects.html | Gallery of all scenes |
learn.html | Scoring, scene summary, glossary |
play.html?scene=<id> | The simulator (road, warehouse, drone, crop, llm) |
| Scene | Labels | Simulation | Critical items |
|---|---|---|---|
Self-driving car (road) | 10 boxes, 5 classes | Car drives the street (2D/3D) | Lead car, pedestrian, cyclist, red light |
Warehouse PPE (warehouse) | 12 boxes | AI safety gate checks workers | Workers |
Drone census (drone), Maasai Mara | 12 boxes, 6 classes | Drone flies transects, live species tally, alerts | Lion near the boma, person setting snares |
Maize scout (crop), Kenya | 10 leaves, 5 classes | 21-day field timelapse: treatment, spread, yield | Fall Armyworm, Lethal Necrosis |
LLM answers (llm) | 10 answers, Correct/Wrong | Chatbot answers the same questions | Two unsafe health answers |
Across all scenes: good label = handled well, loose box = late, missing or wrong = not handled. Missing a critical item gives the worst outcome. In the LLM scene, approving a wrong answer makes the bot repeat it (hallucination or unsafe advice), rejecting a right one makes it invent an alternative, and leaving one unlabelled gives "I'm not sure".
| File | Role |
|---|---|
js/config.js | Road scene data, thresholds, G.SCENARIOS + G.useScenario |
js/scene.js | Road art; shared helpers (roundRect, rng, getSceneCanvas) |
js/warehouse.js, ppe-sim.js, ppe-view.js | Warehouse scene, sim, renderer |
js/drone.js, drone-sim.js, drone-view.js | Drone scene, sim, renderer |
js/crop.js, crop-sim.js, crop-view.js | Maize scene, sim, renderer |
js/llm.js, llm-sim.js, llm-view.js | LLM items, label evaluator + text labeller, chat sim + view |
js/view-kit.js | Shared canvas helpers for the newer views |
js/annotator.js, evaluator.js | Box tool; IoU, matching, score |
js/simulator.js, sim-view.js, sim-3d.js | Road sim and renderers |
js/feedback.js, app.js | Results cards and play-page wiring |
js/nav.js, gallery.js | Site nav and scene cards |
css/styles.css, css/site.css | Simulator styles; site pages and new components |
tests/run.js | Node checks for every scene |
Scripts are plain <script> tags (not ES modules) so pages work from file://.
Add a file that registers G.SCENARIOS.<id> with classes, groundTruth, drawScene, card, outcomes (keys safe, warnings, near_miss, collision), stats, critical, minor, advice, and the names of its sim and view. Then include it in play.html and js/gallery.js's order list. Keep ground-truth boxes non-overlapping.
js/evaluator.js)In simple terms: IoU (shown in the app as "fit") says how well your box sits on the object: 100% is exact, 0% is not touching. Under 30% the AI misses the object; 30–75% it sees it late or unsure and you score less; 75%+ it sees it reliably; 80%+ earns full points. Tighter boxes score higher.
good: IoU ≥ 0.75 and right classpoorBox: 0.30 ≤ IoU < 0.75 and right class (loose)wrongClass: located but labelled wronglymissing: no box with IoU ≥ 0.30duplicate (another box on an already-matched object, −3 points each) or spurious (a box on nothing, −4 each).js/simulator.js)buildDetections converts verdicts into what the simulated AI "sees": good → detected early, poorBox → detected late and weakly, missing/wrongClass → not detected.
Four objects are safety-critical and change the drive:
| Object | Detected | Detected late (loose box) | Not detected |
|---|---|---|---|
| Cyclist crossing, pedestrian on crosswalk, braking car ahead | Brakes smoothly and waits | Reacts late, brakes hard, near miss | No reaction, collision |
| Red traffic light | Stops at the line | Late stop | Runs the red light |
The other six objects (signs, parked car, oncoming car, two pavement pedestrians) never cause a crash. If missed they raise a warning during the drive. Outcome = Collision, Near miss, Completed with warnings or Completed safely. The run is deterministic, so reruns are comparable. A collision ends the run, and objects not yet reached are marked in the feedback.
Tuning knobs (speeds, brake force, detection ranges, near-miss gap) are in P at the top of simulator.js.
G.GROUND_TRUTH in config.js. Keep boxes non-overlapping so matching stays unambiguous.G.THRESHOLDS.{id: {mode: 'good'|'late'|'missed', conf, label}} map as G.buildDetections returns and pass it to G.Sim.create. Nothing else changes.