Skip to content

Kondachello/geoscan

Repository files navigation

Проект управления дронами Geoscan Pioneer

Данный репозиторий содержит набор Python-скриптов для разработки и тестирования автономных функций квадрокоптеров серии Geoscan Pioneer (в частности, Pioneer Mini). Основной упор сделан на компьютерное зрение, взаимодействие через SDK и автоматизацию миссий.

Основные возможности

  1. Компьютерное зрение (OpenCV):

    • Детектирование и отслеживание ArUco-маркеров (6x6, 4x4).
    • Оценка позы (Pose Estimation) для точного позиционирования относительно маркера.
    • Следование за маркером с динамическим изменением скорости и угла рыскания (Yaw).
    • Распознавание объектов с помощью нейронной сети MobileNet SSD.
    • Фильтрация по цвету (детектирование синего объекта).
  2. Автономный и Роевой полет:

    • Скрипты для управления группой дронов (Swarm).
    • Полет по круговой траектории с синхронизацией по времени.
    • Загрузка и выполнение LUA-скриптов через протокол MAVLink FTP.
  3. Голосовое управление:

    • Распознавание команд "Взлетай" и "Садись" с использованием библиотек Vosk (offline) и SpeechRecognition (online/Google).
  4. Калибровка камеры:

    • Инструменты для захвата шахматной доски и вычисления матрицы камеры и коэффициентов дисторсии.
    • Сохранение параметров в форматах .yml и .npz.
  5. Телеметрия и Визуализация:

    • Стриминг видео с камеры дрона в реальном времени.
    • Анализ аудиопотока (осциллограф и спектрограмма FFT).

Установка и требования

Для работы скриптов требуется Python 3.8+.

Основные зависимости:

pip install pioneer-sdk opencv-python numpy imutils matplotlib scipy pyaudio SpeechRecognition vosk pyqtgraph

Примечание: Для работы pyaudio на некоторых системах может потребоваться установка системных библиотек PortAudio.


Структура проекта и описание файлов

1. Управление на основе ArUco-маркеров

  • aruco_following.py (и аналоги): Реализует логику "следования" за дроном. Если маркер далеко — дрон летит вперед, если близко — назад. Если маркер смещен от центра кадра — дрон поворачивается.
  • distance_class.py / move_drone_class.py: Модульные классы для выноса логики расчета дистанции и команд управления в отдельные компоненты.

2. Калибровка камеры

  • camera_calibration.py: Основной скрипт для калибровки. Позволяет делать снимки нажатием клавиши 1, а затем вычисляет параметры.
  • save_images.py: Утилита для простого сохранения кадров с камеры для последующей калибровки.

3. Роевой полет (Swarm)

  • swarm_circle.py: Управляет несколькими дронами (по IP), заставляя их лететь по кругу с заданным радиусом и фазовым смещением.
  • lua_generator.py: Генератор LUA-миссий. Создает файлы на основе шаблона template.lua с зашитыми координатами траектории.

4. Взаимодействие и интерфейс

  • manual_control.py: Скрипт для ручного управления дроном с клавиатуры (W/A/S/D — перемещение, Q/E — рыскание, I/K — газ, 1-4 — арм/взлет/посадка).
  • audio_stream.py: Визуализация звукового сигнала с микрофона (полезно для отладки аудио-датчиков).

5. Голосовое управление

  • voice_control.py: Слушает микрофон и при распознавании ключевых слов отправляет команды на Pioneer SDK.

Инструкция по использованию

Подключение к дрону

Большинство скриптов по умолчанию настроены на IP 192.168.4.1 (точка доступа дрона). Если вы используете несколько дронов, убедитесь, что они находятся в одной сети с управляющим ПК, и обновите массив drone_ips в соответствующих скриптах.

Запуск следования за маркером

  1. Откалибруйте камеру и получите файл data.yml или MultiMatrix.npz.
  2. Разместите маркер ArUco (например, ID 0 из словаря 6x6) перед дроном.
  3. Запустите скрипт:
    python aruco_follow.py
  4. Дрон выполнит взлет и начнет удерживать позицию перед маркером.

Калибровка (Chessboard)

  1. Распечатайте шахматную доску (стандартно 9x6 или 6x9).
  2. Запустите camera_calibration.py.
  3. Покажите доску камере под разными углами и делайте снимки (клавиша 1).
  4. Нажмите ESC для завершения и генерации файла калибровки.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published