object_pose_detection_alg_node.cpp
Go to the documentation of this file.
00001 #include "object_pose_detection_alg_node.h"
00002 
00003 ObjectPoseDetectionAlgNode::ObjectPoseDetectionAlgNode(void) :
00004         algorithm_base::IriBaseAlgorithm<ObjectPoseDetectionAlgorithm>(),
00005         obj_pose_det_aserver_(public_node_handle_, "obj_pose_det")
00006 {
00007         //init class attributes if necessary
00008         //this->loop_rate_ = 2;//in [Hz]
00009 
00010         // [init publishers]
00011         
00012         // [init subscribers]
00013         
00014         // [init services]
00015         
00016         // [init clients]
00017         
00018         // [init action servers]
00019         obj_pose_det_aserver_.registerStartCallback(boost::bind(&ObjectPoseDetectionAlgNode::obj_pose_detStartCallback, this, _1)); 
00020         obj_pose_det_aserver_.registerStopCallback(boost::bind(&ObjectPoseDetectionAlgNode::obj_pose_detStopCallback, this)); 
00021         obj_pose_det_aserver_.registerIsFinishedCallback(boost::bind(&ObjectPoseDetectionAlgNode::obj_pose_detIsFinishedCallback, this)); 
00022         obj_pose_det_aserver_.registerHasSucceedCallback(boost::bind(&ObjectPoseDetectionAlgNode::obj_pose_detHasSucceedCallback, this)); 
00023         obj_pose_det_aserver_.registerGetResultCallback(boost::bind(&ObjectPoseDetectionAlgNode::obj_pose_detGetResultCallback, this, _1)); 
00024         obj_pose_det_aserver_.registerGetFeedbackCallback(boost::bind(&ObjectPoseDetectionAlgNode::obj_pose_detGetFeedbackCallback, this, _1)); 
00025         obj_pose_det_aserver_.start();
00026         
00027         // [init action clients]
00028 }
00029 
00030 ObjectPoseDetectionAlgNode::~ObjectPoseDetectionAlgNode(void)
00031 {
00032         // [free dynamic memory]
00033 }
00034 
00035 void ObjectPoseDetectionAlgNode::mainNodeThread(void)
00036 {
00037         // [fill msg structures]
00038         
00039         // [fill srv structure and make request to the server]
00040         
00041         // [fill action structure and make request to the action server]
00042 
00043         // [publish messages]
00044 
00045         //alg_.lock();
00046         //ok_ = alg_.detect_object(goal.image, goal.pcl);
00047         //alg_.unlock();
00048 }
00049 
00050 /*      [subscriber callbacks] */
00051 
00052 /*      [service callbacks] */
00053 
00054 /*      [action callbacks] */
00055 void ObjectPoseDetectionAlgNode::obj_pose_detStartCallback(const iri_perception_msgs::object_pose_detectionGoalConstPtr& goal)
00056 { 
00057         alg_.lock();
00058         // Joan Perez comments:
00059         //   check goal (Image + PCL2)
00060         //   image_=goal.image;
00061         //   execute goal
00062 
00063         // TODO: Check goal's correctness.
00064 
00065         this->queryImage = goal.???; //TODO: correct.
00066         alg_.unlock();
00067 } 
00068 
00069 void ObjectPoseDetectionAlgNode::obj_pose_detStopCallback(void) 
00070 { 
00071         alg_.lock(); 
00072                 //stop action 
00073         alg_.unlock(); 
00074 } 
00075 
00076 bool ObjectPoseDetectionAlgNode::obj_pose_detIsFinishedCallback(void) 
00077 { 
00078         bool ret = false; 
00079 
00080         alg_.lock(); 
00081                 //if action has finish for any reason 
00082                 //ret = ok_; 
00083         alg_.unlock(); 
00084 
00085         return ret; 
00086 } 
00087 
00088 bool ObjectPoseDetectionAlgNode::obj_pose_detHasSucceedCallback(void) 
00089 { 
00090         bool ret = false; 
00091 
00092         alg_.lock(); 
00093                 //if goal was accomplished 
00094                 //      ret = true 
00095         alg_.unlock(); 
00096 
00097         return ret; 
00098 } 
00099 
00100 void ObjectPoseDetectionAlgNode::obj_pose_detGetResultCallback(iri_perception_msgs::object_pose_detectionResultPtr& result) 
00101 { 
00102         alg_.lock(); 
00103                 //update result data to be sent to client 
00104                 //result->pose = data; 
00105         alg_.unlock(); 
00106 } 
00107 
00108 void ObjectPoseDetectionAlgNode::obj_pose_detGetFeedbackCallback(iri_perception_msgs::object_pose_detectionFeedbackPtr& feedback) 
00109 { 
00110         alg_.lock(); 
00111                 //keep track of feedback 
00112                 //ROS_INFO("feedback: %s", feedback->data.c_str()); 
00113         alg_.unlock(); 
00114 }
00115 
00116 /*      [action requests] */
00117 
00118 void ObjectPoseDetectionAlgNode::node_config_update(Config &config, uint32_t level)
00119 {
00120         this->alg_.lock();
00121 
00122         this->alg_.unlock();
00123 }
00124 
00125 void ObjectPoseDetectionAlgNode::addNodeDiagnostics(void)
00126 {
00127 }
00128 
00129 /* main function */
00130 int main(int argc,char *argv[])
00131 {
00132         return algorithm_base::main<ObjectPoseDetectionAlgNode>(argc, argv, "object_pose_detection_alg_node");
00133 }


iri_object_pose_detection
Author(s):
autogenerated on Fri Dec 6 2013 23:17:43