ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

システムの定義とレイアウト

Simulink® モデルの最上位レイアウトは、多くのエンジニア チームが利用できる共通のコンテキストであり、モデルベース デザイン パラダイムの多くのタスクのベースでもあります。解析、設計、テスト、実装および基本です。構造と個々のコンポーネントを特定することにより、最上位のシステムを定義します。そして、コンポーネントに対応する階層構造によってモデルを整理します。次に、各コンポーネントのインターフェイスと、コンポーネント間の接続を定義します。

ここに取り上げるモデルは、家庭用お掃除ロボットに似た、2 つの車輪によって移動や回転が可能な平型ロボットです。このチュートリアルは、ロボットが次の 2 つの方法のいずれかで動くものと仮定します。

  • 直線 — 両輪が同じ方向に向かって、同じ速度で回転し、ロボットは直線運動します。

  • 回転 — 各車輪が反対方向に向かって、同じ速度で回転し、ロボットはその場で回転運動します。

いずれの運動タイプも、休止状態から始まります。休止状態とは、回転および直線運動の速度が 0 である状態です。この入門用チュートリアルでは、以上の仮定の下で、直線運動コンポーネントと回転運動コンポーネントを別々にモデル化します。

モデリング目標の決定

モデルを設計する前に、目的と要件を考慮します。目標によって、モデルの構造と、その詳細度が決まります。たとえば、目標がロボットの速度を求めるだけなら、直線運動をモデル化するだけで事足ります。目標がデバイスが指定された経路をたどるのに必要な入力セットを設計することであれば、回転運動コンポーネントが必要です。目標が障害物を回避することであれば、システムにはセンサーが必要になります。このチュートリアルでは、経路上に障害物を検出するとロボットが停止するようなセンサー パラメーターを設計するという目標のために、モデルを作成します。この目標を達成するには、モデルは以下のことを実現できなければなりません。

  • モーターが停止したとき、ロボットが停止する速度を特定する

  • 2 次元空間を動き回れるよう、直線運動と回転運動のための一連のコマンドを提供する

1 つ目のモデリング目標は、運動を解析して、センサーの設計を可能にします。2 つ目の目標では、設計のテストを可能にします。

システム コンポーネントとインターフェイスの特定

モデル化の要件を理解したら、システムのコンポーネントの特定を開始できます。個々のコンポーネントを特定し、最上位構造内におけるコンポーネント間の関係性を把握することは、複雑になり得るモデルを体系的に作成するのに役立ちます。この手順は、モデルの作成を開始する前に、Simulink 外部で行っておきます。

このタスクには、以下の質問に答えることが含まれます。

  • システムの構造的コンポーネントおよび機能的コンポーネントは何か。レイアウトが物理的構造および機能的構造を反映していると、システムの理解、構築、通信、およびテストに役立ちます。このことは、プロセスでシステムの一部分を実装するときに重要になります。

  • 各コンポーネントの入力と出力は何か。コンポーネント間の接続を示す図を描画します。この図は、モデル内の信号の流れにつながり、各信号のソースとシンクに加え、必要なコンポーネントがすべて存在するかどうか判断するのに役立ちます。

  • どのくらいの詳細度が必要か。図に主なパラメーターを含めます。システムの図を作成すると、観察すべき動作に不可欠な部分を特定してモデル化するのに役立ちます。モデルには、目標に関与する各コンポーネントおよびパラメーターの表現が存在しなければなりませんが、複雑度と可読性はトレードオフの関係にあります。モデル化は、反復的なプロセスになることがあります。詳細情報をあまり持たない上位のモデルから着手し、必要に応じて複雑度を徐々に上げていきます。

また、多くの場合、次のことを検討すると有益です。

  • システムのどの部分にテストが必要か。

  • テスト データと成功条件は何か。

  • 解析タスクと設計タスクに必要な出力はどれか。

ロボットの運動コンポーネントの特定

このチュートリアルのシステムでは、2 つの電動車輪を使って 2 次元的に移動するロボットを定義します。以下が含まれます。

  • 直線運動の特性

  • 回転運動の特性

  • システムの位置を 2 次元的に特定するための変換

  • 障害物からロボットまでの距離を測定するセンサー

このシステムのモデルは、同一の 2 つの車輪、車輪に働く入力の力、回転のダイナミクス、座標変換、およびセンサーによって構成されます。このモデルでは、各コンポーネントを Subsystem を使って表現します。

  1. 新しい Simulink モデルを開きます。新しいモデルを開く

  2. [情報表示] メニューで、[自動生成名の非表示] チェック ボックスをオフにします。

  3. ライブラリ ブラウザーを開きます。Simulink ライブラリ ブラウザーを開く

  4. Subsystem ブロックを追加します。Ports & Subsystems ライブラリから 5 つの Subsystem ブロックを新しいモデルにドラッグします。

    次に示すように、Subsystem ブロックを配置し、名前を変更します。ブロック名をダブルクリックし、新しい名前を入力します。

コンポーネント間のインターフェイスの定義

サブシステム間の入出力の接続 (信号線など) を特定します。入力値と出力値はシミュレーション中に動的に変化します。ブロックを結ぶ線はデータ転送を表します。以下の表は、各コンポーネントの入力と出力を示しています。

ブロック入力出力メモ
Inputsなし

右車輪への力

左車輪への力

 
Right Wheel右車輪への力右車輪の速度方向を持つ。負は逆方向を意味
Left Wheel左車輪への力左車輪の速度方向を持つ。負は逆方向を意味
Rotation右車輪と左車輪の速度差回転角度反時計回りに測定
Coordinate Transformation

通常の速度

回転角度

X 方向の速度

Y 方向の速度

 
Sensor

X 座標

Y 座標

なしモデル化のためのブロックは不要。センサーのダイナミクスは設計タスクの一部。

この表から、一部のブロック入力はブロック出力と完全には一致していないことが分かります。そのため、各コンポーネントのダイナミクスに加えて、以下についてもモデル内で計算しなければなりません。

  • Rotation への入力 — 2 つの車輪の速度を減算し、2 で割ります。

  • Coordinate Transformation への入力 — 2 つの車輪の速度の平均を求めます。

  • Sensor への入力 — Coordinate Transformation の出力を積分します。

車輪の速度の絶対値は常に等しく、その仮定の下において、計算は正確になります。

必要なコンポーネントを追加し、接続を確定します。

  1. 各サブシステムに必要な入力端子と出力端子を追加します。Subsystem ブロックをダブルクリックします。

    新しい Subsystem ブロックにはそれぞれ 1 つの Inport (In1) ブロックと 1 つの Outport (Out1) ブロックが含まれます。これらのブロックは、モデルの階層構造における次の上位レベルとの信号インターフェイスを定義します。

    Inport ブロックはそれぞれ Subsystem ブロックに入力端子を作成し、Outport ブロックはそれぞれ出力端子を作成します。これらのブロックの名前が、モデルにより入力端子/出力端子名として利用されます。入力信号と出力信号にブロックをさらに追加します。Simulink エディターのツール バーで、[親に移動] ボタン をクリックして最上位レベルに戻ります。

    各ブロックについて、次のように Inport ブロックと Outport ブロックを追加し、名前を変更します。

    Inport ブロックをコピーして新しいブロックを作成するときは、[貼り付け] オプションを使用しなければなりません。

  2. 表示されている左車輪と右車輪の速度から、必要な入力を計算します。

    1. Math Operations ライブラリから Add ブロックを追加し、2 つの車輪コンポーネントの出力を接続します。ソース ブロックの出力端子をクリックしてから、接続先ブロックの入力端子をクリックします。Gain ブロックを追加して、パラメーターを 1/2 に設定します。Coordinate Transform サブシステムに入力する直線運動速度を計算し、Add ブロックの出力を、この Gain ブロックに接続します。

    2. Math Operations ライブラリから Subtract ブロックを追加し、2 つの車輪コンポーネントの出力を接続します。Gain ブロックを追加して、パラメーターを 1/2 に設定します。Rotation サブシステムに入力する速度差を計算し、Subtract ブロックの出力を、この Gain ブロックに接続します。

  3. X と Y の速度から、X 座標と Y 座標を計算します。Continuous ライブラリから Integrator ブロックを 2 つ追加し、Coordinate Transform ブロックの出力を接続します。Integrator ブロックへの初期条件は 0 のままにします。

  4. 以下のように、システムの接続を完成させます。

パラメーターとデータ

モデルに含まれるパラメーターと、その値を特定します。各値を常に固定にするか、シミュレーションごとに変化させるかは、モデリング目標に基づいて決定します。モデリング目標に関与するパラメーターは、モデル内に明示的に表現する必要があります。以下の表は、各コンポーネントをモデル化するときの詳細度を決定するのに役立ちます。

パラメーターブロック記号値/単位メモ
質量Left/Right Wheelm2.5 kg 変数
転がり抵抗Left/Right Wheelk_drag30 Ns2/m変数
ロボットの半径Rotationr0.15 m変数
初期角度Rotationなし0固定
初期速度Left/Right Wheelなし0.0固定
初期座標積分器なし0.0固定

Simulink は、MATLAB® ワークスペースを使用してパラメーターを評価します。MATLAB コマンド ウィンドウで、以下のパラメーターを設定します。

m = 2.5;
k_drag = 30;
r = 0.15;

関連するトピック