Fawkes API
Fawkes Development Version
|
Laser data filter. More...
#include "filter.h"
Classes | |
class | Buffer |
Laser data buffer. More... | |
Public Member Functions | |
LaserDataFilter (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 0.0. More... | |
void | copy_to_outbuf (Buffer *outbuf, const Buffer *inbuf) |
Copies the readings from inbuf to outbuf. More... | |
Protected Attributes | |
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 | ( | unsigned int | in_data_size, |
std::vector< Buffer * > & | in, | ||
unsigned int | out_size | ||
) |
Constructor.
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 70 of file filter.cpp.
References in, in_data_size, 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 191 of file filter.cpp.
References in_data_size, out_data_size, and LaserDataFilter::Buffer::values.
Referenced by LaserMinMergeDataFilter::filter(), and owns_out().
|
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 LaserProjectionDataFilter, LaserDataFilterCascade, LaserDeadSpotsDataFilter, LaserCircleSectorDataFilter, LaserMaxCircleDataFilter, LaserMinCircleDataFilter, Laser720to360DataFilter, LaserMinMergeDataFilter, and LaserReverseAngleDataFilter.
Referenced by LaserFilterThread::loop().
|
virtual |
Get size of filtered data array.
Definition at line 170 of file filter.cpp.
References out_data_size.
Referenced by LaserDataFilterCascade::add_filter(), and LaserFilterThread::init().
|
virtual |
Get filtered data array.
Definition at line 110 of file filter.cpp.
References out.
Referenced by LaserDataFilterCascade::add_filter(), and LaserFilterThread::init().
|
inline |
|
inline |
Check if output arrays are owned by filter.
Definition at line 54 of file filter.h.
References copy_to_outbuf(), reset_outbuf(), and set_out_data_size().
|
protected |
Resets all readings in outbuf to 0.0.
outbuf | array of out_data_size |
Definition at line 180 of file filter.cpp.
References out_data_size, and LaserDataFilter::Buffer::values.
Referenced by LaserCircleSectorDataFilter::filter(), and owns_out().
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 208 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 151 of file filter.cpp.
References out, and out_data_size.
Referenced by Laser720to360DataFilter::Laser720to360DataFilter(), and owns_out().
|
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 123 of file filter.cpp.
References out.
Referenced by LaserFilterThread::init(), and LaserDeadSpotsDataFilter::LaserDeadSpotsDataFilter().
|
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 66 of file filter.h.
Referenced by Laser720to360DataFilter::filter(), LaserMinMergeDataFilter::filter(), LaserReverseAngleDataFilter::filter(), LaserMinCircleDataFilter::filter(), LaserCircleSectorDataFilter::filter(), LaserMaxCircleDataFilter::filter(), LaserDeadSpotsDataFilter::filter(), LaserProjectionDataFilter::filter(), LaserDataFilter(), LaserDataFilterCascade::LaserDataFilterCascade(), and ~LaserDataFilter().
|
protected |
Number of entries in input arrays.
Definition at line 65 of file filter.h.
Referenced by copy_to_outbuf(), LaserReverseAngleDataFilter::filter(), LaserMinCircleDataFilter::filter(), LaserCircleSectorDataFilter::filter(), LaserMaxCircleDataFilter::filter(), LaserDeadSpotsDataFilter::filter(), LaserProjectionDataFilter::filter(), LaserDataFilter(), 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 67 of file filter.h.
Referenced by LaserDataFilterCascade::add_filter(), Laser720to360DataFilter::filter(), LaserMinMergeDataFilter::filter(), LaserReverseAngleDataFilter::filter(), LaserCircleSectorDataFilter::filter(), LaserMaxCircleDataFilter::filter(), LaserMinCircleDataFilter::filter(), LaserProjectionDataFilter::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 64 of file filter.h.
Referenced by LaserDataFilterCascade::add_filter(), copy_to_outbuf(), LaserMinMergeDataFilter::filter(), LaserReverseAngleDataFilter::filter(), LaserCircleSectorDataFilter::filter(), LaserMaxCircleDataFilter::filter(), LaserMinCircleDataFilter::filter(), LaserProjectionDataFilter::filter(), get_out_data_size(), LaserDataFilter(), LaserDataFilterCascade::LaserDataFilterCascade(), LaserDeadSpotsDataFilter::LaserDeadSpotsDataFilter(), LaserProjectionDataFilter::LaserProjectionDataFilter(), reset_outbuf(), and set_out_data_size().