8. 《自动驾驶与机器人中的SLAM技术》基于保存的自定义NDT地图文件进行自动驾驶车辆的激光定位

目录

[1. 为 NDT 设计一个匹配度评估指标,利用该指标可以判断 NDT 匹配的好坏。](#1. 为 NDT 设计一个匹配度评估指标,利用该指标可以判断 NDT 匹配的好坏。)

[2. 利用第 1 题的指标,修改程序,实现 mapping 部分的回环检测。](#2. 利用第 1 题的指标,修改程序,实现 mapping 部分的回环检测。)

[3. 将建图结果导出为 NDT map,即将 NDT 体素内的均值和协方差都存储成文件。](#3. 将建图结果导出为 NDT map,即将 NDT 体素内的均值和协方差都存储成文件。)

[4. 实现基于 NDT map 的激光定位。根据车辆实时位姿,加载所需的 NDT 体素并完成定位。](#4. 实现基于 NDT map 的激光定位。根据车辆实时位姿,加载所需的 NDT 体素并完成定位。)

[5. 给出上述结果相比于 PCL NDT 的性能、存储空间等关键指标](#5. 给出上述结果相比于 PCL NDT 的性能、存储空间等关键指标)

1. 为NDT设计一个匹配度评估指标,利用该指标可以判断NDT匹配的好坏。

2. 利用第1题的指标,修改程序,实现mapping部分的回环检测。


下图是 PCL 版本 NDT 匹配,在阈值设置( ndt_score_th )为 4.5 时的匹配结果( 其中加载
的关键帧数目我删掉了一些,因为实在是耗时有点久。。。)

根据上面 PCL 版本的 NDT 检测结果来确定适配自定义指标的阈值( ndt_score_th )。

使用原来的阈值明显不对,观察,得分在 0.2 附近,于是试着在这个范围寻找合适的阈值。

可见,阈值设置为 0.15 和 pcl 版本的阈值为 4.5 时的结果差不多。

3. 将建图结果导出为NDT map,即将NDT体素内的均值和协方差都存储成文件。

这里参考 split_map.cc 代码的内容:加载关键帧对应的点云,对其进行滤波,然后计算点
云中的每个点对应的地图区块 id ,最后将区块索引和对应点云分别存储起来。
我们要导出 NDT map ,需要构建 NDT 体素并计算均值和协方差,这些在第七章的 ndt_3d.h
的 SetTarge 函数中已经实现。



保存的结果:

4.实现基于NDT map的激光定位。根据车辆实时位姿,加载所需的NDT****体素并完成定位。

原先基于点云地图的激光定位使用的是 PCL 版本 NDT , 在 RTK 角度搜索中用到了 10 米, 5 米, 4 米, 2 米的多分辨率 NDT 匹配来确定 RTK 的朝向,所以实现基于 NDT map 的激光定位,也需要加载多分辨率 的体素,所以参照第 3 题重新修改为保存多分辨率的 NDT map 。代码如下:


存储 NDT 体素中的均值和协方差矩阵信息。

①首先,在 fusion 初始化时配置要加载的 NDT map 路径,并参考原来的 loadMapIdex() 函
数,将多分辨率的 NDT 地图数据加载进来。


②接下来就是定位流程 ProcessMeasurements(m) 。首先要确定 RTK 朝向,加载多分辨率
NDT map ,使用多分辨率来进行寻找。



当然,同样也要准备卸载超出范围的 NDT 地图。

以上过程包含在 loadNdtMap 函数中。

RTK 初始化成功后后续定位流程在 LidarLocalization() 中进行。

至此,实现了基于 NDT map 进行激光定位的功能。
③实现效果:


两者定位效果差不多。

5.给出上述结果相比于PCL NDT****的性能、存储空间等关键指标。

①统计比较两者在加载地图和配准过程两方面的耗时情况。


可以发现,基于 NDT map 的方法,加载地图数据耗时要比加载点云要慢很多;而配准方面
会快很多。
比较一下跑完一个 bag ,总的耗时情况。


经过对比发现,基于 NDT map 的激光雷达定位效率是基于 PCL NDT 的接近六倍。
②统计比较两者需要加载的地图数据占存储大小。
原先加载的是以 100x100 大小地图区块索引命名的 pcd 格式点云数据,而现在需要加载 4
种不同分辨率的 NDT 体素地图数据中,仅存储了均值和信息矩阵。因此存储空间应该要小得多,果然,对比如下:

相关推荐
QY_Research_2 小时前
2026房地产NFT平台创业机遇与落地指南分析报告
大数据·人工智能·物联网·机器人·制造
机器人零零壹3 小时前
技术白皮书:iRobotCAM如何解决机器人激光切割应用中的核心难点,从CAD离线编程到双目视觉定位与轨迹自适应提升复杂空间曲线切割的精度、效率与柔性化水平
人工智能·算法
电子元件小说家4 小时前
2026年四季度电感市场观察:AI算力与汽车电子驱动下的选型与验证建议智能硬件
人工智能·汽车
网易CodeWave-小码哥4 小时前
支持多模块 Java 微服务导入|CodeWave SDD V4.5.10 上线
人工智能
AI你一生一世4 小时前
不止于时序存储:DolphinDB 如何成为 AI 时代的工业智能底座
java·人工智能·struts·时序数据库·工业智能·dolphindb·ai基础设施
belldeep4 小时前
python:genesis-world, Genesis-Embodied-AI
人工智能·python·ai·genesis
怕浪猫5 小时前
小程序成长计划上新:10 亿 Token 现在能调 DeepSeek-v4.1-flash了
人工智能·aigc·ai编程
ss2735 小时前
为什么PostgreSQL适合AI场景?
数据库·人工智能·postgresql
七牛云行业应用6 小时前
DeepSeek Super-agent 与 Grok Bot:开源 Agent 架构和聊天助手有何区别
人工智能·ai·架构·ai编程
维克兜率天6 小时前
【维克】趋势型CTA:期货市场的“追涨杀跌“
人工智能·python