以前私はロボットのモデルを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出力するファイルのソフトウェア間(BlenderやFusion360など)の違いについて。
とりあえず、Blenderで作成すれば色々と対応できそうだが、Fusion360の操作性も捨てがたい。
Fusion360は「Collada Writer」「Simlab Plugins」などのプラグインを導入することによってDAEでエクスポートすることができる。
また、URDFで出力できるツールがある。
GitHub - syuntoku14/fusion2urdf: A Fusion 360 Script to export URDF