LIFE LOG(ここにはあなたのブログ名)

あつあつ備忘録

ソフトやハード、時にはメカの備忘録をまとめていきます

【ROS】urdfでparentとchildの関係性を調べる

wiki.ros.org こちらを見ながら進めていった。

myfirst.urdf

<?xml version="1.0"?>
<robot name="myfirst">
  <link name="base_link">
    <visual>
      <geometry>
        <cylinder length="0.6" radius="0.2"/>
      </geometry>
    </visual>
  </link>
</robot>
$ roslaunch urdf_tutorial display.launch model:=myfirst.urdf 

f:id:AtsuyaKoike:20190626191721p:plain:w400

lengthはz軸の長さ、radiusは半径でy軸。

03-origins.urdf

<?xml version="1.0"?>
<robot name="origins">
  <link name="base_link">
    <visual>
      <geometry>
        <cylinder length="0.6" radius="0.2"/>
      </geometry>
    </visual>
  </link>

  <link name="right_leg">
    <visual>
      <geometry>
        <box size="0.6 0.1 0.2"/>
      </geometry>
      <origin rpy="0 1.57075 0" xyz="0 0 -0.3"/>
    </visual>
  </link>

  <joint name="base_to_right_leg" type="fixed">
    <parent link="base_link"/>
    <child link="right_leg"/>
    <origin xyz="0 -0.22 0.25"/>
  </joint>

</robot>
$ roslaunch urdf_tutorial display.launch model:=03-origins.urdf 

f:id:AtsuyaKoike:20190626192015p:plain:w400

このurdfファイルでこの位置に持っていくことができるみたいだが、rpy、xyzを1つ1つ見ていかないと分からなくなりそうなので、試した結果を載せていく。 いじる部分は

right_legの

<origin rpy="0 1.57075 0" xyz="0 0 -0.3"/>

と base_to_right_legの

<origin xyz="0 -0.22 0.25"/>

の部分

パターン1

right_leg:origin rpy="0 0 0" xyz="0 0 0"
base_to_right_leg:origin xyz="0 0 0"

f:id:AtsuyaKoike:20190626195128p:plain:w400

パターン2

right_leg:origin rpy="0 1.57075 0" xyz="0 0 0"
base_to_right_leg:origin xyz="0 0 0"

f:id:AtsuyaKoike:20190626195302p:plain:w400

パターン3

right_leg:origin rpy="0 1.57075 0" xyz="0 -0.3 0"
base_to_right_leg:origin xyz="0 0 0"

f:id:AtsuyaKoike:20190626195433p:plain:w400

パターン4

right_leg:origin rpy="0 1.57075 0" xyz="0 -0.3 0"
base_to_right_leg:origin xyz="0 0.22 0"

f:id:AtsuyaKoike:20190626195548p:plain:w400

パターン5

right_leg:origin rpy="0 1.57075 0" xyz="0 -0.3 0"
base_to_right_leg:origin xyz="0 0.22 0.25"

f:id:AtsuyaKoike:20190626195640p:plain:w400

これで、rpy、xyzを弄るときに参考になるはず。

棒を両サイドに出現させる

04-materials.urdf

<?xml version="1.0"?>
<robot name="materials">

  <material name="blue">
    <color rgba="0 0 0.8 1"/>
  </material>

  <material name="white">
    <color rgba="1 1 1 1"/>
  </material>


  <link name="base_link">
    <visual>
      <geometry>
        <cylinder length="0.6" radius="0.2"/>
      </geometry>
      <material name="blue"/>
    </visual>
  </link>

  <link name="right_leg">
    <visual>
      <geometry>
        <box size="0.6 0.1 0.2"/>
      </geometry>
      <origin rpy="0 1.57075 0" xyz="0 0 -0.3"/>
      <material name="white"/>
    </visual>
  </link>

  <joint name="base_to_right_leg" type="fixed">
    <parent link="base_link"/>
    <child link="right_leg"/>
    <origin xyz="0 -0.22 0.25"/>
  </joint>

  <link name="left_leg">
    <visual>
      <geometry>
        <box size="0.6 0.1 0.2"/>
      </geometry>
      <origin rpy="0 1.57075 0" xyz="0 0 -0.3"/>
      <material name="white"/>
    </visual>
  </link>

  <joint name="base_to_left_leg" type="fixed">
    <parent link="base_link"/>
    <child link="left_leg"/>
    <origin xyz="0 0.22 0.25"/>
  </joint>

</robot>

f:id:AtsuyaKoike:20190626200906p:plain

簡単ですね。