(訳注:最新の情報は原文を参照してください.)
システムの依存関係
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 の使い方
rosmake は make コマンドのようなものですが,そこにはいくつか特別な 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 メッセージとサービスについてお話ししましょう.






