actionExecutorPutdownObject.cpp
Go to the documentation of this file.
00001 #include "tidyup_actions/actionExecutorPutdownObject.h"
00002 #include <pluginlib/class_list_macros.h>
00003 #include "tidyup_msgs/GetPutdownPose.h"
00004 #include "arm_navigation_msgs/ArmNavigationErrorCodes.h"
00005 #include <arm_navigation_msgs/convert_messages.h>
00006 #include "tidyup_utils/planning_scene_interface.h"
00007 
00008 PLUGINLIB_DECLARE_CLASS(tidyup_actions, action_executor_putdown_object,
00009         tidyup_actions::ActionExecutorPutdownObject,
00010         continual_planning_executive::ActionExecutorInterface)
00011 
00012 namespace tidyup_actions
00013 {
00014     bool ActionExecutorPutdownObject::fillGoal(tidyup_msgs::PlaceObjectGoal & goal,
00015             const DurativeAction & a, const SymbolicState & current)
00016     {
00017         if(!PlanningSceneInterface::instance()->resetPlanningScene())   // FIXME try anyways?
00018             ROS_ERROR("%s: PlanningScene reset failed.", __PRETTY_FUNCTION__);
00019 
00020         ROS_ASSERT(a.parameters.size() == 4);
00021         string location = a.parameters[0];
00022         goal.putdown_object = a.parameters[1];
00023         goal.static_object = a.parameters[2];
00024         goal.arm = a.parameters[3];
00025         return true;
00026     }
00027 
00028     void ActionExecutorPutdownObject::updateState(const actionlib::SimpleClientGoalState & actionReturnState,
00029             const tidyup_msgs::PlaceObjectResult & result,
00030             const DurativeAction & a, SymbolicState & current)
00031     {
00032         ROS_INFO("PutdownObject returned result");
00033         ROS_ASSERT(a.parameters.size() == 4);
00034         string location = a.parameters[0];
00035         string object = a.parameters[1];
00036         string static_object = a.parameters[2];
00037         string arm = a.parameters[3];
00038         if(actionReturnState == actionlib::SimpleClientGoalState::SUCCEEDED) {
00039             ROS_INFO("PutdownObject succeeded.");
00040             current.setBooleanPredicate("grasped", object + " " + arm, false);
00041             current.setBooleanPredicate("on", object + " " + static_object, true);
00042             current.setBooleanPredicate("graspable-from", object + " " + location + " " + arm, true);
00043             current.setBooleanPredicate("searched", location, false);
00044             current.setNumericalFluent("x", object, result.putdown_pose.pose.position.x);
00045             current.setNumericalFluent("y", object, result.putdown_pose.pose.position.y);
00046             current.setNumericalFluent("z", object, result.putdown_pose.pose.position.z);
00047             current.setNumericalFluent("qx", object, result.putdown_pose.pose.orientation.x);
00048             current.setNumericalFluent("qy", object, result.putdown_pose.pose.orientation.y);
00049             current.setNumericalFluent("qz", object, result.putdown_pose.pose.orientation.z);
00050             current.setNumericalFluent("qw", object, result.putdown_pose.pose.orientation.w);
00051             current.setNumericalFluent("timestamp", object, result.putdown_pose.header.stamp.sec);
00052             current.setObjectFluent("frame-id", object, result.putdown_pose.header.frame_id);
00053             //current.setObjectFluent("object-detected-from", object, location); // FIXME hack, reset this
00054         }
00055         current.setObjectFluent("arm-state", arm, "arm_unknown");
00056         current.setBooleanPredicate("recent-detected-objects", location, false);
00057     }
00058 };
00059 
 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