Control Libraries 7.4.0
Loading...
Searching...
No Matches
CompliantTwist.hpp
1#pragma once
2
3#include "controllers/IController.hpp"
4#include "controllers/impedance/Dissipative.hpp"
5#include "controllers/impedance/VelocityImpedance.hpp"
6#include "state_representation/parameters/Parameter.hpp"
7
8namespace controllers::impedance {
17class CompliantTwist : public IController<state_representation::CartesianState> {
18
19public:
20
25 explicit CompliantTwist(
26 const std::list<std::shared_ptr<state_representation::ParameterInterface>>& parameters
27 );
28
37 double linear_principle_damping, double linear_orthogonal_damping, double angular_stiffness,
38 double angular_damping
39 );
40
49 const state_representation::CartesianState& desired_state,
50 const state_representation::CartesianState& feedback_state
51 ) override;
52
53protected:
54
59 void validate_and_set_parameter(const std::shared_ptr<state_representation::ParameterInterface>& parameter) override;
60
65 void set_linear_principle_damping(double linear_principle_damping);
66
71 void set_linear_orthogonal_damping(double linear_orthogonal_damping);
72
78 void set_linear_gains(double linear_principle_damping, double linear_orthogonal_damping);
79
84 void set_angular_stiffness(double angular_stiffness);
85
90 void set_angular_damping(double angular_damping);
91
97 void set_angular_gains(double angular_stiffness, double angular_damping);
98
99 std::shared_ptr<state_representation::Parameter<double>>
101 std::shared_ptr<state_representation::Parameter<double>>
103 std::shared_ptr<state_representation::Parameter<double>> angular_stiffness_;
104 std::shared_ptr<state_representation::Parameter<double>> angular_damping_;
105
108};
109
110}// namespace controllers
Abstract class to define a controller in a desired state type, such as joint or Cartesian spaces.
A concrete controller class specifically for controlling 6 degree of freedom Cartesian twist with a c...
std::shared_ptr< state_representation::Parameter< double > > angular_stiffness_
stiffness of angular displacement
void set_linear_orthogonal_damping(double linear_orthogonal_damping)
Setter of the linear orthogonal damping.
void set_linear_principle_damping(double linear_principle_damping)
Setter of the linear principle damping.
Dissipative< state_representation::CartesianState > dissipative_ctrl_
controller for linear space
std::shared_ptr< state_representation::Parameter< double > > angular_damping_
damping of angular velocity error
void set_angular_stiffness(double angular_stiffness)
Setter of the angular stiffness.
std::shared_ptr< state_representation::Parameter< double > > linear_principle_damping_
damping along principle eigenvector of linear velocity error
VelocityImpedance< state_representation::CartesianState > velocity_impedance_ctrl_
controller for angular space
void set_linear_gains(double linear_principle_damping, double linear_orthogonal_damping)
Setter of the linear damping values.
void set_angular_gains(double angular_stiffness, double angular_damping)
Setter of the angular damping.
state_representation::CartesianState compute_command(const state_representation::CartesianState &desired_state, const state_representation::CartesianState &feedback_state) override
Compute the force (task space) or torque (joint space) command based on the input state of the system...
std::shared_ptr< state_representation::Parameter< double > > linear_orthogonal_damping_
damping along secondary eigenvectors of linear velocity error
void set_angular_damping(double angular_damping)
Setter of the angular damping.
void validate_and_set_parameter(const std::shared_ptr< state_representation::ParameterInterface > &parameter) override
Validate and set parameters for controller gains.
Definition of a dissipative impedance controller (PassiveDS) in task space.
A velocity impedance is a normal impedance controller that only uses velocity input and integrates it...
Class to represent a state in Cartesian space.