mp2p_icp_filters library

Overview

LiDAR and point cloud segmentation and filtering algorithms.

// typedefs

typedef std::vector<FilterBase::Ptr> mp2p_icp_filters::FilterPipeline;
typedef std::vector<Generator::Ptr> mp2p_icp_filters::GeneratorSet;

// enums

enum mp2p_icp_filters::DecimateMethod;
enum mp2p_icp_filters::TimestampAdjustMethod;

// structs

struct mp2p_icp_filters::NotImplementedError;
struct mp2p_icp_filters::sm2mm_options_t;

// classes

class mp2p_icp_filters::FilterAdjustTimestamps;
class mp2p_icp_filters::FilterBase;
class mp2p_icp_filters::FilterBoundingBox;
class mp2p_icp_filters::FilterByIntensity;
class mp2p_icp_filters::FilterByRange;
class mp2p_icp_filters::FilterByRing;
class mp2p_icp_filters::FilterCurvature;
class mp2p_icp_filters::FilterDecimateAdaptive;
class mp2p_icp_filters::FilterDecimateVoxels;
class mp2p_icp_filters::FilterDecimateVoxelsQuadratic;
class mp2p_icp_filters::FilterDeleteLayer;
class mp2p_icp_filters::FilterDeskew;
class mp2p_icp_filters::FilterEdgesPlanes;
class mp2p_icp_filters::FilterMerge;
class mp2p_icp_filters::FilterNormalizeIntensity;
class mp2p_icp_filters::FilterRemoveByVoxelOccupancy;
class mp2p_icp_filters::FilterVoxelSlice;
class mp2p_icp_filters::Generator;
class mp2p_icp_filters::GeneratorEdgesFromCurvature;
class mp2p_icp_filters::GeneratorEdgesFromRangeImage;
class mp2p_icp_filters::PointCloudToVoxelGrid;
class mp2p_icp_filters::PointCloudToVoxelGridSingle;

// global functions

void mp2p_icp_filters::apply_filter_pipeline(
    const FilterPipeline& filters,
    mp2p_icp::metric_map_t& inOut,
    const mrpt::optional_ref<mrpt::system::CTimeLogger>& profiler = std::nullopt
    );

FilterPipeline mp2p_icp_filters::filter_pipeline_from_yaml(
    const mrpt::containers::yaml& c,
    const mrpt::system::VerbosityLevel& vLevel = mrpt::system::LVL_INFO
    );

FilterPipeline mp2p_icp_filters::filter_pipeline_from_yaml_file(
    const std::string& filename,
    const mrpt::system::VerbosityLevel& vLevel = mrpt::system::LVL_INFO
    );

bool mp2p_icp_filters::apply_generators(
    const GeneratorSet& generators,
    const mrpt::obs::CObservation& obs,
    mp2p_icp::metric_map_t& output,
    const std::optional<mrpt::poses::CPose3D>& robotPose = std::nullopt
    );

mp2p_icp::metric_map_t mp2p_icp_filters::apply_generators(
    const GeneratorSet& generators,
    const mrpt::obs::CObservation& obs,
    const std::optional<mrpt::poses::CPose3D>& robotPose = std::nullopt
    );

bool mp2p_icp_filters::apply_generators(
    const GeneratorSet& generators,
    const mrpt::obs::CSensoryFrame& sf,
    mp2p_icp::metric_map_t& output,
    const std::optional<mrpt::poses::CPose3D>& robotPose = std::nullopt
    );

mp2p_icp::metric_map_t mp2p_icp_filters::apply_generators(
    const GeneratorSet& generators,
    const mrpt::obs::CSensoryFrame& sf,
    const std::optional<mrpt::poses::CPose3D>& robotPose = std::nullopt
    );

GeneratorSet mp2p_icp_filters::generators_from_yaml(
    const mrpt::containers::yaml& c,
    const mrpt::system::VerbosityLevel& vLevel = mrpt::system::LVL_INFO
    );

GeneratorSet mp2p_icp_filters::generators_from_yaml_file(
    const std::string& filename,
    const mrpt::system::VerbosityLevel& vLevel = mrpt::system::LVL_INFO
    );

mrpt::maps::CPointsMap::Ptr mp2p_icp_filters::GetOrCreatePointLayer(
    mp2p_icp::metric_map_t& m,
    const std::string& layerName,
    bool allowEmptyName = true,
    const std::string& classForLayerCreation = "mrpt::maps::CSimplePointsMap"
    );

void mp2p_icp_filters::simplemap_to_metricmap(
    const mrpt::maps::CSimpleMap& sm,
    mp2p_icp::metric_map_t& outMap,
    const mrpt::containers::yaml& pipeline,
    const sm2mm_options_t& options = {}
    );

Typedefs

typedef std::vector<FilterBase::Ptr> mp2p_icp_filters::FilterPipeline

A sequence of filters

typedef std::vector<Generator::Ptr> mp2p_icp_filters::GeneratorSet

A set of generators

Global Functions

void mp2p_icp_filters::apply_filter_pipeline(
    const FilterPipeline& filters,
    mp2p_icp::metric_map_t& inOut,
    const mrpt::optional_ref<mrpt::system::CTimeLogger>& profiler = std::nullopt
    )

Applies a pipeline of filters to a given metric_map_t

FilterPipeline mp2p_icp_filters::filter_pipeline_from_yaml(
    const mrpt::containers::yaml& c,
    const mrpt::system::VerbosityLevel& vLevel = mrpt::system::LVL_INFO
    )

Creates a pipeline of filters from a YAML configuration block (a sequence). Refer to YAML file examples. Returns an empty pipeline for an empty or null yaml node. Returned filters are already initialize()’d.

bool mp2p_icp_filters::apply_generators(
    const GeneratorSet& generators,
    const mrpt::obs::CObservation& obs,
    mp2p_icp::metric_map_t& output,
    const std::optional<mrpt::poses::CPose3D>& robotPose = std::nullopt
    )

Applies a set of generators to a given input raw observation(s) and generates a metric_map_t.

The former contents on the output metric_map_t object are untouched, so calling this function several times can be used to accumulate point cloud elements from different sensors.

Returns:

true if any of the generators actually processed “obs”

GeneratorSet mp2p_icp_filters::generators_from_yaml(
    const mrpt::containers::yaml& c,
    const mrpt::system::VerbosityLevel& vLevel = mrpt::system::LVL_INFO
    )

Creates a set of generators from a YAML configuration block (a sequence). Returns an empty generators set for an empty or null yaml node. Refer to YAML file examples. Returned generators are already initialize()’d.

void mp2p_icp_filters::simplemap_to_metricmap(
    const mrpt::maps::CSimpleMap& sm,
    mp2p_icp::metric_map_t& outMap,
    const mrpt::containers::yaml& pipeline,
    const sm2mm_options_t& options = {}
    )

Utility function to build metric maps (”.mm”) from raw observations as a simple map (”.sm”). For a ready-to-use CLI application exposing this function, as well as documentation on the meaning of each argument, see sm2mm.

The former constents of outMap are cleared.