【参考】シミュレーション機能の説明

AGXUnity Terrainについて

概要

以下の画像の通り、MainSceneのHierarchyウィンドウにあるTerrain GameObjectを選択すると、InspectorウィンドウからTerrainの設定にアクセスができる。

_images/image47.png

...(中略:既存内容)...

  • ロックしたときに土砂放土機能が発生しないように、ロックが有効化・無効化したときにUnity Eventを発生させ、そのイベントをDump Soil ComponentのEnableSpawnParticles、DisableSpawnParticlesメソッドと繋がっているよう設定した。(この2つメソッドはDump SoilのSpawn Particles Enabledプロパティを設定する)。

シミュレーションパフォーマンスについて

ベンチマーク

参考としてパフォーマンスベンチマークを実施した。操作手順は以下の通り。

ベンチマークシナリオ1:スタンバイ

初期

  • プログラムの初期姿勢をそのまま

  • グラフィカル ユーザー インターフェイス, アプリケーション 自動的に生成された説明Sceneウィンドウを使わず、解像度640x360のGameウィンドウのみでシミュレーションを表示。

操作

  • 指令値を動かさない

  • PerformanceMeasure Componentを利用して8秒間のパフォーマンスを測定する。

_images/image10.png

結果

AGX Dynamicsステップ時間

UnityのFrame時間

最低値

4.619 ms

2.577 ms

最大値

7.426 ms

36.966 ms

平均

5.358 ms

5.405 ms

中央値

5.170 ms

3.166 ms

ベンチマークシナリオ2A:掘削動作(粒子数:430個)

初期

  • 初期姿勢から、バケットが地面に接地する直前の位置になるようにアームの指令値を0.7 radianに設定し、これをベンチマークの初期姿勢とする。

  • Terrain MaterialのPresetをDirtに設定。

  • Sceneウィンドウを使わず、解像度640x360のGameウィンドウだけでシミュレーションを表示。

操作

  • ROSのサンプルプログラムを使い最大速度(0.4 radian/s)でアームを動かして、PerformanceMeasureを利用して8秒間パフォーマンスを測定する。

  • 動作については、「Benchmark_DiggingUsingOnlyArm_A_Dirt. mp4」動画を参照。

  • 測定時の最大粒子数は430個になった。

   初期姿勢:             終了姿勢(8秒後):

グラフィカル ユーザー インターフェイス, Web サイト 自動的に生成された説明 座る, フロント, ベンチ, テーブル が含まれている画像 自動的に生成された説明

結果

AGX Dynamicsステップ時間

UnityのFrame時間

最低値

5.893 ms

2.773 ms

最大値

23.39 ms

55.531 ms

平均

10.643 ms

15.676 ms

中央値

9.894 ms

15.909 ms

ベンチマークシナリオ2B:掘削動作(粒子数:950個)

初期

  • 初期姿勢から、バケットが地面に接地する直前の位置になるようにアームの指令値を0.3 radianブームの指令値を0.15 radianまで動かし、ベンチマークの初期姿勢とする。

  • Excavator_zx135uのInspector経由でアームのMax Forceを300000 Nに設定。

  • Terrain MaterialのPresetはDirtに設定。

  • Sceneウィンドウを使わず、解像度640x360のGameウィンドウのみでシミュレーションを表示。

操作

  • ROSのサンプルプログラムを使い最大速度(0.4 radian/s)でアームを動かして、PerformanceMeasureを利用して8秒間パフォーマンスを測定する。

  • 動作については「Benchmark_DiggingUsingOnlyArm_B_Dirt. mp4」動画を参照。

  • 測定時の最大粒子数は950個となった。

   初期姿勢:             終了姿勢(8秒後):

グラフィカル ユーザー インターフェイス 自動的に生成された説明 image6

結果

AGX Dynamicsステップ時間

UnityのFrame時間

最低値

6.688 ms

2.907 ms

最大値

19.411 ms

68.496 ms

平均

13.109 ms

27.364 ms

中央値

12.814 ms

24.797 ms

ベンチマークシナリオ3:一連のオペレーションサイクル(掘削→積載→運搬→放土)

初期

  • プログラムの初期姿勢を使用

  • Terrain MaterialのPresetをDirtに設定。

  • Sceneウィンドウを使わず、解像度640x360のGameウィンドウだけでシミュレーションを表示

操作

  • バケットによって荷台に土砂を積載する動作を3回実施し、その後クローラダンプで土砂運搬し、放土する。

  • 動作については、「Benchmark_FullCycle_Dirt.mp4」の動画を参照。

結果

AGX Dynamicsステップ時間

UnityのFrame時間

最低値

4.679 ms

2.581 ms

最大値

25.033 ms

54.747 ms

平均

7.76 ms

8.273 ms

中央値

6.782 ms

6.868 ms

シミュレーションパフォーマンスのまとめ

上記ベンチマークの結果より、評価用の開発環境では、1000個程度の粒子が発生するシナリオに対して、リアルタイムでのシミュレーションを実現することができた。

なお、”RealTimeTracker : Unity has skipped XXXs game time (at frame X)”というメッセージがConsoleウィンドウに出力された場合には、UnityのFrame演算時間がMaximum Allowed Timestepより大きくなったことを意味し、リアルタイムでの実行ができなかったことが分かる。