helios icon indicating copy to clipboard operation
helios copied to clipboard

Non linear legs

Open albertoesmp opened this issue 3 years ago • 3 comments

Problem At the moment, HELIOS++ supports platform trajectory specification through linear legs. In consequence, it is not possible to specify a curved trajectory without splitting it into multiple small legs.

Solution Implement leg trajectory specification through multiple points sorted over time. Thus, giving a set of (t, x, y, z) that describe a curve, the leg can be automatically built and handled by HELIOS++

Tasks

  • [x] Interpolation from points over time
  • [ ] Support non linear legs with constant velocity
  • [ ] Compute frontier points for non linear legs with non constant velocity
  • [ ] Support non linear legs with acceleration/deceleration
  • [x] Support splitting of interpolated trajectories
  • [x] Slope filtering for trajectory interpolation data (if needed for big trajectory files)
  • [x] Sort of trajectory interpolation data (if unsorted matrices must be supported)
  • [x] Flag to synchronize starting GPS time
  • [x] Flag to specify if angles are given either as radians or as degrees
  • [ ] support different column separators (space, semicolon, etc.) using a parameter separator

albertoesmp avatar Feb 08 '22 14:02 albertoesmp

Addition In addition to (t, x, y, z) typical trajectory files also have roll, pitch and yaw angles. The order can be different, depending on the system vendor, and should be freely definable. Also see https://opals.geo.tuwien.ac.at/html/stable/ModuleDirectGeoref.html#dirgeoref_trajectory_file

Sample file A 20 MB example trajectory file follows below:

BR05_trajectory.txt

lwiniwar avatar Feb 10 '22 13:02 lwiniwar

Subset of given trajectory To separate individual flight strips, it would be good to have the option to define a filter when loading the trajectory. Usage example (tStart and tEnd are optional):

<leg>
	<platformSettings trajectory="traj01.trj" tStart="413814.3" tEnd="413982.1" template="platform1"/>
	<scannerSettings template="scanner1" />
</leg>
<leg>
	<platformSettings trajectory="traj01.trj" tStart="417123.5" tEnd="419000"  template="platform1"/>
	<scannerSettings template="scanner1" />
</leg>

Other optional parameters can give the column ids, similar to the DetailedVoxels:

<platformSettings trajectory="traj01.trj" tStart="413814.3" tEnd="413982.1">
<param type="int" key="tIndex" value="3" />
<param type="int" key="xIndex" value="0" />
<param type="int" key="yIndex" value="1" />
<param type="int" key="zIndex" value="2" />
<param type="int" key="rollIndex" value="4" />
<param type="int" key="pitchIndex" value="5" />
<param type="int" key="yawIndex" value="6" />
</platformSettings>

lwiniwar avatar Feb 10 '22 13:02 lwiniwar

Currently, the trajectory file is expected as a comma separated file. We should have an option separator which allows specifying different separators, like for the xyzloader of the scene XML.

han16nah avatar May 05 '22 05:05 han16nah

Closing this issue, if any extensions are needed or bugs are found related to non-linear legs, a new issue shall be created.

han16nah avatar Dec 29 '23 11:12 han16nah