simple_navigation_goals.cpp
Go to the documentation of this file.
00001 /*********************************************************************
00002 *
00003 * Software License Agreement (BSD License)
00004 *
00005 *  Copyright (c) 2008, Willow Garage, Inc.
00006 *  All rights reserved.
00007 *
00008 *  Redistribution and use in source and binary forms, with or without
00009 *  modification, are permitted provided that the following conditions
00010 *  are met:
00011 *
00012 *   * Redistributions of source code must retain the above copyright
00013 *     notice, this list of conditions and the following disclaimer.
00014 *   * Redistributions in binary form must reproduce the above
00015 *     copyright notice, this list of conditions and the following
00016 *     disclaimer in the documentation and/or other materials provided
00017 *     with the distribution.
00018 *   * Neither the name of Willow Garage, Inc. nor the names of its
00019 *     contributors may be used to endorse or promote products derived
00020 *     from this software without specific prior written permission.
00021 *
00022 *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
00023 *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
00024 *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
00025 *  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
00026 *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
00027 *  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
00028 *  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
00029 *  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
00030 *  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
00031 *  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
00032 *  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
00033 *  POSSIBILITY OF SUCH DAMAGE.
00034 *
00035 * Author: Eitan Marder-Eppstein
00036 *
00037 * For a discussion of this tutorial, please see:
00038 * http://pr.willowgarage.com/wiki/navigation/Tutorials/SendingSimpleGoals
00039 *********************************************************************/
00040 #include <ros/ros.h>
00041 #include <move_base_msgs/MoveBaseAction.h>
00042 #include <actionlib/client/simple_action_client.h>
00043 #include <tf/transform_datatypes.h>
00044 
00045 #include <boost/thread.hpp>
00046 
00047 typedef actionlib::SimpleActionClient<move_base_msgs::MoveBaseAction> MoveBaseClient;
00048 
00049 void spinThread(){
00050   ros::spin();
00051 }
00052 
00053 int main(int argc, char** argv){
00054   ros::init(argc, argv, "simple_navigation_goals");
00055 
00056   ros::NodeHandle n;
00057 
00058   boost::thread spin_thread = boost::thread(boost::bind(&spinThread));
00059 
00060   MoveBaseClient ac("pose_base_controller");
00061 
00062   //give some time for connections to register
00063   sleep(2.0);
00064 
00065   move_base_msgs::MoveBaseGoal goal;
00066 
00067   //we'll send a goal to the robot to move 2 meters forward
00068   goal.target_pose.header.frame_id = "base_link";
00069   goal.target_pose.header.stamp = ros::Time::now();
00070 
00071   goal.target_pose.pose.position.x = 2.0;
00072   goal.target_pose.pose.position.y = 0.2;
00073   goal.target_pose.pose.orientation = tf::createQuaternionMsgFromYaw(M_PI);
00074 
00075   ROS_INFO("Sending goal");
00076   ac.sendGoal(goal);
00077 
00078   ac.waitForResult();
00079 
00080   if(ac.getState() == actionlib::SimpleClientGoalState::SUCCEEDED)
00081     ROS_INFO("Hooray, the base moved 2 meters forward");
00082   else
00083     ROS_INFO("The base failed to move forward 2 meters for some reason");
00084 
00085   return 0;
00086 }


simple_navigation_goals_tutorial
Author(s): Eitan Marder-Eppstein
autogenerated on Thu Jan 2 2014 11:32:09