Recent Releases of enhanced-ransac-ground-segmentation
enhanced-ransac-ground-segmentation - Add Kalman Filter and Optimize Noise Filter with OpenMP
Description:
This pull request introduces two major enhancements to the processing pipeline, significantly improving both performance and the stability of the ground plane estimation.
1. Noise Filter Optimization with OpenMP:
The single-threaded pcl::StatisticalOutlierRemoval was identified as a major CPU bottleneck in the pre-processing stage. To address this, it has been replaced with a custom, parallel implementation of the statistical outlier removal filter using OpenMP.
- This new version effectively utilizes multiple CPU cores to process the point cloud in parallel.
- It drastically reduces the time spent on noise filtering, resolving a key performance issue and making the entire pipeline more efficient.
2. Kalman Filter for Temporal Smoothing:
A KalmanFilter has been implemented and integrated as a more advanced alternative to the moving average buffer for smoothing the RANSAC output.
- The filter tracks the four coefficients of the ground plane over time, providing a predictive and more responsive estimate. This is especially effective in dynamic scenarios with bumpy terrain or sharp steering.
- The choice between the
"moving_average"and"kalman_filter"is now fully configurable inconfig.yamlunder theground_estimation.temporal_filtersection, allowing for easy experimentation and tuning.
These changes make the system faster, more robust, and more flexible. The Kalman filter provides a superior method for maintaining a stable ground plane, while the OpenMP optimization removes a critical performance bottleneck.
- C++
Published by MengWoods 8 months ago
enhanced-ransac-ground-segmentation - Version 1.0.0: CUDA RANSAC based Point Cloud Ground Segmentation
Key Changes & Improvements:
CUDA-Accelerated RANSAC Kernel:
- The core RANSAC plane estimation has been re-written in CUDA.
- Implemented a parallel-collaborative kernel design where threads work together to count inliers, replacing the previous, redundant approach.
- Result: Reduced the ground estimation processing time from 50-150ms down to consistently under 10ms, achieving a >10x speedup.
Increased Algorithm Accuracy:
- Leveraging the massive performance gain, the number of RANSAC iterations has been safely increased from
40to500. - This significantly improves the statistical probability of finding the optimal ground plane, leading to much more stable and accurate segmentation, especially in complex urban and residential scenes.
- Leveraging the massive performance gain, the number of RANSAC iterations has been safely increased from
Stable Frequency Control:
- The main processing loop now includes a rate-limiter to run at a consistent frequency (e.g., 15 Hz), preventing it from consuming unnecessary CPU cycles and ensuring predictable behavior for downstream robotics systems.
Robust Estimation & Fallback:
- The ground estimation module now uses a moving average buffer as a safety net. If a valid plane cannot be estimated in a given frame, the system provides a stable average from recent history instead of failing.
Testing:
- Successfully benchmarked on KITTI sequences for highway, city, and residential scenarios.
- The instability and inaccuracies previously observed in the city (
0071) and residential (0033) scenes have been resolved. - The algorithm now performs robustly across all tested environments.
- C++
Published by MengWoods 8 months ago