enhanced-ransac-ground-segmentation
An enhanced version ground segmentation program based on RANSAC algorithm
https://github.com/mengwoods/enhanced-ransac-ground-segmentation
Science Score: 44.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (15.9%) to scientific vocabulary
Repository
An enhanced version ground segmentation program based on RANSAC algorithm
Basic Info
- Host: GitHub
- Owner: MengWoods
- License: mit
- Language: C++
- Default Branch: main
- Size: 32.9 MB
Statistics
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
- Releases: 2
Metadata Files
README.md
Enhanced RANSAC Ground Segmentation
This repository contains an enhanced, real-time ground segmentation algorithm for LiDAR point clouds.
The core of the project is a highly optimized RANSAC-based plane estimator that leverages CUDA for significant acceleration. It is designed to be a robust and performant solution for robotics and autonomous vehicle applications.
Demo
The full video below showcases the algorithm's performance on three distinct scenes from the KITTI dataset, demonstrating its stability and accuracy in highway, city, and residential environments.
(Click the image to watch on YouTube)
Key Features
- CUDA-Accelerated RANSAC: The RANSAC plane estimation is implemented in CUDA, using a parallel-collaborative kernel design for massive speedups. Processing time per frame is consistently under 10ms.
- Configurable Pre-processing: Includes filters like VoxelGrid, Box, and Statistical Outlier Removal to clean the point cloud before processing.
- Corner Case Handling: Includes logic to mitigate common real-world issues, such as the influence of vertical walls on plane estimation, based on empirical testing.
- Real-time Visualization: Uses the Point Cloud Library (PCL) for live 3D visualization of the segmented ground (green) and non-ground (white) points.
- Stable Frequency Control: The main processing loop is rate-limited, ensuring a consistent output frequency suitable for real-time systems.
- Detailed Performance Logging: Optional timers provide a frame-by-frame breakdown of the duration of each processing step for easy profiling.
Requirements
Hardware (Tested On)
- OS: Ubuntu 24.04
- GPU: NVIDIA GPU compatible with CUDA 12.0+
- NVIDIA Driver: 570.133.07
Dependencies
- GCC: 12.x (or any compiler with C++17 support)
- CUDA Toolkit: 12.0 or newer
- CMake: 3.16 or newer
- Point Cloud Library (PCL): 1.10 or newer
- YAML-CPP: For parsing the configuration file.
Performance
Here is a sample performance log from a typical run:
bash
------------------- Frame -------------------
[Timer] Box Filter: 5 ms
[Timer] Voxel Filter: 12 ms
[Timer] Noise Filter: 0 ms
[Timer] Ground Estimation: 12 ms
[Timer] Visualization: 0 ms
[Timer] Total Frame Time: 66 ms
Note: The Total Frame Time is controlled by a frequency setting in the configuration. The application will pause to maintain a consistent rate (e.g., 15 Hz or 66ms/frame), which is why the total time may be longer than the sum of the individual processing steps.
Getting Started
0. Prepare Data
The project was tested using the raw datasets from KITTI. You can download them from the official website.
The specific sequences used in the demo video are: - Road Scene: 20110926drive0101 - City Scene: 20110929drive0071 - Residential Scene: 20110930drive0033
Unzip the data and place the sequence folders in a known directory.
1. Clone the Repository
bash
git clone git@github.com:MengWoods/enhanced-RANSAC-ground-segmentation.git
2. Configure the Program
Edit the enhanced_ransac_ground_segmentation/config/config.yaml file to set the point_cloud_paths to the correct directory where your KITTI sequence is located. You can also adjust filter parameters, RANSAC iterations, and other settings here.
Update the absolute path to the configuration file in Line 5 of compile.sh
3. Run the Project
```bash
Go to the folder
cd enhanced-RANSAC-ground-segmentation/enhancedransacground_segmentation/
Run the script
bash compile.sh ```
Project Roadmap (TODO)
This project is under active development. Future enhancements include: - [x] Performance: Accelerate noise filters using OpenMP. - [ ] Segmentation Logic: - [ ] Add a third category for "negative" points (below the ground plane). - [x] Improve handling of corner cases: empty point clouds, fully occluded views, and steep slopes. - [x] Mitigate the effect of vertical walls on plane estimation. - [x] Estimation Algorithm: - [x] Implement a predictive filter (e.g., Kalman Filter) for plane coefficients to improve temporal stability. - [ ] Advanced Features: - [ ] Introduce a probability model where points closer to the sensor have a higher weight in the estimation. - [ ] Visualize this probability.
Owner
- Name: Woods
- Login: MengWoods
- Kind: user
- Repositories: 18
- Profile: https://github.com/MengWoods
My space.
Citation (CITATION.cff)
cff-version: 1.2.0
message: "If you use this software, please cite it as:"
authors:
- family-names: "Woods"
given-names: "Menghao"
title: "Enhanced RANSAC Ground Segmentation"
version: "1.0.0"
license: "MIT"
repository-code: "https://github.com/MengWoods/enhanced-RANSAC-ground-segmentation"
date-released: "2025-03-21"
GitHub Events
Total
- Release event: 1
- Watch event: 1
- Delete event: 2
- Push event: 17
- Pull request event: 3
- Create event: 6
Last Year
- Release event: 1
- Watch event: 1
- Delete event: 2
- Push event: 17
- Pull request event: 3
- Create event: 6