Generating a log of the Vision-RTK 2
Introduction
We use our custom data format '.fpl' for our internal recordings, allowing us to encrypt internal information selectively and provide ROS messages directly to the user. Alongside this file format, we provide tools to extract ROS bags and other data from it.
The recording can be performed at the following three locations (targets):
Internal disk built into the sensor
External disk connected to USB-C port. The minimum write speed must be 100 MB/s. This method is not recommended as it can degrade sensor performance.
Download the log file in real-time using standard HTTP over Ethernet. This is the preferred method but needs a stable and reliable Ethernet connection and a client (e.g., web browser, curl).
Recording via ‘Download’ is available since 2.85.3.
Although the external disk method supports USB sticks and HDD, we recommend using an SSD, as the writing speeds advertised in some of these commercial devices differ from the actual speeds, creating gaps in the recorded data stream.
There are four logging profiles ("levels"):
Maximal recording: Largest files, records all data. This contains all data, which we can use to fully reprocess the trajectory. The data rate is approx. 4.2 MiB/s.
Medium recording: Larger files, but does not record all data (for example, camera image is only recorded at 2 Hz). We can still do most of the reprocessing. The data rate is approx. 0.8 MiB/s.
Minimal recording: Smallest files, all important data except for the camera image is recorded. Reprocessing is possible. The data rate is approx. 0.4 MiB/s.
Camera calibration: This records the data necessary for camera calibration.
Debug logs: System log used to identify issues when a recording is unavailable.
Some differences to the old recording (prior to 2.102.2):
The Minimal recording now includes all data except the camera image data.
Some differences to the old recording (prior to 2.85.3):
The Minimal recording now includes the raw GNSS data.
The Medium recording now includes throttled camera images (~2 Hz).
Minimal, Medium, and Maximum now include the output messages, such as FP_A-ODOMETRY (all configured/enabled messages).
The recording now stops when the disk is full. There is no automatic rollover or rotation of older data.
There is now a (Linux command-line) utility for customers to extract a ROS data from the ‘.fpl’ file. See fpltool for more information. For a list of available topics, please refer to the table at the bottom of this page.
Logging interfaces
There are three ways of starting and stopping the recording process:
Using the Web-Interface
Using the respective API commands
Using the record.py to log via Download, see example below. This feature is part of the overall Fixposition SDK.
Log to disk
Recording to internal disk

Log to network (download, command-line)
Network (download) using recording script (see record.py)

Network (download) recording CLI.

Log to network (download, using browser)
The success of this heavily depends on the browser, the operating system and their configuration.
Network (download) recording using web browser

Web interface alerts
There are a couple of alerts that can show:
Recording alerts

This is extra debugging information that can be enabled via Advanced Options.
This shows if there are any errors detected during logging.
This goes away once time is synced (compare display in System -> Info -> Time synchronization)
When logging location is network, some profiles may not be available on certain network connections.
This shows when network logging is selected but the user is not connected via Ethernet. While some profiles are allowed over Wi-Fi, it is clearly not recommended to do so.
This only shows when the external disk is selected.
The selected disk is (too) full and active logging automatically stops and no further logging can be started until some disk space has been freed up.
Available topics in the .fpl recording
This list is not limited to just these topics and can be expanded at any point.
ROS topic | Message type | Content |
---|---|---|
/camera/lowres/image | sensor_msgs/Image | Camera feed from the sensor. |
/fusion_optim/keyframes | fusion_optim_msgs/Keyframe | Selected image frames for post-processing (reserved for future use). |
/fusion_optim/odometry | nav_msgs/Odometry | Internal odometry from the Fusion engine in the POI frame using ECEF coordinates. It will operate at a different frequency than the selected I/O configuration. |
/fusion_optim/ws_factor | fixposition_msgs/WheelSpeedFactors | Estimated wheelspeed scale factor for each configured external sensor. |
/gnss[1,2]/raw | fixposition_msgs/RawGnss | Raw GNSS[1,2] measurements. |
/gnss[1,2]/status | fixposition_msgs/GnssStatus | Status of the GNSS[1,2] receiver. |
/imu/data | sensor_msgs/Imu | Raw IMU measurements. |
/imu/temp | sensor_msgs/Temperature | Reported IMU temperature. |
/ntrip/info | fixposition_msgs/NtripInfo | Status of the NTRIP client. |
/ntrip/latency | fixposition_msgs/GnssLatency | Latency in the connection to the NTRIP client. |
/ntrip/raw | fixposition_msgs/RawGnss | Raw RTCM3/SPARTN messages received from the NTRIP client. |
/tf | tf2_msgs/TFMessage | Active transformations between relevant reference frames. |
/tf_static | tf2_msgs/TFMessage | Static transformations between relevant reference frames. |
/user_io/out/enu_odometry | nav_msgs/Odometry | Odometry from the Fusion engine in the POI frame using ENU coordinates. It will operate at the selected I/O frequency. |
/user_io/out/poi_geodetic | fixposition_msgs/PoseTwistWithVarStamped | Odometry from the Fusion engine in the POI frame using LLH coordinates. It will operate at the selected I/O frequency. |
/user_io/out/poi_odometry | nav_msgs/Odometry | Odometry from the Fusion engine in the POI frame using ECEF coordinates. It will operate at the selected I/O frequency. |
/user_io/out/poi_smooth_odometry | nav_msgs/Odometry | Smoothed-out odometry from the Fusion engine in the POI frame using ECEF coordinates. It will operate at the selected I/O frequency. |
/user_io/status | fixposition_msgs/UserIoStatus | Status of the sensor’s I/O. |
/userio/raw | std_msgs/UInt8MultiArray | Output from the configured I/O messages. |
/wheels/data | fixposition_msgs/WheelSpeedArray | Received wheelspeed messages. |