ライントレースでのPD制御について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ビー猫
記事: 1
登録日時: 4年前

ライントレースでのPD制御について

#1

投稿記事 by ビー猫 » 4年前

みなさんはじめまして。宜しくお願いいたします。
ずっと我流でライントレースをやってきて、ここにきてPD制御を入れ込もうと思ったのですが、なかなか上手くいかず、ずっと悩んでいます。
是非、アドバイスをお願いいたします。

ロボットの仕様は デジタルセンサ15個 2輪にDCモータが1つずつ付いている、対向2輪式です。車両中心にロータリエンコーダもついています。
ベースのプログラムは、MCRのサンプルプログラムを、ハンドル操作を無くした状態で使用しています。
デジタルセンサは、直線ではなく、ハの字型に並んでいます。

今までは、モータ出力は、センサ値を読み込んで、出力していました。

出力の根拠は、例えば車両がライン上にあるとき、中心から右に3個目のデジタルセンサに反応がある→R21のカーブ(エフテックという会社のサイトを参考にしました)→右のモータ出力を40に(100,40)(これもトレッドから計算で出しています) 
というような感じです。ですが、この状態ですと、大会に出ているようなずっと中心を維持しながら走るような走行にはなりません。

そこでPID制御を知ったのですが(どこかのサイトにライントレースならPDでもOKとあったので、PDをとりあえず実装しようと思いました)、

まず、

P制御→ KP × ( 前回の偏差-今回の偏差 ) 
ここで、「偏差」が、目標値からの差とあったので、センサ値の目標は100だから・・・・? 仮にセンサ値が40なら、偏差は60?や、そのままセンサ値を使用してみたり、

D制御→ KD × ( ( 今回の偏差-前回の偏差) -(前回の偏差-前々回の偏差))

など、正直エクセルで色々計算してみても、何が正しい考え方なのか、よくわかっていない状況です。

デジタルセンサでPD制御をというのも無謀かもしれませんが、是非、ご教示お願いいたします。

zc31rar@docomo.ne.jp  もし、直接お教え頂けるのであれば、こちらでもお願いいたします。

“C言語何でも質問掲示板” へ戻る