Целевой сценарий начинается с локального demo mode: Dashboard, Plan, Configure, Flight Control и Simulate изучаются на синтетических данных. Реальный FC подключается только после публикации компонента, проверки secure context, serial flow и safety‑условий.
#bezpiLOTa Mission Control — соседний компонент экосистемы, а не часть KairOS Drone Agent; исполнимый репозиторий пока не опубликован.
Репозиторий KairOS ↗На этой странице +
Среда разработки и браузер
- Node.js 20 или новее.
- npm 9 или новее.
- Git для clone и обновления исходного кода после публикации репозитория.
- Chrome, Edge или Firefox для обычного UI; WebSerial/WebUSB требуют Chromium‑browser.
- USB cable с data lines, если позже подключается реальный FC.
node --version
npm --version
git --versionБезопасный demo‑контур без FC
Демонстрационный режим проектируется для безопасного знакомства с интерфейсом без подключения реального аппарата. Он использует симулированную телеметрию и не выдаёт тестовый стенд за действующий полётный контур.
Локальный demo mode
# Отдельный репозиторий #bezpiLOTa Mission Control ещё не опубликован
# После выпуска ожидаемый поток будет таким:
npm install
NEXT_PUBLIC_DEMO_MODE=true npm run devПланируемый интерфейс должен открываться на http://localhost:4000. При NEXT_PUBLIC_DEMO_MODE=true внешняя база, SITL и physical hardware не нужны. Этот блок фиксирует контракт запуска, а не утверждает наличие команды в текущем репозитории KairOS Drone Agent.
Пять основных рабочих поверхностей
Dashboard
Attitude, GPS/altitude, battery, flight mode, connection path и системные alerts.
Plan
Waypoints, семь generators, altitude/speed/camera trigger, geofences, rally, QGC WPL/KML/CSV.
Configure
Failsafe, PID, power, OSD, ports, sensors, gimbal и firmware‑specific panels.
Flight Control
Arm/disarm, 25+ ArduPilot modes, gamepad/HOTAS 50 Hz, keyboard и guided waypoint.
Simulate
3D mission path, terrain following, camera markers, timing и altitude profile.
WebSerial flow по localhost
npm run devОткрыть localhost
Перейдите на http://localhost:4000 в Chromium‑browser.
Подключить FC
Используйте data USB cable, нажмите Connect и выберите serial port в browser prompt.
Serial open
Browser получает user gesture permission и открывает port.
Heartbeat
Mission Control ждёт FC heartbeat и определяет autopilot/vehicle.
Capabilities
Запрашивает AUTOPILOT_VERSION и протокольные возможности.
Streams + params
Запрашивает telemetry streams и скачивает parameters; проектный ориентир handshake — 2–5 секунд.
WebSerial работает только в secure context
WebSerial, WebUSB и Web Bluetooth требуют HTTPS либо специального доверия к localhost. Поэтому http://localhost:4000 допускается, а http://<lan-ip>:4000 с другого устройства не получает эти APIs. Для hardware access на другом устройстве нужен HTTPS или desktop/Electron build.
Подключение к Drone Agent через обычный WebSocket и REST не использует WebSerial permission, но browser mixed-content rules всё равно важны: HTTPS‑страница может заблокировать plain HTTP/WS Agent. Для полностью локального plain‑HTTP режима GCS и Agent должны быть доступны в согласованном контексте.
Local server и Agent в одной сети
npm run dev
# GCS on this machine
http://localhost:4000
# GCS from another LAN client
http://<your-lan-ip>:4000
# Example KairOS Agent address
http://kairos.local:8080
http://192.168.1.50:8080Физика и протокол без реального аппарата
cd KairOS_Drone-Agent/tools/sitl
npm install
npm startArduPilot SITL должен быть установлен отдельно; binary обычно находится в ~/.ardupilot/. Bridge соединяет simulator telemetry с browser transport. Это безопаснее первого протокольного эксперимента на аппарате, но всё ещё требует проверки версий, params и mission behavior.
Electron для hardware APIs и автономного пакета
npm run desktop:dev
npm run desktop:demo
npm run desktop:build:mac
npm run desktop:buildДля планирования принят ориентир около 200 MB на диске и 200–300 MB RAM. Реальные требования зависят от platform/runtime version и будут опубликованы вместе со сборкой Mission Control.
Переменные режима и внешней инфраструктуры
| Variable | Default | Назначение |
|---|---|---|
| NEXT_PUBLIC_DEMO_MODE | false | Семь simulated drones вместо реальных sources |
| PORT | 4000 | Development server port |
| NEXT_PUBLIC_CONVEX_URL | none | Optional Convex backend |
| NEXT_PUBLIC_MQTT_URL | none | Optional MQTT broker |
Для local/direct mode cloud variables не нужны. Отсутствие Convex или MQTT не должно блокировать direct USB, local Agent discovery или offline mission planning.
Целевая структура отдельного GCS
KairOS_Drone-Agent/
├── agent/ onboard runtime
├── api/ local control surface
├── protocols/ MAVLink and MSP adapters
├── media/ video transports
├── extensions/ sandbox runtime and SDK
├── tools/sitl/ simulator bridge
├── deploy/systemd/ Linux services
├── docs/ project documentation
└── tests/ contracts and hardware profiles
