【文献解析】Voxelmap——一种自适应体素地图

Efficient and Probabilistic Adaptive Voxel Mapping for Accurate Online LiDAR Odometry
论文地址:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9813516
代码:GitHub - hku-mars/VoxelMap: [RA-L 2022] An efficient and probabilistic adaptive voxel mapping method for LiDAR odometry
视频:https://youtu.be/HSwQdXg31WM

一、 文章概述

1. 问题导向

作为激光雷达测量的一种直接形式,点云地图易于实现。然而,点云图的一大缺点是难以考虑激光雷达测量噪声引起的地图不确定性。考虑到地图的不确定性,需要对环境中的显著特征(例如,平面)进行明确的参数化,在不同的激光雷达扫描中跟踪这些特征,并估计这些特征参数及其不确定性。

2.目标

针对上述挑战,本文提出了一种新的在线自适应体素映射方法,该方法构造不同大小的体素以适应环境结构和点密度的变化。

3.摘要

本文提出了一种高效的概率自适应体素映射激光雷达里程计方法。该地图是体素的集合;每个体素包含一个平面特征,以实现环境的概率表示和新LiDAR扫描的准确配准。我们进一步分析了从粗到精的体素映射的需求,然后使用一种由哈希表和八叉树组织的新的体素映射来高效地构建和更新映射。我们将所提出的体素映射应用于迭代扩展卡尔曼滤波,并构造了用于位姿估计的最大后验概率问题。在开放的KITTI数据集上的实验表明,与其他最先进的方法相比,我们的方法具有更高的精度和效率。在室内和非结构化环境中使用固态LiDAR和非重复扫描LiDAR进行的实验进一步验证了我们的映射方法对不同环境和LiDAR扫描模式的适应性(参见我们所附的视频1)。我们的代码和数据集在Github2上是开源的

4.贡献

1)提出了一种自适应大小、由粗到精的体素构建方法,该方法能够适应不同结构的环境,对激光雷达点云的稀疏性和不规则性具有较强的鲁棒性。自适应体素映射以八叉树散列数据结构组织,以提高体素构建、更新和查询的效率。
2)真正的概率地图表示,其中包含在体素地图中的每个特征(即,平面)准确地考虑了由点测量噪声和姿态估计误差引起的不确定性。
3)在LiDAR(惯性)里程计系统中实现了所提出的映射方法,并在各种环境(结构化和非结构化)和LiDARs(多旋转LiDARs和非传统固态LiDARs)的真实数据集上对设计进行了充分验证。特别是,我们的方法在Kitti数据集上比其他最先进的方法具有更好的性能。

二、方法解析

2.1 Probabilistic Plane Representation概率平面表示法

我们的体素映射在每个体素中包含一个概率特征。在不丧失通用性的前提下,由于平面特征在环境中的广泛适用性,我们使用了平面特征,并在这一部分中给出了平面特征的不确定性模型。
由于平面特征是从其关联点估计出来的,因此这些点上的任何噪声都会增加平面估计的不确定性。
点噪声源的两个可能:
一个是相对于局部LiDAR身体框架的原点测量噪声
另一个是将局部LiDAR点投影到世界框架的LiDAR姿态估计误差。
(1)点的不确定性模型
LiDAR点云中点的不确定性包含两部分:

  • 测距不确定性
  • 方位向不确定性两部分组成

详情请看。。。
 【文献解析】Voxelmap——一种自适应体素地图 - 古月居 (guyuehome.com)

<think>好的,我现在需要处理用户关于Voxblox中自适应化实现与配置的问题。首先,我需要回忆Voxblox的基本信息。Voxblox是一个基于的3D重建框架,主要用于机器人导航和地图构建。自适应化应该是它用来优化内存和计算效率的一种技术,根据场景复杂度调整的大小。 接下来,用户提到的参考引用是关于无约束优化问题的,里面提到了近似牛顿步长和Hk的更新。这可能与Voxblox中的优化策略有关联,比如在调整大小时使用某种优化算法来平衡精度和性能。我需要确认自适应化是否涉及类似的优化方法。 然后,我需要查找Voxblox的具文档或论文。根据记忆,Voxblox的实现可能基于TSDF(截断符号距离函数)或ESDF(欧几里得符号距离函数)。自适应化可能通过动态调整分辨率,例如在复杂区域使用小以提高精度,在简单区域使用大节省资源。 实现方式可能包括几个关键步骤:首先是确定需要细分的区域,可能基于表面曲率、距离梯度或其他几何特征。其次是动态调整大小,这需要数据结构支持不同分辨率的,比如八叉树结构。配置方法可能涉及参数设置,如最大最小尺寸、细分阈值等。 配置参数方面,用户可能需要调整的初始大小(voxel_size),细分条件(如梯度变化超过阈值),以及更新策略(如何时合并或分裂)。此外,可能涉及积分权重,决定新观测数据对更新的影响程度。 还需要考虑Voxblox中具是哪个模块使用自适应化,比如在构建ESDF时是否动态调整。可能引用到的文献是Voxblox的原始论文,或者相关GitHub仓库的文档说明。 最后,要确保回答的结构清晰,分点说明实现方式和配置方法,并生成相关问题。同时,检查是否所有数学公式正确使用$...$和$$...$$格式,以及引用标注是否正确。</think>### Voxblox自适应化实现与配置 Voxblox通过动态调整分辨率实现自适应化,其核心思想是根据场景复杂度优化内存和计算效率。以下是具实现方式和配置方法: #### 1. **实现方式** - **八叉树数据结构** 采用分层八叉树存储,允许不同区域具有不同分辨率。当检测到表面曲率或距离场梯度变化较大时(例如满足$\|\nabla \phi\| > \theta$条件),触发细分[^1]。 - **自适应细分条件** 通过TSDF/ESDF的梯度阈值控制分裂: $$ \text{if } \|\nabla \phi(x)\| > \tau \text{ then split voxel} $$ 其中$\tau$为预设梯度阈值,$\phi(x)$为符号距离函数。 - **分层积分策略** 对新观测数据应用加权更新规则: $$ W_{\text{new}} = W_{\text{old}} + w_{\text{obs}} $$ $$ \phi_{\text{new}} = \frac{W_{\text{old}}\phi_{\text{old}} + w_{\text{obs}}\phi_{\text{obs}}}{W_{\text{new}}} $$ #### 2. **配置方法** - **参数配置文件** 修改`voxblox_ros`的配置文件(如`esdf_server.lua`): ```lua voxel_size = 0.2, -- 基础尺寸 max_voxel_size = 1.0, -- 最大允许尺寸 gradient_threshold = 0.8 -- 触发细分的梯度阈值 ``` - **ROS节点参数** 运行时通过ROS参数服务器动态调整: ```bash rosparam set /voxblox_node/use_adaptive_voxelization true rosparam set /voxblox_node/min_voxel_size 0.05 ``` - **约束条件设置** - `max_integration_distance`:控制参与计算的测量范围 - `truncation_distance`:定义TSDF截断距离 - `weight_constant`:调整新观测值的权重影响
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

桦树无泪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值