Torque.h
Go to the documentation of this file.
1 #pragma once
2 
3 
4 // control
8 
10 {
11 
12  class TorqueControllerConfiguration;
13  using TorqueControllerConfigurationPtr = std::shared_ptr<class TorqueControllerConfiguration>;
14 
16  {
17  public:
21  bool limitless,
22  float jointLimitLow,
23  float jointLimitHigh);
28  double pid_max_value;
29  double pid_min_value;
30  double pid_dis;
31  double Kd;
32  double inertia;
33  double scalePI;
34  double scaleTorque;
35  double maxTorque;
36  // double torqueToCurrent = 0.0; // for joint limit avoidance
38  bool limitless = true;
39  double jointLimitHigh = 0.0, jointLimitLow = 0.0;
40  std::vector<float> firFilterImpulseResponse;
41  };
42 
43  class TorquePID
44  {
45  public:
46  TorquePID();
47  void zeroize();
48  void findAcc(double Vel, double dt);
49  void update(double curr_error, double dt);
50  void updatePhi(double curr_pos_error, double dt);
51  void AbsVel(double curr_angle_err, double dt);
52  //void define_pid(PID* pid);
53  double windup_guard = 0;
54  double proportional_gain = 0;
55  double integral_gain = 0;
56  double derivative_gain = 0;
57  double prev_error = 0;
58  double prev_prev_error = 0;
59  double int_error = 0;
60  double control = 0;
61  double max_value = 0;
62  double min_value = 0;
63  double phi = 0;
64  double old_pos = 0;
65  double dis = 0;
66  double abs_vel = 0;
67  double prev_angle = 0;
68  double if_angle = 0;
69  double angle_offset = 0;
70  double CurrError = 0;
71  double SollMoment = 0;
72  double ii = 0;
73  double prev_vel = 0;
74  double acc = 0;
75  double Kd = 0;
76  double inertia = 0;
77  double scalePI = 0;
78  double scaleTorque = 0;
79  double maxTorque = 0;
81  bool status = false;
82  };
83 
85  {
86  public:
87  TorqueController(const TorqueControllerConfigurationPtr& torqueConfigData);
88  float update(const IceUtil::Time& timeSinceLastIteration,
89  const std::string& jointName,
90  float gravity,
91  float actualTorque,
92  float targetTorque,
93  float actualVelocity,
94  float actualPosition);
96  double calcJointLimitProtectionTorque(float actualPosition);
97 
98  private:
99  TorquePID pid;
103  };
104 
105 } // namespace armarx::control::joint_controller
armarx::control::joint_controller::TorquePID::scaleTorque
double scaleTorque
Definition: Torque.h:78
armarx::control::joint_controller::TorquePID::old_pos
double old_pos
Definition: Torque.h:64
armarx::control::joint_controller::TorqueControllerConfiguration::jointLimitLow
double jointLimitLow
Definition: Torque.h:39
armarx::control::joint_controller::TorquePID::SollMoment
double SollMoment
Definition: Torque.h:71
armarx::control::rt_filters::RtAverageFilter
Definition: AverageFilter.h:12
armarx::control::joint_controller::TorquePID::min_value
double min_value
Definition: Torque.h:62
armarx::control::joint_controller::TorquePID::update
void update(double curr_error, double dt)
Definition: Torque.cpp:62
armarx::control::joint_controller::TorquePID::updatePhi
void updatePhi(double curr_pos_error, double dt)
armarx::control::joint_controller::TorquePID::integral_gain
double integral_gain
Definition: Torque.h:55
armarx::control::joint_controller::TorqueControllerConfiguration::pid_derivative_gain
double pid_derivative_gain
Definition: Torque.h:26
armarx::control::joint_controller::TorquePID::windup_guard
double windup_guard
Definition: Torque.h:53
armarx::control::joint_controller::TorquePID::if_angle
double if_angle
Definition: Torque.h:68
armarx::control::joint_controller::TorquePID::derivative_gain
double derivative_gain
Definition: Torque.h:56
armarx::control::joint_controller::TorqueControllerConfiguration::CreateTorqueConfigData
static TorqueControllerConfigurationPtr CreateTorqueConfigData(hardware_config::Config &config, bool limitless, float jointLimitLow, float jointLimitHigh)
Definition: Torque.cpp:88
armarx::control::joint_controller::TorqueController::TorqueController
TorqueController(const TorqueControllerConfigurationPtr &torqueConfigData)
Definition: Torque.cpp:10
armarx::control::joint_controller::TorquePID::ii
double ii
Definition: Torque.h:72
FirFilter.h
armarx::control::joint_controller::TorquePID::prev_vel
double prev_vel
Definition: Torque.h:73
armarx::control::joint_controller::TorquePID::prev_angle
double prev_angle
Definition: Torque.h:67
armarx::control::joint_controller::TorqueControllerConfiguration::scalePI
double scalePI
Definition: Torque.h:33
armarx::control::joint_controller::TorqueControllerConfiguration::Kd
double Kd
Definition: Torque.h:31
ControllerConfiguration.h
armarx::control::joint_controller::TorquePID
Definition: Torque.h:43
armarx::control::joint_controller::TorquePID::prev_error
double prev_error
Definition: Torque.h:57
armarx::control::joint_controller::TorqueController::update
float update(const IceUtil::Time &timeSinceLastIteration, const std::string &jointName, float gravity, float actualTorque, float targetTorque, float actualVelocity, float actualPosition)
Definition: Torque.cpp:126
armarx::control::joint_controller::TorquePID::prev_prev_error
double prev_prev_error
Definition: Torque.h:58
armarx::control::joint_controller::TorquePID::AbsVel
void AbsVel(double curr_angle_err, double dt)
armarx::control::joint_controller::TorquePID::acc
double acc
Definition: Torque.h:74
armarx::control::joint_controller::TorqueControllerConfiguration::TorqueControllerConfiguration
TorqueControllerConfiguration()
Definition: Torque.cpp:121
armarx::control::joint_controller::TorquePID::scalePI
double scalePI
Definition: Torque.h:77
armarx::control::joint_controller::TorquePID::TorquePID
TorquePID()
Definition: Torque.cpp:36
armarx::control::joint_controller::TorqueControllerConfiguration::pid_min_value
double pid_min_value
Definition: Torque.h:29
armarx::control::joint_controller::TorqueController
Definition: Torque.h:84
armarx::control::joint_controller::TorqueControllerConfigurationPtr
std::shared_ptr< class TorqueControllerConfiguration > TorqueControllerConfigurationPtr
Definition: Torque.h:13
armarx::status
status
Definition: FiniteStateMachine.h:244
armarx::control::joint_controller::TorquePID::Kd
double Kd
Definition: Torque.h:75
armarx::control::joint_controller::TorqueControllerConfiguration::jointLimitHigh
double jointLimitHigh
Definition: Torque.h:39
armarx::control::joint_controller::TorqueControllerConfiguration::pid_integral_gain
double pid_integral_gain
Definition: Torque.h:25
armarx::control::joint_controller::TorqueControllerConfiguration::pid_dis
double pid_dis
Definition: Torque.h:30
armarx::control::joint_controller::TorqueController::getFilter
const armarx::control::rt_filters::FirFilter & getFilter() const
Definition: Torque.cpp:222
armarx::control::joint_controller::TorquePID::findAcc
void findAcc(double Vel, double dt)
Definition: Torque.cpp:55
armarx::armem::Time
armarx::core::time::DateTime Time
Definition: forward_declarations.h:13
armarx::control::joint_controller::TorqueController::calcJointLimitProtectionTorque
double calcJointLimitProtectionTorque(float actualPosition)
Definition: Torque.cpp:196
armarx::control::joint_controller::TorqueControllerConfiguration::maxTorque
double maxTorque
Definition: Torque.h:35
armarx::control::joint_controller::TorquePID::max_value
double max_value
Definition: Torque.h:61
armarx::control::joint_controller::TorquePID::zeroize
void zeroize()
Definition: Torque.cpp:42
armarx::control::joint_controller::TorquePID::inertia
double inertia
Definition: Torque.h:76
armarx::control::joint_controller::TorquePID::angle_offset
double angle_offset
Definition: Torque.h:69
armarx::control::joint_controller::TorquePID::maxTorque
double maxTorque
Definition: Torque.h:79
armarx::control::joint_controller::TorqueControllerConfiguration
Definition: Torque.h:15
armarx::control::joint_controller::TorqueControllerConfiguration::actuatorType
int actuatorType
Definition: Torque.h:37
armarx::control::joint_controller
Definition: ControllerConfiguration.cpp:3
AverageFilter.h
armarx::control::hardware_config::Config
The Config class is the base class of all specialized configurations that have a direct key -> value ...
Definition: Config.h:93
armarx::control::joint_controller::TorquePID::phi
double phi
Definition: Torque.h:63
armarx::control::joint_controller::TorqueControllerConfiguration::inertia
double inertia
Definition: Torque.h:32
armarx::control::joint_controller::TorquePID::CurrError
double CurrError
Definition: Torque.h:70
armarx::control::joint_controller::TorqueControllerConfiguration::pid_windup_guard
double pid_windup_guard
Definition: Torque.h:27
armarx::control::joint_controller::TorquePID::proportional_gain
double proportional_gain
Definition: Torque.h:54
armarx::control::joint_controller::TorquePID::actuatorType
int actuatorType
Definition: Torque.h:80
armarx::control::joint_controller::TorqueControllerConfiguration::scaleTorque
double scaleTorque
Definition: Torque.h:34
armarx::control::joint_controller::TorqueControllerConfiguration::limitless
bool limitless
Definition: Torque.h:38
armarx::control::joint_controller::TorqueControllerConfiguration::pid_max_value
double pid_max_value
Definition: Torque.h:28
control
This file is part of ArmarX.
armarx::control::joint_controller::TorquePID::abs_vel
double abs_vel
Definition: Torque.h:66
armarx::control::joint_controller::TorquePID::dis
double dis
Definition: Torque.h:65
armarx::control::joint_controller::TorquePID::int_error
double int_error
Definition: Torque.h:59
dt
constexpr T dt
Definition: UnscentedKalmanFilterTest.cpp:45
armarx::control::rt_filters::FirFilter
Definition: FirFilter.h:37
armarx::control::joint_controller::TorqueControllerConfiguration::pid_proportional_gain
double pid_proportional_gain
Definition: Torque.h:24
armarx::control::joint_controller::TorqueControllerConfiguration::firFilterImpulseResponse
std::vector< float > firFilterImpulseResponse
Definition: Torque.h:40