Skip to content
Snippets Groups Projects
Commit 355b5141 authored by Rainer Kartmann's avatar Rainer Kartmann
Browse files

Add plugin

parent cb948d49
No related branches found
No related tags found
1 merge request!70Add ObjectPoseObserver (WIP)
......@@ -10,11 +10,13 @@ set(COMPONENT_LIBS
set(SOURCES
ObjectPoseObserver.cpp
ObjectPoseProviderPlugin.cpp
ObjectFinder.cpp
)
set(HEADERS
ObjectPoseObserver.h
ObjectPoseProviderPlugin.h
ObjectFinder.h
)
......
#include "ObjectPoseProviderPlugin.h"
namespace armarx::plugins
{
void ObjectPoseProviderPlugin::postCreatePropertyDefinitions(PropertyDefinitionsPtr& properties)
{
if (!properties->hasDefinition(makePropertyName(PROPERTY_NAME)))
{
properties->defineOptionalProperty<std::string>(
makePropertyName(PROPERTY_NAME),
"ObjectPoseTopic",
"Name of the object pose topic.");
}
}
void ObjectPoseProviderPlugin::preOnInitComponent()
{
parent<Component>().offeringTopicFromProperty(makePropertyName(PROPERTY_NAME));
}
void ObjectPoseProviderPlugin::preOnConnectComponent()
{
parent<ObjectPoseProviderPluginUser>().objectPoseTopic = createObjectPoseTopic();
}
void ObjectPoseProviderPlugin::postOnConnectComponent()
{
objpose::ObjectPoseTopicPrx& topic = parent<ObjectPoseProviderPluginUser>().objectPoseTopic;
if (topic)
{
topic->reportProviderAvailable(parent<Component>().getName());
}
else
{
ARMARX_WARNING << "Object pose topic not ready.";
}
}
objpose::ObjectPoseTopicPrx ObjectPoseProviderPlugin::createObjectPoseTopic()
{
return parent<Component>().getTopicFromProperty<objpose::ObjectPoseTopicPrx>(makePropertyName(PROPERTY_NAME));
}
}
namespace armarx
{
ObjectPoseProviderPluginUser::ObjectPoseProviderPluginUser()
{
addPlugin(plugin);
}
objpose::ObjectPoseTopicPrx ObjectPoseProviderPluginUser::createObjectPoseTopic()
{
return plugin->createObjectPoseTopic();
}
}
#pragma once
#include <ArmarXCore/core/Component.h>
#include <RobotAPI/interface/objectpose/ObjectPoseProvider.h>
namespace armarx::plugins
{
class ObjectPoseProviderPlugin : public ComponentPlugin
{
public:
using ComponentPlugin::ComponentPlugin;
void postCreatePropertyDefinitions(PropertyDefinitionsPtr& properties) override;
void preOnInitComponent() override;
void preOnConnectComponent() override;
void postOnConnectComponent() override;
objpose::ObjectPoseTopicPrx createObjectPoseTopic();
private:
static constexpr const char* PROPERTY_NAME = "ObjectPoseTopicName";
};
}
namespace armarx
{
/**
* @brief Provides an `objpose::ObjectPoseTopicPrx objectPoseTopic` as member variable.
*/
class ObjectPoseProviderPluginUser :
virtual public ManagedIceObject
, virtual objpose::ObjectPoseProvider
{
public:
ObjectPoseProviderPluginUser();
objpose::ObjectPoseTopicPrx createObjectPoseTopic();
objpose::ObjectPoseTopicPrx objectPoseTopic;
private:
armarx::plugins::ObjectPoseProviderPlugin* plugin = nullptr;
};
}
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