libalmath  2.1.4.13
 All Classes Namespaces Functions Variables Typedefs Groups Pages
pidcontroller.h
1 /*
2  * Copyright (c) 2012-2014 Aldebaran Robotics. All rights reserved.
3  * Use of this source code is governed by a BSD-style license that can be
4  * found in the COPYING file.
5  */
6 
7 #ifndef _LIB_ALMATH_ALMATH_DSP_PIDCONTROLLER_H_
8 #define _LIB_ALMATH_ALMATH_DSP_PIDCONTROLLER_H_
9 
10 
11 namespace AL {
12 namespace Math {
13 
14 namespace DSP {
16 {
17 
18 public :
19  PIDController(void);
20 
21  PIDController(float pKp,
22  float pKv,
23  float pKi,
24  float pThreshold,
25  float pStaticOffset,
26  float pPeriod);
27 
28  ~PIDController();
29 
30  void initialize();
31 
32  void initialize(float pKp,
33  float pKv,
34  float pKi,
35  float pThreshold,
36  float pStaticOffset,
37  float pPeriod);
38 
39  float computeFeedback(float pCommand,
40  float pSensor,
41  float pPeriod = -1.0f);
42  float computeFeedbackAbsolute(float pAbsoluteErr);
43 
44 
45 private:
46  float fKp;
47  float fKv;
48  float fKi;
49 
50  float fPeriod;
51 
52  float fThreshold;
53  float fStaticOffset;
54 
55  float fErr;
56  float fPreviousErr;
57  float fdErr;
58  float fiErr;
59 
60  bool fFirstIteration;
61 
62  void xResetParameters(void);
63  void xCheckData(void) const;
64  void xCheckPositif(float pVal) const;
65  void xCheckStriclyPositif(float pVal) const;
66 };
67 }
68 }
69 }
70 #endif // _LIB_ALMATH_ALMATH_DSP_PIDCONTROLLER_H_