0. 笔者个人体会
很多SLAM系统为了实时估计位姿,建立的是稀疏地图,这种地图很难用作导航和规划任务。但是建立稠密地图的话,又会降低运算效率。设计GPU加速稠密建图是一个可行方案,但需要使用大量繁琐的CUDA编程,这个工作量巨大!
但最近,NVIDIA和ETHZ就联合提出了nvblox,是一个使用GPU加速SDF建图的库。计算速度非常快,相较CPU计算TSDF甚至快了177倍。更重要的是,因为所有数据都已经存储在GPU上,所以很容易和深度学习方案结合!
对建图速度有要求的小伙伴可以关注一下这项工作。
1. 效果展示
nvblox以2cm的分辨率很快建立了SDF地图:
办公室移动机器人实验,包括一个重建mesh,一个距离场slice,一个占用概率表示的动态目标(人)。其中场景的动态部分随时间衰减,静态部分使用TSDF融合实现精确重建。
这项工作最大的亮点在于,极大加快速度,又不损失精度。源代码和相应的ROS代码都开源了,感兴趣的小伙伴可以关注一下,下面来看具体的论文信息。
2. 摘要
稠密体素地图对于机器人在杂乱空间中的安全导航以及与环境的交互至关重要。对于延迟和鲁棒性,如果这些可以在计算受限的硬件上从相机或基于激光雷达的传感器进行板载计算,则是最好的。以前的工作在基于CPU的机器人地图绘制系统和基于GPU的重建系统之间留下了差距,前者由于计算约束限制了地图分辨率或比例,后者忽略了对机器人路径规划至关重要的特征。我们引入了一个库nvblox,旨在通过GPU加速机器人体素建图来填补这一空白,并针对嵌入式GPU进行了优化。nvblox提供了超越现有技术的显著性能改进,在表面重建方面实现了高达177倍的加速,在距离场计算方面实现了高达31倍的改进,并且是开源的。
3. 算法解析
重述一下问题:
给定RGB-D或LiDAR输入,位姿已知,建立体素地图,将3D点映射为距离、占用、颜色等信息,输出表面重建(占用/TSDF)或距离场(ESDF)。
传统的建图方法有什么问题?
使用CPU建图太慢了!
这项工作是怎么做的?
nvblox希望使用GPU来加速建图,具体架构包括多层地图(TSDF、颜色、占用、Mesh、ESDF,用户自己定义)、帧积分器(添加传感器数据到地图)、格式转换(转换地图格式),最终导出包含ESDF和网格重建的体素网格。使用时还可以增加地图图层,也可以扩展为语义标签等其他类型。
这个ESDF是啥?
ESDF地图是欧几里得符号距离场,场里面的每一个体素都包含了距离它最近的障碍物的欧几里得距离。对于路径规划来说,ESDF比TSDF更合适一些。ETHZ之前的工作voxblox计算的是准欧几里得距离,这样即使地图变化很小,更新计算量也非常大。相比之下,nvblox直接利用GPU计算欧几里得距离。
ESDF加速如何进行?
作者在PBA的基础上二次开发,来加速ESDF计算,算法总流程:
1、在分配块中,输入TSDF层和更新的体素块列表;
2、标记位置(在障碍计算中可以是父体的体素,也就是表面边界上的体素)。也就是说,这个体素的子体素是其最近的表面边界的体素。还需要处理两种常见情况:新占用以及新空闲的体素。新占用的体素可以简单地采用它们的TSDF值,并添加到索引中更新。新空闲的体素需要将它们的距离重置为最大值;
3、清除无效值。具体做法是找到其父体不再是一个位置的体素,重新计算距离,选择块索引中最大ESDF距离内的映射子集,然后检查每个体素是否仍然具有有效的父体;
4、降低ESDF体素距离;
5、通过跨块边界通信来更新相邻块,从而协调体素块之间的差异;
6、如果最后一级需要通过体素块边界进行通信,则进行另一次扫描。重复扫描领域更新循环,直到所有块都更新完成。
ESDF加速的可视化结果,该算法的总体思想是迭代计算体素块内的正确距离值,然后将体素块边界上的距离信息传递给领域,实现高度并行化。
4. 实验结果
整个实验部分的核心观点是:nvblox可以在提高建图(ESDF)速度的同时,不损失建图精度。实验设备选择了三个平台:台式机(Intel i9 CPU和NVIDIA RTX3090 Ti GPU),笔记本(Intel i7 CPU和RTX3000 Mobile GPU),还有Jetson Xavier AGX。使用的数据集是Replica和Redwood。
首先是各个部分和voxblox(ETHZ之前的工作,使用CPU建图,参考Voxblox: Incremental 3D Euclidean Signed Distance Fields forOn-Board MAV Planning)的耗时对比,其中每4帧执行了生成了一次ESDF和网格,分辨率是5cm。可以发现每部分的加速都非常明显,TSDF甚至加快了177倍!
增量ESDF计算的定量对比,对比方案包括voxblox和Fiesta,运行设备是桌面GPU。表格数据是重建体素的中值误差,结果显示voxblox和Fiesta的速度分别提高了31倍和4倍,关键是没有损失精度。
查询时间的对比,在GPU上采集3D点,并在GPU上执行ESDF查找,返回它们到最近表面的距离以及可选的距离场梯度。cor表示空间相关,uncor表示不相关。这里也推荐「3D视觉工坊」新课程《彻底剖析激光-视觉-IMU-GPS融合SLAM算法:理论推导、代码讲解和实战》。
nvblox的应用示例,重建了一个无人机采集的场景,还是体现实时性。
5. 总结
今天笔者为大家介绍了一个GPU加速的体素建图库nvblox,主要工作量是提出了一种新颖的增量式GPU加速方法来计算ESDF。nvblox针对独立和嵌入式GPU都进行了优化,计算速度非常快。对建图速度有要求的小伙伴可以关注一下这项工作。
全部0条评论
快来发表一下你的评论吧 !