Raspberry Pi Mouse(移行中)

Raspberry Pi MouseのURDFモデル作成 その1

はじめまして。この夏、インターンシップでアールティのお仕事のお手伝いをしています佐藤です。

Raspberry Pi MouseのURDFモデルの作成をし、Gazeboでシミュレーションを行うところまで行っていきたいと思います。

ROSを使うことのメリットや具体的な初期設定方法は過去に長谷川さんがRT ROBOT SHOPの方にエントリを書いていますのでそちらをご覧ください!
ROSを使用したCRANE+の動かし方 その1 | RT Robot Shop Blog

URDFモデルについての説明はこちらをご覧ください!
ROSを使用したCRANE+の動かし方 その8 | RT Robot Shop Blog

Gazeboはロボットのシミュレータです。詳しくは実際に使用する際にまた詳しく説明をしたいと思います。
http://gazebosim.org/tutorials?tut=ros_overview

今日は初日ということで、モデルを作成します。

概要

バラバラに作ったパーツが組み上がり、ホイールを回転させるところまで行います。

  • STLデータの作成
  • Colladaファイルへの変換
  • URDFモデルの作成

開発環境

STLデータの作成

PC:dynabook R73/W4M
OS:Windows10 64bit
使用ソフトウェア:Autodesk Inventor 2016

URDFモデルの作成

PC:dynabook R73/W4M
OS:GNU/Linux Ubuntu14.04
使用ソフトウェア:Blender 2.71、ROS Indigo

STLデータの作成

公開されているRasPiMouse.stpはすべてのパーツを組み立てた状態なので、ホイールとボディに分割します。

STLデータの作成1

分割したあと、それぞれをSTLファイルとして保存するのですが、ここで注意しなければならないことがあります。

通常はミリメートル基準で設計していることが多いと思います。しかし、URDFではメートル基準で大きさが定義されているのでメートルに変換してから出力しておきます。

(シミュレータで読み込む際に倍率を変換する方法も有効ですが、今回は予め変換しておきます。)

STLデータ作成2

編集した際にはホイールを駆動する軸の位置が原点から見てどの位置にあるのかも測定しておくと、あとで楽です。

STLデータ作成3

Colladaファイルへの変換

ここからの作業はUbuntuで行います。
この工程は以下のサイトを参考に行いました。

Gazebo + ROS で自分だけのロボットをつくる 3.URDFファイルをつくる- Qiita

Blenderを起動し、File -> Import -> Stlを選び、先ほど出力したSTLファイルを開きます。
本来ならばここでテクスチャを編集するのですが、今日はファイルの変換のみ行います。

File -> Export -> Colladaを選び、保存します。

URDFモデルの作成

以下のようにしてワークスペース内の新しいディレクトリの中に新しいパッケージを作成します。

パッケージの作成についての詳細はこちらをご覧ください。

ROSを使用したCRANE+の動かし方 その4 | RT Robot Shop Blog

mkdir ~/catkin_ws/src/raspimouse_sim
cd ~/catkin_ws/src/raspimouse_sim
catkin_create_pkg raspimouse_description
(cd ${HOME}/catkin_ws && catkin_make) && source ${HOME}/catkin_ws/devel/setup.bash
roscd raspimouse_description
mkdir meshes urdf

ここで作成したmeshesディレクトリの中に先ほど出力したCollada形式のデータをコピーします。
urdfディレクトリの中にはモデルを記述します。今回は以下のようになりました。
(2016年8月3日追記 : urdfファイルの中身を書き換えたため内容を変更しました。詳細はこちらをご覧ください。
Raspberry Pi MouseのURDFモデル作成 その2 | RT MicroMouse

)

<robot name="raspimouse">
  <link name="base_footprint"/>

  <joint name="base_joint" type="fixed">
    <origin xyz="0 0 0.00185"/>
    <parent link="base_footprint"/>
    <child link="base_body"/>
  </joint>

  <link name="base_body">
    <visual>
      <geometry>
        <mesh filename="package://raspimouse_description/meshes/dae/base/RasPiMouse_base.dae"/>
      </geometry>
    </visual>
  </link>

  <joint name="left-wheel_joint" type="continuous">
    <origin xyz="0 0.0425 0.02215" rpy="-1.57 0 0"/>
    <axis xyz="0 0 1"/>
    <parent link="base_body"/>
    <child link="left-wheel"/>
  </joint>

  <link name="left-wheel">
    <visual>
      <geometry>
        <mesh filename="package://raspimouse_description/meshes/dae/wheel/RasPiMouse_wheel.dae"/>
      </geometry>
    </visual>
  </link>

  <joint name="right-wheel_joint" type="continuous">
    <origin xyz="0 -0.0425 0.02215" rpy="1.57 0 0"/>
    <axis xyz="0 0 1"/>
    <parent link="base_body"/>
    <child link="right-wheel"/>
  </joint>

  <link name="right-wheel">
    <visual>
      <geometry>
        <mesh filename="package://raspimouse_description/meshes/dae/wheel/RasPiMouse_wheel.dae"/>
      </geometry>
    </visual>
  </link>
</robot>

これをraspimouse.urdfとして保存したあと次のコマンドでlaunchします

roslaunch urdf_tutorial display.launch model:='$(find raspimouse_description)/urdf/raspimouse.urdf' gui:=True

すると、バラバラに作成していたパーツが今にも動き出しそうなRaspberry Pi Mouseの形に組み上がりました。

RasPiMouse-URDF

次回はこのモデルを改良し、Gazeboでシミュレーションをするための準備を行いたいと思います。

参考文献

タイトルとURLをコピーしました