LoginSignup
1
1

More than 3 years have passed since last update.

ROS URDFの設定(ORIGIN編)

Last updated at Posted at 2019-07-16

初めに

srsさんの記事で、個人的に理解が難しかったことに関して書いておきます。

わからないこと

vis_lecture/urdf/simple_body4.urdf
<robot name="test_robot">
  <material name="red">
    <color rgba="1.0 0.0 0.0 2.0"/>
  </material>

  <link name="base_link"/>

  <joint name="body1_joint" type="fixed">
    <parent link="base_link"/>
    <child  link="body1_link"/>
  </joint>
  <link name="body1_link">
    <visual>
      <geometry>
        <box size="0.1 0.1 0.5"/>
      </geometry>
      <origin xyz="0 0 0.25" rpy="0 0 0"/>
      <material name="red"/>
    </visual>
  </link>

  <joint name="body2_joint" type="revolute">
    <parent link="body1_link"/>
    <child  link="body2_link"/>
    <origin xyz="0.1 0 0.5" rpy="0 0 0"/>
    <limit lower="-1.5" upper="1.5" effort="0" velocity="0"/>
  </joint>
  <link name="body2_link">
    <visual>
      <geometry>
        <box size="0.1 0.1 0.4"/>
      </geometry>
      <origin xyz="0 0 0.2" rpy="0 0 0"/>
      <material name="red"/>
    </visual>
  </link>

  <joint name="body3_joint" type="revolute">
    <parent link="body2_link"/>
    <child  link="body3_link"/>
    <origin xyz="0.1 0 0.4" rpy="0 0 0"/>
    <limit lower="-1.5" upper="1.5" effort="0" velocity="0"/>
  </joint>
  <link name="body3_link">
    <visual>
      <geometry>
        <box size="0.1 0.1 0.4"/>
      </geometry>
      <origin xyz="0 0 0.2" rpy="0 0 0"/>
      <material name="red"/>
    </visual>
  </link>
</robot>

このurdfを起動させると3つの箱がずれた状態で表示されるわけですが、箱(リンク)の位置を調整しているのが

simple_body4.urdf
<origin xyz="0.1 0 0.5" rpy="0 0 0"/>

この部分となっています。

originの値

上に引用しましたvis_lecture/urdf/simple_body4.urdfを用いて説明します。

jointタグのorigin

つながっている親linkの重心からのオフセットをパラメータとして与えます。
例えば、body2_jointはbasel_linkの原点からの距離の位置に存在します。
ただしオフセット分は考慮されないのでbase1_linkの元の原点の位置つまり原点からの位置となります。
(linkの元の原点はオフセットを足す前の位置なので、つながっているjointの位置となっている)

linkタグのorigin

繋がっている元のjointの位置を原点としていて、オフセットをパラメータとして与えます。ただしlinkの原点座標はlinkの重心の位置を基点としています
例えば、body2_linkの重心はbody2_jointからオフセット分の距離の位置に存在します。

最後に

自分で動かした結果、思い込んでいることを書いているだけなので間違いあれば教えてください。
http://wiki.ros.org/urdf/XML/joint
http://wiki.ros.org/urdf/XML/link

ここの

This is the transform from the parent link to the child link. The joint is located at the origin of the child link, as shown in the figure above.

これはjointの位置が、子linkの原点となるっていう理解でいいのだろうか・・・
それではjointの位置はどこに位置してるのかってどこに書いてあるのかよくわかりません。
弄っていたところ親のjointの位置からの相対距離という認識で間違いではなさそうでありました。

参考

https://qiita.com/srs/items/77f378230bf856a3625c
http://forestofazumino.web.fc2.com/ros/ros_urdf_xacro.html

1
1
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
1