ROS 使い方メモ

6.パッケージの作成

パッケージは ROS ソフトウェア構成の一番基礎となる水準であり、ライブラリやツール・実行ファイル等が含まれる。 パッケージを簡単に作成するツールとしてroscreate-pkgが用意されている。
この章ではroscreate-pkgを用いた新規パッケージの生成と、その依存関係を表示するためのrospackについて説明する。

6.1 roscreate-pkgの基本

roscreate-pkgはROSパッケージを簡単に作成するツールである。 ツールを実行すると、パッケージディレクトリの生成と同時にmanifests、CMakeLists、Makefile 等のファイル群が生成される。
roscreate-pkgの実行は次の構文で記述する。

$ roscreate-pkg [package_name] [depend1] [depend2] [depend3]

ここで各引数は次の通り、
[package_name]:生成するパッケージの名前。
[depend*]:依存対象のパッケージ。複数指定可能。

6.2 パッケージを生成する

まず前章で作成したワークスペースのsandboxディレクトリに移動する。

$ cd ~/workspace/sandbox  ($は不要。以下同様)

次にroscreate-pkgを実行する。名前は「beginner_tutorials」とし、std_msgs, rospy, roscppの3つのパッケージを依存関係とする。

$ roscreate-pkg beginner_tutorials std_msgs rospy roscpp

次のように表示され、パッケージが生成される。

Creating package directory ~/ros/ros_tutorials/beginner_tutorials
Creating include directory ~/ros/ros_tutorials/beginner_tutorials/include/beginner_tutorials
Creating cpp source directory ~/ros/ros_tutorials/beginner_tutorials/src
Creating python source directory ~/ros/ros_tutorials/beginner_tutorials/src/beginner_tutorials
Creating package file ~/ros/ros_tutorials/beginner_tutorials/Makefile
Creating package file ~/ros/ros_tutorials/beginner_tutorials/manifest.xml
Creating package file ~/ros/ros_tutorials/beginner_tutorials/CMakeLists.txt
Creating package file ~/ros/ros_tutorials/beginner_tutorials/mainpage.dox

Please edit beginner_tutorials/manifest.xml and mainpage.dox to finish creating your package

6.3 依存関係を調べる

パッケージ生成時に依存関係にあるパッケージを指定した。
これらの依存関係はrospackツールで調べることが可能である。

(1)直接的な依存関係

第一引数にdepends1を指定することで第2引数に指定したパッケージの直接的な依存関係を見ることができる。
次のコマンドを入力する。

$ rospack depends1 beginner_tutorials

std_msgs
rospy
roscpp

beginner_tutorials生成時に指定した3つの依存パッケージが表示される。

(2)間接的な依存関係

ほとんど場合で、それぞれの依存パッケージ自身も他のパッケージに依存関係を持っている。
例えばrospyは次の依存関係を持っている。

$ rospack depends1 rospy

roslib
roslang

つまりbeginner_tutorialsはrospyを依存関係に持つことで、roslibとroslangを間接的に依存関係に持っていることになる。
これらの間接的な依存関係も再帰的に決定し表示する場合は、第一引数にdependsを指定する。

$ rospack depends1 rospy

rospack
roslib
std_msgs
rosgraph_msgs
rosbuild
roslang
rospy
cpp_common
roscpp_traits
rostime
roscpp_serialization
xmlrpcpp
rosconsole
roscpp


HOME > ROS 使い方メモ > 6.パッケージの作成