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 in config.yaml under the ground_estimation.temporal_filter section, 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:

  1. 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.
  2. Increased Algorithm Accuracy:

    • Leveraging the massive performance gain, the number of RANSAC iterations has been safely increased from 40 to 500.
    • 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.
  3. 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.
  4. 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