From 8e4a9adba0b7de49cefda83f73f46286430a6f88 Mon Sep 17 00:00:00 2001 From: Rainer Kartmann <rainer.kartmann@kit.edu> Date: Tue, 17 Aug 2021 12:19:28 +0200 Subject: [PATCH] Fix includes, use forward declarations --- source/RobotAPI/libraries/armem_robot/types.h | 3 +- .../armem_robot_state/CMakeLists.txt | 2 + .../armem_robot_state/server/common/Visu.cpp | 13 ++- .../armem_robot_state/server/common/Visu.h | 18 +---- .../server/description/Segment.cpp | 6 +- .../server/description/Segment.h | 9 +-- .../server/forward_declarations.h | 80 +++++++++++++++++++ .../server/localization/Segment.cpp | 34 +++----- .../server/localization/Segment.h | 25 ++---- .../server/proprioception/Segment.cpp | 4 +- .../server/proprioception/Segment.h | 6 +- .../libraries/armem_robot_state/types.h | 5 +- 12 files changed, 121 insertions(+), 84 deletions(-) create mode 100644 source/RobotAPI/libraries/armem_robot_state/server/forward_declarations.h diff --git a/source/RobotAPI/libraries/armem_robot/types.h b/source/RobotAPI/libraries/armem_robot/types.h index 4fed4d1cb..4ae48e00f 100644 --- a/source/RobotAPI/libraries/armem_robot/types.h +++ b/source/RobotAPI/libraries/armem_robot/types.h @@ -10,6 +10,7 @@ #include <ArmarXCore/core/PackagePath.h> + namespace armarx::armem::robot { struct RobotDescription @@ -45,4 +46,4 @@ namespace armarx::armem::robot using RobotDescriptions = std::vector<RobotDescription>; using RobotStates = std::vector<RobotState>; -} // namespace armarx::armem::robot \ No newline at end of file +} // namespace armarx::armem::robot diff --git a/source/RobotAPI/libraries/armem_robot_state/CMakeLists.txt b/source/RobotAPI/libraries/armem_robot_state/CMakeLists.txt index a2e87f027..2d1842b46 100644 --- a/source/RobotAPI/libraries/armem_robot_state/CMakeLists.txt +++ b/source/RobotAPI/libraries/armem_robot_state/CMakeLists.txt @@ -36,6 +36,8 @@ armarx_add_library( client/localization/TransformReader.h client/localization/TransformWriter.h + server/forward_declarations.h + server/common/Visu.h server/localization/Segment.h diff --git a/source/RobotAPI/libraries/armem_robot_state/server/common/Visu.cpp b/source/RobotAPI/libraries/armem_robot_state/server/common/Visu.cpp index d6dcddd7d..0bcccee6c 100644 --- a/source/RobotAPI/libraries/armem_robot_state/server/common/Visu.cpp +++ b/source/RobotAPI/libraries/armem_robot_state/server/common/Visu.cpp @@ -6,8 +6,6 @@ #include <Eigen/Geometry> -#include <IceUtil/Time.h> - #include <SimoxUtility/algorithm/get_map_keys_values.h> #include <SimoxUtility/math/pose.h> @@ -15,13 +13,14 @@ #include <ArmarXCore/core/time/CycleUtil.h> #include <ArmarXCore/core/time/TimeUtil.h> -#include <RobotAPI/components/ArViz/Client/Elements.h> #include <RobotAPI/libraries/armem/core/Time.h> -#include <RobotAPI/libraries/ArmarXObjects/ObjectFinder.h> -#include "../description/Segment.h" -#include "../localization/Segment.h" -#include "../proprioception/Segment.h" +#include <RobotAPI/components/ArViz/Client/Elements.h> + +#include <RobotAPI/libraries/armem_robot_state/server/description/Segment.h> +#include <RobotAPI/libraries/armem_robot_state/server/localization/Segment.h> +#include <RobotAPI/libraries/armem_robot_state/server/proprioception/Segment.h> + namespace armarx::armem::server::robot_state diff --git a/source/RobotAPI/libraries/armem_robot_state/server/common/Visu.h b/source/RobotAPI/libraries/armem_robot_state/server/common/Visu.h index 95efae419..e407abc0d 100644 --- a/source/RobotAPI/libraries/armem_robot_state/server/common/Visu.h +++ b/source/RobotAPI/libraries/armem_robot_state/server/common/Visu.h @@ -31,27 +31,11 @@ #include <RobotAPI/libraries/armem_objects/types.h> +#include <RobotAPI/libraries/armem_robot_state/server/forward_declarations.h> -namespace armarx -{ - class ObjectFinder; -} namespace armarx::armem::server::robot_state { - namespace localization - { - class Segment; - } - namespace proprioception - { - class Segment; - } - namespace description - { - class Segment; - } - /** * @brief Models decay of object localizations by decreasing the confidence diff --git a/source/RobotAPI/libraries/armem_robot_state/server/description/Segment.cpp b/source/RobotAPI/libraries/armem_robot_state/server/description/Segment.cpp index 9925ab30f..7ca3f3701 100644 --- a/source/RobotAPI/libraries/armem_robot_state/server/description/Segment.cpp +++ b/source/RobotAPI/libraries/armem_robot_state/server/description/Segment.cpp @@ -96,7 +96,8 @@ namespace armarx::armem::server::robot_state::description } - Segment::RobotDescriptionMap Segment::getRobotDescriptionsLocking(const armem::Time& timestamp) const + RobotDescriptionMap + Segment::getRobotDescriptionsLocking(const armem::Time& timestamp) const { return doLocked([this, ×tamp]() { @@ -105,7 +106,8 @@ namespace armarx::armem::server::robot_state::description } - Segment::RobotDescriptionMap Segment::getRobotDescriptions(const armem::Time& timestamp) const + RobotDescriptionMap + Segment::getRobotDescriptions(const armem::Time& timestamp) const { ARMARX_CHECK_NOT_NULL(segment); (void) timestamp; // Unused diff --git a/source/RobotAPI/libraries/armem_robot_state/server/description/Segment.h b/source/RobotAPI/libraries/armem_robot_state/server/description/Segment.h index c62821c4a..40eac5770 100644 --- a/source/RobotAPI/libraries/armem_robot_state/server/description/Segment.h +++ b/source/RobotAPI/libraries/armem_robot_state/server/description/Segment.h @@ -28,12 +28,9 @@ #include <unordered_map> // ArmarX -#include <ArmarXCore/core/application/properties/PropertyDefinitionContainer.h> - #include <RobotAPI/interface/units/RobotUnit/RobotUnitInterface.h> -#include <RobotAPI/libraries/armem/core/MemoryID.h> #include <RobotAPI/libraries/armem/server/segment/Segment.h> -#include <RobotAPI/libraries/armem_objects/types.h> +#include <RobotAPI/libraries/armem_robot_state/server/forward_declarations.h> // Aron #include <RobotAPI/libraries/armem_robot/aron/RobotDescription.aron.generated.h> @@ -41,6 +38,7 @@ namespace armarx::armem::server::robot_state::description { + class Segment : public segment::wm::AronTypedCoreSegmentBase<arondto::RobotDescription> { using Base = segment::wm::AronTypedCoreSegmentBase<arondto::RobotDescription>; @@ -54,9 +52,6 @@ namespace armarx::armem::server::robot_state::description void onConnect(const RobotUnitInterfacePrx& robotUnitPrx); - /// mapping "robot name" -> "robot description" - using RobotDescriptionMap = std::unordered_map<std::string, robot::RobotDescription>; - RobotDescriptionMap getRobotDescriptions(const armem::Time& timestamp) const; RobotDescriptionMap getRobotDescriptionsLocking(const armem::Time& timestamp) const; diff --git a/source/RobotAPI/libraries/armem_robot_state/server/forward_declarations.h b/source/RobotAPI/libraries/armem_robot_state/server/forward_declarations.h new file mode 100644 index 000000000..e730e29f1 --- /dev/null +++ b/source/RobotAPI/libraries/armem_robot_state/server/forward_declarations.h @@ -0,0 +1,80 @@ +/* + * This file is part of ArmarX. + * + * ArmarX is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * ArmarX is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + * @author Rainer Kartmann ( rainer dot kartmann at kit dot edu ) + * @date 2021 + * @copyright http://www.gnu.org/licenses/gpl-2.0.txt + * GNU General Public License + */ + +#pragma once + +#include <map> +#include <string> +#include <unordered_map> +#include <vector> + +#include <Eigen/Geometry> + + + +namespace armarx::armem::arondto +{ + struct Transform; + struct TransformHeader; + + struct JointState; + + class RobotDescription; +} + +namespace armarx::armem::robot +{ + struct RobotDescription; + struct RobotState; + struct Robot; + + using Robots = std::vector<Robot>; + using RobotDescriptions = std::vector<RobotDescription>; + using RobotStates = std::vector<RobotState>; +} + +namespace armarx::armem::robot_state +{ + struct JointState; + + struct Transform; + struct TransformHeader; +} + +namespace armarx::armem::server::robot_state::description +{ + using RobotDescriptionMap = std::unordered_map<std::string, robot::RobotDescription>; + class Segment; +} + +namespace armarx::armem::server::robot_state::localization +{ + using RobotPoseMap = std::unordered_map<std::string, Eigen::Affine3f>; + using RobotFramePoseMap = std::unordered_map<std::string, std::vector<Eigen::Affine3f>>; + class Segment; +} + +namespace armarx::armem::server::robot_state::proprioception +{ + using RobotJointPositionMap = std::unordered_map<std::string, std::map<std::string, float>>; + class Segment; +} + diff --git a/source/RobotAPI/libraries/armem_robot_state/server/localization/Segment.cpp b/source/RobotAPI/libraries/armem_robot_state/server/localization/Segment.cpp index 9ff341536..1a73d571d 100644 --- a/source/RobotAPI/libraries/armem_robot_state/server/localization/Segment.cpp +++ b/source/RobotAPI/libraries/armem_robot_state/server/localization/Segment.cpp @@ -2,27 +2,12 @@ // STL #include <iterator> -#include <sstream> -// Ice -#include <IceUtil/Time.h> - -// Eigen -#include <Eigen/Core> -#include <Eigen/Geometry> - -#include <ArmarXCore/core/application/properties/PropertyDefinitionContainer.h> -#include <ArmarXCore/core/application/properties/PluginAll.h> #include <ArmarXCore/core/logging/Logging.h> -#include <ArmarXCore/core/time/TimeUtil.h> #include <RobotAPI/libraries/core/FramedPose.h> - #include <RobotAPI/libraries/aron/common/aron_conversions.h> -#include <RobotAPI/libraries/armem/client/Writer.h> -#include <RobotAPI/libraries/armem/client/query/Builder.h> -#include <RobotAPI/libraries/armem/client/query/query_fns.h> #include <RobotAPI/libraries/armem/core/MemoryID.h> #include <RobotAPI/libraries/armem/core/Time.h> #include <RobotAPI/libraries/armem/core/aron_conversions.h> @@ -32,6 +17,7 @@ #include <RobotAPI/libraries/armem_robot/robot_conversions.h> #include <RobotAPI/libraries/armem_robot_state/aron_conversions.h> +#include <RobotAPI/libraries/armem_robot_state/types.h> #include <RobotAPI/libraries/armem_robot_state/common/localization/TransformHelper.h> #include <RobotAPI/libraries/armem_robot_state/common/localization/types.h> @@ -45,14 +31,17 @@ namespace armarx::armem::server::robot_state::localization } - Segment::~Segment() = default; + Segment::~Segment() + { + } + void Segment::onConnect() { } - Segment::RobotFramePoseMap + RobotFramePoseMap Segment::getRobotFramePosesLocking(const armem::Time& timestamp) const { return this->doLocked([this, ×tamp]() @@ -62,7 +51,7 @@ namespace armarx::armem::server::robot_state::localization } - Segment::RobotFramePoseMap + RobotFramePoseMap Segment::getRobotFramePoses(const armem::Time& timestamp) const { using common::robot_state::localization::TransformHelper; @@ -74,7 +63,7 @@ namespace armarx::armem::server::robot_state::localization TransformQuery query { .header = { - .parentFrame = GlobalFrame, + .parentFrame = armarx::GlobalFrame, .frame = "root", // TODO, FIXME .agent = robotName, .timestamp = timestamp @@ -98,7 +87,7 @@ namespace armarx::armem::server::robot_state::localization } - Segment::RobotPoseMap + RobotPoseMap Segment::getRobotGlobalPosesLocking(const armem::Time& timestamp) const { return this->doLocked([this, ×tamp]() @@ -108,7 +97,7 @@ namespace armarx::armem::server::robot_state::localization } - Segment::RobotPoseMap + RobotPoseMap Segment::getRobotGlobalPoses(const armem::Time& timestamp) const { using common::robot_state::localization::TransformHelper; @@ -128,8 +117,7 @@ namespace armarx::armem::server::robot_state::localization } }; - const auto result = TransformHelper::lookupTransform(*segment, query); - if (result) + if (const auto result = TransformHelper::lookupTransform(*segment, query)) { robotGlobalPoses.emplace(robotName, result.transform.transform); } diff --git a/source/RobotAPI/libraries/armem_robot_state/server/localization/Segment.h b/source/RobotAPI/libraries/armem_robot_state/server/localization/Segment.h index 31fffb420..f0b228800 100644 --- a/source/RobotAPI/libraries/armem_robot_state/server/localization/Segment.h +++ b/source/RobotAPI/libraries/armem_robot_state/server/localization/Segment.h @@ -30,52 +30,41 @@ #include <Eigen/Geometry> // ArmarX -#include <RobotAPI/libraries/armem/core/MemoryID.h> +#include <RobotAPI/libraries/armem/core/forward_declarations.h> #include <RobotAPI/libraries/armem/server/segment/Segment.h> -#include <RobotAPI/libraries/armem_objects/types.h> -#include <RobotAPI/libraries/armem_robot_state/types.h> -// Aron #include <RobotAPI/libraries/armem_robot_state/aron/Transform.aron.generated.h> +#include <RobotAPI/libraries/armem_robot_state/server/forward_declarations.h> -namespace armarx::armem -{ - struct EntityUpdate; -} // namespace armarx::armem - namespace armarx::armem::server::robot_state::localization { class Segment : public segment::wm::AronTypedCoreSegmentBase<arondto::Transform> { using Base = segment::wm::AronTypedCoreSegmentBase<arondto::Transform>; - public: - - using RobotPoseMap = std::unordered_map<std::string, Eigen::Affine3f>; - using RobotFramePoseMap = std::unordered_map<std::string, std::vector<Eigen::Affine3f>>; - - public: Segment(server::MemoryToIceAdapter& iceMemory); virtual ~Segment() override; + void onConnect(); + RobotPoseMap getRobotGlobalPoses(const armem::Time& timestamp) const; RobotPoseMap getRobotGlobalPosesLocking(const armem::Time& timestamp) const; RobotFramePoseMap getRobotFramePoses(const armem::Time& timestamp) const; RobotFramePoseMap getRobotFramePosesLocking(const armem::Time& timestamp) const; - bool commitTransform(const armarx::armem::robot_state::Transform& transform); - bool commitTransformLocking(const armarx::armem::robot_state::Transform& transform); + bool commitTransform(const armem::robot_state::Transform& transform); + bool commitTransformLocking(const armem::robot_state::Transform& transform); private: - EntityUpdate makeUpdate(const armarx::armem::robot_state::Transform& transform) const; + EntityUpdate makeUpdate(const armem::robot_state::Transform& transform) const; }; 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 5290d004c..3f6f24f45 100644 --- a/source/RobotAPI/libraries/armem_robot_state/server/proprioception/Segment.cpp +++ b/source/RobotAPI/libraries/armem_robot_state/server/proprioception/Segment.cpp @@ -43,7 +43,7 @@ namespace armarx::armem::server::robot_state::proprioception - Segment::RobotJointPositionMap Segment::getRobotJointPositionsLocking( + RobotJointPositionMap Segment::getRobotJointPositionsLocking( const armem::Time& timestamp, DebugObserverHelper* debugObserver) const { @@ -66,7 +66,7 @@ namespace armarx::armem::server::robot_state::proprioception } - Segment::RobotJointPositionMap + RobotJointPositionMap Segment::getRobotJointPositions( const armem::Time& timestamp, DebugObserverHelper* debugObserver) const diff --git a/source/RobotAPI/libraries/armem_robot_state/server/proprioception/Segment.h b/source/RobotAPI/libraries/armem_robot_state/server/proprioception/Segment.h index 3beeeacc2..e27984bba 100644 --- a/source/RobotAPI/libraries/armem_robot_state/server/proprioception/Segment.h +++ b/source/RobotAPI/libraries/armem_robot_state/server/proprioception/Segment.h @@ -26,7 +26,6 @@ #include <map> #include <optional> #include <string> -#include <unordered_map> // ArmarX #include <RobotAPI/interface/units/RobotUnit/RobotUnitInterface.h> @@ -34,6 +33,7 @@ // RobotAPI #include <RobotAPI/libraries/armem/core/MemoryID.h> #include <RobotAPI/libraries/armem/server/segment/Segment.h> +#include <RobotAPI/libraries/armem_robot_state/server/forward_declarations.h> namespace armarx @@ -46,10 +46,6 @@ namespace armarx::armem::server::robot_state::proprioception { using Base = segment::wm::CoreSegmentBase; - public: - - using RobotJointPositionMap = std::unordered_map<std::string, std::map<std::string, float>>; - public: Segment(server::MemoryToIceAdapter& iceMemory); diff --git a/source/RobotAPI/libraries/armem_robot_state/types.h b/source/RobotAPI/libraries/armem_robot_state/types.h index 39daba5d2..b6d2b67de 100644 --- a/source/RobotAPI/libraries/armem_robot_state/types.h +++ b/source/RobotAPI/libraries/armem_robot_state/types.h @@ -23,7 +23,8 @@ #include <Eigen/Geometry> -#include "RobotAPI/libraries/armem/core/Time.h" +#include <RobotAPI/libraries/armem/core/Time.h> + namespace armarx::armem::robot_state { @@ -34,7 +35,7 @@ namespace armarx::armem::robot_state std::string agent; - armem::Time timestamp; + armem::Time timestamp; }; struct Transform -- GitLab