Реализация метода визуальной одометрии для оценки смещения и угла поворота камеры с использованием простого оборудования и OpenCV. Используется улучшенный трекинг оптического потока и «верёвочный» метод стабилизации движения.
? Зачем это нужно?
Если вы работаете с робототехникой, DIY-проектами или просто хотите реализовать устойчивое определение движения камеры в 2D, этот проект будет полезен. Он позволяет получать координаты смещения и угол поворота в режиме реального времени, используя только видеопоток с камеры
⚙️ Технические детали
Проект реализован на Python с использованием библиотеки OpenCV. Основной подход — отслеживание ключевых точек между кадрами с помощью оптического потока Люка-Канаде и расчёт аффинного преобразования для определения:
смещения (dx, dy),
угла поворота (в градусах).
Также используется Kalman Filter для сглаживания данных и повышения устойчивости..
? Что такое «верёвочный метод»?
«Верёвочный метод» — это эвристика, при которой координаты движения накапливаются в виртуальном пространстве, и трекинг привязывается к ближайшей контрольной точке (waypoint). Это:
снижает накопление ошибок,
упрощает возврат к нулевому смещению,
делает трекинг устойчивым при дрейфе.
Когда текущее смещение оказывается достаточно близко к контрольной точке — она считается достигнутой и удаляется.
? Как использовать
Установите зависимости:
pip install opencv-python numpy
-
Запустите main.py. Для управления:
t — включить/выключить трекинг,
r — принудительная переинициализация точек,
q — выход.
Координаты и угол сохраняются в offsets.json, который можно использовать для других систем.
? Репозиторий
? GitHub — Anchor-Optical-TrackeR
? Заключение
Проект отлично подойдёт для прототипов, образовательных целей и встраиваемых решений (Orange Pi, Raspberry Pi и др.). Используется минимум оборудования, но достигается надёжная визуальная одометрия.
Если интересно — ставьте ⭐️ на GitHub и пишите замечания или вопросы в комментариях!