倒立振子クララは立たない。

倒立振子すでに挫折。
PID制御を理解しないと不可能。

分かっているのは倒立振子はライントレースを理解しないと出来ないということっぽい。

ライントレースと倒立振子の共通項は
ライントレースはライトセンサーの値を黒という値一定に保ちつつ進むというのにたいして
倒立振子は地面からの角度を90度と言う値を一定にして重心を保つという点にある。

ただ両者の違いはライントレースのフィードバックはゆっくりでも特に問題ないが、
倒立振子は重力加速度9.8 m/s2が相手なのでとてもフィードバックタイミングがシビアだということである。

この倒立振子を保つその方法がPIDプロポーショナルインテグラルディファレンシャルな方法でなければ
小刻みに制御できないのでPIDの学習はマストということになる。

課題を倒立振子からライントレースにレベルを下げよう。
ライントレースでプロポーショナル制御が必要だ。


PID制御の対象は何か
速度にPID制御ならば話は簡単だ、速度計とアクセルがある。
速度に対してアクセルをプロポーショナルに動かせばよい。80キロをしきい値として
80キロを下回る75なら少しアクセルを踏み込む。30キロなら強くアクセルを踏み込む。5キロだったらベタ足になるようにアクセルを踏み込む。

しかしライントレースでプロポーショナルにする場合はその対象は何か?

最初ラインは白か黒かだから(値0か100)プロポーショナルな制御なんて出来ないのではと思ったがよく良く考えてみればそうでもない。
センサーは黒か白のデジタルではないのだ。黒ラインをまたぐようにカラーセンサーを通してみてみるとわかるが、黒と白の境目は40位の数値が出る。この数値に対してプロポーショナルなモーター制御をすればいい。



こうしろうのMindStorms日記にPID制御がNXCに実装されていてこれをRotateMotorPID()と言うと報告されているが、これはライントレースに使えるのだろうか?なんか記事見る限りPIDの対象が回転角のみになっているのでライントレースには使えないのではないか?モータースピード出力値をPIDの対象にできないのか?記事だけでは不明。PIDPIDということばにとらわれるとやりたい事出来ずに終わりそうだ。