25#include <VirtualRobot/VirtualRobot.h>
32#include <armarx/control/common/control_law/aron/ZeroTorqueOrVelocityControllerConfig.aron.generated.h>
34#include <armarx/control/interface/ConfigurableNJointControllerInterface.h>
35#include <armarx/control/njoint_controller/task_space/ControllerInterface.h>
39 class ControlTarget1DoFActuatorZeroTorque;
40 class ControlTarget1DoFActuatorZeroVelocity;
45 namespace law = armarx::control::common::control_law;
63 using ConfigPtrT = ConfigurableNJointControllerConfigPtr;
68 using Config = common::control_law::arondto::ZeroTorqueOrVelocityControllerConfig;
69 using ConfigDict = common::control_law::arondto::ZeroTorqueOrVelocityControllerConfigDict;
75 std::vector<ControlTarget1DoFActuatorZeroVelocity*>
targetsVel;
109 const NJointControllerConfigPtr& config,
112 std::string
getClassName(
const Ice::Current&)
const override;
114 void rtRun(
const IceUtil::Time& sensorValuesTimestamp,
115 const IceUtil::Time& timeSinceLastIteration)
override;
118 void updateConfig(const ::armarx::aron::data::dto::DictPtr& dto,
119 const Ice::Current& iceCurrent = Ice::emptyCurrent)
override;
122 getConfig(
const Ice::Current& iceCurrent = Ice::emptyCurrent)
override;
126 const std::map<std::string, ConstControlDevicePtr>&,
127 const std::map<std::string, ConstSensorDevicePtr>&);
141 void limbInit(
const std::string nodeSetName,
150 std::map<std::string, ArmPtr>
limb;
A simple triple buffer for lockfree comunication between a single writer and a single reader.
void onPublish(const SensorAndControl &, const DebugDrawerInterfacePrx &, const DebugObserverInterfacePrx &) override
static WidgetDescription::WidgetPtr GenerateConfigDescription(const VirtualRobot::RobotPtr &, const std::map< std::string, ConstControlDevicePtr > &, const std::map< std::string, ConstSensorDevicePtr > &)
void onInitNJointController() override
NJointControllerBase interface.
ConfigurableNJointControllerConfigPtr ConfigPtrT
void limbRT(ArmPtr &arm, const double deltaT)
NJointTaskspaceZeroTorqueOrVelocityController(const RobotUnitPtr &robotUnit, const NJointControllerConfigPtr &config, const VirtualRobot::RobotPtr &)
::armarx::aron::data::dto::DictPtr getConfig(const Ice::Current &iceCurrent=Ice::emptyCurrent) override
void limbInit(const std::string nodeSetName, ArmPtr &arm, Config cfg, VirtualRobot::RobotPtr &nonRtRobotPtr)
void limbReInit(ArmPtr &arm)
std::map< std::string, ArmPtr > limb
common::control_law::arondto::ZeroTorqueOrVelocityControllerConfig Config
void validateConfigData(Config &config, ArmPtr &arm)
static ConfigPtrT GenerateConfigFromVariants(const StringVariantBaseMap &values)
common::control_law::arondto::ZeroTorqueOrVelocityControllerConfigDict ConfigDict
armarx::control::common::control_law::TSCtrlRtStatus RtStatus
void rtPostDeactivateController() override
This function is called after the controller is deactivated.
void rtRun(const IceUtil::Time &sensorValuesTimestamp, const IceUtil::Time &timeSinceLastIteration) override
TODO make protected and use attorneys.
std::unique_ptr< ArmData > ArmPtr
void updateConfig(const ::armarx::aron::data::dto::DictPtr &dto, const Ice::Current &iceCurrent=Ice::emptyCurrent) override
NJointController interface.
void limbPublish(ArmPtr &arm, const DebugObserverInterfacePrx &debugObs)
VirtualRobot::RobotPtr nonRtRobot
std::string getClassName(const Ice::Current &) const override
void rtPreActivateController() override
This function is called before the controller is activated.
std::shared_ptr< class Robot > RobotPtr
::IceInternal::Handle< Dict > DictPtr
This file is part of ArmarX.
This file offers overloads of toIce() and fromIce() functions for STL container types.
::IceInternal::ProxyHandle<::IceProxy::armarx::DebugObserverInterface > DebugObserverInterfacePrx
std::map< std::string, VariantBasePtr > StringVariantBaseMap
SynchronousNJointController NJointController
IceUtil::Handle< class RobotUnit > RobotUnitPtr
::IceInternal::ProxyHandle<::IceProxy::armarx::DebugDrawerInterface > DebugDrawerInterfacePrx
detail::ControlThreadOutputBufferEntry SensorAndControl
std::atomic_bool rtFirstRun
TripleBuffer< Config > bufferNonRtToRt
std::vector< ControlTarget1DoFActuatorZeroVelocity * > targetsVel
std::string kinematicChainName
std::vector< std::string > jointNames
TripleBuffer< RtStatus > bufferRtToNonRt
std::vector< size_t > velocityControlledIndex
TripleBuffer< RtStatus > bufferRtStatusToOnPublish
std::vector< ControlTarget1DoFActuatorZeroTorque * > targetsTorque
TripleBuffer< Config > bufferRtConfigToUser
TripleBuffer< RtStatus > bufferRtStatusToUser
common::SensorDevicesForNJointTorqueController sensorDevices
std::vector< size_t > torqueControlledIndex
TripleBuffer< Config > bufferRtConfigToOnPublish
TripleBuffer< Config > bufferUserToNonRt
set buffers
VirtualRobot::RobotPtr nonRtRobot