actionExecutorOpenDoor.cpp
Go to the documentation of this file.
00001 #include "tidyup_actions/actionExecutorOpenDoor.h"
00002 #include <pluginlib/class_list_macros.h>
00003 #include "tidyup_utils/planning_scene_interface.h"
00004 
00005 PLUGINLIB_DECLARE_CLASS(tidyup_actions, action_executor_open_door,
00006         tidyup_actions::ActionExecutorOpenDoor,
00007         continual_planning_executive::ActionExecutorInterface)
00008 
00009 namespace tidyup_actions
00010 {
00011 
00012     bool ActionExecutorOpenDoor::fillGoal(tidyup_msgs::OpenDoorGoal & goal,
00013             const DurativeAction & a, const SymbolicState & current)
00014     {
00015         if(!PlanningSceneInterface::instance()->resetPlanningScene())   // FIXME try anyways?
00016             ROS_ERROR("%s: PlanningScene reset failed.", __PRETTY_FUNCTION__);
00017 
00018         ROS_ASSERT(a.parameters.size() == 3);
00019         string location = a.parameters[0];
00020         string door = a.parameters[1];
00021         string arm = a.parameters[2];
00022 
00023         // set arm
00024         goal.left_arm = false;
00025         goal.right_arm = false;
00026         if(arm == "left_arm") {
00027             goal.left_arm = true;
00028         }
00029         if(arm == "right_arm") {
00030             goal.right_arm = true;
00031         }
00032         return goal.right_arm || goal.left_arm;
00033     }
00034 
00035     void ActionExecutorOpenDoor::updateState(const actionlib::SimpleClientGoalState & actionReturnState,
00036             const tidyup_msgs::OpenDoorResult & result,
00037             const DurativeAction & a, SymbolicState & current)
00038     {
00039         ROS_INFO("OpenDoor returned result");
00040         ROS_ASSERT(a.parameters.size() == 3);
00041         string location = a.parameters[0];
00042         string door = a.parameters[1];
00043         string arm = a.parameters[2];
00044         if(actionReturnState == actionlib::SimpleClientGoalState::SUCCEEDED) {
00045             ROS_INFO("OpenDoor succeeded.");
00046             current.setBooleanPredicate("door-open", door, true);
00047         }
00048         current.setObjectFluent("arm-state", arm, "arm_unknown");
00049         current.setBooleanPredicate("door-state-known", door, false);
00050     }
00051 
00052 };
00053 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Properties Friends


tidyup_actions
Author(s): Christian Dornhege, Andreas Hertle
autogenerated on Wed Dec 26 2012 16:11:46