|
The RobotUnit class manages a robot and its controllers. More...
#include <RobotAPI/components/units/RobotUnit/RobotUnit.h>
Public Member Functions | |
armarx::PropertyDefinitionsPtr | createPropertyDefinitions () override |
~RobotUnit () | |
Public Member Functions inherited from Units | |
const EmergencyStopMasterInterfacePtr & | getEmergencyStopMaster () const |
Returns a pointer to the EmergencyStopMaster. More... | |
ForceTorqueUnitInterfacePtr | getForceTorqueUnit () const |
Returns a pointer to the ForceTorqueUnit. More... | |
ForceTorqueUnitInterfacePrx | getForceTorqueUnit (const Ice::Current &) const override |
Returns a proxy to the ForceTorqueUnit. More... | |
InertialMeasurementUnitInterfacePtr | getInertialMeasurementUnit () const |
Returns a pointer to the InertialMeasurementUnit. More... | |
InertialMeasurementUnitInterfacePrx | getInertialMeasurementUnit (const Ice::Current &) const override |
Returns a proxy to the InertialMeasurementUnit. More... | |
KinematicUnitInterfacePtr | getKinematicUnit () const |
Returns a pointer to the KinematicUnit. More... | |
KinematicUnitInterfacePrx | getKinematicUnit (const Ice::Current &) const override |
Returns a proxy to the KinematicUnit. More... | |
PlatformUnitInterfacePtr | getPlatformUnit () const |
Returns a pointer to the PlatformUnit. More... | |
PlatformUnitInterfacePrx | getPlatformUnit (const Ice::Current &) const override |
Returns a proxy to the PlatformUnit. More... | |
TCPControlUnitInterfacePtr | getTCPControlUnit () const |
Returns a pointer to the TCPControlUnit. More... | |
TCPControlUnitInterfacePrx | getTCPControlUnit (const Ice::Current &) const override |
Returns a proxy to the TCPControlUnit. More... | |
TrajectoryPlayerInterfacePtr | getTrajectoryPlayer () const |
Returns a pointer to the TrajectoryPlayer. More... | |
TrajectoryPlayerInterfacePrx | getTrajectoryPlayer (const Ice::Current &) const override |
Returns a proxy to the TrajectoryPlayer. More... | |
template<class T > | |
T::PointerType | getUnit () const |
Returns a pointer to the Unit for the given type (or null if there is none) More... | |
const ManagedIceObjectPtr & | getUnit (const std::string &staticIceId) const |
Returns a pointer to the Unit with the given ice id (or null if there is none) More... | |
Ice::ObjectPrx | getUnit (const std::string &staticIceId, const Ice::Current &) const override |
Returns a proxy to the Unit with the given ice id (or null if there is none) More... | |
template<class T > | |
T::ProxyType | getUnitPrx () const |
Returns a proxy to the Unit for the given type (or null if there is none) More... | |
Ice::ObjectProxySeq | getUnits (const Ice::Current &) const override |
Returns proxies to all units. More... | |
Public Member Functions inherited from ModuleBase | |
template<class T > | |
T & | _module () |
Returns this as ref to the given type. More... | |
template<class T > | |
const T & | _module () const |
Returns this as ref to the given type. More... | |
template<class T > | |
T * | _modulePtr () |
Returns this as ptr to the given type. More... | |
template<class T > | |
const T * | _modulePtr () const |
Returns this as ptr to the given type. More... | |
bool | areDevicesReady () const |
Returns whether Devices are ready. More... | |
virtual IceUtil::Time | getControlThreadTargetPeriod () const =0 |
The ControlThread's period. More... | |
RobotUnitState | getRobotUnitState () const |
Returns the RobotUnit's State. More... | |
bool | inControlThread () const |
Returns whether the current thread is the ControlThread. More... | |
bool | isShuttingDown () const |
Returns whether the RobotUnit is shutting down. More... | |
virtual void | joinControlThread ()=0 |
Implementations have to join their ControlThread in this hook. (used by RobotUnit::finishRunning()) More... | |
virtual void | onConnectRobotUnit () |
called in onConnectComponent More... | |
virtual void | onDisconnectRobotUnit () |
called in onDisconnecComponent More... | |
virtual void | onExitRobotUnit () |
called in onExitComponent before calling finishRunning More... | |
virtual void | onInitRobotUnit () |
called in onInitComponent More... | |
void | shutDown () |
Requests the RobotUnit to shut down. More... | |
void | throwIfDevicesNotReady (const std::string &fnc) const |
Throws if the Devices are not ready. More... | |
void | throwIfInControlThread (const std::string &fnc) const |
Throws if the current thread is the ControlThread. More... | |
void | throwIfStateIs (const std::set< RobotUnitState > &stateSet, const std::string &fnc, bool onlyWarn=false) const |
Throws an exception if the current state is in. More... | |
void | throwIfStateIs (RobotUnitState s, const std::string &fnc, bool onlyWarn=false) const |
Throws an exception if the current state is. More... | |
void | throwIfStateIsNot (const std::set< RobotUnitState > &stateSet, const std::string &fnc, bool onlyWarn=false) const |
Throws an exception if the current state is not in. More... | |
void | throwIfStateIsNot (RobotUnitState s, const std::string &fnc, bool onlyWarn=false) const |
Throws an exception if the current state is not. More... | |
Public Member Functions inherited from Component | |
void | forceComponentCreatedByComponentCreateFunc () |
forces the flag to be set to true that the object instance was created by the Component::create function More... | |
std::vector< PropertyUserPtr > | getAdditionalPropertyUsers () const |
template<typename PropertyType > | |
Property< PropertyType > | getProperty (const std::string &name) |
template<typename PropertyType > | |
Property< PropertyType > | getProperty (const std::string &name) const |
template<class T > | |
void | getProperty (std::atomic< T > &val, const std::string &name) const |
template<class T > | |
void | getProperty (T &val, const std::string &name) const |
template<class ProxyType > | |
ProxyType | getProxyFromProperty (const std::string &propertyName, bool addToDependencies=false, const std::string &endpoints="", bool throwOnProxyError=true) |
Get a proxy whose name is specified by the given property. More... | |
template<class ProxyType > | |
void | getProxyFromProperty (ProxyType &proxy, const std::string &propertyName, bool addToDependencies=false, const std::string &endpoints="", bool throwOnProxyError=true) |
template<class TopicProxyType > | |
TopicProxyType | getTopicFromProperty (const std::string &propertyName) |
Get a topic proxy whose name is specified by the given property. More... | |
template<class TopicProxyType > | |
void | getTopicFromProperty (TopicProxyType &top, const std::string &propertyName) |
void | initializeProperties (const std::string &configName, Ice::PropertiesPtr const &properties, const std::string &configDomain) |
initializes the properties of this component. More... | |
void | injectPropertyDefinitions (PropertyDefinitionsPtr &props) override |
void | offeringTopicFromProperty (const std::string &propertyName) |
Offer a topic whose name is specified by the given property. More... | |
virtual void | preOnConnectComponent () override |
virtual void | preOnInitComponent () override |
bool | usingProxyFromProperty (const std::string &propertyName, const std::string &endpoints="") |
Use a proxy whose name is specified by the given property. More... | |
void | usingTopicFromProperty (const std::string &propertyName, bool orderedPublishing=false) |
Use a topic whose name is specified by the given property. More... | |
Public Member Functions inherited from ManagedIceObject | |
void | enableProfiler (bool enable) |
setProfiler allows setting ManagedIceObject::profiler to a new instance (if the new instance is actually not a null pointer) More... | |
std::string | generateSubObjectName (const std::string &subObjectName) |
Generates a unique name for a sub object from a general name. More... | |
ArmarXManagerPtr | getArmarXManager () const |
Returns the ArmarX manager used to add and remove components. More... | |
ManagedIceObjectConnectivity | getConnectivity () const |
Retrieve connectivity of the object (topcis as well as proxies) More... | |
IceManagerPtr | getIceManager () const |
Returns the IceManager. More... | |
VariantBasePtr | getMetaInfo (const std::string &id) |
StringVariantBaseMap | getMetaInfoMap () const |
std::string | getName () const |
Retrieve name of object. More... | |
Ice::ObjectAdapterPtr | getObjectAdapter () const |
Returns object's Ice adapter. More... | |
ArmarXObjectSchedulerPtr | getObjectScheduler () const |
PeriodicTaskPtr | getPeriodicTask (const std::string &name) |
Profiler::ProfilerPtr | getProfiler () const |
getProfiler returns an instance of armarx::Profiler More... | |
template<class ProxyTarg , class... Args> | |
void | getProxy (const char *name, IceInternal::ProxyHandle< ProxyTarg > &proxy, Args &&...args) |
template<class ProxyType > | |
ProxyType | getProxy (const std::string &name, bool addToDependencies=false, const std::string &endpoints="", bool throwOnProxyError=true) |
Retrieves a proxy object. More... | |
template<class ProxyTarg , class... Args> | |
void | getProxy (const std::string &name, IceInternal::ProxyHandle< ProxyTarg > &proxy, Args &&...args) |
template<class ProxyTarg , class... Args> | |
void | getProxy (IceInternal::ProxyHandle< ProxyTarg > &proxy, const char *name, Args &&...args) |
template<class ProxyTarg , class... Args> | |
void | getProxy (IceInternal::ProxyHandle< ProxyTarg > &proxy, const std::string &name, Args &&...args) |
Assigns a proxy to proxy . More... | |
Ice::ObjectPrx | getProxy (long timeoutMs=0, bool waitForScheduler=true) const |
Returns the proxy of this object (optionally it waits for the proxy) More... | |
template<class Prx > | |
Prx | getProxy (long timeoutMs=0, bool waitForScheduler=true) const |
template<class ProxyType > | |
void | getProxy (ProxyType &proxy, const char *name, bool addToDependencies=false, const std::string &endpoints="", bool throwOnProxyError=true) |
Overload to allow using string literals as name (solve ambiguous overload). More... | |
template<class Prx > | |
void | getProxy (Prx &prx, long timeoutMs=0, bool waitForScheduler=true) const |
int | getState () const |
Retrieve current state of the ManagedIceObject. More... | |
template<class TopicProxyType > | |
TopicProxyType | getTopic (const std::string &name) |
Returns a proxy of the specified topic. More... | |
template<class TopicProxyType > | |
void | getTopic (TopicProxyType &topicProxy, const std::string &name) |
Assigns a proxy of the specified topic to topicProxy . More... | |
std::vector< std::string > | getUnresolvedDependencies () const |
returns the names of all unresolved dependencies More... | |
ManagedIceObject (ManagedIceObject const &other) | |
void | offeringTopic (const std::string &name) |
Registers a topic for retrival after initialization. More... | |
void | preambleGetTopic (std::string const &name) |
void | setMetaInfo (const std::string &id, const VariantBasePtr &value) |
Allows to set meta information that can be queried live via Ice interface on the ArmarXManager. More... | |
void | startPeriodicTask (const std::string &uniqueName, std::function< void(void)> f, int periodMs, bool assureMeanInterval=false, bool forceSystemTime=true) |
bool | stopPeriodicTask (const std::string &name) |
bool | unsubscribeFromTopic (const std::string &name) |
Unsubscribe from a topic. More... | |
bool | usingProxy (const std::string &name, const std::string &endpoints="") |
Registers a proxy for retrieval after initialization and adds it to the dependency list. More... | |
void | usingTopic (const std::string &name, bool orderedPublishing=false) |
Registers a proxy for subscription after initialization. More... | |
void | waitForObjectScheduler () |
Waits until the ObjectScheduler could resolve all dependencies. More... | |
void | waitForProxy (std::string const &name, bool addToDependencies) |
Public Member Functions inherited from Logging | |
SpamFilterDataPtr | deactivateSpam (float deactivationDurationSec=10.0f, const std::string &identifier="", bool deactivate=true) const |
disables the logging for the current line for the given amount of seconds. More... | |
MessageTypeT | getEffectiveLoggingLevel () const |
Logging () | |
void | setLocalMinimumLoggingLevel (MessageTypeT level) |
With setLocalMinimumLoggingLevel the minimum verbosity-level of log-messages can be set. More... | |
void | setTag (const LogTag &tag) |
void | setTag (const std::string &tagName) |
virtual | ~Logging () |
Public Member Functions inherited from PropertyUser | |
std::vector< std::string > | getComponentProxyNames () |
Ice::PropertiesPtr | getIceProperties () const |
Returns the set of Ice properties. More... | |
template<typename PropertyType > | |
Property< PropertyType > | getProperty (const std::string &name) |
Property creation and retrieval. More... | |
template<typename PropertyType > | |
Property< PropertyType > | getProperty (const std::string &name) const |
Hack to allow using getProperty in const -modified methods. More... | |
template<class T > | |
void | getProperty (std::atomic< T > &val, const std::string &name) const |
template<class T > | |
void | getProperty (T &val, const std::string &name) const |
template<class T > | |
std::vector< T > | getPropertyAsCSV (const std::string &name, const std::string &splitBy=",;", bool trimElements=true, bool removeEmptyElements=true) |
template<class ContainerT > | |
void | getPropertyAsCSV (ContainerT &val, const std::string &name, const std::string &splitBy=",;", bool trimElements=true, bool removeEmptyElements=true) |
PropertyDefinitionsPtr | getPropertyDefinitions () |
Returns the component's property definition container. More... | |
std::vector< std::string > | getSubscribedTopicNames () |
std::vector< std::string > | getTopicProxyNames () |
bool | hasProperty (const std::string &name) |
PropertyUser () | |
virtual void | setIceProperties (Ice::PropertiesPtr properties) |
Sets the Ice properties. More... | |
bool | tryAddProperty (const std::string &propertyName, const std::string &value) |
virtual void | updateIceProperties (const std::map< std::string, std::string > &changes) |
void | updateProperties () |
void | updateProxies (IceManagerPtr) |
~PropertyUser () override | |
Public Member Functions inherited from Logging | |
void | addMarkerToRtLog (const SimpleRemoteReferenceCounterBasePtr &token, const std::string &marker, const Ice::Current &=Ice::emptyCurrent) override |
Adds a string to the log (it is added in a special column). More... | |
Ice::StringSeq | getLoggingNames (const Ice::Current &=Ice::emptyCurrent) const override |
Returns the names of all loggable data fields. More... | |
RobotUnitDataStreaming::DataStreamingDescription | startDataStreaming (const RobotUnitDataStreaming::ReceiverPrx &receiver, const RobotUnitDataStreaming::Config &config, const Ice::Current &=Ice::emptyCurrent) override |
SimpleRemoteReferenceCounterBasePtr | startRtLogging (const std::string &formatString, const Ice::StringSeq &loggingNames, const Ice::Current &=Ice::emptyCurrent) override |
Starts logging to a CSV file. More... | |
SimpleRemoteReferenceCounterBasePtr | startRtLoggingWithAliasNames (const std::string &formatString, const StringStringDictionary &aliasNames, const Ice::Current &=Ice::emptyCurrent) override |
Starts logging to a CSV file. More... | |
void | stopDataStreaming (const RobotUnitDataStreaming::ReceiverPrx &receiver, const Ice::Current &=Ice::emptyCurrent) override |
void | stopRtLogging (const armarx::SimpleRemoteReferenceCounterBasePtr &token, const Ice::Current &=Ice::emptyCurrent) override |
Stops logging to the given log. More... | |
void | writeRecentIterationsToFile (const std::string &formatString, const Ice::Current &=Ice::emptyCurrent) const override |
Dumps the backlog of all recent iterations to the given file. More... | |
Public Member Functions inherited from Devices | |
ConstControlDevicePtr | getControlDevice (const std::string &deviceName) const |
Returns the ControlDevice. More... | |
ControlDeviceDescription | getControlDeviceDescription (const std::string &name, const Ice::Current &=Ice::emptyCurrent) const override |
Return the ControlDeviceDescription for the given ControlDevice. More... | |
ControlDeviceDescription | getControlDeviceDescription (std::size_t idx) const |
Return the ControlDeviceDescription for the given ControlDevice. More... | |
ControlDeviceDescriptionSeq | getControlDeviceDescriptions (const Ice::Current &=Ice::emptyCurrent) const override |
Return the ControlDeviceDescriptions for all ControlDevices. More... | |
std::size_t | getControlDeviceIndex (const std::string &deviceName) const |
Returns the ControlDevice's index. More... | |
Ice::StringSeq | getControlDeviceNames (const Ice::Current &=Ice::emptyCurrent) const override |
Returns the names of all ControlDevices for the robot. More... | |
const KeyValueVector< std::string, ControlDevicePtr > & | getControlDevices () const |
Returns all ControlDevices. More... | |
const std::map< std::string, ConstControlDevicePtr > & | getControlDevicesConstPtr () const |
Returns const pointers to all ControlDevices. More... | |
ControlDeviceStatus | getControlDeviceStatus (const std::string &name, const Ice::Current &=Ice::emptyCurrent) const override |
Return the ControlDeviceStatus for the given ControlDevice. More... | |
ControlDeviceStatus | getControlDeviceStatus (std::size_t idx) const |
Return the ControlDeviceStatus for the given ControlDevice. More... | |
ControlDeviceStatusSeq | getControlDeviceStatuses (const Ice::Current &=Ice::emptyCurrent) const override |
Return the ControlDeviceStatuses for all ControlDevices. More... | |
const ControlDeviceHardwareControlModeGroups & | getControlModeGroups () const |
Returns the groups of ControlDevices required to be in the same hardware control mode. More... | |
std::size_t | getNumberOfControlDevices () const |
Returns the number of ControlDevices. More... | |
std::size_t | getNumberOfSensorDevices () const |
Returns the number of SensorDevices. More... | |
ConstSensorDevicePtr | getSensorDevice (const std::string &deviceName) const |
TODO move to attorney for NJointControllerBase. More... | |
SensorDeviceDescription | getSensorDeviceDescription (const std::string &name, const Ice::Current &=Ice::emptyCurrent) const override |
Return the SensorDeviceDescription for the given SensorDevice. More... | |
SensorDeviceDescription | getSensorDeviceDescription (std::size_t idx) const |
Return the SensorDeviceDescription for the given SensorDevice. More... | |
SensorDeviceDescriptionSeq | getSensorDeviceDescriptions (const Ice::Current &=Ice::emptyCurrent) const override |
Return the SensorDeviceDescriptions for all SensorDevices. More... | |
std::size_t | getSensorDeviceIndex (const std::string &deviceName) const |
Returns the SensorDevice's index. More... | |
Ice::StringSeq | getSensorDeviceNames (const Ice::Current &=Ice::emptyCurrent) const override |
Returns the names of all SensorDevices for the robot. More... | |
const KeyValueVector< std::string, SensorDevicePtr > & | getSensorDevices () const |
TODO move to attorney for NJointControllerBase. More... | |
const std::map< std::string, ConstSensorDevicePtr > & | getSensorDevicesConstPtr () const |
Returns const pointers to all SensorDevices. More... | |
SensorDeviceStatus | getSensorDeviceStatus (const std::string &name, const Ice::Current &=Ice::emptyCurrent) const override |
Return the SensorDeviceStatus for the given SensorDevice. More... | |
SensorDeviceStatus | getSensorDeviceStatus (std::size_t idx) const |
Return the SensorDeviceStatus for the given SensorDevice. More... | |
SensorDeviceStatusSeq | getSensorDeviceStatuses (const Ice::Current &=Ice::emptyCurrent) const override |
Return the SensorDeviceStatuses for all SensorDevices. More... | |
template<class PtrT > | |
void | updateVirtualRobotFromSensorValues (const VirtualRobot::RobotPtr &robot, const std::vector< PtrT > &sensors) const |
Updates the given VirtualRobot with the given SensorValues. More... | |
template<class PtrT > | |
void | updateVirtualRobotFromSensorValues (const VirtualRobot::RobotPtr &robot, const std::vector< VirtualRobot::RobotNodePtr > &nodes, const std::vector< PtrT > &sensors) const |
Updates the given VirtualRobot with the given SensorValues. More... | |
Public Member Functions inherited from Publisher | |
DebugDrawerInterfacePrx | getDebugDrawerProxy (const Ice::Current &=Ice::emptyCurrent) const override |
Returns the used DebugDrawerProxy. More... | |
std::string | getDebugDrawerTopicName (const Ice::Current &=Ice::emptyCurrent) const override |
Returns the name of the used DebugDrawerTopic. More... | |
DebugObserverInterfacePrx | getDebugObserverProxy (const Ice::Current &=Ice::emptyCurrent) const override |
Returns the used DebugObserverProxy. More... | |
std::string | getDebugObserverTopicName (const Ice::Current &=Ice::emptyCurrent) const override |
Returns the name of the used DebugObserverTopic. More... | |
RobotUnitListenerPrx | getRobotUnitListenerProxy (const Ice::Current &=Ice::emptyCurrent) const override |
Returns the used RobotUnitListenerProxy. More... | |
std::string | getRobotUnitListenerTopicName (const Ice::Current &=Ice::emptyCurrent) const override |
Returns the name of the used RobotUnitListenerTopic. More... | |
Public Member Functions inherited from RobotData | |
bool | arePlatformAndLocalizationUnitsEnabled () const |
VirtualRobot::RobotPtr | cloneRobot (bool updateCollisionModel=false) const |
Returns a clone of the robot's model. More... | |
const std::string & | getRobotFileName () const |
Returns the file name of the robot's model. More... | |
std::string | getRobotName () const |
Returns the robot's name. More... | |
const std::string & | getRobotNodetSeName () const |
Returns the name of the robot's RobotNodeSet. More... | |
std::string | getRobotPlatformInstanceName () const |
Returns the name of the robot platform instance. More... | |
const std::string & | getRobotPlatformName () const |
Returns the name of the robot's platform. More... | |
const std::string & | getRobotProjectName () const |
Returns the name of the project containing the robot's model. More... | |
Public Member Functions inherited from Management | |
void | aggregatedHeartbeat (RobotHealthState overallHealthState, const Ice::Current &) override |
bool | isRunning (const Ice::Current &=Ice::emptyCurrent) const override |
Returns whether the RobotUnit is running. More... | |
bool | isSimulation (const Ice::Current &=Ice::emptyCurrent) const override |
Public Member Functions inherited from ControlThread | |
std::thread::id | getControlThreadId () const |
Teturns he ControlThread's thread id. More... | |
EmergencyStopState | getEmergencyStopState () const |
Returns the ControlThread's target EmergencyStopState. More... | |
EmergencyStopState | getRtEmergencyStopState () const |
Returns the ControlThread's EmergencyStopState. More... | |
void | setEmergencyStopState (EmergencyStopState state) |
Sets the EmergencyStopState. More... | |
Public Member Functions inherited from SelfCollisionChecker | |
float | getSelfCollisionAvoidanceDistance (const Ice::Current &=Ice::emptyCurrent) const override |
Returns the minimal distance (mm) between a pair of bodies. More... | |
float | getSelfCollisionAvoidanceFrequency (const Ice::Current &=Ice::emptyCurrent) const override |
Returns the frequency of self collision checks. More... | |
bool | isSelfCollisionCheckEnabled (const Ice::Current &=Ice::emptyCurrent) const override |
Returns whether the frequency of self collision checks is above 0. More... | |
void | setSelfCollisionAvoidanceDistance (Ice::Float distance, const Ice::Current &=Ice::emptyCurrent) override |
Sets the minimal distance (mm) between a configured pair of bodies to 'distance'. More... | |
void | setSelfCollisionAvoidanceFrequency (Ice::Float freq, const Ice::Current &=Ice::emptyCurrent) override |
Sets the frequency of self collision checks. More... | |
Public Member Functions inherited from ControllerManagement | |
void | activateNJointController (const NJointControllerBasePtr &ctrl) |
Requests activation for the given NJointControllerBase. More... | |
void | activateNJointController (const std::string &name, const Ice::Current &=Ice::emptyCurrent) override |
Requests activation for the given NJointControllerBase. More... | |
void | activateNJointControllers (const Ice::StringSeq &names, const Ice::Current &=Ice::emptyCurrent) override |
Requests activation for the given NJointControllers. More... | |
void | activateNJointControllers (const std::vector< NJointControllerBasePtr > &ctrls) |
Requests activation for the given NJointControllers. More... | |
const NJointControllerBasePtr & | createNJointController (const std::string &className, const std::string &instanceName, const NJointControllerConfigPtr &config, bool deletable, bool internal) |
Cretes a NJointControllerBase. More... | |
NJointControllerInterfacePrx | createNJointController (const std::string &className, const std::string &instanceName, const NJointControllerConfigPtr &config, const Ice::Current &=Ice::emptyCurrent) override |
Cretes a NJointControllerBase. More... | |
NJointControllerInterfacePrx | createNJointControllerFromVariantConfig (const std::string &className, const std::string &instanceName, const StringVariantBaseMap &variants, const Ice::Current &=Ice::emptyCurrent) override |
Cretes a NJointControllerBase. More... | |
NJointControllerInterfacePrx | createOrReplaceNJointController (const std::string &className, const std::string &instanceName, const NJointControllerConfigPtr &config, const Ice::Current &=Ice::emptyCurrent) override |
Deletes any NJointControllerBase with the given name and creates a new one. More... | |
void | deactivateAndDeleteNJointController (const NJointControllerBasePtr &ctrl) |
Queues the given NJointControllerBase for deletion and deactivates it if necessary. More... | |
void | deactivateAndDeleteNJointController (const std::string &name, const Ice::Current &=Ice::emptyCurrent) override |
Queues the given NJointControllerBase for deletion and deactivates it if necessary. More... | |
void | deactivateAndDeleteNJointControllers (const Ice::StringSeq &names, const Ice::Current &) override |
Queues the given NJointControllers for deletion and deactivates them if necessary. More... | |
void | deactivateAndDeleteNJointControllers (const std::vector< NJointControllerBasePtr > &ctrls) |
Queues the given NJointControllers for deletion and deactivates them if necessary. More... | |
void | deactivateNJointController (const NJointControllerBasePtr &ctrl) |
Requests deactivation for the given NJointControllerBase. More... | |
void | deactivateNJointController (const std::string &name, const Ice::Current &=Ice::emptyCurrent) override |
Requests deactivation for the given NJointControllerBase. More... | |
void | deactivateNJointControllers (const Ice::StringSeq &names, const Ice::Current &=Ice::emptyCurrent) override |
Requests deactivation for the given NJointControllers. More... | |
void | deactivateNJointControllers (const std::vector< NJointControllerBasePtr > &ctrls) |
Requests deactivation for the given NJointControllers. More... | |
void | deleteNJointController (const NJointControllerBasePtr &ctrl) |
Queues the given NJointControllerBase for deletion. More... | |
void | deleteNJointController (const std::string &name, const Ice::Current &=Ice::emptyCurrent) override |
Queues the given NJointControllerBase for deletion. More... | |
void | deleteNJointControllers (const Ice::StringSeq &names, const Ice::Current &=Ice::emptyCurrent) override |
Queues the given NJointControllers for deletion. More... | |
void | deleteNJointControllers (const std::vector< NJointControllerBasePtr > &ctrls) |
Queues the given NJointControllers for deletion. More... | |
Ice::StringSeq | getActivatedNJointControllerNames (const Ice::Current &=Ice::emptyCurrent) const override |
Returns the names of all activated NJointControllers. More... | |
StringNJointControllerPrxDictionary | getAllNJointControllers (const Ice::Current &=Ice::emptyCurrent) const override |
Returns proxies to all NJointControllers. More... | |
NJointControllerInterfacePrx | getNJointController (const std::string &name, const Ice::Current &=Ice::emptyCurrent) const override |
Returns a proxy to the NJointControllerBase. More... | |
NJointControllerClassDescription | getNJointControllerClassDescription (const std::string &className, const Ice::Current &=Ice::emptyCurrent) const override |
getNJointControllerClassDescription More... | |
NJointControllerClassDescriptionSeq | getNJointControllerClassDescriptions (const Ice::Current &=Ice::emptyCurrent) const override |
getNJointControllerClassDescriptions More... | |
Ice::StringSeq | getNJointControllerClassNames (const Ice::Current &=Ice::emptyCurrent) const override |
Returns the names of all available classes of NJointControllerBase. More... | |
NJointControllerDescription | getNJointControllerDescription (const std::string &name, const Ice::Current &=Ice::emptyCurrent) const override |
Returns the description of the NJointControllerBase. More... | |
NJointControllerDescriptionSeq | getNJointControllerDescriptions (const Ice::Current &=Ice::emptyCurrent) const override |
Returns the description of all NJointControllers. More... | |
NJointControllerDescriptionWithStatusSeq | getNJointControllerDescriptionsWithStatuses (const Ice::Current &=Ice::emptyCurrent) const override |
Returns the status and description of all NJointControllers. More... | |
NJointControllerDescriptionWithStatus | getNJointControllerDescriptionWithStatus (const std::string &name, const Ice::Current &=Ice::emptyCurrent) const override |
Returns the status and description of the NJointControllerBase. More... | |
Ice::StringSeq | getNJointControllerNames (const Ice::Current &=Ice::emptyCurrent) const override |
Returns the names of all NJointControllers. More... | |
std::vector< std::string > | getNJointControllerNames (const std::vector< armarx::NJointControllerBasePtr > &ctrls) const |
Returns the names of given NJointControllers. More... | |
const NJointControllerBasePtr & | getNJointControllerNotNull (const std::string &name) const |
Returns a pointer to the NJointControllerBase. More... | |
std::vector< armarx::NJointControllerBasePtr > | getNJointControllersNotNull (const std::vector< std::string > &names) const |
Returns pointers to the NJointControllers. More... | |
NJointControllerStatus | getNJointControllerStatus (const std::string &name, const Ice::Current &=Ice::emptyCurrent) const override |
Returns the status of the NJointControllerBase. More... | |
NJointControllerStatusSeq | getNJointControllerStatuses (const Ice::Current &=Ice::emptyCurrent) const override |
Returns the status of all NJointControllers. More... | |
Ice::StringSeq | getRequestedNJointControllerNames (const Ice::Current &=Ice::emptyCurrent) const override |
Returns the names of all requested NJointControllers. More... | |
void | switchNJointControllerSetup (const Ice::StringSeq &newSetup, const Ice::Current &=Ice::emptyCurrent) override |
Changes the set of requested NJointControllers to the given set. More... | |
~ControllerManagement () | |
Public Member Functions inherited from ControlThreadDataBuffer | |
bool | activatedControllersChanged () const |
Returns whether the set of activated Joint- and NJointControllers changed. More... | |
JointAndNJointControllers | copyRequestedControllers () const |
Returns the set of requsted Joint- and NJointControllers. More... | |
std::vector< JointController * > | copyRequestedJointControllers () const |
Returns the set of requsted JointControllers. More... | |
std::vector< NJointControllerBase * > | copyRequestedNJointControllers () const |
Returns the set of requsted NJointControllers. More... | |
JointAndNJointControllers | getActivatedControllers () const |
TODO private + attorney for publish. More... | |
std::vector< JointController * > | getActivatedJointControllers () const |
Returns the set of activated JointControllers. More... | |
std::vector< NJointControllerBase * > | getActivatedNJointControllers () const |
Returns the set of activated NJointControllers. More... | |
ControlThreadOutputBuffer & | getControlThreadOutputBuffer () |
Returns the ControlThreadOutputBuffer. More... | |
const SensorAndControl & | getSensorAndControlBuffer () const |
TODO private + attorney for publish. More... | |
SensorAndControl & | rtGetSensorAndControlBuffer () |
Returns the writer buffer for sensor and control values. More... | |
void | rtSensorAndControlBufferCommitWrite () |
Commits the writer buffer for sensor and control values. More... | |
bool | sensorAndControlBufferChanged () const |
Updates the sensor and control buffer and returns whether the buffer was updated. More... | |
void | setActivateControllersRequest (std::set< NJointControllerBasePtr, std::greater< NJointControllerBasePtr >> ctrls) |
Sets the set of requested NJointControllers to. More... | |
void | updateVirtualRobot (const VirtualRobot::RobotPtr &robot) const |
Updates the given VirtualRobot with the current joint values. More... | |
void | updateVirtualRobot (const VirtualRobot::RobotPtr &robot, const std::vector< VirtualRobot::RobotNodePtr > &nodes) const |
Updates the given VirtualRobot with the current joint values. More... | |
Static Public Member Functions | |
static RobotUnit & | Instance () |
Static Public Member Functions inherited from Units | |
static Units & | Instance () |
Returns the singleton instance of this class. More... | |
Static Public Member Functions inherited from ModuleBase | |
static ModuleBase & | Instance () |
Returns the singleton instance of this class. More... | |
template<class T > | |
static T & | Instance () |
Returns the singleton instance of the given class. More... | |
Static Public Member Functions inherited from Component | |
template<class T , class TPtr = IceInternal::Handle<T>> | |
static TPtr | create (Ice::PropertiesPtr properties=Ice::createProperties(), const std::string &configName="", const std::string &configDomain="ArmarX") |
Factory method for a component. More... | |
Static Public Member Functions inherited from ManagedIceObject | |
static std::string | generateSubObjectName (const std::string &superObjectName, const std::string &subObjectName) |
Generates a unique name for a sub object from a general name and unique name. More... | |
static std::string | GetObjectStateAsString (int state) |
Static Public Member Functions inherited from Logging | |
static Logging & | Instance () |
Returns the singleton instance of this class. More... | |
Static Public Member Functions inherited from Devices | |
static Devices & | Instance () |
Returns the singleton instance of this class. More... | |
Static Public Member Functions inherited from Publisher | |
static Publisher & | Instance () |
Returns the singleton instance of this class. More... | |
Static Public Member Functions inherited from RobotData | |
static RobotData & | Instance () |
Returns the singleton instance of this class. More... | |
Static Public Member Functions inherited from Management | |
static Management & | Instance () |
Returns the singleton instance of this class. More... | |
Static Public Member Functions inherited from ControlThread | |
static ControlThread & | Instance () |
Returns the singleton instance of this class. More... | |
Static Public Member Functions inherited from SelfCollisionChecker | |
static SelfCollisionChecker & | Instance () |
Returns the singleton instance of this class. More... | |
Static Public Member Functions inherited from ControllerManagement | |
static ControllerManagement & | Instance () |
Returns the singleton instance of this class. More... | |
Static Public Member Functions inherited from ControlThreadDataBuffer | |
static ControlThreadDataBuffer & | Instance () |
Returns the singleton instance of this class. More... | |
Additional Inherited Members | |
Public Types inherited from ManagedIceObject | |
using | PeriodicTaskPtr = IceUtil::Handle< SimplePeriodicTask< std::function< void(void)> >> |
Static Public Attributes inherited from ManagedIceObject | |
static const ManagedIceObjectPtr | NullPtr |
A nullptr to be used when a const ref to a nullptr is required. More... | |
Protected Types inherited from ModuleBase | |
using | ClockType = std::chrono::high_resolution_clock |
using | GuardType = std::unique_lock< MutexType > |
using | MutexType = std::recursive_timed_mutex |
The type of recursive_mutex used in this class. More... | |
using | TimePointType = std::chrono::high_resolution_clock::time_point |
Protected Types inherited from ControlThread | |
enum | SwitchControllerMode { RTThread, IceRequests } |
Protected Member Functions inherited from Units | |
void | addUnit (ManagedIceObjectPtr unit) |
Registers a unit for management (the Unit is added and removed to the ArmarXManager and updated with new values. More... | |
ManagedIceObjectPtr | createKinematicSubUnit (const Ice::PropertiesPtr &properties, const std::string &positionControlMode=ControlModes::Position1DoF, const std::string &velocityControlMode=ControlModes::Velocity1DoF, const std::string &torqueControlMode=ControlModes::Torque1DoF, const std::string &pwmControlMode=ControlModes::PWM1DoF) |
Create the KinematicUnit (this function should be called in initializeKinematicUnit) More... | |
virtual void | initializeDefaultUnits () |
Calls all init hooks for all managed Units. More... | |
virtual void | initializeDiagnosticsUnit () |
Initialize the diagnostics unit. More... | |
virtual void | initializeForceTorqueUnit () |
Initializes the ForceTorqueUnit. More... | |
virtual void | initializeInertialMeasurementUnit () |
Initializes the InertialMeasurementUnit. More... | |
virtual void | initializeKinematicUnit () |
Initializes the KinematicUnit. More... | |
virtual void | initializeLocalizationUnit () |
Initializes the TcpControllerUnit. More... | |
virtual void | initializePlatformUnit () |
Initializes the PlatformUnit. More... | |
virtual void | initializeTcpControllerUnit () |
Initializes the TcpControllerUnit. More... | |
virtual void | initializeTrajectoryControllerUnit () |
Initializes the TrajectoryControllerUnit. More... | |
Protected Member Functions inherited from ModuleBase | |
void | _componentPropertiesUpdated (const std::set< std::string > &) |
Hook for deriving RobotUnitModules called in componentPropertiesUpdated. More... | |
void | _icePropertiesInitialized () |
Hook for deriving RobotUnitModules called in icePropertiesInitialized. More... | |
void | _postFinishComponentInitialization () |
Hook for deriving RobotUnitModules called in finishComponentInitialization (called after the state has changed) More... | |
void | _postFinishControlThreadInitialization () |
Hook for deriving RobotUnitModules called in finishControlThreadInitialization (called after the state has changed) More... | |
void | _postFinishDeviceInitialization () |
Hook for deriving RobotUnitModules called in finishDeviceInitialization (called after the state has changed) More... | |
void | _postFinishRunning () |
Hook for deriving RobotUnitModules called in finishRunning (called after the state has changed) More... | |
void | _postFinishUnitInitialization () |
Hook for deriving RobotUnitModules called in finishUnitInitialization (called after the state has changed) More... | |
void | _postOnConnectRobotUnit () |
Hook for deriving RobotUnitModules called in onConnectComponent (called after onConnectRobotUnit was called) More... | |
void | _postOnDisconnectRobotUnit () |
Hook for deriving RobotUnitModules called in onDisconnectComponent (called after onDisconnectRobotUnit was called) More... | |
void | _postOnExitRobotUnit () |
Hook for deriving RobotUnitModules called in onExitComponent (called after onExitRobotUnit was called) More... | |
void | _postOnInitRobotUnit () |
Hook for deriving RobotUnitModules called in onInitComponent (called after onInitRobotUnit was called) More... | |
void | _preFinishComponentInitialization () |
Hook for deriving RobotUnitModules called in finishComponentInitialization (called before the state has changed) More... | |
void | _preFinishControlThreadInitialization () |
Hook for deriving RobotUnitModules called in finishControlThreadInitialization (called before the state has changed) More... | |
void | _preFinishDeviceInitialization () |
Hook for deriving RobotUnitModules called in finishDeviceInitialization (called before the state has changed) More... | |
void | _preFinishRunning () |
Hook for deriving RobotUnitModules called in finishRunning (called before the state has changed) More... | |
void | _preFinishUnitInitialization () |
Hook for deriving RobotUnitModules called in finishUnitInitialization (called before the state has changed) More... | |
void | _preOnConnectRobotUnit () |
Hook for deriving RobotUnitModules called in onConnectComponent (called before onConnectRobotUnit was called) More... | |
void | _preOnDisconnectRobotUnit () |
Hook for deriving RobotUnitModules called in onDisconnectComponent (called before onDisconnectRobotUnit was called) More... | |
void | _preOnExitRobotUnit () |
Hook for deriving RobotUnitModules called in onExitComponent (called before onExitRobotUnit was called) More... | |
void | _preOnInitRobotUnit () |
Hook for deriving RobotUnitModules called in onInitComponent (called before onInitRobotUnit was called) More... | |
void | checkDerivedClasses () const |
Checks whether the implementing class derives all modules. More... | |
void | componentPropertiesUpdated (const std::set< std::string > &changedProperties) override |
virtual void | finishComponentInitialization () |
Transition RobotUnitState::InitializingComponent -> RobotUnitState::InitializingDevices. More... | |
virtual void | finishControlThreadInitialization () |
Transition RobotUnitState::InitializingControlThread -> RobotUnitState::Running. More... | |
virtual void | finishDeviceInitialization () |
Transition RobotUnitState::InitializingDevices -> RobotUnitState::InitializingUnits. More... | |
virtual void | finishRunning () |
Transition RobotUnitState::Running -> RobotUnitState::Exiting. More... | |
virtual void | finishUnitInitialization () |
Transition RobotUnitState::InitializingUnits -> RobotUnitState::WaitingForRTThreadInitialization. More... | |
std::string | getDefaultName () const override |
GuardType | getGuard () const |
Returns a guard to the RobotUnits mutex. More... | |
void | icePropertiesInitialized () override |
ModuleBase () | |
Ctor. More... | |
void | onConnectComponent () final override |
void | onDisconnectComponent () final override |
void | onExitComponent () final override |
void | onInitComponent () final override |
Protected Member Functions inherited from Component | |
void | addPropertyUser (const PropertyUserPtr &subPropertyUser) |
Add additional property users here that should show up in the application help text. More... | |
Component () | |
Protected default constructor. Used for virtual inheritance. Use createManagedIceObject() instead. More... | |
std::string | getConfigDomain () |
Retrieve config domain for this component as set in constructor. More... | |
std::string | getConfigIdentifier () |
Retrieve config identifier for this component as set in constructor. More... | |
std::string | getConfigName () |
Retrieve config name for this component as set in constructor. More... | |
Protected Member Functions inherited from ManagedIceObject | |
template<class PluginT , class... ParamsT> | |
PluginT * | addPlugin (const std::string prefix="", ParamsT &&...params) |
template<class PluginT , class... ParamsT> | |
void | addPlugin (PluginT *&targ, const std::string prefix="", ParamsT &&...params) |
template<class PluginT , class... ParamsT> | |
void | addPlugin (std::experimental::observer_ptr< PluginT > &targ, const std::string prefix="", ParamsT &&...params) |
Ice::CommunicatorPtr | getCommunicator () const |
std::unique_ptr< ManagedIceObjectPlugin > & | getPluginPointer (std::type_info const &type, std::string const &prefix) |
ManagedIceObject () | |
Protected default constructor. More... | |
virtual void | postOnConnectComponent () |
virtual void | postOnDisconnectComponent () |
virtual void | postOnExitComponent () |
virtual void | postOnInitComponent () |
virtual void | preOnDisconnectComponent () |
virtual void | preOnExitComponent () |
bool | removeProxyDependency (const std::string &name) |
This function removes the dependency of this object on the in parameter name specified object. More... | |
void | setName (std::string name) |
Override name of well-known object. More... | |
void | terminate () |
Initiates termination of this IceManagedObject. More... | |
~ManagedIceObject () override | |
Protected Member Functions inherited from Logging | |
bool | checkLogLevel (MessageTypeT level) const |
const LogSenderPtr & | getLogSender () const |
Retrieve log sender. More... | |
LogSenderPtr | loghelper (const char *file, int line, const char *function) const |
Protected Member Functions inherited from Devices | |
void | addControlDevice (const ControlDevicePtr &cd) |
Adds a ControlDevice to the robot. More... | |
void | addSensorDevice (const SensorDevicePtr &sd) |
Adds a SensorDevice to the robot. More... | |
virtual RTThreadTimingsSensorDevicePtr | createRTThreadTimingSensorDevice () const |
Creates the SensorDevice used to log timings in the ControlThread (This function is supposed to be used in the ModuleBase::finishDeviceInitialization) More... | |
RTThreadTimingsSensorDevice & | rtGetRTThreadTimingsSensorDevice () |
Returns the SensorDevice used to log timings in the ControlThread. More... | |
Protected Member Functions inherited from Publisher | |
virtual void | publish (StringVariantBaseMap additionalMap={}, StringVariantBaseMap timingMap={}) |
Publishes data. More... | |
Protected Member Functions inherited from ControlThread | |
void | rtDeactivateAssignedNJointControllerBecauseOfError (std::size_t ctrlDevIndex) |
Searches for the NJointControllerBase responsible for the given JointController and deactivates it. More... | |
virtual void | rtDeactivatedNJointControllerBecauseOfError (const NJointControllerBasePtr &) |
Hook for deriving classes (called AFTER a NJointControllerBase is deactivated due to an error) More... | |
void | rtDeactivateNJointControllerBecauseOfError (std::size_t nJointCtrlIndex) |
Deactivates a NJointControllerBase and sets all used ControlDevices to EmergencyStop. More... | |
const std::vector< ControlDevicePtr > & | rtGetControlDevices () const |
Returns all ControlDevices. More... | |
EmergencyStopState | rtGetEmergencyStopState () const |
Returns the ControlThread's emergency stop state. More... | |
const VirtualRobot::RobotPtr & | rtGetRobot () const |
Returns the simox robot used in the control thread. More... | |
const std::vector< SensorDevicePtr > & | rtGetSensorDevices () |
Returns all SensorDevices. More... | |
RTThreadTimingsSensorDevice & | rtGetThreadTimingsSensorDevice () |
Returns the RTThreadTimingsSensorDevice. More... | |
void | rtHandleInvalidTargets () |
Deactivates all NJointControllers generating invalid targets. More... | |
bool | rtIsInEmergencyStop () const |
Returns whether the rt thread is in emergency stop. More... | |
virtual void | rtPostReadSensorDeviceValues (const IceUtil::Time &sensorValuesTimestamp, const IceUtil::Time &timeSinceLastIteration) |
Execute code after updating the sensor values. More... | |
void | rtReadSensorDeviceValues (const IceUtil::Time &sensorValuesTimestamp, const IceUtil::Time &timeSinceLastIteration) |
Calls SensorDevice::rtReadSensorValues for all SensorDevices. More... | |
void | rtResetAllTargets () |
Calls JointController::rtResetTarget for all active Joint controllers. More... | |
void | rtRunJointControllers (const IceUtil::Time &sensorValuesTimestamp, const IceUtil::Time &timeSinceLastIteration) |
Runs Joint controllers and writes target values to ControlDevices. More... | |
void | rtRunNJointControllers (const IceUtil::Time &sensorValuesTimestamp, const IceUtil::Time &timeSinceLastIteration) |
Runs NJoint controllers. More... | |
void | rtSetEmergencyStopState (EmergencyStopState state) |
Set an EmergencyStopState request. More... | |
void | rtSetJointController (JointController *c, std::size_t index) |
Activate a joint controller from the rt loop (only works in switch mode RTThread) More... | |
void | rtSetRobotGlobalPose (const Eigen::Matrix4f &gp, bool updateRobot=true) |
bool | rtSwitchControllerSetup (SwitchControllerMode mode=SwitchControllerMode::IceRequests) |
Changes the set of active controllers. More... | |
void | rtUpdateRobotGlobalPose () |
void | rtUpdateSensorAndControlBuffer (const IceUtil::Time &sensorValuesTimestamp, const IceUtil::Time &timeSinceLastIteration) |
Updates the current SensorValues and ControlTargets for code running outside of the ControlThread. More... | |
Protected Member Functions inherited from ControlThreadDataBuffer | |
virtual void | checkSetOfControllersToActivate (const JointAndNJointControllers &) const |
This hook is called prior to writing the set of requested controllers. More... | |
Static Protected Member Functions inherited from ModuleBase | |
static constexpr std::size_t | IndexSentinel () |
Returns a sentinel value for an index (std::numeric_limits<std::size_t>::max()) More... | |
Protected Attributes inherited from Logging | |
MessageTypeT | minimumLoggingLevel |
SpamFilterDataPtr | spamFilter |
LogTag | tag |
The RobotUnit class manages a robot and its controllers.
The RobotUnit manages NJointControllerBase and JointController for a robot. Controllers are executed in a control thread.
Units are created on an as needed basis. (e.g. If there is a platform, a PlatformSubUnit is created)
Available units are
Since the control thread (Section Soft rt) should adhere soft rt properties, no function executed in it is allowed to block. Hence logging of messages via armarx logging streams (e.g. ARMARX_INFO) is forbidden.
There are non-blocking macros to log messages in the control thread:
These macros work similar to printf and write their content to the corresponding armarx logging stream.
The stream returns an object of the type armarx::detail::RtMessageLogEntryBase. It is possible to deactivate spam on these streams by calling armarx::detail::RtMessageLogEntryBase::deactivateSpam .
E.g.
If an error occours, it is possible to print all recent messages (even the deactivated messages) to a file by calling the ice interface function RobotUnitInterface::writeRecentIterationsToFile. The property "RTLoggingKeepIterationsForMs" decides how long all logging messages are keept (default 60 seconds). The RobotUnitGui has a button to call this function.
This section explains the running threads and their responsibilities.
This thread should be able to adhere soft rt if PREEMPT_RT is used.
Its tasks are:
To adhere soft rt, the following actions are forbidden (an example and the reason are in parentheses):
Its tasks are:
If this thread is deactivated, no Rt Logging is possible and no messages from the control Thread are printed.
Its tasks are:
Definition at line 180 of file RobotUnit.h.
~RobotUnit | ( | ) |
Definition at line 28 of file RobotUnit.cpp.
|
inlineoverridevirtual |
Reimplemented from Component.
Reimplemented in RobotUnitSimulation, and RTUnit.
Definition at line 204 of file RobotUnit.h.
|
inlinestatic |
Definition at line 197 of file RobotUnit.h.