ikfast_kinematics_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, IKFastInvKin) // NOLINT
40 {
41  // Inverse target pose and seed
42  Eigen::Isometry3d pose;
43  pose.setIdentity();
44  pose.translation()[0] = 1;
45  pose.translation()[1] = 0;
46  pose.translation()[2] = 1.306;
47 
48  Eigen::VectorXd seed = Eigen::VectorXd::Zero(6);
49 
50  // Setup test
52  auto scene_graph = getSceneGraphABB(locator);
53  std::string base_link_name = "base_link";
54  std::string tip_link_name = "tool0";
55  std::vector<std::string> joint_names{ "joint_1", "joint_2", "joint_3", "joint_4", "joint_5", "joint_6" };
56 
57  KDLFwdKinChain fwd_kin(*scene_graph, base_link_name, tip_link_name);
58 
59  auto inv_kin = std::make_shared<IKFastInvKin>(base_link_name, tip_link_name, joint_names);
60 
61  EXPECT_EQ(inv_kin->getSolverName(), IKFAST_INV_KIN_CHAIN_SOLVER_NAME);
62  EXPECT_EQ(inv_kin->numJoints(), 6);
63  EXPECT_EQ(inv_kin->getBaseLinkName(), base_link_name);
64  EXPECT_EQ(inv_kin->getWorkingFrame(), base_link_name);
65  EXPECT_EQ(inv_kin->getTipLinkNames().size(), 1);
66  EXPECT_EQ(inv_kin->getTipLinkNames()[0], tip_link_name);
67  EXPECT_EQ(inv_kin->getJointNames(), joint_names);
68 
69  runInvKinTest(*inv_kin, fwd_kin, pose, tip_link_name, seed);
70 
71  // Check cloned
72  InverseKinematics::Ptr inv_kin2 = inv_kin->clone();
73  EXPECT_TRUE(inv_kin2 != nullptr);
74  EXPECT_EQ(inv_kin2->getSolverName(), IKFAST_INV_KIN_CHAIN_SOLVER_NAME);
75  EXPECT_EQ(inv_kin2->numJoints(), 6);
76  EXPECT_EQ(inv_kin2->getBaseLinkName(), base_link_name);
77  EXPECT_EQ(inv_kin2->getWorkingFrame(), base_link_name);
78  EXPECT_EQ(inv_kin2->getTipLinkNames().size(), 1);
79  EXPECT_EQ(inv_kin2->getTipLinkNames()[0], tip_link_name);
80  EXPECT_EQ(inv_kin2->getJointNames(), joint_names);
81 
82  runInvKinTest(*inv_kin2, fwd_kin, pose, tip_link_name, seed);
83 }
84 
85 int main(int argc, char** argv)
86 {
87  testing::InitGoogleTest(&argc, argv);
88 
89  return RUN_ALL_TESTS();
90 }
tesseract_kinematics::IKFastInvKin
IKFast Inverse Kinematics Implmentation.
Definition: ikfast_inv_kin.h:77
kdl_fwd_kin_chain.h
Tesseract KDL forward kinematics chain implementation.
kinematics_test_utils.h
TESSERACT_COMMON_IGNORE_WARNINGS_PUSH
#define TESSERACT_COMMON_IGNORE_WARNINGS_PUSH
TEST
TEST(TesseractKinematicsUnit, IKFastInvKin)
Definition: ikfast_kinematics_unit.cpp:39
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
main
int main(int argc, char **argv)
Definition: ikfast_kinematics_unit.cpp:85
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::test_suite::getSceneGraphABB
tesseract_scene_graph::SceneGraph::UPtr getSceneGraphABB(const tesseract_common::ResourceLocator &locator)
Definition: kinematics_test_utils.h:77


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