Torque.h
Go to the documentation of this file.
1#pragma once
2
3
4// control
8
10{
11
13 using TorqueControllerConfigurationPtr = std::shared_ptr<class TorqueControllerConfiguration>;
14
16 {
17 public:
21 bool limitless,
22 float jointLimitLow,
23 float jointLimitHigh);
30 double pid_dis;
31 double Kd;
32 double inertia;
33 double scalePI;
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
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;
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:
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
constexpr T dt
The Config class is the base class of all specialized configurations that have a direct key -> value ...
Definition Config.h:94
static TorqueControllerConfigurationPtr CreateTorqueConfigData(hardware_config::Config &config, bool limitless, float jointLimitLow, float jointLimitHigh)
Definition Torque.cpp:88
const armarx::control::rt_filters::FirFilter & getFilter() const
Definition Torque.cpp:222
float update(const IceUtil::Time &timeSinceLastIteration, const std::string &jointName, float gravity, float actualTorque, float targetTorque, float actualVelocity, float actualPosition)
Definition Torque.cpp:126
TorqueController(const TorqueControllerConfigurationPtr &torqueConfigData)
Definition Torque.cpp:10
double calcJointLimitProtectionTorque(float actualPosition)
Definition Torque.cpp:196
void update(double curr_error, double dt)
Definition Torque.cpp:62
void updatePhi(double curr_pos_error, double dt)
void findAcc(double Vel, double dt)
Definition Torque.cpp:55
void AbsVel(double curr_angle_err, double dt)
std::shared_ptr< class TorqueControllerConfiguration > TorqueControllerConfigurationPtr
Definition Torque.h:13
This file is part of ArmarX.