12.19M
Category: informaticsinformatics

2.8. Клевер_полет по Aruco меткам

1.

Разработка ПО для
полетного
контроллера
БАС
Комплексные решения с
компьютером компаньоном
- Настройка проекта COEX
- Полет по Aruco меткам
- Сервисы визуализации ROS
к.т.н., доцент каф.806
Ухов Петр Александрович

2.

Настройка проекта Coex – практика
Конфигурационные файлы проекта (включим навигацию по Aruco меткам):
1. Основной файл конфигурации проекта:
nano ~/catkin_ws/src/clover/clover/launch/clover.launch (включим навигацию по Aruco)
2. Файл конфигурации навигации и карты меток aruco.launch (заменим карту с map.txt на cmit.txt и
настроим все в соответствии с инструкцией), проверим что карта изменилась
http://localhost:8080/snapshot?topic=/aruco_map/image для применения изменений нужно
перезагрузить ROS командой: sudo systemctl restart clover (на полетном контроллере)
диагностику командой: rosrun clover selfcheck.py
далее познакомимся с другими файлами настройки запуска
3. Файл конфигурации светодиодной ленты led.launch
4. Файл конфигурации основной камеры main_camera.launch
5. Конфигурация запуска MAVROS mavros_config.yaml
Файл запуска MAVROS mavros.launch (основан на базовой конфигурации)
6. Файл конфигурации симулятора simulator.launch
2
Если внимательно изучить конфигурацию, то не все дополнения MAVROS установлены…

3.

Детали по настройке aruco.launch
Отредактируем файл конфигурации: nano ~/catkin_ws/src/clover/clover/launch/aruco.launch
3
Аргумент aruco в файле ~/catkin_ws/src/clover/clover/launch/clover.launch должен быть в значении true:
<arg name="aruco" default="true"/>
Для включения распознавания маркеров аргумент aruco_detect в файле
~/catkin_ws/src/clover/clover/launch/aruco.launch должен быть в значении true:
<arg name="aruco_detect" default="true"/>
Для правильной работы в этом же файле также должны быть выставлены аргументы:
<arg name="placement" default="floor"/> <!-- расположение маркеров, см. далее -->
<arg name="length" default="0.33"/> <!-- размер маркеров в метрах (не включая белую рамку) -->
Значение аргумента placement следует выставлять следующим образом:
•если все маркеры наклеены на полу (земле), выставить значение floor;
•если все маркеры наклеены на потолке, выставить значение ceiling;
•в противном случае удалить строку с параметром.
Если некоторые маркеры имеют размер, отличный значения length, их размер может быть
переопределен с помощью параметра length_override ноды aruco_detect:
<param name="length_override/3" value="0.1"/> <!-- маркер c id 3 имеет размер 10 см -->
<param name="length_override/17" value="0.25"/> <!-- маркер c id 17 имеет размер 25 см -->

4.

Полет по Aruco меткам - практика
А теперь выполним тоже самое и сравним различия (навигация по меткам ArucoMap):
Запустим qgroundcontrol чтобы избежать RC Failsafe и далее выполним взлет:
Проверим состояние коптера:
rostopic echo /mavros/state
Заармируем коптер:
rosservice call /mavros/cmd/arming "value: true"
Для взлета попробуем выполнить сервис:
rosservice call /mavros/cmd/takeoff 0 0 0 0 3
Для посадки используйте сервис mavros/cmd/land. Выполните следующую команду:
rosservice call /mavros/cmd/land 0 0 0 0 0
В процессе выполнения полета посмотрим на топики камеры и модуля ArucoMap
Указанные метки могут быть размещены на потолке и позволяют
осуществлять дешевую навигацию внутри помещений, в отличие от
других технологий (более дорогие системы на базе радиосигналов или
более сложные SLAM алгоритмы)
4
Посмотреть результаты распознавания маркеров можно по ссылке:
http://localhost:8080/stream_viewer?topic=/aruco_detect/debug

5.

Генератор Aruco меток
Map-based navigation is possible using vision position estimate
(VPE)
Для генерации карты Aruco меток можно использовать сервис:
https://aruco-gen.netlify.app/
Для клевера использована своя реализация:
https://chev.me/arucogen/
Cама же карта задается в виде текстового файла с
параметрами размещения маркеров:
https://clover.coex.tech/en/aruco_map.html#marker-mapdefinition
marker_id marker_size x y z z_angle y_angle x_angle
Текущую карту клевера можно просмотреть в браузере
(благодаря веб сервису) в виде топика:
http://localhost:8080/snapshot?topic=/aruco_map/image
5

6.

Сервисы визуализации ROS – rviz
Детальное описание тут: http://wiki.ros.org/rviz/UserGuide
Инструмент rviz позволяет в
реальном времени
визуализировать на 3Dсцене все компоненты
робототехнической системы
- системы координат,
движущиеся части,
показания датчиков,
изображения с камер.
6

7.

Сервисы визуализации ROS rviz - практика
Настроим отображение беспилотника:
1. Отобразите топик камеры /main_camera/image_raw (на виртуальной машине иногда не хватает
ресурсов, тогда можно выбрать аналогичный топик с обновлением 1 раз в секунду)
2. Отобразите визуальный топик для проверки детекции маркеров /aruco_detect/debug
3. Попробуйте выполнить взлет и посмотреть на результаты отображения
Выполните визуальизацию положения:
1. В качестве reference frame
рекомендуется установить фрейм map.
2. Для визуализации коптера добавьте
визуализационные маркеры из
топика /vehicle_markers.
3. Для визуализации камеры коптера
добавьте визуализационные маркеры из
топика /main_camera/camera_markers.
7

8.

Сервисы визуализации ROS – rqt
Детальное описание тут: https://clover.coex.tech/ru/rviz.html
Запустим визуализацию в процессе полета:
1. Запустим Service caller (Plugins->Services) и попробуем выполнить также взлет и посадку
2. Посмотрим установленные плагины визуализации данных (Plugins)
8

9.

Сервисы визуализации ROS – rqt_graph
Выполните в консоли
команду rqt_graph
Поэкспериментируйте с
разными видами
представления
информации
9

10.

Сервисы записи данных ROS – rosbag
Официальная документация по пакетам для записи и воспроизведения данных в ros доступна по ссылке
Для записи необходима установка пакета rosbag (базовый для ROS): https://wiki.ros.org/rosbag
Графическая утилита rqt_bag для просмотра и проигрывания записей rosbag: https://wiki.ros.org/rqt_bag
rqt_bag – приложение для записи и управления файлами bag. Основные особенности:
10
может показать содержимое топиков в bag
отображает графические топики (в т.ч. в виде миниатюр на временной шкале)
строит настраиваемый временной ряд значений топиков
публикует/записывает сообщения по выбранным топикам в/из ROS
экспортируем топики за определенный период времени в другой bag файл

11.

Сервисы записи данных ROS – rosbag
Попрактикуемся с записью данных:
1. Запустим симуляцию Coex (ярлык Gazebo Clover на рабочем столе)
2. Выполните в терминале запуск rqt, далее Plugins --> Logging --> Bag
3. Нажмите на запись и выберите топики для записи (main_camera/image_raw, mavros/altitude,
rangefinder/range)
4. Откройте в VSCode папку examples (со скриптами python) и выберите flight.py (в диалоге выберите
доверять создателям папки для включения возможности запуска кодов)
5. Перейдите обратно в rqt и включите запись файла bag
6. Выполните запуск скрипта flight.py, убедитесь, что беспилотник выполнил взлет и посадку.
7. Перейдите обратно в rqt и выключите запись файла bag
8. Сохраните полученный bag файл.
9. Выполните rosbag reindex <name>.bag
для вашего файла
11

12.

Полет на Coex через Python
Управление питоновским скриптом через
библиотеку rospy (подключается к ROS)
12

13.

Запись и просмотр bag файла
Просмотр и проигрывание
посредством rqt
13

14.

Просмотр данных из Python – bagpy
Для доступа к данным из файла bag будем использовать Jupyter Notebook (у кого нет локально
установленного юпитера, воспользуйтесь сервисом Google Colab – ссылка)
Посмотрим просмотр записанных данных на примере робособаки Дора МАИ (ссылка на юпитер)
14

15.

Задание на практику
Выполните настройку Клевера для полета по карте меток Aruco и выполните простой взлет и посадку с
демонстрацией визуализации камеры (из Gazebo) запишите результаты полета в виде видеоотчета по
практике.
15
English     Русский Rules