BodyファイルからURDFへの変換

こんにちは.
Choreonoid と ROSを連携させたいと考えているのですが,オリジナルのロボットモデルを作った場合,BodyファイルをURDFファイルに変換する必要があります.
そこで,BodyファイルからURDFへ変換するツールが存在するのか?
というのを伺いたいです.
また,Body → URDFの変換において下記ページを拝見しました.

https://fkanehiro.github.io/choreonoid_ros_pkg_doc/html-ja/developer.html?highlight=urdf#properties-in-the-urdf-or-xacro-files

もし,上記条件を満たしているとして,変換ツールは存在するのでしょうか?
以上,よろしくお願いします.
英語ページにも同様の質問を投稿しておりますのでよろしくお願いします.
https://discourse2.choreonoid.org/t/convert-body-file-to-urdf-file/109

申し訳ありません、現状ではBodyファイルからURDFへ変換するツールは存在しません。

以前のVRML97をベースとしたモデルファイルフォーマット(OpenHRPモデルファイル)については、ご存知かもしれませんが、simtransという変換ツールで変換できました。
http://fkanehiro.github.io/simtrans/html-ja/usage.html
ただし、このツールはBodyファイルの方には対応していないようです。

変換したいファイルは、どちらのモデルになりますでしょうか?
メッシュファイルにSTLを使っているものとWRLを使っているものがありますが、STLならURDFでそのまま使えたかと思います。WRL(VRML)については、URDFでは使えませんでしたでしょうか?
もし対象のモデルのメッシュファイルがWRLで、URDFではWRLを使えないようでしたら、メッシュをSTLに変換したバージョンも用意したいと思いますので、ご相談ください。

1 Like

丁寧なご回答,ありがとうございます.
Body → URDF の変換について承知しました.
変換したいモデルは,Aizu SpiderとDual Arm Robot をそれぞれ改造したものを変換したいと考えております.

WRL(VRML)については、URDFでは使えませんでしたでしょうか?

これについては,VRML->SDFへの変換ツールが存在することは確認しています.
http://fkanehiro.github.io/simtrans/html/usage.html#convert-vrml-model-to-sdf-format
また,URDF->VRMLの変換ツールのついても確認しています.
http://fkanehiro.github.io/simtrans/html/usage.html#convert-urdf-model-to-vrml-format
過去にURDF->VRMLの変換について議論されていることも確認しました.

simtrans以外にVRML->URDFへの変換ツールとして有効な手法があれば是非教えていただきたいです.

、URDFではWRLを使えないようでしたら、メッシュをSTLに変換したバージョンも用意したいと思いますので、ご相談ください。

おそらくお願いすることになるかと思いますが,まずはVRML->URDFへの変換に取り組んだ上でご相談させて頂きたいと思います.

以上,よろしくお願いします.

そこで対象となっている"VRML"は、OpenHRPのモデルファイル形式になります。これはVRMLをベースとしていますが、それを拡張しており、通常の意味でのVRMLとは少し異なります。
http://choreonoid.org/ja/manuals/latest/handling-models/modelfile/modelfile-openhrp.html

ロボット用のモデルファイルでは、通常はロボットのパーツを独立したメッシュファイルで構成するようにします。このメッシュファイルについて、どの形式がサポートされているかが問題になります。URDFやSDFでは通常COLLADA形式(拡張子dae)か、STL形式を使うことが多いようです。そこにVRMLのメッシュファイル(OpenHRP形式ではなく、ただのVRMLファイル)を使用できるかどうかについては、私の方では存じておりません。

なお、ChoreonoidのBodyファイルでは、COLLADA、STL、VRMLのいずれの形式も使うことができます。

AizuSpiderモデルやDoubleArmV7モデルではこのメッシュファイルとしてVRML形式のものを使用していますので、もしURDFからVRMLのメッシュファイルが読み込めないようだと、メッシュファイルをSTLやCOLLADAに変換する必要が生じます。(なお、読み込めるかどうかは、URDF自体の仕様と言うより、それを読み込むツールの仕様になってくる部分かもしれません。)

@yosuke さん、このあたり(ROSで使用可能なメッシュファイル形式について)何かご存知でしたら、お知らせいただけるとうれしいです。

1 Like

そこで対象となっている"VRML"は、OpenHRPのモデルファイル形式になります。これはVRMLをベースとしていますが、それを拡張しており、通常の意味でのVRMLとは少し異なります。
OpenHRPモデルファイル — Choreonoid 開発版 ドキュメント

きちんと把握しておらず失礼しました.
ありがとうございます.

URDFからSTL,COLLADA以外のメッシュファイルを読み込むのは私自身は聞いたことありません.
VRMLで可能かどうか検証して報告したいと思います.
よろしくお願いします.

@nakaoka @RyodoTanaka

GazeboとRVizに関しては、対応しているメッシュフォーマットは、COLLADAかSTLのみです。

simtransに関しては、VRMLからURDFに変換する際に、関節構造をURDFにするだけでなく、メッシュ部分をCOLLADAに変換してくれます。

bodyファイルを見てみたところ、ファイルフォーマットに大きな違いがあるものの、 データ構造についてはChoreonoidが昔使っていたOpenHRP用のVRMLに近そうな印象を受けています。
body -(なにがしかのツール)-> VRML -(simtrans)-> URDFという経路で変換するのが楽かなと今のところは思っています。

1 Like

simtransに関しては、サポートされている任意のペアで変換ができるので、

simtrans -i [VRML] -o [URDF]

でダイレクトにURDFに変換ができるはずです。

サンプルだとURDFからVRMLとVRMLからSDFしか書かれていませんが、
http://fkanehiro.github.io/simtrans/html-ja/usage.html#commandline-options

1 Like

@yosuke
ありがとうございます.

body -(なにがしかのツール)-> VRML -(simtrans)-> URDFという経路で変換するのが楽かなと今のところは思っています。

上記,承知しました.
なにがしかのツールの部分に関しては最初は手作業で行うかもしれませんが,取り組んでみます.

@yosuke
当方,VRMLを扱った経験がなかったため,かなり初歩的な質問になってしまいました.
ご丁寧にお答えいただきありがとうございました.
まずは,Body->VRMLへの変換を進めつつ,他のモデルで教えていただいた手法をやってみたいと思います.