Contents
ROSの中のPackagesは、ROSのstacksの中に組織されます。パッケージの目標は、簡単に再利用するための最低限のコードの集合を作ることにあるのに対して、スタックのゴールは、コードの共有を簡単にすることにあります。スタックは、ソフトウェアを配布するためにROSに組み込まれている機能の一つです。それぞれのスタックは、関係するバージョンを持ち、他のスタックへの依存関係を宣言することができます。これらの依存関係においてまた、開発に大きな安定性をもたらすためにバージョンナンバーを宣言することも可能です。
スタックは、ナビゲーションスタックや間にぴゅレーションスタックのような全体で機能を提供するパッケージを集約しています。コンパイルのときにリンクを手がける古典的なソフトウェアライブラリとは異なり、これらのスタックは、ROSを通して実行時にこの機能をROSのtopicsやservicesを通して行われます。
スタックは、手で簡単に作成することができます。スタックは、単にROS_ROOT か ROS_PACKAGE_PATH(ROS環境変数をご覧ください)の中に含まれstack.xmlを含むディレクトリかどうかで決まります。このディレクトリにあるパッケージは、スタックの一部であると思われます。
リリースの際には、CMakeLists.txtや Makefileなどもスタックのルートに含まれる必要があります。 roscreate-stackはこれを自動的に作成します。
ja/Stack Manifestでどのようにstack.xmlを書くかをご覧ください。
コマンドラインツール
rosstackはROSのスタックを触るためのROSのツールのひとつです。packagesのためのrospackのスタック版のようなものだと思ってください。
roscreate-stackは、正しい依存関係の中でstack.xmlを生成することを含めスタックを作成する過程を自動的に行うのを手助けします。
パッケージを扱い使うのを助ける付加的な機能を持たせた一般的なUnixShellの拡張もあります。もっとも一般的なものにrosbashがあります。それは、一般的なUnix shellのコマンドをROS用に変えたものを提供します。これらのもっとも一般的な使い方はroscdです。これは、cdにパッケージやスタックのディレクトリを指定するように振舞います。以下のように指定することができます。
roscd roscpp_tutorials
クライアントサポートライブラリ
Python
Pythonでは, ROSのスタックについて知るためにroslibパッケージの中にあるroslib.stacksのモジュールを使うことができます。