? Проблема: GPS нет, дрейф есть

Представьте: квадрокоптер летает в ангаре, на складе или в квартире. GPS не ловит, а барометр и гироскоп дают дрейф в позиции. Что остаётся?

Оптический поток — камера, направленная вниз, отслеживает движение по текстуре пола. Это работает, но:

  • При интегрировании скорости накапливается ошибка.

  • Даже при возврате в начальную точку система продолжает показывать смещение.

  • Нет механизма сброса дрейфа.

Решения вроде PX4 используют EKF2, но они сложны и требуют точной калибровки. Я захотел что-то проще и понятнее.

? Идея: «верёвочная лестница»

Плюс верёвочной лестницы — ты всегда понимаешь, на какой ступеньке находишься.

Применил это к визуальной навигации:

  • Стартовая точка — первая ступень.

  • При удалении — добавляю новые ступеньки (контрольные кадры).

  • При возврате — если текущий кадр совпадает с какой-то ступенькой — обрезаю всю историю после неё.

  • Если вернулся к первой ступеньке — система знает: я дома.

? Как это работает

1. Старт

Камера захватывает первый кадр. Извлекаются ключевые точки (через cv2.goodFeaturesToTrack). Это — нулевая ступень.

2. Движение вперёд

При каждом кадре:

  • Отслеживаю точки через cv2.calcOpticalFlowPyrLK.

  • Сравниваю текущее положение с стартовой точкой.

  • Если удаляюсь от старта — добавляю новую ступень.

3. Возврат

Если текущий кадр совпадает с промежуточной ступенью — удаляю всё, что после.

? Выход в offsets.json

Система пишет файл, который читает контроллер.

Плюсы:

  • Простота: только OpenCV и Python.

  • Нет накопления ошибки при возврате.

  • Работает без GPS, IMU, LiDAR.

  • Легко интегрируется.

Минусы:

  • Требует текстурированной поверхности.

  • Пока нет поддержки поворота.

  • Ограничен радиусом видимости точек.

? Код: просто и понятно

Полный код — в репозитории:
? github.com/VohminV/rope-ladder-tracker

Основная логика — в функции rope_ladder_waypoint_management.

? Заключение

rope-ladder-tracker — это новый взгляд на визуальную навигацию: не как на непрерывное интегрирование, а как на структурированное движение по карте.

#беспилотники #opencv #python #компьютерноезрение #квадрокоптер #роутинг #роутингбезgps #rope-ladder-tracker

Комментарии (7)


  1. yuriy_milodov
    30.07.2025 05:06

    Классная идея. Просто, понятно, работает без GPS. Для indoors — топ, жду поддержку поворотов и улучшений. Спасибо за код!


  1. Plesser
    30.07.2025 05:06

    а что за дрон что ты на нем питон запустил?

    ps

    кстати dji mini и выше умеют по optic flow прекрасно возвращаться? демонстрировали видео где дрон вылетел из подземного гаража полетал и потом прекрасно вернулся к точке старта.


    1. feat_branch
      30.07.2025 05:06

      Как минимум mini 1 и 2 в такое не умеют, про более новые - не в курсе, их уже не было во владении


      1. Plesser
        30.07.2025 05:06

        ну про третий mini 3 я только видел ролик блогера, как там на 1 и 2 не знаю.

        а что с вопросом на каком дроне это работает?


        1. mr_stepik
          30.07.2025 05:06

          На pixhawk с линуксом можно. Но там и ekf по умолчанию есть ))


          1. Plesser
            30.07.2025 05:06

            ну это уже что то большое должно быть....


  1. vvbob
    30.07.2025 05:06

    Думаю что эта тема будет активно развиваться, война как обычно, является сильным катализатором такого рода изысканий.