25#include <VirtualRobot/VirtualRobot.h>
29#include <armarx/control/common/FTSensor.h>
30#include <armarx/control/common/control_law/ControllerCommonInterface.h>
32#include <armarx/control/njoint_controller/task_space/ControllerInterface.h>
36 namespace common = armarx::control::common;
37 namespace law = armarx::control::common::control_law;
52 virtual public NJointKeypointsAdmittanceControllerInterface
58 const NJointControllerConfigPtr& config,
60 std::string
getClassName(
const Ice::Current&)
const override;
61 void rtRun(
const IceUtil::Time& sensorValuesTimestamp,
62 const IceUtil::Time& timeSinceLastIteration)
override;
69 const Ice::Current& iceCurrent = Ice::emptyCurrent)
override;
71 const Eigen::VectorXf&,
72 const Ice::Current&)
override;
74 const Eigen::VectorXf& value,
75 const Ice::Current&)
override;
79 const Eigen::Vector3f&,
80 const Ice::Current&)
override;
82 void setTCPMass(Ice::Float,
const Ice::Current&)
override;
97 std::vector<ControlTarget1DoFActuatorTorque*>
targets;
NJointControllerWithTripleBuffer(const law::KeypointsAdmittanceController::Config &initialCommands=law::KeypointsAdmittanceController::Config())
A simple triple buffer for lockfree comunication between a single writer and a single reader.
std::atomic_bool rtFirstRun
void onPublish(const SensorAndControl &, const DebugDrawerInterfacePrx &, const DebugObserverInterfacePrx &) override
std::vector< const SensorValue1DoFActuatorTorque * > torqueSensors
devices
void onInitNJointController() override
TripleBuffer< law::KeypointsAdmittanceController::Status > controlStatusBuffer
set buffers
std::vector< ControlTarget1DoFActuatorTorque * > targets
std::string kinematicChainName
std::vector< const SensorValue1DoFActuatorPosition * > positionSensors
std::vector< std::string > jointNames
NJointKeypointsAdmittanceController(const RobotUnitPtr &robotUnit, const NJointControllerConfigPtr &config, const VirtualRobot::RobotPtr &)
std::vector< const SensorValue1DoFActuatorVelocity * > velocitySensors
NJointTaskspaceControllerConfigPtr ConfigPtrT
void setForceTorqueBaseline(const Eigen::Vector3f &, const Eigen::Vector3f &, const Ice::Current &) override
ft sensor
TripleBuffer< common::FTSensor::FTBufferData > ftSensorBuffer
std::string getKinematicChainName(const Ice::Current &) override
void rtRun(const IceUtil::Time &sensorValuesTimestamp, const IceUtil::Time &timeSinceLastIteration) override
TODO make protected and use attorneys.
void setTCPCoMInFTFrame(const Eigen::Vector3f &, const Ice::Current &) override
void reconfigureController(const std::string &filename, const Ice::Current &iceCurrent=Ice::emptyCurrent) override
set control target
std::string configFileName
variables
void setTCPMass(Ice::Float, const Ice::Current &) override
virtual void additionalTask()
void setKeypointsParameters(const std::string &name, const Eigen::VectorXf &value, const Ice::Current &) override
void calibrateFTSensor(const Ice::Current &) override
void setControlParameters(const std::string &, const Eigen::VectorXf &, const Ice::Current &) override
common::FTSensor ftsensor
std::string getClassName(const Ice::Current &) const override
void rtPreActivateController() override
This function is called before the controller is activated.
void toggleGravityCompensation(const bool toggle, const Ice::Current &) override
std::shared_ptr< class Robot > RobotPtr
This file is part of ArmarX.
This file is part of ArmarX.
::IceInternal::ProxyHandle<::IceProxy::armarx::DebugObserverInterface > DebugObserverInterfacePrx
IceUtil::Handle< class RobotUnit > RobotUnitPtr
::IceInternal::ProxyHandle<::IceProxy::armarx::DebugDrawerInterface > DebugDrawerInterfacePrx
detail::ControlThreadOutputBufferEntry SensorAndControl