Simulink におけるシステムの設計
モデルベース デザインのパラダイムの中核にあるのが、物理コンポーネントのモデルと、設計、テスト、および実装作業のベースとなるシステムのモデルです。このチュートリアルでは、設計したコンポーネントを既存のシステム モデルに追加します。
システム モデルを開く
そのモデルは、家庭用お掃除ロボットに似た、2 つの車輪によって移動や回転が可能な平型ロボットです。MATLAB® コマンド ラインに次のように入力してモデルを開きます。
open_system('system_model.slx')
このチュートリアルは、このシステムを解析し、機能を追加します。
設計したコンポーネントと設計目標の特定
設計目標を定めることは、設計タスクに欠かせない最初のステップです。どんなに単純なシステムでも、複数の、場合によっては競合する設計目標が考えられます。モデル例では、以下の目標について検討します。
車輪を希望する速度で回転させるため、力の入力を変化させるコントローラーを設計する。
装置を既定の経路で移動させるための入力を設計する。
装置を線に追従させるためのセンサーとコントローラーを設計する。
障害物をよけながら最短経路を使用して装置を特定のポイントに到達させるための計画アルゴリズムを設計する。
障害物をよけながら特定のエリアを装置に動き回らせるためのセンサーとアルゴリズムを設計する。
このチュートリアルでは、アラート システムを設計します。障害物からの距離を測定するセンサーに必要なパラメーターを特定します。完全なセンサーは、障害物からの距離を正確に測定します。アラート システムは出力が常にセンサー測定値の 0.05 m 以内になるようにセンサー測定値を一定の間隔でサンプリングします。ロボットが障害物に衝突する前に停止可能なタイミングでアラートを生成します。
シミュレーションを使用したシステムの動作の解析
この新しいコンポーネントを設計するには、ロボットの直線運動を解析して、次のことを特定する必要があります。
最高速度時に車輪への電力が遮断された場合に、ロボットが移動できる距離
ロボットの最高速度
運動を開始する力を入力してモデルを実行し、ロボットが一定の速度に達するまで待ってから、入力の力を 0 に設定します。
モデルで、Inputs サブシステムをダブルクリックします。
既存のステップ入力を削除し、Pulse Generator ブロックを追加します。
Pulse Generator ブロックに、次のパラメーターを設定します。
振幅:
1
周期:
20
パルス幅:
15
このパラメーターは、最高速度に達したことを確認するよう設計されます。パラメーターを変更すると、その効果を確認できます。
モデルを 20 秒間実行します。
1 つ目のスコープでは、時間 3
で電力が遮断されると、速度が急速に低下することが分かります。次に、速度は漸近的に 0 に近づくものの、あと少しのところで 0 には達しません。これはモデル化の限界です。外力なしでの低速時のダイナミクスには、より複雑な表現が必要になります。しかし、今回の目的としては、概算を見積もることが可能です。位置信号にズーム インします。
時間 3
におけるロボットの位置は約 0.55 m です。シミュレーション終了時には、位置は 0.71 m 未満です。電源遮断時のロボットの移動距離は 0.16 m 未満であると言ってよいでしょう。
最高速度を特定するには、次の手順を行います。
時間 1 秒~ 3 秒の間で、速度の出力が安定した領域をズームします。
ズーム ボタンを再度クリックして、ズーム モードを終了します。[カーソルの測定] ボタン
をクリックします。
2 つ目のカーソルを速度曲線がフラットになっている領域に設定します。
[カーソルの測定] パネルの [値] 列は、ロボットの最高速度が 0.183 m/s であることを示しています。ロボットが 0.05 m 移動するのにかかる時間を計算するには、0.183 m/s で 0.05 m を除算します。0.27 秒となります。
コンポーネントの設計と設計の検証
センサーの設計は、次のコンポーネントで構成されます。
ロボットと障害物の間の距離の測定値 — この例では、測定値は正確であるものと仮定します。
アラート システムが距離を測定する時間間隔 — 測定誤差を 0.05 m 未満に保つには、このサンプリング間隔を 0.27 秒より短くしなければなりません。0.25 秒を使用します。
センサーがアラートを発生させる距離 — 解析の結果、減速は障害物から 0.16 m で開始しなければならないことが分かります。実際のアラート距離には離散測定の誤差 0.05 m も考慮しなければなりません。
設計したコンポーネントの追加
センサーを作成します。
以下の端子を持つサブシステムを作成します。
距離測定サブシステムを作成します。次のように、Sensor model ブロックで、Subtract ブロック、関数
magnitude^2
を使用した Math Function ブロック、Sum ブロック、Sqrt ブロックを使用します。入力端子の並べ替えに注意してください。サンプリングをモデル化します。Discrete ライブラリから Zero-Order Hold ブロックをサブシステムに追加し、その [サンプル時間] パラメーターを
0.25
に設定します。アラート ロジックをモデル化します。Logic and Bit Operations ライブラリから Compare to Constant ブロックを追加し、次のパラメーターを設定します。
演算子:
<=
定数値:
0.21
出力データ型:
boolean
この論理ブロックは、その入力が
0.21
以下のとき、その出力を1
に設定します。ブロックの接続を完了します。
設計の検証
Constant ブロックを Sensor model サブシステムへの入力とし、障害物の位置が X = 0.65, Y = 0 であるものとして設計をテストします。このテストは、X 方向の設計機能を検証します。異なる経路について同様のテストを作成することができます。このモデルは、アラートを発生させるだけです。ロボットは制御しません。
障害物の位置を設定します。Sources ライブラリから Constant ブロックを 2 つ追加し、その定数値を
0.65
と0
に設定します。ロボットの位置出力をセンサーの入力に接続します。アラート出力にスコープを追加します。
モデルを実行します。
位置が障害物位置の 0.21 m 以内に入ると、アラート ステータスが 1
になることが観察されます。これで、このコンポーネントの設計要件は満たされました。
複雑なコンポーネントおよび形式的要件を伴う実際のシステムに対応するため、Simulink® 製品ファミリには、設計プロセスを改善および自動化するための追加のツールが用意されています。Requirements Toolbox™ は、要件を形式的に定義し、その要件をモデル コンポーネントとリンクします。Simulink Control Design™ は、このロボットのコントローラーを構築するような場合に、設計を支援します。Simulink Verification and Validation™ 製品は、コンポーネントおよびシステムをテストするための形式的フレームワークを定義します。