NHK2017 octopus robot

Dependencies:   2017NHKpin_config mbed FEP ikarashiMDC PID jy901 omni HMC6352 omni_wheel

Fork of KANI2017v2 by NagaokaRoboticsClub_mbedTeam

Committer:
number_key
Date:
Wed Oct 25 03:25:06 2017 +0900
Revision:
26:7258d5ad0bff
Parent:
24:9a4ca5442717
no message

Who changed what in which revision?

UserRevisionLine numberNew contents of line
UCHITAKE 6:590c9622ecf1 1 /**
UCHITAKE 6:590c9622ecf1 2 * @file PID_controller.h
UCHITAKE 6:590c9622ecf1 3 * @brief コンパスセンサを使ったPIDコントローラ
number_key 26:7258d5ad0bff 4 *
number_key 26:7258d5ad0bff 5 * Example :
number_key 26:7258d5ad0bff 6 * @code
number_key 26:7258d5ad0bff 7 * #include "mbed.h"
number_key 26:7258d5ad0bff 8 * #include "PID_controller.h"
number_key 26:7258d5ad0bff 9 *
number_key 26:7258d5ad0bff 10 * PIDC pidc;
number_key 26:7258d5ad0bff 11 *
number_key 26:7258d5ad0bff 12 * int main()
number_key 26:7258d5ad0bff 13 * {
number_key 26:7258d5ad0bff 14 * while(1) {
number_key 26:7258d5ad0bff 15 * pidc.confirm();
number_key 26:7258d5ad0bff 16 * pc.printf("Hi, %f\r\n", pid.getCo());
number_key 26:7258d5ad0bff 17 * }
number_key 26:7258d5ad0bff 18 * }
number_key 26:7258d5ad0bff 19 * @endcode
UCHITAKE 6:590c9622ecf1 20 */
UCHITAKE 6:590c9622ecf1 21 #ifndef PID_CONTROLLER_H
UCHITAKE 6:590c9622ecf1 22 #define PID_CONTROLLER_H
UCHITAKE 6:590c9622ecf1 23
UCHITAKE 6:590c9622ecf1 24 #include "mbed.h"
UCHITAKE 6:590c9622ecf1 25 #include "pin_config.h"
UCHITAKE 6:590c9622ecf1 26
UCHITAKE 6:590c9622ecf1 27 #include "PID.h"
number_key 26:7258d5ad0bff 28 #include "HMC6352.h"
number_key 26:7258d5ad0bff 29 const double KC = 9.0;
number_key 22:682cc376da6f 30 const double TI = 0.0;
number_key 26:7258d5ad0bff 31 const double TD = 0.00008;
number_key 24:9a4ca5442717 32 const float INTERVAL = 0.01;
number_key 26:7258d5ad0bff 33 const float INPUT_LIMIT = 360.0;
number_key 22:682cc376da6f 34 const float OUTPUT_LIMIT = 0.4;
number_key 22:682cc376da6f 35 const float BIAS = 0.0;
number_key 26:7258d5ad0bff 36 const int SENSED_THRESHOLD = 1800;
UCHITAKE 6:590c9622ecf1 37 /**
UCHITAKE 6:590c9622ecf1 38 * @brief コンパスセンサを使ったPIDコントローラ
UCHITAKE 6:590c9622ecf1 39 */
number_key 26:7258d5ad0bff 40 class PIDC : public PID, HMC6352, Ticker
UCHITAKE 6:590c9622ecf1 41 {
UCHITAKE 6:590c9622ecf1 42 public :
UCHITAKE 6:590c9622ecf1 43 /**
uchitake 19:41f7dd1a5ed1 44 * @brief defaultコンストラクタ,タイマ割り込みでの計算開始
UCHITAKE 6:590c9622ecf1 45 */
UCHITAKE 6:590c9622ecf1 46 PIDC();
uchitake 19:41f7dd1a5ed1 47
uchitake 19:41f7dd1a5ed1 48 /**
uchitake 19:41f7dd1a5ed1 49 * @brief コンストラクタ
uchitake 19:41f7dd1a5ed1 50 * @param sda sda HMC6352
uchitake 19:41f7dd1a5ed1 51 * @param scl scl HMC6352
uchitake 19:41f7dd1a5ed1 52 * @param kc KC
uchitake 19:41f7dd1a5ed1 53 * @param ti TI
uchitake 19:41f7dd1a5ed1 54 * @param td TD
uchitake 19:41f7dd1a5ed1 55 * @param interval interval
uchitake 19:41f7dd1a5ed1 56 */
uchitake 19:41f7dd1a5ed1 57 PIDC(PinName sda, PinName scl, float kc, float ti, float td, float interval);
uchitake 19:41f7dd1a5ed1 58
number_key 22:682cc376da6f 59 /**
number_key 22:682cc376da6f 60 * @brief センサの値とPIDの値をアップデート
number_key 22:682cc376da6f 61 */
UCHITAKE 6:590c9622ecf1 62 void confirm();
number_key 22:682cc376da6f 63
number_key 22:682cc376da6f 64 /**
number_key 22:682cc376da6f 65 * @brief 回転用座標系リセット
number_key 22:682cc376da6f 66 */
number_key 26:7258d5ad0bff 67 void resetOffset();
number_key 22:682cc376da6f 68
number_key 22:682cc376da6f 69 /**
number_key 22:682cc376da6f 70 * @brief PIDの計算結果を取得
number_key 22:682cc376da6f 71 * @return PIDの計算結果
number_key 22:682cc376da6f 72 */
number_key 22:682cc376da6f 73 float getCalculationResult() const;
number_key 22:682cc376da6f 74
number_key 22:682cc376da6f 75 /**
number_key 22:682cc376da6f 76 * 現在の角度を取得
number_key 22:682cc376da6f 77 * @return 現在の角度(degree)
number_key 22:682cc376da6f 78 */
number_key 26:7258d5ad0bff 79 int getCurrentDegree() const;
number_key 26:7258d5ad0bff 80
number_key 26:7258d5ad0bff 81 /**
number_key 26:7258d5ad0bff 82 * センサの生値を取得
number_key 26:7258d5ad0bff 83 * @return コンパスセンサの生値
number_key 26:7258d5ad0bff 84 */
number_key 26:7258d5ad0bff 85 int getRawDegree();
number_key 26:7258d5ad0bff 86
number_key 26:7258d5ad0bff 87 void setPoint(float point);
number_key 22:682cc376da6f 88
number_key 22:682cc376da6f 89 /**
number_key 22:682cc376da6f 90 * @brief キャリブレーションする
number_key 22:682cc376da6f 91 * @param mode ENTER OR EXIT
number_key 22:682cc376da6f 92 */
number_key 22:682cc376da6f 93 void calibration(int mode);
UCHITAKE 6:590c9622ecf1 94 private :
uchitake 19:41f7dd1a5ed1 95
UCHITAKE 6:590c9622ecf1 96 void updateOutput();
uchitake 19:41f7dd1a5ed1 97
number_key 26:7258d5ad0bff 98 int offSetDegree;
UCHITAKE 6:590c9622ecf1 99 int turnOverNumber;
number_key 26:7258d5ad0bff 100 int beforeDegree;
UCHITAKE 6:590c9622ecf1 101
UCHITAKE 6:590c9622ecf1 102 protected :
number_key 26:7258d5ad0bff 103 int rawDegree;
number_key 22:682cc376da6f 104 float calculationResult;
number_key 26:7258d5ad0bff 105 int currentDegree;
UCHITAKE 6:590c9622ecf1 106 };
UCHITAKE 6:590c9622ecf1 107
uchitake 19:41f7dd1a5ed1 108 #endif//PID_CONTROLLER_H