SDFファイルのインポート

中京大学の清水と申します.

SDFファイルのインポートをしたいのですが,対応のご予定はございますでしょうか?

お忙しいところ恐縮です,よろしくお願いいたします.

Sdf_to_urdfというROS2用パッケージを使ってSDFをURDFに変換して解決しました.

お騒がせしました.

変換して読み込めたとのことでよかったです。

ただ、SDFはURDFにはない表現も多く含む形式のようですので、URDFへの変換をかますと、思うように取り込めないことも考えられますね。関節構造やセンサなどは意図通りに取り込めていそうでしょうか?

参考までに、もしよろしければ、どのような背景でSDFの読み込みが必要になったか教えていただけますでしょうか?SDF読み込みの対応も検討したいと思いますので。

今回使ったsdf_to_urdfというパッケージは,ROS2のパッケージであるsdformat_urdfを利用しているそうで,そのドキュメントによると変換できるsdfタグに制限があります.は変換対象外です.

関節構造は,手動修正なしでうまく変換できていました.

SDFをchoreonoidでインポートしたい背景ですが,自分で書いた大学教材用gazeboロボットモデルを,choreonoidに移行したいというものです.当時はgazebo単体での利用がメインでしたので,SDFしか書いてません.この後もいくつか変換する予定です.

ご回答ありがとうございます。

なるほど、gazebo用に作ったモデルを取り込めたら便利ですよね。

ChoreonoidにSDF読み込み機能を実装してみましたので、お試しいただけますでしょうか。masterの最新版で利用できます。

Bodyファイルの読み込みダイアログにおける「ファイルの種類」のコンボで 、“SDF” を選択することでBodyアイテムとして読み込むことが可能です。

自己完結したSDF(必要なファイル一式が対象SDFファイルと同じディレクトリもしくはサブディレクトリに入っているもの)であればそのまま読み込むことが可能ですが、SDFが他のディレクトリにある別のファイルを読み込む場合は、Gazeboと同様に、以下の環境変数を使用することができます。

  • GAZEBO_MODEL_PATH
  • GZ_SIM_RESOURCE_PATH
  • IGN_GAZEBO_RESOURCE_PATH

これらの変数にモデルファイル置き場のディレクトリをセットしておきます。コロンで区切って複数のディレクトリも設定できます。

読み込んだBodyアイテムを「名前を付けて保存」することで、Bodyファイルに変換することもできます。今後Choreonoidで使うのであれば、最初にBodyファイルに変換してから使うのがよいかもしれません。

もしうまく読み込めないSDFのモデルがあれば、教えていただければと思います。(ただ、SDFはかなり複雑な形式なので、全てを完全にサポートするのは難しいかもしれませんが・・・。)

1 Like

早速のご対応、ありがとうございました.

間が空いてしまってすみません.

添付のfourlegs.sdfをbodyロードで読み込んだところ,リンクの配置は問題ありませんでしたが,関節の位置が正しくありませんでした.これをbodyセーブで保存したfourlegs-wrong.bodyを添付します.

fourlegs.sdfをsdf_to_urdfで一度urdf(添付のfourlegs-good.urdf)に変換し,それをbodyロードで読み込むと関節の位置は正しくインポートされました.これをbodyセーブで保存したfourlegs-good.bodyを添付します.

改善のきっかけになれば幸いです.
よろしくお願いいたします.

files_20260625_174313.zip (4.9 KB)