class mp2p_icp_filters::FilterDeskew
Overview
Builds a new layer with a deskewed (motion compensated) version of an input pointcloud from a moving LIDAR, where points are time-stamped.
Important notes:
The
time
field of each point is assumed to be in seconds since the begining of the scan (e.g. from 0.0 to 0.1 for 10 Hz scans).The input layer must contain a point cloud in the format mrpt::maps::CPointsMapXYZIRT so timestamps are present.
If the input layer is of a different type, or the
time
field is missing, an exception will be thrown by default, unless the optionsilently_ignore_no_timestamps
is set totrue
, in which case the input cloud will be just moved forward to the output.
#include <FilterDeskew.h> class FilterDeskew: public mp2p_icp_filters::FilterBase { public: // fields std::string input_pointcloud_layer = mp2p_icp::metric_map_t::PT_LAYER_RAW; std::string output_pointcloud_layer; std::string output_layer_class = "mrpt::maps::CPointsMapXYZI"; bool silently_ignore_no_timestamps = false; bool skip_deskew = false; mrpt::math::TTwist3D twist; // methods virtual void initialize(const mrpt::containers::yaml& c); virtual void filter(mp2p_icp::metric_map_t& inOut) const; };
Inherited Members
public: // methods virtual void initialize(const mrpt::containers::yaml& cfg_block) = 0; virtual void filter(mp2p_icp::metric_map_t& inOut) const = 0;
Fields
std::string input_pointcloud_layer = mp2p_icp::metric_map_t::PT_LAYER_RAW
An input layer, from which to read input points Points must be already in the vehicle frame.
std::string output_pointcloud_layer
The output point cloud layer name
std::string output_layer_class = "mrpt::maps::CPointsMapXYZI"
The class name for output layer if it does not exist and needs to be created
bool silently_ignore_no_timestamps = false
Whether to skip throwing an exception if the input layer does not contain timestamps.
bool skip_deskew = false
If enabled (set to true), no “de-skew” will be performed, and the input points will be just copied into the output layer.
mrpt::math::TTwist3D twist
The velocity (linear and angular) of the vehicle in the local vehicle frame. See FilterDeskew::initialize for an example of how to define it via dynamic variables.
Methods
virtual void initialize(const mrpt::containers::yaml& c)
Parameters:
params: input_pointcloud_layer: 'raw' output_pointcloud_layer: 'deskewed' # silently_ignore_no_timestamps: false # skip_deskew: false # Can be enabled to bypass deskew # These (vx,...,wz) are variable names that must be defined via the # mp2p_icp::Parameterizable API to update them dynamically. twist: [vx,vy,vz,wx,wy,wz]
virtual void filter(mp2p_icp::metric_map_t& inOut) const
See docs above for FilterBase.