AirSimのEnableCollisionsとEnableCollisionPassthroghについてまとめました。

【AirSim】EnableCollisionsとEnableCollisionPassthrogh

AirSimでデータ収集する際に、シミュレーション内のドローンが壁や障害物にぶつかってスタックすることがよくあります。これがとてもわずわしいのですが、ドローンの設定を少し変えることで、この悩みを解消できます。

この記事では、シミュレーション内の衝突に関するパラメータ「EnableCollisions」と「EnableCollisionPassthrogh」についてご紹介します。

どんなときに役立つ?

APIのmoveToPositionAsyncやmoveOnPathAsyncで目的地を指定したときに、現在地と目的地の間に障害物があると、ドローンは衝突してしまいます。

このような衝突が発生したときの動作を、EnableCollisionsやEnableCollisionPassthroghで設定することができます。

どこで設定を記述するの?

パラメータEnableCollisionsとEnableCollisionPassthroghは、シミュレーション起動時に読み込まれるsetting.jsonで設定します。

ちなみにsetting.jsonは、~/Document/AirSimフォルダ内に置くと読み込まれます。

EnableCollisions

EnableCollisionsは、衝突という現象を扱うかどうかを設定するパラメータです。つまり、障害物をすり抜けられるかどうかを決めます。

Trueのとき

“EnableCollisions”: trueのとき、現実世界と同様に、ドローンは壁や障害物に衝突し、通り抜けできません。

Falseのとき

“EnableCollisions”: falseのとき、ドローンは壁や障害物に衝突してもゴーストのように通り抜けることができます。

EnableCollisionPassthrogh

EnableCollisionPassthroghは、衝突後にスタックを解消するような動きを自動でするかどうかを設定します。

Trueのとき

“EnableCollisionPassthrogh”: trueのとき、ドローンは壁や障害物に衝突すると通り抜けできませんが、衝突後に”ガッガッガ”と上下左右に振動しながら、無理やりスタックを解消するように動いてくれます。

小さな障害物であれば、大抵の場合、すぐにスタックを解消できます。

Falseのとき

“EnableCollisionPassthrogh”: falseのとき、ドローンは壁や障害物に衝突し、その場から動けなくなりスタックします。

setting.jsonの記述例

setting.jsonの記述例です。

{
  "SeeDocsAt": "https://github.com/Microsoft/AirSim/blob/master/docs/settings.md",
  "SettingsVersion": 1.2,
  "SimMode": "Multirotor",
  "Vehicles": {
    "drone": {
      "VehicleType": "SimpleFlight",
      "DefaultVehicleState": "Armed",
      "EnableCollisionPassthrogh": true,
      "EnableCollisions": true,
      "AllowAPIAlways": true
    }
  }
}

さいごに

AirSimの衝突に関するパラメータであるEnableCollisionsとEnableCollisionPassthroghについてまとめてみました。参考になれば幸いです。


以上です。

Ad.