velodyne_lidar
Static Public Member Functions | List of all members
velodyne_lidar::ConvertHelper Class Reference

#include <pointcloudConvertHelper.hpp>

Static Public Member Functions

static void convertScanToPointCloud (const MultilevelLaserScan &laser_scan, std::vector< Eigen::Vector3d > &points, const Eigen::Affine3d &transform=Eigen::Affine3d::Identity(), bool skip_invalid_points=true, unsigned int skip_n_horizontal_scans=0, std::vector< float > *remission_values=NULL)
 
static void convertScanToPointCloud (const MultilevelLaserScan &laser_scan, std::vector< Eigen::Vector3d > &points, const Eigen::Affine3d &transform_start, const Eigen::Affine3d &transform_end, bool skip_invalid_points=true, unsigned int skip_n_horizontal_scans=0, std::vector< float > *remission_values=NULL)
 
static void horizontalBinning (const MultilevelLaserScan &laser_scan, MultilevelLaserScan &filtered_laser_scan, double angular_bin_size)
 
static void filterOutliers (const MultilevelLaserScan &laser_scan, MultilevelLaserScan &filtered_laser_scan, double max_deviation_angle, unsigned min_neighbors=1)
 
static double computeMaximumAngle (double angle_between_rays, double dist_ray_1, double dist_ray_2)
 
static void verticalClipping (const MultilevelLaserScan &laser_scan, MultilevelLaserScan &filtered_laser_scan, const base::Angle &start_angle, const base::Angle &end_angle)
 

Member Function Documentation

◆ computeMaximumAngle()

double ConvertHelper::computeMaximumAngle ( double  angle_between_rays,
double  dist_ray_1,
double  dist_ray_2 
)
static

It computes the angle alpha if (a) is the longer ray and (b) is the shorter ray. In that case the angle alpha is always the maximum angle in the triangle build by the origin and the tips of both rays.

◆ convertScanToPointCloud() [1/2]

void ConvertHelper::convertScanToPointCloud ( const MultilevelLaserScan laser_scan,
std::vector< Eigen::Vector3d > &  points,
const Eigen::Affine3d &  transform = Eigen::Affine3d::Identity(),
bool  skip_invalid_points = true,
unsigned int  skip_n_horizontal_scans = 0,
std::vector< float > *  remission_values = NULL 
)
static

Converts the multilevel laser scan into a point cloud according to the given transformation matrix. To speed up the process invalid points and a set of horizontal scans can be skipped. Skipping horizontal scans will result in loosing information. It will allways skip n horizontal scans and than convert one and so on.

◆ convertScanToPointCloud() [2/2]

void ConvertHelper::convertScanToPointCloud ( const MultilevelLaserScan laser_scan,
std::vector< Eigen::Vector3d > &  points,
const Eigen::Affine3d &  transform_start,
const Eigen::Affine3d &  transform_end,
bool  skip_invalid_points = true,
unsigned int  skip_n_horizontal_scans = 0,
std::vector< float > *  remission_values = NULL 
)
static

The transformation will be interpolated between two given transformations.

◆ filterOutliers()

void ConvertHelper::filterOutliers ( const MultilevelLaserScan laser_scan,
MultilevelLaserScan filtered_laser_scan,
double  max_deviation_angle,
unsigned  min_neighbors = 1 
)
static

This method filters outliers according to the maximum angle to each of their four (or three) direct neighbors. It mainly aims to remove outliers which arise after edges and have therefore a high angle to the next neighbor.

Parameters
laser_scaninput scan
filtered_laser_scanoutput scan
max_deviation_anglethe angle to a valid neighbor should be lower than this angle
min_neighborsminimum number of valid neighbors

◆ horizontalBinning()

void ConvertHelper::horizontalBinning ( const MultilevelLaserScan laser_scan,
MultilevelLaserScan filtered_laser_scan,
double  angular_bin_size 
)
static

Provides a binning of the horizontal scans of every vertical plane. The scans inside a bin are filtered related to the standard deviation. The average of the filtered scans is used to represent the new scan.

Parameters
laser_scaninput scan
filtered_laser_scanoutput scan
angular_bin_sizeis the horizontal bin size in radiant

◆ verticalClipping()

void ConvertHelper::verticalClipping ( const MultilevelLaserScan laser_scan,
MultilevelLaserScan filtered_laser_scan,
const base::Angle &  start_angle,
const base::Angle &  end_angle 
)
static

Clips a sub vertical range out of the scan. To vertical angles: Zero is in front, negative values go upwards and possitive values go downwards. The start angle has smaller than the end angle.

Parameters
laser_scaninput scan
filtered_laser_scanoutput scan
start_angle
end_angle

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