Candy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Classes | Public Member Functions | Public Attributes | Static Public Attributes | Protected Types | Protected Member Functions | Protected Attributes | List of all members
HVR::AdaptiveSmoothingTrackerFilter Class Reference

The adaptive smoothing tracker filter reorders the tracker data and interpolates with the data previously provided to smooth out noise. More...

Inheritance diagram for HVR::AdaptiveSmoothingTrackerFilter:
Inheritance graph
[legend]

Classes

struct  FilteredId
 
struct  FilteredOrientation
 
struct  FilteredPoints
 
struct  FilteredPosition
 
struct  FilteredVelocity
 
struct  point
 

Public Member Functions

 AdaptiveSmoothingTrackerFilter (H3D::Inst< H3D::SFNode > _metadata=0, H3D::Inst< H3D::MFVec3f > _rawPosition=0, H3D::Inst< H3D::MFRotation > _rawOrientation=0, H3D::Inst< CalibratedMatrix > _trackerMatrix=0, H3D::Inst< FilteredPosition > _trackerPosition=0, H3D::Inst< FilteredOrientation > _trackerOrientation=0, H3D::Inst< SFTrackerNode > _tracker=0, H3D::Inst< FilteredPoints > _points=0, H3D::Inst< FilteredId > _trackerId=0, H3D::Inst< FilteredVelocity > _trackerVelocity=0, H3D::Inst< H3D::SFInt32 > _historySamples=0, H3D::Inst< H3D::SFFloat > _historyTime=0, H3D::Inst< H3D::SFFloat > _errorThreshold=0, H3D::Inst< H3D::SFVec2f > _filterRange=0, H3D::Inst< H3D::SFFloat > _cutoffRange=0, H3D::Inst< H3D::SFVec2f > _positionBlending=0, H3D::Inst< H3D::SFVec2f > _orientationBlending=0, H3D::Inst< H3D::SFBool > _extrapolatePosition=0, H3D::Inst< H3D::SFFloat > _birthDelay=0, H3D::Inst< H3D::SFFloat > _deathDelay=0)
 
- Public Member Functions inherited from HVR::HVRTrackerFilterNode
 HVRTrackerFilterNode (H3D::Inst< H3D::SFNode > _metadata=0, H3D::Inst< H3D::MFVec3f > _rawPosition=0, H3D::Inst< H3D::MFRotation > _rawOrientation=0, H3D::Inst< CalibratedMatrix > _trackerMatrix=0, H3D::Inst< H3D::MFVec3f > _trackerPosition=0, H3D::Inst< H3D::MFRotation > _trackerOrientation=0, H3D::Inst< SFTrackerNode > _tracker=0)
 
- Public Member Functions inherited from HVR::HVRTrackerNode
 HVRTrackerNode (H3D::Inst< H3D::SFNode > _metadata=0, H3D::Inst< H3D::MFVec3f > _rawPosition=0, H3D::Inst< H3D::MFRotation > _rawOrientation=0, H3D::Inst< CalibratedMatrix > _trackerMatrix=0, H3D::Inst< H3D::MFVec3f > _trackerPosition=0, H3D::Inst< H3D::MFRotation > _trackerOrientation=0)
 
virtual std::string defaultXMLContainerField ()
 

Public Attributes

std::auto_ptr< FilteredIdtrackerId
  (output only) The id associated with each point. More...
 
std::auto_ptr< FilteredVelocitytrackerVelocity
  (output only) The velocity associated with each point. More...
 
std::auto_ptr< H3D::SFInt32historySamples
  (input/output) The number of position samples to save, which are used in the velocity estimation. More...
 
std::auto_ptr< H3D::SFFloathistoryTime
  (input/output) How old position samples to save. More...
 
std::auto_ptr< H3D::SFFloaterrorThreshold
  (input/output) An estimate of the position tracking error, which is used in the velocity estimation. More...
 
std::auto_ptr< H3D::SFVec2ffilterRange
  (input/output) The distances between the old sample and a new sample to consider close or distant, respectively. More...
 
std::auto_ptr< H3D::SFFloatcutoffRange
  (input/output) The distance between an old sample and a new sample that is far enough to not be treated as the sample tracked point. More...
 
std::auto_ptr< H3D::SFVec2fpositionBlending
  (input/output) How much new sample data to blend in (0-1) for close or distant samples, respectively. More...
 
std::auto_ptr< H3D::SFVec2forientationBlending
  (input/output) How much new sample data to blend in (0-1) for close or distant samples, respectively. More...
 
std::auto_ptr< H3D::SFBoolextrapolatePosition
  (input/output) (true) When true the last position is extrapolated using the last velocity estimation when a sample is not updated (because there are no new data) but still not dead (because deathDelay has not been reached). More...
 
std::auto_ptr< H3D::SFFloatbirthDelay
  (input/output) How many seconds to wait before a new point qualifies as a tracker point. More...
 
std::auto_ptr< H3D::SFFloatdeathDelay
  (input/output) How many seconds to wait before removing a point that is not being updated. More...
 
- Public Attributes inherited from HVR::HVRTrackerFilterNode
std::auto_ptr< SFTrackerNodetracker
  (input/output) The HVRTrackerNode tracker to filter data from. More...
 
- Public Attributes inherited from HVR::HVRTrackerNode
std::auto_ptr< H3D::MFVec3frawPosition
  (output only) The position data as defined by the tracker in its own coordinate system. More...
 
std::auto_ptr< H3D::MFRotationrawOrientation
  (output only) The orientation data as defined by the tracker in its own coordinate system. More...
 
std::auto_ptr< CalibratedMatrixtrackerMatrix
  (output only) The calibrated tracker data in MFMatrix4f matrix form, encoding both position and orientation. More...
 
std::auto_ptr< H3D::MFVec3ftrackerPosition
  (output only) The calibrated tracker position data. More...
 
std::auto_ptr< H3D::MFRotationtrackerOrientation
  (output only) The calibrated tracker orientation data. More...
 

Static Public Attributes

static H3D::H3DNodeDatabase database
 
- Static Public Attributes inherited from HVR::HVRTrackerFilterNode
static H3D::H3DNodeDatabase database
 
- Static Public Attributes inherited from HVR::HVRTrackerNode
static H3D::H3DNodeDatabase database
 

Protected Types

typedef H3D::MField< pointMFPoint
 

Protected Member Functions

virtual void connect_tracker (HVRTrackerNode *)
 
virtual void disconnect_tracker (HVRTrackerNode *)
 
- Protected Member Functions inherited from HVR::HVRTrackerNode
void updateRawMatrix (const std::vector< H3D::Matrix4f > &m)
 Call this function to update the tracker data. More...
 
void updateRawPositionOrientation (const std::vector< H3D::Vec3f > &x, const std::vector< H3D::Rotation > &r)
 Call this function to update the tracker data. More...
 

Protected Attributes

std::auto_ptr< FilteredPointspoints
 

Detailed Description

The adaptive smoothing tracker filter reorders the tracker data and interpolates with the data previously provided to smooth out noise.

Use filter range and filter blending to control how far away the samples to blend may be and how much old and new data to use, respectively.

Member Data Documentation

std::auto_ptr< H3D::SFFloat > HVR::AdaptiveSmoothingTrackerFilter::birthDelay

(input/output) How many seconds to wait before a new point qualifies as a tracker point.

std::auto_ptr< H3D::SFFloat > HVR::AdaptiveSmoothingTrackerFilter::cutoffRange

(input/output) The distance between an old sample and a new sample that is far enough to not be treated as the sample tracked point.

std::auto_ptr< H3D::SFFloat > HVR::AdaptiveSmoothingTrackerFilter::deathDelay

(input/output) How many seconds to wait before removing a point that is not being updated.

std::auto_ptr< H3D::SFFloat > HVR::AdaptiveSmoothingTrackerFilter::errorThreshold

(input/output) An estimate of the position tracking error, which is used in the velocity estimation.

std::auto_ptr< H3D::SFBool > HVR::AdaptiveSmoothingTrackerFilter::extrapolatePosition

(input/output) (true) When true the last position is extrapolated using the last velocity estimation when a sample is not updated (because there are no new data) but still not dead (because deathDelay has not been reached).

std::auto_ptr< H3D::SFVec2f > HVR::AdaptiveSmoothingTrackerFilter::filterRange

(input/output) The distances between the old sample and a new sample to consider close or distant, respectively.

std::auto_ptr< H3D::SFInt32 > HVR::AdaptiveSmoothingTrackerFilter::historySamples

(input/output) The number of position samples to save, which are used in the velocity estimation.

std::auto_ptr< H3D::SFFloat > HVR::AdaptiveSmoothingTrackerFilter::historyTime

(input/output) How old position samples to save.

std::auto_ptr< H3D::SFVec2f > HVR::AdaptiveSmoothingTrackerFilter::orientationBlending

(input/output) How much new sample data to blend in (0-1) for close or distant samples, respectively.

Far and close are defined by the filterRange field.

std::auto_ptr< H3D::SFVec2f > HVR::AdaptiveSmoothingTrackerFilter::positionBlending

(input/output) How much new sample data to blend in (0-1) for close or distant samples, respectively.

Far and close are defined by the filterRange field.

std::auto_ptr< FilteredId > HVR::AdaptiveSmoothingTrackerFilter::trackerId

(output only) The id associated with each point.

This list is of the same length as the trackerPosition and trackerOrientation fields.

std::auto_ptr< FilteredVelocity > HVR::AdaptiveSmoothingTrackerFilter::trackerVelocity

(output only) The velocity associated with each point.

This list is of the same length as the trackerPosition and trackerOrientation fields. The velocity is estimated using end-fit-first-order-adaptive-window (end-fit-FOAW) of a history of position samples. Samples are only taken upon request so make sure to call getValue() every frame to get accurate velocity measures.