MBDの大きなメリットの1つは、モデルを使ったシステムの検証が机上で行える点にあります。
今回作成したモデルでもシミュレーションによるシステムの検証が可能です。まず、表4の条件(1)でシミュレーションをしてみましょう。シミュレーションの結果を図7に示します。
内容 | 設定場所 | 値 |
---|---|---|
Pゲイン | Pゲイン | 1.2 |
Iゲイン | Iゲイン | 0(P制御のみ) |
目標距離 | 定数ブロック | 30cm |
時刻0における 先行車との距離 |
定数ブロック | 50cm |
先行車の前進量 | 定数ブロック | 20 |
Buffer Size | CSCOPEブロック | 20 |
Refresh period | CSCOPEブロック | 20 |
Ymin | CSCOPEブロック | -15 |
Ymax | SCOPEブロック | 60 |
Period | CLOCKブロック | 0.05 |
Final Integration Time | Simulate→Setup | 20 |
表4 シミュレーションの条件(1) |
黒色の実線が前進量、緑色の実線が先行車と自車との距離を表しています。シミュレーションの結果、条件(1)では目標距離が30cmに対して、20cm程度となり偏差が0になっていないことが分かると思います。これは「定常偏差」または「オフセット」と呼ばれるものでP制御を適用したときにしばしば見られる特徴です。
次に、表5の条件(2)でシミュレーションをしてみましょう。条件(2)では、定常偏差を除去するI動作により偏差が0になっていることが分かります。また、この結果より、いったん先行車に大きく近づいた後、目標距離に収束していくのが分かります。これらの結果はP制御、PI制御の特徴を表した結果といえるでしょう。
内容 | 設定場所 | 値 |
---|---|---|
Pゲイン | Pゲイン | 1.2 |
Iゲイン | Iゲイン | 0.2 |
目標距離 | 定数ブロック | 30cm |
時刻0における 先行車との距離 |
定数ブロック | 50cm |
先行車の前進量 | 定数ブロック | 20 |
Buffer Size | CSCOPEブロック | 20 |
Refresh period | CSCOPEブロック | 20 |
Ymin | CSCOPEブロック | -15 |
Ymax | SCOPEブロック | 60 |
Period | CLOCKブロック | 0.05 |
Final Integration Time | Simulate→Setup | 20 |
表5 シミュレーションの条件(2) |
これらの結果により、PI制御によるコントローラを適用することで先行車と自車との距離を設定した目標値に制御できそうです。
以上、シミュレーションによってモデルの検証ができました。次に、この検証したモデルの内容をコードに落として実機で確認してみましょう。実機でもシミュレーションと同じような結果になるのでしょうか?
実機で動作の確認をするには、作成したモデルからソフトウェアに実装していく必要があります。前回説明したルールに従ってソフトウェアに実装していきましょう。
ただし、モデルの実現に当たっては、先行車との距離は走行体に付属している超音波センサにて測定した値を使用することにします。また、今回は簡略化のため、積分処理は、単に偏差×時間(0.05sec)の和を取ることにしています。これらの条件を考慮して、RC_fw_linetrace_run関数を実装した結果を図9に示します。
モデルからソフトウェアに落とし込むことができました。これを教育用レゴマインドストームNXTに転送して、実際の動作を確認してみましょう。
実機での確認では、動作内容を明確にしたいため、先行車が停まっているものとして(先行車のスピードを0にして、停止している仕切り板を先行車と見立てた)検証しました。実機での検証結果を図10および、図11に示します。
図10に示すように、P制御のみでは設定している車間距離に制御することはできませんでした。一方で、図11に示すPI制御を適用したコントローラでは、最終的に目標とする車間距離に制御できました。これはシミュレーションでの検証結果と同じ内容です。また、今回は先行車を停止して実機確認しましたが、先行車が移動している際も同様な結果が得られました。ただし、いずれの結果もシミュレーションと実機での検証結果に差異が見られます。その理由は、今回使用したモデルが簡略化されたものだからです。
車間制御部分のモデルの作成、検証、ソフトウェア化というプロセスをたどってみました。今回作成したモデルはかなり簡略化したものであるため、シミュレーションの精度はあまりよくありませんでしたが、コントローラやプラントを厳密にとらえることで精度の高いモデルを作成できます。また、今回は速度制御部分のみを対象としましたが、ライントレース部分も同様の手法でモデリング可能です。
以上のように、モデルベース開発ではまずモデルを作成し、机上で制御アルゴリズムの検証やある程度パラメータをチューニングした後に、実機に展開できることが大きなメリットです。また、モデル化することで適用しようとしている制御アルゴリズムが、誰にでも把握できるというのもメリットの1つといえるでしょう。
さて、次回はモデルからソフトウェアへの自動コード生成のご紹介と今回の連載の総括をしたいと思います。ご期待ください! (次回に続く)
Copyright © ITmedia, Inc. All Rights Reserved.