dynamixel_no_gripper_driver_node.cpp
Go to the documentation of this file.
00001 #include "dynamixel_no_gripper_driver_node.h"
00002 
00003 DynamixelNoGripperDriverNode::DynamixelNoGripperDriverNode(ros::NodeHandle &nh) : 
00004     iri_base_driver::IriBaseNodeDriver<DynamixelNoGripperDriver>(nh),
00005     is_opened_(false),
00006     is_closed_(false),
00007     tool_open_aserver_(public_node_handle_, "tool_open_action"),
00008     tool_close_aserver_(public_node_handle_, "tool_close_action")
00009 {
00010     //init class attributes if necessary
00011     //this->loop_rate_ = 2;//in [Hz]
00012 
00013     // [init publishers]
00014 
00015     // [init subscribers]
00016 
00017     // [init services]
00018 
00019     // [init clients]
00020 
00021     // [init action servers]
00022     tool_open_aserver_.registerStartCallback(boost::bind(&DynamixelNoGripperDriverNode::tool_openStartCallback, this, _1)); 
00023     tool_open_aserver_.registerStopCallback(boost::bind(&DynamixelNoGripperDriverNode::tool_openStopCallback, this)); 
00024     tool_open_aserver_.registerIsFinishedCallback(boost::bind(&DynamixelNoGripperDriverNode::tool_openIsFinishedCallback, this)); 
00025     tool_open_aserver_.registerHasSucceedCallback(boost::bind(&DynamixelNoGripperDriverNode::tool_openHasSucceedCallback, this)); 
00026     tool_open_aserver_.registerGetResultCallback(boost::bind(&DynamixelNoGripperDriverNode::tool_openGetResultCallback, this, _1)); 
00027     tool_open_aserver_.registerGetFeedbackCallback(boost::bind(&DynamixelNoGripperDriverNode::tool_openGetFeedbackCallback, this, _1)); 
00028     tool_open_aserver_.start();
00029 
00030     tool_close_aserver_.registerStartCallback(boost::bind(&DynamixelNoGripperDriverNode::tool_closeStartCallback, this, _1)); 
00031     tool_close_aserver_.registerStopCallback(boost::bind(&DynamixelNoGripperDriverNode::tool_closeStopCallback, this)); 
00032     tool_close_aserver_.registerIsFinishedCallback(boost::bind(&DynamixelNoGripperDriverNode::tool_closeIsFinishedCallback, this)); 
00033     tool_close_aserver_.registerHasSucceedCallback(boost::bind(&DynamixelNoGripperDriverNode::tool_closeHasSucceedCallback, this)); 
00034     tool_close_aserver_.registerGetResultCallback(boost::bind(&DynamixelNoGripperDriverNode::tool_closeGetResultCallback, this, _1)); 
00035     tool_close_aserver_.registerGetFeedbackCallback(boost::bind(&DynamixelNoGripperDriverNode::tool_closeGetFeedbackCallback, this, _1)); 
00036     tool_close_aserver_.start();
00037 
00038     // [init action clients]
00039 }
00040 
00041 void DynamixelNoGripperDriverNode::mainNodeThread(void)
00042 {
00043     //lock access to driver if necessary
00044     this->driver_.lock();
00045 
00046     // [fill msg Header if necessary]
00047     //<publisher_name>.header.stamp = ros::Time::now();
00048     //<publisher_name>.header.frame_id = "<publisher_topic_name>";
00049 
00050     // [fill msg structures]
00051 
00052     // [fill srv structure and make request to the server]
00053 
00054     // [fill action structure and make request to the action server]
00055 
00056     // [publish messages]
00057 
00058     //unlock access to driver if previously blocked
00059     this->driver_.unlock();
00060 }
00061 
00062 /*  [subscriber callbacks] */
00063 
00064 /*  [service callbacks] */
00065 
00066 /*  [action callbacks] */
00067 void DynamixelNoGripperDriverNode::tool_openStartCallback(const iri_common_drivers_msgs::tool_openGoalConstPtr& goal)
00068 { 
00069     driver_.lock(); 
00070 
00071     try
00072     {
00073         if (!driver_.open_gripper())
00074         {
00075             ROS_ERROR("Unable to open gripper");
00076             is_opened_ = false;
00077         }
00078         is_opened_ = true;
00079     }
00080     catch(...)
00081     {
00082         ROS_WARN("Uncatched exception");
00083     }
00084 
00085     driver_.unlock(); 
00086 } 
00087 
00088 void DynamixelNoGripperDriverNode::tool_openStopCallback(void) 
00089 { 
00090     driver_.lock(); 
00091     //stop action 
00092     try{
00093         driver_.stop_gripper();
00094     }catch(...){
00095         ROS_WARN("Uncatched exception");
00096     }
00097     driver_.unlock(); 
00098 } 
00099 
00100 bool DynamixelNoGripperDriverNode::tool_openIsFinishedCallback(void) 
00101 { 
00102     bool ret = false; 
00103 
00104     driver_.lock(); 
00105 
00106     if (driver_.is_at_max_angle())
00107     {
00108         ret = true; 
00109     }
00110 
00111     driver_.unlock(); 
00112 
00113     return ret; 
00114 } 
00115 
00116 bool DynamixelNoGripperDriverNode::tool_openHasSucceedCallback(void) 
00117 { 
00118     bool ret = false; 
00119 
00120     driver_.lock(); 
00121     //if goal was accomplished
00122     driver_.disable_gripper(); 
00123     ret = true; 
00124     driver_.unlock(); 
00125 
00126     return ret; 
00127 } 
00128 
00129 void DynamixelNoGripperDriverNode::tool_openGetResultCallback(iri_common_drivers_msgs::tool_openResultPtr& result) 
00130 { 
00131     driver_.lock(); 
00132     //update result data to be sent to client 
00133     result->successful = is_opened_;
00134     driver_.unlock(); 
00135 } 
00136 
00137 void DynamixelNoGripperDriverNode::tool_openGetFeedbackCallback(iri_common_drivers_msgs::tool_openFeedbackPtr& feedback) 
00138 { 
00139     driver_.lock(); 
00140     try
00141     {
00142         feedback->angle = driver_.get_current_angle();
00143         feedback->effort = driver_.get_current_effort();
00144         ROS_INFO("[angle]: %f, [effort]: %f", feedback->angle, feedback->effort); 
00145     }
00146     catch(...)
00147     {
00148         ROS_WARN("Uncatched exception");
00149     }
00150     driver_.unlock(); 
00151 }
00152 void DynamixelNoGripperDriverNode::tool_closeStartCallback(const iri_common_drivers_msgs::tool_closeGoalConstPtr& goal)
00153 { 
00154     driver_.lock(); 
00155 
00156     try
00157     {
00158         is_closed_ = true;
00159 
00160         if (!driver_.close_gripper())
00161         {
00162             ROS_ERROR("Unable to close gripper");
00163             is_closed_ = false;
00164         }
00165     }
00166     catch(...)
00167     {
00168         ROS_WARN("Uncatched exception");
00169     }
00170 
00171     driver_.unlock(); 
00172 } 
00173 
00174 void DynamixelNoGripperDriverNode::tool_closeStopCallback(void) 
00175 { 
00176     driver_.lock(); 
00177     //stop action 
00178     try{
00179         driver_.stop_gripper();
00180     }catch(...){
00181         ROS_WARN("Uncatched exception");
00182     }
00183     driver_.unlock(); 
00184 } 
00185 
00186 bool DynamixelNoGripperDriverNode::tool_closeIsFinishedCallback(void) 
00187 { 
00188     bool ret = false; 
00189 
00190     driver_.lock(); 
00191 
00192     if (driver_.is_at_min_angle())
00193     {
00194         ret = true; 
00195     }
00196 
00197     driver_.unlock(); 
00198 
00199     return ret; 
00200 } 
00201 
00202 bool DynamixelNoGripperDriverNode::tool_closeHasSucceedCallback(void) 
00203 { 
00204     bool ret = false; 
00205 
00206     driver_.lock(); 
00207     //if goal was accomplished 
00208     ret = true; 
00209     driver_.unlock(); 
00210 
00211     return ret; 
00212 } 
00213 
00214 void DynamixelNoGripperDriverNode::tool_closeGetResultCallback(iri_common_drivers_msgs::tool_closeResultPtr& result) 
00215 { 
00216     driver_.lock(); 
00217     //update result data to be sent to client 
00218     result->successful = is_closed_; 
00219     driver_.unlock(); 
00220 } 
00221 
00222 void DynamixelNoGripperDriverNode::tool_closeGetFeedbackCallback(iri_common_drivers_msgs::tool_closeFeedbackPtr& feedback) 
00223 { 
00224     driver_.lock(); 
00225     try
00226     {
00227         feedback->angle = driver_.get_current_angle();
00228         feedback->effort = driver_.get_current_effort();
00229         ROS_INFO("[angle]: %f, [effort]: %f", feedback->angle, feedback->effort); 
00230     }
00231     catch(...)
00232     {
00233         ROS_WARN("Uncatched exception");
00234     }
00235     driver_.unlock(); 
00236 }
00237 
00238 /*  [action requests] */
00239 
00240 void DynamixelNoGripperDriverNode::postNodeOpenHook(void)
00241 {
00242 }
00243 
00244 void DynamixelNoGripperDriverNode::addNodeDiagnostics(void)
00245 {
00246 }
00247 
00248 void DynamixelNoGripperDriverNode::addNodeOpenedTests(void)
00249 {
00250 }
00251 
00252 void DynamixelNoGripperDriverNode::addNodeStoppedTests(void)
00253 {
00254 }
00255 
00256 void DynamixelNoGripperDriverNode::addNodeRunningTests(void)
00257 {
00258 }
00259 
00260 void DynamixelNoGripperDriverNode::reconfigureNodeHook(int level)
00261 {
00262 }
00263 
00264 DynamixelNoGripperDriverNode::~DynamixelNoGripperDriverNode(void)
00265 {
00266     // [free dynamic memory]
00267 }
00268 
00269 /* main function */
00270 int main(int argc,char *argv[])
00271 {
00272     return driver_base::main<DynamixelNoGripperDriverNode>(argc, argv, "dynamixel_no_gripper_driver_node");
00273 }


iri_dynamixel_no_gripper
Author(s): Sergi Foix
autogenerated on Fri Dec 6 2013 20:00:46