kld_adaptive_particle_filter_omp.h
#ifndef PCL_TRACKING_KLD_ADAPTIVE_PARTICLE_FILTER_OMP_H_
#define PCL_TRACKING_KLD_ADAPTIVE_PARTICLE_FILTER_OMP_H_
#include <pcl/tracking/tracking.h>
#include <pcl/tracking/kld_adaptive_particle_filter.h>
#include <pcl/tracking/coherence.h>
namespace pcl
{
namespace tracking
{
/** \brief @b KLDAdaptiveParticleFilterOMPTracker tracks the PointCloud which is given by
setReferenceCloud within the measured PointCloud using particle filter method.
The number of the particles changes adaptively based on KLD sampling [D. Fox, NIPS-01], [D.Fox, IJRR03].
and the computation of the weights of the particles is parallelized using OpenMP.
* \author Ryohei Ueda
* \ingroup tracking
*/
template <typename PointInT, typename StateT>
class KLDAdaptiveParticleFilterOMPTracker: public KLDAdaptiveParticleFilterTracker<PointInT, StateT>
{
public:
using Tracker<PointInT, StateT>::tracker_name_;
using Tracker<PointInT, StateT>::search_;
using Tracker<PointInT, StateT>::input_;
using Tracker<PointInT, StateT>::indices_;
using Tracker<PointInT, StateT>::getClassName;
using KLDAdaptiveParticleFilterTracker<PointInT, StateT>::particles_;
using KLDAdaptiveParticleFilterTracker<PointInT, StateT>::change_detector_;
using KLDAdaptiveParticleFilterTracker<PointInT, StateT>::change_counter_;
using KLDAdaptiveParticleFilterTracker<PointInT, StateT>::change_detector_interval_;
using KLDAdaptiveParticleFilterTracker<PointInT, StateT>::use_change_detector_;
using KLDAdaptiveParticleFilterTracker<PointInT, StateT>::pass_x_;
using KLDAdaptiveParticleFilterTracker<PointInT, StateT>::pass_y_;
using KLDAdaptiveParticleFilterTracker<PointInT, StateT>::pass_z_;
using KLDAdaptiveParticleFilterTracker<PointInT, StateT>::alpha_;
using KLDAdaptiveParticleFilterTracker<PointInT, StateT>::changed_;
using KLDAdaptiveParticleFilterTracker<PointInT, StateT>::coherence_;
using KLDAdaptiveParticleFilterTracker<PointInT, StateT>::use_normal_;
using KLDAdaptiveParticleFilterTracker<PointInT, StateT>::particle_num_;
using KLDAdaptiveParticleFilterTracker<PointInT, StateT>::change_detector_filter_;
using KLDAdaptiveParticleFilterTracker<PointInT, StateT>::transed_reference_vector_;
//using KLDAdaptiveParticleFilterTracker<PointInT, StateT>::calcLikelihood;
using KLDAdaptiveParticleFilterTracker<PointInT, StateT>::normalizeWeight;
using KLDAdaptiveParticleFilterTracker<PointInT, StateT>::normalizeParticleWeight;
using KLDAdaptiveParticleFilterTracker<PointInT, StateT>::calcBoundingBox;
typedef Tracker<PointInT, StateT> BaseClass;
typedef typename Tracker<PointInT, StateT>::PointCloudIn PointCloudIn;
typedef typename PointCloudIn::Ptr PointCloudInPtr;
typedef typename PointCloudIn::ConstPtr PointCloudInConstPtr;
typedef typename Tracker<PointInT, StateT>::PointCloudState PointCloudState;
typedef typename PointCloudState::Ptr PointCloudStatePtr;
typedef typename PointCloudState::ConstPtr PointCloudStateConstPtr;
typedef PointCoherence<PointInT> Coherence;
typedef boost::shared_ptr< Coherence > CoherencePtr;
typedef boost::shared_ptr< const Coherence > CoherenceConstPtr;
typedef PointCloudCoherence<PointInT> CloudCoherence;
typedef boost::shared_ptr< CloudCoherence > CloudCoherencePtr;
typedef boost::shared_ptr< const CloudCoherence > CloudCoherenceConstPtr;
/** \brief Initialize the scheduler and set the number of threads to use.
* \param nr_threads the number of hardware threads to use (0 sets the value back to automatic)
*/
KLDAdaptiveParticleFilterOMPTracker (unsigned int nr_threads = 0)
: KLDAdaptiveParticleFilterTracker<PointInT, StateT> ()
, threads_ (nr_threads)
{
tracker_name_ = "KLDAdaptiveParticleFilterOMPTracker";
}
/** \brief Initialize the scheduler and set the number of threads to use.
* \param nr_threads the number of hardware threads to use (0 sets the value back to automatic)
*/
inline void
setNumberOfThreads (unsigned int nr_threads = 0) { threads_ = nr_threads; }
protected:
/** \brief The number of threads the scheduler should use. */
unsigned int threads_;
/** \brief weighting phase of particle filter method.
calculate the likelihood of all of the particles and set the weights.
*/
virtual void weight ();
};
}
}
//#include <pcl/tracking/impl/particle_filter_omp.hpp>
#ifdef PCL_NO_PRECOMPILE
#include <pcl/tracking/impl/kld_adaptive_particle_filter_omp.hpp>
#endif
#endif
pcl::tracking::KLDAdaptiveParticleFilterOMPTracker::BaseClass
Tracker< PointInT, StateT > BaseClass
Definition: kld_adaptive_particle_filter_omp.h:48
pcl::tracking::KLDAdaptiveParticleFilterOMPTracker::PointCloudInPtr
PointCloudIn::Ptr PointCloudInPtr
Definition: kld_adaptive_particle_filter_omp.h:51
pcl::tracking::KLDAdaptiveParticleFilterOMPTracker::CoherenceConstPtr
boost::shared_ptr< const Coherence > CoherenceConstPtr
Definition: kld_adaptive_particle_filter_omp.h:60
pcl::tracking::KLDAdaptiveParticleFilterTracker
KLDAdaptiveParticleFilterTracker tracks the PointCloud which is given by setReferenceCloud within the...
Definition: kld_adaptive_particle_filter.h:20
pcl
Definition: convolution.h:45
pcl::tracking::KLDAdaptiveParticleFilterOMPTracker::PointCloudIn
Tracker< PointInT, StateT >::PointCloudIn PointCloudIn
Definition: kld_adaptive_particle_filter_omp.h:50
pcl::tracking::KLDAdaptiveParticleFilterOMPTracker::setNumberOfThreads
void setNumberOfThreads(unsigned int nr_threads=0)
Initialize the scheduler and set the number of threads to use.
Definition: kld_adaptive_particle_filter_omp.h:80
pcl::tracking::KLDAdaptiveParticleFilterOMPTracker
KLDAdaptiveParticleFilterOMPTracker tracks the PointCloud which is given by setReferenceCloud within ...
Definition: kld_adaptive_particle_filter_omp.h:20
pcl::tracking::KLDAdaptiveParticleFilterOMPTracker::PointCloudInConstPtr
PointCloudIn::ConstPtr PointCloudInConstPtr
Definition: kld_adaptive_particle_filter_omp.h:52
pcl::tracking::KLDAdaptiveParticleFilterOMPTracker::Coherence
PointCoherence< PointInT > Coherence
Definition: kld_adaptive_particle_filter_omp.h:58
pcl::PointCloud< PointInT >::Ptr
boost::shared_ptr< PointCloud< PointInT > > Ptr
Definition: point_cloud.h:428
pcl::tracking::KLDAdaptiveParticleFilterOMPTracker::CloudCoherenceConstPtr
boost::shared_ptr< const CloudCoherence > CloudCoherenceConstPtr
Definition: kld_adaptive_particle_filter_omp.h:64
pcl::tracking::KLDAdaptiveParticleFilterOMPTracker::CoherencePtr
boost::shared_ptr< Coherence > CoherencePtr
Definition: kld_adaptive_particle_filter_omp.h:59
pcl::tracking::PointCoherence
PointCoherence is a base class to compute coherence between the two points.
Definition: coherence.h:17
pcl::PointCloud< PointInT >::ConstPtr
boost::shared_ptr< const PointCloud< PointInT > > ConstPtr
Definition: point_cloud.h:429
pcl::tracking::KLDAdaptiveParticleFilterOMPTracker::PointCloudState
Tracker< PointInT, StateT >::PointCloudState PointCloudState
Definition: kld_adaptive_particle_filter_omp.h:54
pcl::PointCloud< PointInT >
pcl::tracking::KLDAdaptiveParticleFilterOMPTracker::PointCloudStateConstPtr
PointCloudState::ConstPtr PointCloudStateConstPtr
Definition: kld_adaptive_particle_filter_omp.h:56
pcl::tracking::PointCloudCoherence
PointCloudCoherence is a base class to compute coherence between the two PointClouds.
Definition: coherence.h:60
pcl::tracking::KLDAdaptiveParticleFilterOMPTracker::CloudCoherencePtr
boost::shared_ptr< CloudCoherence > CloudCoherencePtr
Definition: kld_adaptive_particle_filter_omp.h:63
pcl::tracking::Tracker
Tracker represents the base tracker class.
Definition: tracker.h:56
pcl::tracking::KLDAdaptiveParticleFilterOMPTracker::threads_
unsigned int threads_
The number of threads the scheduler should use.
Definition: kld_adaptive_particle_filter_omp.h:84
pcl::tracking::KLDAdaptiveParticleFilterOMPTracker::CloudCoherence
PointCloudCoherence< PointInT > CloudCoherence
Definition: kld_adaptive_particle_filter_omp.h:62
pcl::tracking::KLDAdaptiveParticleFilterOMPTracker::PointCloudStatePtr
PointCloudState::Ptr PointCloudStatePtr
Definition: kld_adaptive_particle_filter_omp.h:55
pcl::tracking::KLDAdaptiveParticleFilterOMPTracker::weight
virtual void weight()
weighting phase of particle filter method.
Definition: kld_adaptive_particle_filter_omp.hpp:7
pcl::tracking::KLDAdaptiveParticleFilterOMPTracker::KLDAdaptiveParticleFilterOMPTracker
KLDAdaptiveParticleFilterOMPTracker(unsigned int nr_threads=0)
Initialize the scheduler and set the number of threads to use.
Definition: kld_adaptive_particle_filter_omp.h:69
pcl::tracking::Tracker::tracker_name_
std::string tracker_name_
The tracker name.
Definition: tracker.h:92