Мой первый KitRover: попытка сделать машинку с управлением по сети (часть 1)
Мой первый KitRover: попытка сделать машинку с управлением по сети (часть 2)
Вступление

В предыдущей статье рассказал, как сделал управление с телефона. Теперь можно управлять машинкой в пределах комнаты, но для выезда за её пределы, хотелось видеть, куда движется устройство на экране. Чем я и начал заниматься дальше.
LiveKit
Настраивая звонки для одного из сервисов, я познакомился с проектом LiveKit. Несложно поднять в Docker, несложно начать работу, несложно решить, что, на этом этапе, вполне подходящий инструмент для получения картинки с камеры.
В спецификации Raspberry Pi Zero 2W сказано: "H.264, MPEG-4 decode (1080p30); H.264 encode (1080p30)". Это дало мне повод указать в Flutter проекте и для rpicam-vid кодек h264.
Join
Сервис Backend имеет процедуру Join, о которой говорил в предыдущей статье, и обратившийся к ней пользователь создает Room для "звонка" в LiveKit сервисе с параметрами, говорящими о том, что:
В комнате не может быть больше двух участников;
Он не будет публиковать треки;
Он будет только читать треки;
Не является администратором.
Если на этот endpoint обращается ровер, у него похожие параметры, за исключением возможности публикации и невозможности чтения треков.
Signal
Для включения и отключения камеры был добавлен endpoint Signal в проекте Proxy. Схема запуска видео-потока получилась следующая:

Задержка, преемлемая для первого варианта, позволяет не врезаться в препятствия, но насколько она приемлемая по сравнению с будущими вариантами, мне сказать сложно, т.к. ничем подобным управлять не доводилось, а сравнивать с FPV решениями не вижу смысла. Однако это хорошая тема для обсужения в комментариях. Будет интересно узнать ваше мнение, как можно улучшить эту часть.
Итоги третьей части
По результату трёх статей у меня получился небольшой проект по управлению ровером, который перемещается между комнатами и транслирует видео на телефон. Скажите свое мнение о проделанной работе в комментариях.
Планы на будущее
На данный момент проект в состоянии, которое описал выше. В дальнейшем планирую заниматься оптимизацией и погружением в затрагиваемые области, а также добавлять следующее:
Информацию о состоянии батареи;
Данные GPS. Хочется иметь небольшую карту в верхнем левом углу приложения;
Джойстик управления камерой по координатам X и Y;
LiDAR. Т.к. проезжать узкие места, не понимая габаритов и ориентируясь только на камеру, не очень удобно.
И рассказывать в будущих статьях, что получилось. Ещё, с появлением поддержки Wi-Fi и Bluetooth в TinyGo, есть мысль сделать проект с использованием Pico W и ESP32-S3 без участия Raspberry Pi, на основе существующей прошивки "mikrocontroller", в качестве игрушки в пределах дома.
Благодарю за прочтение.