一般无误的官方连接:https://github.com/raulmur/ORB_SLAM

ubuntu16.04没有多少改变,还是使用kinetic老代替indigo

Related Publications:

Artical:

[1] Raúl Mur-Artal, J. M. M. Montiel and Juan D. Tardós. ORB-SLAM: A Versatile and Accurate Monocular SLAM System.IEEE Transactions on Robotics, vol. 31, no. 5, pp. 1147-1163, 2015.

DOI: 10.1109/TRO.2015.2463671.

Link to pdf: http://webdiis.unizar.es/~raulmur/MurMontielTardosTRO15.pdf

1. License

ORB-SLAM is released under a GPLv3 license. Please note that we provide along ORB-SLAM a modified version of g2o and DBoW2 which are both BSD.

For a closed-source version of ORB-SLAM for commercial purposes, please contact the authors.

If you use ORB-SLAM in an academic work, please cite:

@article{murAcceptedTRO2015,
title={{ORB-SLAM}: a Versatile and Accurate Monocular {SLAM} System},
author={Mur-Artal, Ra\'ul, Montiel, J. M. M. and Tard\'os, Juan D.},
journal={IEEE Transactions on Robotics},
volume={31},
number={5},
pages={1147--1163},
doi = {10.1109/TRO.2015.2463671},
year={2015}
}

2. Prerequisites (dependencies)

2.1 Boost

We use the Boost library to launch the different threads of our SLAM system.

 sudo apt-get install libboost-all-dev 

2.2 ROS

We use ROS to receive images from the camera or from a recorded sequence (rosbag), and for visualization (rviz, image_view).We have tested ORB-SLAM in Ubuntu 12.04 with ROS Fuerte, Groovy and Hydro; and in Ubuntu 14.04 with ROS Indigo.
If you do not have already installed ROS in your computer, we recommend you to install the Full-Desktop version of ROS Fuerte (http://wiki.ros.org/fuerte/Installation/Ubuntu).

If you use ROS Indigo, remove the depency of opencv2 in the manifest.xml.

2.3 g2o (included)

We use g2o to perform several optimizations. We include a modified copy of the library including only the components we need and also some changes that are listed inThirdparty/g2o/Changes.txt. In order to compile g2o you will need to
have installed CHOLMOD, BLAS, LAPACK and Eigen3.

sudo apt-get install libsuitesparse-dev
sudo apt-get install libblas-dev
sudo apt-get install liblapack-dev
sudo apt-get install libeigen3-dev

2.4 DBoW2 (included)

We make use of some components of the DBoW2 library (https://github.com/dorian3d/DBoW2) for place recognition and feature matching. We include a modified copy of the
library including only the components we need and also some modifications that are listed inThirdparty/DBoW2/LICENSE.txt. It only depends on OpenCV, but it should be included in the ROS distribution.

3. Installation

  1. Make sure you have installed ROS and all library dependencies (boost, eigen3, cholmod, blas, lapack).

  2. Clone the repository:

  3. git clone https://github.com/raulmur/ORB_SLAM.git ORB_SLAM

  1. Add the path where you cloned ORB-SLAM to the ROS_PACKAGE_PATH environment variable (better if you add the export line to your .bashrc file)

  2. Build g2o. Go into Thirdparty/g2o/ and execute:

  3. mkdir build
    cd build
    cmake .. -DCMAKE_BUILD_TYPE=Release
    make
  4. Tip: To achieve the best performance in your computer, set your favorite compilation flags in line 97 and 98 ofThirdparty/g2o/CMakeLists.txt (by default -03 -march=native)

  5. Build DBoW2. Go into Thirdparty/DBoW2/ and execute:

  6. mkdir build
    cd build
    cmake .. -DCMAKE_BUILD_TYPE=Release
    make (如果未安装OpenCV,首先编译OpenCV:
    ubuntu16.04下编译安装OpenCV )
  7. Tip: Set your favorite compilation flags in line 4 and 5 of Thirdparty/DBoW2/CMakeLists.txt (by default -03 -march=native)

  8. Build ORB_SLAM. In the ORB_SLAM root execute:

                  If you use ROS Indigo, remove the depency of opencv2 in the manifest.xml.

  9. mkdir build
    cd build
    cmake .. -DROS_BUILD_TYPE=Release
    make
  10. Tip: Set your favorite compilation flags in line 12 and 13 of ./CMakeLists.txt (by default -03 -march=native)

出现问题:

cmake .. -DROS_BUILD_TYPE=Release

1.        这一句出现:

CMake Error at CMakeLists.txt:2 (include):

                           include could not find load file:

/core/rosbuild/rosbuild.cmake

                         CMake Error at CMakeLists.txt:4 (rosbuild_init):

                          Unknown CMake command "rosbuild_init".

                         -- Configuring incomplete, errors occurred!

                        See also "/home/wishchin/WorkFrameSrc/ORB_SLAM-master/build/CMakeFiles/CMakeO

解决方法:原因是ROS path 没有自动添加,需要进行手动添加。

shell语句:

source /opt/ros/indigo/setup.bash   source /opt/ros/kinetic/setup.bash 
  1. 切换到主目录下。。。。
  2. source  .bashrc #使能

2.    出现:

[rosbuild] Building package ORB_SLAM-master

[rosbuild] Error from directory check: /opt/ros/indigo/share/ros/core/rosbuild/bin/check_same_directories.py  /home/wishchin/WorkFrameSrc/ORB_SLAM-master

1

Traceback (most recent call last):

  File "/opt/ros/indigo/share/ros/core/rosbuild/bin/check_same_directories.py", line 46, in <module>

    raise Exception

Exception

CMake Error at /opt/ros/indigo/share/ros/core/rosbuild/private.cmake:102 (message):

  [rosbuild] rospack found package "ORB_SLAM-master" at "", but the current

  directory is "/home/wishchin/WorkFrameSrc/ORB_SLAM-master".  You should

  double-check your ROS_PACKAGE_PATH to ensure that packages are found in the

  correct precedence order.

Call Stack (most recent call first):

  /opt/ros/indigo/share/ros/core/rosbuild/public.cmake:177 (_rosbuild_check_package_location)

  CMakeLists.txt:4 (rosbuild_init)

-- Configuring incomplete, errors occurred!

See also "/home/wishchin/WorkFrameSrc/ORB_SLAM-master/build/CMakeFiles/CMakeOutput.log".

         解决方法:

在.bashrc 末尾添加:export  ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:/home/wishchin/WorkFrameSrc/ORB_SLAM

ORB路径添加到ROS

7.编译成功:

[ 11%] Building CXX object CMakeFiles/ORB_SLAM-master.dir/src/Tracking.cc.o

[ 16%] Building CXX object CMakeFiles/ORB_SLAM-master.dir/src/LocalMapping.cc.o

[ 22%] Building CXX object CMakeFiles/ORB_SLAM-master.dir/src/LoopClosing.cc.o

[ 27%] Building CXX object CMakeFiles/ORB_SLAM-master.dir/src/ORBextractor.cc.o

[ 33%] Building CXX object CMakeFiles/ORB_SLAM-master.dir/src/ORBmatcher.cc.o

[ 38%] Building CXX object CMakeFiles/ORB_SLAM-master.dir/src/FramePublisher.cc.o

[ 44%] Building CXX object CMakeFiles/ORB_SLAM-master.dir/src/Converter.cc.o

[ 50%] Building CXX object CMakeFiles/ORB_SLAM-master.dir/src/MapPoint.cc.o

[ 55%] Building CXX object CMakeFiles/ORB_SLAM-master.dir/src/KeyFra

4. Usage

See section 5 to run the Example Sequence.

  1. Launch ORB-SLAM from the terminal (roscore should have been already executed):

    rosrun ORB_SLAM ORB_SLAM PATH_TO_VOCABULARY PATH_TO_SETTINGS_FILE

    You have to provide the path to the ORB vocabulary and to the settings file. The paths must be absolute or relative to the ORB_SLAM directory.

    We already provide the vocabulary file we use in ORB_SLAM/Data/ORBvoc.txt.tar.gz. Uncompress the file, as it will be loaded much faster.

  2. The last processed frame is published to the topic /ORB_SLAM/Frame. You can visualize it usingimage_view:

    rosrun image_view image_view image:=/ORB_SLAM/Frame _autosize:=true
  3. The map is published to the topic /ORB_SLAM/Map, the current camera pose and global world coordinate origin are sent through/tf in frames/ORB_SLAM/Camera and/ORB_SLAM/World respectively. Runrviz
    to visualize the map:

    in ROS Fuerte:

    rosrun rviz rviz -d Data/rviz.vcg

    in ROS Groovy or a newer version:

    rosrun rviz rviz -d Data/rviz.rviz
  4. ORB_SLAM will receive the images from the topic /camera/image_raw. You can now play your rosbag or start your camera node. If you have a sequence with individual image files, you will need to generate a bag from them. We provide a tool to do
    that: https://github.com/raulmur/BagFromImages.

Tip: Use a roslaunch to launch ORB_SLAM, image_view andrviz from just one instruction. We provide an example:

in ROS Fuerte:

roslaunch ExampleFuerte.launch

in ROS Groovy or a newer version:

roslaunch ExampleGroovyOrNewer.launch

5. Example Sequence

We provide the settings and the rosbag of an example sequence in our lab. In this sequence you will see a loop closure and two relocalisation from a big viewpoint change.

  1. Download the rosbag file:
    http://webdiis.unizar.es/~raulmur/orbslam/downloads/Example.bag.tar.gz.

    Alternative link: https://drive.google.com/file/d/0B8Qa2__-sGYgRmozQ21oRHhUZWM/view?usp=sharing

    Uncompress the file.

  2. Launch ORB_SLAM with the settings for the example sequence. You should have already uncompressed the vocabulary file (/Data/ORBvoc.txt.tar.gz)

    in ROS Fuerte:

    roslaunch ExampleFuerte.launch

    in ROS Groovy or newer versions:

    rosbag play --pause Example.bag  +空格键

    roslaunch ExampleGroovyOrNewer.launch

  3. Once the ORB vocabulary has been loaded, play the rosbag (press space to start):

    rosbag play --pause Example.bag

6. The Settings File

ORB_SLAM reads the camera calibration and setting parameters from a YAML file. We provide an example inData/Settings.yaml, where you will find all parameters and their description. We use the camera calibration model of OpenCV.

Please make sure you write and call your own settings file for your camera (copy the example file and modify the calibration)

7. Failure Modes

You should expect to achieve good results in sequences similar to those in which we show results in our paper [1], in terms of camera movement and texture in the environment. In general our Monocular SLAM solution is expected to have a bad time in the following
situations:

  • Pure rotations in exploration
  • Low texture environments
  • Many (or big) moving objects, especially if they move slowly.

The system is able to initialize from planar and non-planar scenes. In the case of planar scenes, depending on the camera movement relative to the plane, it is possible that the system refuses to initialize, see the paper [1] for details.

8. Need Help?

If you have any trouble installing or running ORB-SLAM, contact the authors.

ROS:ubuntu-Ros使用OrbSLAM的更多相关文章

  1. Ubuntu ROS Arduino Gazebo学习镜像iso说明(indigo版)

    ROS机器人程序设计(原书第2版)学习镜像分享及使用说明 新版已经发布,请参考: http://blog.csdn.net/zhangrelay/article/details/53324759 Ub ...

  2. Ubuntu ROS

    设置你的sources.list 将电脑设置为接受来自packages.ros.org的软件 sudo sh -c 'echo "deb http://packages.ros.org/ro ...

  3. [ROS]2 尝试编译OrbSLAM

    主要参考http://blog.csdn.net/dourenyin/article/details/48055441 1.编译g2o的过程中, 先是出现Eigen3依赖项的问题,要求Eigen3最低 ...

  4. ubuntu Ros环境halcon的一个程序

    这个首先并不是我一边做实验一遍记录的,而是我做完成以后才想起来做个分享的,所以中途遇到的很多问题,并没有来得及记录下来,现在写的这些都是后话了 首先呢!我们不需要在ROS下写halcon的程序也是可以 ...

  5. ubuntu+ROS安装turtulebot3

    0 简介 Turtlebot是一种室内移动机器人,搭载激光传感器,使机器有精确的距离感知能力.通过搭建仿真环境,可以在没有硬件支持的情况下进行仿真和编程,并熟悉ros系统.环境使Ubuntu16.04 ...

  6. ubuntu下安装intel realsense驱动

    在安装之前一定要确保系统是ubuntu 14.04.3 64位! 由于一开始安装的是32位系统,导致在升级内核版本到4.4时各种问题,最终靠重装系统解决. 因为intel给出的测试代码均是在64位14 ...

  7. Learning ROS: Running ROS across multiple machines

    Start the master ssh hal roscore Start the listener ssh hal export ROS_MASTER_URI=http://hal:11311 r ...

  8. ubuntu下ROS安装时sudo rosdep init和rosdep update的解决方法

    问题: 在ubuntu上多次安装matlab选择合适的版本来调用摄像头,终于把系统搞坏了,重装系统后,ROS无法安装,每次安装到sudo rosdep init和rosdep update报错的问题, ...

  9. Ubuntu和ROS一起愉快玩耍

    Ubuntu和ROS重要的两个中文网址: Ubuntu:http://cn.ubuntu.com/ROS:http://wiki.ros.org/cn Robots and drones on Ubu ...

随机推荐

  1. BZOJ 1631 Usaco 2007 Feb. Cow Party

    [题解] 最短路裸题.. 本题要求出每个点到终点走最短路来回的距离,因此我们先跑一遍最短路得出每个点到终点的最短距离,然后把边反向再跑一遍最短路,两次结果之和即是答案. #include<cst ...

  2. hdu 5182 PM2.5

    问题描述 目前,我们用PM2.5的含量来描述空气质量的好坏.一个城市的PM2.5含量越低,它的空气质量就越好.所以我们经常按照PM2.5的含量从小到大对城市排序.一些时候某个城市的排名可能上升,但是他 ...

  3. POJ 1376 Robot

    Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 7866   Accepted: 2586 Description The R ...

  4. 中国移动MySQL数据库优化最佳实践

    原创 2016-08-12 章颖 DBAplus社群 本文根据DBAplus社群第69期线上分享整理而成,文末还有书送哦~ 讲师介绍章颖 数据研发工程师 现任中国移动杭州研发中心数据研发工程师,擅长M ...

  5. [CSS3] Use Sticky Positioning for Section Headers

    We can take advantage of sticky positioning to keep a section header at the top of the page while th ...

  6. H3C交换机经常使用命令汇总

    H3C交换机经常使用命令 1.查看Linux下查看port状态 root@root:~# netstat -an|grep -E "6002|6003" 2.H3C交换机显示当前配 ...

  7. 【你你你你在开玩笑吧】什么叫凭借纯兴趣搞ACM?涨姿势了

        好长时间不扯淡了,今天扯个玩玩,吐个槽.     在上海回济南的列车上,回顾起这两天在携程codingtrip颁奖仪式上大牛们的种种心得,姿势涨了不少,着实涨了不少啊.我这样的渣渣毕竟图样图森 ...

  8. C++操作Json字符串

    一.从字符串中读取JSON a.cpp ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 ...

  9. UISearchBar作为inputAccessoryView时的响应链

    UISearchBar对象做为一个普通的视图对象加入到视图控制器的self.view中,定义.初始化.设置delegate.然后becomeFirstResponder,最后resignFirstRe ...

  10. git fetch批处理,遍历一个文件夹下的所有子目录,执行git fetch --all

    echo off for /d %%i in (*) do ( echo %%i cd %%i git fetch --all cd .. ) 判断子目录是否有.git文件夹 echo off for ...