前回、速度差をベースとしたフィードバック制御について学びました。これを比例制御(P制御)と呼びます。





せっかくなので、プログラムでこのP制御をシミュレーションをしてみましょう。質量は1g、測定間隔は0.1秒、比例係数は1.0にしてみました。


#include &ltstdio.h>

#define MASS 1
#define TIME_INTERVAL 0.1
#define K 1.0

void main()
{
float Vt = 80.0; // Target Velocity
float Vm = 60.0; // Measured Velocity
float Time = 0.0;

printf("%f, %f\n", Time, Vm);
for (int i = 0; i < 500; i++) {

float force = K * (Vt - Vm);
float dAcc = force / MASS;

Vm += dAcc * TIME_INTERVAL;
Time += TIME_INTERVAL;

printf("%f, %f\n", Time, Vm);
}
}



これをグラフにすると下記のようになります。理論通り、80km/h に近づいています。





ただ収束値を拡大してみると、80km/h に限りなく近づいていますが 80km/h になっていません。これは P制御による定常偏差によるものです。





これは、わずかな違いのように見えますが、これが距離として累積されていくと次第に大きな誤差となって表れてきます。次は、このわずかな違いを補正する方法について学んでいきたいと思います。
(^_^)/~





エンジニアのためのフィードバック制御入門

  • 作者: Philipp K. Janert
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2014/07/26
  • メディア: 単行本(ソフトカバー)



Building Your Own Drones: A Beginners' Guide to Drones, UAVs, and ROVs

  • 作者: John Baichtal
  • 出版社/メーカー: Que Publishing
  • 発売日: 2015/09/14
  • メディア: ペーパーバック



HPHELI Batfly 250 Quad Racer Drone DIY Kit [並行輸入品]

  • 出版社/メーカー: HPHELI
  • メディア: