3 #include <boost/accumulators/accumulators.hpp> 4 #include <boost/accumulators/statistics.hpp> 5 #include <boost/accumulators/statistics/median.hpp> 6 #include <boost/accumulators/statistics/p_square_quantile.hpp> 10 #include <boost/msm/back/state_machine.hpp> 12 #include <boost/msm/front/state_machine_def.hpp> 13 #include <boost/array.hpp> 14 #include <visp/vpImage.h> 17 #include <visp/vpImage.h> 18 #include <visp/vpRGBa.h> 19 #include <visp/vpHomogeneousMatrix.h> 20 #include <visp/vpCameraParameters.h> 22 #include <visp/vpDisplay.h> 23 #include <visp/vpHinkley.h> 24 #include <visp/vpMe.h> 28 #include "visp_tracker/MovingEdgeSites.h" 29 #include "visp_tracker/KltPoints.h" 32 #if VISP_VERSION_INT < VP_VERSION_INT(2,10,0) 35 # include <visp/vpDetectorBase.h> 38 #include <visp/vpMbEdgeTracker.h> 43 namespace msm = boost::msm;
44 namespace mpl = boost::mpl;
47 class Tracker_ :
public msm::front::state_machine_def<Tracker_>{
50 boost::accumulators::accumulator_set<
52 boost::accumulators::stats<
53 boost::accumulators::tag::median(boost::accumulators::with_p_square_quantile),
54 boost::accumulators::tag::max,
55 boost::accumulators::tag::mean
57 > var,var_x,var_y,
var_z,var_wx,var_wy,var_wz,checkpoints;
65 #if VISP_VERSION_INT < VP_VERSION_INT(2,10,0) 86 std::vector<vpPoint>
f_;
96 void set_flush_display(
bool val);
97 bool get_flush_display();
98 #if VISP_VERSION_INT < VP_VERSION_INT(2,10,0) 101 vpDetectorBase& get_detector();
103 vpMbTracker& get_mbt();
104 std::vector<vpPoint>& get_points3D_inner();
105 std::vector<vpPoint>& get_points3D_outer();
106 std::vector<vpPoint>& get_points3D_middle();
107 std::vector<vpPoint>& get_flashcode();
111 const T& get_tracking_box();
113 vpImage<vpRGBa>& get_I();
115 vpCameraParameters& get_cam();
121 #if VISP_VERSION_INT < VP_VERSION_INT(2,10,0) 124 Tracker_(
CmdLine& cmd, vpDetectorBase* detector,vpMbTracker* tracker_,
bool flush_display =
true);
133 bool model_detected(msm::front::none
const&);
143 void updateMovingEdgeSites(visp_tracker::MovingEdgeSitesPtr sites);
144 void updateKltPoints(visp_tracker::KltPointsPtr klt);
150 g_row< WaitingForInput , input_ready , WaitingForInput , &Tracker_::no_input_selected >,
152 g_row< WaitingForInput , input_ready , DetectFlashcode , &Tracker_::input_selected >,
154 _row< WaitingForInput , select_input , DetectFlashcode >,
156 _row< DetectFlashcode , input_ready , DetectFlashcode >,
158 row< DetectFlashcode , input_ready , DetectModel , &Tracker_::find_flashcode_pos,&Tracker_::flashcode_detected >,
160 _row< DetectModel , msm::front::none , DetectFlashcode >,
162 g_row< DetectModel , msm::front::none , TrackModel , &Tracker_::model_detected >,
164 _row< TrackModel , input_ready , ReDetectFlashcode >,
166 row< TrackModel , input_ready , TrackModel , &Tracker_::track_model ,&Tracker_::mbt_success >,
168 _row< ReDetectFlashcode, input_ready , DetectFlashcode >,
170 row< ReDetectFlashcode, input_ready , DetectModel , &Tracker_::find_flashcode_pos,&Tracker_::flashcode_redetected >,
174 _row< TrackModel , finished , Finished >,
176 _row< DetectModel , finished , Finished >,
178 _row< DetectFlashcode , finished , Finished >,
180 _row< ReDetectFlashcode, finished , Finished >
186 typedef msm::back::state_machine<Tracker_>
Tracker;
190 #endif //__TRACKING_H__
boost::accumulators::accumulator_set< double, boost::accumulators::stats< boost::accumulators::tag::median(boost::accumulators::with_p_square_quantile), boost::accumulators::tag::max, boost::accumulators::tag::mean > > var_z
std::vector< vpPoint > outer_points_3D_bcp_
msm::back::state_machine< Tracker_ > Tracker
std::vector< vpPoint > points3D_inner_
WaitingForInput initial_state
boost::array< vpHinkley, 6 > hinkley_array_t
std::vector< vpPoint > f_
std::vector< vpPoint > points3D_middle_
vpDetectorBase * detector_
vpImagePoint flashcode_center_
vpImage< unsigned char > Igray_
std::vector< vpPoint > points3D_outer_