タスク4.1 - 標準3Dロジックを使用したAGV

タスクの概要

このチュートリアルを完了すると、最終的に病院全体のAGVネットワークを構築できます。AGVは、病院の積み荷エリアとそれ以外の場所間で医薬品、リネン類、廃棄物を輸送します。

この最初のチュートリアルタスクでは、標準の3Dロジックのみを使用して非常に基本的なAGVネットワークを作成することに焦点を当てます。AGVパスを作成し、それらのパスに沿って3Dオブジェクトをコントロールポイントに接続する方法を学習します。また、モデルに複数のAGVを追加する方法も学びます。

作業が完了すると、モデルは次の画像のようになります。

ステップ1 AGVパスを追加および接続する

このステップでは、AGVパスを追加および接続してメインのAGVネットワークを作成します。このネットワークは、AGVが処理するタスクを継続的に検索しながら巡回する循環経路になります。作業が完了すると、3Dモデルは次の画像のようになります。

ほとんどの場合、AGVのパスは他の3Dオブジェクトに使用するのと同じ方法で追加、移動、サイズ変更などができます。ただし重要な違いは、AGVのパスには2つの端点があることです。それぞれ始点と終点と呼ばれます。

始点はAGVがパスに入る場所であり、終点はAGVがパスから出る場所です。この2つの端点は繋がっていますが、個別に動かすことができます。カーブのパスには、パスの曲線を制御するために使用できる半径、開始角度、およびスイープ角度もあります。

この3DモデルのAGVパスレイアウトを作成するには:

  1. ライブラリで、[AGV]グループの横にある展開ボタン をクリックして、AGVオブジェクトを表示します。
  2. 直線パス]をクリックしてパス構築モードに入ります。パス構築モードに入ると、次の画像に示すようにマウスポインターがプラス記号に変わり、その横に[直線パス]アイコンが表示されます。
  3. 構築モードに入ったら、3DモデルでAGVパスの始点を配置する位置を見つけます。モデル内のその位置をクリックしてマウスポインターを左から右に動かすと、AGVパスの作成が開始することがわかります。
  4. パスが始点から28単位離れたところまでマウスポインターを移動します。最終的には、AGVのメインループパスは、X軸に沿って25単位、Y軸に沿って30単位の大きさになりますが、両端に1単位のスペースを残します。
  5. パス構築モードのままになっていることを確認し、さらに3つのパスを作成します。次の画像に示すように、コーナーのパスを繋がずに、約25x30単位の長さの正方形のパスを構築します。

  6. Escキーを押してパス構築モードを終了します。
  7. これらのパスを結合する前に、パスが反時計方向に移動するよう配置されていることを確認してください。各パス上の方向矢印は、AGVがこのパス上を移動する方向を示します。
    • 上側のパスは左から右に移動
    • 右側のパスは下から上に移動
    • 下側のパスは右から左に移動
    • 左側のパスは上から下に移動
  8. 次に、パスを結合します。ライブラリの[AGV]グループで、[結合パス]オブジェクトをクリックして、パス結合モードに入ります。パス結合モードに入ると、次の画像に示すようにマウスポインターがプラス記号に変わり、[結合パス]アイコンが横に表示されます。
  9. 結合モードの状態で、パスが強調表示されているかのように黄色に変わるまで、一方のパスの端点にマウスを置きます。パスをクリックし、最も近いパスの端点にマウスポインターを移動します。そのパスが強調表示されているかのように黄色に変わったら、パスをクリックします。パスが結合されます。
  10. 閉経路になるように残りのパスをすべて結合します。
  11. Escキーを押してパス結合モードを終了します。

この時点でシミュレーションモデルを保存することをおすすめします。

ステップ2 ネットワークに3Dオブジェクトを追加、接続する

このステップでは、モデルに次のようなさまざまな3Dオブジェクトを追加します。

  • 病院のアンロードドックとして機能し、最終的に医療品や清潔なリネン類の積み荷を受け取るキュー
  • ロードステーションでAGVが集荷するために、積み荷をステージングするのにかかる時間を表す2つのプロセッサ
  • TaskExecuterオブジェクト(これらのオブジェクトはデフォルトではAGVのように見えるため)
  • 積み荷を降ろすときに一時的にAGVの目的地として機能するシンク

おそらく最も重要なことは、このステップでコントロールポイントと呼ばれるAGVオブジェクトを使用して3DオブジェクトをAGVネットワークに接続する方法を学ぶことです。コントロールポイントは、固定リソースおよびタスク実行者がAGVネットワークとやり取りできるアクセスポイントです。固定リソースをコントロールポイントに接続することで、固定リソースは輸送を呼び出したり受け取ったりできます。また、タスク実行者をコントロールポイントに接続することで、タスク実行者はAGVネットワークに入って移動できます。

AGVネットワークは基本的にフローアイテムをある3Dオブジェクトから別の3Dオブジェクトに輸送するためのより洗練された方法ですが、基本的な輸送ロジックはタスク実行者を使用してフローアイテムを輸送する標準的な方法に非常に似ています。そのため、すべてのオブジェクトがポート接続で接続されていることを確認する必要があります。

作業が完了すると、3Dモデルは次の画像のようになります。

これらのオブジェクトを追加して接続するには:

  1. ライブラリの[AGV]グループで7つの[コントロールポイント]をドラッグして、上部の直線パスを除く各直線パスに2つのコントロールポイントを配置します。次の画像に示すように、各コントロールポイントをパスの辺から約5単位離して配置します。
  2. 分かりやすくするために、いくつかの新しいコントロールポイントの名前を次のように変更します。
  3. オブジェクト 新しい名前
    右上コーナーにあるコントロールポイント AGVEntryPoint
    左上コーナーにあるコントロールポイント MainDropOffPoint
    左下コーナーにあるコントロールポイント MainPickUpPoint
  4. 次の3Dオブジェクトをライブラリから3Dモデルに追加します。
    • 1つの[キュー](MainPickUpPointの近く)
    • 2つの[プロセッサ](MainPickUpPointの近く)
    • 1つの[シンク](MainDropOffPointの近く)
    • 1つの[TaskExecuter](AGVEntryPointの近く)
  5. 分かりやすくするために、オブジェクトの名前を次のように変更します。
  6. オブジェクト 新しい名前
    キュー UnloadingDock
    Processor1 ステージング1
    Processor2 ステージング2
    シンク ドロップオフ
    TaskExecuter AGV1
  7. AGV1からAGVEntryPointコントロールポイントへの接続(A接続)を作成してメニューを開きます。[トラベラーAGV]を選択します。AGVが接続されていることを示す赤い線が表示されます。
  8. 以下のオブジェクトに対して接続(A接続)を作成します。
    • ステージング1]プロセッサから[MainPickUpPoint]コントロールポイントへ
    • ステージング2]プロセッサから[MainPickUpPoint]コントロールポイントへ
    • DropOff]シンクから[MainDropOffPoint]コントロールポイントへ
    • UnloadingDock]キューから[ステージング1]プロセッサへ
    • UnloadingDock]キューから[ステージング2]プロセッサへ
    • ステージング1]プロセッサから[ドロップオフ]シンクへ
    • ステージング2]プロセッサから[ドロップオフ]シンクへ
  9. ステージング1]プロセッサからAGV1へのセンターポート接続(S接続)を作成します。
  10. 前の手順を繰り返して、[ステージング2]プロセッサをAGV1にも接続します。

作業が完了すると、モデルはこのステップの冒頭に表示した画像のようになります。

ステップ3 輸送ロジックを設定する

このステップでは、ステージングプロセッサが使用する基本的な輸送ロジックを作成し、AGVネットワークを使用してドロップオフシンクにアイテムを輸送します。ここでは、AGVを標準の3Dオブジェクトロジックに統合する方法を学びます。その後のステップで、それを処理フローと統合する方法を学びます。

このステップの最後に、アンロードドックに到着するアイテムのスケジュールを処理する簡単な処理フローも設定します。ここでは、2つのステージングプロセッサによってただちに処理される2つのフローアイテムのみを配送するようにスケジュールを設定します。将来的には、この到着スケジュールはもっと複雑になります。このステップの主な目的は、基本的な輸送ロジックが機能していることをテストすることです。

作業が終了すると、処理フローは次の画像のようになります。

各アクティビティの機能の概要を次に示します。

アクティビティ 説明
ソース:医療品の配送 [スケジュールソース]は、シミュレーションモデル中の特定の時間にトークンを作成するアクティビティです。ここでは、シミュレーションモデルの開始時にこのアクティビティを設定して2つのトークンを作成します。
オブジェクトを作成:アンロードドックのアイテム このアクティビティはボックスのフローアイテムを作成し、それを[UnloadingDock]キュー内に置きます。
シンク:作成したアイテム このアクティビティは、処理フローからトークンを削除します。デフォルト設定を使用します。

輸送ロジックを設定するには:

  1. ステージング1]プロセッサをダブルクリックして、プロパティウィンドウを開きます。[フロー]タブで[輸送を使用]チェックボックスをオンにします。
  2. OK]ボタンをクリックして変更を保存し、プロパティウィンドウを閉じます。
  3. ステージング2]プロセッサについても前の手順を繰り返します。
  4. メインツールバーで[処理フロー]ボタンをクリックして、メニューを開きます。新しい処理フローを作成するには、[一般処理フローを追加]を選択します。
  5. [クイックプロパティ]で、この新しい処理フローの名前をDeliveryScheduleに変更します。
  6. ライブラリの[フローチャート]グループから、[処理]形状を追加します。
  7. 分かりやすくするために、形状を「医療品」という名前に変更します。
  8. 次のアクティビティを処理フローに追加して、積み上げブロックを作成します。
    • スケジュールソース]([トークンの作成]の下)
    • オブジェクトを作成]([オブジェクト]の下)
    • シンク]([ベーシック]の下)
  9. 分かりやすくするために、新しいアクティビティの名前を次のように変更します。
  10. オブジェクト 新しい名前
    ソース ソース:医療品の配送
    オブジェクトを作成 オブジェクトを作成:アンロードドックのアイテム
    シンク シンク:作成したアイテム
  11. ソース:医療品の配送]アクティビティをクリックして選択します。[クイックプロパティ]の[到着]テーブルで、[]列の最初の行にあるセルを見つけます。このセルに「2」と入力します。
  12. オブジェクトを作成:アンロードドックのアイテム]アクティビティをクリックして選択します。[クイックプロパティ]で、[次の形式で作成]オプションが選択されていることを確認します。このオプションの下にあるボックスの横にある[サンプラー]ボタン をクリックして、サンプリングモードに入ります。
  13. 3Dモデルで、[UnloadingDock]キューをクリックしてメニューを開きます。サンプリングするには、[UnloadingDock]を選択します。

モデルをリセットして実行し、基本的なAGV輸送ロジックが機能していることをテストします。

モデルを適切に設定すれば、2つのプロセッサが2つのフローアイテムを処理します。処理が終了すると、AGVは1つのフローアイテムをピックアップして、それをシンクに輸送します。その後、再びループバックして別のフローアイテムを取得します。

モデルが期待通りに動作しない場合は、前に戻ってチュートリアルの以前のステップが正しく完了したことを確認してください。

ステップ4 2台目のAGVを追加する

このステップでは、AGVネットワークにさらにAGVを追加する方法を学習します。AGVを制御するために標準ロジックを使用している場合、複数のAGVの使用を開始すると、ディスパッチャーを使用するように切り替える必要があります。

作業が完了すると、3Dモデルは次の画像のようになります。

2番目のAGVを追加するには:

  1. AGV1を[ステージング1]と[ステージング2]プロセッサに接続しているセンターポート接続を取り外します(接続された2つのオブジェクトをクリックしながら、Wキーを長押しします)。
  2. ライブラリから次のオブジェクトをモデルに追加します。
    • ディスパッチャー
    • TaskExecuter
  3. 分かりやすくするために、オブジェクトの名前を次のように変更します。
  4. オブジェクト 新しい名前
    ディスパッチャー1 AGVDispatcher
    TaskExecuter AGV2
  5. ステージング1プロセッサからAGVDispatcherへのセンターポート接続(S接続)を作成します。
  6. 前の手順を繰り返して、ステージング2プロセッサをAGVDispatcherにも接続します。
  7. AGVDispatcherから両方のAGVへのポート接続(A接続)を作成します。
  8. AGV1をAGVEntryPointから離すようにドラッグして、コントロールポイントが3Dモデルに表示されるようにします。
  9. AGV2からAGVEntryPointコントロールポイントへのポート接続(A接続)を作成してメニューを開きます。[トラベラーAGV]を選択します。2番目のAGVが接続されていることを示す赤い線が表示されます。

モデルをリセットして実行します。

AGV1がドロップオフポイントに留まり動かないために、AGV2はフローアイテムが配送可能になるまでデッドロック状態になります。AGV1が動かないのは、処理するアンロードタスクがもうないためです。その結果、AGV1は処理する新しいタスクが割り当てられるまで現在の位置に留まります。現在のモデルでは、2つのフローアイテムがアンロードドックに到着するようにスケジュールするだけなので、新しいタスクが発生することはありません。

2つのAGVが処理する継続的な作業量を確保することで、この問題は解決できます。異なるAGVがそれぞれ競合することなく積み荷をシンクに配送できるように、シンクに複数のドロップオフポイントを追加することもできます。ただし、AGV処理フローテンプレートを使用する場合は、パークポイントを追加する方が簡単です。これについては、次のチュートリアルタスクで説明します。

結論

ここでは標準の3Dオブジェクトと標準の3Dロジックのみを使用して非常に基本的なAGVモデルを作成しました。次にこの基本モデルをもう少し複雑にします。次のチュートリアルタスクでは、AGV処理フローテンプレートの使用方法を学習し、ピックアップポイントとパーキングポイントをモデルに追加します。「チュートリアルタスク4.2 - 処理フローを使用したAGV」に進みます。