Main Content

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

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

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

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

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

A flat circular robot is shown from the top. The center of the circular robot perimeter is the origin of the polar coordinate system. The direction of motion is indicated by the angle theta, which is marked as about 30 degrees above the horizontal axis pointing right. The wheel axis is perpendicular to the direction of motion. The wheels are lined up parallel to the direction of motion.

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

モデリング目標の決定

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

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

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

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

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

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

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

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

  • 各コンポーネントの入力と出力は何か。コンポーネント間の接続を示す図を描画します。この図は、モデル内の信号フローの可視化、各信号のソースおよびシンクの特定、すべての必要なコンポーネントが存在しているかどうかの判定に役立ちます。

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

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

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

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

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

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

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

  • 直線運動の特性

  • 回転運動の特性

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

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

The block diagram lists these components from left to right: force inputs, left wheel, right wheel, rotation computation, coordinate transformation, sensor.

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

  1. 新しい Simulink モデルを開きます。新しいモデルを開くを参照してください。

  2. ライブラリ ブラウザーを開きます。Simulink ライブラリ ブラウザーを開くを参照してください。

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

  4. サブシステムをクリックします。[書式設定] タブで、[自動] ドロップダウン リストをクリックします。[自動ブロック名の非表示] チェック ボックスをオフにします。

    The Auto drop-down list is expanded. The Hide Automatic Block Names check box is cleared.

  5. 次に示すように、Subsystem ブロックを配置し、名前を変更します。ブロック名を変更するには、ブロック名をダブルクリックしてテキストを編集します。

    Five Subsystem blocks have the names: Inputs, Left Wheel, Right Wheel, Rotation, and Coordinate Transformation.

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

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

ブロック入力出力関連情報
Inputsなし

右車輪への力

左車輪への力

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

通常の速度

回転角度

X 方向の速度

Y 方向の速度

該当なし
Sensor

X 座標

Y 座標

なしモデル化のためのブロックは不要。

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

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

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

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

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

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

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

    An Inport block named In1 connects to an Outport block named Out1.

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

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

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

    The five Subsystem blocks are shown with previews of the subsystem contents visible. In the Subsystem block named Inputs, Outport blocks named Left force and Right force are visible.

    Inport ブロックをコピーして新しいブロックを作成するときは、[貼り付け] (Ctrl+V) オプションを使用します。

  2. 左車輪と右車輪の速度から Coordinate Transform および Rotation サブシステムに必要な入力を計算します。

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

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

      The Subsystem block named Left Wheel is above the Subsystem block named Right Wheel. The input port of both blocks is named Force, and the output port is naemd Speed. Both output port connect to an Add block that connects to a Gain block with the value of 1/2. Both output ports also connect to a Subtract block that subtracts the speed of the left wheel from the speed of the right wheel and then connects to a Gain block with a value of 1/2.

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

    The Subsystem named Coordinate Transform has two input ports, named Linear speed and Angle, and two output ports named X speed and Y speed. Both output ports connect to an Integrator block.

  4. システムの接続を完成させます。

    In the completed model, the Subsystem block named Subsystem connects to the Subsystem blocks named Left Wheel and Right Wheel. The wheel subsystems connect to an Add block that connects to a Gain block with the value of ½ that connects to the Subsystem block named Coordinate Transform. The wheel subsystems also connect to a Subtract block that subtracts the left wheel speed from the right wheel speed and connects to a Gain block with the value of ½. The Gain block connects to the Subsystem block named Rotation that connects to the Subsystem block named Coordinate Transform. Both of the output ports of the Coordinate Transform subsystem connect to an integrator block.

パラメーターとデータ

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

パラメーターブロック記号タイプ
質量

Left Wheel

Right Wheel

m2.5 kg 変数
転がり抵抗

Left Wheel

Right Wheel

k_drag30 Ns2/m変数
ロボットの半径Rotationr0.15 m変数
初期角度Rotationなし0 ラジアン固定
初期速度

Left Wheel

Right Wheel

なし

0 m/s

0 m/s

固定
初期 (X, Y) 座標積分器なし(0, 0) m固定

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

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

関連するトピック