Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/raulmur/ORB_SLAM
Browse files Browse the repository at this point in the history
Need to keep ORB-SLAM up to date with the original
  • Loading branch information
Loeing committed Jan 19, 2016
2 parents 77ca15b + 3739bea commit 359b9a2
Show file tree
Hide file tree
Showing 137 changed files with 1,011 additions and 10,618 deletions.
11 changes: 1 addition & 10 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,10 @@ LIST(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake_modules)

find_package(OpenCV REQUIRED)
find_package(Eigen3 REQUIRED)
find_package(Cholmod REQUIRED)

include_directories(
${PROJECT_SOURCE_DIR}
${EIGEN3_INCLUDE_DIR}
${CHOLMOD_INCLUDE_DIR}
)

rosbuild_add_executable(${PROJECT_NAME}
Expand Down Expand Up @@ -52,14 +50,7 @@ rosbuild_link_boost(${PROJECT_NAME} thread)
target_link_libraries(${PROJECT_NAME}
${OpenCV_LIBS}
${EIGEN3_LIBS}
cholmod
${PROJECT_SOURCE_DIR}/Thirdparty/DBoW2/lib/libDBoW2.so
${PROJECT_SOURCE_DIR}/Thirdparty/g2o/lib/libg2o_core.so
${PROJECT_SOURCE_DIR}/Thirdparty/g2o/lib/libg2o_solver_cholmod.so
${PROJECT_SOURCE_DIR}/Thirdparty/g2o/lib/libg2o_solver_dense.so
${PROJECT_SOURCE_DIR}/Thirdparty/g2o/lib/libg2o_stuff.so
${PROJECT_SOURCE_DIR}/Thirdparty/g2o/lib/libg2o_types_sba.so
${PROJECT_SOURCE_DIR}/Thirdparty/g2o/lib/libg2o_types_sim3.so
${PROJECT_SOURCE_DIR}/Thirdparty/g2o/lib/libg2o_types_slam3d.so
${PROJECT_SOURCE_DIR}/Thirdparty/g2o/lib/libg2o.so
)

11 changes: 11 additions & 0 deletions Changelog.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#Changelog of ORB-SLAM Monocular

## 1.0.1 (18-01-2016)
- Save/load vocabulary from text file instead of cv::FileStorage.
- Unused files from Thirdparty/DBoW2 and Thirdparty/g2o have been removed. g2o files have been reorganized and we compile only
one library libg2o.so instead of four libraries (libg2o_core.so, libg2o_types.so, etc)
- We use now Eigen solver instead of Cholmod solver in g2o. Removed dependency on Suitesparse and Cholmod.
- Several bugs have been fixed.

## 1.0.0 (03-03-2015)
First ORB-SLAM Monocular version
49 changes: 49 additions & 0 deletions Dependencies.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
##List of Known Dependencies
###ORB-SLAM Monocular 1.0.1

In this document we list all the pieces of code included by ORB-SLAM Monocular and linked libraries which are not property of the authors of ORB-SLAM Monocular.


#####Code in **src** and **include** folders

* *ORBextractor.cc*.
This is a modified version of orb.cpp of OpenCV library. The original code is BSD licensed.

* *PnPsolver.h, PnPsolver.cc*.
This is a modified version of the epnp.h and epnp.cc of Vincent Lepetit.
This code can be found in popular BSD licensed computer vision libraries as [OpenCV](https://github.com/Itseez/opencv/blob/master/modules/calib3d/src/epnp.cpp) and [OpenGV](https://github.com/laurentkneip/opengv/blob/master/src/absolute_pose/modules/Epnp.cpp). The original code is FreeBSD.

* Function *ORBmatcher::DescriptorDistance* in *ORBmatcher.cc*.
The code is from: http://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetParallel.
The code is in the public domain.

#####Code in Thirdparty folder

* All code in **DBoW2** folder.
This is a modified version of [DBoW2](https://github.com/dorian3d/DBoW2) and [DLib](https://github.com/dorian3d/DLib) library. All files included are BSD licensed.

* All code in **g2o** folder.
This is a modified version of [g2o](https://github.com/RainerKuemmerle/g2o). All files included are BSD licensed.

#####Library dependencies

* **Boost**. [Boost Software License](http://www.boost.org/users/license.html).

* **OpenCV**.
BSD licensed.

* **Eigen3**.
For versions greater than 3.1.1 is MPL2, earlier versions are LGPLv3.

* **BLAS** (required by g2o).
[Freely-available software](http://www.netlib.org/blas/#_licensing).

* **LAPACK**(required by g2o).
BSD licensed.

* **ROS**.
BSD licensed. In the manifest.xml the only declared package dependencies are roscpp, tf, sensor_msgs, opencv2, image_transport, cv_bridge, which are all BSD licensed.



Updated: 19/01/2016 Raúl Mur Artal
2 changes: 1 addition & 1 deletion LICENSE.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
ORB-SLAM is released under a GPLv3 license (see License-gpl.txt).
Please note that we provide along ORB-SLAM a modified version of g2o and DBoW2 which are both BSD.
Please see Dependencies.md for a list of all included code and library dependencies which are not property of the authors of ORB-SLAM.

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

Expand Down
29 changes: 16 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# ORB_SLAM
# ORB-SLAM Monocular
#### Current version: 1.0.1 (see [Changelog.md](https://github.com/raulmur/ORB_SLAM/blob/master/Changelog.md))

ORB-SLAM is a versatile and accurate Monocular SLAM solution able to compute in real-time the camera trajectory and a sparse 3D reconstruction of the scene in a wide variety of environments, ranging from small hand-held sequences to a car driven around several city blocks. It is able to close large loops and perform global relocalisation in real-time and from wide baselines.

Expand All @@ -15,7 +16,7 @@ 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.
ORB-SLAM is released under a [GPLv3 license](https://github.com/raulmur/ORB_SLAM/blob/master/License-gpl.txt). For a list of all code/library dependencies (and associated licenses), please see [Dependencies.md](https://github.com/raulmur/ORB_SLAM/blob/master/Dependencies.md).

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

Expand Down Expand Up @@ -48,30 +49,32 @@ If you do not have already installed ROS in your computer, we recommend you to i

**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 in `Thirdparty/g2o/Changes.txt`.
In order to compile g2o you will need to have installed CHOLMOD, BLAS, LAPACK and Eigen3.
##2.3 OpenCV
We use OpenCV to manipulate images and features. If you use a ROS version older than ROS Indigo, OpenCV is already included in the ROS distribution. In newer version of ROS, OpenCV is not included and you will need to install it. **We tested OpenCV 2.4**. Dowload and install instructions can be found at: http://opencv.org/

##2.4 g2o (included in Thirdparty)
We use a modified version of g2o (see original at https://github.com/RainerKuemmerle/g2o) to perform optimizations.
In order to compile g2o you will need to have installed BLAS, LAPACK and Eigen3 (at least 3.1.0).

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 in `Thirdparty/DBoW2/LICENSE.txt`.
It only depends on OpenCV, but it should be included in the ROS distribution.
##2.5 DBoW2 (included in Thirdparty)
We make use of some components of the DBoW2 and DLib library (see original at https://github.com/dorian3d/DBoW2) for place recognition and feature matching. There are no additional dependencies to compile DBoW2.


#3. Installation

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

2. Clone the repository:

git clone https://github.com/raulmur/ORB_SLAM.git ORB_SLAM
3. 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)
3. Add the path where you cloned ORB-SLAM to the `ROS_PACKAGE_PATH` environment variable. To do this, modify your .bashrc and add at the bottom the following line (replace PATH_TO_PARENT_OF_ORB_SLAM):

export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:PATH_TO_PARENT_OF_ORB_SLAM

4. Build g2o. Go into `Thirdparty/g2o/` and execute:

Expand All @@ -80,7 +83,7 @@ It only depends on OpenCV, but it should be included in the ROS distribution.
cmake .. -DCMAKE_BUILD_TYPE=Release
make

*Tip: To achieve the best performance in your computer, set your favorite compilation flags in line 97 and 98 of* `Thirdparty/g2o/CMakeLists.txt`
*Tip: To achieve the best performance in your computer, set your favorite compilation flags in line 61 and 62 of* `Thirdparty/g2o/CMakeLists.txt`
(by default -03 -march=native)

5. Build DBoW2. Go into Thirdparty/DBoW2/ and execute:
Expand Down
Loading

0 comments on commit 359b9a2

Please sign in to comment.