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. | |
virtual | ~LaserDataFilter () |
Virtual empty destructor. | |
virtual std::vector< Buffer * > & | get_out_vector () |
Get filtered data array. | |
virtual void | set_out_vector (std::vector< Buffer * > &out) |
Set filtered data array. | |
virtual unsigned int | get_out_data_size () |
Get size of filtered data array. | |
virtual void | filter ()=0 |
Filter the incoming data. | |
void | set_array_ownership (bool own_in, bool own_out) |
Set input/output array ownership. | |
bool | owns_in () const |
Check if input arrays are owned by filter. | |
bool | owns_out () const |
Check if output arrays are owned by filter. | |
Protected Member Functions | |
virtual void | set_out_data_size (unsigned int data_size) |
Resize output arrays. | |
void | reset_outbuf (Buffer *b) |
Resets all readings in outbuf to 0.0. | |
void | copy_to_outbuf (Buffer *outbuf, const Buffer *inbuf) |
Copies the readings from inbuf to outbuf. | |
Protected Attributes | |
unsigned int | out_data_size |
Number of entries in output arrays. | |
unsigned int | in_data_size |
Number of entries in input arrays. | |
std::vector< Buffer * > | in |
Vector of input arrays. | |
std::vector< Buffer * > | out |
Vector of output arrays. |
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_data_size, and out.
LaserDataFilter::~LaserDataFilter | ( | ) | [virtual] |
void LaserDataFilter::copy_to_outbuf | ( | LaserDataFilter::Buffer * | outbuf, |
const Buffer * | inbuf | ||
) | [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().
void LaserDataFilter::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 LaserProjectionDataFilter, LaserDataFilterCascade, LaserDeadSpotsDataFilter, LaserCircleSectorDataFilter, LaserMaxCircleDataFilter, LaserMinCircleDataFilter, Laser720to360DataFilter, LaserMinMergeDataFilter, and LaserReverseAngleDataFilter.
Referenced by LaserFilterThread::loop().
unsigned int LaserDataFilter::get_out_data_size | ( | ) | [virtual] |
Get size of filtered data array.
Definition at line 170 of file filter.cpp.
References out_data_size.
Referenced by LaserFilterThread::init(), and LaserDataFilterCascade::add_filter().
std::vector< LaserDataFilter::Buffer * > & LaserDataFilter::get_out_vector | ( | ) | [virtual] |
Get filtered data array.
Definition at line 110 of file filter.cpp.
References out.
Referenced by LaserFilterThread::init(), and LaserDataFilterCascade::add_filter().
bool LaserDataFilter::owns_in | ( | ) | const [inline] |
bool LaserDataFilter::owns_out | ( | ) | const [inline] |
void LaserDataFilter::reset_outbuf | ( | Buffer * | outbuf | ) | [protected] |
Resets all readings in outbuf to 0.0.
outbuf | array of out_data_size |
Definition at line 180 of file filter.cpp.
References LaserDataFilter::Buffer::values, and out_data_size.
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 208 of file filter.cpp.
Referenced by LaserDataFilterCascade::LaserDataFilterCascade().
void LaserDataFilter::set_out_data_size | ( | unsigned int | data_size | ) | [protected, virtual] |
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_data_size, and out.
Referenced by Laser720to360DataFilter::Laser720to360DataFilter().
void LaserDataFilter::set_out_vector | ( | std::vector< Buffer * > & | 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().
LaserDataFilter::in [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 LaserDataFilter(), ~LaserDataFilter(), LaserDeadSpotsDataFilter::filter(), Laser720to360DataFilter::filter(), LaserDataFilterCascade::LaserDataFilterCascade(), LaserCircleSectorDataFilter::filter(), LaserMaxCircleDataFilter::filter(), LaserMinCircleDataFilter::filter(), LaserMinMergeDataFilter::filter(), LaserProjectionDataFilter::filter(), and LaserReverseAngleDataFilter::filter().
LaserDataFilter::in_data_size [protected] |
Number of entries in input arrays.
Definition at line 65 of file filter.h.
Referenced by LaserDataFilter(), copy_to_outbuf(), LaserDeadSpotsDataFilter::filter(), LaserDataFilterCascade::LaserDataFilterCascade(), LaserCircleSectorDataFilter::filter(), LaserMaxCircleDataFilter::filter(), LaserMinCircleDataFilter::filter(), LaserProjectionDataFilter::filter(), and LaserReverseAngleDataFilter::filter().
LaserDataFilter::out [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 LaserDataFilter(), ~LaserDataFilter(), get_out_vector(), set_out_vector(), set_out_data_size(), LaserDeadSpotsDataFilter::filter(), Laser720to360DataFilter::filter(), LaserDataFilterCascade::LaserDataFilterCascade(), LaserDataFilterCascade::add_filter(), LaserCircleSectorDataFilter::filter(), LaserMaxCircleDataFilter::filter(), LaserMinCircleDataFilter::filter(), LaserMinMergeDataFilter::filter(), LaserProjectionDataFilter::filter(), and LaserReverseAngleDataFilter::filter().
LaserDataFilter::out_data_size [protected] |
Number of entries in output arrays.
Definition at line 64 of file filter.h.
Referenced by LaserDataFilter(), set_out_data_size(), get_out_data_size(), reset_outbuf(), copy_to_outbuf(), LaserDataFilterCascade::LaserDataFilterCascade(), LaserDataFilterCascade::add_filter(), LaserCircleSectorDataFilter::filter(), LaserMaxCircleDataFilter::filter(), LaserMinCircleDataFilter::filter(), LaserMinMergeDataFilter::filter(), LaserProjectionDataFilter::LaserProjectionDataFilter(), LaserProjectionDataFilter::filter(), and LaserReverseAngleDataFilter::filter().