18 throw std::invalid_argument(std::string(
name) +
" must be finite and non-negative");
25template <
typename Derived>
28 throw std::invalid_argument(std::string(
name) +
" must contain only finite values");
38 throw std::invalid_argument(std::string(
name) +
" must contain only finite, non-negative values");
97 throw std::invalid_argument(
"friction.velocity_epsilon must be finite and positive");
105 for (
size_t i = 0;
i < 7;
i++) {
114 double joint_limit_activation_distance,
double joint_limit_stiffness,
double joint_limit_damping,
115 double joint_limit_max_torque) {
119 for (
size_t i = 0;
i < 7;
i++) {
125 double tau = joint_limit_stiffness * (std::exp(
penetration) - 1.0);
126 if (dq[
i] < 0.0)
tau += joint_limit_damping * (-dq[
i]);
130 double tau = -joint_limit_stiffness * (std::exp(
penetration) - 1.0);
131 if (dq[
i] > 0.0)
tau -= joint_limit_damping * dq[
i];
142 for (
int i = 0;
i < 7; ++
i) {
Definition dynamics_limit.cpp:8
std::array< double, dims > toStdD(const Eigen::Matrix< double, dims, 1 > &vector)
Definition util.hpp:18
Eigen::Vector< double, 7 > Vector7d
Definition types.hpp:11
void validateNonNegativeFinite(double value, const char *name)
Throw std::invalid_argument if value is negative or non-finite.
Definition torque_control_utils.hpp:16
Vector7d computeFrictionCompensation(const Vector7d &dq, const FrictionCompensationParams ¶ms)
Definition torque_control_utils.hpp:139
void validateFinite(const Eigen::MatrixBase< Derived > &values, const char *name)
Throw std::invalid_argument if any element of values is non-finite.
Definition torque_control_utils.hpp:26
Vector7d saturateTorqueRate(const Vector7d &tau_d_calculated, const Vector7d &tau_reference, double max_delta_tau)
Definition torque_control_utils.hpp:102
Vector7d computeJointLimitTorque(const Vector7d &q, const Vector7d &dq, const Vector7d &lower_joint_limits, const Vector7d &upper_joint_limits, double joint_limit_activation_distance, double joint_limit_stiffness, double joint_limit_damping, double joint_limit_max_torque)
Definition torque_control_utils.hpp:112
Definition torque_control_utils.hpp:66
Vector7d max_torque
Definition torque_control_utils.hpp:82
FrictionCompensationParams()=default
Vector7d viscous
Definition torque_control_utils.hpp:79
double velocity_epsilon
Definition torque_control_utils.hpp:85
void validate() const
Throw std::invalid_argument if any parameter is out of range.
Definition torque_control_utils.hpp:92
Vector7d coulomb
Definition torque_control_utils.hpp:76
FrictionCompensationParams(const Vector7d &coulomb, const Vector7d &viscous, const Vector7d &max_torque, double velocity_epsilon=0.03)
Definition torque_control_utils.hpp:69
Definition torque_control_utils.hpp:43
double joint_limit_max_torque
Definition torque_control_utils.hpp:63
double joint_limit_damping
Definition torque_control_utils.hpp:60
double max_delta_tau
Definition torque_control_utils.hpp:45
std::optional< Vector7d > lower_joint_limits
Definition torque_control_utils.hpp:48
double joint_limit_stiffness
Definition torque_control_utils.hpp:57
double joint_limit_activation_distance
Definition torque_control_utils.hpp:54
std::optional< Vector7d > upper_joint_limits
Definition torque_control_utils.hpp:51