brover_web — ROS 2-пакет веб-интерфейса для управления ровером BRover-E5.
Интерфейс показывает видео и телеметрию ровера, передаёт команды движения и
отображает состояние подключения к Wi-Fi.
- адаптивное отображение на компьютере и телефоне;
- управление движением с клавиатуры или экранного джойстика;
- ограничение максимальной скорости движения;
- автоматическое обнаружение одной или нескольких камер;
- отображение координат, угла поворота и напряжения аккумулятора;
- сброс одометрии;
- отображение параметров Wi-Fi в обычном режиме и Wi-Fi fallback;
- светлая и тёмная темы.
Браузер
├─ HTTP :8080 ─────→ Flask-сервер brover_web
├─ WebSocket :9090 → rosbridge_server → ROS 2-топики и сервисы
└─ HTTP :9999 ─────→ web_video_server → видео с камер
- Flask-сервер отдаёт HTML, CSS и JavaScript, определяет доступные камеры и предоставляет интерфейсу данные о состоянии Wi-Fi.
- JavaScript-код через
roslib.jsотправляет команды управления в ROS 2 и получает телеметрию. rosbridge_serverсвязывает веб-страницу с ROS 2 через WebSocket.web_video_serverпреобразует ROS 2-топики камер в видеопоток для браузера.- Все три компонента запускаются из
launch/web_server.xml.
Пакет brover_web уже установлен в операционной системе ровера broverOS и
по умолчанию запускается автоматически при загрузке ровера. Для штатной работы
вручную собирать и запускать пакет не требуется.
Команды ниже нужны только при разработке, обновлении исходников или установке пакета в другое рабочее пространство ROS 2.
Клонирование и сборка пакета:
cd ~/ros2_ws/src
git clone https://github.com/voltbro/brover_web.git
cd ~/ros2_ws
colcon build --packages-select brover_webРучной запуск после сборки:
source ~/ros2_ws/install/setup.bash
ros2 launch brover_web web_server.xmlПакет использует значение ROS_DOMAIN_ID из окружения, в котором выполняется
запуск.
После запуска интерфейс доступен по адресу:
http://<IP-адрес-ровера>:8080
В верхней панели также находятся ссылки на VS Code Web ровера и инструкцию BRover-E5.
Движение управляется клавишами:
| Клавиша | Действие |
|---|---|
W |
движение вперёд |
S |
движение назад |
A |
поворот влево |
D |
поворот вправо |
Ползунок «Максимальная скорость» задаёт ограничение от 10 до 100 процентов. При отпускании клавиши интерфейс отправляет команду остановки соответствующего движения.
В правой панели отображаются:
- координаты
XиY; - угол поворота ровера;
- напряжение аккумулятора;
- кнопка сброса одометрии;
- параметры текущего Wi-Fi-соединения.
На экранах шириной до 720 пикселей управление движением выполняется экранным джойстиком. Рядом с ним отображаются напряжение аккумулятора и краткая информация о Wi-Fi.
При отпускании джойстика, сворачивании страницы или потере страницей фокуса публикуется команда остановки ровера.
Сервер автоматически ищет ROS 2-топики типа sensor_msgs/msg/Image.
- Если доступна одна камера, её изображение показывается без дополнительных переключателей.
- Если доступно несколько камер, над видео появляются кнопки переключения.
- Если камеры не обнаружены, интерфейс показывает соответствующее сообщение.
Основной сценарий использования рассчитан на одну камеру. Работа с двумя камерами поддерживается как дополнительный вариант.
Ограничение применяется к командам движения, отправляемым с клавиатуры. Экранный джойстик использует тот же коэффициент скорости в рамках текущей страницы.
После открытия страницы значение ограничения равно 100 процентам.
Данные Wi-Fi обновляются каждые пять секунд.
В обычном режиме интерфейс показывает:
- уровень и оценку качества сигнала;
- имя сети (SSID);
- режим подключения;
- IP-адрес ровера.
Если активен hostapd-wifi-fallback.service, интерфейс определяет ровер как
точку доступа и вместо уровня сигнала показывает скорость соединения.
| Направление | Имя | Тип | Назначение |
|---|---|---|---|
| публикация | /cmd_vel |
geometry_msgs/msg/Twist |
управление движением |
| подписка | /odom_pose2d |
geometry_msgs/msg/Pose2D |
координаты и угол поворота |
| подписка | /bat |
sensor_msgs/msg/BatteryState |
напряжение аккумулятора |
| сервис | /odom/reset |
std_srvs/srv/Empty |
сброс одометрии |
| обнаружение | топики камер | sensor_msgs/msg/Image |
выбор источников видео |
Используемые сетевые порты:
| Порт | Компонент | Назначение |
|---|---|---|
8080 |
brover_web |
веб-интерфейс и данные Wi-Fi |
9090 |
rosbridge_server |
WebSocket-соединение с ROS 2 |
9999 |
web_video_server |
видеопотоки камер |
8090 |
VS Code Web | ссылка на редактор в верхней панели |