helios
helios copied to clipboard
Non linear legs
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
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:
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>
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.
Closing this issue, if any extensions are needed or bugs are found related to non-linear legs, a new issue shall be created.