Pre-requisit

<aside> ☑️

For geoereferencing your SLAM session, you’ll need a projected absolute trajectory. You can extract such a trajectory from a ROS bag containing a NavSatFix topic for instance using rosbag_extract_traj.exe. Check the Extract trajectories from ROS bags to learn how to do that on the sample dataset.

We expect the extracted trajectory to be copied in the SLAM session directory

</aside>

Here we can extract the GNSS trajectory with the following commands:

rosbag_extract_traj <path/to/sample.bag> --std-max 0.1 --quality 2

This will exports GNSS measurements with standard error lower than 0.1 m and quality indicator to 2 (RTK fix).

Tutorial

Start by creating a dedicated Georeferencing subdirectory in the SLAM session (at this stage, you are supposed to be in ./slam_session_tutorial/1_loop_closure . If you are not, please catch-up by doing the previous tutorial 4. Close the loops)

mkdir ../2_georef
cd ../2_georef

The exwayz_georef.exe executable expects

<aside> ⏱️ Time synchronization : The software relies on time synchronization between the odometry trajectory and the GNSS trajectory.

</aside>

<aside> 📏 GNSS Lever arm : it is the position of the GNSS phase center in the reference frame of the LiDAR. Note that no precise georeferencing can be performed if the lever arm is not provided.

</aside>

<aside> 🦸🏻 If the trajectories are not synchronized, the -r option of the software can be used for estimating the time delay between the two trajectories (the idea is described in Understand the resynchronization) If the lever arm has not been measured, its X and Y components can be estimated using the --compute-lever-arm option

</aside>

More information about the trajectory optimization process are available in Understand the trajectory optimization process.

Run the georefeferencing with the following command

exwayz_georef -t ../traj_odometry.ply -g ../fix.ply -l ../1_loop_closure/lc_observations.yamlc -r --compute-lever-arm -s 1.0

In your console, you should see