class mp2p_icp_filters::FilterRangeBiasCorrection

Overview

Corrects, in place, a systematic surface offset of LiDAR returns that depends on range and incidence angle.

Some sensors measure surfaces slightly too near or too far, by an amount that grows with range and with the obliquity of the surface. This filter models that offset, measured along the surface normal, as:

\[d = a + b \, r + c \, \sin^2 \theta\]

with \(r\) the range from sensor_origin and \(\theta\) the angle between the viewing ray and the local surface normal. Each point is moved by \(-d\) along the normal oriented away from the sensor, so a negative \(d\) (surface measured too near) pushes the point outwards.

Normals come from the \(k\) nearest neighbors in the same cloud. Points whose neighborhood is not a well-defined plane are left untouched. The planar ones are classified as ground, slanted or wall by the vertical component of their normal in the cloud frame, and each class has its own \((a, b, c)\).

The coefficients are sensor-specific and must be calibrated; with all of them zero (the default) the filter does nothing.

YAML parameters:

pointcloud_layer: "deskewed"
sensor_origin: [0, 0, 0.124]  # sensor position in the cloud frame
ground: [0.0116, -0.00123, -0.0085]  # a [m], b [m/m], c [m]
slanted: [0.0007, -0.00058, -0.0110]
wall: [0.0044, -0.00052, -0.0172]
#include <FilterRangeBiasCorrection.h>

class FilterRangeBiasCorrection: public mp2p_icp_filters::FilterBase
{
public:
    // structs

    struct Parameters;

    // fields

    Parameters params;

    // methods

    virtual void filter(mp2p_icp::metric_map_t& inOut) const;
};

Inherited Members

public:
    // methods

    Parameterizable& operator = (const Parameterizable&);
    Parameterizable& operator = (Parameterizable&&);
    virtual void filter(mp2p_icp::metric_map_t& inOut) const = 0;
    FilterBase& operator = (const FilterBase&);
    FilterBase& operator = (FilterBase&&);

Fields

Parameters params

Algorithm parameters

Methods

virtual void filter(mp2p_icp::metric_map_t& inOut) const

See docs above for FilterBase.