00001 /* 00002 * FeatureTracker.h 00003 * 00004 * Author: roberto 00005 * 00006 * This is a modified implementation of the method for online estimation of kinematic structures described in our paper 00007 * "Online Interactive Perception of Articulated Objects with Multi-Level Recursive Estimation Based on Task-Specific Priors" 00008 * (Martín-Martín and Brock, 2014). 00009 * This implementation can be used to reproduce the results of the paper and to be applied to new research. 00010 * The implementation allows also to be extended to perceive different information/models or to use additional sources of information. 00011 * A detail explanation of the method and the system can be found in our paper. 00012 * 00013 * If you are using this implementation in your research, please consider citing our work: 00014 * 00015 @inproceedings{martinmartin_ip_iros_2014, 00016 Title = {Online Interactive Perception of Articulated Objects with Multi-Level Recursive Estimation Based on Task-Specific Priors}, 00017 Author = {Roberto {Mart\'in-Mart\'in} and Oliver Brock}, 00018 Booktitle = {Proceedings of the IEEE/RSJ International Conference on Intelligent Robots and Systems}, 00019 Pages = {2494-2501}, 00020 Year = {2014}, 00021 Location = {Chicago, Illinois, USA}, 00022 Note = {http://www.robotics.tu-berlin.de/fileadmin/fg170/Publikationen_pdf/martinmartin_ip_iros_2014.pdf}, 00023 Url = {http://www.robotics.tu-berlin.de/fileadmin/fg170/Publikationen_pdf/martinmartin_ip_iros_2014.pdf}, 00024 Projectname = {Interactive Perception} 00025 } 00026 * If you have questions or suggestions, contact us: 00027 * roberto.martinmartin@tu-berlin.de 00028 * 00029 * Enjoy! 00030 */ 00031 00032 #ifndef FEATURE_TRACKER_H_ 00033 #define FEATURE_TRACKER_H_ 00034 00035 #include <omip_common/RecursiveEstimatorFilterInterface.h> 00036 #include <omip_common/OMIPTypeDefs.h> 00037 #include <omip_common/FeaturesDataBase.h> 00038 00039 //ROS and OpenCV 00040 #include <opencv2/features2d/features2d.hpp> 00041 #include <opencv2/core/core.hpp> 00042 #include <camera_info_manager/camera_info_manager.h> 00043 #include <feature_tracker/FeatureTrackerDynReconfConfig.h> 00044 00045 namespace omip 00046 { 00047 00054 class FeatureTracker : public RecursiveEstimatorFilterInterface<ft_state_t, ft_measurement_t> 00055 { 00056 public: 00057 00062 FeatureTracker(double loop_period_ns) : 00063 RecursiveEstimatorFilterInterface(loop_period_ns) 00064 { 00065 } 00066 00071 virtual ~FeatureTracker() 00072 { 00073 } 00074 00080 virtual void predictState(double time_interval_ns) = 0; 00081 00088 virtual void correctState() = 0; 00089 00095 virtual ft_state_t getState() const = 0; 00096 00101 virtual void setFullRGBDPC(PointCloudPCL::ConstPtr full_rgb_pc) 00102 { 00103 } 00104 00109 virtual void setOcclusionMaskImg(cv_bridge::CvImagePtr occ_mask_img) 00110 { 00111 } 00112 00118 virtual void setCameraInfoMsg(const sensor_msgs::CameraInfo* camera_info) 00119 { 00120 } 00121 00122 virtual void setDynamicReconfigureValues(feature_tracker::FeatureTrackerDynReconfConfig &config) =0; 00123 00124 virtual cv_bridge::CvImagePtr getRGBImg() 00125 { 00126 return cv_bridge::CvImagePtr(new cv_bridge::CvImage()); 00127 } 00128 00129 virtual cv_bridge::CvImagePtr getDepthImg() 00130 { 00131 return cv_bridge::CvImagePtr(new cv_bridge::CvImage()); 00132 } 00133 00138 virtual cv_bridge::CvImagePtr getTrackedFeaturesImg() 00139 { 00140 return cv_bridge::CvImagePtr(new cv_bridge::CvImage()); 00141 } 00142 00148 virtual cv_bridge::CvImagePtr getTrackedFeaturesWithPredictionMaskImg() 00149 { 00150 return cv_bridge::CvImagePtr(new cv_bridge::CvImage()); 00151 } 00152 00157 virtual cv_bridge::CvImagePtr getDepthEdgesImg() 00158 { 00159 return cv_bridge::CvImagePtr(new cv_bridge::CvImage()); 00160 } 00161 00166 virtual cv_bridge::CvImagePtr getPredictingMaskImg() 00167 { 00168 return cv_bridge::CvImagePtr(new cv_bridge::CvImage()); 00169 } 00170 00175 virtual cv_bridge::CvImagePtr getTrackingMaskImg() 00176 { 00177 return cv_bridge::CvImagePtr(new cv_bridge::CvImage()); 00178 } 00179 00184 virtual cv_bridge::CvImagePtr getDetectingMaskImg() 00185 { 00186 return cv_bridge::CvImagePtr(new cv_bridge::CvImage()); 00187 } 00188 00193 virtual cv_bridge::CvImagePtr getPredictedAndLastFeaturesImg() 00194 { 00195 return cv_bridge::CvImagePtr(new cv_bridge::CvImage()); 00196 } 00197 }; 00198 } 00199 00200 #endif /* FEATURE_TRACKER_H_ */