検証日時
02/01/2015 (Sun)
概要
Gazeboのチュートリアル第二弾「Build a Robot」。
このチュートリアルではロボットを作ったり、修正したりします。また、センサ、アクチュエータを搭載した車輪型ロボットを作り、モデルを描画するなどの実践例も行います。
今回はその「Animated Box」編です。
公式サイトを適当に翻訳しただけですので、あしからず。
レベル
INTERMEDIATE
環境
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 |
参考
はじめに
このチュートリアルでは、10周期で地面の上をスライドするようなシンプルな箱と、そのworld
を生成します。
また、Gazeboもしくは、自分独自の実行可能なシミュレーションを使用しての参照方法、アクセス方法、相互作用の様々な方法を紹介します。
シミュレーションで生成する箱は自身の姿勢を配信し、姿勢を受け取るとコールバックを呼び、箱のロケーションとタイムスタンプをプリントアウトします。
セットアップ
作業ディレクトリを作成しましょう。
1 2 |
|
動く箱のコード
animate_box.cc、independent_listner.cc、integrated_main.cc、CMakeLists.txt、animated_box.worldを現在のディレクトリにコピーしましょう。
1 2 3 4 5 |
|
プラグインをビルドしましょう。
1 2 3 4 |
|
ただし、Gazeboはプラグインを最後に読み込むことができるということを覚えておいてください。
1
|
|
Gazeboでシミュレーションする
今回は、プラグインを使ったGazeboをどのようにして使うかを説明します。
以下のようにしてGazeboを起動しましょう。
1 2 |
|
他のターミナルで、gz topc
コマンドを使用し、箱の姿勢を表示するユーザーインターフェースを起動しましょう。この時、build
ディレクトリ内でコマンドを使用してください。でなければパスが通らず、箱が動きません。
1
|
|
すると、箱の姿勢を表示するGUIが表示できたはずです。
以下の動画は、動く箱と、その状態を表示するGUIが動いている様子です。
独自の実行ファイルを使ってシミュレーションに接続する。
Gazeboが起動していないことを確認してください。
これまでの説明通りにGazeboを起動してください。同時にGazeboに接続できる独立したリスナを起動してください。このリスナというのは、箱のロケーションとタイムスタンプを受け取り、それをプリントアウトするようなものです。
1 2 |
|
実行すると、以下の動画のようになります。
先ほどまでのように、gz topic
によるアプリケーションとは異なり、箱の状態が端末に表示されていることがわかります。
注目 : もし、Gazeboは起動するが、箱が動ないという現象に陥ったなら、それは、パス通しがうまく行っていません。一つ前の項でパス通しをしていますので、libanimated_box.so
ファイルのあるディレクトリで、以下のコマンドを実行し、パス通しをし直しましょう。
1
|
|
ちなみに、この現象は、パスを通した後に一旦端末を閉じ、新しい端末で実行した場合に起きるようです。
シミュレーションを起動し、独自の実行ファイルを接続する。
Gazeboが起動していないことを確認してください。
例integrated_main
は以下のようになっています。
箱を表示するシミュレーションを起動する。
シミュレーションにリスナを接続する。
リスナはタイムスタンプと姿勢を受け取り、それぞれをプリントアウトします。
ファイルintegrated_main
を実行しましょう。
1 2 |
|
シミュレーションを見るために、以下のコマンドを実行しましょう。
1
|
|
実行すると、以下の動画のようになります。
先ほどと同様、端末に箱の状態が表示されますが、コマンド一つでGazeboが立ち上がっていないところに違いがあります。つまり、今回は、gzserver
のみを立ち上げ、その後手動でgzclient
を立ち上げたということです。この、gzserver
とgzclient
の概念についてはGAZEBOを使ってみよう ! (Gazebo コンポーネント 編)で説明していますので、そちらをご覧ください。
ソースコード
independent_listner.cc
実行しているシミュレーションに接続し、姿勢情報トピックを受け取り、物体の姿勢を表示します。
integrated_main.cc
シミュレーションを起動し、姿勢情報トピックを受け取り、物体の姿勢を表示します。
animated_box.cc
シミュレーションのアニメーション要素を定義したプラグインライブラリです。アニメーション要素とは、シミュレーションの中で、箱を動かすようなものです。
animated_box.world
シミュレーションの環境とその環境下に置く箱のについて定義下XMLファイルです。
CMakeLists.txt
スクリプトをビルドするCMakeです。