Viam C++ SDK current
Loading...
Searching...
No Matches
kinematics_model_table_internals.hpp
1#pragma once
2
3#include <string>
4#include <vector>
5
6#include <boost/optional.hpp>
7
8#include <viam/sdk/common/kinematics.hpp>
9#include <viam/sdk/common/linear_algebra.hpp>
11
12namespace viam {
13namespace sdk {
14namespace impl {
15
16// @brief Per-joint parse result, pre-validation.
18 std::string name;
19 std::string type_str;
20 std::string parent_link;
21 std::string child_link;
22 Vector3 xyz{};
23 Vector3 rpy{};
24 boost::optional<Vector3> axis_opt;
25};
26
27// @brief Parse all <joint> elements from a URDF, no topology checks.
28std::vector<ParsedJoint> parse_urdf(const KinematicsDataURDF& urdf);
29
30// @brief Order joints root -> leaf along the kinematic chain.
31// @throws viam::sdk::Exception on multi-root, branching, or disconnect.
32std::vector<ParsedJoint> walk_urdf_chain(const std::vector<ParsedJoint>& joints);
33
34// @brief Convert one validated ParsedJoint to a ModelTable::JointRow.
35// @throws viam::sdk::Exception on unsupported type or zero non-fixed axis.
36ModelTable::JointRow to_row(const ParsedJoint& parsed);
37
38} // namespace impl
39} // namespace sdk
40} // namespace viam
A per-joint model table for a serial kinematic chain, with conversions to/from URDF and a double (n,...
Definition linear_algebra.hpp:25
Definition kinematics_model_table_internals.hpp:17
std::string type_str
raw URDF type attribute
Definition kinematics_model_table_internals.hpp:19