九州工業大学 CIR-KIT Blog

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

No.6-3:GazeboをROSに繋ぐ (Gazebo_ros_pkgsをインストールする 編)

gazebo_logo

検証日時

02/14/2015 (Sat)

概要

Gazeboのチュートリアル第六弾「Connect to ROS」。
ROSはロボットの制御フレームワークです。このチュートリアルでは、GazeboとROSのインターフェースについて説明します。
今回はその「Installing gazebo_ros_pkgs」編です。
公式サイトを適当に翻訳しただけですので、あしからず。

レベル

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
参考

GAZEBO Tutorial-Connect to ROS

はじめに

GazeboのインターフェースのためのROSパッケージのセットは、gazebo_ros_pkgsという名前の新しいメタパッケージで構成されています。続きを読む前に、前提情報として、ROSの統合についての概要をご覧ください。
これらの説明は、ROS HydroRos Indigoと完全に統合されたGazeboのバージョンを使用するためのものです。チュートリアルを始める前に、どのGazebo/ROSのバージョンの組み合わせを使うかをまず読むことをおすすめします。必要に応じて、それに応えるインストール方法が必要となります。

必須条件

ROSのコンセプトについてROSチュートリアルを通じて理解しておく必要があります。

ROSをインストールする

ROSの統合チュートリアルのために、(ros-hydro-desktop-fullもしくはros-indigo-desktop-full)インストールをおすすめします。それにより、必要なパッケージを手に入れることができます。
詳しくは、ROSのインストールページをご覧ください。もちろん、ROSのインストールページの説明に従い、ROSのsetup.shsourceコマンドで実行しておいてください。

Gazeboをインストールする

ソースコードまたは、プレビルドされたUbuntuのdebianパッケージのどちらを使っても、Gazeboをインストールできます。
Gazeboのインストールをご覧ください。ソースコードからインストールする場合には、gazebo_X.Yブランチ(X.Yはあなたの必要とするバージョンを指します)をすることを忘れないでください。

スタンドアローンなGazeboの動作チェックをする

gazebo_ros_pkgsのインストールを行う前に、以下のコマンドをターミナルで入力して、スタンドアローンなGazeboの動作チェックを行うことを忘れないでください。:

1
  gazebo

空のシミュレーションと、GUIが開くのが確認できるでしょう。また、画面左側のInsertタブをクリックし、モデルを選んで(クリックすると、モデルをシミュレーションのどこに置くか決定できます)、シミュレーションに足してください。

Gazeboのバージョンが正しいことを確認する

Gazeboがどこにインストールされているか探し、それが正しい位置にあるか確かめるために、以下のコマンドを実行してください。:

1
2
  which gzserver
  which gzclient

もし、デフォルトの位置で、ソースコードからインストールしたのなら、結果は以下のようになるはずです。:

1
2
  /usr/local/bin/gzserver
  /usr/local/bin/gzclient

もし、debianパッケージを使用してインストールしたなら、結果は以下のようになるはずです。:

1
2
  /usr/bin/gzserver
  /usr/bin/gzclient

gazebo_ros_pkgsのインストール

好きな方法を選んでください。早くて簡単な方法はパッケージからインストールすることです。しかし、ソースコードからインストールすることで、デバックとバグパッチの適用をより簡単にできます。(oω<)

A. プレビルドDebianパッケージをインストールする

gazebo_ros_pkgsパッケージは以下のそれぞれのバージョンで利用可能です。:

1
sudo apt-get install ros-hydro-gazebo-ros-pkgs ros-hydro-gazebo-ros-control
1
sudo apt-get install ros-indigo-gazebo-ros-pkgs ros-indigo-gazebo-ros-control

もしこのインストール方法がうまく行ったら、このページの下のROSの統合環境を使ってGazeboをテストするに進んでください。

B. ソースコードからインストールする(Ubuntu)

もしあなたが、ROSの最新バージョン(Groovy以上)を使用しているなら、ソースコードからgazebo_ros_pkgsをインストールする必要があります。ソースコードからインストールすることは、新しいプラグインを開発したり、パッチを適用したりするときに便利です。

Catkinワークスペースをセットアップする

これらのイントロダクションではcatkinビルドシステムを使うことが必要です。
もし、まだcatkinワークスペースのセットアップをしていないなら、以下のコマンドを試してみてください。

1
2
3
4
5
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace
cd ~/catkin_ws
catkin_make

次に、あなたの.bashファイルにセットアップスクリプトを追加してください。:

1
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc

もっと詳しい情報は、Catkinワークスペースを作るというチュートリアルをご覧ください。

GitHubレポジトリをCloneする

gitがあなたのUbuntuマシンにインストールされていることを確認してください。:

1
sudo apt-get install git
ROS Indigo

Indigoはgazebo2.xシリーズを使用しておりイます。以下のインストールから始めましょう。:

1
sudo apt-get install -y gazebo2

gazebo_ros_pkgsのGitHubレポジトリからソースコードをダウンロードしましょう。

1
2
cd ~/catkin_ws/src
git clone https://github.com/ros-simulation/gazebo_ros_pkgs.git -b indigo-devel

rosdepコマンドを使って、足りない依存条件を確認しましょう。

1
2
rosdep update
rosdep check --from-paths . --ignore-src --rosdistro indigo

rosdepのdebianインストールを使って、自動的に、不足している依存条件をインストールすることができます。:

1
rosdep install --from-paths . --ignore-src --rosdistro indigo -y

完了したら、gazebo_ros_pkgsをビルドするというセクションに移動しましょう。

ROS Hydro

Hydroはgazebo1.xシリーズを使用しておりイます。以下のインストールから始めましょう。:

1
sudo apt-get install -y gazebo

gazebo_ros_pkgsのGitHubレポジトリからソースコードをダウンロードしましょう。

1
2
cd ~/catkin_ws/src
git clone https://github.com/ros-simulation/gazebo_ros_pkgs.git -b hydro-devel

rosdepコマンドを使って、足りない依存条件を確認しましょう。

1
2
rosdep update
rosdep check --from-paths . --ignore-src --rosdistro hydro

rosdepのdebianインストールを使って、自動的に、不足している依存条件をインストールすることができます。:

1
rosdep install --from-paths . --ignore-src --rosdistro hydro -y

完了したら、gazebo_ros_pkgsをビルドするというセクションに移動しましょう。

ROSの統合環境を使ってGazeboをテストする

ROSのセットアップファイルをsourceコマンドで有効にすることを忘れないでください。Hydroの場合は、以下のコマンドでそれを有効にできます。:

1
source /opt/ros/hydro/setup.bash

~/.bashrcに以上のようなコマンドは追加しているでしょう。
GazeboとROSの環境については、おそらく、セットアップし、ビルドしていることと仮定すると、roscoreを起動した後に、rosrunコマンドだけでGazeboを起草できるはずです。:
もしまだ、.bashrcに以下のコマンドを追加していないなら、catkinのsetup.bashsourceコマンドで実行してください。

1
source ~/catkin_ws/devel/setup.bash

その後、以下のコマンドを実行してください。

1
2
roscore &
rosrun gazebo_ros gazebo

すると、ウィンドウの中に何も無いようなGazeboのGUIが立ち上がるでしょう。
ROSの接続が本当に完了しているか確かめるために、利用可能なROSのトピックを見てみましょう。:

1
rostopic list

すると、トピックの一覧の中に、以下のようなトピックが確認できるはずです。:

1
2
3
4
5
6
/gazebo/link_states
/gazebo/model_states
/gazebo/parameter_descriptions
/gazebo/parameter_updates
/gazebo/set_link_state
/gazebo/set_model_state

Gazeboのサービスの存在も確認することができます。:

1
rosservice list

すると、サービスの一覧の中に、以下のようなサービスが確認できるはずです。:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/gazebo/apply_body_wrench
/gazebo/apply_joint_effort
/gazebo/clear_body_wrenches
/gazebo/clear_joint_forces
/gazebo/delete_model
/gazebo/get_joint_properties
/gazebo/get_link_properties
/gazebo/get_link_state
/gazebo/get_loggers
/gazebo/get_model_properties
/gazebo/get_model_state
/gazebo/get_physics_properties
/gazebo/get_world_properties
/gazebo/pause_physics
/gazebo/reset_simulation
/gazebo/reset_world
/gazebo/set_joint_properties
/gazebo/set_link_properties
/gazebo/set_link_state
/gazebo/set_logger_level
/gazebo/set_model_configuration
/gazebo/set_model_state
/gazebo/set_parameters
/gazebo/set_physics_properties
/gazebo/spawn_gazebo_model
/gazebo/spawn_sdf_model
/gazebo/spawn_urdf_model
/gazebo/unpause_physics
/rosout/get_loggers
/rosout/set_logger_level

Gazeboを起動するためのROSの他の方法

Gazeboを起動するROSのコマンドはたくさんあります。:

  • サーバーとクライアントを同時にlaunchする
1
rosrun gazebo_ros gazebo
  • Gazeboサーバーだけをlaunchする
1
rosrun gazebo_ros gzserver
  • Gazeboのクライアントだけをlaunchする
1
rosrun gazebo_ros gzclient
  • GDBを使った、Gazeboサーバーだけをデバッグモードでlaunchする
1
rosrun gazebo_ros debug
  • さらに、roslaunchを使ってGazeboを起動することもできます
1
roslaunch gazebo_ros empty_world.launch