ふるお〜と!- FullAuto

AI・ロボットが普及しBI(ベーシックインカム)が早急に実現されることを願う元ニートのブログ

ふるお〜と!-FullAuto

【SDF? | URDF?】シミュレーション用のロボットモデルはどのファイル形式で記述すべきか【.dae? |.stl?】

以前私はロボットのモデルをDAE形式でファイルを作成し、 SDF形式の<collision>と<visual>の2つの項目を一つの.daeでまとめて取り扱っていました。

      <link name="body">
        <visual name="visual">
          <geometry>
            <mesh><uri>file://Body.dae</uri></mesh>
          </geometry>
        </visual>
        <collision name="collision">
          <geometry>
            <mesh><uri>file://Body.dae</uri></mesh>
          </geometry>
        </collision>
      </link>

メインのファイルフォーマット

URDF vs SDF

URDF SDF
SDFにしかないプロパティは<gazebo>タグを埋め込むことによって記述できる URDFのTransmissionを記述できない

というわけで今のところURDFで記述するのが無難なようです。

Visual(Mesh)のファイルフォーマット

メッシュを指定しないで記述 メッシュ指定:DAE & STL
そのロボットがbox,sphare,cylinderなどの単純な組み合わせで表せる場合に使用する ←以外のリッチな見た目を表示させたい場合に使用する。但し、STLの場合、テクスチャは別ファイルで用意する

DAEは3Dジオメトリだけでなく、物理、キネマティクス、アニメーション/モーフィング、シェーダー、管理レベルオブディテールなどもエンコードすることができます。

Collisionのファイルフォーマット

Visualをmeshで指定しないで記述した場合はそのまま、その<getometry>をコピペしましょう。

DAE vs STL

DAE STL
<visual>で使用したDAEをそのまま使用できる。但し、バイナリ形式のSTLファイルのほうが計算コストが低いので、できる限りSTLで用意する。 テクスチャは別に用意する

Blenderを使用している場合は「ファイル」→「エクスポート」→「STL」で出力し、それを使用できるかもしれない。

まとめ

1

まずは、基本的なオブジェクト(box,sphare,cylinder)で作成する。

プレビュー表示方法

Visual Studio Code Extension for ROSをインストールする。
・または、Model your robots in URDF and show them here!を使う。

2

より時間と労力をかけて、見た目リッチでベスト(計算コストが低い)な状態にもっていきたいならコレか!?

プロパティ ファイル形式
メインのファイル URDF
<visual> DAE
<collision> STL

参考

gym-ignition-models/gym_ignition_models/panda at master · robotology/gym-ignition-models · GitHub

検討:どのソフトウェアで3Dモデリングするべきか

STL出力するファイルのソフトウェア間(BlenderFusion360など)の違いについて。
とりあえず、Blenderで作成すれば色々と対応できそうだが、Fusion360の操作性も捨てがたい。
Fusion360は「Collada Writer」「Simlab Plugins」などのプラグインを導入することによってDAEでエクスポートすることができる。

また、URDFで出力できるツールがある。

GitHub - syuntoku14/fusion2urdf: A Fusion 360 Script to export URDF