Навигация по ArUco-маркерам
Запуск навигации по ArUco-маркерам
Для активации навигации используйте следующую команду:
drone.aruco_map_navigation(state=True, fly_in_borders=True)
Параметры:
state- включает или отключает режим навигацииfly_in_borders- ограничивает перемещение дроном пределами картыTrue- перемещение строго в границах карты (по умолчанию)False- ограничения отключены
Рекомендуется вызывать эту команду после взлета дрона
После активации все команды управления будут выполняться в системе координат карты ArUco-маркеров.
Генерация карты ArUco-маркеров
При подключении по SSH скрипт находится по пути ~/ros2_ws/src/eurus_edu/edu_aruco_navigation/edu_aruco_navigation/generate_map.py
Скрипт можно запускать локально: python generate_map.py cx cy length sx sy
Основные параметры:
cx- количество маркеров по оси Xcy- количество маркеров по оси Ylength- длина стороны маркера (в метрах)sx- расстояние между центрами маркеров по X (в метрах)sy- расстояние между центрами маркеров по Y (в метрах)
Дополнительные параметры:
-o, --out- имя выходного файла (по умолчанию generated_map.csv)-i, --id- начальный ID маркера (по умолчанию 0)-bl, --bottom_left- установка начала координат (0,0) в левом нижнем углу-rev, --reverse- записать маркеры в обратном порядке ID
Пример:
python generate_map.py 8 5 0.3 0.5 0.5 -i 100 -bl
В результате будет создан файл generated_map.csv со следующими параметрами:
размер карты: 8×5 маркеров
размер стороны маркера: 0.3 м
расстояние между центрами: 0.5 м
диапазон ID: от 100 до 139
начало координат (0, 0) - левый нижний угол (маркер 130)
Настройка пути к карте
Путь к файлу карты задается в конфигурационном файле:
~/ros2_ws/src/eurus_edu/edu_aruco_navigation/eurus.ini
Параметр:
map_path- абсолютный путь к CSV-файлу карты
Отладочный интерфейс
При подключении к дрону по Wi-Fi доступен веб-интерфейс:
В интерфейсе можно просматривать:
Визуализацию обнаружения ArUco-маркеров
Отладочное изображение с камеры
Навигация по маркеру
При активированной навигации по ArUco доступна команда:
drone.move_to_marker(marker_id, z, speed=None, yaw=None)
Параметры:
marker_id- ID маркера (тип: str или int)z- высота над маркером (в метрах)speed- скорость перемещения (необязательно, по умолчанию 1)yaw- целевой угол рысканья. Если None - сохраняется текущий yaw
Примеры использования:
drone.move_to_marker(100, 1)
drone.move_to_marker("100", 1, 0.5, 0)