Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

brover_web

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 и режим fallback

Данные Wi-Fi обновляются каждые пять секунд.

В обычном режиме интерфейс показывает:

  • уровень и оценку качества сигнала;
  • имя сети (SSID);
  • режим подключения;
  • IP-адрес ровера.

Если активен hostapd-wifi-fallback.service, интерфейс определяет ровер как точку доступа и вместо уровня сигнала показывает скорость соединения.

ROS 2-интерфейсы

Направление Имя Тип Назначение
публикация /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 ссылка на редактор в верхней панели

About

Пакет для управления ROS2 ровером BRover E5 с помощью веб-интерфейса

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages