ConverterTools.cpp
Go to the documentation of this file.
1
#include "
ConverterTools.h
"
2
3
#include <SimoxUtility/algorithm/advanced.h>
4
#include <SimoxUtility/algorithm/get_map_keys_values.h>
5
6
#include <
RobotAPI/libraries/RobotUnitDataStreamingReceiver/RobotUnitDataStreamingReceiver.h
>
7
#include <
RobotAPI/libraries/aron/core/data/variant/container/Dict.h
>
8
9
namespace
armarx::armem::server::robot_state
10
{
11
12
std::optional<std::string>
13
exteroception::findByPrefix
(
const
std::string& key,
const
std::set<std::string>& prefixes)
14
{
15
for
(
const
auto
& prefix : prefixes)
16
{
17
if
(
simox::alg::starts_with
(key, prefix))
18
{
19
return
prefix;
20
}
21
}
22
return
std::nullopt;
23
}
24
}
// namespace armarx::armem::server::robot_state
25
26
namespace
armarx::armem::server::robot_state::exteroception
27
{
28
ConverterTools::ConverterTools
()
29
{
30
{
31
vector3fSetters
[
"X"
] = [](Eigen::Vector3f&
v
,
float
f) {
v
.x() = f; };
32
vector3fSetters
[
"Y"
] = [](Eigen::Vector3f&
v
,
float
f) {
v
.y() = f; };
33
vector3fSetters
[
"Z"
] = [](Eigen::Vector3f&
v
,
float
f) {
v
.z() = f; };
34
vector3fSetters
[
"x"
] =
vector3fSetters
[
"X"
];
35
vector3fSetters
[
"y"
] =
vector3fSetters
[
"Y"
];
36
vector3fSetters
[
"z"
] =
vector3fSetters
[
"Z"
];
37
vector3fSetters
[
"Rotation"
] =
vector3fSetters
[
"Z"
];
38
}
39
{
40
platformPoseGetters
[
"acceleration"
] = [](prop::arondto::Platform& p)
41
{
return
&p.acceleration; };
42
platformPoseGetters
[
"relativePosition"
] = [](prop::arondto::Platform& p)
43
{
return
&p.relativePosition; };
44
platformPoseGetters
[
"velocity"
] = [](prop::arondto::Platform& p)
45
{
return
&p.velocity; };
46
platformIgnored
.insert(
"absolutePosition"
);
47
}
48
{
49
ftGetters
[
"gravCompF"
] = [](prop::arondto::ForceTorque& ft)
50
{
return
&ft.gravityCompensationForce; };
51
ftGetters
[
"gravCompT"
] = [](prop::arondto::ForceTorque& ft)
52
{
return
&ft.gravityCompensationTorque; };
53
ftGetters
[
"f"
] = [](prop::arondto::ForceTorque& ft) {
return
&ft.force; };
54
ftGetters
[
"t"
] = [](prop::arondto::ForceTorque& ft) {
return
&ft.torque; };
55
}
56
{
57
jointGetters
[
"acceleration"
] = [](
prop::arondto::Joints
& j) {
return
&j.acceleration; };
58
jointGetters
[
"gravityTorque"
] = [](
prop::arondto::Joints
& j)
59
{
return
&j.gravityTorque; };
60
jointGetters
[
"inertiaTorque"
] = [](
prop::arondto::Joints
& j)
61
{
return
&j.inertiaTorque; };
62
jointGetters
[
"inverseDynamicsTorque"
] = [](
prop::arondto::Joints
& j)
63
{
return
&j.inverseDynamicsTorque; };
64
jointGetters
[
"position"
] = [](
prop::arondto::Joints
& j) {
return
&j.position; };
65
jointGetters
[
"torque"
] = [](
prop::arondto::Joints
& j) {
return
&j.torque; };
66
jointGetters
[
"velocity"
] = [](
prop::arondto::Joints
& j) {
return
&j.velocity; };
67
}
68
{
69
70
#define ADD_SCALAR_SETTER(container, name, type) \
71
container[#name] = [](prop::arondto::Joints& dto, \
72
const std::vector<std::string>& split, \
73
const ConverterValue& value) \
74
{ dto.name[split.at(1)] = getValueAs<type>(value); }
75
76
ADD_SCALAR_SETTER
(
jointSetters
, position,
float
);
77
ADD_SCALAR_SETTER
(
jointSetters
, velocity,
float
);
78
ADD_SCALAR_SETTER
(
jointSetters
, acceleration,
float
);
79
80
ADD_SCALAR_SETTER
(
jointSetters
, relativePosition,
float
);
81
ADD_SCALAR_SETTER
(
jointSetters
, filteredVelocity,
float
);
82
83
ADD_SCALAR_SETTER
(
jointSetters
, currentTarget,
float
);
84
ADD_SCALAR_SETTER
(
jointSetters
, positionTarget,
float
);
85
ADD_SCALAR_SETTER
(
jointSetters
, velocityTarget,
float
);
86
87
ADD_SCALAR_SETTER
(
jointSetters
, torque,
float
);
88
ADD_SCALAR_SETTER
(
jointSetters
, inertiaTorque,
float
);
89
ADD_SCALAR_SETTER
(
jointSetters
, gravityTorque,
float
);
90
ADD_SCALAR_SETTER
(
jointSetters
, gravityCompensatedTorque,
float
);
91
ADD_SCALAR_SETTER
(
jointSetters
, inverseDynamicsTorque,
float
);
92
ADD_SCALAR_SETTER
(
jointSetters
, torqueTicks,
int
);
93
94
ADD_SCALAR_SETTER
(
jointSetters
, positionTarget,
float
);
95
ADD_SCALAR_SETTER
(
jointSetters
, currentTarget,
float
);
96
ADD_SCALAR_SETTER
(
jointSetters
, positionTarget,
float
);
97
98
// "temperature" handled below
99
// ADD_SCALAR_SETTER(jointSetters, temperature, float);
100
101
ADD_SCALAR_SETTER
(
jointSetters
, motorCurrent,
float
);
102
ADD_SCALAR_SETTER
(
jointSetters
, maxTargetCurrent,
float
);
103
104
ADD_SCALAR_SETTER
(
jointSetters
, sensorBoardUpdateRate,
float
);
105
ADD_SCALAR_SETTER
(
jointSetters
, I2CUpdateRate,
float
);
106
107
ADD_SCALAR_SETTER
(
jointSetters
, JointStatusEmergencyStop,
bool
);
108
ADD_SCALAR_SETTER
(
jointSetters
, JointStatusEnabled,
bool
);
109
ADD_SCALAR_SETTER
(
jointSetters
, JointStatusError,
int
);
110
ADD_SCALAR_SETTER
(
jointSetters
, JointStatusOperation,
int
);
111
112
113
#define ADD_VECTOR3_SETTER(container, name, type) \
114
container[#name] = [this](prop::arondto::Joints& dto, \
115
const std::vector<std::string>& split, \
116
const ConverterValue& value) \
117
{ \
118
auto& vec = dto.name[split.at(1)]; \
119
auto& setter = this -> vector3fSetters.at(split.at(3)); \
120
setter(vec, getValueAs<type>(value)); \
121
}
122
123
ADD_VECTOR3_SETTER
(
jointSetters
, angularVelocity,
float
);
124
ADD_VECTOR3_SETTER
(
jointSetters
, linearAcceleration,
float
);
125
126
// ADD_GETTER(jointVectorGetters, orientation, float);
127
}
128
}
129
130
}
// 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
ADD_VECTOR3_SETTER
#define ADD_VECTOR3_SETTER(container, name, type)
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
ConverterTools.h
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
Dict.h
armarx::armem::server::robot_state::exteroception::ConverterTools::vector3fSetters
std::map< std::string, std::function< void(Eigen::Vector3f &, float)> > vector3fSetters
Definition:
ConverterTools.h:76
armarx::armem::server::robot_state
Definition:
RobotStateMemory.cpp:40
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
armarx::armem::server::robot_state::exteroception::ConverterTools::ConverterTools
ConverterTools()
Definition:
ConverterTools.cpp:28
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::jointSetters
std::map< std::string, JointSetter > jointSetters
Definition:
ConverterTools.h:87
armarx::armem::server::robot_state::exteroception
Definition:
ArmarDEConverter.cpp:18
armarx::ctrlutil::v
double v(double t, double v0, double a0, double j)
Definition:
CtrlUtil.h:39
ADD_SCALAR_SETTER
#define ADD_SCALAR_SETTER(container, name, type)
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
RobotAPI
libraries
armem_robot_state
server
exteroception
converters
ConverterTools.cpp
Generated on Sat Mar 29 2025 09:17:29 for armarx_documentation by
1.8.17