combine.cpp
Go to the documentation of this file.
1 #include "combine.h"
2 
6 
8 
9 #include <sstream>
10 
11 
12 namespace armarx::armem::server
13 {
14 
17  const description::RobotDescriptionMap& robotDescriptions,
18  const localization::RobotPoseMap& globalPoses,
19  const proprioception::SensorValuesMap& sensorValues,
20  const armem::Time& timestamp)
21  {
22  std::stringstream logs;
23 
25  for (const auto& [robotName, robotDescription] : robotDescriptions)
26  {
27  // Handle missing values gracefully instead of skipping the robot altogether.
28 
29  robot::Robot& robot = robots.emplace_back();
30 
31  robot.description = robotDescription;
32  robot.instance = ""; // TODO(fabian.reister): set this properly
33  robot.config.timestamp = timestamp;
35  robot.config.jointMap = {};
36  robot.timestamp = timestamp;
37 
38  if (auto it = globalPoses.find(robotName); it != globalPoses.end())
39  {
40  robot.config.globalPose = it->second;
41  }
42  else
43  {
44  logs << "\nNo global pose for robot '" << robotName << "'.";
45  }
46  if (auto it = sensorValues.find(robotName); it != sensorValues.end())
47  {
48  for (const auto& [name, values] : it->second.jointValueMap)
49  {
50  robot.config.jointMap.emplace(name, values.position);
51  }
52  }
53  else
54  {
55  logs << "\nNo joint positions for robot '" << robotName << "'.";
56  }
57  }
58 
59  if (not logs.str().empty())
60  {
61  // These are handled, so they are no warnings.
62  ARMARX_VERBOSE << deactivateSpam(60) << logs.str();
63  }
64 
65  return robots;
66  }
67 
68 }
armarx::armem::robot::Robots
std::vector< Robot > Robots
Definition: types.h:80
ARMARX_VERBOSE
#define ARMARX_VERBOSE
Definition: Logging.h:180
robots
std::vector< VirtualRobot::RobotPtr > robots
Definition: VisualizationRobot.cpp:86
armarx::armem::robot::Robot
Definition: types.h:68
ProsthesisInterface.values
values
Definition: ProsthesisInterface.py:190
combine.h
armarx::armem::server::robot_state::localization::RobotPoseMap
std::unordered_map< std::string, Eigen::Affine3f > RobotPoseMap
Definition: forward_declarations.h:70
deactivateSpam
SpamFilterDataPtr deactivateSpam(SpamFilterDataPtr const &spamFilter, float deactivationDurationSec, const std::string &identifier, bool deactivate)
Definition: Logging.cpp:72
GfxTL::Identity
void Identity(MatrixXX< N, N, T > *a)
Definition: MatrixXX.h:523
armarx::armem::robot::Robot::description
RobotDescription description
Definition: types.h:70
armarx::armem::robot::Robot::instance
std::string instance
Definition: types.h:71
armarx::armem::server::robot_state::combine
robot::Robots combine(const description::RobotDescriptionMap &robotDescriptions, const localization::RobotPoseMap &globalPoses, const proprioception::SensorValuesMap &sensorValues, const armem::Time &timestamp)
Definition: combine.cpp:16
armarx::armem::server::robot_state::proprioception::SensorValuesMap
std::unordered_map< std::string, SensorValues > SensorValuesMap
Definition: forward_declarations.h:82
armarx::armem::server::robot_state::description::RobotDescriptionMap
std::unordered_map< std::string, robot::RobotDescription > RobotDescriptionMap
Definition: forward_declarations.h:64
armarx::armem::server
Definition: GraspMemory.cpp:19
armarx::armem::robot::Robot::timestamp
DateTime timestamp
Definition: types.h:75
armarx::core::time::DateTime
Represents a point in time.
Definition: DateTime.h:24
types.h
Time.h
armarx::armem::robot::RobotState::jointMap
JointMap jointMap
Definition: types.h:62
Logging.h
armarx::armem::robot::RobotState::globalPose
Pose globalPose
Definition: types.h:61
armarx::armem::robot::Robot::config
RobotState config
Definition: types.h:73
armarx::armem::robot::RobotState::timestamp
DateTime timestamp
Definition: types.h:59
SensorValues.h