27 #include <kdl/utilities/svd_eigen_HH.hpp> 35 jac(chain.getNrOfIndJoints()),
36 U(MatrixXd::Zero(6, chain.getNrOfIndJoints())),
37 S(VectorXd::Zero(chain.getNrOfIndJoints())),
38 V(MatrixXd::Zero(chain.getNrOfIndJoints(), chain.getNrOfIndJoints())),
41 tmp(VectorXd::Zero(chain.getNrOfIndJoints())),
42 tmp_jac(MatrixXd::Zero(6, chain.getNrOfJoints())),
43 tmp_jac_weight1(MatrixXd::Zero(6, chain.getNrOfIndJoints())),
44 tmp_jac_weight2(MatrixXd::Zero(6, chain.getNrOfIndJoints())),
45 tmp_ts(MatrixXd::Zero(6, 6)),
46 tmp_js(MatrixXd::Zero(chain.getNrOfIndJoints(), chain.getNrOfIndJoints())),
47 weight_ts(MatrixXd::Identity(6, 6)),
48 weight_js(MatrixXd::Identity(chain.getNrOfIndJoints(), chain.getNrOfIndJoints())),
102 Eigen::MatrixXd U_temp(6, 6);
107 U_temp =
U.topLeftCorner(6, 6);
111 U_temp.topLeftCorner(
U.rows(),
U.cols()) =
U;
122 for (j = 0; j <
jac.
rows(); j++)
126 sum +=
tmp_ts(j, i) * v_in(j);
133 if (
S(i) == 0 ||
S(i) <
eps)
Eigen::MatrixXd weight_ts
Eigen::MatrixXd getWeightTS()
~ChainIkSolverVel_wdls_coupling()
Eigen::MatrixXd tmp_jac_weight1
void updateCoupling(const JntArray &q)
int JntToJac(const JntArray &q_in, Jacobian &jac)
unsigned int columns() const
int svd_eigen_HH(const MatrixXd &A, MatrixXd &U, VectorXd &S, MatrixXd &V, VectorXd &tmp, int maxiter, double epsilon)
EIGEN_MAKE_ALIGNED_OPERATOR_NEW Eigen::Matrix< double, 6, Eigen::Dynamic > data
Eigen::MatrixXd weight_js
void setWeightTS(const Eigen::MatrixXd &Mx)
void setWeightJS(const Eigen::MatrixXd &Mq)
Eigen::MatrixXd tmp_jac_weight2
ChainJntToJacSolver_coupling jnt2jac
ChainIkSolverVel_wdls_coupling(const Chain_coupling &chain, double eps=0.00001, int maxiter=150)
Eigen::MatrixXd getWeightJS()
virtual int CartToJnt(const JntArray &q_in, const Twist &v_in, JntArray &qdot_out)
void setLambda(const double &lambda)
unsigned int rows() const