今回は、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.
組み込み開発の記事ランキング
コーナーリンク