Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

4章.urdfを作成する

本章の流れ

本章では試作した3D-CADモデルからurdfを生成し、それをROS上のrvizで表示することまでを記載します。
これが出来れば、ロボットを画面の中で表現でき、遠隔地からでもロボットの状況をつぶさに把握できる環境を手に入れることが出来ます。
その手順は以下となります。
1. モデル(3D-CADモデル)を用意する
2. blenderに取り込む
3. urdfのディレクトリ作成
4. urdfを記述する
5. urdfが正しく出来ているか確認する
6. rvizで確認する

実施環境

OS   : Ubuntu16.04LTS. , Ubuntu18.04LTS.
ROS環境 : kinetic , melodic
対象PC :LattepandaAlphaによる動作(Intel Core m3-7y30 程度の動作)を想定

1. モデル(3D-CADモデル)を用意する

 3D-CADモデルを準備するには、現在基本的に無料で使えるCADや、ホームーユーザーライセンスと言った自宅でも3D-CADを利用できる環境が少しづつ増えてきました。そんな中今回はFusion360を使って設計したメカナムロボットを用意しました。この3D-CADモデルを作成するに当たりモデルの向きを注意して作ると良いでしょう。
こちらの下図の様なXYZの向きで配置すると、途中の段階で混乱せずに円滑に変換していけると思います。
urdf_3D-modelからの変換.png

3D-CADモデルが配置出来たらFBXファイルに変換します。
urdf_3D-modelからの変換1.png
urdf_3D-modelからの変換2.png

普通だとSTLファイルに変換したものをurdfに使ったりするケースも多いのですが、全てのパーツを一変にSTLへ変換すると、色が全て同じ色になってしまったり、STLファイル生成時にエラーが内包されていて読み取れず、ROS上でurdfを何故か表示できない場面がありました。

 そのため$\huge{FBXファイル形式で保存}$することをお勧めします。

2. blenderに取り込む

 先程までに作成したFBXファイルをフリーソフトであるblenderに取り込み、urdfで使えるCOLLADAファイル(*.dae)に変換します。
 まずはblenderを起動し、COLLADAファイルを生成するまで図解します。
blender_変換①.png
blender_変換②.png
blender_変換③.png
blender_変換④.png
blender_変換⑤.png
blender_変換⑥.png
blender_変換⑦.png

この色の修正方法については以下が参考になると思います。
Blenderの易しい使い方 : https://blender-cg.net/material/

そして出来上がった3Dモデルがこちらです!
blender_変換⑧.png

最後にCOLLADAファイルを生成します。
blender_変換⑨.png
blender_変換⑩.png

3. urdfのディレクトリ作成

catkin_ws/srcの中にurdf用のパッケージを作成します。

cd ~/catkin_ws/src
catkin_create_pkg crawler_description

 
 ディレクトリ構成の参考として、catkin_ws/src内に以下のディレクトリ構成とファイルを記入しています。
robot_description.png

4. urdfを記述する

ではurdfについての内容を以下に記します。今回作成したCOLLADA(*.dae)ファイルによって記述内容がとても簡単な内容になっています。これは原点配置、配色が既に完了しているためです。

yonku.urdfの内容
<?xml version="1.0"?>
<robot name="mechanum_robot">
  <link name="base_link">
    <visual>
      <geometry>
        <mesh filename="package://crawler_description/meshes/yonku.dae"/>
      </geometry>
      <origin xyz="0.0 0.0 0.0" rpy="0.0 0.0 0.0"/>
    </visual>
  </link>
</robot>

もし個別に動く関節が必要であったり、可動範囲を限定させたい場合などはこちらを参考に
内容を追加してみて下さい。
GR-ROSEでいこう!
  ↑多関節ロボットアームのurdf作成や、SLAM、ROS2など多彩な内容があります。

Create your own urdf file
ROS講座13 URDFを記述する1

5. urdfが正しく出来ているか確認する

 先程作成したファイルが正しく出来ているか、以下のコマンドを記入して確認できます。
crawler_description/urdfは、自身で作成しているurdfディレクトリであり、yonku.urdfは
自身で作成したurdfファイルを指定します。

check_urdf
roscd crawler_description/urdf
check_urdf yonku.urdf

6. rvizで確認する

 ではrviz上で簡単にurdfを簡単に表示出来るようにするため、launchディレクトリにdisplay.launchを作成します。

display.launch
<launch>
    <arg name="model" />
    <arg name="gui" default="True" />
    <param name="robot_description" textfile="$(arg model)" />
    <param name="use_gui" value="$(arg gui)"/>
    <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" />
    <node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher" />
    <node name="rviz" pkg="rviz" type="rviz" args="-d $(find crawler_description)/urdf.rviz" required="true" />  
</launch>

このdisplay.launchを使ってrviz上にurdfを表示させます。

rviz上にyonku.urdfを表示させる
roscore
roslaunch crawler_description display.launch model:=`(rospack find crawler_description)`/urdf/yonku.urdf gui:=False

rvizが表示されたら左側のテーブルに記載されたGlobal Optionの中にあるFixed Frameには、base_linkを記入しておきます。またAddボタンを押してRobotModelを追加します。
rvizの設定_robotmodel.png

すると以下の様に表示できるでしょう。
ワークスペース 1_028.png

やっぱり$\huge{自分で作ったロボットが画面に現れると}$
$\huge{ 嬉しいものですね!!}$

次は5章.SLAMを使ってみる

 遂に次はSLAMを使ってみます!SLAMの中でもgmappingとcartographerを使ってみたいと思います!
これが出来れば、ROSを使って良かったと実感できると思いますのでお楽しみに!

今までの道のり

作って分かった「ROSを使う前のロボットと、ROSを使った後のロボットの変化」

目次: ROSを使った自動航行ロボットをつくるまでの道のり ー序章 概要ー
1章.ロボットのROS対応
2章.ロボットを操作する
前章 :3章.LiDARを動かす

参考文献

GR-ROSEでいこう!
Learning URDF
ROS講座13 URDFを記述する1
ロボットをURDFで記述する
ROSを使ったURDF作成

motoms
メカ屋ですが、趣味でガジェットやロボットを作っています。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away