├── _config.yml ├── LICENSE ├── Misc ├── Geometric-Fundamentals-of-SLAM.md └── 2018-03-10-Installing-Dependencies-on-Ubuntu-towards-SLAM-Projects.md └── README.md /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-architect -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Youjie Xia 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Misc/Geometric-Fundamentals-of-SLAM.md: -------------------------------------------------------------------------------- 1 | # Computer Vision/Geometric Fundamentals of SLAM 2 | 3 | ## Recommended Blogs 4 | 5 | 1. [拾人牙慧: Computer Vision Fundamentals](http://silverwind1982.pixnet.net/blog) 6 | 2. [白巧克力亦唯心: 知行合一](https://blog.csdn.net/heyijia0327) 7 | 8 | ## Mathematic Fundamentals 9 | 10 | 1. [直線方程式與平面方程式的 Dot Product 及 Normals](http://silverwind1982.pixnet.net/blog/post/164716103) 11 | 2. [刚体在三维空间的旋转(关于旋转矩阵、DCM、旋转向量、四元数、欧拉角)](https://blog.csdn.net/MulinB/article/details/51227597) 12 | 3. [三維旋轉表示法 - 歐拉角、旋轉矩陣、旋轉向量、四元數](http://silverwind1982.pixnet.net/blog/post/258069682) 13 | 14 | ## Calibration, Undistortion, Rectification 15 | 16 | 1. [Pinhole Camera: 相機校正 (Camera Calibration)](http://silverwind1982.pixnet.net/blog/post/153218861) 17 | 2. [OpenCV 範例程式 camera_calibration](http://silverwind1982.pixnet.net/blog/post/229389799) 18 | 3. [OpenCV: undistort](https://docs.opencv.org/2.4/modules/imgproc/doc/geometric_transformations.html#undistort) 19 | 4. [Camera calibration With OpenCV](https://docs.opencv.org/2.4/doc/tutorials/calib3d/camera_calibration/camera_calibration.html#camera-calibration-with-opencv) 20 | 21 | ## Features 22 | 23 | 1. [OpenCV Tutorials - Feature Detection and Description - Harris Corner Detection](http://silverwind1982.pixnet.net/blog/post/238161241) 24 | 2. [OpenCV Tutorials - Feature Detection and Description - Shi-Tomasi Corner Detector](http://silverwind1982.pixnet.net/blog/post/241000702) 25 | 3. [OpenCV Tutorials - Feature Detection and Description - SIFT](http://silverwind1982.pixnet.net/blog/post/241014085) 26 | 4. [OpenCV Tutorials - Feature Detection and Description - SURF](http://silverwind1982.pixnet.net/blog/post/242211004) 27 | 5. [OpenCV Tutorials - Feature Detection and Description - FAST](http://silverwind1982.pixnet.net/blog/post/244675690) 28 | 6. [OpenCV Tutorials - Feature Detection and Description - BRIEF](http://silverwind1982.pixnet.net/blog/post/244711150) 29 | 7. [OpenCV Tutorials - Image Processing - Sobel Derivatives](http://silverwind1982.pixnet.net/blog/post/243360385) 30 | 31 | 32 | ## Geometry 33 | 34 | ### Homography 35 | 36 | 1. [Homography 知多少?](https://blog.csdn.net/heyijia0327/article/details/53782094) 37 | 2. [Pinhole Camera: Homography](http://silverwind1982.pixnet.net/blog/post/153225557) 38 | 39 | ### Epipolar Geometry 40 | 41 | 1. [Pinhole Camera: Epipolar Geometry](http://silverwind1982.pixnet.net/blog/post/153221294) 42 | 2. [Constraint in Epipolar Geometry](http://silverwind1982.pixnet.net/blog/post/193564309) 43 | 44 | 45 | -------------------------------------------------------------------------------- /Misc/2018-03-10-Installing-Dependencies-on-Ubuntu-towards-SLAM-Projects.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post-new 3 | title: Installing Dependencies on Ubuntu 16.04 LTS towards SLAM Projects (Updating) 4 | category: SLAM 5 | tags: [SLAM, Linux] 6 | comments: true 7 | --- 8 | 9 | * content 10 | {:toc} 11 | 12 | 13 | The blog mainly summuries some basic configurations and installing dependencies under Ubuntu 16.04 LTS on my laptop (Thinkpad T460s) towards SLAM-related projects. 14 | 15 | 16 | ------------- 17 | 18 | ### Dependencies 19 | Generally, after your installing dependencies/packages, the header files ('.hpp') are usually under the folder `/usr/local/include/dependency_name/`, and the library files are usually under the folder `/usr/local/lib/`. Therefore, when you finish installation steps, you could check whether the corresponding files are under the correct path. Or you could search some test code online to test if it could call packages and run correctly. 20 | 21 | However, if you compile or run the specific code with errors on those packages, you should check the version of those necessary packages, and the pre-set path. If it still does not work, you could turn to your best friend -- Google to find the corresponding dependencies or alternatives to fix issues. 22 | 23 | 24 | 25 | #### 1. ROS 26 | Refer to [kinetic ROS](http://wiki.ros.org/kinetic/Installation/Ubuntu) 27 | 28 | #### 2. Pangolin 29 | Refer to [Pangolin](https://github.com/stevenlovegrove/Pangolin) 30 | 31 | #### 3. OpenCV 32 | Refer to [OpenCV](http://opencv.org) and 33 | [Install OpenCV3 on Ubuntu](https://www.learnopencv.com/install-opencv3-on-ubuntu/) 34 | 35 | #### 4. Eigen3 36 | The first way is referring to [Eigen](http://eigen.tuxfamily.org/), and download the Eigen2/3 package,then compile on the laptop。 37 | 38 | Another way is using the following commands to install, but you should remeber to **change the default path**. 39 | 40 | ``` 41 | sudo apt-get install libeigen3-dev 42 | cd /usr/include/eigen3 43 | sudo cp Eigen -r /usr/include 44 | ``` 45 | 46 | #### 5. Sophus 47 | Sophus supports Lie Algebra, which is the C++ implementation of Lie Groups using Eigen. Here we would install the (non-template version) [Sophus](https://github.com/strasdat/Sophus) maintained by Strasdat. 48 | 49 | Via the following command line instructions to install Sophus: 50 | 51 | ``` 52 | git clone https://github.com/strasdat/Sophus.git 53 | cd Sophus/ 54 | git checkout a621ff 55 | 56 | mkdir build 57 | cd build 58 | cmake .. 59 | make 60 | ``` 61 | 62 | 63 | #### 6. PCL (Point Cloud Library) 64 | Refer to official guide in [PCL](http://pointclouds.org/), or use the following commands: 65 | 66 | ``` 67 | sudo apt-get install libpcl-dev 68 | 69 | //install visualization tools and open a '.pcd' file 70 | sudo apt install pcl-tools 71 | pcl_viewer XXX.pcd 72 | ``` 73 | 74 | 75 | 76 | #### 7. g2o 77 | [g2o](https://github.com/RainerKuemmerle/g2o) is a very important package on graph (non-linear) optimization in SLAM applications. It requires Cmake and Eigen3. 78 | 79 | First, on Ubuntu / Debian some other dependencies are resolved by installing the following packages: 80 | 81 | ``` 82 | sudo apt-get install libqt4-dev qt4-qmake libqglviewer-dev libsuitesparse-dev libcxsparse3.1.4 libcholmod3.0.6 83 | ``` 84 | 85 | Next, you should download g2o from github, unzip the file, enter the g2o folder with the following commands to compile this Cmake project: 86 | 87 | ``` 88 | mkdir build 89 | cd build 90 | cmake .. 91 | make 92 | sudo make install 93 | ``` 94 | 95 | Moreover, you may also refer to [1-3] to find more useful information about how to install and test g2o. 96 | 97 | #### 8. Ceres 98 | [Ceres](https://github.com/ceres-solver/ceres-solver)is another very important package on non-linear optimization in SLAM applications besides g2o. 99 | 100 | First, on Ubuntu / Debian some other dependencies are resolved by installing the following packages: 101 | 102 | ``` 103 | sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3.1.4 libgflags-dev libgoogle-glog-dev libgtest-dev 104 | ``` 105 | 106 | Next, you should download g2o from github, unzip the file, enter the g2o folder with the following commands to compile this Cmake project: 107 | 108 | ``` 109 | mkdir build 110 | cd build 111 | cmake .. 112 | make 113 | sudo make install 114 | ``` 115 | 116 | 117 | #### 9. DBoW2 118 | Refer to [DBoW2](https://github.com/dorian3d/DBoW2) 119 | 120 | However, it's normal that many popular SLAM repositories provide "**DBoW2**" in their **3rdparty** folder. 121 | 122 | 123 | 124 | ---------- 125 | ### Misc: Packages 126 | #### 1. C/C++ IDE 127 | - Clion 128 | - Kdevelop 129 | 130 | #### 2. Sougou Pinyin Input - Chinese 131 | First, install "GDebi" with 132 | 133 | ``` 134 | sudo apt-get install gdebi 135 | ``` 136 | 137 | Then search and download the Sougou package for Ubuntu/Debian. Next, enter the correspoding folder and use 138 | 139 | ``` 140 | sudo gdebi sogoupinyin_2.2.0.0102_amd64.deb 141 | ``` 142 | 143 | to install Sougou Pinyin Input. At last, change the keyboard settings to add the sougou pinyin. 144 | Remeber to restart or suspend to make it work. 145 | 146 | 147 | 148 | ### Supported Open Source SLAM Systems after the above Configurations 149 | 1. [ORB-SLAM2](https://github.com/raulmur/ORB_SLAM2) 150 | 2. 视觉SLAM十四讲练习/practice code of the "14 lectures on visual SLAM",[English Version](https://github.com/gaoxiang12/slambook-en),[中文版](https://github.com/gaoxiang12/slambook) 151 | 152 | 153 | 154 | 155 | ### References: 156 | 1. [第六讲 图优化工具g2o的入门](http://www.cnblogs.com/gaoxiang12/p/4739934.html) 157 | 2. [在Ubuntu KyLin 16.04上安装g2o](http://blog.csdn.net/zpp13hao1/article/details/53942589) 158 | 3. [g2o的安装及初步使用](http://blog.csdn.net/jasmine_shine/article/details/50205503) 159 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Awesome-SLAM [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome) 2 | A curated list of SLAM resources 3 | 4 | ## Stay Tuned for Constant Updates 5 | 6 | > Last updated: Mar. 14th, 2021. 7 | 8 | The repo is maintained by [Youjie Xia](https://github.com/YoujieXia). The repo mainly summarizes the awesome repositories relevant to SLAM/VO on GitHub, including those on the PC end, the mobile end and some learner-friendly tutorials. 9 | 10 | Regrading awesome SLAM papers, please refer to [**Awesome-SLAM-Papers**](https://github.com/YoujieXia/Awesome-SLAM-Papers). 11 | 12 | If you want to know more about dependencies/packages of SLAM systems, please refer to [Installing Dependencies on Ubuntu 16.04 LTS towards SLAM Projects (Updating)](Misc/2018-03-10-Installing-Dependencies-on-Ubuntu-towards-SLAM-Projects.md). 13 | 14 | If you think this repo is useful, please ***watch***, ***star*** or ***fork*** it! 15 | 16 | Welcome to contribute to this repo, if you are interested in SLAM! Feel free to creat a pull request or contact me. 17 | 18 | 19 | > Note: Name Format - `repository name: one-sentence introduction` (with link to the corresponding repo) 20 | 21 | ------ 22 | 23 | ## Table of Contents 24 | 25 | - [1. Hot SLAM Repos on GitHub](#HotRepos) 26 | - [2. Visual SLAM](#VSLAM) 27 | - [2.1 Framework](#VFramework) 28 | - [2.2 Monocular](#VMono) 29 | - [2.3 Stereo](#VStereo) 30 | - [2.4 RGBD](#VRGBD) 31 | - [2.5 Others](#VOthers) 32 | - [3. Visual Inertial SLAM](#VISLAM) 33 | - [3.1 Framework](#VIFramework) 34 | - [3.2 Monocular](#VIMono) 35 | - [3.3 Stereo](#VIStereo) 36 | - [3.4 RGBD](#VIRGBD) 37 | - [3.5 Others](#VIOthers) 38 | - [4. LIDAR based SLAM](#LIDARSLAM) 39 | - [4.1 Framework](#LFramework) 40 | - [4.2 Others](#LOthers) 41 | - [5. Learning based SLAM](#LSLAM) 42 | - [5.1 Survey](#LSurvey) 43 | - [5.2 Others](#LOthers5) 44 | - [5.3 Deep Features](#DeepFeat) 45 | - [5.4 Semantic SLAM](#Semantic) 46 | - [6. Mobile End SLAM](#MSLAM) 47 | - [6.1 Visual SLAM](#MV) 48 | - [6.2 Visual Inertial SLAM](#MVI) 49 | - [6.3 Augmented Reality](#MAR) 50 | - [6.4 Others](#MOthers) 51 | - [7. Datasets](#Datasets) 52 | - [8. Tutorials](#Tutorials) 53 | - [8.1 3D Vision](#3DVision) 54 | - [8.2 Robotics](#Robotics) 55 | - [8.3 Lie Algebra and Lie Groups](#Lie) 56 | - [8.4 Optimization Techniques](#Opt) 57 | - [8.5 Calibration](#Calibr) 58 | - [8.6 RANSAC](#RANSAC) 59 | - [9. Selected Blogs](#Blogs) 60 | - [10. Research Groups](#Groups) 61 | - [11. Community](#Community) 62 | 63 | ------ 64 | 65 | ## 1. Hot SLAM Repos on GitHub 66 | - [Awesome-SLAM: Resources and Resource Collections of SLAM](https://github.com/YoujieXia/Awesome-SLAM) 67 | - [awesome-slam: A curated list of awesome SLAM tutorials, projects and communities.](https://github.com/kanster/awesome-slam) 68 | - [SLAM: learning SLAM,curse,paper and others](https://github.com/liulinbo/slam) 69 | - [A list of current SLAM (Simultaneous Localization and Mapping) / VO (Visual Odometry) algorithms](https://github.com/kafendt/List-of-SLAM-VO-algorithms) 70 | - [awesome-visual-slam: The list of vision-based SLAM / Visual Odometry open source, blogs, and papers](https://github.com/tzutalin/awesome-visual-slam) 71 | - [Lee-SLAM-source: SLAM 开发学习资源与经验分享](https://github.com/AlbertSlam/Lee-SLAM-source) 72 | - [awesome-SLAM-list](https://github.com/OpenSLAM/awesome-SLAM-list) 73 | - [VIO-Resources](https://github.com/hhmaizi/VIO-Resources/blob/master/resources4vio) 74 | 75 | ------ 76 | 77 | ## 2. Visual SLAM 78 | 79 | ### 2.1 Framework 80 | - [OpenVSLAM: A Versatile Visual SLAM Framework](https://github.com/OpenVSLAM-Community/openvslam) 81 | - [OpenSfM: Open source Structure-from-Motion pipeline](https://github.com/mapillary/OpenSfM) 82 | - [GSLAM (A General SLAM Framework and BenchMark)](https://github.com/zdzhaoyong/GSLAM) 83 | - [ScaViSLAM](https://github.com/strasdat/ScaViSLAM) 84 | 85 | 86 | ### 2.2 Monocular 87 | - [ORB_SLAM: A Versatile and Accurate Monocular SLAM ](https://github.com/raulmur/ORB_SLAM) 88 | - [LSD-SLAM: Large-Scale Direct Monocular SLAM](https://github.com/tum-vision/lsd_slam) 89 | - [DSO: Direct Sparse Odometry](https://github.com/JakobEngel/dso) 90 | - [LDSO: Direct Sparse Odometry with Loop Closure](https://github.com/tum-vision/LDSO) 91 | - [SVO: Semi-direct Visual Odometry](https://github.com/uzh-rpg/rpg_svo) 92 | - [PTAM: Parallel Tracking and Mapping](https://github.com/Oxford-PTAM/PTAM-GPL) 93 | - [LPVO: Line and Plane based Visual Odometry](https://github.com/PyojinKim/LPVO) 94 | - [LCSD_SLAM: Loosely-Coupled Semi-Direct Monocular SLAM](https://github.com/sunghoon031/LCSD_SLAM) 95 | - [CCM-SLAM: Robust and Efficient Centralized Collaborative Monocular SLAM for Robotic Teams](https://github.com/VIS4ROB-lab/ccm_slam) 96 | 97 | 98 | ### 2.3 Stereo 99 | - [ORB_SLAM2](https://github.com/raulmur/ORB_SLAM2) 100 | - [ORBSLAM2_with_pointcloud_map](https://github.com/gaoxiang12/ORBSLAM2_with_pointcloud_map) 101 | - [PL-SLAM: a Stereo SLAM System through the Combination of Points and Line Segments](https://github.com/rubengooj/pl-slam) 102 | - [StVO-PL: Stereo Visual Odometry by combining point and line segment features](https://github.com/rubengooj/StVO-PL) 103 | - [PL-SVO](https://github.com/rubengooj/pl-svo) 104 | - [stereo-dso: Direct Sparse Odometry with Stereo Cameras](https://github.com/JiatianWu/stereo-dso) 105 | - [S-PTAM: Stereo Parallel Tracking and Mapping](https://github.com/lrse/sptam), Python implementation: [stereo_ptam](https://github.com/uoip/stereo_ptam) 106 | - [Robust Stereo Visual Odometry](https://github.com/famoreno/stereo-vo) 107 | - [OV²SLAM: A Fully Online and Versatile Visual SLAM for Real-Time Applications](https://github.com/ov2slam/ov2slam) 108 | 109 | 110 | ### 2.4 RGBD 111 | - [Dense Visual Odometry and SLAM](https://github.com/tum-vision/dvo_slam) 112 | - [DVO](https://github.com/tum-vision/dvo):Dense Visual Odometry 113 | - [PlanarSLAM](https://github.com/yanyan-li/PlanarSLAM) 114 | - [badslam](https://github.com/ETH3D/badslam): Bundle Adjusted Direct RGB-D SLAM 115 | - [RESLAM](https://github.com/fabianschenk/RESLAM): A real-time robust edge-based SLAM system 116 | - [VDO-SLAM](https://github.com/halajun/VDO_SLAM): A Visual Dynamic Object-aware SLAM System 117 | - [REVO](https://github.com/fabianschenk/REVO): Robust Edge-based Visual Odometry 118 | 119 | 120 | ### 2.5 Others 121 | - [CubeSLAM](https://github.com/shichaoy/cube_slam): Monocular 3D Object Detection and SLAM 122 | - [se2lam](https://github.com/izhengfan/se2lam): Visual-Odometric On-SE(2) Localization and Mapping 123 | - [se2clam](https://github.com/izhengfan/se2clam): SE(2)-Constrained Localization and Mapping by Fusing Odometry and Vision 124 | - [BreezySLAM](https://github.com/simondlevy/BreezySLAM): Simple, efficient, open-source package for Simultaneous Localization and Mapping in Python, Matlab, Java, and C++ 125 | - [MultiCol-SLAM](https://github.com/urbste/MultiCol-SLAM): a multi-fisheye camera SLAM 126 | - [Event-based Stereo Visual Odometry](https://github.com/HKUST-Aerial-Robotics/ESVO) 127 | 128 | ------ 129 | 130 | ## 3. Visual Inertial SLAM 131 | 132 | ### 3.1 Framework 133 | - [maplab](https://github.com/ethz-asl/maplab): An open visual-inertial mapping framework. 134 | - [ORB-SLAM3](https://github.com/UZ-SLAMLab/ORB_SLAM3): An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM 135 | - [VINS-Fusion](https://github.com/HKUST-Aerial-Robotics/VINS-Fusion): An optimization-based multi-sensor state estimator 136 | - [Kimera](https://github.com/MIT-SPARK/Kimera): an open-source library for real-time metric-semantic localization and mapping 137 | - [OpenVINS](https://github.com/rpng/open_vins): An open source platform for visual-inertial navigation research 138 | 139 | 140 | ### 3.2 Monocular 141 | - [OKVIS](https://github.com/ethz-asl/okvis_ros): Open Keyframe-based Visual-Inertial SLAM (ROS Version) 142 | - [ROVIO](https://github.com/ethz-asl/rovio): Robust Visual Inertial Odometry 143 | - [R-VIO](https://github.com/rpng/R-VIO): Robocentric Visual-Inertial Odometry 144 | - [LARVIO](https://github.com/PetWorm/LARVIO): A lightweight, accurate and robust monocular visual inertial odometry based on Multi-State Constraint Kalman Filter 145 | - [msckf_mono](https://github.com/daniilidis-group/msckf_mono) 146 | - LearnVIORB: Visual Inertial SLAM based on ORB-SLAM2 [(ROS Version)](https://github.com/jingpang/LearnVIORB), [LearnViORB_NOROS (Non-ROS Version)](https://github.com/OpenSLAM/LearnViORB_NOROS/tree/master/master/LearnVIORB_NOROS) 147 | - [PVIO](https://github.com/zju3dv/PVIO): Robust and Efficient Visual-Inertial Odometry with Multi-plane Priors 148 | - [PL-VIO](https://github.com/HeYijia/PL-VIO): monocular visual inertial system with point and line features 149 | - [PL-VINS](https://github.com/cnqiangfu/PL-VINS): Real-Time Monocular Visual-Inertial SLAM with Point and Line Features 150 | - [Adaptive Line and Point Feature-based Visual Inertial Odometry for Robust Localization in Indoor Environments](https://github.com/ankh88324/ALVIO) 151 | - [REBiVO](https://github.com/JuanTarrio/rebvo): Realtime Edge Based Inertial Visual Odometry for a Monocular Camera 152 | - [Co-VINS](https://github.com/qintonguav/Co-VINS): Collaborative Localization for Multiple Monocular Visual-Inertial Systems 153 | 154 | 155 | ### 3.3 Stereo 156 | - [msckf_vio](https://github.com/KumarRobotics/msckf_vio): Robust Stereo Visual Inertial Odometry for Fast Autonomous Flight 157 | - [OKVIS](https://github.com/ethz-asl/okvis): Open Keyframe-based Visual-Inertial SLAM 158 | - [Basalt](https://gitlab.com/VladyslavUsenko/basalt): Visual-Inertial Mapping with Non-Linear Factor Recovery 159 | - [ICE-BA](https://github.com/baidu/ICE-BA): Incremental, Consistent and Efficient Bundle Adjustment for Visual-Inertial SLAM 160 | - [ORBSLAM_DWO](https://github.com/JzHuai0108/ORB_SLAM): stereo + inertial input based on ORB_SLAM 161 | - [VI-Stereo-DSO](https://github.com/RonaldSun/VI-Stereo-DSO) 162 | - [Semi-Dense Direct Visual Inertial Odometry](https://github.com/KumarRobotics/sdd_vio) 163 | - [LearnVIORBnorosgai2](https://github.com/ZuoJiaxing/LearnVIORBnorosgai2): Visual Inertial SLAM based on ORB-SLAM2 (Non-ROS Version) 164 | - [ygz-stereo-inertial](https://github.com/gaoxiang12/ygz-stereo-inertial): a stereo-inertial visual odometry 165 | 166 | 167 | ### 3.4 RGBD 168 | 169 | 170 | ### 3.5 Others 171 | - [X Inertial-aided Visual Odometry](https://github.com/ucla-vision/xivo) 172 | 173 | ------ 174 | 175 | ## 4. LIDAR based SLAM 176 | 177 | ### 4.1 Framework 178 | - [Cartographer](https://github.com/cartographer-project/cartographer) 179 | - [LOAM-Livox](https://github.com/hku-mars/loam_livox): A robust LiDAR Odometry and Mapping (LOAM) package for Livox-LiDAR 180 | 181 | 182 | ### 4.2 Others 183 | - [FAST-LIO](https://github.com/hku-mars/FAST_LIO) 184 | - [LOL](https://github.com/RozDavid/LOL): Lidar-only Odometry and Localization in 3D point cloud maps 185 | - [PyICP SLAM](https://github.com/gisbi-kim/PyICP-SLAM): Full-python LiDAR SLAM using ICP and Scan Context 186 | - [LIO-SAM](https://github.com/TixiaoShan/LIO-SAM): Tightly-coupled Lidar Inertial Odometry via Smoothing and Mapping 187 | - [LeGO-LOAM](https://github.com/RobustFieldAutonomyLab/LeGO-LOAM): Lightweight and Ground-Optimized Lidar Odometry and Mapping on Variable Terrain 188 | - [hdl_graph_slam](https://github.com/koide3/hdl_graph_slam): 3D LIDAR-based Graph SLAM 189 | - [A-LOAM](https://github.com/HKUST-Aerial-Robotics/A-LOAM): Advanced implementation of LOAM 190 | - [LIO-mapping: A Tightly Coupled 3D Lidar and Inertial Odometry and Mapping Approach](https://github.com/hyye/lio-mapping) 191 | - [SC-LeGO-LOAM](https://github.com/irapkaist/SC-LeGO-LOAM): LiDAR SLAM: Scan Context + LeGO-LOAM 192 | - [Fast LOAM](https://github.com/wh200720041/floam): Fast and Optimized Lidar Odometry And Mapping for indoor/outdoor localization 193 | - [SuMa](https://github.com/jbehley/SuMa): Surfel-based Mapping using 3D Laser Range Data 194 | - [LINS](https://github.com/ChaoqinRobotics/LINS---LiDAR-inertial-SLAM): LiDAR-inertial-SLAM 195 | - [ISCLOAM](https://github.com/wh200720041/iscloam): Intensity Scan Context based full SLAM implementation for autonomous driving 196 | - [MULLS](https://github.com/YuePanEdward/MULLS): Versatile LiDAR SLAM via Multi-metric Linear Least Square 197 | 198 | ------ 199 | 200 | ## 5. Learning based SLAM 201 | The SLAM algorithms using conventional methods are listed above by default. The section is to list SLAM algos using learning based methods. 202 | 203 | 204 | ### 5.1 Survey 205 | - [A collection of deep learning based localization models](https://github.com/changhao-chen/deep-learning-localization-mapping) 206 | - [3D-Reconstruction-with-Deep-Learning-Methods](https://github.com/natowi/3D-Reconstruction-with-Deep-Learning-Methods) 207 | 208 | 209 | ### 5.2 Others 210 | - [TLIO](https://github.com/CathIAS/TLIO): Tight Learned Inertial Odometry 211 | - [Unsupervised Learning of Monocular Depth Estimation and Visual Odometry with Deep Feature Reconstruction](https://github.com/Huangying-Zhan/Depth-VO-Feat) 212 | - [SuperPoint + ORB_SLAM2](https://github.com/KinglittleQ/SuperPoint_SLAM) 213 | - [VINet](https://github.com/HTLife/VINet): Visual-Inertial Odometry as a Sequence-to-Sequence Learning Problem 214 | - [DeepSFM](https://github.com/weixk2015/DeepSFM): Structure From Motion Via Deep Bundle Adjustment 215 | - [Unsupervised Monocular Visual-inertial Odometry Network](https://github.com/Ironbrotherstyle/UnVIO) 216 | - [Semantic SLAM](https://github.com/hridaybavle/semantic_slam) 217 | - [CNN-DSO](https://github.com/muskie82/CNN-DSO): Direct Sparse Odometry with CNN Depth Prediction 218 | - [CNN-SVO](https://github.com/yan99033/CNN-SVO) 219 | - [KFNet](https://github.com/zlthinker/KFNet): Learning Temporal Camera Relocalization using Kalman Filtering 220 | - [Unsupervised Depth Completion from Visual Inertial Odometry](https://github.com/alexklwong/unsupervised-depth-completion-visual-inertial-odometry) 221 | - [The Perfect Match](https://github.com/zgojcic/3DSmoothNet): 3D Point Cloud Matching with Smoothed Densities 222 | - [Beyond Photometric Loss for Self-Supervised Ego-Motion Estimation](https://github.com/hlzz/DeepMatchVO) 223 | - [M^3SNet](https://github.com/whubaichuan/M3VSNet): Unsupervised Multi-metric Multi-view Stereo Network 224 | - [Deep EKF VIO](https://github.com/lichunshang/deep_ekf_vio) 225 | - [Active Neural SLAM](https://github.com/devendrachaplot/Neural-SLAM) 226 | - [DeepFactors](https://github.com/jczarnowski/DeepFactors) 227 | - [OverlapNet](https://github.com/PRBonn/OverlapNet): Loop Closing for 3D LiDAR-based SLAM 228 | - [SO-Net](https://github.com/lijx10/SO-Net): Self-Organizing Network for Point Cloud Analysis 229 | - [Geometry-Aware Learning of Maps for Camera Localization](https://github.com/NVlabs/geomapnet) 230 | - [DeepV2D](https://github.com/princeton-vl/DeepV2D): Video to Depth with Differentiable Structure from Motion 231 | - [PVN3D](https://github.com/ethnhe/PVN3D): A Deep Point-wise 3D Keypoints Voting Network for 6DoF Pose Estimation 232 | - [DeepMVS](https://github.com/phuang17/DeepMVS): Learning Multi-View Stereopsis 233 | - [Epipolar Transformers](https://github.com/yihui-he/epipolar-transformers) 234 | - [DF-VO](https://github.com/Huangying-Zhan/DF-VO): Depth and Flow for Visual Odometry 235 | - [DeepTAM](https://github.com/lmb-freiburg/deeptam): Deep Tracking and Mapping 236 | 237 | 238 | ### 5.3 Deep Features 239 | - [GCNv2 SLAM](https://github.com/jiexiong2016/GCNv2_SLAM): Real-time SLAM system with deep features 240 | - [FCGF](https://github.com/chrischoy/FCGF): Fully Convolutional Geometric Features: Fast and accurate 3D features for registration and correspondence 241 | - [Deep Image Retrieval](https://github.com/naver/deep-image-retrieval) 242 | - [Key.Net](https://github.com/axelBarroso/Key.Net): Keypoint Detection by Handcrafted and Learned CNN Filters 243 | 244 | 245 | ### 5.4 Semantic SLAM 246 | - [SuMa++](https://github.com/PRBonn/semantic_suma): Efficient LiDAR-based Semantic SLAM 247 | - [DS-SLAM](https://github.com/ivipsourcecode/DS-SLAM) 248 | - [Probabilistic Data Association via Mixture Models for Robust Semantic SLAM](https://github.com/MarineRoboticsGroup/mixtures_semantic_slam) 249 | - [SIVO](https://github.com/navganti/SIVO): Semantically Informed Visual Odometry and Mapping 250 | - [orbslam_semantic_nav_ros, RGBD](https://github.com/MRwangmaomao/semantic_slam_nav_ros) 251 | - [Pop-up SLAM](https://github.com/shichaoy/pop_up_slam): Semantic Monocular Plane SLAM for Low-texture Environments 252 | - [Semantic SLAM using ROS, ORB SLAM, PSPNet101](https://github.com/1989Ryan/Semantic_SLAM) 253 | 254 | ------ 255 | 256 | ## 6. Mobile End SLAM 257 | The SLAM algorithms running on PC end are listed above by default. The section is to list references and resources for SLAM algo dev on mobile end. 258 | 259 | 260 | ### 6.1 Visual SLAM 261 | - [ORB_SLAM-iOS](https://github.com/ygx2011/ORB_SLAM-IOS) 262 | - [ORB_SLAM2-iOS](https://github.com/ygx2011/ORB_SLAM2-IOS) 263 | - [MobileSLAM](https://github.com/xorthat/MobileSLAM): LSD SLAM on Mobile Phone 264 | - [SLAM_AR_Android](https://github.com/Martin20150405/SLAM_AR_Android) 265 | 266 | 267 | ### 6.2 Visual Inertial SLAM 268 | - [VINS-Mobile](https://github.com/HKUST-Aerial-Robotics/VINS-Mobile): Monocular Visual-Inertial State Estimator on Mobile Phones 269 | 270 | 271 | ### 6.3 Augmented Reality 272 | - [Awesome-ARKit](https://github.com/olucurious/Awesome-ARKit) 273 | - [Awesome-ARCore](https://github.com/olucurious/Awesome-ARCore) 274 | - [MixedRealityToolkit-Unity](https://github.com/microsoft/MixedRealityToolkit-Unity) 275 | - [arcore-android-sdk](https://github.com/google-ar/arcore-android-sdk) 276 | - [OpenARK](https://github.com/augcog/OpenARK) 277 | - [opencv-markerless-AR-Mobile](https://github.com/meiroo/opencv-markerless-AR-Mobile) 278 | 279 | #### 6.3.1 Depth Image API with iPhone 7 Plus (or newer) 280 | - [DepthAPISampleForiOS11](https://github.com/fromkk/DepthAPISampleForiOS11) 281 | - [AVDepthCamera](https://github.com/faceowener/AVDepthCamera) 282 | - [ios11-depth-map-test](https://github.com/xiangcong/ios11-depth-map-test) 283 | - [ARCore Depth Lab](https://github.com/googlesamples/arcore-depth-lab): Depth API Samples for Unity 284 | - [AR-Depth](https://github.com/facebookresearch/AR-Depth): Fast Depth Densification for Occlusion-Aware Augmented Reality 285 | - [AR-Depth-cpp](https://github.com/muskie82/AR-Depth-cpp): C++ implementation of Fast Depth Densification for Occlusion-aware Augmented Reality (SIGGRAPH-Asia 2018) 286 | 287 | 288 | ### 6.4 Others 289 | - [Microsoft Computer Vision API](https://github.com/microsoft/Cognitive-Vision-Android): Android Client Library & Sample 290 | - [GPUImage](https://github.com/BradLarson/GPUImage): An open source iOS framework for GPU-based image and video processing 291 | 292 | ------ 293 | 294 | ## 7. Datasets 295 | - [Awesome SLAM Datasets](https://github.com/youngguncho/awesome-slam-datasets) 296 | - [Awesome Robotics Datasets](https://github.com/sunglok/awesome-robotics-datasets): A collection of useful datasets for robotics and computer vision 297 | 298 | 299 | - [TUM - Monocular Visual Odometry Dataset](https://vision.cs.tum.edu/data/datasets/mono-dataset), [[code](https://github.com/tum-vision/mono_dataset_code)] 300 | - [ADVIO](https://github.com/AaltoVision/ADVIO): An Authentic Dataset for Visual-Inertial Odometry 301 | 302 | ------ 303 | 304 | ## 8. Tutorials 305 | 306 | - 视觉SLAM十四讲/14 lectures on visual SLAM,[English Version](https://github.com/gaoxiang12/slambook-en),[中文版](https://github.com/gaoxiang12/slambook) 307 | - [Practice of the SlamBook](https://github.com/leftthomas/SlamBook) 308 | - [GraphSLAM_tutorials_code](https://github.com/HeYijia/GraphSLAM_tutorials_code) 309 | - [SLAM 开发学习资源与经验分享](https://github.com/AlbertSlam/Lee-SLAM-source) 310 | - [Visual SLAM/VIO 算法笔记](https://blog.csdn.net/MulinB/article/details/53421864) 311 | 312 | 313 | ### 8.1 3D Vision 314 | - [An Invitation to 3D Vision: A Tutorial for Everyone](https://github.com/sunglok/3dv_tutorial) 315 | - [Computer Vision/Geometric Fundamentals of SLAM](Misc/Geometric-Fundamentals-of-SLAM.md) 316 | 317 | #### 8.1.1 Libs 318 | - [opengv](https://github.com/laurentkneip/opengv) 319 | - [Geometry Central](https://github.com/nmwsharp/geometry-central) 320 | - [vilib](https://github.com/uzh-rpg/vilib): CUDA Visual Library by RPG 321 | - [Vitis Vision Library](https://github.com/Xilinx/Vitis_Libraries/tree/master/vision) 322 | - [OpenGR: A C++ library for 3D Global Registration](https://github.com/STORM-IRIT/OpenGR) 323 | - [OpenCP](https://github.com/norishigefukushima/OpenCP): Computational photography library. The code is parallelized by using SIMD intrinsics and multi-threading. 324 | 325 | 326 | 327 | ### 8.2 Robotics 328 | - [RoboticSystemsBook](https://github.com/krishauser/RoboticSystemsBook) 329 | - [MATLABRobotics](https://github.com/AtsushiSakai/MATLABRobotics): MATLAB sample codes for mobile robot navigation 330 | - [Kindr](https://github.com/ANYbotics/kindr): Kinematics and Dynamics for Robotics 331 | - [Sensor Fusion in ROS](https://github.com/methylDragon/ros-sensor-fusion-tutorial): An in-depth step-by-step tutorial for implementing sensor fusion with robot_localization 332 | - [fuse](https://github.com/locusrobotics/fuse): The fuse stack provides a general architecture for performing sensor fusion live on a robot. Some possible applications include state estimation, localization, mapping, and calibration. 333 | - [GPU Computing in Robotics](https://github.com/JanuszBedkowski/gpu_computing_in_robotics) 334 | 335 | 336 | ### 8.3 Lie Algebra and Lie Groups 337 | - [Lie groups for Computer Vision](http://ethaneade.com/lie_groups.pdf) 338 | - [Lie groups for 2D and 3D Transformations](http://ethaneade.com/lie.pdf) 339 | - [Hermite Splines in Lie Groups as Products of Geodesics](http://ethaneade.com/lie_spline.pdf) 340 | - [LieTransformer](https://github.com/anonymous-code-0/lie-transformer) 341 | 342 | #### 8.3.1 Libs 343 | - [Sophus](https://github.com/strasdat/Sophus): C++ implementation of Lie Groups using Eigen 344 | - [manif](https://github.com/artivis/manif): A small C++11 header-only library for Lie theory 345 | 346 | 347 | ### 8.4 Optimization Techniques 348 | - [Gauss-Newton/Levenberg-Marquardt Optimization](http://ethaneade.com/optimization.pdf) 349 | - [How a Kalman filter works, in pictures](http://www.bzarg.com/p/how-a-kalman-filter-works-in-pictures/) 350 | - [卡爾曼濾波 (Kalman Filter)](http://silverwind1982.pixnet.net/blog/post/167680859) 351 | - [翻譯 Understanding the Basis of the Kalman Filter Via a Simple and Intuitive Derivation](http://silverwind1982.pixnet.net/blog/post/171132644) 352 | 353 | #### 8.4.1 Libs 354 | - [ceres-solver](https://github.com/ceres-solver/ceres-solver): A large scale non-linear optimization library 355 | - [g2o](https://github.com/RainerKuemmerle/g2o): A General Framework for Graph Optimization 356 | - [GTSAM](https://github.com/borglab/gtsam): Georgia Tech Smoothing and Mapping Library 357 | - [miniSAM](https://github.com/dongjing3309/minisam): A general and flexible factor graph non-linear least square optimization framework 358 | - [AprilSAM](https://github.com/xipengwang/AprilSAM): Real-time Smoothing and Mapping 359 | - [GTSAM Tutorial Examples](https://github.com/dongjing3309/gtsam-examples) 360 | - [AMGCL](https://github.com/ddemidov/amgcl): C++ library for solving large sparse linear systems with algebraic multigrid method 361 | - [Armadillo](https://gitlab.com/conradsnicta/armadillo-code): fast C++ library for linear algebra & scientific computing 362 | - [IFOPT](https://github.com/ethz-adrl/ifopt): An Eigen-based, light-weight C++ Interface to Nonlinear Programming Solvers (Ipopt, Snopt) 363 | - [LBFGS++](https://github.com/yixuan/LBFGSpp): A header-only C++ library for L-BFGS and L-BFGS-B algorithms 364 | - [OptimLib](https://github.com/kthohr/optim): a lightweight C++ library of numerical optimization methods for nonlinear functions 365 | - [PoseLib](https://github.com/vlarsson/PoseLib): a collection of minimal solvers for camera pose estimation 366 | - [fpm](https://github.com/MikeLankamp/fpm): C++ header-only fixed-point math library 367 | 368 | 369 | ### 8.5 Calibration 370 | #### 8.5.1 Libs 371 | - [kalibr](https://github.com/rpng/kalibr_allan): The Kalibr visual-inertial calibration toolbox 372 | - [kalibr_allan](https://github.com/rpng/kalibr_allan): IMU Allan standard deviation charts for use with Kalibr and inertial kalman filters 373 | - [Accurate geometric camera calibration with generic camera models](https://github.com/puzzlepaint/camera_calibration) 374 | - [LI-Calib](https://github.com/APRIL-ZJU/lidar_IMU_calib): Targetless Calibration of LiDAR-IMU System Based on Continuous-time Batch Estimation 375 | - [Online Photometric Calibration](https://github.com/tum-vision/online_photometric_calibration) 376 | - [IMU-TK](https://github.com/Kyle-ak/imu_tk): Inertial Measurement Unit ToolKit 377 | - [crisp](https://github.com/hovren/crisp): Camera-to-IMU calibration and synchronization toolbox 378 | - [VersaVIS](https://github.com/ethz-asl/versavis): An Open Versatile Multi-Camera Visual-Inertial Sensor Suite 379 | 380 | 381 | ### 8.6 RANSAC 382 | - [RansacLib](https://github.com/tsattler/RansacLib): Template-based implementation of RANSAC and its variants in C++ 383 | 384 | 385 | ------ 386 | 387 | ## 9. Selected Blogs 388 | - [The Future of Real-Time SLAM and Deep Learning vs SLAM](http://www.computervisionblog.com/2016/01/why-slam-matters-future-of-real-time.html) 389 | - [IMU Data Fusing: Complementary, Kalman, and Mahony Filter](http://www.olliw.eu/2013/imu-data-fusing/) 390 | 391 | ------ 392 | 393 | ## 10. Research Groups 394 | TBA 395 | 396 | ------ 397 | 398 | ## 11. Community 399 | - [PaoPaoRobot - 泡泡机器人](https://github.com/PaoPaoRobot) 400 | - [OpenSLAM.org](https://github.com/OpenSLAM-org) 401 | - [OpenVSLAM-Community](https://github.com/OpenVSLAM-Community) 402 | --------------------------------------------------------------------------------