かみやんの技術者ブログ

主にプログラムの話です

PD制御の90度旋回制御、失敗〜

前回のエントリーで直線制御を実装したので、次はPD制御で90度旋回。
直進制御のソースがあるので、速攻実装できた。
実装は、司令角度から左右輪の移動距離を求める。

L=PI*D*θ/(2*PI)

Lがロータリーエンコーダの移動距離、Dがロータリーエンコーダ間距離、θが司令角度。
左右のロータリーエンコーダの移動距離をそれぞれPD制御。プラス、左右の移動距離の差を0にするPD制御。で実装。

結果は失敗。オーバーシュートし(行き過ぎ)ています。
本来は、オーバーシュートしたら、戻るのですが、ロータリエンコーダが正転逆転を判断できない1相型なので、戻れません(このエントリ参照)。Dゲイン(微分ゲイン)をあげればオーバシュートしないのですが、今度はたどり着きません。前のエントリで書いたようにI制御(積分制御)が必要のようです。

さてこのまま改善してもいいのですが、当初の予定では、ハードウェアは7月末までに完成。それ以降ソフトウェア。という計画で、このままのペースではとても間に合いません。ということでソフトウエアは後回し。

次は、PSDセンサ(赤外線距離センサ)をつけたいと思います。ずいぶん前にシャープのGP2D12を買いました。こいつは今廃番で、これを買うときはどこのネットショップも売り切れで困りました。通常800円弱で買えるのに、RSオンラインでしか売ってなくて1800円もかかりました。RSオンラインすぐ着くけど高い。。最近新番GP2Y0A21がでたようで、ツクモロボット王国で買えるようです。861円。
PSDセンサの取り付けにはフレームがいるのでフレームの設計から始める。それとPSDセンサで取りこぼすと物に衝突するので、一応バンパーセンサーも取り付ける。バンパーセンサはタミヤのマイクロスイッチ126円を使うことにした。