(訳注:最新の情報は原文を参照してください.)

システムの依存関係

ROS パッケージはときたまOSによって提供される外部のライブラリやツールを要求します.これらのライブラリやツールの要求をシステムの依存関係と表現することにします.いくつかのケースでは,これらのシステムの依存関係は標準でインストールされていません.ROS は rosdep というシステムの依存関係をダウンロードしてインストールする簡潔なツールを提供します.

ROS パッケージは自身のシステムの依存関係をパッケージのマニフェストで宣言する必要があります.turtlesim パッケージのマニフェストを見てみましょう:

$ roscd turtlesim
$ cat manifest.xml
  • <package>
    
    ...
    ...
        <rosdep name="wxwidgets"/>
    
    </package>

あなたが見たとおり,turtlesim には wxwidgets が必要です.

rosdep

rosdep は ROS パッケージから要求されるシステムの依存関係をインストールすることに使用できるツールです.

使い方:

rosdep install [package]

turtlesim のシステムの依存関係をダウンロードしてインストールします:

$ rosdep install turtlesim
  • set -o errexit
    set -o verbose
    
    
    if [ ! -f /opt/ros/lib/libboost_date_time-gcc42-mt*-1_37.a ] ; then
      mkdir -p ~/ros/ros-deps
      cd ~/ros/ros-deps
      wget --tries=10 http://pr.willowgarage.com/downloads/boost_1_37_0.tar.gz
      tar xzf boost_1_37_0.tar.gz
      cd boost_1_37_0
      ./configure --prefix=/opt/ros
      make
      sudo make install
    fi
    
    
    if [ ! -f /opt/ros/lib/liblog4cxx.so.10 ] ; then
      mkdir -p ~/ros/ros-deps
      cd ~/ros/ros-deps
      wget --tries=10 http://pr.willowgarage.com/downloads/apache-log4cxx-0.10.0-wg_patched.tar.gz
      tar xzf apache-log4cxx-0.10.0-wg_patched.tar.gz
      cd apache-log4cxx-0.10.0
      ./configure --prefix=/opt/ros
      make
      sudo make install
    fi
    
    if [ ! -f /opt/ros/lib/libboost_date_time-gcc42-mt*-1_37.a ] ; then
      mkdir -p ~/ros/ros-deps
      cd ~/ros/ros-deps
      wget --tries=10 http://pr.willowgarage.com/downloads/boost_1_37_0.tar.gz
      tar xzf boost_1_37_0.tar.gz
      cd boost_1_37_0
      ./configure --prefix=/opt/ros
      make
      sudo make install
    fi
    
    
    if [ ! -f /opt/ros/lib/liblog4cxx.so.10 ] ; then
      mkdir -p ~/ros/ros-deps
      cd ~/ros/ros-deps
      wget --tries=10 http://pr.willowgarage.com/downloads/apache-log4cxx-0.10.0-wg_patched.tar.gz
      tar xzf apache-log4cxx-0.10.0-wg_patched.tar.gz
      cd apache-log4cxx-0.10.0
      ./configure --prefix=/opt/ros
      make
      sudo make install
    fi

rosdep はバッシュ スクリプト上で動作し,完了すると終了します.

パッケージのビルド

全てのシステムの依存関係をインストールが終わると,作成したパッケージをビルドすることができます.

rosmake の使い方

rosmakemake コマンドのようなものですが,そこにはいくつか特別な ROS マジックを行います.rosmake beginner_tutorials と打ち込んだとき,beginner_tutorials がビルドされ,さらに依存するパッケージも正しい順序でビルドされます.なぜなら ROS パッケージを作成するとき,依存関係として rospy・roscpp・rospy_tutorials (とその他の依存関係)を追加したからです.

使い方:

rosmake [package]

やってみましょう:

$ rosmake beginner_tutorials

以上のコマンドが終了するには少し時間がかかると思います.実行中には以下のような出力が表示されます:

  • [ rosmake ] No package specified.  Building ['beginner_tutorials']
    [ rosmake ] Logging to directory
    [ rosmake ] /home/dbking/.ros/rosmake_output-2009-09-22-03-17-14
    [ rosmake ] [ 0 of 18  Completed ]
    [rosmake-0] >>> genmsg_cpp >>> [ make ]
    [rosmake-0] <<< genmsg_cpp <<< [PASS] [ 0.39 seconds ]
    [ rosmake ] [ 1 of 18  Completed ]
    [rosmake-0] >>> roslib >>> [ make ]
    ...
    ...
    ...
    [ rosmake ] [ 17 of 18  Completed ]
    [rosmake-0] >>> beginner_tutorials >>> [ make ]
    [rosmake-0] <<< beginner_tutorials <<< [PASS] [ 0.79 seconds ]

複数のパッケージを rosmake する

rosmake によって複数のパッケージを同時にビルドすることもできます.

使い方:

rosmake [package1] [package2] [package3]

ビルドの前に全て最新版であることを確認しましょう:

$ roscd  turtle_teleop
$ svn up
$ roscd 
$ svn up

次のチュートリアルで必要なパッケージをビルドしてみましょう:

$ rosdep install turtle_teleop rxtools
$ rosmake turtle_teleop roscpp_tutorials rospy_tutorials rxtools

ここまでで ROS パッケージのビルドを行いました.次は ROS メッセージとサービスについてお話ししましょう.

Wiki: ja/ROS/Tutorials/BuildingPackages (last edited 2009-12-09 10:27:17 by KentaYonekura)