-
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º
-
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 650 meters at 60 m/s of velocity with 50Hz of scan rate and FOV of 40º:
Vertical point spacing = (2 x 650m x tan(40/2)) / (100000 / 60) = 0.28 m (also kown as across track spacing)*
Horizontal point spacing = 60m/s / 60Hz = 1.0 m (also kown as along track spacing)
*In the case of a Z-shaped scan (e.g. oscilating mirror) it should be multiplied by 2 because of the current scan line definition
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 ##### -->
The intensity values are calculated using the well-kown laser radar equation.
Currently, for its calculation HELIOS takes into account the following factors:
Factor | Description | Provided by | Default |
---|---|---|---|
Transmitted energy | Transmitted optical power (watts) | HELIOS | - |
Aperture size | Receiver aperture diameter (meters) | User | 0.15 m |
Atmosphere transmission | Energy passed through aerial particles (dimensionless) | HELIOS | - |
System transmission | Energy passed after system inefficiency (dimensionless) | User | 0.99 |
Beam divergence | Increase of the beam diameter (radians) | User | 0.0003 rad |
Range | Distance to the target (meters) | HELIOS | - |
Angle of incidence | Angle of incidence to the target (radians) | HELIOS | - |
Area | Area of the target intercepting the beam (square meters) | HELIOS | - |
Reflectance | Reflectance of the target surface | User or ASTER | 50 |
Specularity | Specularity of the target surface | User | 0 |
The reflectance values of several materials can be retrieved from the ECOSTRESS spectral library (formally ASTER spectral library) instead of setting them by hand. For each material, this library provides a file specifying its reflectance for different wavelengths in range [0, 100]. HELIOS includes a small set of these spectras in the assets/spectra folder, such as asphalt, grass, wood or gray and red shingles. More spectras can be downloaded from here. In the material file (.mtl) of the desired object it is needed to add helios_spectra
followed by the name of the spectra file e.g helios_spectra grass
. Now HELIOS will select the appropriate reflectance for the material given the wavelength of the laser. If the selected wavelength is not specified in the library (as they are discrete values) the reflectance will be interpolated. If no spectra is specified in the .mtl, the reflectance will be set as 50 by default and a warning will be displayed.