Skip to content
Snippets Groups Projects
Commit 8626c97b authored by Fabian Reister's avatar Fabian Reister
Browse files

fixing armem: ArticulatedObjectReader, RobotReader (changes to memory data types ...)

parent d66b5b81
No related branches found
No related tags found
No related merge requests found
...@@ -43,12 +43,15 @@ namespace armarx::armem::articulated_object ...@@ -43,12 +43,15 @@ namespace armarx::armem::articulated_object
return nullptr; return nullptr;
} }
ARMARX_DEBUG << "Object " << name << " available";
auto obj = auto obj =
VirtualRobot::RobotIO::loadRobot(ArmarXDataPath::resolvePath(it->xml.serialize().path), VirtualRobot::RobotIO::loadRobot(ArmarXDataPath::resolvePath(it->xml.serialize().path),
VirtualRobot::RobotIO::eStructure); VirtualRobot::RobotIO::eStructure);
if (not obj) if (not obj)
{ {
ARMARX_WARNING << "Failed to load object: " << name;
return nullptr; return nullptr;
} }
...@@ -58,4 +61,4 @@ namespace armarx::armem::articulated_object ...@@ -58,4 +61,4 @@ namespace armarx::armem::articulated_object
return obj; return obj;
} }
} // namespace armarx::armem::articulated_object } // namespace armarx::armem::articulated_object
\ No newline at end of file
...@@ -2,7 +2,9 @@ ...@@ -2,7 +2,9 @@
#include <mutex> #include <mutex>
#include <optional> #include <optional>
#include <Eigen/src/Geometry/Transform.h>
#include "RobotAPI/libraries/ArmarXObjects/aron_conversions/objpose.h"
#include <ArmarXCore/core/PackagePath.h> #include <ArmarXCore/core/PackagePath.h>
#include <ArmarXCore/core/logging/Logging.h> #include <ArmarXCore/core/logging/Logging.h>
...@@ -188,7 +190,7 @@ namespace armarx::armem::articulated_object ...@@ -188,7 +190,7 @@ namespace armarx::armem::articulated_object
// clang-format off // clang-format off
qb qb
.coreSegments().withName(properties.coreClassSegmentName) .coreSegments().withName(properties.coreClassSegmentName)
.providerSegments().all() // TODO(fabian.reister): think about this: which authority is trustworthy? .providerSegments().withName(properties.providerName)
.entities().all() // withName(name) .entities().all() // withName(name)
.snapshots().latest(); .snapshots().latest();
// clang-format on // clang-format on
...@@ -231,11 +233,38 @@ namespace armarx::armem::articulated_object ...@@ -231,11 +233,38 @@ namespace armarx::armem::articulated_object
return std::nullopt; return std::nullopt;
} }
return getRobotState(qResult.memory); return getArticulatedObjectState(qResult.memory);
}
std::optional<robot::RobotState> convertToRobotState(const armem::wm::EntityInstance& instance)
{
armarx::armem::arondto::ObjectInstance aronObjectInstance;
try
{
aronObjectInstance.fromAron(instance.data());
}
catch (...)
{
ARMARX_WARNING << "Conversion to ObjectInstance failed!";
return std::nullopt;
}
objpose::ObjectPose objectPose;
objpose::fromAron(aronObjectInstance.pose, objectPose);
robot::RobotState robotState
{
.timestamp = objectPose.timestamp,
.globalPose = Eigen::Affine3f(objectPose.objectPoseRobot),
.jointMap = objectPose.objectJointValues
};
return robotState;
} }
std::optional<robot::RobotState> std::optional<robot::RobotState>
Reader::getRobotState(const armarx::armem::wm::Memory& memory) const Reader::getArticulatedObjectState(const armarx::armem::wm::Memory& memory) const
{ {
// clang-format off // clang-format off
const armem::wm::CoreSegment& coreSegment = memory const armem::wm::CoreSegment& coreSegment = memory
...@@ -247,14 +276,16 @@ namespace armarx::armem::articulated_object ...@@ -247,14 +276,16 @@ namespace armarx::armem::articulated_object
{ {
instance = i; instance = i;
}); });
if (instance.has_value()) if (instance.has_value())
{ {
return robot::convertRobotState(instance.value()); return convertToRobotState(instance.value());
} // return robot::convertRobotState(instance.value());
else
{
return std::nullopt;
} }
ARMARX_FATAL << "Failed to obtain robot state";
return std::nullopt;
} }
......
...@@ -66,7 +66,7 @@ namespace armarx::armem::articulated_object ...@@ -66,7 +66,7 @@ namespace armarx::armem::articulated_object
protected: protected:
std::optional<robot::RobotState> std::optional<robot::RobotState>
getRobotState(const armarx::armem::wm::Memory& memory) const; getArticulatedObjectState(const armarx::armem::wm::Memory& memory) const;
std::optional<robot::RobotDescription> std::optional<robot::RobotDescription>
getRobotDescription(const armarx::armem::wm::Memory& memory) const; getRobotDescription(const armarx::armem::wm::Memory& memory) const;
std::vector<robot::RobotDescription> std::vector<robot::RobotDescription>
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
#include <mutex> #include <mutex>
#include <optional> #include <optional>
#include "ArmarXCore/core/exceptions/local/ExpressionException.h"
#include <ArmarXCore/core/exceptions/LocalException.h> #include <ArmarXCore/core/exceptions/LocalException.h>
#include <ArmarXCore/core/logging/Logging.h> #include <ArmarXCore/core/logging/Logging.h>
#include <ArmarXCore/core/PackagePath.h> #include <ArmarXCore/core/PackagePath.h>
...@@ -15,6 +16,7 @@ ...@@ -15,6 +16,7 @@
#include <RobotAPI/libraries/armem_robot/robot_conversions.h> #include <RobotAPI/libraries/armem_robot/robot_conversions.h>
#include <RobotAPI/libraries/armem_robot/aron/Robot.aron.generated.h> #include <RobotAPI/libraries/armem_robot/aron/Robot.aron.generated.h>
#include <RobotAPI/libraries/armem_robot_state/aron/JointState.aron.generated.h> #include <RobotAPI/libraries/armem_robot_state/aron/JointState.aron.generated.h>
#include <RobotAPI/libraries/armem_robot_state/aron/Proprioception.aron.generated.h>
namespace fs = ::std::filesystem; namespace fs = ::std::filesystem;
...@@ -172,6 +174,8 @@ namespace armarx::armem::robot_state ...@@ -172,6 +174,8 @@ namespace armarx::armem::robot_state
// Query all entities from provider. // Query all entities from provider.
armem::client::query::Builder qb; armem::client::query::Builder qb;
ARMARX_DEBUG << "Querying robot description for robot: " << description;
// clang-format off // clang-format off
qb qb
.coreSegments().withName(properties.proprioceptionCoreSegment) .coreSegments().withName(properties.proprioceptionCoreSegment)
...@@ -276,14 +280,23 @@ namespace armarx::armem::robot_state ...@@ -276,14 +280,23 @@ namespace armarx::armem::robot_state
{ {
const auto& entityInstance = entity.getLatestSnapshot().getInstance(0); const auto& entityInstance = entity.getLatestSnapshot().getInstance(0);
const auto jointState = tryCast<::armarx::armem::arondto::JointState>(entityInstance); const auto proprioception = tryCast<::armarx::armem::arondto::Proprioception>(entityInstance);
if (not jointState) ARMARX_CHECK(proprioception.has_value());
{
// ARMARX_WARNING << "Could not convert entity instance to 'JointState'"; const armarx::armem::prop::arondto::Joints& joints = proprioception->joints;
return;
}
// const auto jointState = tryCast<::armarx::armem::arondto::JointState>(entityInstance);
// if (not jointState)
// {
// ARMARX_WARNING << "Could not convert entity instance to 'JointState'";
// return;
// }
jointMap = joints.position;
jointMap.emplace(jointState->name, jointState->position); // jointMap.emplace(jointState->name, jointState->position);
}); });
if (jointMap.empty()) if (jointMap.empty())
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment