ICRA2020 Voxel Map for Visual SLAM

文中提到,使用slam中传统的关键帧技术有时候并不是最优的,比如纹理少、没有结构信息,特别是有遮挡的情况等等 。。。
A. Voxeldata
存储地图点使用的是hash表,首先将地图分割成voxel,然后每个voxel中都存放很多的,同时中携带信息( or 2d )
结合体素表示和hash方法,我们可以在恒定时间内得到给定区域(如摄像机视锥)内的点,而不必考虑地图大小 。
hash (就是一个hash映射函数,输入是xyz坐标输出是对应的的列表):
注!!!!这里所说的结构化指的就是体素表达地图
注!!!蓝色的就是看到的3d 点
使用voxel需要注意:

ICRA2020  Voxel Map for Visual SLAM

文章插图
1. Voxel size
voxel的大小很影响性能,极端情况只有一个voxel或者voxel的大小等于point的大小,则voxel就没有用了
2.
使用 解决冲突问题
B. SLAM mapwith
通常,SLAM中的地图存储三维几何对象,如点和线,新的帧可以根据这些对象进行局部化 。地图会随着时间的推移而更新(例如,添加/删除点,更新现有点的信息),并且应该在跟踪过程中支持高效的查询(例如,新图像中可能匹配的点是什么?) 。下面,我们将描述体素映射中的相应功能 。请注意,我们不会完全丢弃关键帧,因为基于关键帧的BA对于优化贴图仍然是必要的 。我们的体素地图是一个更有效的三维点组织,以促进数据关联 。
point:
首先使用hash函数找到,然后分为三种情况:1. Voxel存在,不存在,则直接插入 。2.voxel存在;存在(比如相近 1cm有点),则更新 。3. voxel不存在,则插入新的voxel
point:
和inert 近似
Query map :
和inser近似,直接通过hash找到相邻的所有的
C. Point query with
在slam中一个重要的是在的时候得到当前帧可能观测到的所有的3d点,因此我们可以使用观测fov对voxel进行采样,快速获得3d点(因为是,因此是有pose先验的)
1. 我们首先从图像平面上的规则网格中采样像素 。然后我们将这些采样像素投影到三维空间中的方向向量上,得到r射线{Ri}Ri=1 。这些光线基本上对摄像机视场进行采样 。请注意,光线是在摄影机帧中表示的 。
2. 然后均匀的在射线上进行采样
3. 根据或者imu先验,可以将上述采样点转换到世界坐标系下,最后使用hash得到所有观测的3d点
优点:1. 使用体素的方法替代关键帧的方法进行的时候的关联,避免了遮挡造成的干扰
【ICRA2020Voxel Map for Visual SLAM】2. query时间恒定