2D激光雷达SLAM
单次二维扫描数据由一组角度和距离的数值对来表 达,不妨记作其中表示该点与车辆自身的角度,r ■ 表示该点离自身的距离,i=0,…这些数据是扫描点的极坐标,可以自然地转换至笛卡儿坐标系中,以Oc,y)i的形 式来表达。使用 OpenCV 显示二维激光雷达数据 从本章开始,将用到一些实际机器人采集到的数据,这些数据都是在真实场景中采集的,可 以验证我们的算法在真实世界中是否令人满意。由于 这些包容量比
6.2 扫描匹配算法
6.2.1 点到点的扫描匹配
先来介绍2DSLAM中的扫描匹配算法。单次二维扫描数据由一组角度和距离的数值对来表 达,不妨记作其中表示该点与车辆自身的角度,r ■ 表示该点离自身的距离,i=0,…,TV 表示有许多个测量点,iV的具体取值由激光的角分辨率决定。在程序实现中,往往把这些数据放 在一个数组中。这些数据是扫描点的极坐标,可以自然地转换至笛卡儿坐标系中,以Oc,y)i的形 式来表达。
使用 OpenCV 显示二维激光雷达数据
从本章开始,将用到一些实际机器人采集到的数据,这些数据都是在真实场景中采集的,可 以验证我们的算法在真实世界中是否令人满意。本节和后续章节需要用到一些ROS数据包。由于 这些包容量比较大,请读者按照本书对应的代码仓库给出的下载地址,按照自己的需要下载数据 包。如果读者的存储容量有限,那么不用下载所有的数据,只保留有代表性的数据即可。本节程序 需要用到2dmapping/目录下的数据包,其他章节也需要用到对应目录下的数据包。
为了方便测试不同算法在不同数据集下的表现,笔者为读者实现了ROS数据包的抽象接口, 读者只需为不同消息定义回调函数即可。例如,本节演示的代码中,需要读取数据包中的二维扫 描消息,然后交给可视化程序绘制。而其他章节中,这些数据可能要交给匹配算法进行配准。我们 利用C++的Lambda函数来实现这种灵活的调用方式:
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)