Веб-пульт управления квадрокоптером

При подключении к Клеверу по Wi-Fi (CLEVER-xxxx) по адресу 192.168.11.1:7070 открывается web-приложение – пульт управления квадрокоптером.

Стартовый экран

При загрузке приложения, автоматически устанавливается соединение с сервером ROS.

При отстутствии соединения, интерфейс будет заблокирован для управления.

После установления соединения интерфейс разблокируется.

В интефейсе доступны:

  • Верхняя (информацинно-командная) панель
  • Уведомления
  • Контролы
  • HUD

Верхняя панель

Здесь расположены индикаторы и кнопки действий.

  • кнопка-индикатор уведомлений
    • отображает иконку типа последнего уведомления
    • анимируется при наличии непрочитанных уведомлений
    • открывает панель уведомлений
  • индикатор уровня Wi-Fi сигнала (пока нет возможности знать)
  • индикатор уровня заряда батареи (пока нет возможности знать)
  • кнопка DISARM на случай необходимости отключить винты в полёте
  • кнопка-индикатор записи видео при записи светится красным и показывает тайминг ⚠️ Нет API для включения/выключения записи
  • кнопка переключения камер. Если на дроне больше одной камеры, позволяет переключиться между ними. ⚠️ Нет API для получения данных о количестве камер на дрное
  • кнопка сохранения текущего кадра на камере ⚠️ Нет API, поэтому пока что эта кнопка отвечает за включение/выключение трансляции с камеры

Уведомления 🔔

  • всплывающие – самые важные уведомления всплывают на месте верхней панели
    • нажатие по уведомлению открывает ленту уведомлений
    • можно смахнуть проведя по уведомлению пальцем (как и с нативным системным уведомлением)
  • панель уведомлений – полноэкранная лента уведомлений в хронологическом порядке
    • объединяет одинаковые сообщения в один, с указанием количества повторений
    • открывается нажатием на всплывающее уведомление или кнопку уведомлений на верхней панели

Контролы 🎮

Бандл контролов – обёртка над несоклькими контроллами, решающая общие над ними задачи.

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

Основной бандл

На момент написания заметки реализован один бандл, использующий два двухосевых стика

  • левый – altitude и yaw
  • правый – pitch и roll.

Каждому стику можно задать жесты-экшены, которые будут активироваться при уведении пальца за границу максимального значения в указаной стороне стика. (ссылка на доку по стику)

Действия

При касании контролов запрашивается режим OFFBOARD.

⚠️ Не запрашивается когда дрон уже в режиме OFFBOARD или когда активен хотя бы один жест.

Все этапы переключения дрона в режим OFFBOARD отражаются соответствующим цветом контрола

  • красный – не удалось запросить режим, ошибка при отправке сообщения
  • жёлтый – режим запрошен, ждём когда дрон начнёт слать mode: OFFBOARD
  • зелёный – успешно переключился в OFFBOARD

В режиме OFFBOARD бандл публикует в топик /mavros/setpoint_raw/local данные со стиков соответственно:

  • левый
    • по горизонтали – yaw_rate
    • по вертикали – z (altitude)
  • правый
    • по гризонтали – x (roll)
    • по вертикали – y (pitch)

Жесты на левом стике

  • ARM – в правом нижнем углу
  • DISARM – в левом нижнем углу

Бандл так же следит за тем, что бы данные в топик публиковались непрерывно. Если пользователь остановил пальцы или отпустил контролы, то бандл продолжит публиковать данные с некой минимальной периодичностью, во избежание выпадания дрона из OFFBOARD.

Head-Up Display

Расположен по центру экрана и отображает текущую скорость(сверху экрана) и высоту(снизу экрана).

Так же, между скоростью и высотой можно выводить любую другую информацию (например, режимы дрона или данные со стиков).

results matching ""

    No results matching ""