今回は、Scicoslabを使いながら速度制御ロジックのモデリングを行い、「動き」の開発を進めていく!!
前回「制御の世界のモデルベース開発とは?」では、簡単な制御モデルを使用して、制御の世界のモデルベース開発プロセスについて説明しました。
今回は、速度制御部分の開発を行っていきます。
システム全体のフレーム部分は、すでに連載前半で作成しました。
今回の開発対象は「追従走行中」状態であるfollower_linetraceの、「追従走行する」RC_fw_linetrace_run関数のロジックとなります。現在は、ON/OFF制御(ある程度の距離まで先行車に近づいたらスピードを20に、ある程度距離が離れたらスピードを100にする)が実装されています。制御モデルを使用して、この部分をよりよいものにしていきます。ただし、今回は追従部分のみを対象とし、ライントレース部分はON/OFF制御のままとします。
今回考えている制御系の構造を図2に示します。コントローラは、PI制御によるフィードバック制御を適用することにします。プラント(制御対象)は、自車と先行車で構成されます。これは車間距離を制御するためです。それでは、早速コントローラからモデリングをはじめましょう。
前述のようにコントローラには、PI制御を適用します。PI制御(またはPID制御)は古典制御の代表的な制御則であり、さまざまなところで適用されています。
今回は、制御について論じるのが目的ではないので詳細は説明しませんが、PID制御は偏差に比例する制御を行う「P制御」、偏差の積分に比例する制御を行う「I制御」、偏差の微分に比例する制御を行う「D制御」(今回は、D制御は適用しません)を含む制御になります。P制御は“現在”、I制御は“過去”、D制御は“未来”に対する制御だともいわれます。
このPID制御を制御モデルで表すと図3のようになります。
また、今回作成するコントローラの内容は、表1のようになります。表1の「Pゲイン」「Iゲイン」は暫定値です。これらの情報を基に、前回紹介した「Scicoslab」を使用してモデルを作成していきましょう。なお、モデルで使用しているブロックは表2に示すカテゴリに格納されています。
コントローラ | PI制御 |
---|---|
Pゲイン | 1.2 |
Iゲイン | 0.2 |
Dゲイン | 0(D制御は適用しないため) |
設定値 | 30cm |
制御間隔 0.05sec
表1 コントローラの内容 |
ブロック | カテゴリ |
---|---|
ゲインブロック | Linear |
合計ブロック | Linear |
積分ブロック | Linear |
微分ブロック | Linear |
定数ブロック | Sources |
表2 ブロックの格納場所 |
同様に、制御対象となる自車と先行車をモデリングしていきましょう。今回は単純化のため、モータへ付加するスピードと実際の走行距離を測定して、それらの関係からモデル化していきます。そこで、モータへ付加するスピードと、5秒間走行させたときの実際の走行量の関係を調べてみました。その結果を図4に示します。
図4中の数式は、最小二乗法による近似直線です。この傾きを速度ゲインとして使用します。この速度ゲインを使用して、自車と先行車のモデルを作成します。モデルは図5のようになります。自車の移動距離(速度×速度ゲイン)と先行車の移動距離(初期車間+速度×速度ゲイン)の差が車間距離になり、コントローラにフィードバックされます。作成したモデルのパラメータは表3のとおりです。
ブロック | パラメータ |
---|---|
走行体の速度ゲイン | 4.2 図4の近似直線の傾き20.297を5secで除した値 |
初期車間 | 50cm |
制御間隔 | 0.05sec |
表3 モデルのパラメータ |
コントローラとプラント部分を結合し、シミュレーションが可能なように描画ブロックなどを追加すると図6のようなモデルになります。このモデルでは、目標車間距離を30cmに設定しています。また、自車速度のオフセットとして30のスピードを与え、コントローラからの調整量との差をモータに与えるスピードとしています。
Copyright © ITmedia, Inc. All Rights Reserved.