注目キーワード
  1. Photoshop
  2. Python
  3. Raspberry Pi
  4. Arduino

Gazebo Import Meshesで.stlファイルを読み込む方法

ここでは「Ubuntu Server 20.04.2 LTS」と「Gazebo」をインストールした「Raspberry Pi 4 Model B」でImport Meshesのチュートリアルを「.stlファイル」を対象に読み込む方法について紹介します。

 

この記事を読むことで

GazeboでCADモデルを表示する方法

Gazeboに.stlファイル形式のモデルを読み込み方法

を知ることができます。

 

自分で作成したCADデータをGazebo上で扱いたい方は、是非挑戦してみてください。

 

※ この記事は

Gazeboチュートリアル:Import Meshes

を参考にしています。

 

それでは早速始めていきましょう。

 

Gazeboでstlファイルを読み込む方法

まずはGazeboで読み込むためのstlファイルを準備します。

stlファイルを出力できるCADソフトなら何でも構いません。

 

URDFファイルを出力できるSolidaworksなども使用してみたいのですが、制約が多いので諦めました。

 

一般的に候補に挙がるのが、Fusion360でしょうか。

Fusion360もプラグイン「fusion2urdf」でURDFを出力できるみたいなので、これからモデルを作る方はFusion360の方が使い勝手が良い気がします。

(fusion2urdfの参考記事:二足歩行ロボット研修(kora編)株式会社アールティ

 

前置きはこれくらいにしておき、stlファイルの準備をしていきましょう。

 

3DCADからstlファイルを準備する

今回は、Autodesk Inventor Professional 2022を使用してstlファイルを準備します。

 

Autodesk Inventorでは

Origin > Center Point

からXYZ原点を表示することができるので、ここにモデルの位置を合わせます。

 

また、GazeboやRviz2はZ軸が空中を指すようなXYZ系なのでモデルの向きもGazeboやRviz2の座標系と合わせるようにしましょう。

 

gazebo_mesh_stl_00

↑モデルの正面がX軸、空中がZ軸となるように配置

 

配置ができたら

単位:メートル

にしてstlファイルを出力します。

 

gazebo_mesh_stl_01

↑上図では、モデル全体をstl形式で出力している

 

stlファイルの出力が終わったら、Gazebo側へこのデータを共有しましょう。

ここでは「Raspberry Pi 4 Model B」上のGazeboを使用しているので、ファイルサーバー経由でstlファイルを共有します。

 

gazebo_mesh_stl_02

 

このとき、共有するためのフォルダとして

📂 meshes_share

>  Humanoid_robot.stl

を準備しました。

 

ファイルサーバーへ共有フォルダをアップロードしたら、実際にRaspberry Pi 4 Model B上のGazeboでstlファイルを読み込むための準備をしましょう。

 

Gazeboでデータを読み込むための準備をする

では早速、Raspberry Pi 4 Model B上でデータを読み込む準備をしていきます。

 

まずは、Gazeboでモデルを表示させるため

mkdir -p ~/.gazebo/models/test_robot

を実行し、test_robotの空フォルダを作成します。

 

.stlファイルの移動

上記で作成した空のフォルダ:test_robotへ、先ほどファイルサーバーから読み込んだ.stlファイルを移動します。

( ※ もちろん、好みの移動方法で構いません。)

 

ラズパイの共有サーバー(パッケージはSambaを使用)は/home/shareという場所にあるので

cd /home/share

でカレントディレクトリを移動し

mv meshes_share ~/.gazebo/models/test_robot

mvコマンドを使用してmeshes_shareフォルダを指定したパスへ移動します。

 

移動したら

cd ~/.gazebo/models/test_robot

でフォルダの移動先へパスを変えて

cp -r meshes_share meshes

とcpコマンドを使って、meshes_shareのコピー:meshesを作成します。

 

理由は、共有フォルダから移動してきたmeshes_shareが緑色背景&青色テキストになっているからです。

これは

所有ユーザーおよびグループ以外のユーザーにより書き込み可能

ステッキ―ビットが設定されていない→アクセス権限が設定されていない

引用:ls出力でこの緑の背景の原因は何ですか?

ことを意味しており、パッケージ化するプログラムには使用したくないため、上記でコピーを作成しました。(※ あくまでも個人の見解です。)

 

コピーを作成したら、meshes_shareフォルダは不要なので

sudo rm -r meshes_share

でフォルダを削除しましょう。

 

gazebo_mesh_stl_03

 

これで、test_robotフォルダ下にmeshesというstlファイルの入ったデータを準備することができましたね。

 

model.sdfファイルの編集

続いて、model.sdfファイルを編集してstlファイルをGazeboで表示できるように

gedit ~/.gazebo/models/test_robot/model.sdf

or

sudo nano model.sdf

など好みの編集モードで下記のプログラムを記述します。

 

<?xml version='1.0'?>
<sdf version='1.4'>
  <model name="test_robot">
  <static>true</static>

    <link name='base_body'>
      <pose>0 0 .1 0 0 0</pose>
       <collision name='collision'>
        <geometry>
          <mesh>
            <uri>./meshes/Humanoid_robot.stl</uri>
            <scale>1.5 1.5 1.5</scale>
          </mesh>
        </geometry>
      </collision>

      <visual name='visual'>
        <geometry>
          <mesh>
            <uri>./meshes/Humanoid_robot.stl</uri>
            <scale>1.5 1.5 1.5</scale>
          </mesh>
        </geometry>
      </visual>
    </link>

  </model>
</sdf>

 

stlファイルをGazeboで読み込むには

<uri>model.sdfから見た.stlファイルのパス</uri>

と記述すれば良いので、上記のようになっています。

 

他は、sdfファイルの基本的な記述方法と変わりませんね。

 

model.configファイルの編集

最後に、model.configファイルも作成・編集します。

gedit ~/.gazebo/models/test_robot/model.config

or

sudo nano model.config

など好みの編集モードで下記のプログラムを記述します。

 

<?xml version="1.0"?>
<model>
  <name>Test Robot</name>
  <version>1.0</version>
  <sdf version='1.4'>model.sdf</sdf>

  <author>
   <name>Taku Atelier</name>
   <email>me@my.email</email>
  </author>

  <description>
    Humanoid Robot : CHAROT.
  </description>
</model>

 

ここまで準備ができたら、実際にGazeboでstlデータを表示してみましょう。

 

Gazeboでstlデータを表示してみる

Raspberry Pi 4 Model Bを使用しているので、TeraTermからターミナルを開き

gazebo

を打ち込んで、Gazeboの画面を開きます。

 

XmingなどのGUI表示アプリケーションを経由してGazeboが立ち上がるので

Insert > test_robot

をクリックしてGazeboの画面内にモデルを配置します。

 

gazebo_mesh_stl_04

上図のように、stlデータが表示されれば完了です。

 

この応用として、各ジョイントごとにstlファイルを出力して、Gazebo上で動かせるようにするとシミュレーションが可能になりますね。

 

皆さん、是非挑戦してみてください。

お疲れ様でした。

gazebo_mesh_stl_thumbnail
学びに関する情報をチェック!