-
Notifications
You must be signed in to change notification settings - Fork 4
/
BoucWenHysteresisModel.hpp
86 lines (73 loc) · 2.13 KB
/
BoucWenHysteresisModel.hpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
/*
* =====================================================================================
*
* Filename: bouc_wen_model.h
*
* Description: Class definition of bouc wen hysterisis model
*
* Version: 1.0
* Created: 10/16/09 15:37:47
* Revision: none
* Compiler: gcc
*
* Author: Ajish Babu (), ajish.babu@dfki.de
* Company: DFKI
*
* =====================================================================================
*/
#ifndef BOUC_WEN_HYSTERESIS_MODEL_H
#define BOUC_WEN_HYSTERESIS_MODEL_H
#include <math.h>
#include "motor_controller/RK4Integrator.hpp"
#include "iostream"
namespace hysteresis_model
{
class BoucWenModel : public motor_controller::RK4_SIM
{
public:
BoucWenModel(double samp_time = 0.001, int _simulation_per_cycle = 1,
double _initial_time = 0.0, double *_initial_state = NULL);
~BoucWenModel() {};
double sampling_period;
int simulation_per_cycle;
inline void DERIV(const double t, const double *x,
const double *u, double *xdot);
bool getStress (double currTime, double strain, double& strainVel, double& stress);
void reset(double initTime = 0.0) {
init_param( (sampling_period/((double)simulation_per_cycle)),
initTime, NULL);
};
void setParameters(double* const p);
void setParameters(
double _A,
double _beta,
double _gamma,
double _n,
double _a,
double _ki,
double _gearPlay,
double _deflectionOffset,
double _dampingConstant,
double _velocitySmoothFactor);
void getParameters(double *p) const;
void printParameters() const;
private:
double A;
double beta;
double gamma;
double n;
double a;
double ki;
double gearPlay;
double deflectionOffset;
double dampingConstant;
double velocitySmoothFactor;
double torqueGearPlay;
double torque;
double prevTime;
double prevStrain;
double prevStrainVel;
bool firstRun;
};
}
#endif