Go to the documentation of this file.
39 #include <console_bridge/console.h>
47 const YAML::Node& config)
const
49 std::string base_link;
56 if (YAML::Node n = config[
"base_link"])
57 base_link = n.as<std::string>();
59 throw std::runtime_error(
"URInvKinFactory, missing 'base_link' entry");
61 if (YAML::Node n = config[
"tip_link"])
62 tip_link = n.as<std::string>();
64 throw std::runtime_error(
"URInvKinFactory, missing 'tip_link' entry");
66 if (YAML::Node model = config[
"model"])
68 auto model_str = model.as<std::string>();
69 if (model_str ==
"UR3")
71 else if (model_str ==
"UR5")
73 else if (model_str ==
"UR10")
75 else if (model_str ==
"UR3e")
77 else if (model_str ==
"UR5e")
79 else if (model_str ==
"UR10e")
83 CONSOLE_BRIDGE_logError(
"URInvKinFactory: Invalid model!");
89 if (YAML::Node ur_params = config[
"params"])
91 if (YAML::Node n = ur_params[
"d1"])
92 params.
d1 = n.as<
double>();
94 throw std::runtime_error(
"URInvKinFactory, 'params' missing 'd1' entry");
96 if (YAML::Node n = ur_params[
"a2"])
97 params.
a2 = n.as<
double>();
99 throw std::runtime_error(
"URInvKinFactory, 'params' missing 'a2' entry");
101 if (YAML::Node n = ur_params[
"a3"])
102 params.
a3 = n.as<
double>();
104 throw std::runtime_error(
"URInvKinFactory, 'params' missing 'a3' entry");
106 if (YAML::Node n = ur_params[
"d4"])
107 params.
d4 = n.as<
double>();
109 throw std::runtime_error(
"URInvKinFactory, 'params' missing 'd4' entry");
111 if (YAML::Node n = ur_params[
"d5"])
112 params.
d5 = n.as<
double>();
114 throw std::runtime_error(
"URInvKinFactory, 'params' missing 'd5' entry");
116 if (YAML::Node n = ur_params[
"d6"])
117 params.
d6 = n.as<
double>();
119 throw std::runtime_error(
"URInvKinFactory, 'params' missing 'd6' entry");
123 throw std::runtime_error(
"URInvKinFactory, missing 'params' or 'model' entry");
129 catch (
const std::exception& e)
131 CONSOLE_BRIDGE_logError(
"URInvKinFactory: Failed to parse yaml config data! Details: %s", e.what());
135 return std::make_unique<URInvKin>(params, base_link, tip_link, path.
active_joints, solver_name);
138 PLUGIN_ANCHOR_IMPL(URFactoriesAnchor)
Tesseract UR Inverse kinematics Factory.
const static URParameters UR3eParameters(0.15185, -0.24355, -0.2132, 0.13105, 0.08535, 0.0921)
The UR3e kinematic parameters.
std::vector< std::string > active_joints
#define TESSERACT_COMMON_IGNORE_WARNINGS_PUSH
const static URParameters UR10eParameters(0.1807, -0.6127, -0.57155, 0.17415, 0.11985, 0.11655)
The UR10e kinematic parameters.
The Universal Robot kinematic parameters.
ShortestPath getShortestPath(const std::string &root, const std::string &tip) const
const static URParameters UR3Parameters(0.1519, -0.24365, -0.21325, 0.11235, 0.08535, 0.0819)
The UR3 kinematic parameters.
const static URParameters UR5eParameters(0.1625, -0.425, -0.3922, 0.1333, 0.0997, 0.0996)
The UR5e kinematic parameters.
#define TESSERACT_COMMON_IGNORE_WARNINGS_POP
TESSERACT_ADD_INV_KIN_PLUGIN(tesseract_kinematics::URInvKinFactory, URInvKinFactory)
const static URParameters UR10Parameters(0.1273, -0.612, -0.5723, 0.163941, 0.1157, 0.0922)
The UR10 kinematic parameters.
const static URParameters UR5Parameters(0.089159, -0.42500, -0.39225, 0.10915, 0.09465, 0.0823)
The UR5 kinematic parameters.
std::unique_ptr< InverseKinematics > create(const std::string &solver_name, const tesseract_scene_graph::SceneGraph &scene_graph, const tesseract_scene_graph::SceneState &scene_state, const KinematicsPluginFactory &plugin_factory, const YAML::Node &config) const override final
Create Inverse Kinematics Object.