simtrans を使ってロボットのモデルファイルを変換
simtrans というツールを使ってロボットのモデルファイルを変換してみたお話です.
この記事は IQ1の2まいめっ Advent Calendar 2018 の15日目の記事です. (遅刻投稿になります^^; )
はじめに
IQが1なので, 突然, 他の人の作ったロボットを動かしたくなりました. 以上です.
ロボットモデルファイルについて
ロボットのモデルを記述する方法はいくつかあるようですので, 簡単にまとめてみました.
用途はそれぞれビジュアライズであったり, シミュレータ上での衝突判定であったりします.
構造の記述
形式 | 記法 | 拡張子 | 使用プラットフォーム例 |
---|---|---|---|
URDF | xml | .urdf , .urdf.xacro |
ROS, (Gazebo) |
SDF | xml | .sdf |
Gazebo |
Body | yaml | .body |
Choreonoid |
それぞれの詳細な仕様については, 下記のページでご覧ください.
Bodyファイルチュートリアル — Choreonoid 開発版 ドキュメント
※ Gazebo はSDFの使用を推奨していますが, URDFもサポートしている, という立場なようです.
形状データの記述
CADの数だけあるかもしれませんが, ここでは今回関連するものを紹介します.
形式 | 記法 | 拡張子 |
---|---|---|
VRML97 | vrml | .wrl |
COLLADA | xml | .dae |
STL | ASCII またはバイナリ | .stl |
simtrans を使う
simtrans について
simtrans は, 産総研が提供する, ロボットシミュレータで用いられているモデルファイルを相互に変換する, Pythonベースのツールです.
先の表に挙げたうち, Body形式以外は相互に変換できるようです. また, 先日Body形式の読み込みが一部可能になったようです.
環境構築
リンク先の通りにすれば構築できます.
インストール — simtrans 0.0.1 ドキュメント
使う
実際に使っていきます.
最も簡単な変換方法は,
simtrans -i (変換元のファイル名) -o (変換先のファイル名)
です.
例えば, sample.body
をURDFに変換したいときは,
simtrans -i sample.body -o urdf/sample.urdf
とすれば, urdf/
に出力ファイルが展開されます.
今回試した例では, sample.body
とこれに読まれるSTLファイルが, urdf/
以下にsample.urdf
とCOLLADAファイルに変換されました.
他のオプション等詳しくはこちらをご参照ください.
注意点
手元の環境では, 変換後のファイル読み込み(urdf->dae)の際の依存関係が変になりました.
読み込みのリンクを手直しすれば大丈夫です.
おわりに
WAREC-1 が ROS で動かせるようになりました!