(訳注:最新の情報は原文を参照してください.)
Contents
ROS ファイルシステムの紹介
ファイルシステム概念のてっとりばやいおさらい
パッケージ: パッケージは ROS ソフトウェア構成の一番基礎となる水準です.ここにはライブラリやツール・実行ファイル等何でも含まれます.
マニフェスト: マニフェストは パッケージ の説明です.これは パッケージ 間の依存関係を宣言するという,一番重要な役目があります.
スタック: スタックは高レベルのライブラリを形成する パッケージ の集合です.
スタック マニフェスト: これらは普通の マニフェスト と同じですが, スタック 用のものです.
ファイルシステムをみると,パッケージ と スタック が分かれていることが容易に分かります:
- 一つのパッケージは一つの manifest.xml ファイルがある一つのディレクトリです.
- 一つのスタックは一つの stack.xml ファイルがある一つのディレクトリです.
ファイルシステム ツール
ROS ではとても多くのコードが多くのパッケージやスタックと交差しながら広がっています.もし ls や cd のようなコマンドライン-ツールで操作するのであれば,うんざりしてしまうことでしょう.そこで ROS はあなたを助ける専用のツールを提供します.
rospack と rosstack の使用
rospack と rosstack は rospack の一部です.これらを使ってあなたはパッケージとスタックの情報を得ることができます.このチュートリアルでは find というパッケージかスタックへのパスを返すオプションのみカバーします.
使い方:
$ rospack find [package_name] $ rosstack find [stack_name]
例:
$ rospack find roscpp
実行例:
~/ros/ros/core/roscpp
roscd の使用
roscd は rosbash の一部です.(cd)のようにパッケージかスタックのディレクトリへ移動できます.
使い方:
$ roscd [locationname[/subdir]]
この例を実行してみてください:
$ roscd roscpp
roscpp package ディレクトリへ移動したことを確認するために,Unix のコマンド pwdを使用して,現在のワーキング ディレクトリを表示してみましょう:
$ pwd
このように表示されるはずです:
~/ros/ros/core/roscpp
この ~/ros/ros/core/roscpp と同じパスは先ほどの例の rospack find でも見ることができます.
サブディレクトリ
roscd ではパッケージやスタックのサブディレクトリへ移動することもできます.
やってみましょう:
$ roscd roscpp/include $ pwd
このように表示されるはずです:
~/ros/ros/core/roscpp/include
roscd の特別な場合
roscd で移動できる, パッケージ でも スタック でもない特別な場所があります.
roscd を引数なしで実行する
roscd を引数なしで実行すると, $ROS_ROOT へ移動します.やってみましょう:
$ roscd $ pwd
このように表示されるはずです:
~/ros/ros
このパスは $ROS_ROOT で宣言されたものと同じです.やってみましょう.
$ echo $ROS_ROOT
このように表示されるはずです:
~/ros/ros
roscd log
roscd log は ROS のログファイル保管フォルダへ移動します.あなたはまだログファイルを使うどころではないでしょう.
やってみましょう:
$ roscd log
rosls の使い方
rosls は rosbash の一部です.パッケージやスタック,あるいはパッケージやスタックのそばに位置しているディレクトリで ls のようにふるまいます.
使い方:
$ rosls [locationname[/subdir]]
例:
$ rosls ethercat_hardware
実行例:
actuators.conf CMakeLists.txt include Makefile src bin ethercat_device_plugin.xml lib manifest.xml
タブ補完
パッケージ名の全てを打ち込むのはうんざりするでしょう.先ほどの例の ethercat_hardware はかなり長い名前です.幸運なことに,いくつかの ROS ツールはタブ補完をサポートしています.
タイピングを初めて:
$ rosls eth <<< ここでタブを押す >>>
タブを押すと,コマンドラインの空白部分は埋められるでしょう:
$ rosls ethercat_hardware/
この働きは,ethercat_hardware が現在 ROS パッケージの中で唯一 eth から始まっているからです.
タイピングを初めて:
$ rosls las <<< ここでタブを押す >>>
タブを押すと,コマンドラインはできる限り空白を埋めます:
$ rosls laser_
しかしながら,この場合は laser_ から始まるパッケージがいくつかあります.
もう一度タブを押すと, laser_ から始まる ROS パッケージが全て表示されます.
rosls laser_ laser_assembler/ laser_geometry/ laser_camera_calibration/ laser_head_updater/ laser_cb_detector/ laser_joint_processor/ laser_cb_processing/ laser_pipeline/ laser_drivers/ laser_scan_publisher_tutorial/ laser_filters/ $ rosls laser_
コマンドラインには,まだこのように表示されているはずです.
$ rosls laser_
laser_ の後に g をタイプし, タブを押しましょう.
$ rosls laser_g <<< ここでタブを押す >>>
ここでは laser_g から始まるパッケージは一つしかないので,このように表示されるはずです:
$ roscd laser_geometry/
復習
あなたは ROS ツールの命名に規則があることに気付いたかもしれません:
- rospack = ros + pack(age)
- rosstack = ros + stack
- roscd = ros + cd
- rosls = ros + ls
この命名規則は多くの ROS ツールで使用されています.
これであなたは ROS の中を自由に歩き回ることができるようになりました.次は,新しくパッケージを作ってみましょう.






