ikfast_kinematics_7dof_unit.cpp
Go to the documentation of this file.
1 
28 #include <gtest/gtest.h>
29 #include <fstream>
31 
32 #include "kinematics_test_utils.h"
35 
36 using namespace tesseract_kinematics::test_suite;
37 using namespace tesseract_kinematics;
38 
39 TEST(TesseractKinematicsUnit, IKFastInvKin7DOF) // NOLINT
40 {
41  // Inverse target pose and seed
42  Eigen::Isometry3d pose;
43  pose.setIdentity();
44  pose.translation()[0] = 0.223;
45  pose.translation()[1] = 0.354;
46  pose.translation()[2] = 0.5;
47 
48  Eigen::VectorXd seed = Eigen::VectorXd::Zero(7);
49 
50  // Setup test
52  auto scene_graph = getSceneGraphIIWA7(locator);
53  std::string base_link_name = "link_0";
54  std::string tip_link_name = "ikfast_tcp_link";
55  std::vector<std::string> joint_names{ "joint_1", "joint_2", "joint_3", "joint_4", "joint_5", "joint_6", "joint_7" };
56 
57  KDLFwdKinChain fwd_kin(*scene_graph, base_link_name, tip_link_name);
58 
59  std::vector<std::vector<double>> free_joint_states = { { -2.0 }, { -1.0 }, { 0.0 }, { 1.0 }, { 2.0 } };
60 
61  auto iiwa_inv_kin = std::make_shared<IKFastInvKin>(
62  base_link_name, tip_link_name, joint_names, IKFAST_INV_KIN_CHAIN_SOLVER_NAME, free_joint_states);
63 
64  EXPECT_EQ(iiwa_inv_kin->getSolverName(), IKFAST_INV_KIN_CHAIN_SOLVER_NAME);
65  EXPECT_EQ(iiwa_inv_kin->numJoints(), 7);
66  EXPECT_EQ(iiwa_inv_kin->getBaseLinkName(), base_link_name);
67  EXPECT_EQ(iiwa_inv_kin->getWorkingFrame(), base_link_name);
68  EXPECT_EQ(iiwa_inv_kin->getTipLinkNames().size(), 1);
69  EXPECT_EQ(iiwa_inv_kin->getTipLinkNames()[0], tip_link_name);
70  EXPECT_EQ(iiwa_inv_kin->getJointNames(), joint_names);
71 
72  runInvKinTest(*iiwa_inv_kin, fwd_kin, pose, tip_link_name, seed);
73 
74  // Check cloned
75  InverseKinematics::Ptr iiwa_inv_kin2 = iiwa_inv_kin->clone();
76  EXPECT_TRUE(iiwa_inv_kin2 != nullptr);
77  EXPECT_EQ(iiwa_inv_kin2->getSolverName(), IKFAST_INV_KIN_CHAIN_SOLVER_NAME);
78  EXPECT_EQ(iiwa_inv_kin2->numJoints(), 7);
79  EXPECT_EQ(iiwa_inv_kin2->getBaseLinkName(), base_link_name);
80  EXPECT_EQ(iiwa_inv_kin2->getWorkingFrame(), base_link_name);
81  EXPECT_EQ(iiwa_inv_kin2->getTipLinkNames().size(), 1);
82  EXPECT_EQ(iiwa_inv_kin2->getTipLinkNames()[0], tip_link_name);
83  EXPECT_EQ(iiwa_inv_kin2->getJointNames(), joint_names);
84 
85  runInvKinTest(*iiwa_inv_kin2, fwd_kin, pose, tip_link_name, seed);
86 }
87 
88 int main(int argc, char** argv)
89 {
90  testing::InitGoogleTest(&argc, argv);
91 
92  return RUN_ALL_TESTS();
93 }
kdl_fwd_kin_chain.h
Tesseract KDL forward kinematics chain implementation.
kinematics_test_utils.h
main
int main(int argc, char **argv)
Definition: ikfast_kinematics_7dof_unit.cpp:88
TESSERACT_COMMON_IGNORE_WARNINGS_PUSH
#define TESSERACT_COMMON_IGNORE_WARNINGS_PUSH
tesseract_kinematics::KDLFwdKinChain
KDL kinematic chain implementation.
Definition: kdl_fwd_kin_chain.h:49
ikfast_inv_kin.hpp
Tesseract IKFast Inverse kinematics Wrapper Implementation.
tesseract_kinematics::test_suite
Definition: kinematics_test_utils.h:53
tesseract_kinematics::test_suite::getSceneGraphIIWA7
tesseract_scene_graph::SceneGraph::UPtr getSceneGraphIIWA7(const tesseract_common::ResourceLocator &locator)
Definition: kinematics_test_utils.h:83
TEST
TEST(TesseractKinematicsUnit, IKFastInvKin7DOF)
Definition: ikfast_kinematics_7dof_unit.cpp:39
TESSERACT_COMMON_IGNORE_WARNINGS_POP
#define TESSERACT_COMMON_IGNORE_WARNINGS_POP
tesseract_kinematics::InverseKinematics::Ptr
std::shared_ptr< InverseKinematics > Ptr
Definition: inverse_kinematics.h:50
tesseract_kinematics
Definition: forward_kinematics.h:40
tesseract_common::GeneralResourceLocator
macros.h
tesseract_kinematics::test_suite::runInvKinTest
void runInvKinTest(const tesseract_kinematics::InverseKinematics &inv_kin, const tesseract_kinematics::ForwardKinematics &fwd_kin, const Eigen::Isometry3d &target_pose, const std::string &tip_link_name, const Eigen::VectorXd &seed)
Run inverse kinematics test comparing the inverse solution to the forward solution.
Definition: kinematics_test_utils.h:458
tesseract_kinematics::IKFAST_INV_KIN_CHAIN_SOLVER_NAME
static const std::string IKFAST_INV_KIN_CHAIN_SOLVER_NAME
Definition: ikfast_inv_kin.h:34


tesseract_kinematics
Author(s): Levi Armstrong
autogenerated on Sun May 18 2025 03:02:14