Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef _artag_image_based_vs_alg_h_
00026 #define _artag_image_based_vs_alg_h_
00027
00028 #include <iri_artag_image_based_vs/ArtagImageBasedVsConfig.h>
00029 #include "mutex.h"
00030
00031 #include <vector>
00032 #include <iostream>
00033
00034 #include <tf/transform_listener.h>
00035 #include <tf/transform_datatypes.h>
00036
00037 #include <Eigen/Dense>
00038 #include <Eigen/Eigenvalues>
00039
00040 #include <image_based_vs.h>
00041
00042
00048 class ArtagImageBasedVsAlgorithm
00049 {
00050 protected:
00057 CMutex alg_mutex_;
00058
00059
00060
00061 public:
00068 typedef iri_artag_image_based_vs::ArtagImageBasedVsConfig Config;
00069
00076 Config config_;
00077
00086 ArtagImageBasedVsAlgorithm(void);
00087
00093 void lock(void) { alg_mutex_.enter(); };
00094
00100 void unlock(void) { alg_mutex_.exit(); };
00101
00109 bool try_enter(void) { return alg_mutex_.try_enter(); };
00110
00122 void config_update(Config& new_cfg, uint32_t level=0);
00123
00124
00125
00126
00133 ~ArtagImageBasedVsAlgorithm(void);
00134
00135 void artag_image_based_vs(const bool& traditional,
00136 const bool& random_points,
00137 const Eigen::MatrixXd& desired_pose,
00138 const Eigen::MatrixXd& current_pose,
00139 const double& dt,
00140 const Eigen::MatrixXd& V_rollpitch,
00141 const bool& quadrotor,
00142 const Eigen::MatrixXd& kp,
00143 const Eigen::MatrixXd& kd,
00144 const Eigen::MatrixXd& ki,
00145 const double& i_lim,
00146 Eigen::MatrixXd& cam_vel);
00147
00148 CImage_Based_Vs ibvs;
00149 };
00150
00151 #endif