Go to the documentation of this file.00001 #ifndef PCL_TRACKING_PARTICLE_FILTER_OMP_H_
00002 #define PCL_TRACKING_PARTICLE_FILTER_OMP_H_
00003
00004 #include <pcl/tracking/tracking.h>
00005 #include <pcl/tracking/particle_filter.h>
00006 #include <pcl/tracking/coherence.h>
00007
00008 namespace pcl
00009 {
00010 namespace tracking
00011 {
00018 template <typename PointInT, typename StateT>
00019 class ParticleFilterOMPTracker: public ParticleFilterTracker<PointInT, StateT>
00020 {
00021 public:
00022 using Tracker<PointInT, StateT>::tracker_name_;
00023 using Tracker<PointInT, StateT>::search_;
00024 using Tracker<PointInT, StateT>::input_;
00025 using Tracker<PointInT, StateT>::indices_;
00026 using Tracker<PointInT, StateT>::getClassName;
00027 using ParticleFilterTracker<PointInT, StateT>::particles_;
00028 using ParticleFilterTracker<PointInT, StateT>::change_detector_;
00029 using ParticleFilterTracker<PointInT, StateT>::change_counter_;
00030 using ParticleFilterTracker<PointInT, StateT>::change_detector_interval_;
00031 using ParticleFilterTracker<PointInT, StateT>::use_change_detector_;
00032 using ParticleFilterTracker<PointInT, StateT>::alpha_;
00033 using ParticleFilterTracker<PointInT, StateT>::changed_;
00034 using ParticleFilterTracker<PointInT, StateT>::coherence_;
00035 using ParticleFilterTracker<PointInT, StateT>::use_normal_;
00036 using ParticleFilterTracker<PointInT, StateT>::particle_num_;
00037 using ParticleFilterTracker<PointInT, StateT>::change_detector_filter_;
00038 using ParticleFilterTracker<PointInT, StateT>::transed_reference_vector_;
00039
00040 using ParticleFilterTracker<PointInT, StateT>::normalizeWeight;
00041 using ParticleFilterTracker<PointInT, StateT>::normalizeParticleWeight;
00042 using ParticleFilterTracker<PointInT, StateT>::calcBoundingBox;
00043
00044 typedef Tracker<PointInT, StateT> BaseClass;
00045
00046 typedef typename Tracker<PointInT, StateT>::PointCloudIn PointCloudIn;
00047 typedef typename PointCloudIn::Ptr PointCloudInPtr;
00048 typedef typename PointCloudIn::ConstPtr PointCloudInConstPtr;
00049
00050 typedef typename Tracker<PointInT, StateT>::PointCloudState PointCloudState;
00051 typedef typename PointCloudState::Ptr PointCloudStatePtr;
00052 typedef typename PointCloudState::ConstPtr PointCloudStateConstPtr;
00053
00054 typedef PointCoherence<PointInT> Coherence;
00055 typedef boost::shared_ptr< Coherence > CoherencePtr;
00056 typedef boost::shared_ptr< const Coherence > CoherenceConstPtr;
00057
00058 typedef PointCloudCoherence<PointInT> CloudCoherence;
00059 typedef boost::shared_ptr< CloudCoherence > CloudCoherencePtr;
00060 typedef boost::shared_ptr< const CloudCoherence > CloudCoherenceConstPtr;
00061
00063 ParticleFilterOMPTracker ()
00064 : ParticleFilterTracker<PointInT, StateT> ()
00065 , threads_ (1)
00066 {
00067 tracker_name_ = "ParticleFilterOMPTracker";
00068 }
00069
00073 ParticleFilterOMPTracker (unsigned int nr_threads)
00074 : ParticleFilterTracker<PointInT, StateT> ()
00075 , threads_ (nr_threads)
00076 {
00077 tracker_name_ = "ParticleFilterOMPTracker";
00078 }
00079
00083 inline void
00084 setNumberOfThreads (unsigned int nr_threads)
00085 {
00086 if (nr_threads == 0)
00087 nr_threads = 1;
00088 threads_ = nr_threads;
00089 }
00090
00091 protected:
00093 unsigned int threads_;
00094
00098 virtual void weight ();
00099
00100 };
00101 }
00102 }
00103
00104
00105
00106 #endif