Statistics
| Branch: | Tag: | Revision:

amiro-os / devices / DiWheelDrive / linefollow2.hpp @ 22b85da1

History | View | Annotate | Download (802 Bytes)

1
#ifndef AMIRO_LINEFOLLOWING_H
2
#define AMIRO_LINEFOLLOWING_H
3

    
4
#include <ch.hpp>
5

    
6
#include <amiroosconf.h>
7

    
8
namespace amiro {
9

    
10
class LineFollow
11
{
12
public:
13
  void printSensorData();
14
  void stableFollow(int vcnl4020Proximity[4], int (&rpmFuzzyCtrl)[2], Global *global);
15
  float SetPoint = 0x4000; // (0x1800+0x2800) >> 8
16
  float Kp = 0.001;
17
  float Ki = 0.00001;
18
  float Kd = 0.5;
19
  int accSum = 0;
20
  float oldError = 0;
21
  int biggestDiff = 0;
22
  Global *global;
23
  LineFollow(Global *global);
24
  // void calibrateZiegler(float KCrit, int rpmSpeed[2]);
25
  int followLeftEdge(int rpmSpeed[2]);
26
  int followRightEdge(int rpmSpeed[2]);
27

    
28
  private:
29
    int delta();
30
    int getError();
31
    int getPidCorrectionSpeed();
32

    
33
    char whiteFlag = 0;
34
    
35

    
36
};
37

    
38
} // end of namespace amiro
39

    
40
#endif // AMIRO_LINEFOLLOWING_H