Skip to content

Commit aee76fe

Browse files
committed
add move MoveTo tests
(partially disabled because broken)
1 parent 86fe752 commit aee76fe

File tree

1 file changed

+79
-19
lines changed

1 file changed

+79
-19
lines changed

core/test/test_move_to.cpp

Lines changed: 79 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
#include <moveit/task_constructor/stages/move_to.h>
55
#include <moveit/task_constructor/stages/fixed_state.h>
66
#include <moveit/task_constructor/solvers/joint_interpolation.h>
7+
#include <moveit/task_constructor/moveit_compat.h>
78

89
#include <moveit/planning_scene/planning_scene.h>
910

@@ -33,7 +34,8 @@ struct PandaMoveTo : public testing::Test
3334

3435
scene = std::make_shared<PlanningScene>(t.getRobotModel());
3536
scene->getCurrentStateNonConst().setToDefaultValues();
36-
scene->getCurrentStateNonConst().setToDefaultValues(t.getRobotModel()->getJointModelGroup("panda_arm"), "ready");
37+
scene->getCurrentStateNonConst().setToDefaultValues(t.getRobotModel()->getJointModelGroup("panda_arm"),
38+
"extended");
3739
t.add(std::make_unique<stages::FixedState>("start", scene));
3840

3941
auto move = std::make_unique<stages::MoveTo>("move", std::make_shared<solvers::JointInterpolationPlanner>());
@@ -50,7 +52,7 @@ struct PandaMoveTo : public testing::Test
5052
}
5153

5254
TEST_F(PandaMoveTo, namedTarget) {
53-
move_to->setGoal("extended");
55+
move_to->setGoal("ready");
5456
EXPECT_ONE_SOLUTION;
5557
}
5658

@@ -70,29 +72,87 @@ TEST_F(PandaMoveTo, stateTarget) {
7072
EXPECT_ONE_SOLUTION;
7173
}
7274

75+
geometry_msgs::PoseStamped getFramePoseOfNamedState(RobotState state, std::string pose, std::string frame) {
76+
state.setToDefaultValues(state.getRobotModel()->getJointModelGroup("panda_arm"), pose);
77+
auto frame_eigen{ state.getFrameTransform(frame) };
78+
geometry_msgs::PoseStamped p;
79+
p.header.frame_id = state.getRobotModel()->getModelFrame();
80+
p.pose = tf2::toMsg(frame_eigen);
81+
return p;
82+
}
83+
7384
TEST_F(PandaMoveTo, pointTarget) {
74-
move_to->setGoal([this]() {
75-
RobotState state{ scene->getCurrentState() };
76-
state.setToDefaultValues(t.getRobotModel()->getJointModelGroup("panda_arm"), "extended");
77-
auto frame{ state.getFrameTransform("panda_link8") };
78-
geometry_msgs::PointStamped point;
79-
point.header.frame_id = scene->getPlanningFrame();
80-
point.point = tf2::toMsg(Eigen::Vector3d{ frame.translation() });
81-
return point;
82-
}());
85+
geometry_msgs::PoseStamped pose{ getFramePoseOfNamedState(scene->getCurrentState(), "ready", "panda_link8") };
86+
87+
geometry_msgs::PointStamped point;
88+
point.header = pose.header;
89+
point.point = pose.pose.position;
90+
move_to->setGoal(point);
91+
8392
EXPECT_ONE_SOLUTION;
8493
}
8594

8695
TEST_F(PandaMoveTo, poseTarget) {
87-
move_to->setGoal([this]() {
88-
RobotState state{ scene->getCurrentState() };
89-
state.setToDefaultValues(t.getRobotModel()->getJointModelGroup("panda_arm"), "extended");
90-
auto frame{ state.getFrameTransform("panda_link8") };
91-
geometry_msgs::PoseStamped pose;
92-
pose.header.frame_id = scene->getPlanningFrame();
93-
pose.pose = tf2::toMsg(frame);
94-
return pose;
96+
move_to->setGoal(getFramePoseOfNamedState(scene->getCurrentState(), "ready", "panda_link8"));
97+
EXPECT_ONE_SOLUTION;
98+
}
99+
100+
TEST_F(PandaMoveTo, poseIKFrameLinkTarget) {
101+
const std::string IK_FRAME{ "panda_hand" };
102+
move_to->setIKFrame(IK_FRAME);
103+
move_to->setGoal(getFramePoseOfNamedState(scene->getCurrentState(), "ready", IK_FRAME));
104+
EXPECT_ONE_SOLUTION;
105+
}
106+
107+
moveit_msgs::AttachedCollisionObject createAttachedObject(const std::string& id) {
108+
moveit_msgs::AttachedCollisionObject aco;
109+
aco.link_name = "panda_hand";
110+
aco.object.header.frame_id = aco.link_name;
111+
aco.object.operation = aco.object.ADD;
112+
aco.object.id = id;
113+
aco.object.primitives.resize(1, []() {
114+
shape_msgs::SolidPrimitive p;
115+
p.type = p.SPHERE;
116+
p.dimensions.resize(1);
117+
p.dimensions[p.SPHERE_RADIUS] = 0.01;
118+
return p;
119+
}());
120+
#if MOVEIT_HAS_OBJECT_POSE
121+
aco.object.pose.position.z = 0.2;
122+
aco.object.pose.orientation.w = 1.0;
123+
#else
124+
aco.object.primitive_poses.resize(1);
125+
aco.object.primitive_poses[0].position.z = 0.2;
126+
aco.object.primitive_poses[0].orientation.w = 1.0;
127+
#endif
128+
#if MOVEIT_HAS_STATE_RIGID_PARENT_LINK
129+
aco.object.subframe_names.resize(1, "subframe");
130+
aco.object.subframe_poses.resize(1, []() {
131+
geometry_msgs::Pose p;
132+
p.orientation.w = 1.0;
133+
return p;
95134
}());
135+
#endif
136+
return aco;
137+
}
138+
139+
TEST_F(PandaMoveTo, DISABLED_poseIKFrameAttachedTarget) {
140+
const std::string ATTACHED_OBJECT{ "attached_object" };
141+
scene->processAttachedCollisionObjectMsg(createAttachedObject(ATTACHED_OBJECT));
142+
143+
move_to->setIKFrame(ATTACHED_OBJECT);
144+
move_to->setGoal(getFramePoseOfNamedState(scene->getCurrentState(), "ready", ATTACHED_OBJECT));
145+
EXPECT_ONE_SOLUTION;
146+
}
147+
148+
TEST_F(PandaMoveTo, DISABLED_poseIKFrameAttachedSubframeTarget) {
149+
const std::string ATTACHED_OBJECT{ "attached_object" };
150+
const std::string IK_FRAME{ ATTACHED_OBJECT + "/subframe" };
151+
152+
scene->processAttachedCollisionObjectMsg(createAttachedObject(ATTACHED_OBJECT));
153+
154+
move_to->setIKFrame(IK_FRAME);
155+
move_to->setGoal(getFramePoseOfNamedState(scene->getCurrentState(), "ready", IK_FRAME));
96156
EXPECT_ONE_SOLUTION;
97157
}
98158

0 commit comments

Comments
 (0)