Статья опубликована в рамках: Научного журнала «Студенческий» № 18(314)
Рубрика журнала: Технические науки
Секция: Технологии
Скачать книгу(-и): скачать журнал часть 1, скачать журнал часть 2, скачать журнал часть 3, скачать журнал часть 4, скачать журнал часть 5, скачать журнал часть 6, скачать журнал часть 7, скачать журнал часть 8, скачать журнал часть 9, скачать журнал часть 10
НАУЧНО-ИССЛЕДОВАТЕЛЬСКАЯ РАБОТА СРАВНЕНИЕ АЛГОРИТМОВ ВИЗУАЛЬНОЙ ОДОМЕТРИИ ДЛЯ АВТОНОМНОЙ НАВИГАЦИИ БЕСПИЛОТНЫХ ВОЗДУШНЫХ СУДОВ
COMPARISON OF VISUAL ODOMETRY ALGORITHMS FOR AUTONOMOUS NAVIGATION OF UNMANNED AIRCRAFT
Dmitry Shokin
student, Saint Petersburg State University of Civil Aviation named after A. A. Novikov,
Russia, Saint Petersburg
Yuri Zemskov
scientific supervisor, Ph.D. in Engineering, acting head of department No. 8, Saint Petersburg State University of Civil Aviation named after A. A. Novikov,
Russia, Saint Petersburg
АННОТАЦИЯ
В работе приводится сравнение методов визуальной одометрии для автономной навигации беспилотного воздушного судна при полетах в городских условиях, а также в помещении. Рассматриваются алгоритмы оптического потока, сопоставления особых точек, SFM, а также метод, основанный на использовании генеративно-состязательных нейронных сетей, обучающихся на смешанных (как размеченных, так и неразмеченных) данных.
ABSTRACT
The paper provides a comparison of visual odometry methods for autonomous navigation of an unmanned aircraft when flying in urban conditions, as well as indoors. Optical flow algorithms, singular point matching, SFM, and a method based on the use of generative-adversarial neural networks learning from mixed (both labeled and unlabeled) data are analyzed.
Ключевые слова: Беспилотное воздушное судно, UAV, визуальная одометрия, генеративно-состязательные сети, GAN, алгоритм обучения с частичным привлечением учителя, semi-supervised learning.
Keywords: Unmanned aircraft, UAV, visual odometry, generative-adversarial networks, GAN, partial teacher involvement learning algorithm, semi-supervised learning.
Введение
В настоящее время беспилотные воздушные суда (БВС) становятся все более распространенными, и их использование представляет собой большой потенциал для многих отраслей, включая транспорт, логистику, сельское хозяйство и многие другие. Однако, для того чтобы БВС могли работать безопасно и эффективно, им необходима надежная система навигации. В этом контексте визуальная навигация (ВН) играет важную роль, которая возрастает с развитием аппаратных и программных платформ БВС, а также методов обработки изображений [1].
Одной из главных причин, почему ВН так актуальна для БВС, является то, что она позволяет получать данные о местоположении и ориентации объектов на земле, используя камеры и другие оптические датчики. Это особенно важно в условиях, когда спутниковая навигация может быть недоступна или ограничена: в горных районах или в городских условиях, где высокие здания и другие препятствия могут вызвать помехи в передаче сигнала.
В некоторых случаях, ВН может обеспечить более высокую точность, чем спутниковая. Например, при определении относительного положения объектов или при выполнении задач в сложных условиях. Кроме того, ВН может быть полезна в случаях, когда БВС работает вблизи других объектов или людей. Например, при выполнении задач по доставке товаров или медицинских препаратов, БВС должен обнаруживать и избегать препятствия на своем пути.
ВН позволяет БВС ориентироваться в окружающей среде без необходимости постоянного обращения к спутникам, что может снизить энергопотребление и увеличить автономность.
Кроме того, ВН может быть полезна в случаях, когда необходимо получить дополнительную информацию о местности или об объектах. Например, при выполнении задач по мониторингу сельскохозяйственных угодий или лесных массивов, БВС может использовать камеры и другие оптические датчики для получения дополнительной информации о рельефе местности, состоянии почвы, растительности и других параметрах.
Кроме того, ВН может служить дополнительным средством для повышения точности позиционирования и улучшения работы систем БВС.
В данной работе рассматриваются алгоритмы визуальной одометрии. Визуальная одометрия играет ключевую роль в системах автономного позиционирования БВС. Она позволяет оценить движение между парой последовательных изображений без внешних опорных сигналов и, таким образом, создать карту окружающего пространства и определить положение БВС относительно этой карты.
1.Задачи, решаемые с помощью визуальной навигации БВС
ВН БВС представляет собой комплекс задач и алгоритмов, которые позволяют БВС ориентироваться в пространстве и выполнять различные миссии. Рассмотрим основные задачи, решаемые ВН БВС:
1. Визуальная одометрия (ВО) [2] – процесс определения перемещения БВС на основе визуальной информации, полученной с его камеры или других видеоисточников. Задачи ВО включают определение перемещения по горизонтальным и вертикальным осям, определение углов поворота и оценку скорости движения.
2. Построение карты местности – процесс создания трехмерной модели окружающей среды на основе визуальных данных. Задачи построения карты местности включают определение границ объектов, распознавание и классификацию объектов, а также определение их положения и ориентации.
3. Обнаружение и распознавание объектов – задачи, связанные с определением наличия и типа объектов на изображении или видео. Визуальная навигация БВС может использоваться для обнаружения и распознавания различных объектов, таких как здания, дороги, автомобили, люди и т.д.
4. Планирование маршрута – процесс определения оптимального пути движения БВС для выполнения задачи. Визуальная навигация может использоваться для планирования маршрута, учитывая препятствия, границы зоны полета и другие ограничения.
5. Автономные взлет и посадка – задачи, связанные с автоматическим выполнением процесса взлета и посадки БВС. Визуальная навигация может использоваться для определения подходящей площадки для посадки или взлета, а также для контроля процесса посадки или взлета.
6. Предотвращение столкновений или опасных сближений – задача предотвращения столкновений БВС с препятствиями или другими летательными аппаратами. Визуальная навигация может использоваться для обнаружения препятствий и принятия решений о маневрах для избежания опасных сближений.
7. Слежение за объектами – задача отслеживания перемещения объектов на изображении или видео. Визуальная навигация может использоваться для слежения за объектами, такими как автомобиль, человек или другое БВС, и определения их положения и скорости.
8. Поиск целей – задача обнаружения целей на изображении или видео. Визуальная навигация может использоваться для поиска целей, таких как потенциальные угрозы или интересные объекты, и предоставления информации о них оператору или автоматической системе управления.
9. Навигация в условиях ограниченной видимости – задача определения положения и ориентации БВС при отсутствии достаточной видимости в темное время суток, а также из-за тумана, дыма или других атмосферных условий. ВН может использоваться для определения положения на основе видимых признаков, таких как контуры объектов или текстура поверхности.
10. Оценка качества изображений – задача определения качества изображений, полученных с камеры БВС. Алгоритмы ВН могут использоваться для оценки различных параметров изображений, таких как резкость, контрастность, яркость и уровень шумов.
Описанные задачи являются лишь частью возможностей ВН БВС. С развитием технологий компьютерного зрения и машинного обучения ожидается расширение спектра задач, которые можно будет решать с ее помощью.
В данной работе подробнее остановимся на методах и алгоритмах ВО. На данный момент существует множество различных алгоритмов ВО, каждый из которых имеет свои преимущества и недостатки. Целью данной работы является сравнение этих алгоритмов и определение наиболее эффективного из них для автономной навигации БВС при выполнении полетов над городом и в помещении.
Основными задачами исследования являются:
1. Изучение существующих алгоритмов ВО и анализ их преимуществ и недостатков.
2. Сбор и подготовка данных для проведения экспериментов.
3. Проведение экспериментов для оценки точности и надежности выбранных алгоритмов в различных условиях.
4. Сравнение результатов экспериментов и выбор наиболее эффективных алгоритмов ВО для автономной навигации БВС.
2.Методы визуальной одометрии
Визуальная одометрия (ВО) – это метод определения перемещения и ориентации БВС на основе анализа изображений, получаемых с камер, установленных на борту БВС. Существует два основных подхода – монокулярная и бинокулярная ВО.
Монокулярная ВО использует одну камеру для получения изображений объектов, которые затем анализируются для определения перемещения и ориентации БВС.
Бинокулярная ВО использует две камеры для получения изображений объектов, которые затем анализируются для определения перемещения и ориентации БВС.
Одним из главных преимуществ монокулярной ВО является ее относительно низкая стоимость, так как для ее реализации требуется только одна камера. Однако, этот метод имеет некоторые недостатки, такие как ограниченность точности и надежности в условиях низкой освещенности или отсутствия текстурных характеристик объектов.
Бинокулярная ВО имеет более высокую точность и надежность, чем монокулярная, так как использует две камеры для получения изображений объектов. Однако, этот метод имеет более высокую стоимость и сложность реализации.
Выбор между монокулярной и бинокулярной ВО зависит от конкретных задач и условий работы БВС. Монокулярная ВО может быть эффективна в условиях достаточной освещенности и наличия текстурных характеристик объектов, тогда как бинокулярная ВО может быть эффективна в условиях низкой освещенности и отсутствия текстурных характеристик объектов.
Один из самых простых методов ВО – метод оптического потока. Он основан на расчете скорости каждого пикселя на изображении. Точность этого метода может снижаться при больших перемещениях между изображениями или сложных сценах.
Структурная ВО использует сопоставление точек на двух изображениях для расчета перемещения камеры. Этот метод более точный, чем оптический поток, однако требует больше вычислений и может быть сложнее в реализации.
Одним из наиболее распространенных алгоритмов ВО является метод на основе структуры окружающей среды (Structure from Motion, SFM). Он основан на построении трехмерной модели окружающей среды по последовательности изображений, полученных с камеры. Для этого используются методы реконструкции структуры сцены, такие как RANSAC (Random Sample Consensus – консенсус на основе случайных выборок) и Bundle Adjustment (уравнивание связок). Однако данный подход имеет ряд ограничений, связанных с необходимостью наличия большого количества текстурных точек в сцене и сложностью обработки больших объемов данных.
Другим популярным алгоритмом является метод на основе отслеживания особых точек (Feature-based Visual Odometry). Он основан на поиске и отслеживании особых точек на изображениях, таких как углы или границы объектов. Затем происходит оценка перемещения и ориентации БВС на основе движения этих точек. Примерами таких алгоритмов являются алгоритмы SURF (Speeded Up Robust Features) и ORB (Oriented FAST and Rotated BRIEF). Однако данный подход также имеет свои ограничения, связанные с проблемами отслеживания точек при низкой текстурности или движении камеры с большой скоростью.
Другой широко распространенный алгоритм – SLAM (Simultaneous Localization and Mapping) [3, 4] – позволяет беспилотному аппарату одновременно определять свое местоположение и строить карту окружающей среды.
Одним из самых перспективных подходов на сегодняшний день по реализации SLAM, является ORB-SLAM, его особенностью является метод нахождения ориентиров ORB (Oriented Fast and Rotated BRIEF).
Параллельная реализация алгоритма SLAM – PTAM (Parallel Tracking and Mapping) – работает быстрее, но менее точно, чем ORB-SLAM.
Также существуют алгоритмы, основанные на глубоком обучении (Deep Learning-based Visual Odometry). Они используют нейронные сети (НС), в частности, сверточные НС, для извлечения признаков из изображений и оценки перемещения и ориентации аппарата. Примерами таких алгоритмов являются PoseNet и VISO2+. Они позволяют достичь хороших результатов в условиях низкой текстурности или быстрого движения камеры, однако требуют большого объема данных для обучения и вычислительных ресурсов для работы.
Совсем недавно предложенные генеративно-состязательные сети (Generative Adversarial Networks, GAN) используются для генерации новых изображений на основе обучающей выборки.
3. Программная реализация простейших методов ВО и критерии сравнения алгоритмов
В Приложении 1 приведена программа на языке Python, реализующая обработку видеоинформации (или последовательности изображений) методом оптического потока.
Код, приведенный в Приложении 2, демонстрирует простой алгоритм визуальной одометрии на основе отслеживания особых точек. Он использует библиотеку OpenCV для извлечения особых точек, вычисления их дескрипторов и сопоставления дескрипторов между двумя изображениями. Затем происходит вычисление перемещения и ориентации на основе сопоставленных точек с помощью функции estimateAffinePartial2D.
При проведении экспериментов необходимо будем учитывать следующие критерии оценки различных алгоритмов:
1. Точность: насколько точно алгоритм определяет положение и ориентацию БВС.
2. Скорость: время, затраченное на обработку данных и определение положения и ориентации.
3. Устойчивость: способность алгоритма работать в различных условиях, таких как изменение освещения или наличие сильных помех.
Для оценки точности можно использовать такие метрики, как средняя ошибка положения и ориентации, средняя ошибка траектории или коэффициент ошибки реконструкции сцены: Mean Absolute Scale Error (MASE), Relative Pose Error (RPE) и другие.
Для оценки скорости можно измерить время работы алгоритма на одном кадре или на всем наборе данных. Для оценки устойчивости можно провести эксперименты в различных условиях и оценить стабильность работы алгоритма.
4. Реализация метода SFM
Метод SFM позволяет решить задачу одновременной реконструкции трехмерной сцены и оценки траектории движения камеры на основе последовательности изображений. Он основан на принципе триангуляции, который заключается в определении трехмерных координат точек сцены по их проекциям на двух или более изображениях.
В основе метода SFM лежит предположение о том, что на сцене присутствуют статические объекты. Это позволяет использовать информацию о перемещении камеры для определения глубины точек сцены. Для этого необходимо решить задачу структурированной оптической потока (optical flow), которая заключается в определении перемещения пикселей на изображении.
Основные этапы метода SFM включают в себя:
1. Извлечение ключевых точек: процесс выделения особых точек на изображении, которые обладают уникальными характеристиками (например, углы или границы объектов). Для этого можно использовать алгоритмы, такие как SIFT (Scale-Invariant Feature Transform) или SURF (Speeded Up Robust Features).
2. Сопоставление ключевых точек: процесс определения соответствия между ключевыми точками на разных изображениях. Для этого можно использовать алгоритм RANSAC (Random Sample Consensus), который позволяет отбросить выбросы и найти наилучшую модель соответствия.
3. Триангуляция: процесс определения трехмерных координат точек сцены по их проекциям на двух или более изображениях. Для этого можно использовать методы, такие как метод гомографии или метод фундаментальной матрицы.
4. Оценка траектории: процесс определения движения камеры на основе последовательности изображений. Для этого можно использовать алгоритмы, такие как RANSAC или Bundle Adjustment.
5. Построение трехмерной модели: процесс объединения трехмерных координат точек сцены и оценки их связей для построения полной трехмерной модели окружающей среды.
Применение метода SFM в автономной навигации БВС позволяет достичь высокой точности определения положения и ориентации аппарата относительно окружающей среды. Это позволяет повысить эффективность и безопасность автономных полетов, а также использовать БВС в различных областях.
Реализация метода SFM на языке Python приведена в Приложении 3.
5. Сверточные нейронные сети и GAN
Сверточные нейронные сети (CNN) являются мощным инструментом в области компьютерного зрения и находят широкое применение в различных задачах, включая ВО БВС.
Одним из основных преимуществ CNN является их способность автоматически извлекать признаки из изображений. Это позволяет CNN самостоятельно определять важные характеристики, такие как края и текстуры, что делает их идеальным инструментом для анализа изображений в задачах ВО.
Процесс ВО с использованием CNN обычно состоит из нескольких этапов. Сначала изображения с камеры БВС подаются на вход CNN, которая автоматически извлекает признаки из изображений. Затем эти признаки используются для определения позиции и ориентации БВС.
Важным аспектом использования CNN в ВО является обучение сети на большом наборе разнообразных данных. Чем больше данных используется для обучения, тем точнее будет работать CNN. Данные могут включать в себя изображения, полученные с камеры БВС, а также данные о позиции и ориентации БВС, полученные с других источников, таких как GPS или инерциальные измерительные устройства. В результате комплексирования измерений достигается повышенная точность и стабильность работы навигационной системы и системы стабилизации БВС.
Одним из примеров применения CNN для ВО БВС является задача определения движения БВС на основе его видеопотока. В этом случае CNN обучается предсказывать следующее положение БВС на основе предыдущих изображений. Это позволяет БВС автономно определять свое положение и принимать соответствующие решения о дальнейшем движении.
Другим примером применения CNN в ВО БВС является задача построения карты местности на основе видеопотока. В этом случае CNN обучается распознавать различные объекты на изображении, такие как дороги, здания, растительность… Затем эти объекты могут быть использованы для построения трехмерной карты местности, которая может быть использована для навигации БВС.
Генеративно-состязательные сети (Generative Adversarial Networks, GAN), предложенные в 2014 году, – это класс алгоритмов машинного обучения, которые используют две нейронные сети – генератор и дискриминатор, чтобы создать новые данные, которые могут быть схожи с реальными данными.
Рисунок 1. Структурная схема GAN
GAN используют обучение на смешанных, т.е. как размеченных (обучение с учителем), так и не размеченных (обучение без учителя) данных, т.к. генератор не требует явной разметки данных для обучения.
Алгоритм обучения GAN начинается с инициализации генератора случайными значениями. Затем генератор и дискриминатор обучаются на реальных данных. Генератор пытается создать новые данные, которые могут быть приняты дискриминатором как реальные, в то время как дискриминатор пытается различить реальные данные от данных, созданных генератором. Процесс обучения проходит через ряд итераций, где генератор и дискриминатор обновляют свои весовые коэффициенты, взаимодействуя друг с другом. Первый генерирует новые данные, а второй оценивает их на подлинность. Затем обновляются веса генератора и дискриминатора на основе ошибки, которую они совершают. Целью обучения является достижение равновесия между генератором и дискриминатором, когда генератор создает данные, которые (с точки зрения дискриминатора) неотличимы от реальных.
Алгоритм смешанного обучения для GAN состоит из следующих шагов:
1. Инициализация модели: создание генератора и дискриминатора нейросетей. Веса модели инициализируются случайными значениями.
2. Обучение на размеченных данных: используя размеченные данные, модель обучается на задаче классификации. Для этого используется только дискриминаторная часть модели. Веса генератора замораживаются, чтобы предотвратить их обновление в этом шаге.
3. Обучение на неразмеченных данных: используя неразмеченные данные, модель обучается на задаче генерации данных. В этом шаге используется как генераторная, так и дискриминаторная части модели. Веса генератора размораживаются для обновления.
4. Обновление весов: после каждого шага обучения веса модели обновляются с использованием оптимизационного алгоритма, такого как стохастический градиентный спуск (SGD) или Adam.
Шаги 2-4 повторяются несколько раз до достижения заданного числа итераций или до достижения определенной точности модели.
6. Вычислительный эксперимент
Для сравнения работы рассмотренных алгоритмов в данной работе использовался набор данных KITTI [5], на котором вводятся метрики: среднеквадратичная ошибка абсолютного сдвига (absolute translation RMSE) tabs или ошибка среднего относительного сдвига (relative translation) trel, а также поворота (relative rotation) rrel.
На рис.2 показаны истинная траектория и траектории, рассчитанные с использованием рассматриваемых методов.
Рисунок 2. Истинная и рассчитанные траектории движения
Результаты экспериментов приведены в таблице 1 (выделены минимальные значения для каждой последовательности).
Таблица 1
Результаты экспериментов
Последовательность данных KITTI |
SLAM |
ORB-SLAM |
GAN |
|||
trel, % |
rrel, º/100 м |
trel, % |
rrel, º/100 м |
trel, % |
rrel, º/100 м |
|
00 |
26,4 |
4,7 |
12,6 |
3,4 |
11,3 |
4,1 |
01 |
27,3 |
4,1 |
42,8 |
3,7 |
28,6 |
4,7 |
02 |
14,8 |
3,9 |
31,4 |
4,5 |
16,1 |
2,9 |
03 |
7,9 |
3,4 |
10,6 |
3,8 |
9,4 |
3,1 |
04 |
14,2 |
3,7 |
0,46 |
2,6 |
15,9 |
4,2 |
Как видим, алгоритм GAN обеспечивает минимальные значения ошибки для последовательностей 00, 02 и 03 рассматриваемого набора данных.
Заключение
Несмотря на более сложную реализацию и повышенные требования к аппаратным средствам навигационной системы БВС, можно утверждать, что предложенный в 2014 году алгоритм на основе генеративно-состязательных сетей заслуживает дальнейшего изучения с целью снижения погрешности и облегчения требований к процессу предварительного обучения.
ПРИЛОЖЕНИЕ 1
Реализация на языке Python алгоритма оптического потока
import numpy as np
import cv2
# Чтение исходных изображений:
image1 = cv2.imread('image1.jpg', cv2.IMREAD_GRAYSCALE)
image2 = cv2.imread('image2.jpg', cv2.IMREAD_GRAYSCALE)
# Вычисление оптического потока:
flow = cv2.calcOpticalFlowPyrLK(image1, image2, None, None, **args)
# Визуализация:
cv2.imshow(‘Optical flow’, np.uint8(flow))
cv2.waitKey(0)
cv2.destroyAllWindows()
ПРИЛОЖЕНИЕ 2
Реализация на языке Python алгоритма визуальной одометрии на основе отслеживания особых точек
import cv2
import numpy as np
def feature_based_visual_odometry(image1, image2):
# Извлечение особых точек на изображениях
detector = cv2.FastFeatureDetector_create()
keypoints1 = detector.detect(image1)
keypoints2 = detector.detect(image2)
# Вычисление дескрипторов особых точек
extractor = cv2.BRISK_create()
_, descriptors1 = extractor.compute(image1, keypoints1)
_, descriptors2 = extractor.compute(image2, keypoints2)
# Сопоставление дескрипторов
matcher = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True)
matches = matcher.match(descriptors1, descriptors2)
# Вычисление перемещения и ориентации
motion = cv2.estimateAffinePartial2D(
np.float32([keypoints1[m.queryIdx].pt for m in matches]),
np.float32([keypoints2[m.trainIdx].pt for m in matches])
)
return motion
ПРИЛОЖЕНИЕ 3
Реализация на языке Python алгоритма SFM
import cv2
import numpy as np
def sfm(images):
# Извлечение ключевых точек:
sift = cv2.xfeatures2d.SIFT_create()
keypoints = []
descriptors = []
for image in images:
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
kp, des = sift.detectAndCompute(gray, None)
keypoints.append(kp)
descriptors.append(des)
# Сопоставление ключевых точек:
matcher = cv2.BFMatcher()
matches = []
for i in range(len(descriptors) - 1):
matches.append(matcher.knnMatch(descriptors[i], descriptors[i + 1], k=2))
# Триангуляция:
points_3d = []
for i in range(len(matches)):
points1 = []
points2 = []
for m in matches[i]:
if m[0].distance < 0.75 * m[1].distance:
points1.append(keypoints[i][m[0].queryIdx].pt)
points2.append(keypoints[i + 1][m[0].trainIdx].pt)
points1 = np.float32(points1)
points2 = np.float32(points2)
F, mask = cv2.findFundamentalMat(points1, points2, cv2.FM_RANSAC)
points1 = points1[mask.ravel() == 1]
points2 = points2[mask.ravel() == 1]
_, R, t, _ = cv2.recoverPose(F, points1, points2)
points4d_homogeneous = cv2.triangulatePoints(np.eye(3, 4), np.hstack((R, t)), points1.T, points2.T)
points4d_homogeneous /= points4d_homogeneous[3]
points3d = points4d_homogeneous[:3].T
points_3d.append(points3d)
# Оценка траектории:
trajectory = [np.zeros((3, 1))]
for i in range(len(points_3d)):
_, R, t, _ = cv2.solvePnPRansac(points_3d[i], keypoints[i + 1], camera_matrix, dist_coeffs)
trajectory.append(t)
return trajectory
Список литературы:
- Форсайт, Д. А. Компьютерное зрение. Современный подход / Д. А. Форсайт, Ж. Понс. – М. : Вильямс, 2004. – С. 76–77.
- Scaramuzza, D. Visual odometry [tutorial]. Part I: The first 30 years and fundamentals / D. Scaramuzza, F. Fraundorfer // IEEE Robotics and Automation Magazine. – 2011. – Vol. 18, no. 4. – P. 80–92
- Durrant-Whyte H., Bailey T. Simultaneous localization and mapping: part I // IEEE Robotics Automation Magazine. –– 2006. –– Vol. 13, no. 2. –– P. 99–110.
- Kimera: an Open-Source Library for Real-Time Metric-Semantic Localization and Mapping / Antoni Rosinol, Marcus Abate, Yun Chang, Luca Carlone // IEEE Intl. Conf. on Robotics and Automation (ICRA). –– 2020. –– URL: https://github.com/MIT-SPARK/Kimera.
- Vision meets Robotics: The KITTI Dataset / Andreas Geiger, Philip Lenz, Christoph Stiller, Raquel Urtasun // International Journal of Robotics Research (IJRR). –– 2013.
Оставить комментарий