28#include <SimoxUtility/math/distance/delta_angle.h>
29#include <VirtualRobot/VirtualRobot.h>
83 const VirtualRobot::RobotNodePtr&
tcp,
84 const Eigen::Matrix4f&
target,
85 VirtualRobot::IKSolver::CartesianSelection
mode);
87 VirtualRobot::RobotNodePtr
tcp;
89 VirtualRobot::IKSolver::CartesianSelection
mode;
105 const Eigen::VectorXf&
target,
106 const Eigen::VectorXf&
weight);
109 void set(
const VirtualRobot::RobotNodePtr& rn,
float target,
float weight);
111 VirtualRobot::RobotNodeSetPtr
rns;
125 const Eigen::VectorXf&
weight);
132 VirtualRobot::RobotNodeSetPtr
rns;
151 Target(
const VirtualRobot::RobotNodeSetPtr& rns,
152 const VirtualRobot::RobotNodePtr&
tcp,
153 const Eigen::Matrix4f&
target,
154 VirtualRobot::IKSolver::CartesianSelection
mode);
155 VirtualRobot::RobotNodePtr
tcp;
157 VirtualRobot::IKSolver::CartesianSelection
mode;
199 static Eigen::VectorXf
LimitInfNormTo(Eigen::VectorXf vec,
float maxValue);
205 const Eigen::Matrix4f& target,
206 VirtualRobot::IKSolver::CartesianSelection mode);
210 const Eigen::Vector3f& target);
221 VirtualRobot::RobotNodeSetPtr rns;
222 std::vector<TargetPtr> targets;
223 std::vector<NullspaceGradientPtr> nullspaceGradients;
224 VirtualRobot::DifferentialIKPtr ik;
virtual void init(Parameters ¶ms)=0
virtual Eigen::VectorXf getGradient(Parameters ¶ms)=0
virtual ~NullspaceGradient()=default
void setWeight(int index, float weight)
Eigen::VectorXf getGradient(Parameters ¶ms) override
void setWeights(const VirtualRobot::RobotNodeSetPtr &rns, float weight)
void init(Parameters &) override
NullspaceJointLimitAvoidance(const VirtualRobot::RobotNodeSetPtr &rns)
VirtualRobot::RobotNodeSetPtr rns
Eigen::VectorXf getGradient(Parameters ¶ms) override
NullspaceJointTarget(const VirtualRobot::RobotNodeSetPtr &rns)
void set(int index, float target, float weight)
void init(Parameters &) override
VirtualRobot::RobotNodeSetPtr rns
NullspaceTarget(const VirtualRobot::RobotNodeSetPtr &rns, const VirtualRobot::RobotNodePtr &tcp, const Eigen::Matrix4f &target, VirtualRobot::IKSolver::CartesianSelection mode)
Eigen::VectorXf getGradient(Parameters ¶ms) override
void init(Parameters &) override
VirtualRobot::IKSolver::CartesianSelection mode
std::vector< NullspaceTargetStep > ikSteps
CartesianVelocityController vCtrl
CartesianPositionController pCtrl
VirtualRobot::RobotNodePtr tcp
Target(const VirtualRobot::RobotNodeSetPtr &rns, const VirtualRobot::RobotNodePtr &tcp, const Eigen::Matrix4f &target, VirtualRobot::IKSolver::CartesianSelection mode)
VirtualRobot::IKSolver::CartesianSelection mode
Eigen::Matrix4f getPoseError() const
std::vector< TargetStep > ikSteps
CartesianPositionController pCtrl
Eigen::Vector3f getPosError() const
VirtualRobot::RobotNodePtr tcp
int CartesianSelectionToSize(VirtualRobot::IKSolver::CartesianSelection mode)
Result solve(Parameters params)
static Eigen::MatrixXf CalculateNullspaceLU(const Eigen::Matrix4f &jacobi)
std::shared_ptr< class NullspaceGradient > NullspaceGradientPtr
void addTarget(const TargetPtr &target)
std::shared_ptr< class NullspaceJointTarget > NullspaceJointTargetPtr
std::shared_ptr< class NullspaceJointLimitAvoidance > NullspaceJointLimitAvoidancePtr
static Eigen::MatrixXf CalculateNullspaceSVD(const Eigen::Matrix4f &jacobi)
NullspaceTargetPtr addNullspacePositionTarget(const VirtualRobot::RobotNodePtr &tcp, const Eigen::Vector3f &target)
std::shared_ptr< class NullspaceTarget > NullspaceTargetPtr
void addNullspaceGradient(const NullspaceGradientPtr &gradient)
void step(Parameters ¶ms, SolveState &s, int stepNr)
CompositeDiffIK(const VirtualRobot::RobotNodeSetPtr &rns)
static Eigen::VectorXf LimitInfNormTo(Eigen::VectorXf vec, float maxValue)
std::shared_ptr< Target > TargetPtr
This file offers overloads of toIce() and fromIce() functions for STL container types.
std::shared_ptr< class CompositeDiffIK > CompositeDiffIKPtr
Eigen::VectorXf cartesianVel
float jointRegularizationTranslation
float jointRegularizationRotation
Eigen::Vector3f posDiffElbow
Eigen::VectorXf jointLimitMargins
float minimumJointLimitMargin
Eigen::VectorXf jointValues
Eigen::Vector3f elbowPosDiff
Eigen::VectorXf jointRegularization
Eigen::VectorXf jointValues
Eigen::MatrixXf nullspace
Eigen::VectorXf cartesianRegularization
Eigen::VectorXf cartesianVel