Skip to content

Lidar-Lidar calibration#

Overview#

In this tutorial, we will explain lidar-lidar calibration over the mapping-based calibrator of TIER IV's CalibrationTools.

Warning

Please obtain the initial calibration results from the Manual Calibration section. This is crucial for obtaining accurate results from this tool. We will utilize the initial calibration parameters that were calculated in the previous step of this tutorial. To apply these initial values in the calibration tools, please update the calibration files in the config/ folder of your sensor kit description package.

We need a sample bag file for the lidar-lidar calibration process which includes raw lidar topics. Also, we recommend using an outlier-filtered point cloud for mapping because this point cloud includes a cropped vehicle point cloud. Therefore, vehicle points are not included in the map. When you start the bag recording, you should not move the vehicle for the first 5 seconds for better mapping performance. The following shows an example of a bag file used for this calibration:

ROS 2 Bag example of our calibration process for tutorial_vehicle
Files:             rosbag2_2023_09_05-11_23_50_0.db3
Bag size:          3.8 GiB
Storage id:        sqlite3
Duration:          112.702s
Start:             Sep  5 2023 11:23:51.105 (1693902231.105)
End:               Sep  5 2023 11:25:43.808 (1693902343.808)
Messages:          2256
Topic information: Topic: /sensing/lidar/front/pointcloud_raw | Type: sensor_msgs/msg/PointCloud2 | Count: 1128 | Serialization Format: cdr
                   Topic: /sensing/lidar/top/pointcloud | Type: sensor_msgs/msg/PointCloud2 | Count: 1128 | Serialization Format: cdr

Mapping-based lidar-lidar calibration#

The mapping lidar makes a pointcloud map, and the calibrator registers the point clouds of the other lidars to this map. The mapping lidar will be used for mapping purposes, but it will not be calibrated. We can consider this lidar as the main sensor for our hardware architecture. Therefore, other lidars will be calibrated with respect to the mapping lidar (main sensor).

Launching the calibrator#

Source your Autoware workspace and start the sensor calibration manager:

ros2 run sensor_calibration_manager sensor_calibration_manager

Select default_project as the project and mapping_based_lidar_lidar_calibrator as the calibrator, and click Continue. Then set the launch arguments for your sensor kit:

ArgumentDescriptionValue for tutorial_vehicle
mapping_lidar_frameThe frame of the mapping lidarrs_helios_top
mapping_pointcloudThe point cloud topic of the mapping lidar/sensing/lidar/top/pointcloud
calibration_lidar_framesThe frames of the lidars to calibrate[rs_bpearl_front]
calibration_pointcloud_topicsThe point cloud topics of the lidars to calibrate, same order[/sensing/lidar/front/pointcloud_raw]
mapping_registratorThe registration method of the mapping: ndt or gicpndt
base_frameThe base frame of the vehiclebase_link

Click Launch. RViz starts with the calibrator. You can save your RViz configuration for later use.

The calibrator needs the tf of your vehicle and sensors. The bag does not give it, because the command below remaps the tf topics of the bag. In another terminal, publish the tf with tier4_vehicle_launch, as on the manual calibration page:

ros2 launch tier4_vehicle_launch vehicle.launch.xml vehicle_model:=<OWN-VEHICLE-MODEL> sensor_model:=<OWN-SENSOR-KIT> launch_vehicle_interface:=false use_sim_time:=true

Then play ROS 2 bag file:

ros2 bag play <rosbag_path> --clock -r 0.2 \
--remap /tf:=/null/tf /tf_static:=/null/tf_static # if tf is recorded

When the tf frames and the calibration service are available, click the Calibrate button of the sensor calibration manager.

Lidar-lidar calibration process with mapping-based calibrator#

The calibration step consists of two phases: mapping and calibration. At the bag starts playing, then mapping starts as well as the rviz2 screenshot below.

mapping-based-calibration

So, red arrow markers indicate poses during mapping, green arrow markers are special poses taken uniformly, and white points indicate the constructed map.

Mapping halts either upon reaching a predefined data threshold or can be prematurely concluded by invoking this service:

ros2 service call /stop_mapping std_srvs/srv/Empty

After the mapping phase of calibration is completed, then the calibration process will start. After the calibration is completed, then you should rviz2 screen like the image below:

mapping-based-calibration-result

The red points indicate pointcloud that initial calibration results of previous section. The green points indicate aligned point (calibration result).

The sensor calibration manager shows the result in the Calibration tree and Final TF tree widgets. Click Save calibration to save the result to a file. The result is the transformation from mapping_lidar_frame to each lidar in calibration_lidar_frames. Before you write it to sensor_kit_calibration.yaml, convert it to the transformation from sensor_kit_base_link to the base frame of the lidar (for example rs_bpearl_front_base_link). Use the other transformations of your tf tree for this conversion.

Here is the video for demonstrating the mapping-based lidar-lidar calibration process on tutorial_vehicle. The video shows an earlier version of CalibrationTools, so the windows look different.