![](https://img-blog.csdnimg.cn/20191226150741418.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
SLAM学习笔记
文章平均质量分 95
SLAM学习笔记
zkk9527
机器人工程师,感知算法,决策控制算法,机器人操作系统
展开
-
微鉴道长SLAM学习笔记(目录)
下面是第一版视觉SLAM14讲我的笔记目录。SLAM14讲学习笔记(一) 李群李代数基础SLAM14讲学习笔记(二)相机模型总结SLAM14讲学习笔记(三)非线性优化基础SLAM14讲学习笔记(四)视觉里程计(特征点法)和重难点总结SLAM14讲学习笔记(五)视觉里程计(光流法和直接法)和对于雅克比矩阵的理解SLAM14讲学习笔记(六)后端(最难一章:卡尔曼滤波器推导、理解...原创 2019-11-07 12:54:10 · 4929 阅读 · 11 评论 -
SLAM学习笔记(二十一)3D雷达与相机的标定方法详细教程
写在前面把3D雷达和相机进行外参标定使用的方法我们采取LiDAR-Camera Calibration using 3D-3D Point correspondences 方法。这里我使用的相机为realsense D435i 以及Velodyne16雷达。其实具体的细节github上面已经写过了,但是对于没有跑过的人来说,搞定这个东西还是有一定麻烦的。因此把细节记录在这里。希望涉及汇总方面的朋友们可以原文引用本链接,码字不易,谢谢!环境安装其实这块的内容原链接已经写的非常.原创 2021-11-15 15:16:01 · 4446 阅读 · 17 评论 -
如何可视化docker:以ROS环境为例(例如Gazebo,Rviz)
目录写在前面Windows系统准备工作使用样例Ubuntu系统准备工作使用样例总结写在前面这篇文章解决的重点是,如何通过windows,或者ubuntu,访问服务器,并且把服务器的docker容器里的内容远程可视化出来。(或者压根用的是自己的电脑上面装有docker)如果你不是这个目的,那就不需要往下看了。本身这个事情确实是比较麻烦,如果你的项目能不可视化,那最好。但如果非要可视化,可以参考一下我这篇文章的配置方法。当然,这只是其中一种配置方法,但并非唯一的配置方原创 2021-11-05 12:01:12 · 6390 阅读 · 4 评论 -
代码解析:DSVP: Dual-Stage Viewpoint Planner for Rapid Exploration by Dynamic Expansion
目录写在前面论文解析代码注释exploration_with_graph_planner.cppgraph_planner.cppdrrtp_node.cpp写在前面这篇论文是CMU发表在IROS2021上的工作,并随着其整套开源工作一起发布出来。作者是哈工大的Hongbiao Zhu博士,主页http://www.hongbiaoz.com/论文地址:http://www.hongbiaoz.com/files/paper7.pdfgithub地址:https原创 2021-07-19 15:00:30 · 4338 阅读 · 25 评论 -
SLAM学习笔记(二十)LIO-SAM流程及代码详解(最全)
这篇文章的主要目的是理清LIO-SAM的流程,对其中的数据处理的思路、变量的存储等各方面做一个总结。代码的注释有我自己写的内容,还有就是参考了一些网络博客的内容,总之站在别人的肩膀上才能看的更高。...原创 2021-06-17 11:07:07 · 58526 阅读 · 98 评论 -
SLAM学习笔记(十九)开源3D激光SLAM总结大全——Cartographer3D,LOAM,Lego-LOAM,LIO-SAM,LVI-SAM,Livox-LOAM的原理解析及区别
本文为我在浙江省北大信研院-智能计算中心-情感智能机器人实验室-科技委员会所做的一个分享汇报,现在我把它搬运到博客中。由于参与分享汇报的同事有许多是做其他方向的机器人工程师(包括硬件、控制等各方面并不是专门做SLAM的工程师),加上汇报的内容较多,因此在分享中我尽量使用简介的口语,而不出现复杂的公式。所以本文面向的是3D-slam方向的初学者。内容在整理中参考了许多链接,将放在最后。在文章结束后,我会把原PPT放在上面,需要者自取。另外打个广告,在slam方向有实习意愿的,请发送简历至zkyy8原创 2021-04-26 19:16:52 · 31412 阅读 · 59 评论 -
SLAM学习笔记(十八)3D激光SLAM——Cartographer第一视角点云可视化配置与使用方法(最新)
写这一篇文章的原因是随着相关内容的不断维护,这部分网上的一些资料都已经比较老了,配置起来走了一些弯路。不过,想当年实习配置SLAM算法库的时候什么依赖的报错没有调好过?哈哈,在今天配置完以后,特意总结此文章,把过程记录一下。方便我之后再配,还有就是给大家提供一些方便,不要把精力都花在像这种乱七八糟的事情上。目录安装Cartographer下载3D包保存点云数据可视化点云数据编译point_cloud_viewer库生成OctreeStructureSdl_viewerWe原创 2021-04-13 15:35:41 · 3287 阅读 · 4 评论 -
SLAM学习笔记(十七)激光SLAM——Cartographer配置文件参数解释及报错原因
运行 Cartographer的配置参数比较重要,稍微不注意就会报错,例如一个常见的错误类型:[ERROR] [1602741280.449037435, 153.231000000]: Ignoring transform from authority "unknown_publisher" with frame_id and child_frame_id "odom" because they are the same类似错误大多是因为配置文件设置的不正确。以turtlebot3配置文.原创 2020-10-15 15:11:02 · 4210 阅读 · 0 评论 -
SLAM学习笔记(十六)快速了解EPnP算法原理
前几天有实习的学弟询问我关于2D-3D匹配点的EPnP的算法原理。一下子问到还真没想起来。看了看资料,回忆起来了,特在这里简单的总结一下。学弟没看明白的原因,其实就是一些相关的讲解文章一上来就摆出让人生畏的一堆公式。其实个人觉得在目前Epnp算法已经被集成到OpenCV中库函数里面,我们就没必要再去手动实现轮子,因此求解的细节不需要死记,我们只要知道每一步是在干什么就可以了。除非你要研究和改进算法本身,那就直接去阅读原论文是最好的。如果只是想知道EPNP是怎么个思路和流程,但是高翔的书里没讲,自己网原创 2020-08-11 18:39:30 · 7251 阅读 · 7 评论 -
SLAM14讲学习笔记(十五)卡尔曼滤波器的直观理解
之前在SLAM14讲学习笔记(六)后端(最难一章:卡尔曼滤波器推导、理解以及扩展)中,介绍了卡尔曼滤波器的推导。但是感觉不太直观,因此这次用了几个简单的图,希望能一目了然卡尔曼滤波器是在干什么。先说SLAM中最简单的“滤波器”是什么含义:以上就是常规滤波器的解释。但是,套用到卡尔曼滤波器上,会有一些差别:至于为什么是这么推导,书中有详细的过程...原创 2019-11-04 21:05:17 · 2940 阅读 · 0 评论 -
SLAM就业问题汇总复习
目录1.相似变换、仿射变换、射影变换的区别。2.单应矩阵和基础矩阵的区别。3.视差和深度的关系。4.二值图,最大联通区域。5.梯度下降法,牛顿法和高斯牛顿法优劣。6.边缘检测算子。Canny,Sobel,Laplace。7.BA算法的流程。8.SVO中深度滤波器原理。9.某个SLAM框架工作原理,优缺点,改进。10.Ransac框架的实现。11.简单实现...原创 2019-09-25 21:18:38 · 3984 阅读 · 8 评论 -
SLAM14讲学习笔记(十二)ch9设计前端(代码详述)
本章的内容没有理论知识,完全是由实践部分组成的。本章主要有两大难点。第一,g2o的使用。对此,我总结了到了之前的一章中: SLAM14讲学习笔记(十一)g2o图优化中的要点与难点(前端VO中雅克比矩阵的定义)第二,程序的架构,各个部分的组装。确实如高博所述,这章内容让人体会到了怎么一步一步由砖头搭建起大厦的过程。搭建的过程中,文章内容缺乏注释,因此,我在学习过程中将自己的理解和注释写到...原创 2019-04-29 21:36:20 · 2174 阅读 · 1 评论 -
SLAM14讲学习笔记(十一)g2o图优化中的要点与难点(前端VO中雅克比矩阵的定义)
使用g2o优化的前提是,需要对各种误差的理解足够充足。我将雅克比矩阵的详细解析,写在了这里:点击查看在源码和自定义的类中,各种雅克比矩阵有的是写在源码里的,有的是需要自己修改和定义的。然而在实践中发现,雅克比矩阵的定义往往不一,容易使初学者摸不着头脑。因此,这篇文章我从代码角度出发,简单解析一下g2o定义时候的要点,和内置的雅克比矩阵的书写方式。在g2o中,内置了三大类:VertexS...原创 2019-04-29 16:10:32 · 5541 阅读 · 10 评论 -
SLAM14讲学习笔记(十四)ch13 建图(代码详述带注释)
本章的理论内容已经总结到了SLAM14讲学习笔记(九)单目稠密重建、深度滤波器详解与补充(纠正第13讲 建图 中的错误),这章的内容在关键的深度滤波器的地方犯了一些错误,我将其标了出来。本文没有理论知识,对理论知识不够了解的,请点击上面的链接。本章的代码难点主要在于两点:第一:通过极线匹配之后,如何通过三角测量算出两点的深度来。在ch7中,调用opencv的函数来三角化的。而这章是自己写的...原创 2019-05-03 23:13:46 · 4617 阅读 · 16 评论 -
SLAM14讲学习笔记(五)视觉里程计(光流法和直接法)和对于雅克比矩阵的理解
这章的内容不多,但是很奇妙的和上一章的串起来了。这里我简单总结一下光流法和直接法,主要想在最后总结和比较一下两个这节和上一节尤其是雅克比矩阵推导上的区别。雅克比矩阵的内容非常关键,如果不能充分理解它们的含义,前端基本就没有办法使用g2o来进行图优化。本文的内容主要是讲述重投影误差和光度误差分别对于位姿求偏导、以及对于世界坐标系下的点求偏导的理论文章,不涉及代码。如果希望理解代码中是如何用到雅克比矩...原创 2019-04-04 21:02:08 · 7883 阅读 · 2 评论 -
SLAM14讲学习笔记(六)后端(最难一章:卡尔曼滤波器推导、理解以及扩展)
这一章的内容并不多,不像视觉里程计那章的内容那么厚。但是我认为它是整个SLAM十四讲中最难的一章,难点主要在于卡尔曼滤波器的推导涉及到一屁股的数学公式,非常的讨厌,如果不能静下心来,就很容易被吓到。但是真正看懂以后实质上它是比较简单的,并没有用到什么太过复杂的变换(不像傅里叶变换就十分的抽象,这也是我从电信科专业转到计算机专业的主要原因之一,因为我实在厌烦了与傅里叶变换打交道。),本质上这节内容掌...原创 2019-04-06 16:50:30 · 8764 阅读 · 35 评论 -
SLAM14讲学习笔记(二)相机模型总结
相机模型这节的内容是最最基础重要的内容。再次回顾依然有所收获。但这一章的内容其实并不多。但是容易混淆。1.一共涉及到的坐标系有四个:第一,世界坐标系;第二,相机坐标系;第三,归一化相机坐标系;第四,像素坐标系。世界坐标系意如其名,不多解释;而相机坐标系是依据相机的光心(也就是小孔成像的那个小孔)建立起的坐标系。而归一化相机坐标系,是相机坐标系下的(x,y,z)三个...原创 2019-04-01 19:08:09 · 1875 阅读 · 0 评论 -
SLAM14讲学习笔记(三)非线性优化基础
这部分的内容,第一次看觉得很难看懂,不知所云;最近第二次看,可以看明白了。本着“先赶理论,后赶代码,借着代码复习C++”的原则,现在先不去学习代码的内容。这一章的内容,应该先从宏观上看。第一次看的时候,就是陷入了细节,忘记了每时每刻主要是在做什么,因此看完之后不能融会贯通。说明学习的时候,把握整体的脉络比追究细节更重要(毕竟不是考试,平时不用闭卷)。后者可以临时抱佛脚,现用现查,而前者不行。我...原创 2019-04-01 21:43:29 · 6918 阅读 · 6 评论 -
SLAM14讲学习笔记(七)后端(BA与图优化,Pose Graph优化的理论与公式详解、因子图优化)
上一节内容中我总结了卡尔曼滤波器的推导及其扩展的过程SLAM14讲学习笔记(六)后端(最难一章:卡尔曼滤波器推导、理解以及扩展),我认为那部分内容直接接触是比较难以理解的。但是高博书中也说了,卡尔曼滤波器并不是主流方法,主要还是通过BA或者其他方式来做优化。SLAM十四讲中,后端分为两节,在我的笔记里,把卡尔曼滤波器单独拿出来做了一个笔记,然后剩下的内容总结在这里,作为第二个后端优化的笔记。在...原创 2019-04-07 15:58:14 · 18495 阅读 · 48 评论 -
SLAM14讲学习笔记(八)回环检测
学习到这里为止,SLAM14讲的主要知识就不多了。这章的内容书里只是做了一个简述,因此读起来也没有什么难度。但是初学者不仔细看就很容易犯糊涂。回环检测的意义:1.给后端的Pose Graph提供更多有效的数据(即走到同一个位置附近了),否则后端优化可能把前端的误差累积起来,出现漂移问题。2.跟踪算法如果跟丢了,利用回环检测进行重定位。回环检测的实现方式:1.朴素思路:(1)暴力...原创 2019-04-07 20:53:58 · 4047 阅读 · 0 评论 -
SLAM14讲学习笔记(九)单目稠密重建、深度滤波器详解与补充
这次的笔记我把13讲的部分内容总结一下。虽然slam的名字叫同步定位与构图,但是书中建图的内容却少的可怜。据此高博给出了自己的解释,意为在定位的过程中,我确定了很多特征点的世界坐标,那这个过程其实就是建图了。一个点云中,每个已知世界坐标系的特征点给它的位置塞一个点,那这不就是建图吗?从这角度来说倒也没有太大的问题。但是作为用户,对于地图的要求是不一样的,比如希望地图应该是稠密的。而基于特征点方...原创 2019-04-08 18:24:37 · 4811 阅读 · 13 评论 -
SLAM14讲学习笔记(十)建图与SLAM开源方案对比
单目稠密重建和深度滤波器的内容我已经总结在了上一个学习笔记中(SLAM14讲学习笔记(九)单目稠密重建、深度滤波器详解与补充(纠正第13讲 建图 中的错误)),因为在那一部分内容中高博讲的有所欠缺和错误。这一节的学习笔记把14讲中剩下所有的内容做一个总结。1.像素梯度和极线匹配的不确定性是存在联系的,具体表现在:梯度与极线夹角较大,极线匹配不确定性大;夹角较小,极线匹配的不确定性小。(举例:如...原创 2019-04-08 20:57:18 · 2339 阅读 · 3 评论 -
SLAM14讲学习笔记(四)视觉里程计(特征点法)和重难点总结
直接总结吧:这一节描述的视觉里程计就是检测特征点,特征点匹配,匹配上以后算位姿和深度。目录特征点检测:特征点匹配:2D-2D对极几何三角测量3D-2D直接线性变化法:P3P:Bundle Adjustment3D-3DSVD方式:非线性优化方法:特征点检测:Fast特征点:以半径为3画圆,检测周围一圈一共16个点,设定阈值。有12个连续的...原创 2019-04-03 23:10:24 · 7650 阅读 · 8 评论 -
SLAM14讲学习笔记(十三)ch10 后端1(代码详述)
本章的理论内容我已经将其总结在了SLAM14讲学习笔记(六)后端(最难一章:卡尔曼滤波器推导、理解以及扩展)以及SLAM14讲学习笔记(七)后端(BA与图优化,Pose Graph优化的理论与公式详解、因子图优化)当中。本文主要针对其中的代码进行讲解。这章的代码纯粹靠自己学习,对于初学者来说是很难的。我个人有些感觉:之前的练习,都是一些小demo,相当于实验内容。而这章,给读者展现了一...原创 2019-05-01 21:29:39 · 2832 阅读 · 2 评论 -
SLAM14讲学习笔记(一) 李群李代数基础
第二次翻看《视觉SLAM十四讲》,发现第一次看过的都忘记了,认真分析了一下,我认为是第一次学习没有弄清楚整体的脉络。因此这次做一个小小的总结,希望不要再过几天又忘掉。前面的内容就没有总结的意义了,因为是最简单的,真正进入SLAM,应该是从这章的内容开始。首先,旋转矩阵是一个正交矩阵,它与自己的转置的乘积是单位矩阵。另外它还是关于时间的函数。每次对R(t)求导,相当于将其左乘一个Φ(t)^,...原创 2019-03-29 15:38:26 · 4769 阅读 · 0 评论