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