九州工業大学 CIR-KIT Blog

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

No.1-3:GAZEBOを使ってみよう ! (Gazebo 構造編)

gazebo_logo

検証日時

01/31/2015 (Sat)

概要

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

レベル

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に伴う要求を処理し、現在の問題を解決するために、システムを提案しています。Gazeboは物理シミュレーション、レンダリング、ユーザーインターフェース、コミュニケーション、そしてセンサ型などのためのライブラリとなるでしょう。以下のような3つの異なるプロセスが提供されています:physics_simsensor_genguiそして共同作業のためのmasterです。

プロセス間の通信

互いのプロセス間での通信にはgoogle::protobufsとソケットを結合したものを使用しています。シミュレーションされたworldはbody poseをアップデートし、センサ型とGUIは出力を生成するためにそれらのメッセージを使用します。
この仕組みは実行中のシミュレーションの内省を可能とし、Gazeboをコントロールするための便利なメカニズムを供給可能とします。

システム

Gazeboマスター

これは必要不可欠なネームサーバートピックです。Gazeboマスターは、名前探索とトピックマネジメントを提供します。一つのマスターで多様な物理シミュレーション、センサ型、GUIを制御することができます。

依存関係 Protobuf & boost::ASIO
外部API なし
内部API なし
配信トピック なし
購読トピック なし

このライブラリは後続のほとんどすべてのライブラリに使用されています。コミュニケーションや運搬メカニズムとして動作します。最近では、publish/subscribeのみをサポートしています。しかし、RPCを使うことも簡単にできます。

Pysicsライブラリ

依存関係 Dynamicsエンジン & Collisionライブラリ
外部API 物理シミュレーションのためのシンプルで一般的なインターフェースを提供する
内部API サードパーティーのダイナミックエンジンの物理ライブラリのために基本的なインターフェースを定義する

物理ライブラリには内部API(TBD)に適応しているダイナミックエンジンなら何でも使用することができます。物理シミュレーションを動かすために、シンプルな外部インタフェースを使用することもできます。

Collisionライブラリ

依存関係 サードパーティーのcollision(衝突)エンジン
外部API TBD
内部API colisionエンジン用の一般的なインターフェース
配信トピック なし
購読トピック なし

このライブラリは、異なるcollisionエンジンを制御するための仮想ライブラリです。また、ユーザーのためにシンプルな外部インターフェースを提供します。

Renderingライブラリ

依存関係 OGRE
外部API 読み込み、初期化、シーンの生成が可能
内部API なし。OGREのみを使用する予定

GUIとセンサ型の両方のシンプルなインターフェースを供給するライブラリです。他に良いものがないので、現在はOGREのみを使用しています。レンダリングエンジン用のプラグインへの書き込みが可能となるでしょう。

センサGeneration

依存関係 Renderingライブラリ、Collisionライブラリ
外部API センサ郡の初期化と起動の機能を提供する
内部API TBD

このライブラリは多種多様なすべてのタイプのセンサを実行します。そのセンサは物理シミュレータからアップロードされる環境の状態を取得し、初期化されたセンサにより作られた出力を生成します。

GUI

依存関係 Renderingライブラリ、wxWidgeets
外部API なし
内部API なし

GUIの主要な関数はシミュレーションの現在の状態を表示と、ユーザの入力用の便利なインt−フェースの提供を含んでいます。wxWidgetsを使用しているので、内部もしくは外部APIは必要ありません。

プラグイン

Phisics、センサ、Renderingライブラリはプラグインをサポートしています。それらのプラグインでは、ユーザーはコミュニケーションシステムを使用することなく、それぞれのライブラリにアクセスすることができます。