mirror of
https://github.com/CopterExpress/clover.git
synced 2026-05-27 21:49:32 +00:00
106 lines
6.5 KiB
Markdown
106 lines
6.5 KiB
Markdown
# Веб-пульт управления квадрокоптером
|
||
|
||
При подключении к Клеверу по Wi-Fi (`CLEVER-xxxx`) по адресу [192.168.11.1:7070](http://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
|
||
|
||
Расположен по центру экрана и отображает текущую скорость\(сверху экрана\) и высоту\(снизу экрана\).
|
||
|
||
Так же, между скоростью и высотой можно выводить любую другую информацию \(например, режимы дрона или данные со стиков\).
|
||
|