00001 00032 #ifndef ZBAR_ROS_ZBAR_ROS_NODELET_H 00033 #define ZBAR_ROS_ZBAR_ROS_NODELET_H 00034 00035 #include "ros/ros.h" 00036 #include "opencv/cv.h" 00037 #include "cv_bridge/cv_bridge.h" 00038 #include "zbar.h" 00039 #include "boost/unordered_map.hpp" 00040 #include <string> 00041 #include "nodelet/nodelet.h" 00042 00043 namespace zbar_ros 00044 { 00045 00046 class BarcodeReaderNodelet : public nodelet::Nodelet 00047 { 00048 public: 00049 BarcodeReaderNodelet(); 00050 00051 private: 00052 virtual void onInit(); 00053 void connectCb(); 00054 void disconnectCb(); 00055 void imageCb(const sensor_msgs::ImageConstPtr &image); 00056 void cleanCb(); 00057 00058 ros::NodeHandle nh_, private_nh_; 00059 ros::Subscriber camera_sub_; 00060 ros::Publisher barcode_pub_; 00061 ros::Timer clean_timer_; 00062 zbar::ImageScanner scanner_; 00063 boost::unordered_map<std::string, ros::Time> barcode_memory_; 00064 00065 double throttle_; 00066 }; 00067 00068 } // namespace zbar_ros 00069 00070 #endif // ZBAR_ROS_ZBAR_ROS_NODELET_H