This repository provides an implementation of High-Frequency Ground Segmentation using a RANSAC-based approach.
The method is designed to efficiently segment ground and obstacles from 3D point cloud data collected from LiDAR sensors.
This implementation is based on the following research:
➡ High-Frequency Ground Segmentation for Autonomous Mobile Robots: A RANSAC-Based Approach
![]() |
![]() |
|---|
- Uses RANSAC (Random Sample Consensus) to estimate a ground plane from point cloud data.
- Applies height filtering to refine the input data before processing.
- Segments the ground and obstacles efficiently.
- Publishes the segmented point clouds to separate ROS topics for further processing.
- Designed for high-frequency real-time applications.
Ensure you have the following installed:
- ROS (Robot Operating System)
- PCL (Point Cloud Library)
- C++ (with ROS CMake)
cd ~/catkin_ws/src
git clone https://github.com/emirhancibir/ground_segmentation.git
cd ~/catkin_ws
catkin_make
source devel/setup.bashTo start the ground segmentation node:
rosrun ground_segmentation ground_segmentation_with_ransacOr using the launch file:
roslaunch ground_segmentation ground_segmentation.launchdistance_threshold: RANSAC inlier threshold (e.g.,0.05)z_threshold: Height-based filtering threshold (e.g.,0.3)normal_angle_threshold: Minimum Z-normal alignment for valid planes (cosine of angle)
/cloud_all_fields_fullframe: Input point cloud (configurable viainput_topicparam)
/ground_points: Segmented ground points/nonground_points: Segmented obstacle points
To visualize the segmented results:
rosrun rviz rvizThen add the following PointCloud2 display topics:
/ground_points/nonground_points
- Emirhan Cıbır – @emirhancibir
This project is licensed under the MIT License.


