PID制御による速度制御クラス
[詳解]
#include "SpeedControl.h"
|
| SpeedControl () |
|
std::int32_t | calculateSpeedForPid (std::int32_t curAngleL, std::int32_t curAngleR) |
|
std::int16_t | getSpeed100ms () |
|
| Pid (double p_gain_, double i_gain_, double d_gain_, double target_) |
|
| Pid (double p_gain_, double i_gain_, double d_gain_, double diff_, double integral_, double target_, double output_) |
|
void | setPid (double p_gain_, double i_gain_, double d_gain_, double target_) |
|
PID制御による速度制御クラス
このクラスはPidクラスを継承しています。
SpeedControl.h の 18 行目に定義があります。
SpeedControl::SpeedControl |
( |
| ) |
|
コンストラクタ
SpeedControl.cpp の 9 行目に定義があります。
11 Pid(0.2, 0.5, 0.0, 30.0),
16 for(
int i = 0; i < 25; i++) speed_value[i] = 0;
Pid(double p_gain_, double i_gain_, double d_gain_, double target_)
std::int16_t speed_value_all
std::int8_t SpeedControl::calcDistance4ms |
( |
std::int32_t |
curAngleL, |
|
|
std::int32_t |
curAngleR |
|
) |
| |
|
protected |
4ms間の移動距離を取得する
- 引数
-
curAngleL | 左モータ回転角 |
curAngleR | 右モータ回転角 |
- 戻り値
- 進んだ距離[mm/4ms]
SpeedControl.cpp の 39 行目に定義があります。
41 float distance4msFloat = 0.0;
45 = ((2 * 3.14 * 81) / 360.0) * (float)(curAngleL - preAngleL);
47 = ((2 * 3.14 * 81) / 360.0) * (float)(curAngleR - preAngleR);
48 distance4msFloat = (distance4msL + distance4msR) / 2.0;
51 preAngleL = curAngleL;
52 preAngleR = curAngleR;
54 distance4ms = (int)distance4msFloat;
std::int32_t SpeedControl::calculateSpeedForPid |
( |
std::int32_t |
curAngleL, |
|
|
std::int32_t |
curAngleR |
|
) |
| |
速度制御をするための前進値(forward)を計算する
- 引数
-
curAngleL | 左モータ回転角 |
curAngleR | 右モータ回転角 |
- 戻り値
- forward 前進値
SpeedControl.cpp の 24 行目に定義があります。
28 speed_value[speedCount] = speed_value_thistime;
32 if(speedCount >= 25) speedCount = 0;
33 forward += (pid_value - pid_value_old) / 10;
34 pid_value_old = pid_value;
void calculate(double light_value)
std::int8_t calcDistance4ms(std::int32_t curAngleL, std::int32_t curAngleR)
std::int16_t speed_value_all
double limitOutput(double pid_value)
std::int16_t SpeedControl::getSpeed100ms |
( |
| ) |
|
std::int16_t SpeedControl::speed_value_all |
このクラス詳解は次のファイルから抽出されました: