Humanoid Virtual Athletics Challengeにおけるシミュレーション速度について

シミュレーション速度が実時間より遅くなるとのことでしたが、恐らくフィールドモデルの構成に問題があるかと思います。

現状でフィールドモデル全体がひとつのOBJファイルによるひとつのメッシュになっていますが、これは干渉チェッカの設計上、あまりよろしくありません。この場合、ロボットの各リンクとフィールドの干渉検出において、毎回フィールド全体のポリゴンを参照してそことの局所的な接触状況を計算するようになってしまっている可能性があります。

つまり、ご存知かと思うのですが、干渉チェックは通常2段階に分けて行なうようになっていて、最初に各モデルごとのバウンディングボックスなどを参照して大まかに干渉しているかどうかを区別して、その後干渉している可能性のある組み合わせのみポリゴン単位でみていくのですが、フィールド全体がひとつのメッシュだと、毎回多くの組み合わせで細かい方のフェーズまでみてしまっている可能性があります。これがあると干渉チェックが遅くなってしまいます。

解決方法としては、フィールドモデルを適当な単位で分けるとよいです。その場合はリンクも分けるようにして、固定関節でつなぐようにします。あるいはそもそもBodyを分けてしまってもよいです。例えばスタート地点、不整地、階段、坂、ゴール、はしご、といったブロックごとに分けるだけでもよくなると思います。また階段などはある程度の段ごとに分けることも有効です。また今回のフィールドでしたら、かなりの部分がプリミティブで表現できそうですので、Bodyファイルでプリミティブで記述することも有効です。(もちろんその場合は作成するのに手間がかかりますが…。)

これを行なうことで、恐らくではありますが、シミュレーション速度はかなり改善して、実時間よりも計算が軽くできるのではないかと思います。

なるほど。CADで単一パーツとして描いて出力してるので単一メッシュになってしまってました。三角形レベルでブロードフェーズやるのかと勝手に想像してましたがリンク単位なのですね。次からパーツ分けしようと思います。ありがとうございます。