27#include <VirtualRobot/VirtualRobot.h>
30#include <RobotAPI/interface/units/RobotUnit/NJointCartesianVelocityController.h>
35 class ControlTarget1DoFActuatorVelocity;
36 class SensorValue1DoFActuatorTorque;
37 class SensorValue1DoFGravityTorque;
58 VirtualRobot::IKSolver::CartesianSelection
mode = VirtualRobot::IKSolver::All;
75 public NJointCartesianVelocityControllerInterface
78 using ConfigPtrT = NJointCartesianVelocityControllerConfigPtr;
80 const NJointCartesianVelocityControllerConfigPtr& config,
84 std::string
getClassName(
const Ice::Current&)
const override;
89 const Ice::Current&)
override;
92 void rtRun(
const IceUtil::Time& sensorValuesTimestamp,
93 const IceUtil::Time& timeSinceLastIteration)
override;
96 const std::map<std::string, ConstControlDevicePtr>&,
97 const std::map<std::string, ConstSensorDevicePtr>&);
99 static NJointCartesianVelocityControllerConfigPtr
102 NJointCartesianVelocityControllerConfigPtr config,
112 VirtualRobot::IKSolver::CartesianSelection mode);
115 static ::armarx::WidgetDescription::WidgetSeq
createSliders();
116 WidgetDescription::HBoxLayoutPtr
119 static VirtualRobot::IKSolver::CartesianSelection
ModeFromString(
const std::string mode);
120 static NJointCartesianVelocityControllerMode::CartesianSelection
122 static VirtualRobot::IKSolver::CartesianSelection
123 ModeFromIce(
const NJointCartesianVelocityControllerMode::CartesianSelection mode);
130 std::vector<ControlTarget1DoFActuatorVelocity*> targets;
132 std::vector<const SensorValue1DoFActuatorTorque*> torqueSensors;
133 std::vector<const SensorValue1DoFGravityTorque*> gravityTorqueSensors;
134 std::vector<SimplePID> torquePIDs;
138 std::string nodeSetName;
149 float avoidJointLimitsKp,
150 NJointCartesianVelocityControllerMode::CartesianSelection mode,
151 const Ice::Current&)
override;
152 void setTorqueKp(
const StringFloatDictionary& torqueKp,
const Ice::Current&)
override;
154 const Ice::Current&)
override;
#define TYPEDEF_PTRS_HANDLE(T)
VirtualRobot::IKSolver::CartesianSelection mode
std::vector< float > torqueKd
std::vector< float > torqueKp
std::vector< float > nullspaceJointVelocities
The NJointCartesianVelocityController class.
void setTorqueKp(const StringFloatDictionary &torqueKp, const Ice::Current &) override
static NJointCartesianVelocityControllerMode::CartesianSelection IceModeFromString(const std::string mode)
static WidgetDescription::WidgetPtr GenerateConfigDescription(const VirtualRobot::RobotPtr &, const std::map< std::string, ConstControlDevicePtr > &, const std::map< std::string, ConstSensorDevicePtr > &)
void setNullspaceJointVelocities(const StringFloatDictionary &nullspaceJointVelocities, const Ice::Current &) override
WidgetDescription::StringWidgetDictionary getFunctionDescriptions(const Ice::Current &) const override
NJointCartesianVelocityController(RobotUnit *prov, const NJointCartesianVelocityControllerConfigPtr &config, const VirtualRobot::RobotPtr &)
NJointCartesianVelocityController(RobotUnitPtr prov, NJointCartesianVelocityControllerConfigPtr config, const VirtualRobot::RobotPtr &r)
WidgetDescription::HBoxLayoutPtr createJointSlidersLayout(float min, float max, float defaultValue) const
std::string getNodeSetName() const
static NJointCartesianVelocityControllerConfigPtr GenerateConfigFromVariants(const StringVariantBaseMap &values)
static VirtualRobot::IKSolver::CartesianSelection ModeFromString(const std::string mode)
void setControllerTarget(float x, float y, float z, float roll, float pitch, float yaw, float avoidJointLimitsKp, NJointCartesianVelocityControllerMode::CartesianSelection mode, const Ice::Current &) override
NJointCartesianVelocityControllerConfigPtr ConfigPtrT
::armarx::WidgetDescription::WidgetSeq createSliders()
static VirtualRobot::IKSolver::CartesianSelection ModeFromIce(const NJointCartesianVelocityControllerMode::CartesianSelection mode)
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.
void setVelocities(float xVel, float yVel, float zVel, float rollVel, float pitchVel, float yawVel, VirtualRobot::IKSolver::CartesianSelection mode)
void setAvoidJointLimitsKp(float kp)
std::string getClassName(const Ice::Current &) const override
void callDescribedFunction(const std::string &name, const StringVariantBaseMap &valueMap, const Ice::Current &) override
void rtPreActivateController() override
This function is called before the controller is activated.
NJointControllerWithTripleBuffer(const NJointCartesianVelocityControllerControlData &initialCommands=NJointCartesianVelocityControllerControlData())
The RobotUnit class manages a robot and its controllers.
float update(float dt, float error)
std::shared_ptr< class Robot > RobotPtr
This file offers overloads of toIce() and fromIce() functions for STL container types.
std::shared_ptr< CartesianVelocityController > CartesianVelocityControllerPtr
std::map< std::string, VariantBasePtr > StringVariantBaseMap
std::vector< T > max(const std::vector< T > &v1, const std::vector< T > &v2)
IceUtil::Handle< class RobotUnit > RobotUnitPtr
std::vector< T > min(const std::vector< T > &v1, const std::vector< T > &v2)