Fawkes API
Fawkes Development Version
|
Laser data filter. More...
#include "filter.h"
Classes | |
class | Buffer |
Laser data buffer. More... | |
Public Member Functions | |
LaserDataFilter (const std::string filter_name, unsigned int in_data_size, std::vector< Buffer *> &in, unsigned int out_size) | |
Constructor. More... | |
virtual | ~LaserDataFilter () |
Virtual empty destructor. More... | |
virtual std::vector< Buffer * > & | get_out_vector () |
Get filtered data array. More... | |
virtual void | set_out_vector (std::vector< Buffer *> &out) |
Set filtered data array. More... | |
virtual unsigned int | get_out_data_size () |
Get size of filtered data array. More... | |
virtual void | filter ()=0 |
Filter the incoming data. More... | |
void | set_array_ownership (bool own_in, bool own_out) |
Set input/output array ownership. More... | |
bool | owns_in () const |
Check if input arrays are owned by filter. More... | |
bool | owns_out () const |
Check if output arrays are owned by filter. More... | |
Protected Member Functions | |
virtual void | set_out_data_size (unsigned int data_size) |
Resize output arrays. More... | |
void | reset_outbuf (Buffer *b) |
Resets all readings in outbuf to NaN. More... | |
void | copy_to_outbuf (Buffer *outbuf, const Buffer *inbuf) |
Copies the readings from inbuf to outbuf. More... | |
Protected Attributes | |
const std::string | filter_name |
Name of the specific filter instance. More... | |
unsigned int | out_data_size |
Number of entries in output arrays. More... | |
unsigned int | in_data_size |
Number of entries in input arrays. More... | |
std::vector< Buffer * > | in |
Vector of input arrays. More... | |
std::vector< Buffer * > | out |
Vector of output arrays. More... | |
Laser data filter.
With this interface laser filter are described. These filters take laser readings as input, mangle them and return a new array of filtered laser data.
LaserDataFilter::LaserDataFilter | ( | const std::string | filter_name, |
unsigned int | in_data_size, | ||
std::vector< Buffer *> & | in, | ||
unsigned int | out_size | ||
) |
Constructor.
filter_name | name of this filter instance |
in_data_size | number of entries input value arrays |
in | vector of input arrays |
out_size | number of value arrays to generate in out vector |
Definition at line 77 of file filter.cpp.
References out, and out_data_size.
|
virtual |
|
protected |
Copies the readings from inbuf to outbuf.
Requires out_data_size to be equal to in_data_size.
inbuf | array of in_data_size (= out_data_size) readings |
outbuf | array of out_data_size (= in_data_size) readings |
Definition at line 199 of file filter.cpp.
References in_data_size, out_data_size, and LaserDataFilter::Buffer::values.
Referenced by LaserMinMergeDataFilter::filter().
|
pure virtual |
Filter the incoming data.
Function shall filter the data in the "in" member vector and write output to the "out" member vector.
Implemented in LaserMapFilterDataFilter, LaserMinMergeDataFilter, LaserProjectionDataFilter, LaserDataFilterCascade, LaserDeadSpotsDataFilter, LaserCircleSectorDataFilter, Laser1080to360DataFilter, Laser720to360DataFilter, LaserMaxCircleDataFilter, LaserMinCircleDataFilter, and LaserReverseAngleDataFilter.
Referenced by LaserFilterThread::loop().
|
virtual |
Get size of filtered data array.
Definition at line 176 of file filter.cpp.
References out_data_size.
Referenced by LaserDataFilterCascade::add_filter(), and LaserFilterThread::init().
|
virtual |
Get filtered data array.
Definition at line 116 of file filter.cpp.
References out.
Referenced by LaserDataFilterCascade::add_filter(), and LaserFilterThread::init().
|
inline |
|
inline |
|
protected |
Resets all readings in outbuf to NaN.
outbuf | array of out_data_size |
Definition at line 186 of file filter.cpp.
References out_data_size, and LaserDataFilter::Buffer::values.
Referenced by LaserCircleSectorDataFilter::filter().
void LaserDataFilter::set_array_ownership | ( | bool | own_in, |
bool | own_out | ||
) |
Set input/output array ownership.
Owned arrays will be freed on destruction or when setting new arrays.
own_in | true to assign ownership of input arrays, false otherwise |
own_out | true to assign ownership of output arrays, false otherwise |
Definition at line 216 of file filter.cpp.
Referenced by LaserDataFilterCascade::LaserDataFilterCascade().
|
protectedvirtual |
Resize output arrays.
A side effect is that the output array size will be owned afterwards. Call this method only in constructors! Note that the output arrays are only recreated if own by the filter. If you passed an out vector you have to make sure the contained arrays fit (before calling set_out_vector()!).
data_size | number of entries in output arrays. |
Definition at line 157 of file filter.cpp.
References out, and out_data_size.
Referenced by Laser1080to360DataFilter::Laser1080to360DataFilter(), and Laser720to360DataFilter::Laser720to360DataFilter().
|
virtual |
Set filtered data array.
out | vector of output values. The vector is only accepted if it has the same size as the current one. The filter will now longer assume ownership of the arrays in the vector. Either free the memory or call set_array_ownership(). |
Reimplemented in LaserDataFilterCascade.
Definition at line 129 of file filter.cpp.
References out.
Referenced by LaserFilterThread::init(), and LaserDeadSpotsDataFilter::LaserDeadSpotsDataFilter().
|
protected |
Name of the specific filter instance.
Definition at line 72 of file filter.h.
Referenced by LaserMinMergeDataFilter::filter().
|
protected |
Vector of input arrays.
Each entry in the vector is an array of data_size entries. It depends on the filter how multiple inputs are processed.
Definition at line 75 of file filter.h.
Referenced by Laser1080to360DataFilter::filter(), Laser720to360DataFilter::filter(), LaserMaxCircleDataFilter::filter(), LaserMinCircleDataFilter::filter(), LaserReverseAngleDataFilter::filter(), LaserCircleSectorDataFilter::filter(), LaserDeadSpotsDataFilter::filter(), LaserProjectionDataFilter::filter(), LaserMinMergeDataFilter::filter(), LaserMapFilterDataFilter::filter(), LaserDataFilterCascade::LaserDataFilterCascade(), and ~LaserDataFilter().
|
protected |
Number of entries in input arrays.
Definition at line 74 of file filter.h.
Referenced by copy_to_outbuf(), LaserReverseAngleDataFilter::filter(), LaserMaxCircleDataFilter::filter(), LaserMinCircleDataFilter::filter(), LaserCircleSectorDataFilter::filter(), LaserDeadSpotsDataFilter::filter(), LaserProjectionDataFilter::filter(), LaserDataFilterCascade::LaserDataFilterCascade(), and LaserDeadSpotsDataFilter::LaserDeadSpotsDataFilter().
|
protected |
Vector of output arrays.
Each entry in the vector is an array of data_size entries. It depends on the filter how multiple outputs are generated.
Definition at line 76 of file filter.h.
Referenced by LaserDataFilterCascade::add_filter(), Laser1080to360DataFilter::filter(), LaserReverseAngleDataFilter::filter(), Laser720to360DataFilter::filter(), LaserMaxCircleDataFilter::filter(), LaserMinCircleDataFilter::filter(), LaserCircleSectorDataFilter::filter(), LaserProjectionDataFilter::filter(), LaserMinMergeDataFilter::filter(), LaserMapFilterDataFilter::filter(), get_out_vector(), LaserDataFilter(), LaserDataFilterCascade::LaserDataFilterCascade(), LaserDeadSpotsDataFilter::LaserDeadSpotsDataFilter(), set_out_data_size(), set_out_vector(), and ~LaserDataFilter().
|
protected |
Number of entries in output arrays.
Definition at line 73 of file filter.h.
Referenced by LaserDataFilterCascade::add_filter(), copy_to_outbuf(), LaserReverseAngleDataFilter::filter(), LaserMaxCircleDataFilter::filter(), LaserMinCircleDataFilter::filter(), LaserCircleSectorDataFilter::filter(), LaserProjectionDataFilter::filter(), LaserMapFilterDataFilter::filter(), LaserMinMergeDataFilter::filter(), get_out_data_size(), LaserDataFilter(), LaserDataFilterCascade::LaserDataFilterCascade(), LaserDeadSpotsDataFilter::LaserDeadSpotsDataFilter(), LaserProjectionDataFilter::LaserProjectionDataFilter(), reset_outbuf(), and set_out_data_size().