公式のURDFの説明を見ても、私は全く理解できない。 というか挫折したのでSDFでとりあえずやってみることにした。
ロボットディスクリプション
URDF ver
SDF ver
http://sdformat.org/spec?ver=1.6&elem=link
http://sdformat.org/spec?ver=1.6&elem=collision
http://sdformat.org/spec?ver=1.6&elem=joint
とりあえず表示してみる
ここにロボットの部品が5つあります。
(タイヤはSketchfab - The best 3D viewer on the webから拝借)
とりあえず、これらをblenderでCOLLADA(.dae)形式でエクスポートしました。
1.それぞれの部品について記述
ファイル作成と編集
$ touch test.world $ gedit test.world
世界の構成を書く
太陽と平面インクルードする
<?xml version="1.0"?> <sdf version="1.4"> <world name="default"> <include> <uri>model://ground_plane</uri> </include> <include> <uri>model://sun</uri> </include> ここにmodelを記述する </world> </sdf>
1-1.modelを記述
<model name="my_mesh1"> </model>
1-2.linkを記述
<link name="body"> </link>
1-3.visual要素を記述
<visual name="visual"> <geometry> <mesh><uri>file://Body.dae</uri></mesh> </geometry> </visual>
※Body.daeはtest.worldと同一ディレクトリを想定しています。
記述結果
pose要素(モデルの位置)とstatic要素を付加して合体
<?xml version="1.0"?> <sdf version="1.4"> <world name="default"> <include> <uri>model://ground_plane</uri> </include> <include> <uri>model://sun</uri> </include> <model name="my_mesh1"> <pose>0 0 0 0 0 0</pose> <static>true</static> <link name="body"> <visual name="visual"> <geometry> <mesh><uri>file://Body.dae</uri></mesh> </geometry> </visual> </link> </model> </world> </sdf>
※URDFで記述する場合はさらにRootを決めて、Joint作成しないとエラーになります(私はここでめんどくさくなったからURDFやめた)。
2.実行
他のモデルも位置をずらして表示して見た。
$ gazebo test.world
実行結果
...VR内で別個に作成したので大きさがやっぱりおかしい。
拝借したタイヤは表示しきれてないし。