ArticulatedObjectReader.cpp
Go to the documentation of this file.
2 
3 #include <mutex>
4 #include <optional>
5 
6 #include <VirtualRobot/XML/BaseIO.h>
7 #include <VirtualRobot/XML/RobotIO.h>
8 
13 
16 #include <RobotAPI/libraries/ArmarXObjects/aron/ObjectPose.aron.generated.h>
22 #include <RobotAPI/libraries/armem_robot_state/aron/Robot.aron.generated.h>
25 
27 {
28 
30  ArticulatedObjectReader::getArticulatedObject(const std::string& typeName,
31  const armem::Time& timestamp,
32  const std::optional<std::string>& providerName,
33  const std::string& instanceName,
34  VirtualRobot::RobotIO::RobotDescription loadMode)
35  {
36  ARMARX_VERBOSE << "Getting `" << typeName + "/" + instanceName << "`";
37 
38  const std::optional<ArticulatedObject> articulatedObjectDescription =
39  get(typeName + "/" + instanceName, timestamp, providerName);
40  ARMARX_CHECK_NOT_NULL(articulatedObjectDescription)
41  << "Failed to get articulated object `" << typeName << "/" << instanceName << "`";
42 
43  auto obj = VirtualRobot::RobotIO::loadRobot(
44  articulatedObjectDescription->description.xml.toSystemPath(), loadMode);
45 
46  if (not obj)
47  {
48  ARMARX_WARNING << "Failed to load articulated object `" << typeName << "/"
49  << instanceName << "` from file `"
50  << articulatedObjectDescription->description.xml.toSystemPath() << "`.";
51 
52  return nullptr;
53  }
54 
55  obj->setName(instanceName);
56  obj->setType(typeName);
57 
58  return obj;
59  }
60 
61  bool
63  VirtualRobot::Robot& object,
64  const armem::Time& timestamp,
65  const std::optional<std::string>& providerName)
66  {
67  const auto objectState =
68  queryState(object.getType() + "/" + object.getName(), timestamp, providerName);
69  if (not objectState)
70  {
71  ARMARX_VERBOSE << deactivateSpam(5) << "Querying object state failed for object `"
72  << object.getName() << "` "
73  << "(type `" << object.getType() << "`)!";
74  return false;
75  }
76 
77  object.setJointValues(objectState->jointMap);
78  object.setGlobalPose(objectState->globalPose.matrix());
79 
80  return true;
81  }
82 
83 } // namespace armarx::armem::articulated_object
armarx::armem::articulated_object::Reader::get
std::optional< ArticulatedObject > get(const std::string &name, const armem::Time &timestamp, const std::optional< std::string > &providerName) const override
Definition: Reader.cpp:99
armarx::armem::articulated_object::Reader::queryState
std::optional< robot_state::RobotState > queryState(const std::string &instanceName, const armem::Time &timestamp, const std::optional< std::string > &providerName) const
Definition: Reader.cpp:262
ARMARX_VERBOSE
#define ARMARX_VERBOSE
Definition: Logging.h:187
ARMARX_CHECK_NOT_NULL
#define ARMARX_CHECK_NOT_NULL(ptr)
This macro evaluates whether ptr is not null and if it turns out to be false it will throw an Express...
Definition: ExpressionException.h:206
ArticulatedObjectReader.h
deactivateSpam
SpamFilterDataPtr deactivateSpam(SpamFilterDataPtr const &spamFilter, float deactivationDurationSec, const std::string &identifier, bool deactivate)
Definition: Logging.cpp:75
armarx::armem::human::Robot
@ Robot
Definition: util.h:17
error.h
aron_conversions.h
timestamp
std::string timestamp()
Definition: CartographerAdapter.cpp:85
ObjectPose.h
ObjectInfo.h
memory_definitions.h
ExpressionException.h
armarx::core::time::DateTime
Represents a point in time.
Definition: DateTime.h:24
armarx::armem::articulated_object::ArticulatedObjectReader::synchronizeArticulatedObject
bool synchronizeArticulatedObject(VirtualRobot::Robot &object, const armem::Time &timestamp, const std::optional< std::string > &providerName)
Definition: ArticulatedObjectReader.cpp:62
armarx::armem::articulated_object
Definition: ArticulatedObjectReader.cpp:26
Time.h
Builder.h
Logging.h
robot_conversions.h
ARMARX_WARNING
#define ARMARX_WARNING
Definition: Logging.h:193
aron_conversions.h
ArmarXDataPath.h
armarx::armem::articulated_object::ArticulatedObjectReader::getArticulatedObject
VirtualRobot::RobotPtr getArticulatedObject(const std::string &typeName, const armem::Time &timestamp, const std::optional< std::string > &providerName, const std::string &instanceName="", VirtualRobot::RobotIO::RobotDescription loadMode=VirtualRobot::RobotIO::eStructure)
Definition: ArticulatedObjectReader.cpp:30
VirtualRobot::RobotPtr
std::shared_ptr< class Robot > RobotPtr
Definition: Bus.h:19
PackagePath.h