ObjectRecognitionServer.h
Go to the documentation of this file.
00001 #include <ros/ros.h>
00002 #include <ros/callback_queue.h>
00003 #include <iostream>
00004 #include <vector>
00005 #include <string>
00006 #include <exception>
00007 #include <cstdlib>
00008 
00009 #include <boost/thread/thread.hpp>
00010 #include <boost/thread/mutex.hpp>
00011 #include <boost/thread/recursive_mutex.hpp>
00012 #include <Eigen/Geometry>
00013 
00014 #include <pcl/visualization/pcl_visualizer.h>
00015 #include <tidyup_msgs/DetectGraspableObjects.h>
00016 #include <narf_recognition/object_recognition_helper.h>
00017 
00018 class ObjectRecognitionServer {
00019 public:
00020 
00021         ObjectRecognitionServer(ros::NodeHandle& n);
00022         ~ObjectRecognitionServer();
00023 
00024         ros::NodeHandle nh_;
00025 
00026         float noise_level_factor_; // Factor regarding average model radius
00027         float support_size_factor_; // Factor regarding average model radius
00028         float minimum_plane_size_;
00029         float initial_max_plane_error_;
00030         bool show_found_objects_;
00031         bool cloud_received_;
00032         bool cloud_thread_shutdown_;
00033         bool visualize_result_;
00034 
00035         ros::NodeHandle cloud_nh_;
00036         boost::thread * cloud_thread_;
00037         ros::CallbackQueue cloud_callback_queue_;
00038         boost::recursive_mutex mutex_;
00039 
00040         ros::Subscriber sub_;
00041         ros::ServiceServer serv_;
00042         ros::Publisher marker_pub_;
00043 
00044         pcl::ObjectRecognitionHelper object_recognition_helper_;
00045         pcl::ObjectModelList object_models_;
00046         pcl::PointCloud<pcl::PointXYZ> point_cloud_;
00047         pcl::visualization::PCLVisualizer* viewer_;
00048 
00049         std::vector<std::string> modelnames_;
00050 
00051         void runThreadCallbackLoop();
00052         void getModels(std::vector<std::string> model_filenames);
00053         void cloud_cb_(const sensor_msgs::PointCloud2 msg);
00054         void visualize(pcl::visualization::PCLVisualizer& viewer,
00055                         std::vector<pcl::PosesFromMatches::PoseEstimatesVector>& pose_estimates_per_model,
00056                         std::vector<std::string>& point_clouds_in_viewer);
00057         bool locate(tidyup_msgs::DetectGraspableObjects::Request &req,
00058                         tidyup_msgs::DetectGraspableObjects::Response &res);
00059 };
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Properties Friends Defines


narf_recognition
Author(s): Juergen Hess
autogenerated on Wed Dec 26 2012 16:37:09