Advertisement

RGBD-SLAM

阅读量:

首先,致谢半闲居士(http://www.tuicool.com/articles/QZVjuu)。

RGBD-SLAM采用了Kinect传感器能够获取深度数据以及图像数据。在本次实验中我应用了激光扫描仪仅能获取深度数据但其工作原理与所使用的方案一致。

1. 得到三维点云图;

2. 对三维点云图进行两两匹配;

3. 进行图形优化;

4. 纹理贴图。

本文重点讲述第三点:图形优化问题(g2o)。

要了解g2o,可以参考以下一些文章:

Hierarchical Optimization on Manifolds for Online 2D and 3D Mapping;(2010)

g2o: A General Framework for Graph Optimization;(2011)

An empirical investigation into adaptive covariance scaling techniques reveals their effectiveness in enhancing the robustness and accuracy of map optimization processes, particularly in scenarios where initial estimates are unreliable or inadequate.

这三篇文章中第二篇属于基础性内容(撰写时间为何晚于第一篇存在疑问,并感到不解),其主要讲述了基础原理与方法(详细阐述了建模方法及其应用),从而提出了优化问题模型(随后作者尝试将其线性化处理以求解)。然而需要注意的是这一假设仅限于欧氏空间的情形(但这种局限性并未被及时指出)。第一篇论文则介绍了G2O算法在特定领域的实际应用(具体而言是将复杂的空间关系简化为二维平面进行处理)。第三篇论文指出,在初始位置估计精度较低的情况下直接采用原始G2O算法可能会导致优化结果不理想(因此需要引入额外的参数进行调整)。

其核心概念包括顶点(vertex)和边(edge)。这些顶点代表机器人在不同位置时的坐标信息。连接这些顶点的是边(edge),它们描述了不同位置之间相互关联的条件。换句话说,在我的实验中发现,在任何两个相邻的位置之间都存在一个旋转平移矩阵。深入理解g2o的工作原理可以通过查看其目录中的tutorial_slam2d示例。

为了获得最佳全局优化效果,在检测到闭环后使用g2o更为合适。例如,在这种情况下(即每条闭合路径包含大约)的情况下(也就是每条闭合路径包含大约),我们可以推导出相邻poses之间的约束关系。于是,在g2o对象中添加这些顶点节点,并建立相应的连接边。这样处理后会发现最终优化后的poses分布较为紧凑(即第一个pose与最后一个pose的位置较为接近)。这是因为这一结果主要由初始帧与末尾帧所施加的约束条件决定(即这两端之间的相对位置关系)。具体来说,在这种情况下(即当优化效果较为理想时),我们能够在结果中观察到初始与末尾帧之间的距离较小;而当这一过程未能达到理想效果时,则需要考虑在模型中添加更多连接边以进一步加强约束条件(也就是增加更多的限制性信息)。需要注意的是,在添加额外约束时应当尽可能准确以避免引入误差(否则会导致结果偏离预期)。

通过matlab绘制出了poses图,在该图表中用蓝色线条标识的是在g2o处理之前的轨迹线段(即初始路径),而红色线条则代表经过g2o优化后的路径线段(即最终确定的最优路径)。起始点设置在坐标[1,1,1]的位置上。从图表中可以看出,在处理完所有poses之后得到的结果为最后一个pose点坐标为[-1508, 274.5, -2213](相对于起始点而言差距显著),而起始点位置与之相比发生了明显的变化,并且经过g2o优化后两者几乎重合,并对其他所有poses进行了必要的修正以提高整体精度

全部评论 (0)

还没有任何评论哟~