Skip to content

Commit c2290ac

Browse files
mergify[bot]JensVanhooydoncksjahr
authored
[Python] Add Allowed Collision Matrix to planning scene and optional planning scene during planning (backport #2387) (#2479)
(cherry picked from commit 7b621d7) Co-authored-by: Jens Vanhooydonck <jensvanhooydonck@gmail.com> Co-authored-by: Sebastian Jahr <sebastian.jahr@picknik.ai>
1 parent 0aeb59b commit c2290ac

File tree

4 files changed

+21
-8
lines changed

4 files changed

+21
-8
lines changed

moveit_py/moveit/core/planning_scene.pyi

+2
Original file line numberDiff line numberDiff line change
@@ -29,3 +29,5 @@ class PlanningScene:
2929
def robot_model(self) -> Any: ...
3030
@property
3131
def transforms(self) -> Any: ...
32+
@property
33+
def allowed_collision_matrix(self) -> Any: ...

moveit_py/src/moveit/moveit_core/planning_scene/planning_scene.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,8 @@ void init_planning_scene(py::module& m)
112112
py::return_value_policy::move)
113113

114114
.def_property("transforms", py::overload_cast<>(&planning_scene::PlanningScene::getTransforms), nullptr)
115-
115+
.def_property("allowed_collision_matrix", &planning_scene::PlanningScene::getAllowedCollisionMatrix, nullptr,
116+
py::return_value_policy::move)
116117
// methods
117118
.def("__copy__",
118119
[](const planning_scene::PlanningScene* self) {

moveit_py/src/moveit/moveit_ros/moveit_cpp/planning_component.cpp

+16-7
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ planning_interface::MotionPlanResponse
4545
plan(std::shared_ptr<moveit_cpp::PlanningComponent>& planning_component,
4646
std::shared_ptr<moveit_cpp::PlanningComponent::PlanRequestParameters>& single_plan_parameters,
4747
std::shared_ptr<moveit_cpp::PlanningComponent::MultiPipelinePlanRequestParameters>& multi_plan_parameters,
48+
std::shared_ptr<planning_scene::PlanningScene>& planning_scene,
4849
std::optional<const moveit::planning_pipeline_interfaces::SolutionSelectionFunction> solution_selection_function,
4950
std::optional<moveit::planning_pipeline_interfaces::StoppingCriterionFunction> stopping_criterion_callback)
5051
{
@@ -61,7 +62,7 @@ plan(std::shared_ptr<moveit_cpp::PlanningComponent>& planning_component,
6162
std::shared_ptr<const moveit_cpp::PlanningComponent::PlanRequestParameters> const_single_plan_parameters =
6263
std::const_pointer_cast<const moveit_cpp::PlanningComponent::PlanRequestParameters>(single_plan_parameters);
6364

64-
return planning_component->plan(*const_single_plan_parameters);
65+
return planning_component->plan(*const_single_plan_parameters, planning_scene);
6566
}
6667
else if (multi_plan_parameters)
6768
{
@@ -73,25 +74,32 @@ plan(std::shared_ptr<moveit_cpp::PlanningComponent>& planning_component,
7374
if (solution_selection_function && stopping_criterion_callback)
7475
{
7576
return planning_component->plan(*const_multi_plan_parameters, std::ref(*solution_selection_function),
76-
*stopping_criterion_callback);
77+
*stopping_criterion_callback, planning_scene);
7778
}
7879
else if (solution_selection_function)
7980
{
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);
8183
}
8284
else if (stopping_criterion_callback)
8385
{
8486
return planning_component->plan(*const_multi_plan_parameters,
8587
moveit::planning_pipeline_interfaces::getShortestSolution,
86-
*stopping_criterion_callback);
88+
*stopping_criterion_callback, planning_scene);
8789
}
8890
else
8991
{
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);
9195
}
9296
}
9397
else
9498
{
99+
if (planning_scene)
100+
{
101+
throw std::invalid_argument("Cannot specify planning scene without specifying plan parameters");
102+
}
95103
return planning_component->plan();
96104
}
97105
}
@@ -322,8 +330,9 @@ void init_planning_component(py::module& m)
322330

323331
// TODO (peterdavidfagan): improve the plan API
324332
.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,
327336
R"(
328337
Plan a motion plan using the current start and goal states.
329338

moveit_py/src/moveit/moveit_ros/moveit_cpp/planning_component.h

+1
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ planning_interface::MotionPlanResponse
6262
plan(std::shared_ptr<moveit_cpp::PlanningComponent>& planning_component,
6363
std::shared_ptr<moveit_cpp::PlanningComponent::PlanRequestParameters>& single_plan_parameters,
6464
std::shared_ptr<moveit_cpp::PlanningComponent::MultiPipelinePlanRequestParameters>& multi_plan_parameters,
65+
std::shared_ptr<planning_scene::PlanningScene>& planning_scene,
6566
std::optional<const moveit::planning_pipeline_interfaces::SolutionSelectionFunction> solution_selection_function,
6667
std::optional<moveit::planning_pipeline_interfaces::StoppingCriterionFunction> stopping_criterion_callback);
6768

0 commit comments

Comments
 (0)