【ROS】作成したロボット部品を表示してみる【 Gazebo,SDF,XML】
公式の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内で別個に作成したので大きさがやっぱりおかしい。
拝借したタイヤは表示しきれてないし。