Go to the documentation of this file.
28 #include <Eigen/Dense>
30 #include <VirtualRobot/Robot.h>
34 #include <RobotAPI/interface/core/CartesianNaturalPositionControllerConfig.h>
46 class CartesianNaturalPositionController;
53 const VirtualRobot::RobotNodePtr& elbow,
54 float maxPositionAcceleration,
55 float maxOrientationAcceleration,
56 float maxNullspaceAcceleration,
57 const VirtualRobot::RobotNodePtr& tcp =
nullptr
61 static Eigen::VectorXf
LimitInfNormTo(
const Eigen::VectorXf& vec,
const std::vector<float>& maxValue);
67 void setFeedForwardVelocity(
const Eigen::Vector3f& feedForwardVelocityPos,
const Eigen::Vector3f& feedForwardVelocityOri);
91 void setConfig(
const CartesianNaturalPositionControllerConfig& cfg);
93 Eigen::VectorXf
actualTcpVel(
const Eigen::VectorXf& jointVel);
94 Eigen::VectorXf
actualElbVel(
const Eigen::VectorXf& jointVel);
126 VirtualRobot::RobotNodeSetPtr rns;
std::vector< float > maxNullspaceVelocity
std::shared_ptr< CartesianNaturalPositionController > CartesianNaturalPositionControllerPtr
void clearFeedForwardVelocity()
void clearNullspaceTarget()
bool autoClearFeedForward
CartesianPositionController pcElb
const Eigen::VectorXf calculate(float dt, VirtualRobot::IKSolver::CartesianSelection mode=VirtualRobot::IKSolver::All)
void setNullspaceTarget(const Eigen::VectorXf &nullspaceTarget)
const Eigen::VectorXf calculateNullspaceTargetDifference()
CartesianPositionController pcTcp
float jointLimitAvoidanceKp
float thresholdPositionNear
Eigen::Vector3f elbowTarget
const Eigen::Matrix4f & getCurrentTarget() const
void setConfig(const CartesianNaturalPositionControllerConfig &cfg)
const Eigen::Vector3f & getCurrentElbowTarget() const
float thresholdOrientationNear
void setNullSpaceControl(bool enabled)
static Eigen::VectorXf LimitInfNormTo(const Eigen::VectorXf &vec, const std::vector< float > &maxValue)
void setTarget(const Eigen::Matrix4f &tcpTarget, const Eigen::Vector3f &elbowTarget)
Eigen::Vector6f cartesianVelocity
Eigen::VectorXf actualElbVel(const Eigen::VectorXf &jointVel)
Eigen::Vector6f feedForwardVelocity
bool isTargetReached() const
CartesianVelocityController vcElb
bool isTargetNear() const
std::vector< float > maxJointVelocity
const Eigen::VectorXf & getCurrentNullspaceTarget() const
float getOrientationError() const
float thresholdOrientationReached
CartesianVelocityControllerWithRamp vcTcp
float jointLimitAvoidanceScale
const Eigen::Vector3f getCurrentTargetPosition() const
Eigen::Matrix4f tcpTarget
Eigen::VectorXf lastJointVelocity
MatrixXX< 4, 4, float > Matrix4f
bool hasNullspaceTarget() const
std::string getStatusText()
float getPositionError() const
float thresholdPositionReached
CartesianNaturalPositionController(const VirtualRobot::RobotNodeSetPtr &rns, const VirtualRobot::RobotNodePtr &elbow, float maxPositionAcceleration, float maxOrientationAcceleration, float maxNullspaceAcceleration, const VirtualRobot::RobotNodePtr &tcp=nullptr)
void setFeedForwardVelocity(const Eigen::Vector6f &feedForwardVelocity)
Eigen::VectorXf actualTcpVel(const Eigen::VectorXf &jointVel)
bool nullSpaceControlEnabled
This file offers overloads of toIce() and fromIce() functions for STL container types.
Eigen::VectorXf nullspaceTarget