|
Brief description of class NJointTaskspaceSafetyImpedanceController. More...
#include <armarx/control/njoint_controller/task_space/SafetyImpedanceController.h>
Classes | |
struct | ArmData |
Public Types | |
using | ArmPtr = std::unique_ptr< ArmData > |
using | Config = law::SafetyTaskspaceImpedanceController::Config |
using | ConfigDict = law::SafetyTaskspaceImpedanceController::ConfigDict |
using | ConfigPtrT = ConfigurableNJointControllerConfigPtr |
using | RtStatus = law::SafetyTaskspaceImpedanceController::RtStatus |
Public Types inherited from NJointControllerBase | |
using | ConfigPtrT = NJointControllerConfigPtr |
using | GenerateConfigDescriptionFunctionSignature = WidgetDescription::WidgetPtr(*)(const VirtualRobot::RobotPtr &, const std::map< std::string, ConstControlDevicePtr > &controlDevices, const std::map< std::string, ConstSensorDevicePtr > &sensorDevices) |
template<class ConfigPrtType > | |
using | GenerateConfigFromVariantsFunctionSignature = ConfigPrtType(*)(const StringVariantBaseMap &) |
Public Types inherited from ManagedIceObject | |
using | PeriodicTaskPtr = IceUtil::Handle< SimplePeriodicTask< std::function< void(void)> >> |
Public Member Functions | |
void | calibrateFTSensor (const Ice::Current &) override |
ft sensor More... | |
void | enableSafeGuardForceTorque (const std::string &nodeSetName, const bool forceGuard, const bool torqueGuard, const Ice::Current &iceCurrent=Ice::emptyCurrent) override |
std::string | getClassName (const Ice::Current &=Ice::emptyCurrent) const override |
::armarx::aron::data::dto::DictPtr | getConfig (const Ice::Current &iceCurrent=Ice::emptyCurrent) override |
Ice::FloatSeq | getTCPVel (const std::string &rns, const Ice::Current &iceCurrent=Ice::emptyCurrent) override |
bool | isSafeForceTorque (const std::string &nodeSetName, const Ice::Current &iceCurrent=Ice::emptyCurrent) override |
NJointTaskspaceSafetyImpedanceController (const RobotUnitPtr &robotUnit, const NJointControllerConfigPtr &config, const VirtualRobot::RobotPtr &) | |
void | rtRun (const IceUtil::Time &sensorValuesTimestamp, const IceUtil::Time &timeSinceLastIteration) override |
TODO make protected and use attorneys. More... | |
void | updateConfig (const ::armarx::aron::data::dto::DictPtr &dto, const Ice::Current &iceCurrent=Ice::emptyCurrent) override |
NJointController interface. More... | |
bool | updateTargetPose (const TargetPoseMap &targetPoseMap, const TargetNullspaceMap &targetNullspaceMap, const Ice::Current &=Ice::emptyCurrent) override |
Public Member Functions inherited from SynchronousNJointController | |
virtual void | rtSwapBufferAndRun (const IceUtil::Time &sensorValuesTimestamp, const IceUtil::Time &timeSinceLastIteration) |
Public Member Functions inherited from NJointControllerBase | |
void | activateController (const Ice::Current &=Ice::emptyCurrent) final override |
void | callDescribedFunction (const std::string &, const StringVariantBaseMap &, const Ice::Current &=Ice::emptyCurrent) override |
void | deactivateAndDeleteController (const Ice::Current &=Ice::emptyCurrent) final override |
void | deactivateController (const Ice::Current &=Ice::emptyCurrent) final override |
void | deleteController (const Ice::Current &=Ice::emptyCurrent) final override |
const std::map< std::string, const JointController * > & | getControlDevicesUsedJointController () |
const std::vector< char > & | getControlDeviceUsedBitmap () const |
StringStringDictionary | getControlDeviceUsedControlModeMap (const Ice::Current &=Ice::emptyCurrent) const final override |
const std::vector< std::size_t > & | getControlDeviceUsedIndices () const |
NJointControllerDescription | getControllerDescription (const Ice::Current &=Ice::emptyCurrent) const final override |
NJointControllerDescriptionWithStatus | getControllerDescriptionWithStatus (const Ice::Current &=Ice::emptyCurrent) const final override |
NJointControllerStatus | getControllerStatus (const Ice::Current &=Ice::emptyCurrent) const final override |
WidgetDescription::StringWidgetDictionary | getFunctionDescriptions (const Ice::Current &=Ice::emptyCurrent) const override |
std::string | getInstanceName (const Ice::Current &=Ice::emptyCurrent) const final override |
bool | hasControllerError (const Ice::Current &=Ice::emptyCurrent) const final override |
bool | isControllerActive (const Ice::Current &=Ice::emptyCurrent) const final override |
bool | isControllerRequested (const Ice::Current &=Ice::emptyCurrent) const final override |
bool | isDeletable (const Ice::Current &=Ice::emptyCurrent) const final override |
std::optional< std::vector< char > > | isNotInConflictWith (const NJointControllerBasePtr &other) const |
std::optional< std::vector< char > > | isNotInConflictWith (const std::vector< char > &used) const |
NJointControllerBase () | |
ConstControlDevicePtr | peekControlDevice (const std::string &deviceName) const |
Get a const ptr to the given ControlDevice. More... | |
ConstSensorDevicePtr | peekSensorDevice (const std::string &deviceName) const |
Get a const ptr to the given SensorDevice. More... | |
const std::string & | rtGetClassName () const |
Returns the class name. More... | |
const std::vector< std::size_t > & | rtGetControlDeviceUsedIndices () const |
Returns the indices of all ControlDevice's this NJointControllerBase calculates a ControlTarget for. More... | |
bool | rtGetErrorState () const |
Sets the error state to true. More... | |
const std::string & | rtGetInstanceName () const |
Returns the instance name. More... | |
std::size_t | rtGetNumberOfUsedControlDevices () const |
Returns the number of used ControlDevices. More... | |
const VirtualRobot::RobotPtr & | rtGetRobot () |
TODO make protected and use attorneys. More... | |
const std::vector< VirtualRobot::RobotNodePtr > & | rtGetRobotNodes () |
Returns the nodes of the virtual robot used by this NJointControllerBase in the rtRun. More... | |
bool | rtUsesControlDevice (std::size_t deviceIndex) const |
Returns whether this NJointControllerBase calculates a ControlTarget for the given ControlDevice. More... | |
ControlTargetBase * | useControlTarget (const std::string &deviceName, const std::string &controlMode) |
Declares to calculate the ControlTarget for the given ControlDevice in the given ControlMode when rtRun is called. More... | |
template<class T > | |
T * | useControlTarget (const std::string &deviceName, const std::string &controlMode) |
Declares to calculate the ControlTarget for the given ControlDevice in the given ControlMode when rtRun is called. More... | |
template<class T > | |
const T * | useSensorValue (const std::string &deviceName) const |
Get a const ptr to the given SensorDevice's SensorValue. More... | |
const SensorValueBase * | useSensorValue (const std::string &sensorDeviceName) const |
Get a const ptr to the given SensorDevice's SensorValue. More... | |
const VirtualRobot::RobotPtr & | useSynchronizedRtRobot (bool updateCollisionModel=false) |
Requests a VirtualRobot for use in rtRun *. More... | |
~NJointControllerBase () override | |
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 NJointTaskspaceSafetyImpedanceControllerInterface | |
void | calibrateFTSensor () |
ft sensor More... | |
void | enableSafeGuardForceTorque (string rns, bool forceGuard, bool torqueGuard) |
Ice::FloatSeq | getTCPVel (string rns) |
bool | isSafeForceTorque (string nodeSetName) |
bool | updateTargetPose (TargetPoseMap targetPoseMap, TargetNullspaceMap targetNullspaceMap) |
Public Member Functions inherited from ArVizComponentPluginUser | |
ArVizComponentPluginUser () | |
armarx::viz::Client | createArVizClient () |
armarx::viz::Client & | getArvizClient () |
Protected Member Functions | |
virtual void | additionalTask () |
void | limbInit (const std::string nodeSetName, ArmPtr &arm, Config &cfg, VirtualRobot::RobotPtr &nonRtRobotPtr, std::shared_ptr< std::vector<::simox::control::environment::DistanceResult >> collisionPairs) |
void | limbNonRT (ArmPtr &arm) |
void | limbPublish (ArmPtr &arm, const DebugObserverInterfacePrx &debugObs) |
void | limbReInit (ArmPtr &arm) |
void | limbRT (ArmPtr &arm, const double deltaT) |
void | onInitNJointController () override |
NJointControllerBase interface. More... | |
void | onPublish (const SensorAndControl &, const DebugDrawerInterfacePrx &, const DebugObserverInterfacePrx &) override |
void | rtPostDeactivateController () override |
This function is called after the controller is deactivated. More... | |
void | rtPreActivateController () override |
This function is called before the controller is activated. More... | |
void | validateConfigData (Config &config, ArmPtr &arm) |
Protected Member Functions inherited from NJointControllerBase | |
std::string | getDefaultName () const override |
ThreadPoolPtr | getThreadPool () const |
void | onConnectComponent () final |
virtual void | onConnectNJointController () |
void | onDisconnectComponent () final |
virtual void | onDisconnectNJointController () |
void | onExitComponent () final |
virtual void | onExitNJointController () |
void | onInitComponent () final |
virtual void | onPublishActivation (const DebugDrawerInterfacePrx &, const DebugObserverInterfacePrx &) |
virtual void | onPublishDeactivation (const DebugDrawerInterfacePrx &, const DebugObserverInterfacePrx &) |
void | rtSetErrorState () |
Sets the error state to true. More... | |
template<typename Task > | |
void | runTask (const std::string &taskName, Task &&task) |
Executes a given task in a separate thread from the Application ThreadPool. 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 | preOnConnectComponent () |
virtual void | preOnDisconnectComponent () |
virtual void | preOnExitComponent () |
virtual void | preOnInitComponent () |
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 Attributes | |
std::vector< std::string > | actuatedJoints |
std::shared_ptr< std::vector<::simox::control::environment::DistanceResult > > | collisionPairs |
store collision pairs in vector to be able to preallocate memory More... | |
std::unique_ptr<::simox::control::environment::CollisionRobot< hpp::fcl::OBBRSS > > | collisionRobotPtr |
std::map< std::string, ArmPtr > | limb |
int | maxCollisionPairs |
VirtualRobot::RobotPtr | nonRtRobot |
float | preFilterDistance |
Eigen::VectorXd | qposActuatedJoints |
RobotUnitPtr | robotUnit |
std::shared_ptr<::simox::control::simox::robot::Robot > | simoxControlRobotPtr |
std::shared_ptr< simox::control::simox::robot::Robot > | simoxReducedRobotPtr |
ConfigDict | userConfig |
Protected Attributes inherited from NJointControllerBase | |
std::map< std::string, std::shared_ptr< ThreadPool::Handle > > | threadHandles |
std::mutex | threadHandlesMutex |
Protected Attributes inherited from Logging | |
MessageTypeT | minimumLoggingLevel |
SpamFilterDataPtr | spamFilter |
LogTag | tag |
Additional Inherited Members | |
Static Public Member Functions inherited from NJointControllerBase | |
template<class ItT > | |
static std::optional< std::vector< char > > | AreNotInConflict (ItT first, ItT last) |
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) |
Public Attributes inherited from ArVizComponentPluginUser | |
armarx::viz::Client | arviz |
Static Public Attributes inherited from NJointControllerBase | |
static const NJointControllerBasePtr | NullPtr {nullptr} |
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... | |
Brief description of class NJointTaskspaceSafetyImpedanceController.
Detailed description of class NJointTaskspaceSafetyImpedanceController.
Definition at line 55 of file SafetyImpedanceController.h.
Definition at line 112 of file SafetyImpedanceController.h.
using Config = law::SafetyTaskspaceImpedanceController::Config |
Definition at line 62 of file SafetyImpedanceController.h.
using ConfigDict = law::SafetyTaskspaceImpedanceController::ConfigDict |
Definition at line 63 of file SafetyImpedanceController.h.
using ConfigPtrT = ConfigurableNJointControllerConfigPtr |
Definition at line 61 of file SafetyImpedanceController.h.
using RtStatus = law::SafetyTaskspaceImpedanceController::RtStatus |
Definition at line 64 of file SafetyImpedanceController.h.
NJointTaskspaceSafetyImpedanceController | ( | const RobotUnitPtr & | robotUnit, |
const NJointControllerConfigPtr & | config, | ||
const VirtualRobot::RobotPtr & | |||
) |
check config for arms
add actuated robot joints use a robot nodeset with all actuated joints, arms including head and torso joints, which change the position of the robot body parts for correct collision checking
initialize simox control robot for self-collision checking
create not reduced simox control robot for inertia calculation
Definition at line 118 of file SafetyImpedanceController.cpp.
|
protectedvirtual |
Reimplemented in NJointTSSafetyImpedanceMPController.
Definition at line 233 of file SafetyImpedanceController.cpp.
|
override |
ft sensor
Definition at line 1105 of file SafetyImpedanceController.cpp.
|
override |
Definition at line 518 of file SafetyImpedanceController.cpp.
|
overridevirtual |
Implements NJointControllerBase.
Reimplemented in NJointTSSafetyImpedanceMPController.
Definition at line 193 of file SafetyImpedanceController.cpp.
|
override |
Definition at line 593 of file SafetyImpedanceController.cpp.
|
override |
Definition at line 489 of file SafetyImpedanceController.cpp.
|
override |
Definition at line 544 of file SafetyImpedanceController.cpp.
|
protected |
init simox inertia class
set pointer to self-collision avoidance objects
Definition at line 44 of file SafetyImpedanceController.cpp.
|
protected |
Definition at line 225 of file SafetyImpedanceController.cpp.
|
protected |
Definition at line 683 of file SafetyImpedanceController.cpp.
|
protected |
init time measures with zero
Definition at line 1114 of file SafetyImpedanceController.cpp.
|
protected |
Definition at line 273 of file SafetyImpedanceController.cpp.
|
overrideprotectedvirtual |
NJointControllerBase interface.
Reimplemented from NJointControllerBase.
Definition at line 199 of file SafetyImpedanceController.cpp.
|
overrideprotectedvirtual |
Reimplemented from NJointControllerBase.
Definition at line 1091 of file SafetyImpedanceController.cpp.
|
overrideprotectedvirtual |
This function is called after the controller is deactivated.
You can use it to deactivate a thread (DO NOT JOIN THREADS!) e.g. via a std::atomic_bool.
Reimplemented from NJointControllerBase.
Definition at line 1306 of file SafetyImpedanceController.cpp.
|
overrideprotectedvirtual |
This function is called before the controller is activated.
You can use it to activate a thread again (DO NOT SPAWN NEW THREADS!) e.g. via a std::atomic_bool.
Reimplemented from NJointControllerBase.
Definition at line 1293 of file SafetyImpedanceController.cpp.
|
overridevirtual |
TODO make protected and use attorneys.
calculation of robot collision pairs
!!!individualColObjects has to be set to true (second flag, that is passed)!!! if not set to true, the body and the arms become attractive, be aware
reset temporary pointsOnArmIndex
checks whether the point is located on the arm and fills the pointsOnArm vector with the corresponding indices the entries in the pointsOnArm vector store the indices of the collision pairs that are on the arm and which must be taken into account in the control law
prefilter contact pairs based on distance
set index in integer vector of contact point on arm below preFilterDistance
set all invalid indeces of this rt cycle to -1
update joint values for simox Robots
update Simox robots
a VectorXd is needed with nodeSet size (size of actuated joints in order of vector, which has been used for initialization in init
It is very important that the simox robots map the current joint configuration of the real-world robot
Implements SynchronousNJointController.
Definition at line 366 of file SafetyImpedanceController.cpp.
|
override |
NJointController interface.
Definition at line 503 of file SafetyImpedanceController.cpp.
|
override |
Definition at line 561 of file SafetyImpedanceController.cpp.
self-collision config parameters
joint limit avoidance config parameters
check hierarchy flags for valid config
Definition at line 604 of file SafetyImpedanceController.cpp.
|
protected |
Definition at line 176 of file SafetyImpedanceController.h.
|
protected |
store collision pairs in vector to be able to preallocate memory
Definition at line 173 of file SafetyImpedanceController.h.
|
protected |
Definition at line 168 of file SafetyImpedanceController.h.
|
protected |
Definition at line 164 of file SafetyImpedanceController.h.
|
protected |
Definition at line 175 of file SafetyImpedanceController.h.
|
protected |
Definition at line 165 of file SafetyImpedanceController.h.
|
protected |
Definition at line 174 of file SafetyImpedanceController.h.
|
protected |
Definition at line 177 of file SafetyImpedanceController.h.
|
protected |
Definition at line 166 of file SafetyImpedanceController.h.
|
protected |
Definition at line 169 of file SafetyImpedanceController.h.
|
protected |
Definition at line 170 of file SafetyImpedanceController.h.
|
protected |
Definition at line 171 of file SafetyImpedanceController.h.