Implementation of the ground segmentation algorithm proposed in
@inproceedings{himmelsbach2010fast, title={Fast segmentation of 3d point clouds for ground vehicles}, author={Himmelsbach, Michael and Hundelshausen, Felix V and Wuensche, H-J}, booktitle={Intelligent Vehicles Symposium (IV), 2010 IEEE}, pages={560--565}, year={2010}, organization={IEEE} }
The linefit_ground_segmentation
package contains the ground segmentation library. A ROS interface is available in linefit_ground_segmentation_ros
The library can be compiled separately from the ROS interface if you're not using ROS.
Requires the following dependencies to be installed:
https://github.com/catkin/catkin_simple.git
sudo apt install ros-noetic-eigen-conversions
Compile using your favorite catkin build tool (e.g. catkin build linefit_ground_segmentation_ros
)
The ground segmentation ROS node can be launch by executing roslaunch linefit_ground_segmentation_ros segmentation.launch
. Input and output topic names can be specified in the same file.
Getting up and running with your own point cloud source should be as simple as:
input_topic
parameter in segmentation.launch
to your topic.sensor_height
parameter in segmentation_params.yaml
to the height where the sensor is mounted on your robot (e.g. KITTI Velodyne: 1.8m)Parameters are set in linefit_ground_segmentation_ros/launch/segmentation_params.yaml
This algorithm works on the assumption that you known the height of the sensor above ground. Therefore, you have to adjust the sensor_height
to your robot specifications, otherwise, it will not work.
The default parameters should work on the KITTI dataset.