Skip to content

Commit 5d23cb8

Browse files
JafarAbdirhaschke
authored andcommitted
Add support for GenerateRandomPose
1 parent f29784e commit 5d23cb8

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

core/include/moveit/task_constructor/stages.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
#include "stages/generate_grasp_pose.h"
4848
#include "stages/generate_place_pose.h"
4949
#include "stages/generate_pose.h"
50+
#include "stages/generate_random_pose.h"
5051
#include "stages/modify_planning_scene.h"
5152
#include "stages/move_relative.h"
5253
#include "stages/move_to.h"

core/python/bindings/src/stages.cpp

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ PYBIND11_SMART_HOLDER_TYPE_CASTERS(Connect)
5757
PYBIND11_SMART_HOLDER_TYPE_CASTERS(FixCollisionObjects)
5858
PYBIND11_SMART_HOLDER_TYPE_CASTERS(GenerateGraspPose)
5959
PYBIND11_SMART_HOLDER_TYPE_CASTERS(GeneratePlacePose)
60+
PYBIND11_SMART_HOLDER_TYPE_CASTERS(GenerateRandomPose)
6061
PYBIND11_SMART_HOLDER_TYPE_CASTERS(GeneratePose)
6162
PYBIND11_SMART_HOLDER_TYPE_CASTERS(Pick)
6263
PYBIND11_SMART_HOLDER_TYPE_CASTERS(Place)
@@ -405,6 +406,26 @@ void export_stages(pybind11::module& m) {
405406
)")
406407
.def(py::init<const std::string&>(), "name"_a);
407408

409+
py::enum_<GenerateRandomPose::PoseDimension>(m, "PoseDimension",
410+
R"(Define the dimensions of a pose that can be randomized.)")
411+
.value("X", GenerateRandomPose::PoseDimension::X, "X dimension")
412+
.value("Y", GenerateRandomPose::PoseDimension::Y, "Y dimension")
413+
.value("Z", GenerateRandomPose::PoseDimension::Z, "Z dimension")
414+
.value("ROLL", GenerateRandomPose::PoseDimension::ROLL, "Roll dimension")
415+
.value("PITCH", GenerateRandomPose::PoseDimension::PITCH, "Pitch dimension")
416+
.value("YAW", GenerateRandomPose::PoseDimension::YAW, "Yaw dimension");
417+
418+
properties::class_<GenerateRandomPose, GeneratePose>(m, "GenerateRandomPose", R"(
419+
Monitoring generator stage which can be used to generate random poses, based on solutions provided
420+
by the monitored stage and the specified pose dimension samplers.
421+
)")
422+
.def(py::init<const std::string&>(), "name"_a)
423+
.def("set_max_solutions", &GenerateRandomPose::setMaxSolutions, "max_solutions"_a)
424+
.def("sample_dimension", [](GenerateRandomPose& self, const GenerateRandomPose::PoseDimension pose_dimension,
425+
const double width) {
426+
self.sampleDimension<std::uniform_real_distribution>(pose_dimension, width);
427+
}, "pose_dimension"_a, "width"_a);
428+
408429
properties::class_<Pick, SerialContainer>(m, "Pick", R"(
409430
The Pick stage is a specialization of the PickPlaceBase class, which
410431
wraps the pipeline to pick or place an object with a given end effector.

0 commit comments

Comments
 (0)