九州工業大学 CIR-KIT Blog

九工大自律移動ロボット製作プロジェクトCIR-KITの技術系ブログ

No.1-2:GAZEBOを使ってみよう ! (Gazebo コンポーネント 編)

gazebo*logo

検証日時

01/31/2015 (Sat)

概要

Gazeboのチュートリアル第一弾「Get Started」。その「Gazebo Components」編です。
公式サイトを適当に翻訳しただけですので、あしからず。

レベル

BEGINNER

環境
PC : Lenovo ThinkPad X240
Prosessor : Intel Core i7-4600U (2.10GHz, 4MB, 1600MHz)
RAM : PC3-12800 DDR3L (8GB)
OS : Ubuntu 14.04 LTS 64bit
Kernel : 3.13.0-44-generic
Gazebo : Version 5.0.1
参考

GAZEBO Tutorial-GetStarted


このページではGazeboシミュレーションを実行するときに一緒に実行されるそれぞれのアイテムについて説明します。

worldファイル

worldディスクリプションファイルにはロボット、ライト、センサ、静的物体などのシミュレーションのすべての要素が含まれています。このファイルはSDF (Simulation Description Format)フォーマットを使用しており、.worldという拡張子がついています。
Gazeboサーバー(gzserver)はこのファイルを読み込み、シミュレーションの環境を構築します。
Gazeboでは沢山のworldデータの例が提供されています。それらのworldデータは<install_path>/share/gazebo-<version>/worldsに配置してあります。

modelファイル

modelファイルもworldファイルと同じようにSDFフォーマットを使用していますが、唯一ひとつだけ<model> ... </model>を含んでいなければなりません。これらのファイルの目的はモデルの再利用を容易にし、worldファイルを簡単化するというものです。一度modelファイルが生成されると、以下のようなSDF文法にしたがったコードを記入することでworldファイルにincludeすることが可能です。

1
2
3
<include>
  <uri>model://model_file_name</uri>
</include>

多くのmodelは一行のmodelデータベース(バージョン情報、Gazeboによって提供されるいくつかのモデル例)によって提供されます。Gazeboをインターネット接続が有効な環境で使用しているとすると、たくさんのモデルをデータベースから挿入することが可能ですし、実行中に必要なコンテンツをダウンロードすることも可能です。

環境変数

ファイルを配置するために、また、クライアントとサーバーの間の通信をセットアップするために、Gazeboにはたくさんの環境変数があります。
Gazebo 1.9.0より、ほとんどの場合に使用するデフォルト変数は編纂されています。つまり、多くの変数は設定する必要がないということです。これらのデフォルト変数は以下のシェルスクリプトの中にも含まれています。

1
source <install_path>/share/gazebo/setup.sh

例えば、もし、モジュールを検索するためのパスを拡張するなどして、Gazeboの挙動を修正したいなら、まず最初にsourceコマンドで上記のシェルスクリプトを実行したあと、設定されている変数を修正するということです。

Gazeboサーバー

このサーバーはGazeboの実体です。コマンドラインから与えられるworldディスクリプションファイルを解読し、物理エンジンやセンサエンジンを使ってシミュレータを実行します。
このサーバーは以下のコマンドを使うことで実行できます。サーバーにはグラフィックが含まれていない、つまり、GUIが存在しないということに留意してください。

1
gzserver <world_filename>

ここで、<world_filename>は:

  1. カレントディレクトリ(現在のディレクトリ)との相対パス

  2. 絶対パス

  3. GAZEBO_RESOURCE_PATHに記されるパスとの相対パス

のいずれかである必要があります。
Gazeboによって提供されるworldデータは/share/gazebo-*/worldsにあります。
例えば、Gazeboによって提供されるempty.worldを使用する場合、以下のコマンドを使います。

1
gzserver worlds/empty.world

グラフィカルクライアント

グラフィカルクライアントは実行中のgzserverと接続し、要素を表示します。実行中のシミュレーションを修正することができるツールでもあります。
グラフィカルクライアントは以下のコマンドで実行されます。

1
gzclient

サーバー + グラフィカルクライアントを一度に

コマンドgazeboはサーバーとクライアントを一度に利用可能にするコマンドです。gzserver worlds/empty.worldgzclientをそれぞれ実行する代わりに、以下のように実行することができます

1
gazebo worlds/empty.world

プラグイン

プラグインではGazeboにシンプルでかつ便利なインターフェース接続メカニズムを提供しています。プラグインはコマンドラインでの記述とworld/modelファイル(SDFフォーマットを参照)での記述のどちらも読み込むことができます。コマンドラインに記述されたものが最初に読み込まれ、world/modelファイルに記述されたプラグインを次に読み込みます。ほとんどのプラグインがサーバーによって読み込まれますが、プラグインはグラフィカルクライアントでもまた、GUIのカスタムを用意にするために読み込まれます。
コマンドラインからプラグインを読み込む例:

1
gzserver -s

グラフィカルクライアントでも同じように:

1
gzclient -g

プラグインについてもっと情報が必要ならプラグインのオーバービューを参照してください。