Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 #ifndef MOVEIT_PLANNING_REQUEST_ADAPTER_PLANNING_REQUEST_ADAPTER_
00038 #define MOVEIT_PLANNING_REQUEST_ADAPTER_PLANNING_REQUEST_ADAPTER_
00039
00040 #include <moveit/planning_interface/planning_interface.h>
00041 #include <moveit/planning_scene/planning_scene.h>
00042 #include <boost/function.hpp>
00043
00045 namespace planning_request_adapter
00046 {
00047
00048 class PlanningRequestAdapter
00049 {
00050 public:
00051
00052 typedef boost::function<bool(const planning_scene::PlanningSceneConstPtr& planning_scene,
00053 const planning_interface::MotionPlanRequest &req, planning_interface::MotionPlanResponse &res)> PlannerFn;
00054
00055 PlanningRequestAdapter()
00056 {
00057 }
00058
00059 virtual ~PlanningRequestAdapter()
00060 {
00061 }
00062
00064 virtual std::string getDescription() const { return ""; }
00065
00066 bool adaptAndPlan(const planning_interface::PlannerManagerPtr &planner,
00067 const planning_scene::PlanningSceneConstPtr& planning_scene,
00068 const planning_interface::MotionPlanRequest &req,
00069 planning_interface::MotionPlanResponse &res) const;
00070
00071 bool adaptAndPlan(const planning_interface::PlannerManagerPtr &planner,
00072 const planning_scene::PlanningSceneConstPtr& planning_scene,
00073 const planning_interface::MotionPlanRequest &req,
00074 planning_interface::MotionPlanResponse &res,
00075 std::vector<std::size_t> &added_path_index) const;
00076
00082 virtual bool adaptAndPlan(const PlannerFn &planner,
00083 const planning_scene::PlanningSceneConstPtr& planning_scene,
00084 const planning_interface::MotionPlanRequest &req,
00085 planning_interface::MotionPlanResponse &res,
00086 std::vector<std::size_t> &added_path_index) const = 0;
00087
00088 };
00089
00090 typedef boost::shared_ptr<PlanningRequestAdapter> PlanningRequestAdapterPtr;
00091 typedef boost::shared_ptr<const PlanningRequestAdapter> PlanningRequestAdapterConstPtr;
00092
00094 class PlanningRequestAdapterChain
00095 {
00096 public:
00097 PlanningRequestAdapterChain()
00098 {
00099 }
00100
00101 void addAdapter(const PlanningRequestAdapterConstPtr &adapter)
00102 {
00103 adapters_.push_back(adapter);
00104 }
00105
00106 bool adaptAndPlan(const planning_interface::PlannerManagerPtr &planner,
00107 const planning_scene::PlanningSceneConstPtr& planning_scene,
00108 const planning_interface::MotionPlanRequest &req,
00109 planning_interface::MotionPlanResponse &res) const;
00110
00111 bool adaptAndPlan(const planning_interface::PlannerManagerPtr &planner,
00112 const planning_scene::PlanningSceneConstPtr& planning_scene,
00113 const planning_interface::MotionPlanRequest &req,
00114 planning_interface::MotionPlanResponse &res,
00115 std::vector<std::size_t> &added_path_index) const;
00116
00117 private:
00118 std::vector<PlanningRequestAdapterConstPtr> adapters_;
00119 };
00120
00121
00122 }
00123
00124 #endif