Go to the documentation of this file.00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 #include <ros/ros.h>
00009 #include <std_msgs/Empty.h>
00010 #include <cstdlib>
00011 #include <ardrone_autonomy/Navdata.h>
00012 
00013 std_msgs::Empty emp_msg;
00014 ardrone_autonomy::Navdata msg_in;
00015 int drone_state;
00016 
00017 void nav_callback(const ardrone_autonomy::Navdata& msg_in)
00018 {
00019                 
00020         drone_state=msg_in.state;       
00021 }
00022 
00023 int main(int argc, char** argv)
00024 {
00025         using namespace std;
00026         ROS_INFO("Reseting ARdrone");
00027         ros::init(argc, argv,"ARDrone_test");
00028     ros::NodeHandle node;
00029     ros::Rate loop_rate(50);
00030         ros::Publisher pub_empty;
00031         ros::Subscriber nav_sub;
00032 
00033         nav_sub = node.subscribe("/ardrone/navdata", 1, nav_callback);
00034         pub_empty = node.advertise<std_msgs::Empty>("/ardrone/reset", 1); 
00035         
00036         while (ros::ok()) {
00037                 double time_start=(double)ros::Time::now().toSec();
00038                                 
00039                 while ((double)ros::Time::now().toSec()< time_start+1.0 || drone_state == 0)
00040                                 {                               
00041                                 pub_empty.publish(emp_msg); 
00042                                 ROS_INFO("Sending Reset Signal");
00043                                 ros::spinOnce();
00044                                 loop_rate.sleep();
00045                                         if((double)ros::Time::now().toSec()> time_start+3.0){                                   
00046                                         
00047                                                 ROS_ERROR("Time limit reached, unable to set state of ardrone");
00048                                                 exit(0);
00049                                         }
00050                                 
00051                                 }
00052                 system("rosservice  call /ardrone/setledanimation 1 5 2");
00053                 ROS_INFO("ARdrone reset");
00054                 exit(0);
00055                 }
00056 }