├── _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 [](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 |
--------------------------------------------------------------------------------