4#include <Eigen/Eigenvalues>
53 gains.topLeftCorner<3, 3>() = translational * Eigen::Matrix3d::Identity();
54 gains.bottomRightCorner<3, 3>() = rotational * Eigen::Matrix3d::Identity();
61 Eigen::SelfAdjointEigenSolver<Matrix6d> solver(stiffness);
62 return 2.0 * solver.operatorSqrt();
74 double translational_stiffness,
double rotational_stiffness,
75 std::optional<double> translational_damping = std::nullopt,
76 std::optional<double> rotational_damping = std::nullopt) {
79 if (translational_damping.has_value() || rotational_damping.has_value()) {
81 translational_damping.value_or(2.0 * std::sqrt(translational_stiffness)),
82 rotational_damping.value_or(2.0 * std::sqrt(rotational_stiffness)));
97 std::optional<Matrix6d>
damping{std::nullopt};
114 std::optional<double>
max_torque = std::nullopt)
120 std::optional<double>
max_torque = std::nullopt)
142 std::optional<Vector7d>
damping{std::nullopt};
199 std::optional<Matrix6d>
damping{std::nullopt};
247 gains_handle_.set(gains);
277 double gains_time_constant_;
289 std::optional<Matrix6d> critical_damping_stiffness_;
Base class for client-side cartesian impedance motions.
Definition cartesian_impedance_base.hpp:189
const Params & base_params() const
Definition cartesian_impedance_base.hpp:266
const Affine & target() const
Definition cartesian_impedance_base.hpp:243
void setNullspaceGains(const NullspaceGains &gains)
Definition cartesian_impedance_base.hpp:251
Affine target_
Definition cartesian_impedance_base.hpp:268
CartesianImpedanceGains getGains() const
Definition cartesian_impedance_base.hpp:249
franka::Torques computeCommand(const RobotState &robot_state, const CartesianReference &reference, double dt)
Definition cartesian_impedance_base.cpp:195
void setGains(const CartesianImpedanceGains &gains)
Definition cartesian_impedance_base.hpp:245
NullspaceGains getNullspaceGains() const
Definition cartesian_impedance_base.hpp:252
Base class for motions.
Definition motion.hpp:25
Wait-free, Single-Producer Single-Consumer (SPSC) triple buffer.
Definition wait_free_triple_buffer.hpp:17
Definition dynamics_limit.cpp:8
Matrix6d defaultCartesianImpedanceDamping(const Matrix6d &stiffness)
Definition cartesian_impedance_base.hpp:60
Eigen::Vector< double, 7 > Vector7d
Definition types.hpp:11
std::variant< PostureTask, ManipulabilityTask > NullspaceTask
Definition cartesian_impedance_base.hpp:167
Eigen::Matrix< double, 6, 6 > Matrix6d
Definition types.hpp:14
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
Eigen::Vector< double, 6 > Vector6d
Definition types.hpp:10
Matrix6d cartesianGainBlocks(double translational, double rotational)
Definition cartesian_impedance_base.hpp:51
Matrix6d defaultCartesianImpedanceStiffness()
Definition cartesian_impedance_base.hpp:58
Eigen::Affine3d Affine
Definition types.hpp:16
Parameters for the impedance motion.
Definition cartesian_impedance_base.hpp:194
std::array< std::optional< double >, 6 > force_constraints
Definition cartesian_impedance_base.hpp:219
std::optional< Matrix6d > damping
Definition cartesian_impedance_base.hpp:199
Eigen::Vector3d translational_error_clip
Definition cartesian_impedance_base.hpp:208
void validate() const
Throw std::invalid_argument if any parameter is out of range.
Definition cartesian_impedance_base.hpp:236
TorqueSafetyParams safety
Definition cartesian_impedance_base.hpp:230
FrictionCompensationParams friction
Definition cartesian_impedance_base.hpp:233
std::vector< NullspaceTask > nullspace_tasks
Definition cartesian_impedance_base.hpp:227
Eigen::Vector3d rotational_error_clip
Definition cartesian_impedance_base.hpp:216
Matrix6d stiffness
Definition cartesian_impedance_base.hpp:196
Definition cartesian_impedance_base.hpp:65
std::optional< Matrix6d > damping
Definition cartesian_impedance_base.hpp:97
Matrix6d stiffness
Definition cartesian_impedance_base.hpp:96
CartesianImpedanceGains(Matrix6d stiffness, std::optional< Matrix6d > damping=std::nullopt)
Definition cartesian_impedance_base.hpp:68
static CartesianImpedanceGains diagonal(const Vector6d &stiffness, std::optional< Vector6d > damping=std::nullopt)
Definition cartesian_impedance_base.hpp:88
void validate() const
Throw std::invalid_argument if any gain is non-finite.
Definition cartesian_impedance_base.hpp:100
static CartesianImpedanceGains isotropic(double translational_stiffness, double rotational_stiffness, std::optional< double > translational_damping=std::nullopt, std::optional< double > rotational_damping=std::nullopt)
Definition cartesian_impedance_base.hpp:73
CartesianImpedanceGains()=default
Cartesian impedance reference expressed in the base frame.
Definition cartesian_impedance_base.hpp:23
std::optional< TwistAcceleration > target_acceleration
Definition cartesian_impedance_base.hpp:41
void validate() const
Throw std::invalid_argument if any value is non-finite.
Definition cartesian_impedance_base.hpp:44
Affine target
Definition cartesian_impedance_base.hpp:25
std::optional< Twist > target_twist
Definition cartesian_impedance_base.hpp:33
Definition torque_control_utils.hpp:66
void validate() const
Throw std::invalid_argument if any parameter is out of range.
Definition torque_control_utils.hpp:92
Manipulability maximization objective projected into the Cartesian nullspace.
Definition cartesian_impedance_base.hpp:151
ManipulabilityTask(double gain, double damping=0.0, std::optional< double > max_torque=std::nullopt)
Definition cartesian_impedance_base.hpp:154
ManipulabilityTask()=default
std::optional< double > max_torque
Definition cartesian_impedance_base.hpp:164
double gain
Definition cartesian_impedance_base.hpp:158
double damping
Definition cartesian_impedance_base.hpp:161
Runtime-adjustable gains for a nullspace task.
Definition cartesian_impedance_base.hpp:172
std::optional< double > posture_max_torque
Definition cartesian_impedance_base.hpp:175
Vector7d posture_stiffness
Definition cartesian_impedance_base.hpp:173
std::optional< Vector7d > posture_damping
Definition cartesian_impedance_base.hpp:174
double manipulability_gain
Definition cartesian_impedance_base.hpp:177
double manipulability_damping
Definition cartesian_impedance_base.hpp:178
std::optional< double > manipulability_max_torque
Definition cartesian_impedance_base.hpp:179
Joint-posture objective projected into the Cartesian nullspace.
Definition cartesian_impedance_base.hpp:109
Vector7d target
Definition cartesian_impedance_base.hpp:126
PostureTask(const Vector7d &target, double stiffness, std::optional< double > damping=std::nullopt, std::optional< double > max_torque=std::nullopt)
Definition cartesian_impedance_base.hpp:118
std::optional< Vector7d > damping
Definition cartesian_impedance_base.hpp:142
Vector7d stiffness
Definition cartesian_impedance_base.hpp:135
std::optional< double > max_torque
Definition cartesian_impedance_base.hpp:145
PostureTask(const Vector7d &target, const Vector7d &stiffness, std::optional< Vector7d > damping=std::nullopt, std::optional< double > max_torque=std::nullopt)
Definition cartesian_impedance_base.hpp:112
Full state of the robot.
Definition robot_state.hpp:40
Definition torque_control_utils.hpp:43