PLI-SLAM is developed on the foundation of PL-SLAM and ORB_SLAM3, line features are fully engaged in the whole process of the system including tracking, map building and loop detection. Higher accuracy has been shown in PLI-SLAM on EuRoC Dataset compared to other VIO or point-line based SLAM systems. PLI-SLAM also performed stronger tracking robustness in various real scenario experiments conduted with a self-developed robot.
Video demo: youtube
The provided code is published under the General Public License Version 3 (GPL v3).
Ubuntu 16.04 or higher version is required.
We use ROS Melodic for real scenario experiments.
We use the new thread and chrono functionalities of C++11.
We use Pangolin for visualization and user interface. It can be found at: https://github.com/stevenlovegrove/Pangolin.
We use OpenCV 3.3.1 to manipulate images and features. Noted that line_descripter should be impoerted from the OpenCV/contrib library independently.
We use Eigen 3.3.4. It can be found at: http://eigen.tuxfamily.org.
We use ceres-solver-1.14.0 for nonlinear optimization. It can be found at: https://ceres-solver.googlesource.com/ceres-solver.
We use modified versions of the DBoW2 library to perform place recognition and g2o library to perform non-linear optimizations.
- Clone the repository and add the path to the ROS_PACKAGE_PATH environment variable:
git clone https://github.com/VealFang/PLI-SLAM.git
gedit ~/.bashrc #Open .bashrc file
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:PATH/ORB_SLAM3/Examples/ROS #Add at the end of the file
source ~/.bashrc
- Execute
build_ros.sh
script:
cd PLI_SLAM
chmod +x build_ros.sh
./build_ros.sh
Download a rosbag from the EuRoC dataset. Open 3 tabs on the terminal and run the following command at each tab:
roscore
roslaunch PLI_SLAM Stereo_Inertial Vocabulary Examples/Stereo-Inertial/EuRoC.yaml true
rosbag play ROSBAG_PATH