From a776b29e3dbea2fd51f350f350a7ec0481a5bb41 Mon Sep 17 00:00:00 2001 From: Fabian Reister <fabian.reister@kit.edu> Date: Tue, 11 May 2021 08:20:24 +0200 Subject: [PATCH] odometry streaming --- .../server/proprioception/Segment.cpp | 39 ++++++++++--------- 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/source/RobotAPI/libraries/armem_robot_state/server/proprioception/Segment.cpp b/source/RobotAPI/libraries/armem_robot_state/server/proprioception/Segment.cpp index cc8d03a87..38fe69a91 100644 --- a/source/RobotAPI/libraries/armem_robot_state/server/proprioception/Segment.cpp +++ b/source/RobotAPI/libraries/armem_robot_state/server/proprioception/Segment.cpp @@ -6,6 +6,7 @@ #include <ArmarXCore/core/time/TimeUtil.h> #include "ArmarXCore/core/logging/Logging.h" +#include "RobotAPI/libraries/armem_robot_state/types.h" #include "RobotAPI/libraries/aron/common/aron_conversions.h" #include <RobotAPI/libraries/armem/core/aron_conversions.h> @@ -18,9 +19,12 @@ #include "RobotAPI/libraries/armem_robot/robot_conversions.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_objects/aron_conversions.h> +#include <RobotAPI/libraries/armem/util/util.h> + namespace armarx::armem::server::robot_state::proprioception { @@ -45,7 +49,7 @@ namespace armarx::armem::server::robot_state::proprioception ARMARX_CHECK_NOT_NULL(iceMemory.workingMemory); ARMARX_INFO << "Adding core segment '" << p.coreSegment << "'"; - coreSegment = &iceMemory.workingMemory->addCoreSegment(p.coreSegment); // TODO , arondto::Robot::toInitialAronType()); + coreSegment = &iceMemory.workingMemory->addCoreSegment(p.coreSegment); coreSegment->setMaxHistorySize(p.maxHistorySize); } @@ -83,32 +87,31 @@ namespace armarx::armem::server::robot_state::proprioception robotUnitProviderID.memoryName = iceMemory.workingMemory->id().memoryName; robotUnitProviderID.coreSegmentName = p.coreSegment; robotUnitProviderID.providerSegmentName = providerSegmentName; - - // this->visu = std::make_unique<Visu>(arviz, *this); } std::unordered_map<std::string, std::map<std::string, float>> Segment::getRobotJointPositions() const { std::unordered_map<std::string, std::map<std::string, float>> jointMap; - // for (const auto& [provName, provSeg] : iceMemory.workingMemory->getCoreSegment(p.coreClassSegmentName)) - // { - // for (const auto& [entityName, entity] : provSeg.entities()) - // { - // const auto& entityInstance = entity.getLatestSnapshot().getInstance(0); - // const auto description = articulated_object::convertRobotDescription(entityInstance); + for (const auto& [robotName, provSeg] : iceMemory.workingMemory->getCoreSegment(p.coreSegment)) + { + for (const auto& [name, entity] : provSeg.entities()) + { + const auto& entityInstance = entity.getLatestSnapshot().getInstance(0); - // if (not description) - // { - // ARMARX_WARNING << "Could not convert entity instance to 'RobotDescription'"; - // continue; - // } + const auto jointState = tryCast<armarx::armem::arondto::JointState>(entityInstance); - // ARMARX_INFO << "Key is " << armem::MemoryID(entity.id()); + if (not jointState) + { + // ARMARX_WARNING << "Could not convert entity instance to 'JointState'"; + continue; + } + + jointMap[robotName].emplace(jointState->name, jointState->position); + } + } - // objects.emplace(armem::MemoryID(entity.id()), *description); - // } - // } + ARMARX_INFO << deactivateSpam(10) << "Number of known robot joint maps: " << jointMap.size(); return jointMap; } -- GitLab