-
Notifications
You must be signed in to change notification settings - Fork 41
Manual
This section contains detailed information about how to work with HELIOS and how to tweak it.
For getting information about how to quickly run HELIOS for first tests, see the HELIOS Quick start guide.
HELIOS simulations can be run without starting the GUI (e.g. for batch processing).
To start a simulation in batch mode, type
java -jar helios.jar <survey-file> headless
and start the simulation by hitting the Enter button.
<survey-file> is the absolute or relative path to a .xml survey file, for example:
java -jar helios.jar data/surveys/demo/tls_arbaro_demo.xml headless
HELIOS offers two modi for navigation: Chase mode (camera always focussing on active scan position) and free camera mode.
After starting the HELIOS GUI, use the 'Enable free camera/enable chase mode' button in the element control bar (QuickStart Guide) or the key to change between the modi.
Control the camera in free flight mode: You can use your keyboard to move the camera in a free flight mode. Use "A" to go left, "D" to go right, "W" to go forth and "S" to go back. To rotate the view, press the left mouse button and move the mouse as you want to change the camera perspective.
Control the camera in tracking mode: You can use the mouse scroll pad to move close to the scanner (scroll forward) or move away from the scanner (scroll backward).
The following figure aims at providing a general overview to the main HELIOS xml files, their connection and their content:
In the survey-.xml-file, you need to define the platform, scanner and scene by providing the path to the corresponding .xml-files. The location of different scan positions, the platform, and the scanner settings are also defined in the survey-.xml file.
Exemplary survey .xml file for a static terrestrial laser scan simulation from one scan position (leg):
<?xml version="1.0"?>
<document>
<survey name="Arbaro Demo" scene="data/scenes/demo/arbaro_demo.xml#arbaro_demo" platform="data/platforms.xml#tripod" scanner="data/scanners_tls.xml#riegl_vz400">
<leg>
<platformSettings x="0.8566228596501162" y="25.587345982284987" z="-1.1102230246251565E-16" onGround="true"/>
<scannerSettings active="true" pulseFreq_hz="100000" scanAngle_deg="50.0" scanFreq_hz="120" headRotatePerSec_deg="10.0" headRotateStart_deg="128.91550582542592" headRotateStop_deg="223.45354343073828"/>
</leg>
</survey>
</document>
Exemplary survey .xml file for a dynamic UAV-borne scan simulation with two way points (legs) which are 200 m above ground:
<?xml version="1.0"?>
<document>
<survey defaultScannerSettings="profile1" name="TLS Arbaro" scene="Scene4" platform="data/platforms.xml#quadcopter" scanner="data/scanners_als.xml#riegl_vux-1uav">
<leg>
<platformSettings x="71.6" y="145" z="200.0" onGround="false"/>
<scannerSettings active="true" pulseFreq_hz="100000" scanAngle_deg="50.0" scanFreq_hz="120" headRotatePerSec_deg="10.0" headRotateStart_deg="0.0" headRotateStop_deg="0.0"/>
</leg>
<leg>
<platformSettings x="116" y="195" z="200.0" onGround="false"/>
<scannerSettings active="true" pulseFreq_hz="100000" scanAngle_deg="50.0" scanFreq_hz="120" headRotatePerSec_deg="10.0" headRotateStart_deg="0.0" headRotateStop_deg="0.0"/>
</leg>
</survey>
</document)
A very basic Python script for generating a combined survey and scene .xml can be found here.
Horizontal and vertical angular scan resolutions control the point spacing and are defined in the survey.xml file.
Formula: 2 x scanAngle_deg
x scanFreq_hz
/ pulseFreq_hz
With
-
scanAngle_deg
: half of the FOV in degrees -
scanFreq_hz
: number of scan lines per second in hertz -
pulseFreq_hz
: number of laser pulses per second in hertz
Example for a Riegl VZ400: 2 x 40º x 50Hz / 100000Hz = 0.04º
Formula: headRotatePerSec_deg
/ scanFreq_hz
With
-
headRotatePerSec_deg
: rotation of the platform in degrees per second -
scanFreq_hz
: number of scan lines per second in hertz
Example for a Riegl VZ400: 2º/s / 50Hz = 0.04º
Formula: Point spacing = distance [m] x tan(angular resolution [deg])
-
Example for TLS:
Scanning a wall at 50 meters with vertical and horizontal angular resolutions of 0.04º and 0.02º respectively:
Vertical point spacing = 50m x tan(0.04º) = 0.0349 m
Horizontal point spacing = 50m x tan(0.02º) = 0.0174 m -
Example for ALS:
Scanning flat ground at 955 meters at 100 m/s of velocity with 200Hz of scan rate with vertical angular resolution of 0.03º:
Vertical point spacing = 955m x tan(0.03º) = 0.5 m (also kown as across track spacing)
Horizontal point spacing = 100m/s / 200Hz = 0.5 m (also kown as along track spacing)
Custom scanners are defined in XML, just like surveys. Several scanners are pre-defined in file /data/scanners.xml.
Example for a .xml scanner definition:
<!-- ##### BEGIN RIEGL VZ-1000 ##### -->
<scanner id = "riegl_vz1000"
accuracy_m = "0.005"
beamDivergence_rad = "0.0003"
headRotatePerSecMax_deg = "60"
name = "RIEGL VZ-1000"
optics = "rotating"
pulseFreqs_Hz = "70000,300000"
pulseLength_ns = "4"
rangeMin_m = "2.5"
scanAngleMax_deg = "123"
scanAngleEffectiveMax_deg = "50"
scanFreqMin_Hz = "3"
scanFreqMax_Hz = "120"
visModel = "scanners/vz400/vz400.obj"
/>
<!-- ##### END RIEGL VZ-1000 ##### -->