Мой первый 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 сервисе с параметрами, говорящими о том, что:

  1. В комнате не может быть больше двух участников;

  2. Он не будет публиковать треки;

  3. Он будет только читать треки;

  4. Не является администратором.

Если на этот endpoint обращается ровер, у него похожие параметры, за исключением возможности публикации и невозможности чтения треков.

Signal

Для включения и отключения камеры был добавлен endpoint Signal в проекте Proxy. Схема запуска видео-потока получилась следующая:

Схема запуска видео
Схема запуска видео

Задержка, преемлемая для первого варианта, позволяет не врезаться в препятствия, но насколько она приемлемая по сравнению с будущими вариантами, мне сказать сложно, т.к. ничем подобным управлять не доводилось, а сравнивать с FPV решениями не вижу смысла. Однако это хорошая тема для обсужения в комментариях. Будет интересно узнать ваше мнение, как можно улучшить эту часть.

Итоги третьей части

По результату трёх статей у меня получился небольшой проект по управлению ровером, который перемещается между комнатами и транслирует видео на телефон. Скажите свое мнение о проделанной работе в комментариях.

Планы на будущее

На данный момент проект в состоянии, которое описал выше. В дальнейшем планирую заниматься оптимизацией и погружением в затрагиваемые области, а также добавлять следующее:

  1. Информацию о состоянии батареи;

  2. Данные GPS. Хочется иметь небольшую карту в верхнем левом углу приложения;

  3. Джойстик управления камерой по координатам X и Y;

  4. LiDAR. Т.к. проезжать узкие места, не понимая габаритов и ориентируясь только на камеру, не очень удобно.

И рассказывать в будущих статьях, что получилось. Ещё, с появлением поддержки Wi-Fi и Bluetooth в TinyGo, есть мысль сделать проект с использованием Pico W и ESP32-S3 без участия Raspberry Pi, на основе существующей прошивки "mikrocontroller", в качестве игрушки в пределах дома.

Благодарю за прочтение.

Комментарии (0)