Skip to content
This repository has been archived by the owner on Feb 15, 2022. It is now read-only.
Jorge Martínez edited this page May 2, 2019 · 24 revisions

What is this about?

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.

Batch mode (no visualization)

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

Navigation

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).

XML file structure

The following figure aims at providing a general overview to the main HELIOS xml files, their connection and their content:

HELIOS XML files

Defining own surveys

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.

Defining horizontal and vertical angular scan resolution

Horizontal and vertical angular scan resolutions control the point spacing and are defined in the survey.xml file.

Vertical resolution

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º

Horizontal resolution

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º

Point spacing

  • 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

Defining Custom Scanners

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 ##### -->

Intensity modeling

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

Setting the material reflectance from the spectral library

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.

Clone this wiki locally