@@ -45,6 +45,7 @@ planning_interface::MotionPlanResponse
45
45
plan (std::shared_ptr<moveit_cpp::PlanningComponent>& planning_component,
46
46
std::shared_ptr<moveit_cpp::PlanningComponent::PlanRequestParameters>& single_plan_parameters,
47
47
std::shared_ptr<moveit_cpp::PlanningComponent::MultiPipelinePlanRequestParameters>& multi_plan_parameters,
48
+ std::shared_ptr<planning_scene::PlanningScene>& planning_scene,
48
49
std::optional<const moveit::planning_pipeline_interfaces::SolutionSelectionFunction> solution_selection_function,
49
50
std::optional<moveit::planning_pipeline_interfaces::StoppingCriterionFunction> stopping_criterion_callback)
50
51
{
@@ -61,7 +62,7 @@ plan(std::shared_ptr<moveit_cpp::PlanningComponent>& planning_component,
61
62
std::shared_ptr<const moveit_cpp::PlanningComponent::PlanRequestParameters> const_single_plan_parameters =
62
63
std::const_pointer_cast<const moveit_cpp::PlanningComponent::PlanRequestParameters>(single_plan_parameters);
63
64
64
- return planning_component->plan (*const_single_plan_parameters);
65
+ return planning_component->plan (*const_single_plan_parameters, planning_scene );
65
66
}
66
67
else if (multi_plan_parameters)
67
68
{
@@ -73,25 +74,32 @@ plan(std::shared_ptr<moveit_cpp::PlanningComponent>& planning_component,
73
74
if (solution_selection_function && stopping_criterion_callback)
74
75
{
75
76
return planning_component->plan (*const_multi_plan_parameters, std::ref (*solution_selection_function),
76
- *stopping_criterion_callback);
77
+ *stopping_criterion_callback, planning_scene );
77
78
}
78
79
else if (solution_selection_function)
79
80
{
80
- return planning_component->plan (*const_multi_plan_parameters, std::ref (*solution_selection_function));
81
+ return planning_component->plan (*const_multi_plan_parameters, std::ref (*solution_selection_function), nullptr ,
82
+ planning_scene);
81
83
}
82
84
else if (stopping_criterion_callback)
83
85
{
84
86
return planning_component->plan (*const_multi_plan_parameters,
85
87
moveit::planning_pipeline_interfaces::getShortestSolution,
86
- *stopping_criterion_callback);
88
+ *stopping_criterion_callback, planning_scene );
87
89
}
88
90
else
89
91
{
90
- return planning_component->plan (*const_multi_plan_parameters);
92
+ return planning_component->plan (*const_multi_plan_parameters,
93
+ moveit::planning_pipeline_interfaces::getShortestSolution, nullptr ,
94
+ planning_scene);
91
95
}
92
96
}
93
97
else
94
98
{
99
+ if (planning_scene)
100
+ {
101
+ throw std::invalid_argument (" Cannot specify planning scene without specifying plan parameters" );
102
+ }
95
103
return planning_component->plan ();
96
104
}
97
105
}
@@ -322,8 +330,9 @@ void init_planning_component(py::module& m)
322
330
323
331
// TODO (peterdavidfagan): improve the plan API
324
332
.def (" plan" , &moveit_py::bind_planning_component::plan, py::arg (" single_plan_parameters" ) = nullptr ,
325
- py::arg (" multi_plan_parameters" ) = nullptr , py::arg (" solution_selection_function" ) = nullptr ,
326
- py::arg (" stopping_criterion_callback" ) = nullptr , py::return_value_policy::move,
333
+ py::arg (" multi_plan_parameters" ) = nullptr , py::arg (" planning_scene" ) = nullptr ,
334
+ py::arg (" solution_selection_function" ) = nullptr , py::arg (" stopping_criterion_callback" ) = nullptr ,
335
+ py::return_value_policy::move,
327
336
R"(
328
337
Plan a motion plan using the current start and goal states.
329
338
0 commit comments