关键词:地基激光雷达
点云模拟
XML文件
作者:李二 日期:07/05/2020 – 08/05/2020
我现在仅仅使用了TLS模式举行模拟,以是先讲一下TLS的模拟履历。
ALS和MLS的模拟,以后一定也会做一下
1. 明确模拟数据需求
在正式模拟自己的数据之前,一定要明确好自己的模拟数据需求,究竟一次TLS的模拟耗时挺长的(在尽可能贴近野外丈量参数设置条件下)。
好比我这里要做森林样方的TLS点云模拟,目的是评估差别的布站模式 scan design
的数据获取质量以及对树木参数盘算的影响,因此需求尽可能迫近野外TLS丈量时的扫描器参数设置、森林样方树木情形。
针对森林样方场景:凭据一些现有的实测森林样方树木位置、胸径、树高等信息,通过某些树木三维模子构建软件(例如
OnyxTree
)来确立树木OBJ
模子文件。
为求迫近野外样方,可制作多个差别巨细和树种的树木模子。
一种稍微讨巧的方式是,对一棵树举行缩放变换(在输入文件中设置),以获得差别胸径树高的模子。
针对扫描器参数:凭据所需
scanner
系统,在HELIOS的库中选择(好比下面的例子)或者自界说扫描器(参照所想模拟的扫描器的设置specification
即可),这些一样平常不用体贴。需要重点体贴的是一些详细的扫描参数设置configuration
:
TLS的位置
天顶扫描局限
zenith
和方位扫描局限
azimuth
扫描角度分辨率或者角度步长
angular resolution
2. 计划输入文件
令HELIOS模拟,则必须告诉其用户界说的场景是什么样的,激光扫描器是什么样的,搭载在什么平台上,在那里扫描以及扫描局限与分辨率等。
HELIOS是通过XML文件
的形式举行输入数据管理的。下图则展示了HELIOS所需要的输入文件以及功效,另有各文件之间的关联。
HELIOS的XML输入文件以及之间的关联
2.1. scene xml文件
第一步是设定场景:我们以森林样方为例,HELIOS的场景XML文件可以设定地形以及地表每棵树的obj文件以及坐标变换(
旋转
、平移
、缩放
):地形设置:平地条件下,可以接纳默认的
groundplane.obj
而无需修改。有地形条件下,可以接纳地形的obj文件(<filter type="objloader">
)或者GeoTIFF文件(如上一期所述,会自动转换为三角面片,<filter type="geotiffloader
(作者未给出例子,需要确认,mark一下))。HELIOS也支持对地形举行缩放(xml文件中filter元素下的scale
属性)树木模子设置:我们需要指定样方中每一棵树的obj模子文件路径,这与地形设置时是类似的。需要注重的是:obj模子的 轴偏向与我们常见的并不相同,需要事先用
cloudcompare
调整好偏向。不外也可以不事先调整,设置pitch
属性也没问题。小注:我建议事先调整一下,否则在
rotate
参数设置时不太直观,可参考我的提问。树木坐标变换:为了制作看上去更为真实的森林样方,我们可以对树木模子的尺寸、倾角、位置等举行变换。
通过
scale
调整模子的巨细(DART可以划分调整
三个轴的缩放比例,但HELIOS只能统一调整)
通过
translate
调整树木的三维位置。注重,当平台地表时,
;当有地形时,
需要凭据地形举行调整
通过
rotate
调整树木的旋转。包罗
yaw
,
pitch
,
roll
,这与通常的转角界说与局限是一致的。当需要直立树木时,则
(注重这是在obj文件偏向调整之后的设置)。当需要倾斜树木时,则
。
树木坐标变换后看起来更为真实
详细的设置方式可以凭据xml文件的树结构形式,自行设定。这里我提供了一个MATLAB剧本文件,可以自动化批量设置。
场景xml文件的树结构
2.2. scanner xml文件
第二步是设定扫描器: 扫描器的xml文件一样平常不需要我们分外设置,直接指定一个扫描器即可,如Riegl VZ-400。HELIOS提供了脉冲式和相位式两种类型激光扫描器可供选择。注重,不要修改库中已有的参数。
Riegl VZ-400 地基LIDAR的部门参数
若是确有需要设定其他型号的传感器,可以在xml文件中模仿已有参数自界说。
2.3. platform xml文件
第三步是设定平台:我们也不需要对平台举行分外设置,选择自己所接纳的平台即可,好比地基平台就选择
tripod
,无人机平台就选Quadrocopter
,万万不要选错了,否则扫描效果就变了。
TLS的三脚架平台属性,注重z坐标
需要注重,这里已然设定的平台的高度为1.5 m
了,因此在后面的survey文件中设定扫描器位置与高度时,需要减去这个1.5 m。好比若是想设置扫描器高度为1.7 m,则survey文件中 。
(小注:现在HELIOS在平台高度设置这里有个小bug,解决方式任何情形下都设置onGround = false
即可)
Java 经典面试题:聊一聊 JUC 下的 LinkedBlockingQueue
2.4. survey xml文件
第四步是设定丈量文件:survey文件中需要指定场景、平台、扫描器,以及TLS的位置(或ULS的航点)与扫描configuration。
扫描局限与分辨率设置
headRotateStart_deg
和
headRotateStop_deg
设置方位偏向的扫描局限,取值局限0~360°
scanAngle_deg
设置天顶偏向的扫描局限,取值0~90°,
FOV = 2 * scanAngle_deg
pulseFreq_hz
设置脉冲频率,需要参考真实扫描器的参数,不要随意修改
scanFreq_hz
设置扫描线频率,取值局限参考
canners_tls.xml
文件,扫描分辨率主要通过该参数举行调整
扫描分辨率盘算公式
方位分辨率=
headRotatePerSec_deg / scanFreq_hz
。例如:2º/s / 50Hz = 0.04º
天顶分辨率=
2 x scanAngle_deg x scanFreq_hz / pulseFreq_hz
。例如:2 x 40º x 50Hz / 100000Hz = 0.04º
小注:如想修改分辨率,在扫描局限保持稳定的情形下,修改
scanFreq_hz
详细的设置方式可以凭据xml文件的树结构形式(下图),自行设定。
survey xml文件的树结构
这里我提供了一个MATLAB剧本文件,可以自动化批量设置survey xml文件。
自动化天生scene.xml和survey.xml的MATLAB剧本
3. 执行模拟
在最先模拟之前,首先要确保输入文件路径设置准确。HELIOS推荐将survey.xml,scene.xml,*.obj等文件离开存储。
输入文件路径确保准确
一定要安装JAVA JDK才气运行哦,一些新电脑没有安装,请下载。
可视化模式
打开命令行窗口,修改至helios的目录下:
cd H:\linyuan_work\06_TLS station placement_UAV guide\helios\helios_precompiled
执行代码:
java -jar helios.jar data/surveys/survey_tls_forest_plot.xml
建议先在可视化模式下打开一次,确保场景与模拟参数设置准确,然后再用批量模式,究竟批量模式稍微快一点。
可视化窗口下有一点是需要注重的,无法通过鼠标拖动实现平移功效,由于HELIOS始终设定扫描器在窗口的中央,若是想平移可见场景部门,则可以通过移动扫描器位置来实现。
批量模式
执行代码:
java -jar helios.jar data/surveys/survey_tls_forest_plot.xml headless
4. 模拟效果查看
模拟效果分为.xyz
点云文件和.xyzfullwave.txt
波形文件。TLS情形下,波形文件一样平常不需要,可以删除。
在cloudcompare中查看模拟的点云,漂亮!
模拟的四个TLS扫描站点云的合并
5. 后记
我在思量现在的模拟软件,是否可以输出点的种别属性呢?可能也不会太难实现,好比可以将一棵树分成枝干obj文件和叶片obj文件,二者同时输入模拟软件中,在ray casting时顺便纪录三角面片的属性,这样岂不是就可以实现了。
若是有知道或者有人能做出这个功效,想必是好的,请告诉我一声。我不会java编程。
原创文章,作者:28x29新闻网,如若转载,请注明出处:https://www.28x29.com/archives/7859.html