パラメータのチューニング方法 (AGX)
本プロジェクトの物理シミュレーションは AGX Dynamics (AGXUnity) を用いています。
そのため、Unity 標準の PhysX (Project Settings > Physics) や ArticulationBody の設定を変更しても、
AGX 側の挙動は原則として変化しません。
この章では、AGXUnity で調整すべき主要パラメータ(安定性、関節駆動、接触、土砂/地形、性能)をまとめます。
安定性・計算性能に関わる基本設定
Simulation Manager
AGXUnity のシミュレーション全体設定は AGXUnity.Simulation ゲームオブジェクトで管理されます。
特に次の項目は、安定性/性能に直結します。
項目 |
説明 |
|---|---|
Time Step |
AGX の時間刻み。小さくすると安定する一方で計算コストが増加する。Unity 側の更新周期と整合するように設定する。 |
Auto Stepping Mode |
|
Gravity |
重力ベクトル。 |
Solver Settings
ソルバ設定は AGXUnity.SolverSettings から行います。
関節や接触が不安定(振動、貫通、滑りすぎ、収束しない)な場合は、ここを調整します。
項目 |
説明 |
|---|---|
Number Of Threads |
AGX の使用スレッド数。性能に影響するが、増やしても常に速くなるとは限らない。 |
Resting Iterations |
反復ソルバの反復回数。静止接触の安定性に影響する。 |
Dry Friction Iterations |
乾性摩擦の反復回数。摩擦による滑り/停止の安定性に影響する。 |
PPGS Resting Iterations |
Terrain/粒子などで使われる PPGS の反復回数。土砂/地形が不安定な場合に影響する。 |
Warm Start Direct Contacts |
静的に近いシーンで接触の収束が改善することがある。 |
関節・アクチュエータのチューニング (AGX Constraint)
AGXUnity では関節やシリンダ等の駆動は AGXUnity.Constraint と、その Controller( LockController / TargetSpeedController 等)で実現されます。
本プロジェクトでは、これらを扱いやすくするためのラッパとして PWRISimulator.ConstraintControl を使用しています。
ConstraintControl の主要パラメータ
ConstraintControl は制御モードに応じて Controller を切り替え、指令値・最大力などを反映します。
項目 |
説明 |
|---|---|
controlType |
|
controlValue |
指令値(controlTypeに応じて角度/速度/力が設定できます)。 |
controlMaxForce |
Controller が出せる力/トルク上限。大きいほど追従は良くなるが、振動・発散の原因にもなる。 |
Compliance |
制御や拘束の「柔らかさ」。小さいほど硬く(強く)拘束されるが、安定性が下がる場合がある。 |
Damping |
制御や拘束の減衰。振動を抑える方向に働く。 |
deadTime |
指令入力から実際に反映するまでの遅れ(むだ時間)。制御系評価用。 |
振動/発散が出たときの対処方法
次の順で調整すると安定することが多いです。
Simulation.TimeStepを小さくするSolverSettingsの Iterations(Resting/DryFriction/PPGS)を増やすcontrolMaxForceを下げる(過大入力を抑える)Complianceを大きくする(硬すぎる拘束を緩める)Dampingを増やす(減衰を入れて振動を殺す)
接触(摩擦・反発)パラメータのチューニング
摩擦や反発は、Unity の PhysicMaterial ではなく、AGXUnity の ShapeMaterial / ContactMaterial によって設定します。
マテリアルの組み合わせ(Material1/Material2)ごとに ContactMaterial を作成し、摩擦係数や接触剛性などを設定します。
ContactMaterial の主要パラメータ
項目 |
説明 |
|---|---|
Friction Coefficients |
摩擦係数。値が大きいほど滑りにくい。 |
Surface Viscosity |
摩擦方向の粘性(接触での摩擦に関するコンプライアンス相当)。 |
Youngs Modulus |
接触の剛性(硬さ)。大きいほど硬いが、不安定になりやすいので注意。 |
Damping |
接触のめり込み解消の速さに関係する。 |
Restitution |
反発係数(跳ねやすさ)。 |
土砂・地形(Deformable Terrain)のチューニング
土砂・掘削は AGX Terrain / Granular によって表現されます。 調整対象は大きく次の3つです。
AGXUnity.Model.DeformableTerrain: 地形(掘削/変形を管理。視覚化はUnity Terrainを通して行われる)AGXUnity.Model.DeformableTerrainProperties: 土砂生成・崩壊・締固め等の挙動の設定AGXUnity.Model.DeformableTerrainShovelSettings: バケット/ブレード等の掘削モデルの設定
DeformableTerrainProperties
項目 |
説明 |
|---|---|
Deformation Enabled |
掘削/崩壊/締固めなどの地形変形を有効にする。 |
Create Particles Enabled |
掘削時に動的土砂粒子を生成するか。無効にすると処理が軽くなるが、土砂表現は簡略化される。 |
SoilParticleSizeScaling |
動的土砂粒子のサイズスケーリング。大きくすると粒子数が減り、性能が改善する代わりに表現が粗くなる。 |
SoilMergeSpeedThreshold / SoilParticleMergeRate |
粒子が地形へ戻る条件と速度。土砂が散らばり続ける/逆に消えすぎる場合に調整する。 |
DeformableTerrainShovelSettings
バケット/ブレードによる掘削で、抵抗が弱い/強すぎる、土砂が出ない/出すぎる等がある場合は、次を調整します。
項目 |
説明 |
|---|---|
PenetrationDepthThreshold |
歯先が地形に潜り込んだ深さに応じた抵抗の立ち上がり。 |
PenetrationForceScaling / MaxPenetrationForce |
掘削抵抗係数と最大値。 |
NoMergeExtensionDistance |
バケット近傍で土砂が地形へマージしない領域の距離しきい値。土砂が「消える」ように見える場合に調整する。 |
トラブルシュート(よくある症状と対処)
症状 |
解消方法 |
|---|---|
関節が震える/発散する |
|
接触が沈み込みすぎる/貫通する |
|
摩擦で滑りすぎる/引っかかりすぎる |
|
土砂が重い(FPSが落ちる) |
|