diff --git a/source/RobotAPI/libraries/RobotAPIComponentPlugins/CMakeLists.txt b/source/RobotAPI/libraries/RobotAPIComponentPlugins/CMakeLists.txt index 444d6e770fa746c6924a1341d62651ecd4d1a953..eb2a743cc6435d7ab3d44a77dc8283a0e754138d 100644 --- a/source/RobotAPI/libraries/RobotAPIComponentPlugins/CMakeLists.txt +++ b/source/RobotAPI/libraries/RobotAPIComponentPlugins/CMakeLists.txt @@ -22,6 +22,7 @@ set(LIB_FILES CartesianPositionControlComponentPlugin.cpp NaturalIKComponentPlugin.cpp HandUnitComponentPlugin.cpp + FrameTrackingComponentPlugin.cpp ) set(LIB_HEADERS RobotStateComponentPlugin.h @@ -36,6 +37,7 @@ set(LIB_HEADERS CartesianPositionControlComponentPlugin.h NaturalIKComponentPlugin.h HandUnitComponentPlugin.h + FrameTrackingComponentPlugin.h ) armarx_add_library("${LIB_NAME}" "${LIB_FILES}" "${LIB_HEADERS}" "${LIBS}") diff --git a/source/RobotAPI/libraries/RobotAPIComponentPlugins/FrameTrackingComponentPlugin.cpp b/source/RobotAPI/libraries/RobotAPIComponentPlugins/FrameTrackingComponentPlugin.cpp new file mode 100644 index 0000000000000000000000000000000000000000..f5ba6417ad1ee3c5a683a33209678c3465c76277 --- /dev/null +++ b/source/RobotAPI/libraries/RobotAPIComponentPlugins/FrameTrackingComponentPlugin.cpp @@ -0,0 +1,54 @@ +#include "FrameTrackingComponentPlugin.h" + +namespace armarx +{ + namespace plugins + { + + void FrameTrackingComponentPlugin::preOnInitComponent() + { + parent<Component>().usingProxyFromProperty(PROPERTY_NAME); + } + + void FrameTrackingComponentPlugin::preOnConnectComponent() + { + parent<Component>().getProxyFromProperty(_frameTracking, PROPERTY_NAME); + } + + void FrameTrackingComponentPlugin::postCreatePropertyDefinitions(armarx::PropertyDefinitionsPtr& properties) + { + if (!properties->hasDefinition(PROPERTY_NAME)) + { + properties->defineOptionalProperty<std::string>( + PROPERTY_NAME, + "FrameTracking", + "Name of the FrameTracking"); + } + } + + FrameTrackingInterfacePrx FrameTrackingComponentPlugin::getFrameTracking() + { + return _frameTracking; + } + + + } +} + +namespace armarx +{ + + FrameTrackingComponentPluginUser::FrameTrackingComponentPluginUser() + { + addPlugin(plugin); + } + + FrameTrackingInterfacePrx FrameTrackingComponentPluginUser::getFrameTracking() + { + return plugin->getFrameTracking(); + } + + +} + + diff --git a/source/RobotAPI/libraries/RobotAPIComponentPlugins/FrameTrackingComponentPlugin.h b/source/RobotAPI/libraries/RobotAPIComponentPlugins/FrameTrackingComponentPlugin.h new file mode 100644 index 0000000000000000000000000000000000000000..82b1b593d1c457b1b2c636a292ee0ce8aebce477 --- /dev/null +++ b/source/RobotAPI/libraries/RobotAPIComponentPlugins/FrameTrackingComponentPlugin.h @@ -0,0 +1,58 @@ +#pragma once + +#include <ArmarXCore/core/Component.h> +#include <RobotAPI/interface/components/FrameTrackingInterface.h> + + +namespace armarx +{ + namespace plugins + { + + class FrameTrackingComponentPlugin : public ComponentPlugin + { + public: + using ComponentPlugin::ComponentPlugin; + + void preOnInitComponent() override; + + void preOnConnectComponent() override; + + void postCreatePropertyDefinitions(PropertyDefinitionsPtr& properties) override; + + FrameTrackingInterfacePrx getFrameTracking(); + + private: + static constexpr const char* PROPERTY_NAME = "FrameTrackingName"; + FrameTrackingInterfacePrx _frameTracking; + }; + + } +} + +namespace armarx +{ + /** + * @brief Provides a ready-to-use FrameTracking. + */ + class FrameTrackingComponentPluginUser : virtual public ManagedIceObject + { + public: + FrameTrackingComponentPluginUser(); + FrameTrackingInterfacePrx getFrameTracking(); + + private: + armarx::plugins::FrameTrackingComponentPlugin* plugin = nullptr; + }; + +} + + +namespace armarx +{ + namespace plugins + { + // Legacy typedef. + using FrameTrackingComponentPluginUser = armarx::FrameTrackingComponentPluginUser; + } +}