34 Eigen::MatrixXd particular_solution = damped_pinv * in_cart_velocities;
38 Eigen::MatrixXd ident = Eigen::MatrixXd::Identity(pinv.rows(), this->
jacobian_data_.cols());
41 Eigen::MatrixXd homogeneous_solution = Eigen::MatrixXd::Zero(particular_solution.rows(), particular_solution.cols());
47 (*it)->update(joint_states, predict_jnts_vel, this->jacobian_data_);
48 Eigen::VectorXd q_dot_0 = (*it)->getPartialValues();
49 Eigen::MatrixXd tmp_projection = projector * q_dot_0;
50 double activation_gain = (*it)->getActivationGain();
51 double constraint_k_H = (*it)->getSelfMotionMagnitude(particular_solution, tmp_projection);
52 homogeneous_solution += (constraint_k_H * activation_gain * tmp_projection);
55 Eigen::MatrixXd qdots_out = particular_solution + this->
params_.
k_H * homogeneous_solution;
unsigned int rows() const
boost::shared_ptr< DampingBase > damping_
References the current Jacobian (matrix data only).
Eigen::Matrix< double, 6, 1 > Vector6d_t
Matrix6Xd_t jacobian_data_
References the limiter parameters (up-to-date according to KinematicExtension).
virtual Eigen::MatrixXd solve(const Vector6d_t &in_cart_velocities, const JointStates &joint_states)
PInvBySVD pinv_calc_
The currently set damping method.
const TwistControllerParams & params_
Set of constraints.
std::set< ConstraintBase_t > constraints_
set inserts sorted (default less operator); if element has already been added it returns an iterator ...
virtual Eigen::MatrixXd calculate(const Eigen::MatrixXd &jacobian) const
#define ROS_DEBUG_STREAM(args)