Easy Control Library for Cubic 0.01
Loading...
Searching...
No Matches
Cubic_controller::Controller Class Referenceabstract

Cubic制御器の抽象クラス More...

#include <Cubic.controller.h>

Inheritance diagram for Cubic_controller::Controller:
Cubic_controller::Position_PID Cubic_controller::Velocity_PID

Public Member Functions

 Controller (uint8_t motorNo, uint8_t encoderNo, enum class encoderType encoderType, uint16_t CPR, double Kp, double Ki, double Kd, double target, bool direction, double capableDutyCycle, double current, bool logging=false)
 Construct a new Controller object.
 
virtual double compute ()=0
 duty比を計算します。各ループで一回呼び出してください。このduty比は、DUTY_SPI_MAXに対する比です。計算された値は、この関数内部で、DC_motor::put()されます。
 
virtual void setTarget (double target)
 制御量の目標値を設定します。
 
void setGains (double Kp, double Ki, double Kd)
 PIDゲインを設定します。負の値は-1倍されます。
 
void setKp (double Kp)
 Pゲインを設定します。負の値は-1倍されます。
 
void setKi (double Ki)
 Iゲインを設定します。負の値は-1倍されます。
 
void setKd (double Kd)
 Dゲインを設定します。負の値は-1倍されます。
 
int32_t readEncoder () const
 エンコーダを読みだします。
 
double getTarget () const
 目標値を返します。
 
double getDutyCycle () const
 直前に計算したデューティ比を返します。
 
double getDt () const
 直前のループにおける経過時間dtを返します
 
double getCurrent () const
 直前に読んだ制御量を返します。
 
virtual void reset ()
 制御器のリセット
 
virtual void reset (double target)
 制御器のリセット
 
virtual void reset (double Kp, double Ki, double Kd)
 制御器のリセット
 
virtual void reset (double Kp, double Ki, double Kd, double target)
 制御器のリセット
 
virtual double encoderToAngle (int32_t encoder)=0
 エンコーダの値から角度を計算します。設定したCPR(Count Per Revolution)に依存します。
 

Protected Member Functions

double compute_PID (double current)
 pid.compute_PID()を呼ぶだけの関数です。
 

Protected Attributes

const uint8_t motorNo
 モータ番号
 
enum encoderType encoderType
 エンコーダの種類
 
const uint8_t encoderNo
 エンコーダ番号
 
const uint16_t CPR
 CPR(Counts Per Revolution)
 
const bool direction
 モータをプラスの方向に回したとき、エンコーダが増加するかどうか
 
const bool logging
 ログを出力するかどうか
 

Detailed Description

Cubic制御器の抽象クラス

Constructor & Destructor Documentation

◆ Controller()

Cubic_controller::Controller::Controller ( uint8_t motorNo,
uint8_t encoderNo,
enum class encoderType encoderType ,
uint16_t CPR,
double Kp,
double Ki,
double Kd,
double target,
bool direction,
double capableDutyCycle,
double current,
bool logging = false )

Construct a new Controller object.

Parameters
motorNo
encoderNo
encoderType
CPR
Kp
Ki
Kd
target
direction
capableDutyCycle
current
logging

Member Function Documentation

◆ compute()

virtual double Cubic_controller::Controller::compute ( )
pure virtual

duty比を計算します。各ループで一回呼び出してください。このduty比は、DUTY_SPI_MAXに対する比です。計算された値は、この関数内部で、DC_motor::put()されます。

Returns
double dutyCycle

Implemented in Cubic_controller::Velocity_PID, and Cubic_controller::Position_PID.

◆ compute_PID()

double Cubic_controller::Controller::compute_PID ( double current)
inlineprotected

pid.compute_PID()を呼ぶだけの関数です。

Parameters
current
Returns
double

◆ encoderToAngle()

virtual double Cubic_controller::Controller::encoderToAngle ( int32_t encoder)
pure virtual

エンコーダの値から角度を計算します。設定したCPR(Count Per Revolution)に依存します。

Parameters
encoder
Returns
double angle[rad](-PI<= angle < PI)

Implemented in Cubic_controller::Velocity_PID, and Cubic_controller::Position_PID.

◆ getCurrent()

double Cubic_controller::Controller::getCurrent ( ) const
inline

直前に読んだ制御量を返します。

Returns
double

◆ getDt()

double Cubic_controller::Controller::getDt ( ) const
inline

直前のループにおける経過時間dtを返します

Returns
double dt[s]

◆ getDutyCycle()

double Cubic_controller::Controller::getDutyCycle ( ) const
inline

直前に計算したデューティ比を返します。

Returns
double dutyCycle

◆ getTarget()

double Cubic_controller::Controller::getTarget ( ) const
inline

目標値を返します。

Returns
double target

◆ readEncoder()

int32_t Cubic_controller::Controller::readEncoder ( ) const
inline

エンコーダを読みだします。

Returns
int32_t encoder

◆ reset() [1/4]

void Cubic_controller::Controller::reset ( )
inlinevirtual

制御器のリセット

PID制御器のリセットを行う。

Reimplemented in Cubic_controller::Velocity_PID.

◆ reset() [2/4]

void Cubic_controller::Controller::reset ( double Kp,
double Ki,
double Kd )
inlinevirtual

制御器のリセット

Parameters
Kp
Ki
Kd

Reimplemented in Cubic_controller::Velocity_PID.

◆ reset() [3/4]

void Cubic_controller::Controller::reset ( double Kp,
double Ki,
double Kd,
double target )
inlinevirtual

制御器のリセット

Parameters
Kp
Ki
Kd
target

Reimplemented in Cubic_controller::Velocity_PID.

◆ reset() [4/4]

void Cubic_controller::Controller::reset ( double target)
inlinevirtual

制御器のリセット

Parameters
target

Reimplemented in Cubic_controller::Velocity_PID.

◆ setGains()

void Cubic_controller::Controller::setGains ( double Kp,
double Ki,
double Kd )
inline

PIDゲインを設定します。負の値は-1倍されます。

Parameters
Kp
Ki
Kd

◆ setKd()

void Cubic_controller::Controller::setKd ( double Kd)
inline

Dゲインを設定します。負の値は-1倍されます。

Parameters
Kd

◆ setKi()

void Cubic_controller::Controller::setKi ( double Ki)
inline

Iゲインを設定します。負の値は-1倍されます。

Parameters
Ki

◆ setKp()

void Cubic_controller::Controller::setKp ( double Kp)
inline

Pゲインを設定します。負の値は-1倍されます。

Parameters
Kp

◆ setTarget()

void Cubic_controller::Controller::setTarget ( double target)
inlinevirtual

制御量の目標値を設定します。

Parameters
target

Reimplemented in Cubic_controller::Position_PID.

Member Data Documentation

◆ CPR

const uint16_t Cubic_controller::Controller::CPR
protected

The documentation for this class was generated from the following files: