ringo9971’s blog

ロボットを作っています. Vimが好きです.

URDFで差動二輪ロボットを作る

目的

ボールキャスターが前に2個ついた差動二輪ロボットを作成する

urdf

今回はxacroを使わず,直接urdfを書く

<robot name = "my_robot">
  <material name = "black">
    <color rgba = "0.1 0.1 0.1 1"/>
  </material>
  <material name = "Yellow">
    <color rgba = "0.8 0.8 0.0 1"/>
  </material>

  <link name = "base_link"/>
  <link name = "body_link">
    <visual>
      <geometry>
        <box size = "0.18 0.15 0.05"/>
      </geometry>
      <origin rpy = "0 0 0" xyz = "0 0 0.05"/>
      <material name = "Yellow"/>
    </visual>
  </link>

  <link name = "right_wheel">
    <visual>
      <geometry>
        <cylinder length = "0.015" radius = "0.03"/>
      </geometry>
      <origin rpy = "0 0 0" xyz = "0 0 0"/>
      <material name = "black"/>
    </visual>
  </link>

  <link name = "left_wheel">
    <visual>
      <geometry>
        <cylinder length = "0.015" radius = "0.03"/>
      </geometry>
      <origin rpy = "0 0 0" xyz = "0 0 0"/>
      <material name = "black"/>
    </visual>
  </link>

  <link name = "right_ball_link">
    <visual>
      <origin xyz = "0 0 0" rpy = "0 0 0"/>
      <geometry>
        <sphere radius = "0.03"/>
      </geometry>
      <material name = "brack"/>
    </visual>
  </link>

  <link name = "left_ball_link">
    <visual>
      <origin xyz = "0 0 0" rpy = "0 0 0"/>
      <geometry>
        <sphere radius = "0.03"/>
      </geometry>
      <material name = "brack"/>
    </visual>
  </link>

  <joint name = "right_wheel_joint" type = "continuous">
    <parent link = "base_link"/>
    <child  link = "right_wheel"/>
    <origin rpy = "-1.570796 0 0" xyz = "0.0 -0.0825 0.03"/>
    <axis xyz = "0 0 1"/>
  </joint>

  <joint name = "left_wheel_joint" type = "continuous">
    <parent link = "base_link"/>
    <child  link = "left_wheel"/>
    <origin rpy = "-1.570796 0 0" xyz = "0.0 0.0825 0.03"/>
    <axis xyz = "0 0 1"/>
  </joint>

  <joint name = "body_joint" type = "fixed">
    <parent link = "base_link"/>
    <child  link = "body_link"/>
    <origin rpy = "0 0 0" xyz = "0.04 0.0 0.0"/>
  </joint>

  <joint name = "right_ball_joint" type = "fixed">
    <parent link = "base_link"/>
    <child  link = "right_ball_link"/>
    <origin xyz  = "0.1 0.045 0.03" rpy = "0 0 0"/>
  </joint>

  <joint name = "left_ball_joint" type = "fixed">
    <parent link = "base_link"/>
    <child  link = "left_ball_link"/>
    <origin xyz  = "0.1 -0.045 0.03" rpy = "0 0 0"/>
  </joint>
</robot>

base_linkにすべてつなげるようにした

roslaunch urdf_tutorial display.launch model:=my_robot.urdf

で表示の確認ができる f:id:ringo_9971:20200220225405p:plain

sudo apt install ros-kinetic-joint-state-publisher-gui

ros-kinetic-joint-state-publisher-guiを入れないとエラーが出た

参考

ROS講座33 車輪ロボットを作る1(rvizで表示) - Qiita

差動2輪移動ロボットの作り方 - 研究紹介ページ

ros入門その1

自分のアウトプット用として

環境

PC

  • Ubuntu16.04

  • ROS kinetic

Raspberry Pi 3B

  • Ubuntu MATE16.04

  • ROS kinetic

インストール

ROS講座02 インストール

Raspberry Pi 3B+(Ubuntu Mate 16.04LTS)にROS kinetic をインストールしてturtlesimを動かす

Ubuntu MATE16.04のイメージはこちらで取得した

RaspberryPi 3B+にROSを導入する