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 Jul 24, 2018 · 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

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)

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 ##### -->
Clone this wiki locally