Go to the documentation of this file.
25 #include <VirtualRobot/Robot.h>
34 #include <armarx/control/njoint_controller/task_space/ControllerInterface.h>
36 #include <simox/control/environment/CollisionRobot.h>
37 #include <simox/control/geodesics/metric/inertia.h>
38 #include <simox/control/impl/simox/robot/Robot.h>
61 using ConfigPtrT = ConfigurableNJointControllerConfigPtr;
64 using RtStatus = law::SafetyTaskspaceImpedanceController::RtStatus;
70 std::vector<ControlTarget1DoFActuatorTorque*>
targets;
103 std::shared_ptr<simox::control::geodesics::metric::Inertia>
inertiaPtr;
104 std::shared_ptr<std::vector<simox::control::environment::DistanceResult>>
115 const NJointControllerConfigPtr& config,
118 std::string
getClassName(
const Ice::Current& = Ice::emptyCurrent)
const override;
125 const Ice::Current& iceCurrent = Ice::emptyCurrent)
override;
128 const Ice::Current& = Ice::emptyCurrent)
override;
130 getConfig(
const Ice::Current& iceCurrent = Ice::emptyCurrent)
override;
132 Ice::FloatSeq
getTCPVel(
const std::string& rns,
133 const Ice::Current& iceCurrent = Ice::emptyCurrent)
override;
139 const bool forceGuard,
140 const bool torqueGuard,
141 const Ice::Current& iceCurrent = Ice::emptyCurrent)
override;
143 const Ice::Current& iceCurrent = Ice::emptyCurrent)
override;
152 void limbInit(
const std::string nodeSetName,
156 std::shared_ptr<std::vector<::simox::control::environment::DistanceResult>>
164 std::map<std::string, ArmPtr>
limb;
167 std::unique_ptr<::simox::control::environment::CollisionRobot<hpp::fcl::OBBRSS>>
173 std::shared_ptr<std::vector<::simox::control::environment::DistanceResult>>
collisionPairs;
virtual void additionalTask()
std::unique_ptr<::simox::control::environment::CollisionRobot< hpp::fcl::OBBRSS > > collisionRobotPtr
void validateConfigData(Config &config, ArmPtr &arm)
bool isSafeForceTorque(const std::string &nodeSetName, const Ice::Current &iceCurrent=Ice::emptyCurrent) override
void onPublish(const SensorAndControl &, const DebugDrawerInterfacePrx &, const DebugObserverInterfacePrx &) override
TripleBuffer< Config > bufferConfigRtToOnPublish
Eigen::VectorXd qposActuatedJoints
law::SafetyTaskspaceImpedanceController controller
controller (maths)
law::SafetyTaskspaceImpedanceController::RtStatus RtStatus
void updateConfig(const ::armarx::aron::data::dto::DictPtr &dto, const Ice::Current &iceCurrent=Ice::emptyCurrent) override
NJointController interface.
std::map< std::string, ArmPtr > limb
common::control_law::arondto::SafetyTaskspaceImpedanceControllerConfigDict ConfigDict
TripleBuffer< RtStatus > bufferRtStatusToUser
std::shared_ptr< std::vector< int > > pointsOnArm
void limbReInit(ArmPtr &arm)
Ice::FloatSeq getTCPVel(const std::string &rns, const Ice::Current &iceCurrent=Ice::emptyCurrent) override
void onInitNJointController() override
NJointControllerBase interface.
std::atomic_bool rtFirstRun
flags
NJointControllerConfigPtr ConfigPtrT
std::shared_ptr< std::vector<::simox::control::environment::DistanceResult > > collisionPairs
store collision pairs in vector to be able to preallocate memory
TripleBuffer< Config > bufferConfigRtToUser
std::vector< std::string > jointNames
std::vector< ControlTarget1DoFActuatorTorque * > targets
Config nonRtConfig
set data containers and buffers
dictionary< string, Ice::FloatSeq > TargetNullspaceMap
std::vector< std::string > actuatedJoints
Provides a ready-to-use ArViz client arviz as member variable.
VirtualRobot::RobotPtr nonRtRobot
robot
void rtPostDeactivateController() override
This function is called after the controller is deactivated.
Brief description of class NJointTaskspaceSafetyImpedanceController.
common::control_law::arondto::SafetyTaskspaceImpedanceControllerConfig Config
void rtPreActivateController() override
This function is called before the controller is activated.
TripleBuffer< Config > bufferConfigUserToNonRt
NJointTaskspaceSafetyImpedanceController(const RobotUnitPtr &robotUnit, const NJointControllerConfigPtr &config, const VirtualRobot::RobotPtr &)
law::SafetyTaskspaceImpedanceController::Config Config
This file is part of ArmarX.
void rtRun(const IceUtil::Time &sensorValuesTimestamp, const IceUtil::Time &timeSinceLastIteration) override
TODO make protected and use attorneys.
TripleBuffer< Config > bufferConfigNonRtToRt
std::atomic_bool reInitPreActivate
::armarx::aron::data::dto::DictPtr getConfig(const Ice::Current &iceCurrent=Ice::emptyCurrent) override
armarx::core::time::DateTime Time
std::string kinematicChainName
names
std::shared_ptr< simox::control::simox::robot::Robot > simoxReducedRobotPtr
std::shared_ptr< Dict > DictPtr
void limbRT(ArmPtr &arm, const double deltaT)
TripleBuffer< RtStatus > bufferRtStatusToNonRt
VirtualRobot::RobotPtr nonRtRobot
law::SafetyTaskspaceImpedanceController::ConfigDict ConfigDict
void enableSafeGuardForceTorque(const std::string &nodeSetName, const bool forceGuard, const bool torqueGuard, const Ice::Current &iceCurrent=Ice::emptyCurrent) override
common::SensorDevicesForNJointTorqueController sensorDevices
devices
std::shared_ptr<::simox::control::simox::robot::Robot > simoxControlRobotPtr
void limbPublish(ArmPtr &arm, const DebugObserverInterfacePrx &debugObs)
std::shared_ptr< simox::control::geodesics::metric::Inertia > inertiaPtr
self-collision avoidance
dictionary< string, FloatSeqSeq > TargetPoseMap
TripleBuffer< RtStatus > bufferRtStatusToOnPublish
std::shared_ptr< std::vector< simox::control::environment::DistanceResult > > collisionPairsPtr
void limbInit(const std::string nodeSetName, ArmPtr &arm, Config &cfg, VirtualRobot::RobotPtr &nonRtRobotPtr, std::shared_ptr< std::vector<::simox::control::environment::DistanceResult >> collisionPairs)
void calibrateFTSensor()
ft sensor
std::unique_ptr< ArmData > ArmPtr
std::string getClassName(const Ice::Current &=Ice::emptyCurrent) const override
std::shared_ptr< simox::control::simox::robot::Robot > simoxReducedRobotPtr
std::shared_ptr< class Robot > RobotPtr
bool updateTargetPose(const TargetPoseMap &targetPoseMap, const TargetNullspaceMap &targetNullspaceMap, const Ice::Current &=Ice::emptyCurrent) override
void limbNonRT(ArmPtr &arm)