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

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 32 of file filter.h.

Constructor & Destructor Documentation

◆ LaserDataFilter()

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

Constructor.

Parameters
filter_namename of this filter instance
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 77 of file filter.cpp.

References out, and out_data_size.

◆ ~LaserDataFilter()

LaserDataFilter::~LaserDataFilter ( )
virtual

Virtual empty destructor.

Definition at line 94 of file filter.cpp.

References in, and out.

Member Function Documentation

◆ copy_to_outbuf()

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 199 of file filter.cpp.

References in_data_size, out_data_size, and LaserDataFilter::Buffer::values.

Referenced by LaserMinMergeDataFilter::filter().

◆ filter()

void LaserDataFilter::filter ( )
pure virtual

◆ get_out_data_size()

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 176 of file filter.cpp.

References out_data_size.

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

◆ get_out_vector()

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 116 of file filter.cpp.

References out.

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

◆ owns_in()

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 59 of file filter.h.

◆ owns_out()

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 62 of file filter.h.

◆ reset_outbuf()

void LaserDataFilter::reset_outbuf ( Buffer outbuf)
protected

Resets all readings in outbuf to NaN.

Parameters
outbufarray of out_data_size

Definition at line 186 of file filter.cpp.

References out_data_size, and LaserDataFilter::Buffer::values.

Referenced by LaserCircleSectorDataFilter::filter().

◆ set_array_ownership()

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 216 of file filter.cpp.

Referenced by LaserDataFilterCascade::LaserDataFilterCascade().

◆ set_out_data_size()

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 157 of file filter.cpp.

References out, and out_data_size.

Referenced by Laser1080to360DataFilter::Laser1080to360DataFilter(), and Laser720to360DataFilter::Laser720to360DataFilter().

◆ set_out_vector()

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 129 of file filter.cpp.

References out.

Referenced by LaserFilterThread::init(), and LaserDeadSpotsDataFilter::LaserDeadSpotsDataFilter().

Member Data Documentation

◆ filter_name

LaserDataFilter::filter_name
protected

Name of the specific filter instance.

Definition at line 72 of file filter.h.

Referenced by LaserMinMergeDataFilter::filter().

◆ in

◆ in_data_size

◆ out

◆ out_data_size


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