Skip to content

Emlid Data Postprocessing (PPK)

boxanm edited this page Nov 8, 2024 · 2 revisions

This guide explains how to postprocess raw data recorded with Emlid devices. It's intended for Windows or MacOS users since Emlid Studio sadly doesn't support Linux. The data is recorded in the UBX format. Here's some description about how to use Emlid Studio.

Data postprocessing

You can also use python src/fomo_sdk/gnss_analysis/postprocess.py from fomo-sdk which will guide you through the post-processing steps. You can also check this step-by-step youtube video.

  1. First, we will obtain a corrected position of our static Emlid receiver. To do that, we need data from another GNSS antenna provided by the government. These are called continuously operating reference stations (CORS). In case of FM the nearest one is located in Quebec City and is named ATR2. To download the data in RINEX format, go to ftp://ftp.mrn.gouv.qc.ca/Public/GPS/Quebec. The filenames are structured with the station name first, followed by the day number since the start of the year, followed by the year: NNNNDDDY. For example, November 4th 2024 for Quebec City station corresponds to folder ATR3094. In this folder is a number of .zip archives, each corresponding to a time period of one hour. The specifications can be found in this file

  1. Unzip the file and open Emlid Studio. In the top left corner, select Static. The Static processing workflow allows you to obtain an accurate position of a single point. Drag and drop the file ending with O from the static receiver's logs. For the Base, use the CORS file downloaded from the FTP server. Finally, use the file ending with P from the static receiver's logs for the Navigation data. Make sure that in your settings, you have Filter type set to combined and Time format set to UTC. Press process. A file with the .pos extension should appear in the Static receiver logs folder. The file contains only one row under the header, specifying the corrected coordinates of the base stations.
  2. Now is time to process the Rover trajectories. In Emlid Studio, select Kinematics. Use the O log file for the Rover. Use the static base observation (O) file coming from the static antenna for the Base. You'll notice that the Latitude and Longitude fields got filled with values. However, these are not the corrected values we obtained earlier. So now, we need to drag and drop the .pos file from step 2 into the Latitude and Longitude field. The coordinates should get updated automatically. Use the navigation (P) file from the Rover log files and click Process. A new .pos file should appear in the Rover's log folder. A trajectory will also appear in Emlid Studio's interface. Different colors have the following meaning:
    1. 🟢 A green-colored point means the FIX solution. Precision is at the centimeter level.
    2. 🟡 A yellow-colored point means the FLOAT solution. Precision is at the meter level.
    3. 🔴 A red-colored point means the SINGLE solution. Precision is usually at the several-meter level.

  1. Repeat step 3 for the other two Emlid receivers installed on the Warthog.
  2. Place all three processed kinematics .pos files into a common folder and rename them to back.pos, front.pos and middle.pos. Now, you can call python emlid_gnss_to_rosbag -i <path> -o <output_rosbag_path> to extract the three .pos files into a ros2 bag file. You can use the -s and -e to specify the start and end timestamps to filter the data.
  3. Convert the output ros2 bag file to mcap by calling docker/convert_to_mcap.sh <output_rosbag_path>, or merge it to another rosbag using the ros2 bag convert wrapper: python ros2_bag_convert.py -i <input1> -i <output_rosbag_path> -o <merged_bag_path>
  4. Congrats! You can now open the mcap rosbag in Foxglove and visualize it using the Map panel.

Related links:

Norlab's Robots

Protocols

Templates

Resources

Grants

Datasets

Mapping

Deep Learning

ROS

Ubuntu

Docker (work in progress)

Tips & tricks

Clone this wiki locally