Skip to content

Глава 2. Обзор графического интерфейса

2.1. Вход в Графический интерфейс

После обновления камеры и подключения ее к БПЛА можно приступать к работе с графическим интерфейсом.

Для этого:

  1. Перенесите дрон в защищенный куб и подайте питание на полетный контроллер, либо снимите винты и подайте питание вне защищенной зоны.

  2. Для доступа к графическому интерфейсу необходимо подключить ПК к Wi-Fi сети, на которую настроена камера (см. подраздел 1.3.2).

  3. После подключения к Wi-Fi необходимо открыть браузер и в адресной строке вбить: http://trackingcam3.local:80 , либо ввести IP-адрес камеры. О том, как узнать IP камеры в подразделе 1.3.3.

Пример ввода в адресной строке (помните о том, что ваш IP будет отличаться): http://192.168.1.65:80.

Подключение по IP является приоритетным, если в одном рабочем пространстве производятся работы с несколькими БПЛА.

2.2 Окно состояния дрона

Рисунок 2.1. Окно “Предполетная проверка” графического интерфейса

  1. Здесь отображаются активные сенсоры: акселерометр и гироскоп, барометр, датчик расстояния, интегрированный в модуль Optical Flow, сам модуль Optical Flow, датчик температуры и GPS. Иконка подсвечивается синим в случае, если датчик подключен и работает. Если связь между полетным контроллером и модулем нарушена или датчик не подключен и полетный контроллер не получает с него данных, то иконка не будет подсвечиваться.

  2. Текущий заряд батареи дрона.

  3. Текущие значения управляющих каналов с пульта управления.

  4. Вкладка меню – здесь можно переключиться между блочным программированием (blockly), окном настройки и окном настройки алгоритмов компьютерного зрения.

  5. Строка состояния ARM - выводит ошибки, препятствующие запуску БВС;

  6. Текущий режим полета – ANGLE (стабилизация по углу), AltHold (удержание по высоте) и PosHold (удержание положения).

  7. Текущие показания одометрии (положения БПЛА), рассчитанного, исходя из показаний датчика Optical Flow.

  8. Текущие показания датчика углового положения, углы крена тангажа и рыскания.

  9. Статус лидара (лазерного дальномера): true – если датчик подключен, false – данные от датчика не поступают.

  10. Статус камеры: true – изображение с камеры получено, false – данных от камеры нет.

  11. Стрим изображения с камеры, на котором отображаются детектируемые ArUco маркеры и цветовые блобы.

2.3 Окно программирования Blockly

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

Рисунок 2.2. Интерфейс окна “Программирование Блокли” графического интерфейса

Интерфейс Blockly:

  1. Выпадающее меню для сохранения, загрузки программ и создания нового рабочего пространства;

  2. Кнопка Запуска программы для выполнения программы;

  3. Кнопка Пауза. При нажатии на нее дрон выполняет текущую программу и ожидает повторного нажатия на кнопку Запуска для продолжения выполнения скрипта, либо нажатия на кнопку Пошагового исполнения (5);

  4. Кнопка Сброса полностью останавливает работу скрипта. после нажатия на нее нужно заново запускать исполнение программы, либо возвращаться к ручному режиму управления;

  5. Кнопка Пошагового выполнения скрипта. Выполнение блоков кода происходит не автоматически, а только после нажатия на данную кнопку;

  6. Стек вызова визуализирует последовательность вызова управляющих команд;

  7. Очистка стека вызова;

  8. Доступные для использования блоки;

  9. Управление рабочим пространством, удаление блока.

2.4 Методы программирования Blockly

Рисунок 2.3. Обзор блока “API Дрона”

В доступных блоках есть вкладка “API Дрона”, позволяющая реализовывать автономный полет дрона с помощью блочного программирования.

Для программирования используются следующие функциональные блоки (методы программирования Blockly):

  • Задержка (мс) – остановить выполнение программы на заданное время в миллисекундах

  • Взлететь – дрон выполняет взлет до высоты 1 метр

  • Посадка – дрон садится на землю

  • Задать угол рыскания – выставить угол рыскания дрона (рекомендуется использовать текущий угол рыскания и к нему добавлять необходимое значение). Принимает значения в радианах.

  • Задать скорость XY – задать линейную скорость полета дрона (значения в м/c). Рекомендуется использовать данную функцию с осторожностью, так как при ошибке выполнения программы дрон необходимо будет перехватить пультом.

  • Задать скорость XY и рыскание – задать линейную и угловую скорость полета дрона (значения в м/c, угловая в рад/c). Рекомендуется использовать данную функцию с осторожностью, так как при ошибке выполнения программы дрон необходимо будет немедленно перехватить пультом.

  • Лететь в XY дрон – полет в заданные координаты XY относительно текущего положения дрона. То есть текущее положение дрона принимается начальной точкой отсчета, при этом ось X дрона направлена по углу тангажа (pitch), а ось Y по углу крена (roll). (положительные значения по X – вперед, по Y – влево)

  • Лететь в XY одометрия – полет в заданные координаты XY относительно точки включения дрона. При включении дрона и взлете выше 15 см начинается расчет относительной одометрии при помощи датчика Optical Flow, таким образом данная функция позволяет отправить дрон в координаты относительно точки взлета (X вперед, Y влево).

Стоит учесть

расчет при помощи Optical Flow не точен и может иметь накапливающуюся погрешность. Также при неправильной калибровке или установке датчика показания могут быть неверными.

  • Задать высоту – позволяет задать высоту полета дрона (от 0,2 до 2 метров).

  • Обнулить оптическую одометрию – позволяет обнулить значения одометрии, можно использовать в случаях, когда положение дрона возможно узнать с большой точностью (например, при детектировании ArUco-маркера).

  • Получить оптическую одометрию – позволяет получить текущие показания оптической одометрии для дальнейшей обработки.

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

  • Получить крен/тангаж/рыскание – позволяет получить текущие значения углов поворота дрона.

  • Получить высоту по барометру – получение текущих показаний барометрического датчика высоты.

  • Получить ARM – получение текущих arm флагов (значения флагов аналогичны значениям на главном экране).

  • Для каждого из ArUco маркеров – получение текущих детектируемых маркеров в виде массива и проход в цикле по ним (позиция и ориентация маркеров относительно камеры).

Для каждой позиции относительно ArUco маркера – получение текущих позиций камеры относительно маркеров.

  • Получить значение освещенности – получает текущие показания датчика освещенности, если датчик не подключен, вернет ноль.

  • Задать светодиод – задает значение для светодиода. Доступны Красные (R), Зеленые (G) и Голубые (B) каналы, можно использовать для информирования о каких-либо действиях (принимает значения от 0 до 255).

  • Задать динамик – реализует управление пьезоизлучателем, посредством управления частотой и громкостью (частота до 5000, громкость до 255).

  • Получить показания датчиков расстояния – реализует чтение показаний датчиков расстояния (0 – если подключен один датчик, 1-3 – если подключено несколько датчиков).

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

  • Напечатать в стек вызовов - инструмент, который можно использовать для отладки, печатает заданное значение или строку в стек вызовов красным цветом.