Skip to content

Commit

Permalink
Python API: Allow passing a task's introspection object to SolutionBa…
Browse files Browse the repository at this point in the history
…se::toMsg()

which is a prerequisite for correct filling of IDs.
  • Loading branch information
rhaschke committed Jan 13, 2025
1 parent a4daede commit bd5ba84
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 3 deletions.
10 changes: 7 additions & 3 deletions core/python/bindings/src/core.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,8 @@ void export_core(pybind11::module& m) {
}
});

py::classh<Introspection>(m, "Introspection", "Introspection class");

py::classh<SolutionBase>(m, "Solution", "Abstract base class for solutions of a stage")
.def_property("cost", &SolutionBase::cost, &SolutionBase::setCost, "float: Cost associated with the solution")
.def_property("comment", &SolutionBase::comment, &SolutionBase::setComment,
Expand All @@ -109,12 +111,12 @@ void export_core(pybind11::module& m) {
":visualization_msgs:`Marker`: Markers to visualize important aspects of the trajectory (read-only)")
.def(
"toMsg",
[](const SolutionBase& self) {
[](const SolutionBase& self, moveit::task_constructor::Introspection* introspection) {
moveit_task_constructor_msgs::msg::Solution msg;
self.toMsg(msg);
self.toMsg(msg, introspection);
return msg;
},
"Convert to the ROS message ``Solution``");
"Convert to the ROS message ``Solution``", py::arg("introspection") = nullptr);

py::classh<SubTrajectory, SolutionBase>(m, "SubTrajectory",
"Solution trajectory connecting two InterfaceStates of a stage")
Expand Down Expand Up @@ -462,6 +464,8 @@ void export_core(pybind11::module& m) {
.def(
"setCostTerm", [](Task& self, const LambdaCostTerm::SubTrajectoryShortSignature& f) { self.setCostTerm(f); },
"Specify a function to calculate trajectory costs")
.def("introspection", &Task::introspection, py::return_value_policy::reference_internal,
"Access introspection object")
.def("reset", &Task::reset, "Reset task (and all its stages)")
.def("init", py::overload_cast<>(&Task::init), "Initialize the task (and all its stages)")
.def("plan", &Task::plan, "max_solutions"_a = 0, R"(
Expand Down
1 change: 1 addition & 0 deletions core/python/bindings/src/core.h
Original file line number Diff line number Diff line change
Expand Up @@ -140,3 +140,4 @@ PYBIND11_SMART_HOLDER_TYPE_CASTERS(moveit::task_constructor::Fallbacks)
PYBIND11_SMART_HOLDER_TYPE_CASTERS(moveit::task_constructor::Merger)
PYBIND11_SMART_HOLDER_TYPE_CASTERS(moveit::task_constructor::WrapperBase)
PYBIND11_SMART_HOLDER_TYPE_CASTERS(moveit::task_constructor::Task)
PYBIND11_SMART_HOLDER_TYPE_CASTERS(moveit::task_constructor::Introspection)

0 comments on commit bd5ba84

Please sign in to comment.