見出し画像

URDFの読み込みを簡略化したい

Meridian計画。
制御できるロボットの記述方式については、デファクトスタンダードであるURDFを利用しようと考えています。
以前、Meridian計画でも1台のホビーロボットのURDFを用意しました。

Meridianは、自作のヒューマノイドロボットにも柔軟に対応させることを考えています。つまりURDFなどを意識せずに設計されたロボットにも適用できることを想定しています。

URDFの良いところは、XML形式であるため内容をテキストで追加、修正できるところだと考えています。統一されたフォーマットで、開発者がパラメータを把握しやすくなっているという点は理想的だと思います。
一方、コードや設定がビジュアル化されておらず、作成に手間と労力がかかるところは問題だと思います。
URDFを簡単に出力できる仕組みが必要です。

既存のURDF出力方法

URDFの作成にどんな方法があるのかを調べてみます。

① 手入力

いちばん確実な方法です。人手で行う分、時間がかかりミスも発生しやすいですが、データを転記しながらツリー構造や入力したパラメータを把握できるので修正や管理などはかえってしやすいという印象があります。
しかし、コンピューター上で組み上がっているロボットを計測して数値をプロットしていくのはさすがにナンセンスであり、面倒です。

② Fusion360

fusion2urdfというスクリプトでCADからURDFを書き出すことが可能です。

アールディ ヒューマノイドロボットブログの「二足歩行ロボット研修(kora編)[21] Fusion360のモデルからURDFを生成する」がとても参考になりそうです。
他にも、Qiita記事の「Fusion360で描いたロボットモデルをROSのURDF形式に変換する」や「Fusion360で作成したCADモデルをURDF化し、Unityに召喚し操作する」などの日本語記事もあります。ハマりどころなどの情報もあり助かります。

問題点は、Fusion360が基本は有償のソフトであるという点です。個人制作であれば無料で使いつづけることもできるようですが、ホビー向けや学習向けということを考えると、なるべく依存度を下げておけると安心です。
また、fusion2urdfで書き出す場合、うまくできなかった箇所を手作業で修正する必要がある場合もあるようで、そのあたりも注意が必要そうです。

日頃からFusion360で設計していて、URDFの出力もうまくいっている!という場合は、URDF化についてここで万事解決です!(うらやましい)

③ SolidWorks, MATLAB系, Blender

SolidWorks to URDF Exportersimmechanics_to_urdf 、さらにはphobosというBlenderからURDFを出力するというアドオンまで、いろいろなものが出ているようです。
他にもいろいろありそうで、普段の開発環境からURDFが出力できるかどうかはぜひ調べてみてください。
うまくアドオンがマッチした場合には解決です!(うらやましい)


Freecadのovercross

④ FreeCAD

基本は有償ソフトであるということが気になるFudion360に対し、FreeCADはフリー&オープンソースのソフトです。
実際に触れてみるとかなり高性能なCADソフトで驚きます。
日本語の解説動画などもどんどん増えてきているので、今後もぜひ使って慣れていきたいソフトです。
(操作にちょっと慣れが必要ですが、同じくフリーで使えるBlenderのようにどんどん使って慣れてしまうのが良いと思います。)

こちらは利用記事がまだほとんどなかったので、実際に使って導入方法や使用方法を簡単な記事にまとめてみました。

設定方法はなかなかフクザツで、人手で行う部分も多く、車輪やアーム型のロボットであればよいかもしれませんが、ヒューマノイドぐらいの多関節の場合はかなり設定が大変そうだなと思いました。手入力よりはかなり良いかもしれませんが、出力後のテキストベースでの修正などの手間まで考えるとかなりハードルが高い印象でした。
こちらもFusion360と同様、設計時からURDF出力を考慮した構造やフォーマットで作業することができれば、かなり便利だと思います。

⑤ 自作ツール

手入力をちょっとサポートする程度のソフトがあると便利だなと思いました。
目的は、URDFをミスなく、手入力の修正対応も想定し、わかりやすく組み立てられるようにすることです。
(少なくとも自分がこれを使います)

1.準備としてCADから各パーツごとにSTLを出力
2.その際、関節の起点を原点とする
3.また、次の関節につながるポイントにも印をつける
4.起点となるパーツからツリー状にパーツを指定
5.URDFを出力

という感じで、パーツを出力して、パチパチとプラモデルをつくる感じでリンクの親子関係を設定してくものを考えています。

重さもCAD出力では自動計算がありますが、実測値を入力できるようにするのがよいと考えています。

この自作ソフトが、手入力の良いところと便利さの妥協点の一つになるのではないかと考えています。

開発が横道にそれている?

Meridian計画は、既存のリソースや仕様を繋ぎ合わせることで大きな開発環境を得ていくというプロジェクトです。
URDF化の部分までは他のプロジェクトにお任せするつもりでしたが、どれもいろいろな理由で少しずつハードルが高い感じがしました。
URDF化については、すでに道があるところをちょっとだけ誰でも通れるようにするという作業になりますが、できる範囲でベースを作ってみようと思います。

開発を進めながら、道の険しさに気づく


既存のロボットのURDFはたくさん公開中!

自作のロボットをURDF出力するのはなかなか大変ですが、既存のロボットのURDFについてはかなりの数の公開が進んでいるようです。
@realteck_bot さんに教えていただきましたが、以下のサイトに公開URDFのリストがアップされています。壮観です。

また、mujocoに対応しているモデルのリストもあるとのことです。

よりどりみどりですね!


前回記事:

目次:



この記事が気に入ったらサポートをしてみませんか?