![]() |
Tesseract 0.28.4
|
Unit tests for the shared kinematics plugin-factory YAML helpers. More...
#include <tesseract/common/macros.h>#include <gtest/gtest.h>#include <cmath>#include <memory>#include <yaml-cpp/yaml.h>#include <tesseract/kinematics/factory_utils.h>#include <tesseract/scene_graph/graph.h>#include <tesseract/scene_graph/joint.h>#include <tesseract/scene_graph/link.h>Functions | |
| void | TESSERACT_COMMON_IGNORE_WARNINGS_POP::addJoint (tesseract::scene_graph::SceneGraph &sg, const std::string &name, const std::string &parent, const std::string &child, double lower, double upper) |
Append a revolute joint name limited to [lower, upper], linking two new links. | |
| std::unique_ptr< tesseract::scene_graph::SceneGraph > | TESSERACT_COMMON_IGNORE_WARNINGS_POP::buildSceneGraph () |
| Minimal scene graph: base -> j1 -> l1, with j1 limited to [-1, 1]. | |
| void | TESSERACT_COMMON_IGNORE_WARNINGS_POP::addSecondJoint (tesseract::scene_graph::SceneGraph &sg) |
| Extends buildSceneGraph() with l1 -> j2 -> l2, where j2 is limited to [-2, 2]. | |
| tesseract::kinematics::SampleGridConfig | TESSERACT_COMMON_IGNORE_WARNINGS_POP::parse (const tesseract::scene_graph::SceneGraph &sg, const std::string &yaml, const std::vector< tesseract::common::JointId > &joint_ids={ "j1" }) |
Parse yaml against the fixture graph and reorder it onto joint_ids. | |
| ASSERT_EQ (grid.resolution.size(), 1) | |
| ASSERT_EQ (grid.range.rows(), 1) | |
| EXPECT_DOUBLE_EQ (grid.resolution(0), 0.1) | |
| EXPECT_DOUBLE_EQ (grid.range(0, 0), -1.0) | |
| EXPECT_DOUBLE_EQ (grid.range(0, 1), 1.0) | |
| EXPECT_DOUBLE_EQ (grid.range(0, 0), -0.5) | |
| EXPECT_DOUBLE_EQ (grid.range(0, 1), 0.5) | |
| EXPECT_THROW (parse(*sg, "- { name: j1, value: 0.1, min: -2.0 }"), std::runtime_error) | |
| EXPECT_THROW (parse(*sg, "- { name: j1, value: 0.1, max: 2.0 }"), std::runtime_error) | |
| EXPECT_THROW (parse(*sg, "- { name: j1, value: 0.1, min: 0.5, max: -0.5 }"), std::runtime_error) | |
| EXPECT_THROW (parse(*sg, "- { value: 0.1 }"), std::runtime_error) | |
| EXPECT_THROW (parse(*sg, "- { name: j1 }"), std::runtime_error) | |
| EXPECT_THROW (parse(*sg, "- { name: no_such_joint, value: 0.1 }"), std::runtime_error) | |
| std::const_pointer_cast< tesseract::scene_graph::Joint > (sg->getJoint("j1")) -> limits=nullptr | |
| EXPECT_DOUBLE_EQ (grid.range(0, 0), -M_PI) | |
| EXPECT_DOUBLE_EQ (grid.range(0, 1), M_PI) | |
| EXPECT_DOUBLE_EQ (grid.range(0, 0), -5.0) | |
| EXPECT_DOUBLE_EQ (grid.range(0, 1), 5.0) | |
| EXPECT_NO_THROW (parse(*sg, "- { name: j1, value: 0.1 }")) | |
| EXPECT_THROW (parse(*sg, "- { name: j1, value: 0.1, min: 1.0, max: -1.0 }"), std::runtime_error) | |
| EXPECT_EQ (grid.resolution.size(), 0) | |
| EXPECT_EQ (grid.range.rows(), 0) | |
| EXPECT_THROW (parse(*sg, "- { name: j1, value: 0.1 }", { "j1", "j2" }), std::runtime_error) | |
| EXPECT_THROW (parse(*sg, "- { name: j1, value: 0.1 }", { "other" }), std::runtime_error) | |
| ASSERT_EQ (grid.resolution.size(), 2) | |
| EXPECT_DOUBLE_EQ (grid.resolution(1), 0.2) | |
| EXPECT_DOUBLE_EQ (grid.range(1, 0), -2.0) | |
| int | main (int argc, char **argv) |
Variables | |
| const auto | grid = parse(*sg, "- { name: j1, value: 0.1 }") |
| auto | j1 = std::const_pointer_cast<tesseract::scene_graph::Joint>(sg->getJoint("j1")) |
| j1 | type = tesseract::scene_graph::JointType::CONTINUOUS |
| j1 limits | lower = 0.0 |
| j1 limits | upper = 0.0 |
| j1 | limits = nullptr |
| addSecondJoint * | sg |
Unit tests for the shared kinematics plugin-factory YAML helpers.
These helpers are exercised indirectly by the RTP factory tests, but those route through a full plugin load (URDF fixture, YAML schema, inner solver plugins), so a failure there does not localise to the parsing logic. These tests call the helpers directly against a two-link scene graph.
| tesseract::scene_graph::SceneGraph::Ptr sg |