メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

Simulink におけるシステムの設計

モデルベース デザインの中核にあるのが、物理コンポーネントのモデルと、設計、テスト、および実装作業のベースとなるシステムのモデルです。このチュートリアルでは、平型ロボットのモデルにアラート システムを追加して、設計されたコンポーネントを既存のシステム モデルに追加する方法を説明します。

システム モデルを開く

このモデルは、家庭用お掃除ロボットに似た、2 つの車輪によって移動や回転が可能な平型ロボットです。

The system_model model.

設計したコンポーネントと設計目標の特定

設計目標を定めることは、設計タスクに欠かせない最初のステップです。どんなに単純なシステムでも、複数の、場合によっては競合する設計目標が考えられます。モデル例では、以下の目標について検討します。

  • 車輪を希望する速度で回転させるため、力の入力を変化させるコントローラーを設計する。

  • 装置を既定の経路で移動させるための入力を設計する。

  • 装置を線に追従させるためのセンサーとコントローラーを設計する。

  • 障害物をよけながら最短経路を使用して装置を特定のポイントに到達させるための計画アルゴリズムを設計する。

  • 障害物をよけながら特定のエリアを装置に動き回らせるためのセンサーとアルゴリズムを設計する。

このチュートリアルでは、アラート システムを設計する方法について説明します。既存のモデルを使用して、障害物からの距離を測定するセンサーに必要なパラメーターを特定します。この例では、距離を正確に測定する完全なセンサーを想定しています。アラート システムは、これらの測定値を一定の間隔でサンプリングして、出力を測定値の 0.05 m 以内に保ち、ロボットが障害物に衝突する前に停止可能なタイミングでアラートをトリガーします。

シミュレーションを使用したシステムの動作の解析

この新しいコンポーネントを設計するには、ロボットの直線運動を解析して、次のことを特定する必要があります。

  • 最高速度時に車輪への電力が遮断された場合に、ロボットが移動できる距離

  • ロボットの最高速度

運動を開始する力の入力信号を使用してモデルをシミュレートし、ロボットが一定の速度に達するまで待ってから、力を 0 に設定します。

  1. モデルで Inputs という名前のサブシステムをダブルクリックします。

  2. 既存のステップ入力を削除し、Pulse Generator ブロックを追加します。

  3. Pulse Generator ブロックに、次のパラメーターを設定します。

    • 振幅: 1

    • 周期: 20

    • パルス幅: 15

    これらのパラメーター値は、ロボットが最高速度に到達するのに役立ちます。パラメーターを変更すると、ロボットの動きへのさまざまな値の影響を確認できます。

  4. モデルを 20 秒間シミュレートします。

  5. シミュレーション結果を解析します。シミュレーション データ インスペクターを開くために、[データ インスペクター] をクリックします。このモデルでは、linear speed 信号、X position 信号、および Y position 信号のデータがログ記録されます。

    サブプロット レイアウトを変更して、3 つの信号すべてを表示します。[可視化とレイアウト] ボタン をクリックします。次に、[基本レイアウト] で下分割レイアウト を選択します。

    • 上のサブプロットで、linear speed 信号をプロットします。

    • 左下のサブプロットで、X position 信号をプロットします。

    • 右下のサブプロットで、Y position 信号をプロットします。

    The Simulation Data Inspector show the speed and position of the robot over the 20 second simulation.

    上のサブプロットでは、シミュレーション時間 3 秒に入力の力を表すパルスが 0 に低下した後にロボットの速度が急速に低下していることが示されています。速度は漸近的に 0 に近づくものの、0 に達することはありません。外力なしで低速のダイナミクスについて正確にモデル化するには、システムのさらに複雑な表現が必要になります。しかし、例を示す目的としては、システムのこの近似表現で十分です。

    下のサブプロットでは、シミュレーション中のロボットの xy の位置が示されています。ロボットは y 方向には移動しません。x 方向では、シミュレーション開始時に位置が急激に変化します。シミュレーション時間約 3 秒に、ロボットの速度の低下に伴って位置の変化が遅くなります。

ズームとパンを行って、ロボットの最終位置を見つけることができます。[ズームイン] ボタン をクリックしてから、ロボットの位置を示す左下のサブプロットをクリックおよびドラッグしてズームインします。時間 3 秒におけるロボットの位置は約 0.55 m です。シミュレーションの終了時におけるロボットの位置は約 0.7 m です。シミュレーションの終了時にロボットの速度は 0 に近くなるため、外力が 0 に低下した後にロボットが移動する距離は 0.16 m 足らずであると結果で示されています。

The Simulation Data Inspector shows a closer view of the robot position over the 20 second simulation. The maximum value on the y-axis is 0.7.

カーソルを使用して最高速度を特定できます。[データ カーソルを表示/非表示にします] ボタン をクリックします。カーソルを速度曲線がフラットになっている領域に配置します。データ カーソルのラベルに、ロボットの最高速度が 0.183 m/s であることが示されます。ロボットが 0.05 m 移動するのにかかる時間を計算するには、0.183 m/s で 0.05 m を除算します。結果として 0.27 秒が得られます。

The Simulation Data Inspector the robot speed with a cursor to find the maximum velocity.

コンポーネントの設計と設計の検証

センサーの設計は、次のコンポーネントで構成されます。

  • ロボットと障害物の間の距離の測定値 — この例では、測定値は正確であるものと仮定します。

  • アラート システムが行う各距離測定間の時間間隔 — 測定誤差を 0.05 m 未満に保つには、サンプリング間隔を 0.27 秒より短くしなければなりません。0.25 秒を使用します。

  • センサーがアラートを発生させる距離 — 解析の結果、減速はロボットが障害物から約 0.16 m の位置になる時点までに開始しなければならないことが分かります。実際のアラート距離には離散測定の誤差 0.05 m も考慮しなければなりません。

設計したコンポーネントの追加

センサーを作成します。

  1. 4 つの入力端子と 1 つの出力端子をもつサブシステムを作成します。サブシステムはロボットの x および y 座標の入力と障害物の x および y 座標の入力を受け取ります。センサーによって生成されたアラート信号は出力端子に接続されます。

    The view of the sensor subsystem in the parent diagram shows the input and output ports.

  2. 距離測定サブシステムを作成します。Sensor model という名前のサブシステムで、Subtract ブロック、関数 magnitude^2 をもつ Math Function ブロック、Sum ブロック、および Sqrt ブロックを使用して距離の計算を実装します。サブシステム内で、入力端子の配列が Subsystem ブロック インターフェイスの端子の配列に一致している必要がないことに注意してください。

    Blocks inside the subsystem that represents the sensor implement the distance calculation.

  3. サンプリングをモデル化するために、Discrete ライブラリから Zero-Order Hold ブロックをサブシステムに追加し、ブロックの [サンプル時間] パラメーターを 0.25 に設定します。

  4. 距離の計算結果を Zero-Order Hold ブロックの入力に接続します。

  5. アラート ロジックをモデル化するために、Logic and Bit Operations ライブラリから Compare to Constant ブロックを追加し、次のブロック パラメーターを設定します。

    • 演算子: <=

    • 定数値: 0.21

    • 出力データ型: boolean

    これらのパラメーター値では、ロボットと障害物間の距離を示す入力値が 0.21 以下の場合、ブロックの出力値は 1 になります。

  6. Zero-Order Hold ブロックの出力を Compare to Constant ブロックの入力に接続します。

  7. 最後に、Compare to Constant ブロックの出力を Alert という名前の Outport ブロックに接続します。

    The block diagram shows the contents of the subsystem that models the sensor.

設計の検証

Constant ブロックを Sensor model サブシステムへの入力とし、障害物の位置が X = 0.65、Y = 0 であるものとして設計をテストします。このテストは、X 方向の設計機能を検証します。異なる経路について同様のテストを作成することができます。このモデルはアラートを生成するだけで、ロボットは制御しません。

  1. 障害物の位置を設定します。Sources ライブラリから Constant ブロックを 2 つ追加し、その定数値を 0.650 に設定します。ロボットの位置出力をセンサーの入力に接続します。

  2. データをログに記録するために、Outport ブロックを Sensor model サブシステムに接続します。

  3. X position 信号と Y position 信号を信号のログ記録用にマークします。両方の信号を選択します。[シミュレーション] タブで、[信号のログ] をクリックします。

    The view of the top model.

  4. モデルのシミュレーションを実行します。

シミュレーション データ インスペクターで、[可視化とレイアウト] ボタン をクリックして、プロット レイアウトを 2×1 のレイアウトに変更します。上のサブプロットで、X position 信号をプロットします。下のサブプロットで、Alert 信号をプロットします。

ロボット位置のプロットは、前の実行と同じに見えます。アラート信号のプロットでは、ロボットが障害物の位置から 0.21 m 以内になると、アラート信号値が 1 になっており、このコンポーネントの設計要件が満たされていることが示されています。

The Simulation Data Inspector shows the position of the robot over the 20 second simulation in the upper subplot and the value of the alert signal over the 20 second simulation in the lower subplot.

複雑なコンポーネントおよび形式的要件を伴う実際のシステムに対応するため、Simulink® 製品ファミリには、設計プロセスを改善および自動化するための追加のツールが用意されています。Requirements Toolbox™ は、要件を形式的に定義し、その要件をモデル コンポーネントとリンクします。Simulink Control Design™ は、このロボットのコントローラーを構築するような場合に、設計を支援します。Simulink Verification and Validation™ 製品は、コンポーネントおよびシステムをテストするための形式的フレームワークを定義します。

参考

ブロック

ツール

参考

トピック