param_utils/get_param_specializations/tf2.hpp
Go to the documentation of this file.
1 #pragma once
2 
15 #include <vector>
16 
20 #include <tf2/LinearMath/Vector3.h>
21 
22 namespace cras {
23 
24 DEFINE_CONVERTING_GET_PARAM(::tf2::Vector3, ::std::vector<double>, "", [](const ::std::vector<double>& v) {
25  if (v.size() != 3)
26  throw ::std::runtime_error(::cras::format("Cannot load %s parameter from an array of length %lu",
27  "tf2::Vector3", v.size()));
28  return ::tf2::Vector3(v[0], v[1], v[2]);
29 })
30 
31 DEFINE_CONVERTING_GET_PARAM(::tf2::Quaternion, ::std::vector<double>, "", [](const ::std::vector<double>& v) {
32  if (v.size() != 3 && v.size() != 4)
33  throw ::std::runtime_error(::cras::format("Cannot load %s parameter from an array of length %lu",
34  "tf2::Quaternion", v.size()));
35  ::tf2::Quaternion m;
36  if (v.size() == 4)
37  {
38  m.setX(v[0]); m.setY(v[1]); m.setZ(v[2]); m.setW(v[3]);
39  }
40  else
41  {
42  m.setRPY(v[0], v[1], v[2]);
43  }
44  return m;
45 })
46 
47 DEFINE_CONVERTING_GET_PARAM(::tf2::Transform, ::std::vector<double>, "", [](const ::std::vector<double>& v) {
48  if (v.size() != 6 && v.size() != 7 && v.size() != 16)
49  throw ::std::runtime_error(::cras::format("Cannot load %s parameter from an array of length %lu",
50  "tf2::Transform", v.size()));
51  ::tf2::Transform m;
52  if (v.size() == 6 || v.size() == 7)
53  {
54  m.setOrigin({v[0], v[1], v[2]});
55  if (v.size() == 6)
56  {
57  ::tf2::Quaternion q; q.setRPY(v[3], v[4], v[5]);
58  m.setRotation(q);
59  }
60  else
61  {
62  m.setRotation({v[3], v[4], v[5], v[6]});
63  }
64  }
65  else
66  {
67  m.setOrigin({v[3], v[7], v[11]});
68  m.setBasis({v[0], v[1], v[2], v[4], v[5], v[6], v[8], v[9], v[10]});
69  }
70  return m;
71 })
72 
73 }
cras
Definition: any.hpp:15
tf2::Quaternion::setRPY
void setRPY(const tf2Scalar &roll, const tf2Scalar &pitch, const tf2Scalar &yaw)
cras::DEFINE_CONVERTING_GET_PARAM
DEFINE_CONVERTING_GET_PARAM(::Eigen::Vector3d, ::std::vector< double >, "", [](const ::std::vector< double > &v){ checkSize(v, 3, "vector");return ::Eigen::Vector3d(v.data());}) DEFINE_CONVERTING_GET_PARAM(
Definition: param_utils/get_param_specializations/eigen.hpp:31
Vector3.h
cras::format
inline ::std::string format(const char *format, ::va_list args)
Definition: string_utils.hpp:223
Quaternion.h
tf2::Transform
tf2::Quaternion
Matrix3x3.h
Transform.h


cras_cpp_common
Author(s): Martin Pecka
autogenerated on Sun Jan 14 2024 03:48:14