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 Sep 13 14:26:47 2017 +0900
Revision:
23:37bb9afe9fdc
Parent:
22:682cc376da6f
Child:
24:9a4ca5442717
move

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コントローラ
UCHITAKE 6:590c9622ecf1 4 */
UCHITAKE 6:590c9622ecf1 5 #ifndef PID_CONTROLLER_H
UCHITAKE 6:590c9622ecf1 6 #define PID_CONTROLLER_H
UCHITAKE 6:590c9622ecf1 7
UCHITAKE 6:590c9622ecf1 8 #include "mbed.h"
UCHITAKE 6:590c9622ecf1 9 #include "pin_config.h"
UCHITAKE 6:590c9622ecf1 10
UCHITAKE 6:590c9622ecf1 11 #include "PID.h"
number_key 20:477c5d039e93 12 #include "jy901.h"
UCHITAKE 6:590c9622ecf1 13
number_key 22:682cc376da6f 14 // const double M_PI = 3.141592653589793;
number_key 22:682cc376da6f 15 const double KC = 5.2;
number_key 22:682cc376da6f 16 const double TI = 0.0;
number_key 22:682cc376da6f 17 const double TD = 0.00;
number_key 23:37bb9afe9fdc 18 const float INTERVAL = 0.001;
number_key 22:682cc376da6f 19 const float INPUT_LIMIT = 180.0;
number_key 22:682cc376da6f 20 const float OUTPUT_LIMIT = 0.4;
number_key 22:682cc376da6f 21 const float BIAS = 0.0;
number_key 22:682cc376da6f 22 const int SENSED_THRESHOLD = 180;
uchitake 19:41f7dd1a5ed1 23
UCHITAKE 6:590c9622ecf1 24 /**
UCHITAKE 6:590c9622ecf1 25 * @brief コンパスセンサを使ったPIDコントローラ
UCHITAKE 6:590c9622ecf1 26 */
number_key 20:477c5d039e93 27 class PIDC : public PID, JY901, Ticker
UCHITAKE 6:590c9622ecf1 28 {
UCHITAKE 6:590c9622ecf1 29 public :
UCHITAKE 6:590c9622ecf1 30 /**
uchitake 19:41f7dd1a5ed1 31 * @brief defaultコンストラクタ,タイマ割り込みでの計算開始
UCHITAKE 6:590c9622ecf1 32 */
UCHITAKE 6:590c9622ecf1 33 PIDC();
uchitake 19:41f7dd1a5ed1 34
uchitake 19:41f7dd1a5ed1 35 /**
uchitake 19:41f7dd1a5ed1 36 * @brief コンストラクタ
uchitake 19:41f7dd1a5ed1 37 * @param sda sda HMC6352
uchitake 19:41f7dd1a5ed1 38 * @param scl scl HMC6352
uchitake 19:41f7dd1a5ed1 39 * @param kc KC
uchitake 19:41f7dd1a5ed1 40 * @param ti TI
uchitake 19:41f7dd1a5ed1 41 * @param td TD
uchitake 19:41f7dd1a5ed1 42 * @param interval interval
uchitake 19:41f7dd1a5ed1 43 */
uchitake 19:41f7dd1a5ed1 44 PIDC(PinName sda, PinName scl, float kc, float ti, float td, float interval);
uchitake 19:41f7dd1a5ed1 45
number_key 22:682cc376da6f 46 /**
number_key 22:682cc376da6f 47 * @brief センサの値とPIDの値をアップデート
number_key 22:682cc376da6f 48 */
UCHITAKE 6:590c9622ecf1 49 void confirm();
number_key 22:682cc376da6f 50
number_key 22:682cc376da6f 51 /**
number_key 22:682cc376da6f 52 * @brief 回転用座標系リセット
number_key 22:682cc376da6f 53 */
number_key 22:682cc376da6f 54 void resetAxisOffset();
number_key 22:682cc376da6f 55
number_key 22:682cc376da6f 56 /**
number_key 22:682cc376da6f 57 * 平行移動用座標系リセット
number_key 22:682cc376da6f 58 */
number_key 22:682cc376da6f 59 void resetPlaneOffset();
number_key 22:682cc376da6f 60
number_key 22:682cc376da6f 61 /**
number_key 22:682cc376da6f 62 * @brief PIDの計算結果を取得
number_key 22:682cc376da6f 63 * @return PIDの計算結果
number_key 22:682cc376da6f 64 */
number_key 22:682cc376da6f 65 float getCalculationResult() const;
number_key 22:682cc376da6f 66
number_key 22:682cc376da6f 67 /**
number_key 22:682cc376da6f 68 * 現在の角度を取得
number_key 22:682cc376da6f 69 * @return 現在の角度(degree)
number_key 22:682cc376da6f 70 */
number_key 22:682cc376da6f 71 float getCurrentDegree() const;
number_key 22:682cc376da6f 72
number_key 22:682cc376da6f 73 /**
number_key 22:682cc376da6f 74 * @brief キャリブレーションする
number_key 22:682cc376da6f 75 * @param mode ENTER OR EXIT
number_key 22:682cc376da6f 76 */
number_key 23:37bb9afe9fdc 77
number_key 23:37bb9afe9fdc 78 void renewAngle();
number_key 23:37bb9afe9fdc 79
number_key 22:682cc376da6f 80 void calibration(int mode);
UCHITAKE 6:590c9622ecf1 81 private :
uchitake 19:41f7dd1a5ed1 82
UCHITAKE 6:590c9622ecf1 83 void updateOutput();
uchitake 19:41f7dd1a5ed1 84
number_key 22:682cc376da6f 85 float axisOffSetDegree;
number_key 22:682cc376da6f 86 float planeOffSetDegree;
UCHITAKE 6:590c9622ecf1 87 int turnOverNumber;
number_key 22:682cc376da6f 88 float beforeDegree;
UCHITAKE 6:590c9622ecf1 89
UCHITAKE 6:590c9622ecf1 90 protected :
number_key 22:682cc376da6f 91 float rawDegree;
number_key 22:682cc376da6f 92 float calculationResult;
number_key 22:682cc376da6f 93 float axisCurrentDegree;
number_key 22:682cc376da6f 94 float planeCurrentDegree;
number_key 23:37bb9afe9fdc 95 float angle;
UCHITAKE 6:590c9622ecf1 96 };
UCHITAKE 6:590c9622ecf1 97
uchitake 19:41f7dd1a5ed1 98 #endif//PID_CONTROLLER_H