Formula Student Autonomous Systems
The code for the main driverless system
Loading...
Searching...
No Matches
Himmelsbach Class Reference

Ground removal using the Himmelsbach algorithm. More...

#include <himmelsbach.hpp>

Inheritance diagram for Himmelsbach:
Inheritance graph
Collaboration diagram for Himmelsbach:
Collaboration graph

Public Member Functions

 Himmelsbach (const double grid_angle, const double max_slope, const double initial_alpha, const double alpha_augmentation_m, const double start_augmentation, TrimmingParameters trim_params)
 Constructor for Himmelsbach ground removal.
 
 Himmelsbach ()=default
 
void ground_removal (const sensor_msgs::msg::PointCloud2::SharedPtr &trimmed_point_cloud, sensor_msgs::msg::PointCloud2::SharedPtr &ground_removed_point_cloud, GroundGrid &ground_grid) const override
 Perform ground removal on a point cloud.
 

Private Member Functions

void process_slice (const sensor_msgs::msg::PointCloud2::SharedPtr &trimmed_point_cloud, sensor_msgs::msg::PointCloud2::SharedPtr &ground_removed_point_cloud, size_t slice_idx, GroundGrid &ground_grid) const
 Process a single slice for ground removal.
 
void split_point_cloud (const sensor_msgs::msg::PointCloud2::SharedPtr &input_cloud) const
 Split the input point cloud into slices and rings.
 

Private Attributes

double grid_angle_
 
double max_slope_
 
double initial_alpha_
 
double alpha_augmentation_m_
 
double start_augmentation_
 
TrimmingParameters trim_params_
 
std::shared_ptr< std::vector< Slice > > slices_
 

Detailed Description

Ground removal using the Himmelsbach algorithm.

Implements GroundRemoval interface for LiDAR point clouds.

Definition at line 32 of file himmelsbach.hpp.

Constructor & Destructor Documentation

◆ Himmelsbach() [1/2]

Himmelsbach::Himmelsbach ( const double  grid_angle,
const double  max_slope,
const double  initial_alpha,
const double  alpha_augmentation_m,
const double  start_augmentation,
TrimmingParameters  trim_params 
)

Constructor for Himmelsbach ground removal.

Parameters
grid_angleAngle increment for slicing the point cloud.
max_slopeMaximum slope angle to consider a point as ground.
initial_alphaInitial distance threshold for ground classification.
alpha_augmentation_mIncrease of alpha by meter.
start_augmentationRange at which distance threshold starts to increase.
trim_paramsParameters for trimming the point cloud.

Definition at line 3 of file himmelsbach.cpp.

◆ Himmelsbach() [2/2]

Himmelsbach::Himmelsbach ( )
default

Member Function Documentation

◆ ground_removal()

void Himmelsbach::ground_removal ( const sensor_msgs::msg::PointCloud2::SharedPtr &  trimmed_point_cloud,
sensor_msgs::msg::PointCloud2::SharedPtr &  ground_removed_point_cloud,
GroundGrid ground_grid 
) const
overridevirtual

Perform ground removal on a point cloud.

Parameters
trimmed_point_cloudInput point cloud (trimmed).
ground_removed_point_cloudOutput point cloud with ground removed.
planePlane information (not estimated by Himmelsbach, set to default).
split_paramsParameters for slicing the point cloud.

Implements GroundRemoval.

Definition at line 17 of file himmelsbach.cpp.

Here is the call graph for this function:

◆ process_slice()

void Himmelsbach::process_slice ( const sensor_msgs::msg::PointCloud2::SharedPtr &  trimmed_point_cloud,
sensor_msgs::msg::PointCloud2::SharedPtr &  ground_removed_point_cloud,
size_t  slice_idx,
GroundGrid ground_grid 
) const
private

Process a single slice for ground removal.

Parameters
trimmed_point_cloudInput point cloud (trimmed).
ground_removed_point_cloudOutput point cloud with ground removed.
slice_idxIndex of the slice to process.
ground_gridGround grid to update with ground heights.

Definition at line 50 of file himmelsbach.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ split_point_cloud()

void Himmelsbach::split_point_cloud ( const sensor_msgs::msg::PointCloud2::SharedPtr &  input_cloud) const
private

Split the input point cloud into slices and rings.

It will populate the slices_ member.

Parameters
input_cloudInput point cloud to be split.

Definition at line 182 of file himmelsbach.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ alpha_augmentation_m_

double Himmelsbach::alpha_augmentation_m_
private

Definition at line 64 of file himmelsbach.hpp.

◆ grid_angle_

double Himmelsbach::grid_angle_
private

Definition at line 61 of file himmelsbach.hpp.

◆ initial_alpha_

double Himmelsbach::initial_alpha_
private

Definition at line 63 of file himmelsbach.hpp.

◆ max_slope_

double Himmelsbach::max_slope_
private

Definition at line 62 of file himmelsbach.hpp.

◆ slices_

std::shared_ptr<std::vector<Slice> > Himmelsbach::slices_
private

Definition at line 68 of file himmelsbach.hpp.

◆ start_augmentation_

double Himmelsbach::start_augmentation_
private

Definition at line 65 of file himmelsbach.hpp.

◆ trim_params_

TrimmingParameters Himmelsbach::trim_params_
private

Definition at line 66 of file himmelsbach.hpp.


The documentation for this class was generated from the following files: