28 #include <gtest/gtest.h>
44 opw_params.
a1 = (0.100);
45 opw_params.
a2 = (-0.135);
46 opw_params.
b = (0.000);
47 opw_params.
c1 = (0.615);
48 opw_params.
c2 = (0.705);
49 opw_params.
c3 = (0.755);
50 opw_params.
c4 = (0.085);
52 opw_params.
offsets[2] = -M_PI / 2.0;
57 TEST(TesseractKinematicsUnit, OPWInvKinUnit)
60 Eigen::Isometry3d pose;
62 pose.translation()[0] = 1;
63 pose.translation()[1] = 0;
64 pose.translation()[2] = 1.306;
66 Eigen::VectorXd seed = Eigen::VectorXd::Zero(6);
71 std::string manip_name =
"manip";
72 std::string base_link_name =
"base_link";
73 std::string tip_link_name =
"tool0";
74 std::vector<std::string> joint_names{
"joint_1",
"joint_2",
"joint_3",
"joint_4",
"joint_5",
"joint_6" };
76 KDLFwdKinChain fwd_kin(*scene_graph, base_link_name, tip_link_name);
80 auto inv_kin = std::make_shared<OPWInvKin>(opw_params, base_link_name, tip_link_name, joint_names);
83 EXPECT_EQ(inv_kin->numJoints(), 6);
84 EXPECT_EQ(inv_kin->getBaseLinkName(), base_link_name);
85 EXPECT_EQ(inv_kin->getWorkingFrame(), base_link_name);
86 EXPECT_EQ(inv_kin->getTipLinkNames().size(), 1);
87 EXPECT_EQ(inv_kin->getTipLinkNames()[0], tip_link_name);
88 EXPECT_EQ(inv_kin->getJointNames(), joint_names);
94 EXPECT_TRUE(inv_kin2 !=
nullptr);
96 EXPECT_EQ(inv_kin2->numJoints(), 6);
97 EXPECT_EQ(inv_kin2->getBaseLinkName(), base_link_name);
98 EXPECT_EQ(inv_kin2->getWorkingFrame(), base_link_name);
99 EXPECT_EQ(inv_kin2->getTipLinkNames().size(), 1);
100 EXPECT_EQ(inv_kin2->getTipLinkNames()[0], tip_link_name);
101 EXPECT_EQ(inv_kin2->getJointNames(), joint_names);
103 runInvKinTest(*inv_kin2, fwd_kin, pose, tip_link_name, seed);
106 TEST(TesseractKinematicsUnit, OPWInvKinGroupUnit)
109 Eigen::Isometry3d pose;
111 pose.translation()[0] = 1;
112 pose.translation()[1] = 0;
113 pose.translation()[2] = 1.306;
115 Eigen::VectorXd seed = Eigen::VectorXd::Zero(6);
120 std::string manip_name =
"manip";
121 std::string base_link_name =
"base_link";
122 std::string tip_link_name =
"tool0";
123 std::vector<std::string> joint_names{
"joint_1",
"joint_2",
"joint_3",
"joint_4",
"joint_5",
"joint_6" };
127 auto inv_kin = std::make_unique<OPWInvKin>(opw_params, base_link_name, tip_link_name, joint_names);
132 KinematicGroup kin_group(manip_name, joint_names, std::move(inv_kin), *scene_graph, scene_state);
134 runInvKinTest(kin_group, pose, base_link_name, tip_link_name, seed);
136 auto abb_joint_2 = scene_graph->getJoint(
"joint_2");
137 abb_joint_2->limits->lower = -3.49065;
138 abb_joint_2->limits->upper = 1.57079;
140 auto inv_kin2 = std::make_unique<OPWInvKin>(opw_params, base_link_name, tip_link_name, joint_names);
141 KinematicGroup kin_group2(manip_name, joint_names, std::move(inv_kin2), *scene_graph, scene_state);
143 Eigen::Isometry3d pose2;
145 pose2.translation()[0] = -0.268141;
146 pose2.translation()[1] = -0.023459;
147 pose2.translation()[2] = -0.753010;
148 pose2.linear() = Eigen::Quaterniond(0.0, 0.0, 1.0, 0.0).matrix();
150 runInvKinTest(kin_group2, pose2, base_link_name, tip_link_name, seed);
153 int main(
int argc,
char** argv)
155 testing::InitGoogleTest(&argc, argv);
157 return RUN_ALL_TESTS();