Fawkes API  Fawkes Development Version
LaserDataFilter Class Referenceabstract

Laser data filter. More...

#include "filter.h"

Inheritance diagram for LaserDataFilter:

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...
 

Detailed Description

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.

Author
Tim Niemueller

Definition at line 28 of file filter.h.

Constructor & Destructor Documentation

LaserDataFilter::LaserDataFilter ( unsigned int  in_data_size,
std::vector< Buffer * > &  in,
unsigned int  out_size 
)

Constructor.

Parameters
in_data_sizenumber of entries input value arrays
invector of input arrays
out_sizenumber 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.

LaserDataFilter::~LaserDataFilter ( )
virtual

Virtual empty destructor.

Definition at line 88 of file filter.cpp.

References in, and out.

Member Function Documentation

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.

Parameters
inbufarray of in_data_size (= out_data_size) readings
outbufarray 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().

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.

Returns
size of filtered data array or 0 if filter() was never called.

Definition at line 170 of file filter.cpp.

References out_data_size.

Referenced by LaserDataFilterCascade::add_filter(), and LaserFilterThread::init().

std::vector< LaserDataFilter::Buffer * > & LaserDataFilter::get_out_vector ( )
virtual

Get filtered data array.

Returns
a Buffer with an array of the same size as the last array given to filter() or NULL if filter() was never called.

Definition at line 110 of file filter.cpp.

References out.

Referenced by LaserDataFilterCascade::add_filter(), and LaserFilterThread::init().

bool LaserDataFilter::owns_in ( ) const
inline

Check if input arrays are owned by filter.

Returns
true if arrays are owned by this filter, false otherwise.

Definition at line 51 of file filter.h.

bool LaserDataFilter::owns_out ( ) const
inline

Check if output arrays are owned by filter.

Returns
true if arrays are owned by this filter, false otherwise.

Definition at line 54 of file filter.h.

References copy_to_outbuf(), reset_outbuf(), and set_out_data_size().

void LaserDataFilter::reset_outbuf ( Buffer outbuf)
protected

Resets all readings in outbuf to 0.0.

Parameters
outbufarray 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.

Parameters
own_intrue to assign ownership of input arrays, false otherwise
own_outtrue 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)
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()!).

Parameters
data_sizenumber 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().

void LaserDataFilter::set_out_vector ( std::vector< Buffer * > &  out)
virtual

Set filtered data array.

Parameters
outvector 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().

Member Data Documentation


The documentation for this class was generated from the following files: