diff --git a/assets/webrc.png b/assets/webrc.png new file mode 100644 index 00000000..09092c7e Binary files /dev/null and b/assets/webrc.png differ diff --git a/assets/webrc_arm_disarm.gif b/assets/webrc_arm_disarm.gif new file mode 100644 index 00000000..293e5e50 Binary files /dev/null and b/assets/webrc_arm_disarm.gif differ diff --git a/assets/webrc_header.gif b/assets/webrc_header.gif new file mode 100644 index 00000000..4b4f1634 Binary files /dev/null and b/assets/webrc_header.gif differ diff --git a/assets/webrc_no_connection.png b/assets/webrc_no_connection.png new file mode 100644 index 00000000..bbf316cf Binary files /dev/null and b/assets/webrc_no_connection.png differ diff --git a/assets/webrc_notifications.png b/assets/webrc_notifications.png new file mode 100644 index 00000000..5176115d Binary files /dev/null and b/assets/webrc_notifications.png differ diff --git a/assets/webrc_offboarding.gif b/assets/webrc_offboarding.gif new file mode 100644 index 00000000..0622c326 Binary files /dev/null and b/assets/webrc_offboarding.gif differ diff --git a/docs/web_rc.md b/docs/web_rc.md index 987db6b8..0b58d615 100644 --- a/docs/web_rc.md +++ b/docs/web_rc.md @@ -1,3 +1,106 @@ -Веб-пульт управления квадрокоптером -=== +# Веб-пульт управления квадрокоптером + +По адресу [192.168.11.1:7070](http://192.168.11.1:7070) открывается web-приложение – пульт управления квадрокоптером. + +## Стартовый экран + +При загрузке приложения, автоматически устанавливается соединение с сервером ROS. + +При отстутствии соединения, интерфейс будет заблокирован для управления. +![](/assets/webrc_no_connection.png) + +После установления соединения интерфейс разблокируется. + +![](/assets/webrc.png) + +В интефейсе доступны: + +* Верхняя \(информацинно-командная\) панель +* Уведомления +* Контролы +* HUD + +## Верхняя панель + +Здесь расположены индикаторы и кнопки действий. + +* кнопка-индикатор уведомлений + * отображает иконку типа последнего уведомления + * анимируется при наличии непрочитанных уведомлений + * открывает панель уведомлений +* индикатор уровня Wi-Fi сигнала \(пока нет возможности знать\) +* индикатор уровня заряда батареи \(пока нет возможности знать\) +* кнопка **DISARM** на случай необходимости отключить винты в полёте +* кнопка-индикатор записи видео при записи светится красным и показывает + ⚠️ _Нет API для включения/выключения записи_ +* кнопка переключения камер. Если на дроне больше одной камеры, позволяет переключиться между ними. + ⚠️ _Нет API для получения данных о количестве камер на дрное_ +* кнопка сохранения текущего кадра на камере + ⚠️ _Нет API_ + +## Уведомления 🔔 + +![](blob:file:///17c178ca-1edf-441e-8453-d1a4f5e25d8e) + +* всплывающие – самые важные уведомления всплывают на месте верхней панели + * нажатие по уведомлению открывает ленту уведомлений + * можно смахнуть проведя по уведомлению пальцем \(как и с нативным системным уведомлением\) +* панель уведомлений – полноэкранная лента уведомлений в хронологическом порядке + * объединяет одинаковые сообщения в один, с указанием количества повторений + * открывается нажатием на всплывающее уведомление или кнопку уведомлений на верхней панели + +![](/assets/webrc_notifications.png) + +## Контролы 🎮 + +Бандл контролов – обёртка над несоклькими контроллами, решающая общие над ними задачи. + +Предполагается, что на основе реализованных компонентов, можно будет собирать любой бандл контролов. + +### Основной бандл + +На момент написания заметки реализован один бандл, использующий два двухосевых стика + +* левый – altitude и yaw +* правый – pitch и roll. + +Каждому стику можно задать жесты-экшены, которые будут активироваться при уведении пальца за границу максимального значения в указаной стороне стика. **\(ссылка на доку по стику\)** + +#### Действия + +При касании контролов запрашивается режим OFFBOARD. + +⚠️ _Не запрашивается когда дрон уже в режиме OFFBOARD или когда активен хотя бы один жест._ + +![](/assets/webrc_offboarding.gif) + +Все этапы переключения дрона в режим OFFBOARD отражаются соответствующим цветом контрола + +* красный – не удалось запросить режим, ошибка при отправке сообщения +* жёлтый – режим запрошен, ждём когда дрон начнёт слать **mode: OFFBOARD** +* зелёный – успешно переключился в OFFBOARD + +В режиме OFFBOARD бандл публикует в топик **/mavros/setpoint\_raw/local** данные со стиков соответственно: + +* левый + * по гризонтали – **yaw\_rate** + * по вертикали – **z** \(altitude\) +* правый + * по гризонтали – **x** \(roll\) + * по вертикали – **y** \(pitch\) + +Жесты на левом стике + +* ARM – в правом нижнем углу +* DISARM – в левом нижнем углу + +![](/assets/webrc_arm_disarm.gif) + +Бандл так же следит за тем, что бы данные в топик публиковались непрерывно. Если пользователь остановил пальцы или отпустил контролы, то бандл продолжит публиковать данные с некой минимальной периодичностью, во избежание выпадания дрона из OFFBOARD. + +## Head-Up Display + +Расположен по центру экрана и отображает текущую скорость\(сверху экрана\) и высоту\(снизу экрана\). + +Так же, между скоростью и высотой можно выводить любую другую информацию \(например, режимы дрона или данные со стиков\).