ORB-SLAM2
Авторы: Raul Mur-Artal, Juan D. Tardos, J. M. M. Montiel и Dorian Galvez-Lopez (DBoW2).
13 января 2017 года: теперь поддерживаются OpenCV 3 и Eigen 3.3.
22 декабря 2016 года: добавлена AR-демонстрация (см. раздел 7).
ORB-SLAM2 — это библиотека SLAM в реальном времени для камер Monocular, Stereo и RGB-D, которая вычисляет траекторию камеры и разреженную трёхмерную реконструкцию (в случае стерео и RGB-D с истинным масштабом). Она способна обнаруживать петли и повторно локализовать камеру в реальном времени. Мы предоставляем примеры для запуска системы SLAM на наборе данных KITTI в качестве стерео или монокулярного, в наборе данных TUM в качестве RGB-D или монокулярного и в наборе данных EuRoC в качестве стерео или монокулярного. Мы также предоставляем узел ROS для обработки прямых монокулярных, стереоскопических или RGB-D потоков. Библиотеку можно скомпилировать без ROS. ORB-SLAM2 предоставляет графический интерфейс для переключения между режимом SLAM и режимом локализации, см. раздел 9 этого документа.
[Монокулярный] Рауль Мур-Арталь, Дж. М. М. Монтиель и Хуан Д. Тардос. ORB-SLAM: универсальная и точная монокулярная система SLAM. IEEE Transactions on Robotics, том. 31, № 5, стр. 1147–1163, 2015. (Премия IEEE Transactions on Robotics за лучшую статью 2015 года). PDF.
[Стерео и RGB-D] Рауль Мур-Арталь и Хуан Д. Тардос. ORB-SLAM2: открытая система SLAM для монокулярных, стереозрительных и RGB-D камер. IEEE Transactions on Robotics, vol. 33, no. 5, pp. 1255–1262, 2017. PDF.
[DBoW2 Place Recognizer] Дориан Гальвес-Лопес и Хуан Д. Тардос. Мешки бинарных слов для быстрого распознавания мест в последовательностях изображений. IEEE Transactions on Robotics, vol. 28, no. 5, pp. 1188–1197, 2012. PDF
Установите исходные зависимости ORB-SLAM2
В ~/.bashrc добавьте объявление Package, например
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/rain/workspace/ORB_SLAM2
Запустите три узла отдельно на трёх портах, настройте соответствующие пути в соответствии со своим каталогом
$ rosrun ORB_SLAM2 LocalMapping Vocabulary/ORBvoc.bin
$ rosrun ORB_SLAM2 LoopClosing Vocabulary/ORBvoc.bin
$ rosrun ORB_SLAM2 Tracking Vocabulary/ORBvoc.bin Examples/RGB-D/TUM2.yaml Examples/RGB-D/rgbd_dataset_freiburg2_desk Examples/RGB-D/rgbd_dataset_freiburg2_desk/associate.txt
pSolver->SetRansacParameters(0.99,5,300);
Второй параметр должен быть изменён с 20 на 5 для обнаружения петель, но это также может привести к неправильному сопоставлению.
Подробности см. в приложении к проекту.
ORB-SLAM2 выпущен под лицензией GPLv3. Список всех зависимостей кода/библиотеки (и связанных лицензий) см. в Dependencies.md.
Для закрытой версии ORB-SLAM2 для коммерческих целей, пожалуйста, свяжитесь с авторами: orbslam (at) unizar (dot) es.
Если вы используете ORB-SLAM2 (Monocular) в академической работе, пожалуйста, укажите:
@article{murTRO2015, **title: ORB-SLAM: универсальная и точная монокулярная система SLAM**,
author: Рауль Мур-Арталь, Дж. М. М. Монтьель и Хуан Д. Тардос,
journal: IEEE Transactions on Robotics,
volume: 31,
number: 5,
pages: 1147–1163,
doi: 10.1109/TRO.2015.2463671,
year: 2015
Если вы используете ORB-SLAM2 (стерео или RGB-D) в академической работе, пожалуйста, укажите:
@article: murORB2,
title: ORB-SLAM2: открытая система SLAM для монокулярных, стереоскопических и RGB-D камер,
author: Рауль Мур-Арталь и Хуан Д. Тардос,
journal: IEEE Transactions on Robotics,
volume: 33,
number: 5,
pages: 1255–1262,
doi: 10.1109/TRO.2017.2705103,
year: 2017
Мы протестировали библиотеку в Ubuntu 12.04, 14.04 и 16.04, но её должно быть легко скомпилировать на других платформах. Мощный компьютер (например, i7) обеспечит производительность в реальном времени и более стабильные и точные результаты.
Мы используем новые функции потоков и хронографов C++11.
Мы используем Pangolin для визуализации и пользовательского интерфейса. Инструкции по загрузке и установке можно найти по адресу: https://github.com/stevenlovegrove/Pangolin.
Мы используем OpenCV для обработки изображений и функций. Инструкции по загрузке и установке можно найти по адресу: http://opencv.org. Требуется как минимум 2.4.3. Протестировано с OpenCV 2.4.11 и OpenCV 3.2.
Требуется g2o (см. ниже). Инструкции по загрузке и установке можно найти по адресу: http://eigen.tuxfamily.org. Требуется не менее 3.1.0.
Мы используем библиотеку g2o для выполнения нелинейной оптимизации. Инструкции по загрузке и установке можно найти по адресу: https://github.com/RainerKuemmerle/g2o.
Мы используем модифицированные версии библиотеки DBoW2 для распознавания мест (BSD), которая включена в папку Thirdparty.
Мы предоставляем несколько примеров для обработки живого ввода монокулярной, стереоскопической или RGB-D камеры с использованием ROS. Создание этих примеров необязательно. Если вы хотите использовать ROS, необходима версия Hydro или новее.
Клонируйте репозиторий:
git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
Мы предоставляем скрипт build.sh для сборки библиотек Thirdparty и ORB-SLAM2. Убедитесь, что вы установили все необходимые зависимости (см. раздел 2). Выполните:
cd ORB_SLAM2
chmod +x build.sh
./build.sh
Это создаст libORB_SLAM2.so в папке lib и исполняемые файлы mono_tum, mono_kitti, rgbd_tum, stereo_kitti, mono_euroc и stereo_euroc в папке Examples.
Загрузите последовательность с сайта http://vision.in.tum.de/data/datasets/rgbd-dataset/download и распакуйте её.
Выполните следующую команду. Измените TUMX.yaml на TUM1.yaml, TUM2.yaml или TUM3.yaml для последовательностей freiburg1, freiburg2 и freiburg3 соответственно. Измените PATH_TO_SEQUENCE_FOLDER на распакованную папку последовательности.
./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUMX.yaml PATH_TO_SEQUENCE_FOLDER
Скачайте набор данных (оттенки серого) с сайта http://www.cvlibs.net/datasets/kitti/eval_odometry.php.
Выполните следующую команду. Измените KITTIX.yaml на KITTI00-02.yaml, KITTI03.yaml или KITTI04-12.yaml для последовательностей 0–2, 3 и 4–12 соответственно. Измените PATH_TO_DATASET_FOLDER на распакованную папку набора данных. Измените SEQUENCE_NUMBER на 00, 01, 02, ..., 11.
./Examples/Monocular/mono_kitti Vocabulary/ORBvoc.txt Examples/Monocular/KITTIX.yaml PATH_TO_DATASET_FOLDER/dataset/sequences/SEQUENCE_NUMBER
Скачайте последовательность (формат ASL) с сайта http://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets.
Сначала выполните следующую команду для последовательностей V1 и V2 или
Примечание: В тексте запроса присутствуют ссылки на внешние ресурсы, которые не были включены в ответ. В противном случае изображения должны быть предварительно выпрямлены.
rosrun ORB_SLAM2 Stereo PATH_TO_VOCABULARY PATH_TO_SETTINGS_FILE ONLINE_RECTIFICATION
Пример: Загрузите rosbag (например, V1_01_easy.bag) из набора данных EuRoC (http://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets). Откройте 3 вкладки в терминале и выполните следующую команду на каждой вкладке:
roscore
rosrun ORB_SLAM2 Stereo Vocabulary/ORBvoc.txt Examples/Stereo/EuRoC.yaml true
rosbag play --pause V1_01_easy.bag /cam0/image_raw:=/camera/left/image_raw /cam1/image_raw:=/camera/right/image_raw
После того как ORB-SLAM2 загрузит словарь, нажмите пробел на вкладке rosbag. Наслаждайтесь! Обратите внимание: для запуска самых требовательных последовательностей этого набора данных требуется мощный компьютер.
Для ввода RGB-D с тем /camera/rgb/image_raw
и /camera/depth_registered/image_raw
, запустите узел ORB_SLAM2/RGBD. Вам потребуется предоставить файл словаря и файл настроек. См. пример RGB-D выше.
rosrun ORB_SLAM2 RGBD PATH_TO_VOCABULARY PATH_TO_SETTINGS_FILE
Вам потребуется создать файл настроек с калибровкой вашей камеры. См. файл настроек, предоставленный для наборов данных TUM и KITTI для монокулярных, стереоскопических и RGB-D камер. Мы используем калибровочную модель OpenCV. См. примеры, чтобы узнать, как создать программу, использующую библиотеку ORB-SLAM2, и как передавать изображения в систему SLAM. Стерео вход должен быть синхронизирован и выпрямлен. Вход RGB-D должен быть синхронизирован и зарегистрирован по глубине.
Вы можете переключаться между режимом SLAM и режимом локализации с помощью графического интерфейса средства просмотра карты.
Это режим по умолчанию. Система работает параллельно в трёх потоках: отслеживание, локальное картографирование и закрытие петель. Система локализует камеру, строит новую карту и пытается закрыть петли.
Этот режим можно использовать, когда у вас есть хорошая карта вашей рабочей области. В этом режиме локальное картографирование и замыкание петель отключены. Система локализует камеру на карте (которая больше не обновляется), используя при необходимости повторную локализацию.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )