Author: | Xingguang Zhong, Yuwei Wu, Dong Wang, Qianhao Wang, Chao Xu, and Fei Gao |
---|---|
Publisher: | ICRA |
Publish year: | 2021 |
Editor: | shirley |
Last edit: | 2020.11.3 |
Abstract/摘要
本文提出了一种从复杂障碍环境高效地生成大型,无障碍的凸包空间的方法.该空间由点云直接生成,避免复杂计算和点云处理,非常适合嵌入式平台.
Instruction/介绍
III.凸包的生成
定义: 查询坐标
无序点云
目的是从生成一个不包含
中任何点的大型凸包,步骤如下:
1.从无序点云中生成不包含任何点的星型凸多面体
2.调整星型凸多面体为严格的凸包空间
A.生成无点区域
以往我们采用raycasting或三维重建的方法从点云描述环境.对于无序点云,这些方法需要较大的计算量和存储空间.因此避免使用近邻搜索,法向量计算和其他复杂操作使我们的方法更快更轻量级.
设查询坐标为原点,使用球面翻转非线性映(下式)射将
中每个
变为
(1)
由(1)可知:(2)
是二范数,R是用户定义的球半径.如图1所示,球面翻转映射将球中的点沿
射线映射到球外.
是范数的递减函数,这意味着离查询坐标点越近,它将被映射得越远。因此,可以用该映射将球内和球外的点做翻转.翻转后的点云
,逆映射如下:
(3)
为了方便理解,我们在2维空间描述.如图2,给出两个点.球面翻转后得到点
.根据公式3逆映射线段
上的点到原始空间,生成一个朝向
的曲线
.
的形状被半径R影响,在[13]中有详述.假设
空间中的点
,
是
y与
交点,所以
是
上一点.根据球体翻转递减原理,
,那么
在
范围以外.
同理是
的映射.在射线
范围内,
中没有点,那么三角形
也是空的.
如图3所示,给出查询点和原始点云图.
假设没有穿过的超平面可以让所有其他点都在
的同一侧,这意味着
点被点云包裹.
采用[14]著名quick-hull[wiki]QuickHull.pdf算法找到凸包点.是两个相邻顶点,逆映射到原始点云中为
,根据球体翻转属性,在线段
右侧没有点,那么三角
中没有点.最终组合所有边对应的三角区生成空的区域
.
B.调整为凸包
给出一种高效的将星型凸多面体调整为凸包的方法
凸多面体表达式:矩阵,
向量,
如图所示,
1.将凸多面体调整为凸壳H,H中会包含障碍点
2.将选择所有H内的点,并且将凸壳的边平移到距离凸壳最远的点上,得到无障碍凸包C
伪代码如下:
该方法不能保证获取最大的凸包区域,由于边的数量较少,实际实验中计算时间不超过0.5毫秒.
该算法简单高效,计算量最大的过程是球体翻转后的凸壳构建.在2D或3D场景,convex hull algorithm的平均复杂度是nlog(n).
源代码在论文接收后会在https://github.com/ZJU-FAST-Lab/Galaxy给出.
IV.评估
为了验证算法性能,我们使用真实环境的雷达点云数据测试算法.和IRIS算法比较生成凸包的体积及运行时间.IRIS是替代方法,过程如下:
A.使用雷达数据集测试
SLAM框架使用LIO-SAM,目的是验证算法可以在复杂环境下的范围传感器中应用.设置边界为,运行结果如下:凸包大小比IRIS小22%,计算时间只占IRIS的0.6%.