整理了AIRX团队平时学习SLAM的一些开源工程、书籍、论文项目等。
1、Cartographer
Cartographer是一个系统,可跨多个平台和传感器配置以2D和3D形式提供实时同时定位和制图(SLAM)。
https://github.com/cartographer-project/cartographer
2、Openvslam
一个通用的视觉SLAM框架。OpenVSLAM是单眼,立体声和RGBD视觉SLAM系统。值得注意的功能是:
它与各种类型的相机型号兼容,并且可以轻松地针对其他相机型号进行定制。
可以存储和加载创建的地图,然后OpenVSLAM可以基于预构建的地图本地化新图像。
该系统是完全模块化的。它是通过使用易于理解的API将几个功能封装在单独的组件中而设计的。
OpenVSLAM基于具有稀疏功能的间接SLAM算法,例如ORB-SLAM,ProSLAM和UcoSLAM。OpenVSLAM值得注意的功能之一是该系统可以处理各种类型的摄像机模型,例如透视,鱼眼和等角矩形。如果需要,用户可以轻松实现额外的相机模型(例如双鱼眼,折反射)。例如,上面显示了使用等矩形相机模型(例如RICOH THETA系列,insta360系列等)的可视SLAM算法。
https://github.com/xdspacelab/openvslam
3、Mvision
机器人视觉 移动机器人 VS-SLAM ORB-SLAM2 深度学习目标检测 yolov3 行为检测 opencv PCL 机器学习 无人驾驶
https://github.com/Ewenwan/MVision
4、Recent_slam_research
Track Advancement of SLAM 跟踪SLAM前沿动态【2020 version】
https://github.com/YiChenCityU/Recent_SLAM_Research
5、G2o
g2o是用于优化基于图形的非线性误差函数的开源C ++框架。g2o被设计为易于扩展到各种各样的问题,通常可以在几行代码中指定一个新问题。当前的实现为SLAM和BA的多个变体提供了解决方案。
机器人技术和计算机视觉中的许多问题都涉及最小化可以表示为图形的非线性误差函数。典型实例是同时定位和映射(SLAM)或捆绑包调整(BA)。这些问题的总体目标是找到能最大程度解释受高斯噪声影响的一组测量值的参数或状态变量的配置。g2o是用于解决此类非线性最小二乘问题的开源C ++框架。g2o被设计为易于扩展到各种各样的问题,通常可以在几行代码中指定一个新问题。当前的实现为SLAM和BA的多个变体提供了解决方案。对于特定的问题,g2o的性能可与最新方法的实现相媲美。
https://github.com/RainerKuemmerle/g2o
6、Awesome Visual Slam
基于视觉的SLAM /视觉Odometry的开源项目,博客和论文列表
https://github.com/tzutalin/awesome-visual-slam
7、Maplab
一个开放的视觉-惯性映射框架。这是一个用C ++编写的开放式,面向研究的视觉惯性映射框架,用于创建,处理和操纵多会话地图。一方面,可以将maplab视为现成的视觉惯性制图和定位系统。另一方面,maplab为研究社区提供了多会话映射工具的集合,这些工具包括地图合并,视觉惯性批处理优化和循环闭合。此外,它还包括一个在线前端ROVIOLI,它可以创建视觉惯性图,还可以跟踪本地化图中的无漂移姿态。
https://github.com/ethz-asl/maplab
8、Elasticfusion
实时密集视觉SLAM系统。实时密集可视SLAM系统,能够捕获使用RGB-D摄像机探索的房间尺度环境的综合密集全局一致的基于surfelf的地图。
https://github.com/mp3guy/ElasticFusion
9、Evo
用于评估里程表和SLAM的Python软件包。该软件包提供可执行文件和一个小型库,用于处理,评估和比较测距法和SLAM算法的轨迹输出。
https://github.com/MichaelGrupp/evo
10、Mrpt
移动机器人编程工具包(MRPT)。移动机器人编程工具包(MRPT)提供了面向移动机器人和计算机视觉研究人员的c++库。库包括SLAM解决方案、3D(6D)几何、SE(2)/SE(3)李群、点、地标、姿态和地图上的概率密度函数(pdf)、贝叶斯推理(卡尔曼滤波、粒子滤波)、图像处理、避障等。MRPT还提供了用于立体相机校准、数据集检查等的GUI应用程序。
https://github.com/MRPT/mrpt
11、Loam_velodyne
激光里程表和制图(Loam)是一种使用3D激光雷达进行状态估计和制图的实时方法。
https://github.com/laboshinl/loam_velodyne
12、LeGO-LOAM
经过地面优化的激光雷达里程表和可变地形映射。该项目包含用于ROS兼容UGV的轻型且经过地面优化的激光雷达测距和制图(LeGO-LOAM)系统的代码。系统从Velodyne VLP-16激光雷达(水平放置)和可选的IMU数据中输入点云作为输入。它实时输出6D姿态估计。
https://github.com/RobustFieldAutonomyLab/LeGO-LOAM
13、Hdl_graph_slam
hdl_graph_slam是使用3D LIDAR的实时6DOF SLAM的开源ROS软件包。它基于3D Graph SLAM,以及基于NDT扫描匹配的测距法估计和环路检测。它还支持多种图形约束,例如GPS,IMU加速度(重力矢量),IMU方向(磁传感器)和地板(在点云中检测到)。我们已经在室内和室外环境中使用Velodyne(HDL32e,VLP16)和RoboSense(16通道)传感器测试了此封装。
https://github.com/koide3/hdl_graph_slam
14、Gms Feature Matcher
GMS:基于网格的运动统计,用于快速、超健壮的特征对应(CVPR 17和IJCV 19)
https://github.com/JiawangBian/GMS-Feature-Matcher
15、Kintinuous
实时大规模密集视觉SLAM系统。仅使用一种低成本的商品RGB-D传感器,就可以实时在数百米范围内实时生成高质量的全局一致点和网格重建。
https://github.com/mp3guy/Kintinuous
16、Kimera Vio
具有SLAM功能和3D网格生成的视觉惯性里程表。
https://github.com/MIT-SPARK/Kimera-VIO
17、Open_vins
一个用于视觉-惯性导航研究的开源平台。OpenVINS项目包含一些核心计算机视觉代码以及基于过滤器的最新视觉惯性估计器。核心滤波器是扩展卡尔曼滤波器,将惯性信息与稀疏的视觉特征轨迹融合在一起。这些视觉特征轨迹是利用多状态约束卡尔曼滤波器(MSCKF)滑动窗口公式融合而成的,该公式允许3D特征更新状态估计,而无需直接估计滤波器中的特征状态。受到基于图的优化系统的启发,所包含的过滤器具有模块化功能,可通过适当的基于类型的状态系统方便地进行协方差管理。
https://github.com/rpng/open_vins
18、Xivo
XIVO是用于视觉惯性测距/映射的开源库。XIVO在存储的数据(此处来自RealSense D435i传感器)或实时流上以140FPS的速度运行,延迟时间约为1-7ms,具体取决于硬件。它以来自经过校准的摄像机的视频帧和来自IMU的惯性测量为输入,并输出具有摄像机特性属性和6 DOF姿态的稀疏点云。它执行摄像机和IMU之间的相对姿态的自动校准以及时间戳对齐。
https://github.com/ucla-vision/xivo
19、Lio Mapping
紧密耦合3D激光雷达惯性测距法和制图(LIO映射)的实现。
https://github.com/hyye/lio-mapping
20、Dynslam
动态环境中同时定位和制图的硕士论文。分别从其中重建静态环境和动态对象,例如汽车。这是一个用C ++编写的密集SLAM系统。它基于InfiniTAM构建,增加了对立体声输入,室外操作以及单独的动态对象(例如汽车)重建的支持。
https://github.com/AndreiBarsan/DynSLAM
21、Co Fusion
多目标的实时分割、跟踪和融合。这是一种密集的SLAM系统,它以RGB-D图像的实时流作为输入并将场景分为不同的对象。使用多种模型拟合方法,其中每个对象可以独立于背景移动,并且仍然有效地跟踪其形状,并且仅使用与该对象标签关联的像素信息随时间融合其形状。先前处理动态场景的尝试通常将移动区域视为机器人不感兴趣的异常值,因此不对它们的形状建模或随时间推移跟踪其运动。相比之下,我们使机器人能够维护每个分割对象的3D模型,并通过融合不断改进它们。结果,我们的系统具有使机器人能够在对象级别维护场景描述的好处,这可能允许与其工作环境进行交互。即使是动态场景。
https://github.com/martinruenz/co-fusion
22、Cube_slam
Monocular 3D Object Detection and SLAM
https://github.com/shichaoy/cube_slam
23、Dynaslam
DynaSLAM是在单目,立体声和RGB-D设置的动态环境中具有强大功能的SLAM系统。
https://github.com/BertaBescos/DynaSLAM
24、MaskFusion
实时识别、跟踪和重建多个移动对象。MaskFusion是一种实时的,可感知对象的,语义和动态RGB-D SLAM系统,它超越了仅输出仅几何图的传统系统-MaskFusion可以识别,分段并将语义类标签分配给对象中的不同对象场景,同时跟踪和重建它们,即使它们独立于摄像机移动也是如此。当RGB-D相机扫描混乱的场景时,基于图像的实例级语义分割会创建语义对象蒙版,从而实现实时对象识别以及为世界地图创建对象级表示。与以前的基于识别的SLAM系统不同,MaskFusion不需要先验知识或已知的模型即可识别并可以处理多个独立运动。MaskFusion充分利用了使用实例级语义分割来使语义标签融合到对象感知映射中的优势。我们展示了增强现实应用程序,这些应用程序展示了MaskFusion输出的地图的独特功能:实例感知,语义和动态。
https://github.com/martinruenz/maskfusion
25、Comma2k19
用于融合姿态估计器和映射算法的开发和验证的驾驶数据集。comma.ai展示了comma2k19,这是加利福尼亚州280高速公路上通勤时间超过33小时的数据集。这意味着在加利福尼亚州圣何塞和旧金山之间20公里的高速公路上行驶的2019年路段各长1分钟。comma2k19是完全可复制且可伸缩的数据集。数据是使用逗号EON收集的,逗号EON的传感器类似于任何现代智能手机,包括路面摄像头,手机GPS,温度计和9轴IMU。
https://github.com/commaai/comma2k19
26、G2opy
SLAM图优化框架g2o的Python绑定。
https://github.com/uoip/g2opy
27、Vio Doc
主流VIO论文推导及代码解析
VINS
MSCKF
ICE-BA
ROVIO
https://github.com/StevenCui/VIO-Doc
28、Stereo_ptam
Python实现的SLAM算法Stereo-PTAM。
https://github.com/uoip/stereo_ptam
29、Semantic_slam
用手持RGB-D摄像机在ROS中实现实时语义slam。语义SLAM可以仅使用手持RGB-D摄像机(例如Asus xtion)实时生成基于3D体素的语义图。我们使用ORB_SLAM2作为SLAM后端,即CNN(PSPNet)来产生语义预测并将语义信息融合到octomap中。请注意,我们的系统也可以配置为生成不带语义信息的rgb octomap。
https://github.com/floatlazer/semantic_slam
30、Interactive_slam
Interactive_slam是基于开源3D LIDAR的映射框架。与现有的自动SLAM软件包相反,我们旨在开发一种半自动框架,该框架使用户能够以最少的人工来交互且直观地纠正制图失败(例如,里程表损坏,回路错误检测,地图变形等)。该框架提供了几种地图校正功能:
[手动和自动]循环关闭
[手册]基于平面的地图校正
[手册]多个地图合并
[自动]姿势边缘细化
https://github.com/SMRT-AIST/interactive_slam
31、Awesome Slam
主要总结了GitHub上与SLAM / VO相关的很棒的存储库,包括PC端,移动端的存储库以及一些对学习者友好的教程。
https://github.com/YoujieXia/Awesome-SLAM
32、Recent Stars 2020
SLAM,姿势/对象跟踪,深度/视差/流估计,3D图形等相关论文和代码。
https://github.com/Vincentqyw/Recent-Stars-2020
33、Orb_slam_2_ros
这是用于单目,立体声和RGB-D摄像机的ORB-SLAM2实时SLAM库的ROS实现,可计算摄像机的轨迹和稀疏的3D重建(在具有真实比例的立体声和RGB-D情况下)。它能够实时检测环路并重新定位摄像机。
https://github.com/appliedAI-Initiative/orb_slam_2_ros
34、Camlasercalibratool
摄像机和二维激光的外部标定。这是一个基于 ROS 的单线激光和相机外参数自动标定代码。标定原理如下图所示,相机通过二维码估计标定板平面在相机坐标系下的平面方程,由于激光点云落在平面上,将点云通过激光坐标系到相机坐标系的外参数 $ T_{cl} $ 转换到相机坐标系,构建点到平面的距离作为误差,使用非线性最小二乘进行求解。
https://github.com/MegviiRobot/CamLaserCalibraTool
35、Easy_slam_tutorial
首个中文的简单从零开始实现视觉SLAM理论与实践教程,使用Python实现。包括:ORB特征点提取,对极几何,视觉里程计后端优化,实时三维重建地图。A easy SLAM practical tutorial (Python).图像处理、otsu二值化。
https://github.com/varyshare/easy_slam_tutorial
36、Orb Slam2 Based Ar On Android
这是一个基于ORB-SLAM2和OpenGL的Android增强现实应用,它可以很好地工作在户外和室内环境中。
https://github.com/muziyongshixin/ORB-SLAM2-based-AR-on-Android
37、Visual Gps Slam
这是作者硕士论文关于视觉SLAM与GPS融合的研究报告。它包含了研究论文,代码和其他有趣的数据。
https://github.com/GSORF/Visual-GPS-SLAM
38、Orb_slam_2_ros
python实现3D可视化库Pangolin。
https://github.com/uoip/pangolin
39、Vi_orb_slam2
基于ORB-SLAM2的单目/立体视觉惯性ORB-SLAM。
https://github.com/YoujieXia/VI_ORB_SLAM2
40、Deep Learning Interview Book
深度学习面试宝典(含数学、机器学习、深度学习、计算机视觉、自然语言处理和SLAM等方向)
https://github.com/amusi/Deep-Learning-Interview-Book
更多阅读:
https://zhuanlan.zhihu.com/p/137761414
2、SLAM学习资源 | 国内外优秀实验室汇总:
https://zhuanlan.zhihu.com/p/140499750
END
备注:slam
SLAM交流群
SLAM、增强现实(AR)、机器人等最新技术,
若已为CV君其他账号好友请直接私信。
我爱计算机视觉
微信号:aicvml
QQ群:805388940
微博知乎:@我爱计算机视觉
网站:www.52cv.net
在看,让更多人看到