Distributed ORB SLAM
#1 Prerequisites We have tested the library in and 14.04 + ROS Indigo. Only Monocular camera dataset is supported for now.
We use Pangolin for visualization and user interface. Dowload and install instructions can be found at: https://github.com/stevenlovegrove/Pangolin.
BLAS and LAPACK libraries are requiered by g2o (see below). On ubuntu:
sudo apt-get install libblas-dev
sudo apt-get install liblapack-dev
We use modified versions of the DBoW2 library to perform place recognition and g2o library to perform non-linear optimizations. Both modified libraries (which are BSD) are included in the Thirdparty folder.
#2 Build copy src/dorbslam and src/dataset_reader to your ros working path.Build with the command
catkin_make
#3 Running Node ##3.1 Running Non-Distributed node Execute following command to Run orbslam node,
rosrun dorbslam dorbslam_node PATH_TO_VOCABULARY PATH PATH_TO_SETTINGS_FILE
Start data stream by the data set reader (or camera node)
rosrun dataset_reader kitti_reader_node PATH_TO_SEQUENCE
rosrun dataset_reader tum_reader_node PATH_TO_SEQUENCE
##3.2 Running Distribution type 1 (ORB extracter is distrbuted)
-
Run by Launch file Execute following command
roslaunch dorbslam dorbslam_div1.launch vocabulary:="FULL_PATH_TO_VOCAbulary_FILE" setting:="FULL_PATH_TO_SETTING_FILE"
Start data stream by the data set reader (or camera node)
rosrun dataset_reader kitti_reader_node PATH_TO_SEQUENCE rosrun dataset_reader tum_reader_node PATH_TO_SEQUENCE
-
Run Each nodes Execute following command to Run core node,
rosrun dorbslam dorbslam_node_div1 PATH_TO_VOCABULARY PATH PATH_TO_SETTINGS_FILE
Execute following command to Run Orb extractor node.
rosrun dorbslam orb_extracter_node PATH_TO_VOCABULARY PATH PATH_TO_SETTINGS_FILE
Start data stream by the data set reader (or camera node)
rosrun dataset_reader kitti_reader_node PATH_TO_SEQUENCE rosrun dataset_reader tum_reader_node PATH_TO_SEQUENCE
##3.3 Running Distribution type 2 (bundle adjustment is distrbuted)
-
Run by Launch file Execute following command
roslaunch dorbslam dorbslam_div2.launch vocabulary:="FULL_PATH_TO_VOCAbulary_FILE" setting:="FULL_PATH_TO_SETTING_FILE"
Start data stream by the data set reader
rosrun dataset_reader kitti_reader_node PATH_TO_SEQUENCE rosrun dataset_reader tum_reader_node PATH_TO_SEQUENCE
-
Run Each nodes Execute following command to Run core node,
rosrun dorbslam dorbslam_node_div2 PATH_TO_VOCABULARY PATH PATH_TO_SETTINGS_FILE
Execute following command to bunle adjustment node.
rosrun dorbslam bundle_adjustment_node PATH_TO_VOCABULARY PATH PATH_TO_SETTINGS_FILE
Start data stream by the data set reader (or camera node)
rosrun dataset_reader kitti_reader_node PATH_TO_SEQUENCE rosrun dataset_reader tum_reader_node PATH_TO_SEQUENCE
##3.4 Running Distribution type 3 node (ORB extractor and local bundle adjustment is distrbuted)
-
Run by Launch file Execute following command
roslaunch dorbslam dorbslam_div3.launch vocabulary:="FULL_PATH_TO_VOCAbulary_FILE" setting:="FULL_PATH_TO_SETTING_FILE"
Start data stream by the data set reader (or camera node)
rosrun dataset_reader kitti_reader_node PATH_TO_SEQUENCE rosrun dataset_reader tum_reader_node PATH_TO_SEQUENCE
-
Run Each nodes Execute following command to Run core node,
rosrun dorbslam dorbslam_node_div3 PATH_TO_VOCABULARY PATH PATH_TO_SETTINGS_FILE
Execute following command to Run Orb extractor node.
rosrun dorbslam orb_extracter_node PATH_TO_VOCABULARY PATH PATH_TO_SETTINGS_FILE
Execute following command to Run bundle adjustment node.
rosrun dorbslam bundle_adjustment_node PATH_TO_VOCABULARY PATH PATH_TO_SETTINGS_FILE
Start data stream by the data set reader (or camera node)
rosrun dataset_reader kitti_reader_node PATH_TO_SEQUENCE rosrun dataset_reader tum_reader_node PATH_TO_SEQUENCE
#4 Disable GUI If you'd like to disable gui, define "__DISABLE_GUI" deffinition flag in the CMakefile.
-
For the div1 and non distributed node, add following line to dorbslam/CMakeLists.txt target_compile_definitions(${PROJECT_NAME} PUBLIC__DISABLE_GUI=1)
-
For the div2 and div3 change the line in the dorbslam/CMakeLists.txt
target_compile_definitions(${PROJECT_NAME}_div2 PUBLIC ENABLE_EXTERNAL_LOCALBUNDLE_ADJUSTMENT=1)
into
target_compile_definitions(${PROJECT_NAME}_div2 PUBLIC ENABLE_EXTERNAL_LOCALBUNDLE_ADJUSTMENT=1 PUBLIC__DISABLE_GUI=1)
#5 Enable Performance Mode We provide ros-service to see DORBSLAM performance.
If you'd like to see performance in DORBSLAM,define "ENABLE_PERFORMENCE" deffinition flag in the CMakefile
-
For the dataset_reader, add following line to dataset_reader/CMakeLists.txt
add_definitions(-DENABLE_PERFORM)
-
For the div1 and div2, div3, add following line to the dorbslam/CMakeLists.txt
add_definitions(-DENABLE_PERFORM)
This R&D project is done by Takeshi Ohkawa, Utsunomiya University.
- https://sites.google.com/site/ohkawatakeshi/profile_en
- http://www.is.utsunomiya-u.ac.jp/pearlab/openreroc/en/
This research and development work was supported by MIC/SCOPE #152103014.