siar

Snowy Institute

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

それぞれの詳細な仕様については, 下記のページでご覧ください.

urdf - ROS Wiki

SDF

Bodyファイルチュートリアル — Choreonoid 開発版 ドキュメント

※ Gazebo はSDFの使用を推奨していますが, URDFもサポートしている, という立場なようです.

形状データの記述

CADの数だけあるかもしれませんが, ここでは今回関連するものを紹介します.

形式 記法 拡張子
VRML97 vrml .wrl
COLLADA xml .dae
STL ASCII またはバイナリ .stl

simtrans を使う

simtrans について

simtrans は, 産総研が提供する, ロボットシミュレータで用いられているモデルファイルを相互に変換する, Pythonベースのツールです.

先の表に挙げたうち, Body形式以外は相互に変換できるようです. また, 先日Body形式の読み込みが一部可能になったようです.

github.com

環境構築

リンク先の通りにすれば構築できます.

インストール — simtrans 0.0.1 ドキュメント

使う

実際に使っていきます.

最も簡単な変換方法は,

simtrans -i (変換元のファイル名) -o (変換先のファイル名)

です.

例えば, sample.bodyをURDFに変換したいときは,

simtrans -i sample.body -o urdf/sample.urdf

とすれば, urdf/に出力ファイルが展開されます.

今回試した例では, sample.bodyとこれに読まれるSTLファイルが, urdf/以下にsample.urdfCOLLADAファイルに変換されました.

他のオプション等詳しくはこちらをご参照ください.

注意点

手元の環境では, 変換後のファイル読み込み(urdf->dae)の際の依存関係が変になりました.

読み込みのリンクを手直しすれば大丈夫です.

おわりに

WAREC-1 が ROS で動かせるようになりました!

f:id:ssr-yuki:20181216024611p:plain