SOTA fast and robust ground segmentation using 3D point cloud (accepted in RA-L'21 w/ IROS'21)
Official page of "Patchwork: Concentric Zone-based Region-wise Ground Segmentation with Ground Likelihood Estimation Using a 3D LiDAR Sensor", which is accepted by RA-L with IROS'21 option
IMPORTANT: (Aug. 18th, 2024) I employ TBB, so its FPS is increased from 50 Hz to 100 Hz! If you want to use the paper version of Patchwork for SOTA comparison purpose, Please use this ground seg. benchmark code.
Patchwork | Concept of our method (CZM & GLE) |
---|---|
It's an overall updated version of R-GPF of ERASOR [Code] [Paper].
Single hpp file (include/patchwork/patchwork.hpp
)
Robust ground consistency
As shown in the demo videos, our method shows the most promising robust performance compared with other state-of-the-art methods, especially, our method focuses on the little perturbation of precision/recall as shown in this figure.
Please kindly note that the concept of traversable area and ground is quite different! Please refer to our paper.
The code is tested successfully at
(if you use ubuntu 20.04)
sudo apt-get install ros-noetic-jsk-recognition
sudo apt-get install ros-noetic-jsk-common-msgs
sudo apt-get install ros-noetic-jsk-rviz-plugins
(if you use ubuntu 18.04)
sudo apt-get install ros-melodic-jsk-recognition
sudo apt-get install ros-melodic-jsk-common-msgs
sudo apt-get install ros-melodic-jsk-rviz-plugins
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
git clone https://github.com/LimHyungTae/patchwork.git
cd .. && catkin build patchwork
We provide four examples:
How to run Patchwork in SemanticKITTI dataset
How to run Patchwork in your own dataset
Download SemanticKITTI Odometry dataset (We also need labels since we also open the evaluation code! :)
Set the data_path
in launch/offline_kitti.launch
for your machine.
The data_path
consists of velodyne
folder and labels
folder as follows:
data_path (e.g. 00, 01, ..., or 10)
_____velodyne
|___000000.bin
|___000001.bin
|___000002.bin
|...
_____labels
|___000000.label
|___000001.label
|___000002.label
|...
_____...
roslaunch patchwork offline_kitti.launch
You can directly feel the speed of Patchwork! :wink:
We also provide rosbag example. If you run our patchwork via rosbag, please refer to this example.
roslaunch patchwork run_patchwork.launch is_kitti:=true
Then you can see the below message:
Set the data_path
in launch/kitti_publisher.launch
for your machine, which is same with the aforementioned parameter in "Offline KITTI dataset" part.
Then, run ros player (please refer to nodes/ros_kitti_publisher.cpp
) by following command at another terminal window:
roslaunch patchwork kitti_publisher.launch
Please refer to /nodes/offilne_own_data.cpp
.
(Note that in your own data format, there may not exist ground truth labels!)
Be sure to set right params. Otherwise, your results may be wrong as follows:
W/ wrong params | After setting right params |
---|---|
For better understanding of the parameters of Patchwork, please read our wiki, 4. IMPORTANT: Setting Parameters of Patchwork in Your Own Env..
Utilize /nodes/offilne_own_data.cpp
Please check the output by following command and corresponding files:
Set appropriate absolute file directory, i.e. file_dir
, in offline_ouster128.launch
roslaunch patchwork offline_ouster128.launch
It is easy by re-using run_patchwork.launch
.
<remap from="/patchwork/cloud" to="$YOUR_LIDAR_TOPIC_NAME$"/>
Note that the type subscribed data is sensor_msgs::PointCloud2
.
roslaunch patchwork run_patchwork.launch is_kitti:=false
Note that is_kitti=false
is important! Because it decides which rviz is opened. The rviz shows only estimated ground and non-ground because your own dataset may have no point-wise labels.
rosbag play $YOUR_BAG_FILE_NAME$.bag
If you use our code or method in your work, please consider citing the following:
@article{lim2021patchwork,
title={Patchwork: Concentric Zone-based Region-wise Ground Segmentation with Ground Likelihood Estimation Using a 3D LiDAR Sensor},
author={Lim, Hyungtae and Minho, Oh and Myung, Hyun},
journal={IEEE Robotics and Automation Letters},
year={2021}
}
All explanations of parameters and other experimental results will be uploaded in wiki
If you have any questions, please let me know:
shapelim at kaist dot ac dot kr
)include/label_generator
is added to make the .label
file, following the SemanticKITTI format..label
files can be directly used in 3DUIS benchmark
.label
file.elevation_thresholds
is changed to increase the usability. The meaning is explained in wiki.consensus_set_based_height_estimation()
.pub_for_legoloam
node for the pointcloud in kitti bagfile is added.
ground_estimate.msg
is addedBug in xy2theta function is fixed.
How to run
roslaunch patchwork pub_for_legoloam.launch
rosbag play {YOUR_FILE_PATH}/KITTI_BAG/kitti_sequence_00.bag --clock /kitti/velo/pointcloud:=/velodyne_points