Visual Servoing Platform  version 3.6.1 under development (2025-02-17)
vpRBFeatureTracker Class Referenceabstract

#include <visp3/rbt/vpRBFeatureTracker.h>

+ Inheritance diagram for vpRBFeatureTracker:

Public Member Functions

 vpRBFeatureTracker ()
 
unsigned getNumFeatures () const
 
bool vvsHasConverged () const
 
virtual double getVVSTrackerWeight () const
 
void setTrackerWeight (double weight)
 
virtual vpMatrix getLTL () const
 
virtual vpColVector getLTR () const
 
const vpColVectorgetWeightedError () const
 
virtual void loadJsonConfiguration (const nlohmann::json &j)
 
Required inputs
virtual bool requiresRGB () const =0
 
virtual bool requiresDepth () const =0
 
virtual bool requiresSilhouetteCandidates () const =0
 
Core Tracking methods
virtual void onTrackingIterStart ()=0
 
virtual void onTrackingIterEnd ()=0
 
virtual void extractFeatures (const vpRBFeatureTrackerInput &frame, const vpRBFeatureTrackerInput &previousFrame, const vpHomogeneousMatrix &cMo)=0
 
virtual void trackFeatures (const vpRBFeatureTrackerInput &frame, const vpRBFeatureTrackerInput &previousFrame, const vpHomogeneousMatrix &cMo)=0
 
virtual void initVVS (const vpRBFeatureTrackerInput &frame, const vpRBFeatureTrackerInput &previousFrame, const vpHomogeneousMatrix &cMo)=0
 
virtual void computeVVSIter (const vpRBFeatureTrackerInput &frame, const vpHomogeneousMatrix &cMo, unsigned int iteration)=0
 
Display
bool featuresShouldBeDisplayed () const
 
void setFeaturesShouldBeDisplayed (bool enableDisplay)
 
virtual void display (const vpCameraParameters &cam, const vpImage< unsigned char > &I, const vpImage< vpRGBa > &IRGB, const vpImage< unsigned char > &depth) const =0
 
Covariance computation
virtual const vpMatrix getCovariance () const
 
virtual void updateCovariance (const double lambda)
 

Static Public Member Functions

static void computeJTR (const vpMatrix &interaction, const vpColVector &error, vpColVector &JTR)
 
static vpMatrix computeCovarianceMatrix (const vpMatrix &A, const vpColVector &b, const vpMatrix &W)
 

Protected Attributes

vpMatrix m_L
 
vpMatrix m_LTL
 
vpColVector m_LTR
 
vpMatrix m_cov
 
vpColVector m_covWeightDiag
 
vpColVector m_error
 
vpColVector m_weighted_error
 
vpColVector m_weights
 
unsigned m_numFeatures
 
double m_userVvsWeight
 
bool m_vvsConverged
 
bool m_enableDisplay
 

Detailed Description

A base class for all features that can be used and tracked in the vpRBTracker.

Definition at line 60 of file vpRBFeatureTracker.h.

Constructor & Destructor Documentation

◆ vpRBFeatureTracker()

BEGIN_VISP_NAMESPACE vpRBFeatureTracker::vpRBFeatureTracker ( )

Definition at line 39 of file vpRBFeatureTracker.cpp.

References m_enableDisplay, m_numFeatures, m_userVvsWeight, and m_vvsConverged.

Member Function Documentation

◆ computeCovarianceMatrix()

vpMatrix vpRBFeatureTracker::computeCovarianceMatrix ( const vpMatrix A,
const vpColVector b,
const vpMatrix W 
)
static

Definition at line 76 of file vpRBFeatureTracker.cpp.

References vpArray2D< Type >::getRows(), vpColVector::t(), and vpMatrix::t().

Referenced by updateCovariance().

◆ computeJTR()

◆ computeVVSIter()

virtual void vpRBFeatureTracker::computeVVSIter ( const vpRBFeatureTrackerInput frame,
const vpHomogeneousMatrix cMo,
unsigned int  iteration 
)
pure virtual

◆ display()

virtual void vpRBFeatureTracker::display ( const vpCameraParameters cam,
const vpImage< unsigned char > &  I,
const vpImage< vpRGBa > &  IRGB,
const vpImage< unsigned char > &  depth 
) const
pure virtual

◆ extractFeatures()

virtual void vpRBFeatureTracker::extractFeatures ( const vpRBFeatureTrackerInput frame,
const vpRBFeatureTrackerInput previousFrame,
const vpHomogeneousMatrix cMo 
)
pure virtual

Extract features from the frame data and the current pose estimate.

Implemented in vpRBSilhouetteMeTracker, vpRBSilhouetteCCDTracker, and vpRBDenseDepthTracker.

◆ featuresShouldBeDisplayed()

bool vpRBFeatureTracker::featuresShouldBeDisplayed ( ) const
inline

Definition at line 145 of file vpRBFeatureTracker.h.

◆ getCovariance()

virtual const vpMatrix vpRBFeatureTracker::getCovariance ( ) const
inlinevirtual

Retrieve the 6 x 6 pose covariance matrix, computed from the weights associated to each feature.

The updateCovariance method should have been called before

Definition at line 168 of file vpRBFeatureTracker.h.

◆ getLTL()

virtual vpMatrix vpRBFeatureTracker::getLTL ( ) const
inlinevirtual

Get the left-side term of the Gauss-Newton optimization term.

Definition at line 195 of file vpRBFeatureTracker.h.

◆ getLTR()

virtual vpColVector vpRBFeatureTracker::getLTR ( ) const
inlinevirtual

Get the right-side term of the Gauss-Newton optimization term.

Definition at line 200 of file vpRBFeatureTracker.h.

◆ getNumFeatures()

unsigned vpRBFeatureTracker::getNumFeatures ( ) const
inline

Return the type of feature that is used by this tracker.

Returns
vpRBFeatureType

Get the number of features used to compute the pose update

Definition at line 76 of file vpRBFeatureTracker.h.

◆ getVVSTrackerWeight()

virtual double vpRBFeatureTracker::getVVSTrackerWeight ( ) const
inlinevirtual

Get the importance of this tracker in the optimization step. The default computation is the following: $ w / N $, where $ w$ is the weight defined by setTrackerWeight, and $ N $ is the number of features.

Reimplemented in vpRBSilhouetteCCDTracker, and vpRBDenseDepthTracker.

Definition at line 189 of file vpRBFeatureTracker.h.

◆ getWeightedError()

const vpColVector& vpRBFeatureTracker::getWeightedError ( ) const
inline

Get a weighted version of the error vector. This should not include the userVVSWeight, but may include reweighting to remove outliers, occlusions, etc.

Definition at line 206 of file vpRBFeatureTracker.h.

◆ initVVS()

virtual void vpRBFeatureTracker::initVVS ( const vpRBFeatureTrackerInput frame,
const vpRBFeatureTrackerInput previousFrame,
const vpHomogeneousMatrix cMo 
)
pure virtual

◆ loadJsonConfiguration()

virtual void vpRBFeatureTracker::loadJsonConfiguration ( const nlohmann::json &  j)
inlinevirtual

◆ onTrackingIterEnd()

virtual void vpRBFeatureTracker::onTrackingIterEnd ( )
pure virtual

Method called after the tracking iteration has finished.

Implemented in vpRBSilhouetteMeTracker, vpRBSilhouetteCCDTracker, and vpRBDenseDepthTracker.

◆ onTrackingIterStart()

virtual void vpRBFeatureTracker::onTrackingIterStart ( )
pure virtual

Method called when starting a tracking iteration.

Implemented in vpRBSilhouetteMeTracker, vpRBSilhouetteCCDTracker, and vpRBDenseDepthTracker.

◆ requiresDepth()

virtual bool vpRBFeatureTracker::requiresDepth ( ) const
pure virtual

Whether this tracker requires depth image to extract features.

Implemented in vpRBSilhouetteMeTracker, vpRBSilhouetteCCDTracker, and vpRBDenseDepthTracker.

◆ requiresRGB()

virtual bool vpRBFeatureTracker::requiresRGB ( ) const
pure virtual

Whether this tracker requires RGB image to extract features.

Returns
true if the tracker requires an RGB image
false otherwise

Implemented in vpRBSilhouetteMeTracker, vpRBSilhouetteCCDTracker, and vpRBDenseDepthTracker.

◆ requiresSilhouetteCandidates()

virtual bool vpRBFeatureTracker::requiresSilhouetteCandidates ( ) const
pure virtual

Whether this tracker requires Silhouette candidates.

Implemented in vpRBSilhouetteMeTracker, vpRBSilhouetteCCDTracker, and vpRBDenseDepthTracker.

◆ setFeaturesShouldBeDisplayed()

void vpRBFeatureTracker::setFeaturesShouldBeDisplayed ( bool  enableDisplay)
inline

Definition at line 146 of file vpRBFeatureTracker.h.

◆ setTrackerWeight()

void vpRBFeatureTracker::setTrackerWeight ( double  weight)
inline

Definition at line 190 of file vpRBFeatureTracker.h.

◆ trackFeatures()

virtual void vpRBFeatureTracker::trackFeatures ( const vpRBFeatureTrackerInput frame,
const vpRBFeatureTrackerInput previousFrame,
const vpHomogeneousMatrix cMo 
)
pure virtual

Track the features.

Implemented in vpRBSilhouetteMeTracker, vpRBSilhouetteCCDTracker, and vpRBDenseDepthTracker.

◆ updateCovariance()

void vpRBFeatureTracker::updateCovariance ( const double  lambda)
virtual

Update the covariance matrix.

Parameters
lambdathe visual servoing gain

Reimplemented in vpRBSilhouetteCCDTracker.

Definition at line 47 of file vpRBFeatureTracker.cpp.

References computeCovarianceMatrix(), m_cov, m_covWeightDiag, m_error, and m_L.

◆ vvsHasConverged()

bool vpRBFeatureTracker::vvsHasConverged ( ) const
inline

Returns whether the tracker is considered as having converged to the desired pose.

Definition at line 182 of file vpRBFeatureTracker.h.

Member Data Documentation

◆ m_cov

vpMatrix vpRBFeatureTracker::m_cov
protected

◆ m_covWeightDiag

◆ m_enableDisplay

bool vpRBFeatureTracker::m_enableDisplay
protected

Whether VVS has converged, should be updated every VVS iteration.

Definition at line 238 of file vpRBFeatureTracker.h.

Referenced by vpRBFeatureTracker().

◆ m_error

◆ m_L

◆ m_LTL

vpMatrix vpRBFeatureTracker::m_LTL
protected

◆ m_LTR

vpColVector vpRBFeatureTracker::m_LTR
protected

◆ m_numFeatures

◆ m_userVvsWeight

double vpRBFeatureTracker::m_userVvsWeight
protected

Number of considered features.

Definition at line 234 of file vpRBFeatureTracker.h.

Referenced by vpRBFeatureTracker().

◆ m_vvsConverged

bool vpRBFeatureTracker::m_vvsConverged
protected

◆ m_weighted_error

◆ m_weights