NHK2017 octopus robot

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

Fork of KANI2017v2 by NagaokaRoboticsClub_mbedTeam

bot/PIDcontroller/PID_controller.h

Committer:
number_key
Date:
2017-09-07
Revision:
22:682cc376da6f
Parent:
20:477c5d039e93
Child:
23:37bb9afe9fdc

File content as of revision 22:682cc376da6f:

/**
* @file PID_controller.h
* @brief コンパスセンサを使ったPIDコントローラ
*/
#ifndef PID_CONTROLLER_H
#define PID_CONTROLLER_H

#include "mbed.h"
#include "pin_config.h"

#include "PID.h"
#include "jy901.h"

// const double M_PI = 3.141592653589793;
const double KC = 5.2;
const double TI = 0.0;
const double TD = 0.00;
const float INTERVAL  = 0.01;
const float INPUT_LIMIT = 180.0;
const float OUTPUT_LIMIT = 0.4;
const float BIAS = 0.0;
const int SENSED_THRESHOLD = 180;

/**
* @brief コンパスセンサを使ったPIDコントローラ
*/
class PIDC : public PID, JY901, Ticker
{
public :
    /**
    * @brief defaultコンストラクタ,タイマ割り込みでの計算開始
    */
    PIDC();

    /**
     * @brief コンストラクタ
     * @param sda      sda HMC6352
     * @param scl      scl HMC6352
     * @param kc       KC
     * @param ti       TI
     * @param td       TD
     * @param interval interval
     */
    PIDC(PinName sda, PinName scl, float kc, float ti, float td, float interval);

    /**
     * @brief センサの値とPIDの値をアップデート
     */
    void confirm();

    /**
     * @brief 回転用座標系リセット
     */
    void resetAxisOffset();

    /**
     * 平行移動用座標系リセット
     */
    void resetPlaneOffset();

    /**
     * @brief PIDの計算結果を取得
     * @return PIDの計算結果
     */
    float getCalculationResult() const;

    /**
     * 現在の角度を取得
     * @return 現在の角度(degree)
     */
    float getCurrentDegree() const;

    /**
     * @brief キャリブレーションする
     * @param mode ENTER OR EXIT
     */
    void calibration(int mode);
private :

    void updateOutput();

    float axisOffSetDegree;
    float planeOffSetDegree;
    int turnOverNumber;
    float beforeDegree;

protected :
    float rawDegree;
    float calculationResult;
    float axisCurrentDegree;
    float planeCurrentDegree;
};

#endif//PID_CONTROLLER_H