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

ROS ファイルシステムの紹介

ファイルシステム概念のてっとりばやいおさらい

  • パッケージ: パッケージは ROS ソフトウェア構成の一番基礎となる水準です.ここにはライブラリやツール・実行ファイル等何でも含まれます.

  • マニフェスト: マニフェストは パッケージ の説明です.これは パッケージ 間の依存関係を宣言するという,一番重要な役目があります.

  • スタック: スタックは高レベルのライブラリを形成する パッケージ の集合です.

  • スタック マニフェスト: これらは普通の マニフェスト と同じですが, スタック 用のものです.

ファイルシステムをみると,パッケージスタック が分かれていることが容易に分かります:

  • 一つのパッケージは一つの manifest.xml ファイルがある一つのディレクトリです.
  • 一つのスタックは一つの stack.xml ファイルがある一つのディレクトリです.


ROS/Tutorials/NavigatingTheFilesystem/filesystem_layout.png

ファイルシステム ツール

ROS ではとても多くのコードが多くのパッケージやスタックと交差しながら広がっています.もし lscd のようなコマンドライン-ツールで操作するのであれば,うんざりしてしまうことでしょう.そこで ROS はあなたを助ける専用のツールを提供します.

rospack と rosstack の使用

rospackrosstackrospack の一部です.これらを使ってあなたはパッケージとスタックの情報を得ることができます.このチュートリアルでは find というパッケージかスタックへのパスを返すオプションのみカバーします.

使い方:

$ rospack find [package_name]
$ rosstack find [stack_name]

例:

$ rospack find roscpp

実行例:

  • ~/ros/ros/core/roscpp

roscd の使用

roscdrosbash の一部です.(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 の使い方

roslsrosbash の一部です.パッケージやスタック,あるいはパッケージやスタックのそばに位置しているディレクトリで 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 の中を自由に歩き回ることができるようになりました.次は,新しくパッケージを作ってみましょう.

Wiki: ja/ROS/Tutorials/NavigatingTheFilesystem (last edited 2010-01-04 09:44:15 by KentaYonekura)