ドローンのシステム基礎を学ぶ(9) [ロボット]
前回、速度差をベースとしたフィードバック制御について学びました。これを比例制御(P制御)と呼びます。
せっかくなので、プログラムでこのP制御をシミュレーションをしてみましょう。質量は1g、測定間隔は0.1秒、比例係数は1.0にしてみました。
これをグラフにすると下記のようになります。理論通り、80km/h に近づいています。
ただ収束値を拡大してみると、80km/h に限りなく近づいていますが 80km/h になっていません。これは P制御による定常偏差によるものです。
これは、わずかな違いのように見えますが、これが距離として累積されていくと次第に大きな誤差となって表れてきます。次は、このわずかな違いを補正する方法について学んでいきたいと思います。
(^_^)/~
せっかくなので、プログラムでこのP制御をシミュレーションをしてみましょう。質量は1g、測定間隔は0.1秒、比例係数は1.0にしてみました。
#include <stdio.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制御による定常偏差によるものです。
これは、わずかな違いのように見えますが、これが距離として累積されていくと次第に大きな誤差となって表れてきます。次は、このわずかな違いを補正する方法について学んでいきたいと思います。
(^_^)/~
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
- メディア:
P制御では、マイコンの計算誤差により80km/hに到達しないとありますが、違いますよ。
数学的に、最終値の定理を解くと、P制御では目標値との差ができてしまうことがわかります。制御工学では、定常偏差と呼びます。
説明はここがわかりますいと思います。。
http://www-jlc.kek.jp/~omori/CavityCompton/Meeting/20070830/Miyoshi20070830_PID_1.pdf
by akira (2017-09-20 01:38)
akiraさん、ご指摘ありがとうございます。おお、なるほどズバリ解説が出ていますね。これは分かりやすいかも。勉強になります。^^
by ys_oota (2017-09-21 01:25)