Files
x0gp/hardware/PLAN.md
T
x0gp 76e33cfe62 feat(hardware): initial hardware documentation, 3D models, and ESP32 client code
- Add initial versions of hardware bills of materials (BOM v1-v4), shopping lists, plan, and assembly guides.
- Add STL models for 3D-printing the 1/27 scale OpenRC F1 car parts.
- Add Blender 3D project files (.blend) and camera renders of the car design iterations.
- Add ESP32 client firmware source (client.ino) for handling video streaming and car controls.
- Ignore Blender backup files (*.blend1, *.blend2) and IDE directories.
2026-07-06 12:41:04 +04:00

329 lines
21 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# x0gp — Hardware Plan
Документ фиксирует решения по физической части проекта: шасси машинки,
электроника на борту, трасса в квартире, лэп-тайминг и компьютерное зрение.
Дата фиксации архитектурных решений: 2026-06-18.
Дата обновления (Bambu A1, своё шасси): 2026-06-18.
Дата обновления v2 (compact 1/24/1/27, Orange Pi 5 Pro): 2026-06-18.
---
## 1. Исходные ограничения
| Параметр | Значение | Комментарий |
|---|---|---|
| Самая большая комната | 446 x 319 см (~14.2 м²) | Внутри нужно оставить отступы под мебель и проход |
| Рабочая зона трассы (целевая) | 250-300 x 180-200 см | Только прямоугольный периметр, углы под мебель не используем |
| Ширина полосы трассы | **20-25 см** | Под компактный масштаб 1/24-1/27, запас на ошибки руления |
| Число машинок в PoC | 2-4 шт | Этого достаточно для проверки race orchestration |
| Производство | **Bambu A1** (предварительно) + PETG / ASA / TPU | Шасси, барьеры, маунты — печатаем сами, **шасси полностью своё (не покупная дека)** |
Целевая длина круга: 6-9 м (в зависимости от конфигурации поворотов).
---
## 2. Масштаб и размеры машинки
**Принято v2: машинку уменьшаем до компактного масштаба — 1/24 или 1/27.**
Причины: минимизация площади трассы в квартире, дешевле комплектующие,
быстрее реакция (меньше инерция), меньше расход батарей. Цена — мельче
детали = сложнее CAD/печать/ремонт, меньше выбор готовых RC-узлов.
**Два класса машинок в проекте:**
| Класс | Масштаб | Длина шасси | Ширина шасси | Ширина полосы | Применение |
|---|---|---|---|---|---|
| **Compact** | **1/27** | **13-15 см** | **7-8 см** | **20-22 см** | **Основной класс**. Минимальная трасса, помещается в 200×130 см |
| Mini | 1/32 | 10-12 см | 6-7 см | 16-18 см | Для ещё более компактных трасс и юниоров |
| Standard | 1/24 | 16-18 см | 8-9 см | 22-25 см | Альтернатива Compact, если хочется чуть стабильнее |
**Целевой класс — Compact 1/27** (можно делать две версии для сравнения).
Реальная F1 ~5 м, 1/27 -> ~18.5 см с кузовом, шасси ~13-15 см.
Почему не 1/10:
- Слишком крупно для квартиры.
Почему не 1/18:
- 18-22 см шасси всё ещё занимает заметную площадь.
- Ширина полосы 30-40 см требует трассу ~300×200 см — много для квартиры.
Почему **1/27 лучше 1/32** как primary:
- 1/32 (Tamiya TS/MT мини) — слишком мелкие детали: подшипники 3×6×2 мм,
винты M1.4, серво весом 3-5 г. Сложно печатать точно и ремонтировать.
- 1/27 — золотая середина: достаточно мелкий для квартиры, достаточно
крупный для надёжной 3D-печати и удобного ремонта. Подшипники 4×8×3 мм,
винты M2, серво ~5-8 г. Доступны готовые RC-узлы "Mini-Z" размера.
---
## 3. Шасси машинки
### 3.1. Конструктив
**Решение: шасси полностью своё, спроектированное и напечатанное нами.** Не
покупаем готовую деку — делаем CAD с нуля под 1/27 Compact Formula-стиль
(целевой wheelbase 100-115 мм). Это даёт:
- полный контроль над геометрией (можно итеративно подгонять под трассу);
- уникальный внешний вид (бренд x0gp);
- минимум зависимости от поставщиков RC-деталей;
- быстрые итерации — неудачная дека перепечатывается за вечер.
Базовая идея: кастомное шасси, напечатанное на 3D-принтере, с использованием
готовых RC-узлов (подшипники, амортизаторы, серво, мотор, ESC). ДЕКА (нижняя
плита + верхняя дека + бамперы + стойки) — напечатана нами.
Печатаем сами:
- Основная дека (chassis plate) — PETG / ASA, 3-4 мм wall.
- Передний и задний бамперы — TPU (амортизация ударов о барьеры).
- Маунт серво, маунт ESC, маунт аккумулятора.
- Верхняя дека (electronics plate) — отдельная, для быстрого доступа.
- Защитный кожух для ESP32-S3 (snap-fit, вентиляция).
- Петля IR-датчика (если выбран вариант "петля снизу" — см. раздел 7).
- Крепление кузова (body posts) под 1/27 стандарт (100-115 мм wheelbase).
Покупаем готовые RC-узлы (в Mini-Z / 1/27 размере):
- Амортизаторы (oil-filled, ~25-35 мм) — масштабные.
- Шрусы / приводные валы (dogbones).
- Подшипники (4×8×3 мм, 3×6×2 мм).
- Колёса и шины (1/27 foam или rubber, диаметр ~25-30 мм).
- Кузов (поликарбонат, Formula-стиль, лексан 0.4-0.6 мм) — покупаем готовый
кузов 1/24 или 1/27 (Tamiya / Mon-Tech / Protoform), потом печатаем свой.
### 3.2. Целевая спецификация шасси
- Wheelbase: **100-115 мм**.
- Track width: **70-80 мм**.
- Вес с батареей: **150-220 г**.
- Распределение веса: 40/60 (перед/зад) или 45/55 — настраивается под трассу.
### 3.3. CAD и печать
- **Принтер: Bambu A1 (предварительно).** Плюсы: быстрый (CoreXY, ~500 мм/с),
закрытая камера (для ASA/ABS), тихий, доступный по цене, AMS Lite для
multi-color (полезно для тестовых деталей разного цвета). Минусы: меньше
рабочий объём чем у P1S, нет enclosure для высокотемпературных пластиков
в базе. Альтернатива: **Bambu P1S** (если решим печатать в enclosure).
- CAD: **Fusion 360** (бесплатная лицензия для хобби) или **OnShape** (free tier,
удобно для совместной работы).
- Слайсер: **Bambu Studio** (нативная поддержка A1) или **OrcaSlicer** (больше
настроек).
- Материалы:
- Дека шасси: **PETG** (прочность, не крошится при ударе, легко шкурится).
- Бамперы и амортизирующие элементы: **TPU 95A** (гнётся, не ломается).
- Кузов: тонкостенный PETG / PETG-CF (карбон для жёсткости) или покупной
поликарбонат лексан 0.5-0.8 мм (для первых тестов — купим готовый
кузов 1/18, потом напечатаем свой).
- Крепёж, маунты, кожухи: PETG / PLA+ (декоративные детали).
- Постобработка: PETG шкурится и клеится эпоксидкой. PETG-CF можно оставить
как есть.
- Итерации: первая версия печатается за 1 вечер (A1 печатает деку 1/18 за
~2-4 часа), сразу видно косяки. Версия 2 — на следующий день.
---
## 4. Электроника на борту
### 4.1. Силовая часть (drivetrain)
| Узел | Спецификация | Комментарий |
|---|---|---|
| Мотор | Brushless sensorless 2440 / 2830 (или sensored 3650 если место) | 1/18 обычно 2440 серия, 3800-4500 KV для 2S |
| ESC | 30-40 A, с поддержкой 100-200 Hz refresh, программируемый (Hobbywing XeRun Mini, Quicrun 16BL30, или 3D-printed enclosure для Mini ESC) | Без поддержки высокого refresh — steering будет "залипать" |
| Servo | Mini digital, 9-12 г, скорость 0.06-0.08 s/60deg, момент 1.5-2.5 kg/cm, deadband <= 4 us | Метал-редуктор обязателен |
| Аккумулятор | 2S LiPo 350-450 mAh, 50-100 C, XT30 connector | Быстрая замена через батарейный отсек |
| BEC | Встроен в ESC (6V, 2-3 A) или отдельный buck 5V/3.3V для ESP32 | |
### 4.2. Управляющая электроника (agent)
| Узел | Спецификация |
|---|---|
| MCU | **ESP32-S3-WROOM-1** (или ESP32-S3-DevKitC) |
| Wi-Fi | 2.4 GHz 802.11 b/g/n, поддержка WPA3, ESP-IDF + Wi-Fi DTIM low-power |
| Альтернатива MCU | ESP32-C5 (если нужен 5 GHz) или ESP32-S3 + внешний PA для дальности |
| Прошивка | Go НЕ идёт на ESP32 напрямую. Варианты: (a) MicroPython + asyncio — быстрый PoC; (b) ESP-IDF C/C++ — production; (c) TinyGo — компромисс |
| Питание | Buck 5V/3.3V от BEC ESC, отдельный LDO для аналоговых цепей (серво) |
| Сенсоры | MPU-6050 / ICM-20948 IMU (детекция кренов/столкновений), опционально ToF (VL53L0X) для anti-collision |
| IR-магнитные | TSOP1738 + ИК-светодиоды (или AS5600 магнитный енкодер для серво) |
| Хранилище | Маленькая SPI flash для конфига, OTA |
Рекомендация для PoC: **ESP32-S3 + MicroPython**. Простой, быстрый старт.
К выходу на production-качество — переписать критичный цикл на ESP-IDF C.
### 4.3. Протокол "агент на борту" <-> "агент в помещении"
- Wi-Fi STA mode на ESP32, подключается к выделенной точке.
- WebSocket (или просто TCP) к локальному Go-агенту (см. раздел 9).
- Бинарный формат (protobuf / msgpack), 60-120 Hz.
- Heartbeat каждые 250 мс с состоянием (RSSI, батарея, температура ESC).
- OTA-обновления прошивки через Wi-Fi (инициируются из gateway-агента).
---
## 5. Распределение массы и центр тяжести
- Батарея крепится по центру (или смещается назад для Formula-стиля).
- Мотор сзади, серво спереди.
- Вся электроника сверху, доступна через съёмную деку.
- Балансировка: подкладываем шайбы в крепления амортизаторов.
---
## 6. Трасса
### 6.1. Геометрия
- Форма: сначала прямой овал, потом сложнее.
- Полоса: **20-25 см шириной** (под 1/27 Compact).
- Покрытие: гладкий ПВХ-коврик или линолеум (не ковёр!).
- Барьеры: 3D-printed секции 15-20 см, высота 3-4 см, соединяются пазами.
- Разметка: линия старта/финиша, сектора (1/3, 2/3) — магнитная лента.
**Целевая рабочая зона трассы** (внутри комнаты 446×319 см с отступами):
- **Стандарт**: 200×130 см (прямоугольный периметр, периметр ~6.6 м)
- **Compact**: 180×110 см (для самой маленькой трассы, периметр ~5.8 м)
- **Aggressive** (сложная конфигурация): 220×140 см, с шиканами (периметр ~7+ м)
### 6.2. Структура
- Модульный каркас из 3D-printed уголков и алюминиевого профиля 2020.
- Подложка: лист фанеры 6-8 мм или жёсткий ПВХ.
- Поверхность: линолеум / резина / гладкий ПВХ — низкое трение = выше скорость.
- Стыки модулей: фаски, чтобы не ловить колёсами.
### 6.3. Углы и прямые
- Прямые: 40-70 см минимум для разгона (короче, чем 1/18).
- Повороты: радиус 20-40 см (внутренний).
- Шиканы: 10-18 см шириной.
- Апекс-конусы: 3D-printed (маленькие, ~3 см высота).
### 6.4. Хранение и сборка
- Модули 40x40 см — складываются стопкой.
- Полная сборка трассы 200x130 см: 30-50 минут.
- Полный разбор: 15 минут.
---
## 7. Лэп-тайминг и позиционирование
Выбран гибрид: **IR-магнитные датчики + overhead-CV**.
### 7.1. Старт/финиш и секторы (IR + магнит)
- Магнитная лента 5 мм шириной, утоплена в покрытие.
- На машинке: AS5600 / TLE4990 (магнитный енкодер), читает позицию ленты.
- На каждой секции старта/секторов: TSOP1738 IR-приёмник + ИК-светодиод на машинке.
- Логика: при пересечении линии в определённом направлении — инкремент сектора или фиксация lap.
- Точность: 1-2 мс.
### 7.2. Overhead Computer Vision
- 1-2 камеры над трассой (крепятся на штативе или раме 2020).
- Камеры: USB UVC 1080p 60 fps, глобальный затвор (важно! rolling shutter даст
смаз на скорости), например Arducam OV9281 или ELP USB GS-CMOS.
- Хост: мини-ПК (см. раздел 9.2) с GPU или без (CPU хватит для 2-4 машинок
на Jetson Orin Nano / RPi 5 + Hailo-8).
- Стек: Python + OpenCV + YOLO/ByteTrack, или Go + gocv.
- Что отдаём серверу:
- позиция (x, y, heading) каждой машины @ 30-60 Hz;
- ID-трекинг (ByteTrack / SORT);
- replay-запись (буфер 60 секунд, по запросу пишется в S3-совместимое
хранилище).
### 7.3. Синхронизация времени
- NTP на gateway-агенте, drift < 5 мс.
- На борту машинки — RTC (DS3231) опционально, для синхронных логов.
---
## 8. Электрика в помещении
- Зарядная станция: 4-6 портов ISDT / ToolkitRC, балансир 2S.
- Запас батарей: 3-4 комплекта на машину (ротация).
- UPS для gateway-агента (на случай кратковременных отключений).
- Розетки: 220 В у трассы (для зарядки и gateway).
---
## 9. Локальная инфраструктура (квартира)
### 9.1. Wi-Fi
- Один выделенный роутер 2.4/5 GHz, отдельный SSID "x0gp-track" (изолированный VLAN).
- 5 GHz предпочтительно для агентов (меньше помех от соседей).
- Шифрование: WPA3, только авторизованные MAC (whitelist).
- Роутер в центре комнаты, на высоте 2 м, прямая видимость до всех точек трассы.
### 9.2. Gateway-агент (локальный "мозг" в помещении)
- Мини-ПК: Intel NUC / Beelink EQ12 / RPi 5 (8 GB).
- Софт: Go-агент из репозитория `server` (модуль `cmd/agent-linker`):
- подключается к Edge-серверу по WebSocket (TLS);
- держит WebSocket-сессии со всеми машинками;
- буферизует команды на случай обрыва WAN (до 500 мс);
- отдаёт на сервер телеметрию (CV-треки, IR-секторы, состояние ESC);
- записывает replay на локальный диск, синкает в S3.
### 9.3. Крепёж и кабели
- Камеры на алюминиевом профиле 2020, высота 2-2.2 м.
- Кабели по потолку в кабель-каналах.
- USB-удлинители с фиксацией.
---
## 10. Roadmap (hardware)
| Фаза | Срок (целевой) | Что делаем |
|---|---|---|
| **H0: PoC на столе** | 1-2 нед | 1 машинка, маленькая трасса 100x60 см, без CV, только IR-сектор. Проверяем end-to-end Wi-Fi канал |
| **H1: MVP квартира** | 4-6 нед | 4 машинки, модульная трасса 250x180, overhead-CV, IR-сектор. Полный цикл команды и телеметрии |
| **H2: 3D-итерация** | 8-12 нед | Улучшаем шасси, аэродинамику кузова, диффы, подвеску. Сравниваем 1/18 и 1/20 классы |
| **H3: Продакшн-помещение** | 3-6 мес | Модульная трасса износостойкая, 8-12 машин, hot-swap батарей, резервный LTE-канал |
---
## 11. Бюджет (примерный, ориентир на РФ, 2026)
Масштаб 1/27 Compact — комплектующие и кузова дешевле, чем 1/18, итого
бюджет ниже.
| Категория | Сумма, тыс. руб. |
|---|---|
| 3D-принтер **Bambu A1** (или P1S, решим позже) | 60-150 |
| Filament: PETG ~8 кг, TPU ~1.5 кг, PETG-CF ~1.5 кг, PLA+ ~2 кг | 12-20 |
| Шасси 1/27 Compact на 4 машинки (PETG + RC-компоненты, своё) | 18-35 |
| Электроника (Mini ESC + мини-мотор + мини-серво + BEC) x4 | 20-35 |
| ESP32-S3 + датчики + IMU x4 | 8-12 |
| LiPo батареи 1S/2S 250-350 mAh (12 шт) | 8-15 |
| Кузов поликарбонат 1/24-1/27 x4 | 4-7 |
| Камеры 2 шт + штатив (компактные) | 6-12 |
| **Orange Pi 5 Pro уже есть** | 0 |
| Wi-Fi роутер (TP-Link Deco / MikroTik) | 5-15 |
| Зарядная станция | 5-8 |
| Материалы трассы (профиль 2020, фанера, линолеум, меньше) | 6-12 |
| UPS, кабели, мелочёвка | 5-10 |
| **ИТОГО PoC + MVP** | **~150-330** |
---
## 12. Открытые вопросы
- **Compact 1/27 vs Standard 1/24** — primary 1/27, но CAD должен
предусматривать оба варианта (один файл с параметризованным wheelbase).
- **Overhead-CV**: 1 широкая камера vs 2 узких (над прямыми и поворотами).
- **Точная ширина полосы** (20 vs 22 vs 25 см) — определится после первых
заездов с реальной машинкой.
- **Нужен ли onboard CV** (ESP32-S3 + камера) для резервного трекинга.
- **Bambu A1 vs P1S** — A1 дешевле и быстрее, P1S имеет enclosure для
инженерных пластиков. Решим после тестов с PETG-CF и ASA.
- **Wheelbase**: 100-115 мм — нужно сверить с доступными Mini-Z
амортизаторами (Tamiya / PN Racing / GL Racing).
- **Кузов**: первый кузов купим готовый 1/24 (Tamiya F1 / Mon-Tech F1),
свой CAD начнём после первых тестов.
- **Orange Pi 5 Pro cooling** — RK3588S под нагрузкой греется, нужен
радиатор + вентилятор. Уточнить, что уже стоит на твоей плате.