1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

URDFのリンク設定

Last updated at Posted at 2024-11-10

SS 192.png 基準点がどこかわからぬ

やること

URDFを記述する際に、LINKの記述方法がいつもわからなくなるのでまとめておきます。
間違っていたらご指摘ください。

参考は公式ドキュメント

クイズ

図のような腕パーツがあるとします。
パーツは前腕から拳の部分まで一体型です。丸い穴が空いた部分が回転軸で、肘にあたります。

URDFのLINKとして記述する際に、座標の原点になりそうな候補がいくつかあります。

① STLやdaeモデルの原点
② 回転軸の中心
③ イナーシャ用の重心
④ ロボット全体の原点

上記のうち、LINKの原点はどれでしょうか?

正解

正解は、たぶん「② 回転軸の中心」です。

ということで、図の紫円の中心を原点とします。
それに合わせ、STLなどのモデルの座標の中心も同じ紫円の中心となるようにします。
イナーシャ用の重心(図では赤い球のライン)については、URDL上で記述します。

以下は公式ドキュメントに掲載されている記述例にコメントしたものです。

<link name="my_link">
    <inertial>
        <origin xyz="0 0 0.5" rpy="0 0 0"/> #原点からの重心座標
        <mass value="1"/>
        <inertia ixx="100"  ixy="0"  ixz="0" iyy="100" iyz="0" izz="100" />
    </inertial>

    <visual>
        <origin xyz="0 0 0" rpy="0 0 0" /> #原点からのオフセット
        <geometry>
            <box size="1 1 1" />
        </geometry>
        <material name="Cyan">
            <color rgba="0 1.0 1.0 1.0"/>
        </material>
    </visual>

    <collision>
        <origin xyz="0 0 0" rpy="0 0 0"/> #原点からのオフセット
        <geometry>
            <cylinder radius="1" length="0.5"/>
        </geometry>
    </collision>
</link>

まだ謎のところ

例えば手首のヨー軸(ローカル)などの場合は、拳などのパーツの原点を前腕の原点と揃えることも多いようです。手首の回転軸がヨー軸のみの場合、拳は前腕に対しては振り回されませんが、二の腕(肘)に対しては前腕と共に振り回されるので、確かにその方がよさそうです。むしろそうすべきかもしれません。
拳の原点を手首とすべきか肘とすべきかについての回答はまだ見つかっていません。

さいごに

STL,daeなどのビジュアルやコリジョンについてはオフセット設定もできるようですが、設定できる場合は回転軸を原点に合わせてしまうとわかりやすいと思います。

いくつかの公開されているURDFファイルを覗いたところ、STLなどモデルの中心がパーツの回転軸に設定されていたので多分あっているとは思いますが、もし間違っていたり、より詳しい情報をご存知の方はご指摘ください。

シリーズ記事

ヒューマノイドのURDFを書き始める

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?