【参考】シミュレーション機能の説明
AGXUnity Terrainについて
概要
以下の画像の通り、MainSceneのHierarchyウィンドウにあるTerrain GameObjectを選択すると、InspectorウィンドウからTerrainの設定にアクセスができる。
...(中略:既存内容)...
ロックしたときに土砂放土機能が発生しないように、ロックが有効化・無効化したときにUnity Eventを発生させ、そのイベントをDump Soil ComponentのEnableSpawnParticles、DisableSpawnParticlesメソッドと繋がっているよう設定した。(この2つメソッドはDump SoilのSpawn Particles Enabledプロパティを設定する)。
シミュレーションパフォーマンスについて
ベンチマーク
参考としてパフォーマンスベンチマークを実施した。操作手順は以下の通り。
ベンチマークシナリオ1:スタンバイ
初期
操作
指令値を動かさない
PerformanceMeasure Componentを利用して8秒間のパフォーマンスを測定する。
結果 |
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秒後):
結果 |
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秒後):
結果 |
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より大きくなったことを意味し、リアルタイムでの実行ができなかったことが分かる。




