1.扫描匹配
CeresScanMatcher2D精匹配
位置和旋转的构建残差比较简单;
主要难点是论文中提到的那个点云匹配的最小二乘优化公式用的 (1 - M * T* hk)²
代码中实现的是用的空闲的概率求最小来构建残差的(占用最大,最好匹配位置)
Cartographer(10)CeresScanMatcher2D_ceres grid2d-CSDN博客
2.后端回环node与submaps;node与node; IMU;odom;
核心思想:构建测量的相对位姿或位置 与 估计值(待优化值)构建残差的最小二乘问题(图优化中术语叫节点和边,节点对应每个激光node点的位姿,边对应这里的约束(constraint,相对位姿))。 所有求导方式构建为自动求导, 主要角度使用的轴角计算残差,中间的运算用到了四元数的插值和四元数的运算QuaternionParameterization
landmark 优化的同时会优化附近的node节点
ceres库解析:很详细,carto中的所有需要注意的东西都有提到,非常好的博客,可以作为主线研究一下最小二乘问题。
【SLAM】Ceres优化库超详细解析_ceres库-CSDN博客
重载()作用
一文助你Ceres 入门——Ceres Solver新手向全攻略-CSDN博客
贴几个有用的链接
官网给出的代价函数
Cost functions — Cartographer documentation
Cartographer ROS Integration — Cartographer ROS documentation
Real-Time Loop Closure in 2D LIDAR SLAM
【论文阅读】【Cartographer】Real-Time Loop Closure in 2D LIDAR SLAM 二维激光SLAM中的实时闭环检测 - 知乎
https://storage.googleapis.com/pub-tools-public-publication-data/pdf/45466.pdf
3.图优化
将图有化用简单的例子讲解的通俗易懂:顶点(位姿)与边的约束(编码器推测或地标)的
关系,通过边的关系构建线性方程组,使用最小二乘法求解最优的解(构建残差平方和函数,
求偏导),最主要在于引入了边的信息矩阵。
小结:图有化实际为通过顶点之间的关系(边)构建最小误差函数,求解最佳位姿。图构建
好以后,如何调整机器人位姿使误差最小。3篇中的一篇,第3篇matlab的代码非常值得学习。
https://heyijia.blog.csdn.net/article/details/47686523
可以配合这个视屏的第6讲的讲解
https://www.bilibili.com/video/BV1YP4y1C7La/?spm_id_from=333.999.0.0
此文中需要用到的知识:
a. 矩阵求导
【矩阵的导数运算】1_标量向量方程对向量求导_分母布局_分子布局_哔哩哔哩_bilibili
b. 2d中约束的更细致分解
c. cartographer中提到的一篇论文:
Efficient_Sparse_Pose_Adjustment_for_2D_mapping
求解 H X = -b 的稀疏求解方法。提到的LM 介绍了一种λ的更新方法
d. 状态估计:
两篇,感觉第二篇有点瑕疵,结论有点不好理解
《机器人学中的状态估计》笔记(1)——从简单的例子开始 - 知乎
中间插播一个最大似然估计MLE(slam14讲中最小二乘的引出):
个人理解:已知为一组观测数据,同时假定模型(通常某个概率分布,高斯或者其他概率分布函数,其实未定)已知;代入这个假定的模型求解出现 目前观测到的数据的最大概率(通常为多个独立事件的联合概率),然后得到 模型参数。 最可能的参数得到的最可能的 模型(概率分布函数等),使得出现 以上观测数据的可能性最大。
以下为一个视频中对贝叶斯的理解
贝叶斯的理解比较好视频:这里结合全概率公式理解。 后验(p(原因A|观测B):理解为如果是现在的观测结果B,可能是A引发的概率);似然P(B|A)理解为 在A的条件下B发生的概率(视频中说理解的传感器的精度,如果真实值为10度,测量为B的概率);先验 p(A), 今天的温度取值可能不同,A(10,11),数据或者经验值获得; 主要难理解的是分母的p(B),传感器的观测概率,与A的关系,可以理解为传感器的测量值概率分布由传感器的固有属性决定,与今天多少温度无关。
贝叶斯滤波与卡尔曼滤波第三讲 贝叶斯滤波的三大概率_哔哩哔哩_bilibili
详解最大似然估计(MLE)、最大后验概率估计(MAP),以及贝叶斯公式的理解-CSDN博客
贴两个高赞回答:
答主:石溪 提到极大似然估计的思想
聊一聊机器学习的MLE和MAP:最大似然估计和最大后验估计 - 知乎
e. 泰勒展开:
多元泰勒展开
https://zhuanlan.zhihu.com/p/110146436
泰勒展
脑路之清奇、操作之风骚、画风之诡异、场面之震撼
https://www.zhihu.com/question/25627482
f. 数值优化小结:
一阶导数二阶导数的意义:数学上标量函数一阶导数可以表达函数值变化快慢,二阶导数当然是表达一阶导数的函数值变化快慢(感觉废话实际有道理); 一阶导数图像上的物理意义是斜率;而二阶导数则为斜率的变化率。
f‘(x)一阶导数等于0,可以求出鞍点或极值点记为x0(可能多个值)。
区别鞍点或极值点的方法:
法一:f’(x0 + d)* f’(x0 - d)< 0 (d为微小变量)为极值点
当f’(x0 - d)> 0, f’(x0 + d)< 0为极大值; 当f’(x0 - d)< 0, f’(x0 + d)> 0为极小值
f'(x0 + d)* f’(x0 - d)>0 (d为微小变量)为鞍点
法二:f“(x0) < 0 极大值,> 0为极小值,=0 为鞍点或无意义。
呼应前面一堆废话:f”(x)的函数值可以判断极值点的类型,表征f(x)斜率的变化;f'(x)表征f(x)斜率。 f’(x)的切线斜率可以很直观得出为哪种类型的拐点(极值点,鞍点)
用x平方,x立方,x四次方结合图像理解(懒,不画图了)
加上f(x)= x 3 + 3*x2图像理解
【manim】五分钟科普微积分系列:二阶导数的几何意义_哔哩哔哩_bilibilid
梯度的理解:
1.梯度其实就是各变量偏导数的向量,一个变量x则为沿着x方向的梯度
2.而我们所说的偏导数就是指的是多元函数沿坐标轴的变化率.
3.方向导数最大值的方向为梯度方向(函数值在该点变化率最大的方向)
为何名为梯度下降:梯度值在减小,但是迭代方向是梯度的反方向(一维)
如何通俗地理解梯度下降法 - 知乎
https://www.zhihu.com/question/305638940/answer/1639782992
为什么梯度反方向是函数值局部下降最快的方向
https://zhuanlan.zhihu.com/p/24913912
正定对比于自然数的大于0记忆(特征值)
数值优化课程:龙强老师讲的比较通俗易懂(这一部分看视频好一些,看书太累)
个人了解了一下凸优化:p4~p6; 之后就是数值优化基础核心篇:p19~p27。 作者只讲到拟牛顿法,没有讲到GN 和LM。
这个同学对slam14讲的第6章的讲解:非常全面且系统,有高斯牛顿(GN)和列文伯格-马夸尔特(LM),作者还给出了一些比较有用的技巧,有点丰富,可以考虑加速。
https://www.bilibili.com/video/BV1YP4y1C7La/?spm_id_from=333.999.0.0
补充:对slam14 第6讲的推导
视觉SLAM十四讲_6非线性优化_哔哩哔哩_bilibili
g. 高博的视觉slam14讲:
6、9、10章比较系统的梳理了整个图优化相关理论(加第4章是为了解决姿态角的迭代),理论结构比较完整,但是有些理论还是需要延伸;如非线性优化相关的理论推导和李群李代数的知识推导(作者提到不希望过多的陷入数学推导,不过还是有很多推导(* ̄︶ ̄))。
结:
heyijia三篇图优化对于cartographer足够,框架结构看slam14;其余补充靠自己;上面贴了一些比较好的网络参考资料