47 #include <visualization_msgs/MarkerArray.h> 49 #include <gtest/gtest.h> 50 #include <urdf_parser/urdf_parser.h> 52 #include <boost/bind.hpp> 88 std::map<std::string, robot_model::SolverAllocatorFn> allocators;
105 planning_scene::PlanningScenePtr
ps_;
121 moveit_msgs::JointConstraint jcm1;
123 jcm1.position = 0.42;
124 jcm1.tolerance_above = 0.01;
125 jcm1.tolerance_below = 0.05;
129 std::vector<kinematic_constraints::JointConstraint> js;
137 jcm1.joint_name =
"r_shoulder_pan_joint";
145 for (
int t = 0;
t < 100; ++
t)
157 moveit_msgs::JointConstraint jcm2;
158 jcm2.joint_name =
"r_shoulder_pan_joint";
159 jcm2.position = 0.54;
160 jcm2.tolerance_above = 0.01;
161 jcm2.tolerance_below = 0.01;
183 jcm1.tolerance_above = .05;
184 jcm1.tolerance_below = .05;
186 jcm2.tolerance_above = .1;
187 jcm2.tolerance_below = .1;
196 for (
int t = 0;
t < 100; ++
t)
205 jcm1.position = -3.1;
206 jcm1.tolerance_above = .05;
207 jcm1.tolerance_below = .05;
217 jcm1.tolerance_above = .05;
218 jcm1.tolerance_below = .05;
220 jcm2.tolerance_above = .05;
221 jcm2.tolerance_below = .05;
229 for (
int t = 0;
t < 100; ++
t)
232 std::map<std::string, double> var_values;
246 for (
int t = 0;
t < 100; ++
t)
259 moveit_msgs::PositionConstraint pcm;
261 pcm.link_name =
"l_wrist_roll_link";
262 pcm.target_point_offset.x = 0;
263 pcm.target_point_offset.y = 0;
264 pcm.target_point_offset.z = 0;
265 pcm.constraint_region.primitives.resize(1);
266 pcm.constraint_region.primitives[0].type = shape_msgs::SolidPrimitive::SPHERE;
267 pcm.constraint_region.primitives[0].dimensions.resize(1);
268 pcm.constraint_region.primitives[0].dimensions[0] = 0.001;
270 pcm.constraint_region.primitive_poses.resize(1);
271 pcm.constraint_region.primitive_poses[0].position.x = 0.55;
272 pcm.constraint_region.primitive_poses[0].position.y = 0.2;
273 pcm.constraint_region.primitive_poses[0].position.z = 1.25;
274 pcm.constraint_region.primitive_poses[0].orientation.x = 0.0;
275 pcm.constraint_region.primitive_poses[0].orientation.y = 0.0;
276 pcm.constraint_region.primitive_poses[0].orientation.z = 0.0;
277 pcm.constraint_region.primitive_poses[0].orientation.w = 1.0;
301 pcm.link_name =
"l_shoulder_pan_link";
307 pcm.link_name =
"l_wrist_roll_link";
329 moveit_msgs::OrientationConstraint ocm;
331 ocm.link_name =
"r_wrist_roll_link";
332 ocm.header.frame_id = ocm.link_name;
333 ocm.orientation.x = 0.5;
334 ocm.orientation.y = 0.5;
335 ocm.orientation.z = 0.5;
336 ocm.orientation.w = 0.5;
337 ocm.absolute_x_axis_tolerance = 0.01;
338 ocm.absolute_y_axis_tolerance = 0.01;
339 ocm.absolute_z_axis_tolerance = 0.01;
352 for (
int t = 0;
t < 100; ++
t)
372 moveit_msgs::PositionConstraint pcm;
374 pcm.link_name =
"l_wrist_roll_link";
375 pcm.target_point_offset.x = 0;
376 pcm.target_point_offset.y = 0;
377 pcm.target_point_offset.z = 0;
378 pcm.constraint_region.primitives.resize(1);
379 pcm.constraint_region.primitives[0].type = shape_msgs::SolidPrimitive::SPHERE;
380 pcm.constraint_region.primitives[0].dimensions.resize(1);
381 pcm.constraint_region.primitives[0].dimensions[0] = 0.001;
385 pcm.constraint_region.primitive_poses.resize(1);
386 pcm.constraint_region.primitive_poses[0].position.x = 0.55;
387 pcm.constraint_region.primitive_poses[0].position.y = 0.2;
388 pcm.constraint_region.primitive_poses[0].position.z = 1.25;
389 pcm.constraint_region.primitive_poses[0].orientation.x = 0.0;
390 pcm.constraint_region.primitive_poses[0].orientation.y = 0.0;
391 pcm.constraint_region.primitive_poses[0].orientation.z = 0.0;
392 pcm.constraint_region.primitive_poses[0].orientation.w = 1.0;
398 moveit_msgs::OrientationConstraint ocm;
400 ocm.link_name =
"l_wrist_roll_link";
402 ocm.orientation.x = 0.0;
403 ocm.orientation.y = 0.0;
404 ocm.orientation.z = 0.0;
405 ocm.orientation.w = 1.0;
406 ocm.absolute_x_axis_tolerance = 0.2;
407 ocm.absolute_y_axis_tolerance = 0.1;
408 ocm.absolute_z_axis_tolerance = 0.4;
415 for (
int t = 0;
t < 100; ++
t)
424 for (
int t = 0;
t < 100; ++
t)
432 for (
int t = 0;
t < 100; ++
t)
453 std::map<std::string, double> state_values;
455 moveit_msgs::JointConstraint torso_constraint;
456 torso_constraint.joint_name =
"torso_lift_joint";
458 torso_constraint.tolerance_above = 0.01;
459 torso_constraint.tolerance_below = 0.01;
460 torso_constraint.weight = 1.0;
464 moveit_msgs::JointConstraint jcm2;
465 jcm2.joint_name =
"r_elbow_flex_joint";
467 jcm2.tolerance_above = 0.01;
468 jcm2.tolerance_below = 0.01;
472 moveit_msgs::PositionConstraint pcm;
474 pcm.link_name =
"l_wrist_roll_link";
475 pcm.target_point_offset.x = 0;
476 pcm.target_point_offset.y = 0;
477 pcm.target_point_offset.z = 0;
478 pcm.constraint_region.primitives.resize(1);
479 pcm.constraint_region.primitives[0].type = shape_msgs::SolidPrimitive::SPHERE;
480 pcm.constraint_region.primitives[0].dimensions.resize(1);
481 pcm.constraint_region.primitives[0].dimensions[0] = 0.001;
483 pcm.constraint_region.primitive_poses.resize(1);
484 pcm.constraint_region.primitive_poses[0].position.x = 0.55;
485 pcm.constraint_region.primitive_poses[0].position.y = 0.2;
486 pcm.constraint_region.primitive_poses[0].position.z = 1.25;
487 pcm.constraint_region.primitive_poses[0].orientation.x = 0.0;
488 pcm.constraint_region.primitive_poses[0].orientation.y = 0.0;
489 pcm.constraint_region.primitive_poses[0].orientation.z = 0.0;
490 pcm.constraint_region.primitive_poses[0].orientation.w = 1.0;
495 moveit_msgs::OrientationConstraint ocm;
497 ocm.link_name =
"l_wrist_roll_link";
499 ocm.orientation.x = 0.0;
500 ocm.orientation.y = 0.0;
501 ocm.orientation.z = 0.0;
502 ocm.orientation.w = 1.0;
503 ocm.absolute_x_axis_tolerance = 0.2;
504 ocm.absolute_y_axis_tolerance = 0.1;
505 ocm.absolute_z_axis_tolerance = 0.4;
508 std::vector<kinematic_constraints::JointConstraint> js;
511 constraint_samplers::JointConstraintSamplerPtr jcsp(
515 std::vector<kinematic_constraints::JointConstraint> js2;
531 std::vector<constraint_samplers::ConstraintSamplerPtr> cspv;
532 cspv.push_back(jcsp2);
533 cspv.push_back(iksp);
534 cspv.push_back(jcsp);
547 EXPECT_EQ(jcs2->getJointModelGroup()->getName(),
"arms");
549 for (
int t = 0;
t < 100; ++
t)
561 pcm.link_name =
"r_wrist_roll_link";
562 ocm.link_name =
"r_wrist_roll_link";
577 cspv.push_back(iksp2);
578 cspv.push_back(iksp);
584 ASSERT_TRUE(ikcs_test);
588 pcm.link_name =
"l_wrist_roll_link";
589 ocm.link_name =
"l_wrist_roll_link";
590 pcm.header.frame_id =
"r_wrist_roll_link";
591 ocm.header.frame_id =
"r_wrist_roll_link";
597 cspv.push_back(iksp2);
598 cspv.push_back(iksp);
618 moveit_msgs::PositionConstraint pcm;
619 pcm.link_name =
"l_wrist_roll_link";
620 pcm.target_point_offset.x = 0;
621 pcm.target_point_offset.y = 0;
622 pcm.target_point_offset.z = 0;
623 pcm.constraint_region.primitives.resize(1);
624 pcm.constraint_region.primitives[0].type = shape_msgs::SolidPrimitive::SPHERE;
625 pcm.constraint_region.primitives[0].dimensions.resize(1);
626 pcm.constraint_region.primitives[0].dimensions[0] = 0.001;
630 pcm.constraint_region.primitive_poses.resize(1);
631 pcm.constraint_region.primitive_poses[0].position.x = 0.55;
632 pcm.constraint_region.primitive_poses[0].position.y = 0.2;
633 pcm.constraint_region.primitive_poses[0].position.z = 1.25;
634 pcm.constraint_region.primitive_poses[0].orientation.x = 0.0;
635 pcm.constraint_region.primitive_poses[0].orientation.y = 0.0;
636 pcm.constraint_region.primitive_poses[0].orientation.z = 0.0;
637 pcm.constraint_region.primitive_poses[0].orientation.w = 1.0;
640 moveit_msgs::OrientationConstraint ocm;
642 ocm.link_name =
"l_wrist_roll_link";
644 ocm.orientation.x = 0.0;
645 ocm.orientation.y = 0.0;
646 ocm.orientation.z = 0.0;
647 ocm.orientation.w = 1.0;
648 ocm.absolute_x_axis_tolerance = 0.2;
649 ocm.absolute_y_axis_tolerance = 0.1;
650 ocm.absolute_z_axis_tolerance = 0.4;
654 moveit_msgs::Constraints c;
655 c.position_constraints.push_back(pcm);
656 c.orientation_constraints.push_back(ocm);
658 constraint_samplers::ConstraintSamplerPtr
s =
666 static const int NT = 100;
668 for (
int t = 0;
t < NT; ++
t)
673 if (s->sample(ks, ks_const, 1))
676 ROS_INFO(
"Success rate for IK Constraint Sampler with position & orientation constraints for one arm: %lf",
677 (
double)succ / (
double)NT);
680 ocm.absolute_x_axis_tolerance = 0.1;
682 c.orientation_constraints.push_back(ocm);
699 moveit_msgs::Constraints con;
700 con.joint_constraints.resize(1);
702 con.joint_constraints[0].joint_name =
"l_shoulder_pan_joint";
703 con.joint_constraints[0].position = 0.54;
704 con.joint_constraints[0].tolerance_above = 0.01;
705 con.joint_constraints[0].tolerance_below = 0.01;
706 con.joint_constraints[0].weight = 1.0;
708 constraint_samplers::ConstraintSamplerPtr
s =
714 con.joint_constraints.resize(7);
716 con.joint_constraints[1].joint_name =
"l_shoulder_lift_joint";
717 con.joint_constraints[1].position = 0.54;
718 con.joint_constraints[1].tolerance_above = 0.01;
719 con.joint_constraints[1].tolerance_below = 0.01;
720 con.joint_constraints[1].weight = 1.0;
722 con.joint_constraints[2].joint_name =
"l_upper_arm_roll_joint";
723 con.joint_constraints[2].position = 0.54;
724 con.joint_constraints[2].tolerance_above = 0.01;
725 con.joint_constraints[2].tolerance_below = 0.01;
726 con.joint_constraints[2].weight = 1.0;
728 con.joint_constraints[3].joint_name =
"l_elbow_flex_joint";
729 con.joint_constraints[3].position = -0.54;
730 con.joint_constraints[3].tolerance_above = 0.01;
731 con.joint_constraints[3].tolerance_below = 0.01;
732 con.joint_constraints[3].weight = 1.0;
734 con.joint_constraints[4].joint_name =
"l_forearm_roll_joint";
735 con.joint_constraints[4].position = 0.54;
736 con.joint_constraints[4].tolerance_above = 0.01;
737 con.joint_constraints[4].tolerance_below = 0.01;
738 con.joint_constraints[4].weight = 1.0;
740 con.joint_constraints[5].joint_name =
"l_wrist_flex_joint";
741 con.joint_constraints[5].position = -0.54;
742 con.joint_constraints[5].tolerance_above = 0.05;
743 con.joint_constraints[5].tolerance_below = 0.05;
744 con.joint_constraints[5].weight = 1.0;
747 con.joint_constraints[6].joint_name =
"l_wrist_flex_joint";
748 con.joint_constraints[6].position = -0.56;
749 con.joint_constraints[6].tolerance_above = 0.01;
750 con.joint_constraints[6].tolerance_below = 0.01;
751 con.joint_constraints[6].weight = 1.0;
756 con.position_constraints.resize(1);
759 con.position_constraints[0].link_name =
"r_wrist_roll_link";
760 con.position_constraints[0].target_point_offset.x = 0;
761 con.position_constraints[0].target_point_offset.y = 0;
762 con.position_constraints[0].target_point_offset.z = 0;
763 con.position_constraints[0].constraint_region.primitives.resize(1);
764 con.position_constraints[0].constraint_region.primitives[0].type = shape_msgs::SolidPrimitive::SPHERE;
765 con.position_constraints[0].constraint_region.primitives[0].dimensions.resize(1);
766 con.position_constraints[0].constraint_region.primitives[0].dimensions[0] = 0.001;
768 con.position_constraints[0].header.frame_id =
robot_model_->getModelFrame();
770 con.position_constraints[0].constraint_region.primitive_poses.resize(1);
771 con.position_constraints[0].constraint_region.primitive_poses[0].position.x = 0.55;
772 con.position_constraints[0].constraint_region.primitive_poses[0].position.y = 0.2;
773 con.position_constraints[0].constraint_region.primitive_poses[0].position.z = 1.25;
774 con.position_constraints[0].constraint_region.primitive_poses[0].orientation.x = 0.0;
775 con.position_constraints[0].constraint_region.primitive_poses[0].orientation.y = 0.0;
776 con.position_constraints[0].constraint_region.primitive_poses[0].orientation.z = 0.0;
777 con.position_constraints[0].constraint_region.primitive_poses[0].orientation.w = 1.0;
778 con.position_constraints[0].weight = 1.0;
787 con.position_constraints[0].link_name =
"l_wrist_roll_link";
800 con.orientation_constraints.resize(1);
803 con.orientation_constraints[0].link_name =
"r_wrist_roll_link";
804 con.orientation_constraints[0].header.frame_id =
robot_model_->getModelFrame();
805 con.orientation_constraints[0].orientation.x = 0.0;
806 con.orientation_constraints[0].orientation.y = 0.0;
807 con.orientation_constraints[0].orientation.z = 0.0;
808 con.orientation_constraints[0].orientation.w = 1.0;
809 con.orientation_constraints[0].absolute_x_axis_tolerance = 0.2;
810 con.orientation_constraints[0].absolute_y_axis_tolerance = 0.1;
811 con.orientation_constraints[0].absolute_z_axis_tolerance = 0.4;
812 con.orientation_constraints[0].weight = 1.0;
827 con.orientation_constraints[0].link_name =
"l_wrist_roll_link";
839 con.position_constraints[0].link_name =
"r_wrist_roll_link";
841 ASSERT_TRUE(static_cast<bool>(s));
849 con.joint_constraints.resize(8);
850 con.joint_constraints[7].joint_name =
"l_wrist_roll_joint";
851 con.joint_constraints[7].position = 0.54;
852 con.joint_constraints[7].tolerance_above = 0.01;
853 con.joint_constraints[7].tolerance_below = 0.01;
854 con.joint_constraints[7].weight = 1.0;
857 EXPECT_TRUE(static_cast<bool>(s));
871 moveit_msgs::Constraints con;
872 con.joint_constraints.resize(1);
874 con.joint_constraints[0].joint_name =
"torso_lift_joint";
876 con.joint_constraints[0].tolerance_above = 0.01;
877 con.joint_constraints[0].tolerance_below = 0.01;
878 con.joint_constraints[0].weight = 1.0;
883 con.position_constraints.resize(1);
885 con.position_constraints[0].link_name =
"l_wrist_roll_link";
886 con.position_constraints[0].target_point_offset.x = 0;
887 con.position_constraints[0].target_point_offset.y = 0;
888 con.position_constraints[0].target_point_offset.z = 0;
889 con.position_constraints[0].constraint_region.primitives.resize(1);
890 con.position_constraints[0].constraint_region.primitives[0].type = shape_msgs::SolidPrimitive::SPHERE;
891 con.position_constraints[0].constraint_region.primitives[0].dimensions.resize(1);
892 con.position_constraints[0].constraint_region.primitives[0].dimensions[0] = 0.001;
894 con.position_constraints[0].constraint_region.primitive_poses.resize(1);
895 con.position_constraints[0].constraint_region.primitive_poses[0].position.x = 0.55;
896 con.position_constraints[0].constraint_region.primitive_poses[0].position.y = 0.2;
897 con.position_constraints[0].constraint_region.primitive_poses[0].position.z = 1.25;
898 con.position_constraints[0].constraint_region.primitive_poses[0].orientation.x = 0.0;
899 con.position_constraints[0].constraint_region.primitive_poses[0].orientation.y = 0.0;
900 con.position_constraints[0].constraint_region.primitive_poses[0].orientation.z = 0.0;
901 con.position_constraints[0].constraint_region.primitive_poses[0].orientation.w = 1.0;
902 con.position_constraints[0].weight = 1.0;
904 con.position_constraints[0].header.frame_id =
robot_model_->getModelFrame();
906 con.orientation_constraints.resize(1);
907 con.orientation_constraints[0].link_name =
"l_wrist_roll_link";
908 con.orientation_constraints[0].header.frame_id =
robot_model_->getModelFrame();
909 con.orientation_constraints[0].orientation.x = 0.0;
910 con.orientation_constraints[0].orientation.y = 0.0;
911 con.orientation_constraints[0].orientation.z = 0.0;
912 con.orientation_constraints[0].orientation.w = 1.0;
913 con.orientation_constraints[0].absolute_x_axis_tolerance = 0.2;
914 con.orientation_constraints[0].absolute_y_axis_tolerance = 0.1;
915 con.orientation_constraints[0].absolute_z_axis_tolerance = 0.4;
916 con.orientation_constraints[0].weight = 1.0;
918 constraint_samplers::ConstraintSamplerPtr
s =
927 ASSERT_TRUE(ikcs_test);
929 for (
int t = 0;
t < 1; ++
t)
948 moveit_msgs::JointConstraint jcm1;
949 jcm1.joint_name =
"head_pan_joint";
950 jcm1.position = 0.42;
951 jcm1.tolerance_above = 0.01;
952 jcm1.tolerance_below = 0.05;
957 moveit_msgs::JointConstraint jcm2;
958 jcm2.joint_name =
"l_shoulder_pan_joint";
960 jcm2.tolerance_above = 0.1;
961 jcm2.tolerance_below = 0.05;
966 moveit_msgs::JointConstraint jcm3;
967 jcm3.joint_name =
"r_wrist_roll_joint";
969 jcm3.tolerance_above = 0.14;
970 jcm3.tolerance_below = 0.005;
975 moveit_msgs::JointConstraint jcm4;
976 jcm4.joint_name =
"torso_lift_joint";
978 jcm4.tolerance_above = 0.09;
979 jcm4.tolerance_below = 0.01;
983 std::vector<kinematic_constraints::JointConstraint> js;
994 for (
int t = 0;
t < 100; ++
t)
1002 moveit_msgs::Constraints c;
1005 constraint_samplers::ConstraintSamplerPtr s0 =
1010 c.joint_constraints.push_back(jcm1);
1011 c.joint_constraints.push_back(jcm2);
1012 c.joint_constraints.push_back(jcm3);
1013 c.joint_constraints.push_back(jcm4);
1015 constraint_samplers::ConstraintSamplerPtr
s =
1020 for (
int t = 0;
t < 1000; ++
t)
1030 moveit_msgs::Constraints c;
1032 moveit_msgs::PositionConstraint pcm;
1033 pcm.link_name =
"l_wrist_roll_link";
1034 pcm.target_point_offset.x = 0;
1035 pcm.target_point_offset.y = 0;
1036 pcm.target_point_offset.z = 0;
1038 pcm.constraint_region.primitives.resize(1);
1039 pcm.constraint_region.primitives[0].type = shape_msgs::SolidPrimitive::SPHERE;
1040 pcm.constraint_region.primitives[0].dimensions.resize(1);
1041 pcm.constraint_region.primitives[0].dimensions[0] = 0.001;
1045 pcm.constraint_region.primitive_poses.resize(1);
1046 pcm.constraint_region.primitive_poses[0].position.x = 0.55;
1047 pcm.constraint_region.primitive_poses[0].position.y = 0.2;
1048 pcm.constraint_region.primitive_poses[0].position.z = 1.25;
1049 pcm.constraint_region.primitive_poses[0].orientation.x = 0.0;
1050 pcm.constraint_region.primitive_poses[0].orientation.y = 0.0;
1051 pcm.constraint_region.primitive_poses[0].orientation.z = 0.0;
1052 pcm.constraint_region.primitive_poses[0].orientation.w = 1.0;
1054 c.position_constraints.push_back(pcm);
1056 moveit_msgs::OrientationConstraint ocm;
1057 ocm.link_name =
"l_wrist_roll_link";
1059 ocm.orientation.x = 0.0;
1060 ocm.orientation.y = 0.0;
1061 ocm.orientation.z = 0.0;
1062 ocm.orientation.w = 1.0;
1063 ocm.absolute_x_axis_tolerance = 0.2;
1064 ocm.absolute_y_axis_tolerance = 0.1;
1065 ocm.absolute_z_axis_tolerance = 0.4;
1067 c.orientation_constraints.push_back(ocm);
1069 ocm.link_name =
"r_wrist_roll_link";
1071 ocm.orientation.x = 0.0;
1072 ocm.orientation.y = 0.0;
1073 ocm.orientation.z = 0.0;
1074 ocm.orientation.w = 1.0;
1075 ocm.absolute_x_axis_tolerance = 0.01;
1076 ocm.absolute_y_axis_tolerance = 0.01;
1077 ocm.absolute_z_axis_tolerance = 0.01;
1079 c.orientation_constraints.push_back(ocm);
1082 constraint_samplers::ConstraintSamplerPtr
s =
1099 static const int NT = 100;
1101 for (
int t = 0;
t < NT; ++
t)
1105 if (s->sample(ks, ks_const, 1))
1109 "Success rate for IK Constraint Sampler with position & orientation constraints for both arms: %lf",
1110 (
double)succ / (
double)NT);
1115 testing::InitGoogleTest(&argc, argv);
1117 return RUN_ALL_TESTS();
ConstraintEvaluationResult decide(const robot_state::RobotState &state, bool verbose=false) const override
Decide whether the constraint is satisfied in the indicated state.
bool configure(const moveit_msgs::Constraints &constr) override
Configures a joint constraint given a Constraints message.
pr2_arm_kinematics::PR2ArmKinematicsPluginPtr pr2_kinematics_plugin_right_arm_
const kinematic_constraints::PositionConstraintPtr & getPositionConstraint() const
Gets the position constraint associated with this sampler.
moveit::core::RobotModelPtr loadTestingRobotModel(const std::string &robot_name)
Loads a robot from moveit_resources.
bool configure(const moveit_msgs::OrientationConstraint &oc, const robot_state::Transforms &tf)
Configure the constraint based on a moveit_msgs::OrientationConstraint.
A structure for potentially holding a position constraint and an orientation constraint for use durin...
#define ROS_INFO_NAMED(name,...)
double getVariablePosition(const std::string &variable) const
Get the position of a particular variable. An exception is thrown if the variable is not known...
ConstraintEvaluationResult decide(const robot_state::RobotState &state, bool verbose=false) const override
Decide whether the constraint is satisfied in the indicated state.
Class for constraints on the orientation of a link.
bool configure(const moveit_msgs::PositionConstraint &pc, const robot_state::Transforms &tf)
Configure the constraint based on a moveit_msgs::PositionConstraint.
ConstraintEvaluationResult decide(const robot_state::RobotState &state, bool verbose=false) const override
Decide whether the constraint is satisfied in the indicated state.
Class for handling single DOF joint constraints.
A class that contains many different constraints, and can check RobotState *versus the full set...
int main(int argc, char **argv)
bool sample(robot_state::RobotState &state, const robot_state::RobotState &reference_state, unsigned int max_attempts) override
Produces a sample from all configured samplers.
This class exists as a union of constraint samplers. It contains a vector of constraint samplers...
JointConstraintSampler is a class that allows the sampling of joints in a particular group of the rob...
#define EXPECT_NEAR(a, b, prec)
kinematics::KinematicsBasePtr getKinematicsSolverLeftArm(const robot_model::JointModelGroup *jmg)
geometry_msgs::TransformStamped t
void setToDefaultValues()
Set all joints to their default positions. The default position is 0, or if that is not within bounds...
bool add(const moveit_msgs::Constraints &c, const robot_state::Transforms &tf)
Add all known constraints.
pr2_arm_kinematics::PR2ArmKinematicsPluginPtr pr2_kinematics_plugin_left_arm_
robot_model::SolverAllocatorFn func_right_arm_
bool satisfied
Whether or not the constraint or constraints were satisfied.
#define EXPECT_FALSE(args)
void update(bool force=false)
Update all transforms.
TEST_F(LoadPlanningModelsPr2, JointConstraintsSamplerSimple)
This class maintains the representation of the environment as seen by a planning instance. The environment geometry, the robot geometry and state are maintained.
boost::function< kinematics::KinematicsBasePtr(const JointModelGroup *)> SolverAllocatorFn
Function type that allocates a kinematics solver for a particular group.
const std::string & getName() const
Get the name of the joint group.
A class that allows the sampling of IK constraints.
ConstraintEvaluationResult decide(const robot_state::RobotState &state, bool verbose=false) const
Determines whether all constraints are satisfied by state, returning a single evaluation result...
Class for constraints on the XYZ position of a link.
planning_scene::PlanningScenePtr ps_
const std::vector< ConstraintSamplerPtr > & getSamplers() const
Gets the sorted internal list of constraint samplers.
static ConstraintSamplerPtr selectDefaultSampler(const planning_scene::PlanningSceneConstPtr &scene, const std::string &group_name, const moveit_msgs::Constraints &constr)
Default logic to select a ConstraintSampler given a constraints message.
std::size_t getConstrainedJointCount() const
Gets the number of constrained joints - joints that have an additional bound beyond the joint limits...
robot_model::RobotModelPtr robot_model_
Representation of a robot's state. This includes position, velocity, acceleration and effort...
void updateLinkTransforms()
Update the reference frame transforms for links. This call is needed before using the transforms of l...
std::size_t getUnconstrainedJointCount() const
Gets the number of unconstrained joints - joint that have no additional bound beyond the joint limits...
bool sample(robot_state::RobotState &state, const robot_state::RobotState &ks, unsigned int max_attempts) override
Samples given the constraints, populating state. This function allows the parameter max_attempts to b...
#define EXPECT_TRUE(args)
kinematics::KinematicsBasePtr getKinematicsSolverRightArm(const robot_model::JointModelGroup *jmg)
bool configure(const moveit_msgs::JointConstraint &jc)
Configure the constraint based on a moveit_msgs::JointConstraint.
const robot_model::JointModelGroup * getJointModelGroup() const
Gets the joint model group.
robot_model::SolverAllocatorFn func_left_arm_
const kinematic_constraints::OrientationConstraintPtr & getOrientationConstraint() const
Gets the orientation constraint associated with this sampler.