Данный репозиторий содержит набор Python-скриптов для разработки и тестирования автономных функций квадрокоптеров серии Geoscan Pioneer (в частности, Pioneer Mini). Основной упор сделан на компьютерное зрение, взаимодействие через SDK и автоматизацию миссий.
-
Компьютерное зрение (OpenCV):
- Детектирование и отслеживание ArUco-маркеров (6x6, 4x4).
- Оценка позы (Pose Estimation) для точного позиционирования относительно маркера.
- Следование за маркером с динамическим изменением скорости и угла рыскания (Yaw).
- Распознавание объектов с помощью нейронной сети MobileNet SSD.
- Фильтрация по цвету (детектирование синего объекта).
-
Автономный и Роевой полет:
- Скрипты для управления группой дронов (Swarm).
- Полет по круговой траектории с синхронизацией по времени.
- Загрузка и выполнение LUA-скриптов через протокол MAVLink FTP.
-
Голосовое управление:
- Распознавание команд "Взлетай" и "Садись" с использованием библиотек
Vosk(offline) иSpeechRecognition(online/Google).
- Распознавание команд "Взлетай" и "Садись" с использованием библиотек
-
Калибровка камеры:
- Инструменты для захвата шахматной доски и вычисления матрицы камеры и коэффициентов дисторсии.
- Сохранение параметров в форматах
.ymlи.npz.
-
Телеметрия и Визуализация:
- Стриминг видео с камеры дрона в реальном времени.
- Анализ аудиопотока (осциллограф и спектрограмма FFT).
Для работы скриптов требуется Python 3.8+.
pip install pioneer-sdk opencv-python numpy imutils matplotlib scipy pyaudio SpeechRecognition vosk pyqtgraphПримечание: Для работы pyaudio на некоторых системах может потребоваться установка системных библиотек PortAudio.
aruco_following.py(и аналоги): Реализует логику "следования" за дроном. Если маркер далеко — дрон летит вперед, если близко — назад. Если маркер смещен от центра кадра — дрон поворачивается.distance_class.py/move_drone_class.py: Модульные классы для выноса логики расчета дистанции и команд управления в отдельные компоненты.
camera_calibration.py: Основной скрипт для калибровки. Позволяет делать снимки нажатием клавиши1, а затем вычисляет параметры.save_images.py: Утилита для простого сохранения кадров с камеры для последующей калибровки.
swarm_circle.py: Управляет несколькими дронами (по IP), заставляя их лететь по кругу с заданным радиусом и фазовым смещением.lua_generator.py: Генератор LUA-миссий. Создает файлы на основе шаблонаtemplate.luaс зашитыми координатами траектории.
manual_control.py: Скрипт для ручного управления дроном с клавиатуры (W/A/S/D — перемещение, Q/E — рыскание, I/K — газ, 1-4 — арм/взлет/посадка).audio_stream.py: Визуализация звукового сигнала с микрофона (полезно для отладки аудио-датчиков).
voice_control.py: Слушает микрофон и при распознавании ключевых слов отправляет команды на Pioneer SDK.
Большинство скриптов по умолчанию настроены на IP 192.168.4.1 (точка доступа дрона). Если вы используете несколько дронов, убедитесь, что они находятся в одной сети с управляющим ПК, и обновите массив drone_ips в соответствующих скриптах.
- Откалибруйте камеру и получите файл
data.ymlилиMultiMatrix.npz. - Разместите маркер ArUco (например, ID 0 из словаря 6x6) перед дроном.
- Запустите скрипт:
python aruco_follow.py
- Дрон выполнит взлет и начнет удерживать позицию перед маркером.
- Распечатайте шахматную доску (стандартно 9x6 или 6x9).
- Запустите
camera_calibration.py. - Покажите доску камере под разными углами и делайте снимки (клавиша
1). - Нажмите
ESCдля завершения и генерации файла калибровки.