28 Eigen::JacobiSVD<Eigen::MatrixXd> svd(this->
jacobian_data_, Eigen::ComputeThinU | Eigen::ComputeThinV);
30 Eigen::MatrixXd J_T=J.transpose();
31 Eigen::MatrixXd U=svd.matrixU();
32 Eigen::MatrixXd U_T =U.transpose();
36 Eigen::MatrixXd Wt=Q*svd.matrixV();
37 Eigen::MatrixXd Wt_T=Wt.transpose();
60 Eigen::MatrixXd J_robust=J*Wt*Wt_T*J_T;
62 Eigen::MatrixXd qdots_out =Wt*Wt_T*J_T*pinv*in_cart_velocities;
73 Eigen::VectorXd q_dot = Jinv * in_cart_velocities;
78 Eigen::VectorXd weighting = Eigen::VectorXd::Zero(cols);
79 Eigen::VectorXd weighting_pos = Eigen::VectorXd::Zero(cols);
80 Eigen::VectorXd weighting_speed = Eigen::VectorXd::Zero(cols);
88 for (uint32_t i = 0; i < cols ; ++i)
91 weighting(i) = (1.0/(1.0+
exp(-(q(i)-limits_min[i]-delta_pos)/sigma)))*(1.0/(1.0+
exp((q(i)-limits_max[i]+delta_pos)/sigma)))+(1.0/(1.0+
exp((q(i)*q_dot(i)+delta_speed)*sigma_speed)));
94 ROS_WARN(
"Joint %i tolerance distance to minimum position %f not respected",i,(fabs(q(i)-limits_min[i])));
97 ROS_WARN(
"Joint %i tolerance distance to maximum position %f not respected",i,(fabs(q(i)-limits_max[i])));
99 if( (fabs(q(i)-limits_min[i])<0.0)){
100 ROS_ERROR(
"Joint %i distance to minimum position %f not respected",i,(fabs(q(i)-limits_min[i])));
102 if( (fabs(q(i)-limits_max[i])<0.0)){
103 ROS_ERROR(
"Joint %i distance to maximum position %f not respected",i,(fabs(q(i)-limits_max[i])));
106 if(weighting(i)>1.0){
111 return weighting.asDiagonal();
std::vector< double > limits_min
const LimiterParams & limiter_params_
References the inv. diff. kin. solver parameters.
boost::shared_ptr< DampingBase > damping_
References the current Jacobian (matrix data only).
virtual Eigen::MatrixXd calculateWeighting(const Vector6d_t &in_cart_velocities, const JointStates &joint_states) const
Eigen::Matrix< double, 6, 1 > Vector6d_t
Matrix6Xd_t jacobian_data_
References the limiter parameters (up-to-date according to KinematicExtension).
PInvBySVD pinv_calc_
The currently set damping method.
virtual Eigen::MatrixXd solve(const Vector6d_t &in_cart_velocities, const JointStates &joint_states)
const TwistControllerParams & params_
Set of constraints.
virtual Eigen::MatrixXd calculate(const Eigen::MatrixXd &jacobian) const
INLINE Rall1d< T, V, S > exp(const Rall1d< T, V, S > &arg)
std::vector< double > limits_max
UJSSolverParams ujs_solver_params
LimiterParams limiter_params