29#include <RobotAPI/interface/units/ForceTorqueUnit.h>
30#include <RobotAPI/interface/visualization/DebugDrawerInterface.h>
46 "Name of the ForceTorqueUnit Topic");
48 "VisualizeForce",
true,
"Visualize the force with an arrow in the debug drawer");
50 "RobotUpdateFrequency", 50,
"Update frequency of the local robot");
53 "Frequency with which the force is visualized");
55 "ForceVisualizerFactor",
57 "Factor by which the forces are scaled to fit into 0..1 (only for visulization) ");
59 "MaxExpectedTorqueValue",
61 "The torque visualization circle reaches the full circle at this value");
63 "TorqueVisuDeadZone", 1,
"Torques below this threshold are not visualized.");
65 "MaxForceArrowLength", 150,
"Length of the force visu arrow in mm");
67 "RobotStateComponentName",
68 "RobotStateComponent",
69 "Name of the RobotStateComponent that should be used");
71 "SensorRobotNodeMapping",
73 "Triplets of sensor node name, target frame robot node name and optional channel "
74 "name: Sensor values are also reported in the frame of the robot node: e. g. "
75 "SensorName:RobotNodeName[:ChannelName],SensorName2:RobotNodeName2[:ChannelName2]");
89 virtual public ForceTorqueUnitObserverInterface
100 return "ForceTorqueUnitObserver";
110 const FramedDirectionBasePtr& forces,
111 const FramedDirectionBasePtr& torques,
112 const Ice::Current&)
override;
122 std::mutex dataMutex;
123 std::string topicName;
130 std::multimap<std::string, std::pair<std::string, std::string>> sensorRobotNodeMapping;
132 void offerValue(
const std::string& nodeName,
133 const std::string& type,
134 const FramedDirectionBasePtr& value,
141 const Ice::Current&)
override;
144 const Ice::Current&)
override;
146 const Ice::Current&)
override;
149 const std::string& frame);
151 const std::string& frame);
ForceTorqueObserverPropertyDefinitions(std::string prefix)
void reportSensorValues(const std::string &sensorNodeName, const FramedDirectionBasePtr &forces, const FramedDirectionBasePtr &torques, const Ice::Current &) override
void onConnectObserver() override
Framework hook.
void setTopicName(std::string topicName)
void onExitObserver() override
Framework hook.
void onDisconnectComponent() override
Hook for subclass.
DatafieldRefBasePtr getForceDatafield(const std::string &nodeName, const Ice::Current &) override
DatafieldRefBasePtr getTorqueDatafield(const std::string &nodeName, const Ice::Current &) override
DataFieldIdentifierPtr getTorqueDatafieldId(const std::string &nodeName, const std::string &frame)
PropertyDefinitionsPtr createPropertyDefinitions() override
void visualizerFunction()
void onInitObserver() override
Framework hook.
DatafieldRefBasePtr createNulledDatafield(const DatafieldRefBasePtr &forceTorqueDatafieldRef, const Ice::Current &) override
DataFieldIdentifierPtr getForceDatafieldId(const std::string &nodeName, const std::string &frame)
std::string getDefaultName() const override
Retrieve default name of component.
ObserverPropertyDefinitions(std::string prefix)
IceUtil::Handle< PeriodicTask< T > > pointer_type
Shared pointer type for convenience.
std::string prefix
Prefix of the properties such as namespace, domain, component name, etc.
PropertyDefinition< PropertyType > & defineOptionalProperty(const std::string &name, PropertyType defaultValue, const std::string &description="", PropertyDefinitionBase::PropertyConstness constness=PropertyDefinitionBase::eConstant)
PropertyDefinition< PropertyType > & defineRequiredProperty(const std::string &name, const std::string &description="", PropertyDefinitionBase::PropertyConstness constness=PropertyDefinitionBase::eConstant)
std::shared_ptr< class Robot > RobotPtr
This file offers overloads of toIce() and fromIce() functions for STL container types.
IceUtil::Handle< class PropertyDefinitionContainer > PropertyDefinitionsPtr
PropertyDefinitions smart pointer type.
::IceInternal::ProxyHandle<::IceProxy::armarx::RobotStateComponentInterface > RobotStateComponentInterfacePrx
IceInternal::Handle< DataFieldIdentifier > DataFieldIdentifierPtr
Typedef of DataFieldIdentifierPtr as IceInternal::Handle<DataFieldIdentifier> for convenience.
::IceInternal::ProxyHandle<::IceProxy::armarx::DebugDrawerInterface > DebugDrawerInterfacePrx