Livox's Reference Project
Last update: 2022-06-29
Table of Content
Overview#
The official guide and source code is hosted in livox_high_precision_mapping.
This project aims to stick geographical information into a pointcloud. The data from GNSS and INS module is used to calculate high precision position of every point captured from the Lidar. The sample project uses a Livox Mid-40 Lidar and an APX-15 GNSS-INS module.
Install and build:
cd ws_livox/src && \
git clone https://github.com/Livox-SDK/livox_high_precision_mapping.git && \
cd ws_livox && \
catkin_make && \
source ./devel/setup.sh
The system block diagram looks like below:
-
The APX-15 module sends PPS pulse to Livox, and sends GPS timestamp in GNRMC messages to the Manifold 2 computer which forwards timestamp to Livox through an Ethernet connection
-
The APX-15 module sends Trimble’s GSOF messages which contains GNSS location data and IMU information to the Manifold 2
-
The Livox Mid-40, gets PPS and GNRMC timestamp then sends pointcloud message to the Manifold 2 on the Ethernet connection
-
The Manifold2 processes GNSS, IMU and pointcloud together to create a geo-referenced pointcloud
Mapping package#
The data flow is described in the below diagram:
User configuration points:
- Turn on Timestamp Synchronization and set GNRMC input device in
livox_lidar_config.json
- Set GSOF input device in
apx15.launch
Run the mapping_online.launch
file to generate pointcloud data in the pointcloud2
format that combines the IMU pose and GNSS position:
roslaunch livox_mapping mapping_online.launch
APX-15 Node#
The APX-15 node reads GSOF messages from APX and extract the GNSS and IMU data from the Report Packet (0x40 — GENOUT).
There are 3 interesting message types:
- UTC message (ID = 16)
- INS Navigation message (ID = 49)
- INS RMS message (ID = 50)
These extracted information will be used to make 2 new messages: sensor_msgs::NavSatFix
and sensor_msgs::Imu
which are posted to the mapping node.
Mapping node#
The mapping node gets the pointcloud from the Lidar ROS driver node, the GNSS and IMU data from the APX-15 node and processes them together:
- Store pointcloud with timestamp
- Store GNSS with timestamp
- Store IMU with timestamp
- Align packets using timestamp
- Apply IMU to GNSS point, and stick geographical information to pointcloud