Skip to content

soytony/Point-Cloud-Preprocessing-Tools

Repository files navigation

Point Cloud Preprocessing Tools

0. Compiling

You may need OpenCV, pcl, Eigen3 installed before compiling.

mkdir build
cd build
cmake ..
make -j8
cd ..

1. Keyframes Extractors

These binaries select keyframes based on the interval distance between two consecutive frames. You may specify the interval manually, e.g. 1 or 2, in meters. After running the binaries, you will have files organized as follows:

[keyframes_root_dir]
├ ... 
└ selected_keyframes_xxm/ 
  ├ keyframe_point_cloud/ <- folder for keyframe point clouds in pcd format
  ├ keyframe_pose.csv <- gt poses for all selected keyframes
  └ keyframe_pose_format.csv <- format for one entry in the gt poses

1.1 mulran_point_cloud_select

Extract keyframes from MulRan dataset using same spatial distance for consecutive keyframes.

Usage:
./build/mulran_point_cloud_select [dataset_root_dir] [keyframe_dist_interval](default=2)

[dataset_root_dir] should be organized as follows:
[dataset_root_dir]
├ sensor_data
│ ├ Ouster/
│ └ ouster_front_stamp.csv
└ global_pose.csv

1.2 kitti_point_cloud_select

Extract keyframes from KITTI Odometry dataset using same spatial distance for consecutive keyframes.

Usage: 
./build/kitti_point_cloud_select [dataset_root_dir] [keyframe_dist_interval](default=2)

[dataset_root_dir] should be organized as follows:
[dataset_root_dir]
├ velodyne/
├ times.txt
└ global_pose.txt

1.3 oxford_point_cloud_select

Extract keyframes from Oxford Radar RobotCar dataset using same spatial distance for consecutive keyframes.

Usage: 
./build/oxford_point_cloud_select [dataset_root_dir] [keyframe_dist_interval](default=2)

[dataset_root_dir] should be organized as follows:
[dataset_root_dir]
├ velodyne_left/
├ velodyne_left.timestamps
└ gps/
  └ ins.csv

2. Point Cloud Manipulator

2.1 cloud_manip

Apply a regid transform on a single input pcd pointcloud, and generate BEV image for both original and transformed point clouds.

Usage:

# translation (trans_x, trans_y, trans_z) in metre
# rotation on yaw axis, in degree

./build/cloud_manip [input_pcd] [trans_x] [trans_y] [trans_z] [theta]

2.2 batch_cloud_manip

Generate BEV image all point clouds within the specified keyframes folder.

Usage:
./build/batch_cloud_manip [keyframes_root_dir]

3. BEV Generator

This binary generates ground-removed point clouds, single & multi layer BEV images and creates geometric distance-based labels for each point cloud.

After running the binary, you will have files organized as follows:

[keyframes_root_dir]
├ ...
├ non_ground_point_cloud/ <- folder for ground-removes point clouds in pcd format
├ output_multi_bev/ <- folder for multi-layer BEV images
└ output_single_bev/ <- folder for single-layer BEV images

Single-layer BEV images are provided in csv and png format, and multi-layer BEV images are provided in raw binaries bin and png format.

Usage: 
./build/batch_multi_bev_gen [keyframes_root_dir] [sensor_type]

[keyframes_root_dir] should be organized as follows: 
[keyframes_root_dir]
├ keyframe_point_cloud/ <- folder for selected point clouds in pcd format for each frame
├ keyframe_pose.csv <- 6-DoF pose for each frame
└ keyframe_pose_format.csv <- 6-DoF pose format description

[sensor_type] could be HDL_32E, HDL_64E or OS1_64. 

4. Relative Pose Estimator

4.1 top_part_registration

Two-stage pose estimation using flattened 2D point clouds for a single matching pair.

Usage:

# two point clouds to be aligned: query_pcd and match_pcd. 
# initial guess for relative rotation on yaw axis, in degree. 
./build/top_part_registration [query_pcd] [match_pcd] [yaw_initial_guess]

4.2 batch_top_part_registration

Perform two-stage pose estimation on a batch of point cloud pairs.

Usage:

# need a match result text file "match_result.txt" descripting all matching pairs.
# each entry contains one matching pair: "query_idx match_idx yaw_initial_guess"
./build/batch_top_part_registration [match_result_text_file] [point_cloud_dir]

5. Data Preprocessing for FreSCo

Step 1:

Use Keyframes Extractors to extract keyframes from your datasets. 3 different extractors are provided to handle different datasets.

Step 2:

Use BEV Generator to convert the pcd-format keyframes to BEV images. The csv-format single-layer BEV images and their corresponding ground truth poses will be used in FreSCo for place retrieval and performance estimation.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages