Мой первый KitRover: попытка сделать машинку с управлением по сети (часть 3)
В прошлый раз я рассказывал, как прикрутил к машинке управление со смартфона. Теперь она ездит в пределах комнаты, но хочется большего: выехать за дверь и при этом видеть, куда едешь. Поэтому взялся за трансляцию видео с камеры на экран телефона.
Познакомился с проектом LiveKit, когда настраивал звонки для одного из сервисов. Впечатлило: он прост в запуске — поднимается в Docker, интуитивно понятен на старте, и для моей задачи подходит идеально. По спецификации Raspberry Pi Zero 2W поддерживает кодирование H.264 в разрешении 1080p30, так что в Flutter-приложении и для rpicam-vid я выбрал именно этот кодек.
В Backend-сервисе уже был метод Join из предыдущей статьи. Через него пользователь создаёт комнату в LiveKit с такими параметрами: не больше двух участников, только чтение треков без публикации, статус — не администратор. Для самого ровера параметры почти такие же, но с точностью наоборот: он транслирует картинку и не читает чужие потоки. А в проекте Proxy появился новый endpoint Signal, который включает и выключает камеру.
Схема запуска видео выглядит так: [здесь была бы схема]. Задержка пока терпимая — успеваю реагировать на препятствия, хотя и близко не сравнивал это с профессиональными FPV-системами. Судить не берусь, но было бы любопытно услышать в комментариях, как можно улучшить этот момент.
Итог третьей части: после трёх статей у меня есть работающий ровер, который катается между комнатами и показывает видео на телефоне. Хотелось бы узнать ваше мнение о проделанной работе.
Планы на будущее: оптимизация и углубление в изученные темы, плюс новые фичи: индикатор заряда батареи, GPS с небольшой картой в углу приложения, поворот камеры джойстиком по осям X и Y, и LiDAR — потому как в узких местах без понимания габаритов и только с одной камерой ездить неудобно. Также думаю сделать домашний вариант на Pico W или ESP32-S3 без Raspberry Pi, когда TinyGo подтянет Wi-Fi и Bluetooth, по образцу прошивки «mikrocontroller» — скорее как игрушку.
Спасибо, что дочитали!
