关键词:LiDAR 激光雷达
点云模拟
做者:李二 日期:06/05/2020 - 07/05/2020node
写在前面:我前段时间的一个工做(
地基激光雷达TLS的新型布站策略
)须要用到模拟的TLS点云数据来验证新型布站模式的性能,所以须要找一个LiDAR模拟平台来完成以上任务。ios
据我所知,目前典型的经常使用的两个模拟平台是:git
这两个软件我都用过,并准备分享一下经验,最近新学习的HELIOS,那就先分享HELIOS吧github
近些年,随着计算机算力的提升,遥感
中各类计算机模拟软件层出不穷。其实LiDAR模拟软件每每是用于如下场景的:web
做者在他会议论文总结了一些相关历史工做,发现之前的研究主要存在以下几个不足:算法
2.5D
高程图来模拟ALS数据,缺乏对场景详细几何结构的描述
thin line
),而是存在
beam divergence
,即锥形束
德国海德堡大学(Heidelberg University)
Bernhard Höfle
教授团队的工程师Sebastian Bechtold
(主要做者) 开发的HELIOS
则具备以下特色(a flexible multi-purpose simulation framework):数据结构
HELIOS是Java写的,固然支持Windows, Linux和 Mac OS操做系统。它的软件结构比较直观,以下图所示。编辑器
platform
主要用于控制scanner
的位置
和方位
,用户能够选择平台类型诸如航空或地面平台,对于运动平台还能够设置speed
。ide
平台类型包含:svg
小注:Platform模块并不能定义行动路径,其仅能控制平台怎样移动,但却不能控制平台向哪里移动(这在survey playback模块中进行)。
Scene
模块有两个核心功能:
场景创建:根据输入的场景文件,构建三维场景模型。
通常而言,场景是由
三角面片 triangle mesh
构建的(即输入多个obj模型,其具备详细的几何结构信息),每一个三角面片均在*.mtl文件中定义了其物理属性(如反射率
),*.obj
文件会对*.mtl
文件中的属性值进行索引。
求交计算:根据
扫描原点 origin
、激光射线向量 ray vector
、场景几何 scene geometry
,来快速计算激光线与场景的交点。这就是所谓的光线投射 ray casting(也能够称为光线追踪 ray tracing
)。一般激光雷达每秒钟的脉冲数量可达百万,所以须要极为快速的光线投射计算。限制计算速度的主要是如何肯定一条激光射线向量与场景中那一个三角面片上的点相交,所以须要进行搜索,通常采用
KD-Tree
这种数据结构算法。
小注:这里的几个图片都是来自于我师兄漆建波 博士
的博士论文,他算是遥感圈很承认的作计算机模拟模型作的很好的青年学者了。这些理论比较相通,刚好他的图很直观,因而借过来一用,感谢慷慨。
关于光线追踪/光线投射的一些具体内容,不妨看一下漆建波博士的论文
Scanner
模块主要有三项任务:
HELIOS有四类扫描模式(scan pattern)可供选择:
Rotating mirror (parallel scan lines) Fiber array (parallel scan lines) Oscillating mirror (“zig-zag” scan pattern) Conic mirror (elliptical scan pattern, a.k.a. “Palmer scan”)
beam divergence的模拟:用多条光线投射
multiple raycasting queries
来近似激光锥形束。通常而言,以锥形束中心为圆心,能够设置不一样的数量的圆圈来控制
采样质量
。
full waveform 全波形的模拟:对锥形束中每条采样光线执行光线投射,若是光线与三角面片相交,则记录
surface incidence angle
和该面片的物理性质。波形的计算有点复杂,我还没搞清楚,挖个坑,回头填上吧。
点云输出:HELIOS经过应用回波检测算法,诸如
peak detection
和Gaussian decomposition
来导出点云。
Loading assets
模块其实就负责导入数据。它支持:
读取输入场景文件中的坐标空间变换,包含平移 translate
、旋转 rotate
、缩放 scale
三个要素。
Visualization
模块提供了实时交互功能,虽然目前看起来比较粗糙,可是依然颇有用。根据可视化,能够断定测站、结构等是否正确,断定扫描方式是否如预期,发现模拟代码是否有问题等等。
下一期咱们具体看一下如何实际使用HELIOS模拟本身想要的数据。
其实咱们RAMM研究小组早就有人在用HELIOS,只是我一直用DART比较习惯,并且这篇TLS布站论文中也一直用DART模拟点云。目前审稿人让增长新的international benchmarking数据,而手头又没有在法国时那么powerful的电脑了,又经漆建波博士推荐,就学习了HELIOS。
我查了一下文献,目前国内外用HELIOS的还很少,因而想着总结一下经验,与你们分享。