ROS URDFの設定(ORIGIN編)
初めに
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>
<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つの箱がずれた状態で表示されるわけですが、箱(リンク)の位置を調整しているのが
<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
Author And Source
この問題について(ROS URDFの設定(ORIGIN編)), 我々は、より多くの情報をここで見つけました https://qiita.com/yaseinod/items/6642f526b22c19a83796著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .