26#ifndef TESSERACT_KINEMATICS_KIN_TEST_SUITE_H
27#define TESSERACT_KINEMATICS_KIN_TEST_SUITE_H
31#include <gtest/gtest.h>
33#include <yaml-cpp/yaml.h>
55 std::string
path = std::string(TESSERACT_SUPPORT_DIR) +
"/urdf/lbr_iiwa_14_r820.urdf";
63 std::string
path = std::string(TESSERACT_SUPPORT_DIR) +
"/urdf/abb_irb2400_external_positioner.urdf";
71 std::string
path = std::string(TESSERACT_SUPPORT_DIR) +
"/urdf/abb_irb2400_on_positioner.urdf";
79 std::string
path = std::string(TESSERACT_SUPPORT_DIR) +
"/urdf/abb_irb2400.urdf";
87 std::string
path = std::string(TESSERACT_SUPPORT_DIR) +
"/urdf/iiwa7.urdf";
99 auto sg = std::make_unique<SceneGraph>(
"universal_robot");
100 sg->addLink(
Link(
"base_link"));
101 sg->addLink(
Link(
"shoulder_link"));
102 sg->addLink(
Link(
"upper_arm_link"));
103 sg->addLink(
Link(
"forearm_link"));
104 sg->addLink(
Link(
"wrist_1_link"));
105 sg->addLink(
Link(
"wrist_2_link"));
106 sg->addLink(
Link(
"wrist_3_link"));
107 sg->addLink(
Link(
"ee_link"));
108 sg->addLink(
Link(
"tool0"));
111 Joint j(
"shoulder_pan_joint");
112 j.type = JointType::REVOLUTE;
113 j.parent_link_name =
"base_link";
114 j.child_link_name =
"shoulder_link";
115 j.axis = Eigen::Vector3d::UnitZ();
116 j.parent_to_joint_origin_transform.translation() = Eigen::Vector3d(0, 0, params.
d1);
117 j.limits = std::make_shared<JointLimits>();
118 j.limits->lower = -2.0 * M_PI;
119 j.limits->upper = 2.0 * M_PI;
120 j.limits->velocity = 2.16;
121 j.limits->acceleration = 0.5 *
j.limits->velocity;
126 Joint j(
"shoulder_lift_joint");
127 j.type = JointType::REVOLUTE;
128 j.parent_link_name =
"shoulder_link";
129 j.child_link_name =
"upper_arm_link";
130 j.axis = Eigen::Vector3d::UnitY();
131 j.parent_to_joint_origin_transform.translation() = Eigen::Vector3d(0,
shoulder_offset, 0);
132 j.parent_to_joint_origin_transform =
133 j.parent_to_joint_origin_transform * Eigen::AngleAxisd(M_PI_2, Eigen::Vector3d::UnitY());
134 j.limits = std::make_shared<JointLimits>();
135 j.limits->lower = -2.0 * M_PI;
136 j.limits->upper = 2.0 * M_PI;
137 j.limits->velocity = 2.16;
138 j.limits->acceleration = 0.5 *
j.limits->velocity;
144 j.type = JointType::REVOLUTE;
145 j.parent_link_name =
"upper_arm_link";
146 j.child_link_name =
"forearm_link";
147 j.axis = Eigen::Vector3d::UnitY();
148 j.parent_to_joint_origin_transform.translation() = Eigen::Vector3d(0,
elbow_offset, -params.
a2);
149 j.limits = std::make_shared<JointLimits>();
150 j.limits->lower = -2.0 * M_PI;
151 j.limits->upper = 2.0 * M_PI;
152 j.limits->velocity = 2.16;
153 j.limits->acceleration = 0.5 *
j.limits->velocity;
159 j.type = JointType::REVOLUTE;
160 j.parent_link_name =
"forearm_link";
161 j.child_link_name =
"wrist_1_link";
162 j.axis = Eigen::Vector3d::UnitY();
163 j.parent_to_joint_origin_transform.translation() = Eigen::Vector3d(0, 0, -params.
a3);
164 j.parent_to_joint_origin_transform =
165 j.parent_to_joint_origin_transform * Eigen::AngleAxisd(M_PI_2, Eigen::Vector3d::UnitY());
166 j.limits = std::make_shared<JointLimits>();
167 j.limits->lower = -2.0 * M_PI;
168 j.limits->upper = 2.0 * M_PI;
169 j.limits->velocity = 2.16;
170 j.limits->acceleration = 0.5 *
j.limits->velocity;
176 j.type = JointType::REVOLUTE;
177 j.parent_link_name =
"wrist_1_link";
178 j.child_link_name =
"wrist_2_link";
179 j.axis = Eigen::Vector3d::UnitZ();
180 j.parent_to_joint_origin_transform.translation() =
182 j.limits = std::make_shared<JointLimits>();
183 j.limits->lower = -2.0 * M_PI;
184 j.limits->upper = 2.0 * M_PI;
185 j.limits->velocity = 2.16;
186 j.limits->acceleration = 0.5 *
j.limits->velocity;
192 j.type = JointType::REVOLUTE;
193 j.parent_link_name =
"wrist_2_link";
194 j.child_link_name =
"wrist_3_link";
195 j.axis = Eigen::Vector3d::UnitY();
196 j.parent_to_joint_origin_transform.translation() = Eigen::Vector3d(0, 0, params.
d5);
197 j.limits = std::make_shared<JointLimits>();
198 j.limits->lower = -2.0 * M_PI;
199 j.limits->upper = 2.0 * M_PI;
200 j.limits->velocity = 2.16;
201 j.limits->acceleration = 0.5 *
j.limits->velocity;
206 Joint j(
"ee_fixed_joint");
207 j.type = JointType::FIXED;
208 j.parent_link_name =
"wrist_3_link";
209 j.child_link_name =
"ee_link";
210 j.parent_to_joint_origin_transform.translation() = Eigen::Vector3d(0, params.
d6, 0);
211 j.parent_to_joint_origin_transform =
212 j.parent_to_joint_origin_transform * Eigen::AngleAxisd(M_PI_2, Eigen::Vector3d::UnitZ());
217 Joint j(
"wrist_3_link-tool0_fixed_joint");
218 j.type = JointType::FIXED;
219 j.parent_link_name =
"wrist_3_link";
220 j.child_link_name =
"tool0";
221 j.parent_to_joint_origin_transform.translation() = Eigen::Vector3d(0, params.
d6, 0);
222 j.parent_to_joint_origin_transform =
223 j.parent_to_joint_origin_transform * Eigen::AngleAxisd(-M_PI_2, Eigen::Vector3d::UnitX());
238 for (Eigen::Index i = 0; i <
s; ++i)
241 limits.joint_limits(i, 0) = joint->limits->lower;
242 limits.joint_limits(i, 1) = joint->limits->upper;
243 limits.velocity_limits(i) = joint->limits->velocity;
244 limits.acceleration_limits(i) = joint->limits->acceleration;
261 const Eigen::VectorXd& jvals,
262 const std::string& link_name,
263 const Eigen::Vector3d& link_point,
264 const Eigen::Isometry3d& change_base)
266 Eigen::MatrixXd
jacobian, numerical_jacobian;
271 poses =
kin.calcFwdKin(jvals);
276 numerical_jacobian.resize(6,
kin.numJoints());
279 for (
int i = 0; i < 6; ++i)
280 for (
int j = 0; j < static_cast<int>(
kin.numJoints()); ++
j)
294 const Eigen::VectorXd& jvals,
295 const std::string& link_name,
296 const Eigen::Vector3d& link_point)
298 Eigen::MatrixXd
jacobian, numerical_jacobian;
305 numerical_jacobian.resize(6,
kin_group.numJoints());
308 for (
int i = 0; i < 6; ++i)
310 for (
int j = 0; j < static_cast<int>(
kin_group.numJoints()); ++
j)
320 numerical_jacobian.resize(6,
kin_group.numJoints());
323 for (
int i = 0; i < 6; ++i)
325 for (
int j = 0; j < static_cast<int>(
kin_group.numJoints()); ++
j)
349 for (Eigen::Index i = 0; i <
limits.joint_limits.rows(); ++i)
373 for (Eigen::Index i = 0; i <
limits.joint_limits.rows(); ++i)
375 limits.joint_limits(i, 0) = -5.0 - double(i);
376 limits.joint_limits(i, 1) = 5.0 + double(i);
377 limits.velocity_limits(i) = 10.0 + double(i);
378 limits.acceleration_limits(i) = 5.0 + double(i);
395 const std::vector<std::string>& target_names)
397 EXPECT_EQ(names.size(), target_names.size());
401 std::vector<std::string>
v1 = names;
402 std::vector<std::string>
v2 = target_names;
403 std::sort(
v1.begin(),
v1.end());
404 std::sort(
v2.begin(),
v2.end());
418 const Eigen::Isometry3d& target_pose,
420 const Eigen::VectorXd&
seed)
430 for (
const auto& sol : solutions)
434 EXPECT_TRUE(target_pose.translation().isApprox(result.translation(), 1e-4));
436 Eigen::Quaterniond rot_pose(target_pose.rotation());
437 Eigen::Quaterniond rot_result(result.rotation());
449 const Eigen::Isometry3d& target_pose,
452 const Eigen::VectorXd&
seed)
461 for (
const auto& sol : solutions)
465 EXPECT_TRUE(target_pose.translation().isApprox(result.translation(), 1e-4));
467 Eigen::Quaterniond rot_pose(target_pose.rotation());
468 Eigen::Quaterniond rot_result(result.rotation());
481 Eigen::VectorXd jvals;
488 Eigen::Isometry3d
pose = poses.at(
"tool0");
489 Eigen::Isometry3d result;
490 result.setIdentity();
491 result.translation()[0] = 0;
492 result.translation()[1] = 0;
493 result.translation()[2] = 1.306;
500 std::string tip_link =
"tool0";
506 Eigen::VectorXd jvals;
509 jvals(0) = -0.785398;
511 jvals(2) = -0.785398;
513 jvals(4) = -0.785398;
515 jvals(6) = -0.785398;
520 Eigen::Vector3d link_point(0, 0, 0);
528 for (
int k = 0; k < 3; ++k)
530 Eigen::Vector3d link_point(0, 0, 0);
541 for (
int k = 0; k < 3; ++k)
543 link_point = Eigen::Vector3d(0, 0, 0);
544 Eigen::Isometry3d change_base;
545 change_base.setIdentity();
546 change_base(0, 0) = 0;
547 change_base(1, 0) = 1;
548 change_base(0, 1) = -1;
549 change_base(1, 1) = 0;
550 change_base.translation() = Eigen::Vector3d(0, 0, 0);
551 change_base.translation()[k] = 1;
561 for (
int k = 0; k < 3; ++k)
563 Eigen::Vector3d link_point(0, 0, 0);
566 Eigen::Isometry3d change_base;
567 change_base.setIdentity();
568 change_base(0, 0) = 0;
569 change_base(1, 0) = 1;
570 change_base(0, 1) = -1;
571 change_base(1, 1) = 0;
572 change_base.translation() = link_point;
583 std::vector<std::string>
link_names = {
"base_link",
"link_1",
"link_2",
"link_3",
"link_4",
584 "link_5",
"link_6",
"link_7",
"tool0" };
589 Eigen::VectorXd jvals;
592 jvals(0) = -0.785398;
594 jvals(2) = -0.785398;
596 jvals(4) = -0.785398;
598 jvals(6) = -0.785398;
604 for (
int k = 0; k < 3; ++k)
606 Eigen::Vector3d link_point(0, 0, 0);
620 EXPECT_FALSE(
kin_group.checkJoints(Eigen::VectorXd::Constant(7, std::numeric_limits<double>::max())));
621 EXPECT_FALSE(
kin_group.checkJoints(Eigen::VectorXd::Constant(7, -std::numeric_limits<double>::max())));
624 std::vector<std::string> target_active_link_names = {
"link_1",
"link_2",
"link_3",
"link_4",
625 "link_5",
"link_6",
"link_7",
"tool0" };
627 std::vector<std::string> target_static_link_names = {
"base_link",
"base" };
629 std::vector<std::string> target_link_names = target_active_link_names;
630 target_link_names.insert(target_link_names.end(), target_static_link_names.begin(), target_static_link_names.end());
632 for (
const auto&
l : target_active_link_names)
637 for (
const auto&
l : target_link_names)
661 EXPECT_FALSE(
kin_group.checkJoints(Eigen::VectorXd::Constant(6, std::numeric_limits<double>::max())));
662 EXPECT_FALSE(
kin_group.checkJoints(Eigen::VectorXd::Constant(6, -std::numeric_limits<double>::max())));
665 std::vector<std::string> target_active_link_names = {
"link_1",
"link_2",
"link_3",
"link_4",
666 "link_5",
"link_6",
"tool0" };
668 std::vector<std::string> target_static_link_names = {
"base_link" };
670 std::vector<std::string> target_link_names = target_active_link_names;
671 target_link_names.insert(target_link_names.end(), target_static_link_names.begin(), target_static_link_names.end());
673 for (
const auto&
l : target_active_link_names)
678 for (
const auto&
l : target_link_names)
702 EXPECT_FALSE(
kin_group.checkJoints(Eigen::VectorXd::Constant(6, std::numeric_limits<double>::max())));
703 EXPECT_FALSE(
kin_group.checkJoints(Eigen::VectorXd::Constant(6, -std::numeric_limits<double>::max())));
706 std::vector<std::string> target_active_link_names = {
"shoulder_link",
"upper_arm_link",
"forearm_link",
707 "wrist_1_link",
"wrist_2_link",
"wrist_3_link",
710 std::vector<std::string> target_static_link_names = {
"base_link" };
712 std::vector<std::string> target_link_names = target_active_link_names;
713 target_link_names.insert(target_link_names.end(), target_static_link_names.begin(), target_static_link_names.end());
715 for (
const auto&
l : target_active_link_names)
720 for (
const auto&
l : target_link_names)
744 std::vector<std::string>
link_names{
"positioner_base_link",
759 Eigen::MatrixXd
jacobian, numerical_jacobian;
760 Eigen::VectorXd jvals;
763 jvals(0) = -0.785398;
765 jvals(2) = -0.785398;
767 jvals(4) = -0.785398;
769 jvals(6) = -0.785398;
775 for (
int k = 0; k < 3; ++k)
777 Eigen::Vector3d link_point(0, 0, 0);
791 EXPECT_FALSE(
kin_group.checkJoints(Eigen::VectorXd::Constant(7, std::numeric_limits<double>::max())));
792 EXPECT_FALSE(
kin_group.checkJoints(Eigen::VectorXd::Constant(7, -std::numeric_limits<double>::max())));
795 std::vector<std::string> target_active_link_names = {
"positioner_tool0",
"base_link",
"base",
"link_1",
"link_2",
796 "link_3",
"link_4",
"link_5",
"link_6",
"tool0" };
798 std::vector<std::string> target_static_link_names = {
"positioner_base_link" };
800 std::vector<std::string> target_link_names = target_active_link_names;
801 target_link_names.insert(target_link_names.end(), target_static_link_names.begin(), target_static_link_names.end());
803 for (
const auto&
l : target_active_link_names)
808 for (
const auto&
l : target_link_names)
832 std::vector<std::string>
link_names{
"positioner_base_link",
847 Eigen::MatrixXd
jacobian, numerical_jacobian;
848 Eigen::VectorXd jvals;
851 jvals(0) = -0.785398;
853 jvals(2) = -0.785398;
855 jvals(4) = -0.785398;
857 jvals(6) = -0.785398;
864 for (
int k = 0; k < 3; ++k)
866 Eigen::Vector3d link_point(0, 0, 0);
880 EXPECT_FALSE(
kin_group.checkJoints(Eigen::VectorXd::Constant(8, std::numeric_limits<double>::max())));
881 EXPECT_FALSE(
kin_group.checkJoints(Eigen::VectorXd::Constant(8, -std::numeric_limits<double>::max())));
884 std::vector<std::string> target_active_link_names = {
885 "positioner_tool0",
"positioner_link_1",
"link_1",
"link_2",
"link_3",
"link_4",
"link_5",
"link_6",
"tool0"
888 std::vector<std::string> target_static_link_names = {
"world",
"base_link",
"base",
"positioner_base_link" };
890 std::vector<std::string> target_link_names = target_active_link_names;
891 target_link_names.insert(target_link_names.end(), target_static_link_names.begin(), target_static_link_names.end());
893 for (
const auto&
l : target_active_link_names)
898 for (
const auto&
l : target_link_names)
920 const std::string& inv_factory_name,
921 const std::string& fwd_factory_name)
927 std::vector<std::string>
joint_names{
"joint_a1",
"joint_a2",
"joint_a3",
"joint_a4",
928 "joint_a5",
"joint_a6",
"joint_a7" };
929 std::vector<std::string> joint_link_names{
"link_1",
"link_2",
"link_3",
"link_4",
"link_5",
"link_6",
"link_7" };
936 fwd_plugin_info.
class_name = fwd_factory_name;
941 inv_plugin_info.
class_name = inv_factory_name;
945 Eigen::Isometry3d
pose;
947 pose.translation()[0] = 0;
948 pose.translation()[1] = 0;
949 pose.translation()[2] = 1.306;
951 Eigen::VectorXd
seed;
963 auto kin_empty =
factory.createInvKin(inv_factory_name, inv_plugin_info, scene_graph_empty,
scene_state);
1003 auto fwd_kin3 =
fwd_kin->clone();
1007 EXPECT_EQ(fwd_kin3->getTipLinkNames().size(), 1);
1015 auto inv_kin3 =
inv_kin->clone();
1021 EXPECT_EQ(inv_kin3->getTipLinkNames().size(), 1);
1036 fwd_plugin_info.
config[
"base_link"] =
"missing_link";
#define UNUSED(x)
Definition: VHACD.cpp:58
Abstract class for resource loaders.
Definition: tesseract_support_resource_locator.h:42
Forward kinematics functions.
Definition: forward_kinematics.h:47
Inverse kinematics functions.
Definition: inverse_kinematics.h:47
Definition: kinematic_group.h:78
Definition: kinematics_plugin_factory.h:114
Definition: kdl_state_solver.h:43
SceneState getState(const Eigen::Ref< const Eigen::VectorXd > &joint_values) const override final
Get the state of the solver given the joint values.
Definition: kdl_state_solver.cpp:109
std::shared_ptr< SceneGraph > Ptr
Definition: graph.h:130
std::unique_ptr< SceneGraph > UPtr
Definition: graph.h:132
EXPECT_NEAR(config.contact_manager_config.margin_data.getDefaultCollisionMargin(), 5, 1e-6)
results link_names[0]
Definition: collision_core_unit.cpp:146
EXPECT_EQ(results.distance, std::numeric_limits< double >::max())
EXPECT_FALSE(tesseract_collision::isContactAllowed("base_link", "link_2", acm, false))
EXPECT_TRUE(tesseract_common::isIdentical< tesseract_collision::ObjectPairKey >(pairs, check_pairs, false))
Forward kinematics functions.
A basic scene graph using boost.
Eigen::VectorXd seed
Definition: ikfast_kinematics_7dof_unit.cpp:48
std::string base_link_name
Definition: ikfast_kinematics_7dof_unit.cpp:52
std::string tip_link_name
Definition: ikfast_kinematics_7dof_unit.cpp:53
auto scene_graph
Definition: ikfast_kinematics_7dof_unit.cpp:51
auto inv_kin
Definition: ikfast_kinematics_unit.cpp:59
std::string manip_name
Definition: ikfast_kinematics_unit.cpp:52
Inverse kinematics functions.
Tesseract Scene Graph State Solver KDL Implementation.
A kinematic group with forward and inverse kinematics methods.
Eigen::MatrixXd jacobian
Definition: kinematics_core_unit.cpp:153
auto fwd_kin
Definition: kinematics_factory_unit.cpp:1140
auto kin
Definition: kinematics_factory_unit.cpp:1165
tesseract_scene_graph::SceneState scene_state
Definition: kinematics_factory_unit.cpp:265
Kinematics Plugin Factory.
#define TESSERACT_COMMON_IGNORE_WARNINGS_PUSH
Definition: macros.h:71
Definition: create_convex_hull.cpp:36
void jacobianChangeRefPoint(Eigen::Ref< Eigen::MatrixXd > jacobian, const Eigen::Ref< const Eigen::Vector3d > &ref_point)
Change the reference point of the jacobian.
Definition: utils.cpp:108
AlignedMap< std::string, Eigen::Isometry3d > TransformMap
Definition: types.h:66
void jacobianChangeBase(Eigen::Ref< Eigen::MatrixXd > jacobian, const Eigen::Isometry3d &change_base)
Change the base coordinate system of the jacobian.
Definition: utils.cpp:101
Definition: kinematics_test_utils.h:52
void runStringVectorEqualTest(const std::vector< std::string > &names, const std::vector< std::string > &target_names)
Check if two vectors of strings are equal but ignore order.
Definition: kinematics_test_utils.h:394
void runKinGroupJacobianABBExternalPositionerTest(tesseract_kinematics::KinematicGroup &kin_group)
Definition: kinematics_test_utils.h:829
void runActiveLinkNamesABBExternalPositionerTest(const tesseract_kinematics::KinematicGroup &kin_group)
Definition: kinematics_test_utils.h:877
void runKinGroupJacobianABBOnPositionerTest(tesseract_kinematics::KinematicGroup &kin_group)
Definition: kinematics_test_utils.h:741
tesseract_scene_graph::SceneGraph::UPtr getSceneGraphABBOnPositioner()
Definition: kinematics_test_utils.h:69
void runKinSetJointLimitsTest(tesseract_kinematics::KinematicGroup &kin_group)
Run kinematics setJointLimits function test.
Definition: kinematics_test_utils.h:362
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:416
void runActiveLinkNamesURTest(const tesseract_kinematics::KinematicGroup &kin_group)
Definition: kinematics_test_utils.h:699
void runActiveLinkNamesABBOnPositionerTest(const tesseract_kinematics::KinematicGroup &kin_group)
Definition: kinematics_test_utils.h:788
tesseract_scene_graph::SceneGraph::UPtr getSceneGraphABBExternalPositioner()
Definition: kinematics_test_utils.h:61
void runActiveLinkNamesIIWATest(const tesseract_kinematics::KinematicGroup &kin_group)
Definition: kinematics_test_utils.h:617
void runJacobianTest(tesseract_kinematics::ForwardKinematics &kin, const Eigen::VectorXd &jvals, const std::string &link_name, const Eigen::Vector3d &link_point, const Eigen::Isometry3d &change_base)
Run a kinematic jacobian test.
Definition: kinematics_test_utils.h:260
void runJacobianIIWATest(tesseract_kinematics::ForwardKinematics &kin, bool is_kin_tree=false)
Definition: kinematics_test_utils.h:497
void runKinJointLimitsTest(const tesseract_common::KinematicLimits &limits, const tesseract_common::KinematicLimits &target_limits)
Run kinematic limits test.
Definition: kinematics_test_utils.h:338
void runFwdKinIIWATest(tesseract_kinematics::ForwardKinematics &kin)
Definition: kinematics_test_utils.h:475
tesseract_scene_graph::SceneGraph::UPtr getSceneGraphUR(const tesseract_kinematics::URParameters ¶ms, double shoulder_offset, double elbow_offset)
Definition: kinematics_test_utils.h:93
tesseract_common::KinematicLimits getTargetLimits(const tesseract_scene_graph::SceneGraph &scene_graph, const std::vector< std::string > &joint_names)
Definition: kinematics_test_utils.h:230
tesseract_scene_graph::SceneGraph::UPtr getSceneGraphIIWA7()
Definition: kinematics_test_utils.h:85
void runKinGroupJacobianIIWATest(tesseract_kinematics::KinematicGroup &kin_group)
Definition: kinematics_test_utils.h:580
void runActiveLinkNamesABBTest(const tesseract_kinematics::KinematicGroup &kin_group)
Definition: kinematics_test_utils.h:658
tesseract_scene_graph::SceneGraph::UPtr getSceneGraphABB()
Definition: kinematics_test_utils.h:77
void runInvKinIIWATest(const tesseract_kinematics::KinematicsPluginFactory &factory, const std::string &inv_factory_name, const std::string &fwd_factory_name)
Definition: kinematics_test_utils.h:919
tesseract_scene_graph::SceneGraph::UPtr getSceneGraphIIWA()
Definition: kinematics_test_utils.h:53
static void numericalJacobian(Eigen::Ref< Eigen::MatrixXd > jacobian, const Eigen::Isometry3d &change_base, const tesseract_kinematics::ForwardKinematics &kin, const Eigen::Ref< const Eigen::VectorXd > &joint_values, const std::string &link_name, const Eigen::Ref< const Eigen::Vector3d > &link_point)
Numerically calculate a jacobian. This is mainly used for testing.
Definition: utils.h:55
bool checkKinematics(const KinematicGroup &manip, double tol=1e-3)
This compares calcFwdKin to calcInvKin for a KinematicGroup.
Definition: validate.cpp:40
tesseract_common::AlignedVector< KinGroupIKInput > KinGroupIKInputs
Definition: kinematic_group.h:75
std::vector< Eigen::VectorXd > IKSolutions
The inverse kinematics solutions container.
Definition: types.h:41
tesseract_scene_graph::SceneGraph::UPtr parseURDFFile(const std::string &path, const tesseract_common::ResourceLocator &locator)
Parse a URDF file into a Tesseract Scene Graph.
Definition: urdf_parser.cpp:160
std::set< std::string > s
Definition: plugin_loader_unit.cpp:45
tesseract_common::KinematicLimits target_limits
Definition: rep_kinematics_unit.cpp:117
KinematicGroup kin_group(manip_name, joint_names, std::move(inv_kin), *scene_graph, scene_state)
ResourceLocator::Ptr locator
Definition: resource_locator_unit.cpp:57
Store kinematic limits.
Definition: kinematic_limits.h:39
EIGEN_MAKE_ALIGNED_OPERATOR_NEW Eigen::MatrixX2d joint_limits
The position limits.
Definition: kinematic_limits.h:45
Eigen::VectorXd acceleration_limits
The acceleration limits.
Definition: kinematic_limits.h:51
Eigen::VectorXd velocity_limits
The velocity limits.
Definition: kinematic_limits.h:48
The Plugin Information struct.
Definition: types.h:104
std::string class_name
The plugin class name.
Definition: types.h:106
YAML::Node config
The plugin config data.
Definition: types.h:109
The Universal Robot kinematic parameters.
Definition: types.h:45
double d1
Definition: types.h:52
double d6
Definition: types.h:57
double a2
Definition: types.h:53
double d5
Definition: types.h:56
double a3
Definition: types.h:54
double d4
Definition: types.h:55
This holds a state of the scene.
Definition: scene_state.h:54
Common Tesseract Utility Functions.
joint_state joint_names
Definition: tesseract_common_serialization_unit.cpp:75
std::vector< std::string > v2
Definition: tesseract_common_unit.cpp:418
manip_info_override working_frame
Definition: tesseract_common_unit.cpp:267
v1["1"]
Definition: tesseract_common_unit.cpp:434
auto pose
Definition: tesseract_environment_collision.cpp:118
Kinematics utility functions.
joint_1 limits
Definition: tesseract_scene_graph_joint_unit.cpp:153
JointDynamics j
Definition: tesseract_scene_graph_joint_unit.cpp:15
tesseract_common::fs::path path
Definition: tesseract_srdf_unit.cpp:1992
Link base_link("base_link")
Locate and retrieve resource data in tesseract_support.
tesseract_scene_graph::SceneGraph::Ptr sg
Definition: tesseract_urdf_urdf_unit.cpp:31
double elbow_offset
Definition: ur_kinematics_unit.cpp:92
double shoulder_offset
Definition: ur_kinematics_unit.cpp:91
A urdf parser for tesseract.
This contains utility function validate things like forward kinematics match inverse kinematics.