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