Purpose

Exwayz Georef aims at optimizing trajectories integrating GNSS observations, Loop Closure observations and Odometry measures for creating geo-referenced trajectories. It is based on Exwayz proprietary optimization framework.

<aside> đź’ˇ Check the 5. Georeference a SLAM session tutorial to learn easily how to geoereference trajectories. Learn also the concepts of the optimization framework in Understand the trajectory optimization process.

</aside>

Command line options

General I/O

Name Command line prefix Default value Definition
Odometry trajectory -t Required Path to odometry trajectory computed by ‣
GNSS trajectory -g Required Path to the projected GNSS trajectory (ENU coordinates)
Loop closure observations -l - Path to the loop closure observations lc_observations.yaml computed by ‣
Output path -o traj_fusion_gps.ply Output trajectory name
Initial trajectory --init - Initial trajectory used in optimization in order to help convergence

Optimization parameters

More details about “why” we need synchronization, lever arm estimation, and how we set the -s parameter are availble in Understand the trajectory optimization process.

Time offset --odometry-time-offset - Set a time offset (in seconds) to the odometry trajectory. This can be useful for compensating for a timezone offset or a leap second caused offset
Resynchronization -r - Approximate worse precision of the GNSS measures in the GNSS trajectory. We recommend never putting this value below 0.5 m, even with accurate RTK, which always over-estimtate its accuracy.
GNSS Standard error -s - Approximate worse standard error ot the GPS, in m. NB: the minimum value here shouldn’t be set under ~0.5m. It doesn’t mean that the optimized trajectory will be off by 50cm.
GNSS - LiDAR lever arm (as a file) --gps-lever-arm - Path to the lever arm, which is the GNSS phase center position in the LiDAR reference frame
GNSS - LiDAR lever arm (X component) -x - X component of the input lever arm.
Lever arm - Y -y - Y component of the input lever arm.
Lever arm - Z -z - Z component of the input lever arm.
Automatic lever arm estimation --compute-lever-arm - Enable automatic estimation of the GNSS lever arm in the LiDAR reference frame. This feature estimates the X and Y components only, the Z component is not observable most of the time because the motion is planar
Unlock the estimation of the Z component of the lever arm --compute-lever-arm-unlock-z - Enable the estimation of the Z component of the lever. This option should be enable only for non-planar motion.
Use angles in input GNSS trajectory --use-angles - If set, this option will make the solver use the vertical direction in the input GNSS trajectory to constrain the solver aligning the Odometry poses’s Z axis with the Z axis in their matched GNSS trajectory point
GNSS angles calibration to the LiDAR RF --angles-calib - Optional path the calibration of the INS in the LiDAR RF, which means the 3D pose of the INS expressed in the coordinate system of the LiDAR.
Standard error or the angles in the GNSS trajectory --angles-std-err 10.0 Estimated standard error of the angles (in degrees) in the GNSS trajectory.

Output

Exwayz Georef create an optimized trajectory in the -o file, as well as optimization residuals.

traj_fusion_gps.ply Optimized trajectory. This trajectory is in an arbitratry local coordinate system. Global coordinates can be computed by adding the .offset to all coordintates.
traj_fusion_gps.offset Offset to apply to the traj_fusion_gps.ply trajectory to get global coordinates.
residuals_gps.ply Distance between the optimized trajectory and GNSS trajectory point per point. The residuals highly depend on the quality of the GNSS measures, the synchronization, the good estimation of the lever arm and -s value.
The residuals basically indicates if the optimized points are far from their corresponding GNSS measure, it thus the right tool to check correct georeferencing.
residuals_odometry.ply Distance between the optimized trajectory and SLAM odometry trajectory point per point. The residuals here should remain really low (< 1cm), as they represent the local deformation applied to the trajectory. Deformations of multiple cm could lead to point cloud layering.
optimization.log Contains statistics about the optimization process (mean and standard error for each type of measures injected to the optimizer, processing time etc)