ConverterTools.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <map>
4 #include <set>
5 #include <string>
6 
7 #include <Eigen/Core>
8 
9 #include <SimoxUtility/algorithm/string/string_tools.h>
10 
12 #include <RobotAPI/libraries/armem_robot_state/aron/Proprioception.aron.generated.h>
13 
14 #include "ConverterInterface.h"
15 
17 {
18 
20  {
21  const RobotUnitDataStreaming::TimeStep& data;
22  const RobotUnitDataStreaming::DataEntry& entry;
23  };
24 
25  template <class T>
26  T
28  {
29  return RobotUnitDataStreamingReceiver::GetAs<T>(value.data, value.entry);
30  }
31 
32  /**
33  * @brief Search
34  * @param key
35  * @param prefixes
36  * @return
37  */
38  std::optional<std::string> findByPrefix(const std::string& key,
39  const std::set<std::string>& prefixes);
40 
41  template <class ValueT>
42  ValueT
43  findByPrefix(const std::string& key, const std::map<std::string, ValueT>& map)
44  {
45  for (const auto& [prefix, value] : map)
46  {
47  if (simox::alg::starts_with(key, prefix))
48  {
49  return value;
50  }
51  }
52  return nullptr;
53  }
54 
55  template <class ValueT>
56  ValueT
57  findBySuffix(const std::string& key, const std::map<std::string, ValueT>& map)
58  {
59  for (const auto& [suffix, value] : map)
60  {
61  if (simox::alg::ends_with(key, suffix))
62  {
63  return value;
64  }
65  }
66  return nullptr;
67  }
68 
70  {
71  public:
73 
74 
75  public:
76  std::map<std::string, std::function<void(Eigen::Vector3f&, float)>> vector3fSetters;
77 
78  std::map<std::string, std::function<std::map<std::string, float>*(prop::arondto::Joints&)>>
80  std::map<std::string,
81  std::function<std::map<std::string, Eigen::Vector3f>*(prop::arondto::Joints&)>>
83 
84  using JointSetter = std::function<void(prop::arondto::Joints& dto,
85  const std::vector<std::string>& split,
87  std::map<std::string, JointSetter> jointSetters;
88 
89  std::map<std::string, std::function<Eigen::Vector3f*(prop::arondto::Platform&)>>
91  std::set<std::string> platformIgnored;
92 
93  std::map<std::string, std::function<Eigen::Vector3f*(prop::arondto::ForceTorque&)>>
95 
96 
97  std::map<std::string, std::string> sidePrefixMap{
98  {"R", "Right"},
99  {"L", "Left"},
100  };
101  };
102 } // namespace armarx::armem::server::robot_state::exteroception
armarx::human::pose::model::k4a_bt_body_32::Joints
Joints
Joints with index as defined in the body model.
Definition: k4a_bt_body_32.h:38
ConverterInterface.h
armarx::armem::server::robot_state::exteroception::findByPrefix
std::optional< std::string > findByPrefix(const std::string &key, const std::set< std::string > &prefixes)
Search.
Definition: ConverterTools.cpp:13
armarx::armem::server::robot_state::exteroception::ConverterValue::entry
const RobotUnitDataStreaming::DataEntry & entry
Definition: ConverterTools.h:22
armarx::starts_with
bool starts_with(const std::string &haystack, const std::string &needle)
Definition: StringHelpers.cpp:47
armarx::armem::server::robot_state::exteroception::ConverterTools::platformIgnored
std::set< std::string > platformIgnored
Definition: ConverterTools.h:91
armarx::armem::server::robot_state::exteroception::ConverterTools::vector3fSetters
std::map< std::string, std::function< void(Eigen::Vector3f &, float)> > vector3fSetters
Definition: ConverterTools.h:76
RobotUnitDataStreamingReceiver.h
armarx::armem::server::robot_state::exteroception::ConverterTools::ftGetters
std::map< std::string, std::function< Eigen::Vector3f *(prop::arondto::ForceTorque &)> > ftGetters
Definition: ConverterTools.h:94
cxxopts::value
std::shared_ptr< Value > value()
Definition: cxxopts.hpp:855
armarx::armem::server::robot_state::exteroception::ConverterTools::ConverterTools
ConverterTools()
Definition: ConverterTools.cpp:28
armarx::armem::server::robot_state::exteroception::ConverterTools
Definition: ConverterTools.h:69
armarx::armem::server::robot_state::exteroception::ConverterTools::JointSetter
std::function< void(prop::arondto::Joints &dto, const std::vector< std::string > &split, const ConverterValue &value)> JointSetter
Definition: ConverterTools.h:86
armarx::armem::server::robot_state::exteroception::ConverterTools::platformPoseGetters
std::map< std::string, std::function< Eigen::Vector3f *(prop::arondto::Platform &)> > platformPoseGetters
Definition: ConverterTools.h:90
armarx::armem::server::robot_state::exteroception::ConverterTools::jointVectorGetters
std::map< std::string, std::function< std::map< std::string, Eigen::Vector3f > *(prop::arondto::Joints &)> > jointVectorGetters
Definition: ConverterTools.h:82
armarx::armem::server::robot_state::exteroception::ConverterTools::jointSetters
std::map< std::string, JointSetter > jointSetters
Definition: ConverterTools.h:87
armarx::armem::server::robot_state::exteroception
Definition: ArmarDEConverter.cpp:18
armarx::armem::server::robot_state::exteroception::ConverterTools::sidePrefixMap
std::map< std::string, std::string > sidePrefixMap
Definition: ConverterTools.h:97
armarx::armem::server::robot_state::exteroception::ConverterValue
Definition: ConverterTools.h:19
armarx::armem::server::robot_state::exteroception::findBySuffix
ValueT findBySuffix(const std::string &key, const std::map< std::string, ValueT > &map)
Definition: ConverterTools.h:57
armarx::ends_with
bool ends_with(const std::string &haystack, const std::string &needle)
Definition: StringHelpers.cpp:53
armarx::armem::server::robot_state::exteroception::ConverterTools::jointGetters
std::map< std::string, std::function< std::map< std::string, float > *(prop::arondto::Joints &)> > jointGetters
Definition: ConverterTools.h:79
armarx::armem::server::robot_state::exteroception::getValueAs
T getValueAs(const ConverterValue &value)
Definition: ConverterTools.h:27
T
float T
Definition: UnscentedKalmanFilterTest.cpp:38
armarx::armem::server::robot_state::exteroception::ConverterValue::data
const RobotUnitDataStreaming::TimeStep & data
Definition: ConverterTools.h:21
armarx::split
std::vector< std::string > split(const std::string &source, const std::string &splitBy, bool trimElements=false, bool removeEmptyElements=false)
Definition: StringHelpers.cpp:38