mirror of
https://github.com/moveit/moveit_task_constructor.git
synced 2025-11-04 14:49:57 +08:00
Use py:overload_cast<>()
This commit is contained in:
parent
fc0abe9dd9
commit
defe144b55
@ -80,13 +80,12 @@ public:
|
|||||||
/// set properties of IK solver
|
/// set properties of IK solver
|
||||||
void setIKFrame(const geometry_msgs::PoseStamped& transform) { setProperty("ik_frame", transform); }
|
void setIKFrame(const geometry_msgs::PoseStamped& transform) { setProperty("ik_frame", transform); }
|
||||||
void setIKFrame(const Eigen::Isometry3d& pose, const std::string& link);
|
void setIKFrame(const Eigen::Isometry3d& pose, const std::string& link);
|
||||||
template <typename T>
|
|
||||||
void setIKFrame(const T& t, const std::string& link) {
|
|
||||||
Eigen::Isometry3d transform;
|
|
||||||
transform = t;
|
|
||||||
setIKFrame(transform, link);
|
|
||||||
}
|
|
||||||
void setIKFrame(const std::string& link) { setIKFrame(Eigen::Isometry3d::Identity(), link); }
|
void setIKFrame(const std::string& link) { setIKFrame(Eigen::Isometry3d::Identity(), link); }
|
||||||
|
/// allow setting IK frame from any type T that converts to Eigen::Isometry3d
|
||||||
|
template <typename T>
|
||||||
|
void setIKFrame(const T& transform, const std::string& link) {
|
||||||
|
setIKFrame(Eigen::Isometry3d(transform), link);
|
||||||
|
}
|
||||||
|
|
||||||
void setMaxIKSolutions(uint32_t max_ik_solutions) { setProperty("max_ik_solutions", max_ik_solutions); }
|
void setMaxIKSolutions(uint32_t max_ik_solutions) { setProperty("max_ik_solutions", max_ik_solutions); }
|
||||||
};
|
};
|
||||||
|
|||||||
@ -141,7 +141,7 @@ void export_core(pybind11::module& m) {
|
|||||||
// expose name as writeable property
|
// expose name as writeable property
|
||||||
.def_property("name", &Stage::name, &Stage::setName)
|
.def_property("name", &Stage::name, &Stage::setName)
|
||||||
// read-only access to properties + solutions
|
// read-only access to properties + solutions
|
||||||
.def_property_readonly<const PropertyMap& (Stage::*)() const>("properties", &Stage::properties, py::return_value_policy::reference_internal)
|
.def_property_readonly("properties", py::overload_cast<>(&Stage::properties), py::return_value_policy::reference_internal)
|
||||||
.def_property_readonly("solutions", &Stage::solutions, py::return_value_policy::reference_internal)
|
.def_property_readonly("solutions", &Stage::solutions, py::return_value_policy::reference_internal)
|
||||||
.def_property_readonly("failures", &Stage::failures, py::return_value_policy::reference_internal)
|
.def_property_readonly("failures", &Stage::failures, py::return_value_policy::reference_internal)
|
||||||
.def("reset", &Stage::reset)
|
.def("reset", &Stage::reset)
|
||||||
@ -189,7 +189,7 @@ void export_core(pybind11::module& m) {
|
|||||||
py::class_<ContainerBase, Stage>(m, "ContainerBase")
|
py::class_<ContainerBase, Stage>(m, "ContainerBase")
|
||||||
.def("add", &ContainerBase::add)
|
.def("add", &ContainerBase::add)
|
||||||
.def("insert", &ContainerBase::insert, py::arg("stage"), py::arg("before") = -1)
|
.def("insert", &ContainerBase::insert, py::arg("stage"), py::arg("before") = -1)
|
||||||
.def("remove", static_cast<Stage::pointer (ContainerBase::*)(int)>(&ContainerBase::remove))
|
.def("remove", py::overload_cast<int>(&ContainerBase::remove), "Remove child stage by index")
|
||||||
.def("clear", &ContainerBase::clear)
|
.def("clear", &ContainerBase::clear)
|
||||||
.def("__len__", &ContainerBase::numChildren)
|
.def("__len__", &ContainerBase::numChildren)
|
||||||
.def("__getitem__", [](const ContainerBase &c, const std::string &name) -> Stage* {
|
.def("__getitem__", [](const ContainerBase &c, const std::string &name) -> Stage* {
|
||||||
@ -225,7 +225,7 @@ void export_core(pybind11::module& m) {
|
|||||||
.def(py::init<const std::string&, bool, ContainerBase::pointer&&>(),
|
.def(py::init<const std::string&, bool, ContainerBase::pointer&&>(),
|
||||||
py::arg("ns") = std::string(), py::arg("introspection") = true, py::arg("container"))
|
py::arg("ns") = std::string(), py::arg("introspection") = true, py::arg("container"))
|
||||||
// read-only access to properties + solutions
|
// read-only access to properties + solutions
|
||||||
.def_property_readonly<const PropertyMap& (Task::*)() const>("properties", &Task::properties, py::return_value_policy::reference_internal)
|
.def_property_readonly("properties", py::overload_cast<>(&Task::properties), py::return_value_policy::reference_internal)
|
||||||
.def_property_readonly("solutions", &Task::solutions, py::return_value_policy::reference_internal)
|
.def_property_readonly("solutions", &Task::solutions, py::return_value_policy::reference_internal)
|
||||||
.def_property_readonly("failures", &Task::failures, py::return_value_policy::reference_internal)
|
.def_property_readonly("failures", &Task::failures, py::return_value_policy::reference_internal)
|
||||||
.def_property("name", &Task::name, &Task::setName)
|
.def_property("name", &Task::name, &Task::setName)
|
||||||
|
|||||||
@ -46,13 +46,10 @@ namespace moveit {
|
|||||||
namespace python {
|
namespace python {
|
||||||
|
|
||||||
void export_solvers(py::module& m) {
|
void export_solvers(py::module& m) {
|
||||||
// resolve &PlannerInterface::properties to non-const version
|
|
||||||
PropertyMap& (PlannerInterface::*PlannerInterface_getPropertyMap)() = &PlannerInterface::properties;
|
|
||||||
|
|
||||||
properties::class_<PlannerInterface, PlannerInterfacePtr>(m, "PlannerInterface")
|
properties::class_<PlannerInterface, PlannerInterfacePtr>(m, "PlannerInterface")
|
||||||
.property<double>("max_velocity_scaling_factor")
|
.property<double>("max_velocity_scaling_factor")
|
||||||
.property<double>("max_acceleration_scaling_factor")
|
.property<double>("max_acceleration_scaling_factor")
|
||||||
.def_property_readonly("properties", PlannerInterface_getPropertyMap,
|
.def_property_readonly("properties", py::overload_cast<>(&PlannerInterface::properties),
|
||||||
py::return_value_policy::reference_internal);
|
py::return_value_policy::reference_internal);
|
||||||
|
|
||||||
properties::class_<PipelinePlanner, PipelinePlannerPtr, PlannerInterface>(m, "PipelinePlanner")
|
properties::class_<PipelinePlanner, PipelinePlannerPtr, PlannerInterface>(m, "PipelinePlanner")
|
||||||
|
|||||||
@ -112,11 +112,11 @@ void export_stages(pybind11::module& m) {
|
|||||||
.property<geometry_msgs::PoseStamped>("ik_frame")
|
.property<geometry_msgs::PoseStamped>("ik_frame")
|
||||||
.property<moveit_msgs::Constraints>("path_constraints")
|
.property<moveit_msgs::Constraints>("path_constraints")
|
||||||
.def(py::init<const std::string&, const solvers::PlannerInterfacePtr&>())
|
.def(py::init<const std::string&, const solvers::PlannerInterfacePtr&>())
|
||||||
.def<void (MoveTo::*)(const geometry_msgs::PoseStamped&)>("setGoal", &MoveTo::setGoal)
|
.def("setGoal", py::overload_cast<const geometry_msgs::PoseStamped&>(&MoveTo::setGoal))
|
||||||
.def<void (MoveTo::*)(const geometry_msgs::PointStamped&)>("setGoal", &MoveTo::setGoal)
|
.def("setGoal", py::overload_cast<const geometry_msgs::PointStamped&>(&MoveTo::setGoal))
|
||||||
.def<void (MoveTo::*)(const moveit_msgs::RobotState&)>("setGoal", &MoveTo::setGoal)
|
.def("setGoal", py::overload_cast<const moveit_msgs::RobotState&>(&MoveTo::setGoal))
|
||||||
.def<void (MoveTo::*)(const std::map<std::string, double>&)>("setGoal", &MoveTo::setGoal)
|
.def("setGoal", py::overload_cast<const std::map<std::string, double>&>(&MoveTo::setGoal))
|
||||||
.def<void (MoveTo::*)(const std::string&)>("setGoal", &MoveTo::setGoal);
|
.def("setGoal", py::overload_cast<const std::string&>(&MoveTo::setGoal));
|
||||||
|
|
||||||
properties::class_<MoveRelative, PropagatingEitherWay, PyMoveRelative<>>(m, "MoveRelative")
|
properties::class_<MoveRelative, PropagatingEitherWay, PyMoveRelative<>>(m, "MoveRelative")
|
||||||
.property<std::string>("group")
|
.property<std::string>("group")
|
||||||
@ -125,9 +125,9 @@ void export_stages(pybind11::module& m) {
|
|||||||
.property<double>("max_distance")
|
.property<double>("max_distance")
|
||||||
.property<moveit_msgs::Constraints>("path_constraints")
|
.property<moveit_msgs::Constraints>("path_constraints")
|
||||||
.def(py::init<const std::string&, const solvers::PlannerInterfacePtr&>())
|
.def(py::init<const std::string&, const solvers::PlannerInterfacePtr&>())
|
||||||
.def<void (MoveRelative::*)(const geometry_msgs::TwistStamped&)>("setDirection", &MoveRelative::setDirection)
|
.def("setDirection", py::overload_cast<const geometry_msgs::TwistStamped&>(&MoveRelative::setDirection))
|
||||||
.def<void (MoveRelative::*)(const geometry_msgs::Vector3Stamped&)>("setDirection", &MoveRelative::setDirection)
|
.def("setDirection", py::overload_cast<const geometry_msgs::Vector3Stamped&>(&MoveRelative::setDirection))
|
||||||
.def<void (MoveRelative::*)(const std::map<std::string, double>&)>("setDirection", &MoveRelative::setDirection);
|
.def("setDirection", py::overload_cast<const std::map<std::string, double>&>(&MoveRelative::setDirection));
|
||||||
|
|
||||||
py::enum_<stages::Connect::MergeMode>(m, "MergeMode")
|
py::enum_<stages::Connect::MergeMode>(m, "MergeMode")
|
||||||
.value("SEQUENTIAL", stages::Connect::MergeMode::SEQUENTIAL)
|
.value("SEQUENTIAL", stages::Connect::MergeMode::SEQUENTIAL)
|
||||||
@ -164,8 +164,9 @@ void export_stages(pybind11::module& m) {
|
|||||||
py::arg("name") = std::string("pick"))
|
py::arg("name") = std::string("pick"))
|
||||||
|
|
||||||
.def("setApproachMotion", &Pick::setApproachMotion)
|
.def("setApproachMotion", &Pick::setApproachMotion)
|
||||||
.def<void (Pick::*)(const geometry_msgs::TwistStamped&, double, double)>("setLiftMotion", &Pick::setLiftMotion)
|
.def("setLiftMotion",
|
||||||
.def<void (Pick::*)(const std::map<std::string, double>&)>("setLiftMotion", &Pick::setLiftMotion);
|
py::overload_cast<const geometry_msgs::TwistStamped&, double, double>(&Pick::setLiftMotion))
|
||||||
|
.def("setLiftMotion", py::overload_cast<const std::map<std::string, double>&>(&Pick::setLiftMotion));
|
||||||
|
|
||||||
properties::class_<Place, Stage>(m, "Place")
|
properties::class_<Place, Stage>(m, "Place")
|
||||||
.property<std::string>("object")
|
.property<std::string>("object")
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user