LoginSignup
14
11

More than 5 years have passed since last update.

ROS講座64 ROSパッケージのディレクトリ構成

Last updated at Posted at 2018-09-23

環境

この記事は以下の環境で動いています。

項目
CPU Core i5-8250U
Ubuntu 16.04
ROS Kinetic

インストールについてはROS講座02 インストールを参照してください。
またこの記事のプログラムはgithubにアップロードされています。ROS講座11 gitリポジトリを参照してください。

概要

ROSパッケージにはいろいろなファイルやディレクトリを含みます。それらについて一度整理してみます。
(随時書き足していきます)

基本的な構成

全てのROSのファイルはcatkinワークスペースの下に置かれます(catkin_init_workspaceで初期化したもの)。
ユーザーが各コードはその下のsrcディレクトリ以下に置きます。buildとdevelはcatkin_makeした時に生成されます。catkinワークスペースの名前はcatkin_wsが多く使われますが、なんでもかまいません。また複数のcatkinワークスペースを1つのPCの中で使うこともできます。

基本的なディレクトリ構成
catkin_ws/
 ├ build
 ├ devel
 └ src
    ├ meta_package1/
    │  ├ packageA/
    │  │  ├ src/
    │  │  │  ├ code1.cpp
    │  │  │  └ code2.cpp
    │  │  ├ scripts/
    │  │  │  ├ script1.py
    │  │  │  └ script2.py
    │  │  ├ launch/
    │  │  │  ├ launch1.launch
    │  │  │  └ launch2.launch
    │  │  ├ CMakeList.txt
    │  │  └ package.xml
    │  └ packageB/
    │     └.......
    ├ meta_package2/
    │  └.......
    └ packageC/
       └.....

パッケージとメタパッケージ

ROSのプログラムの最小単位はパッケージです(上記の図でpackageAやpackageB、packageCとなっているもの)。パッケージの名前はユニークでないといけません。
また、これはcatkin_ws/src/の下に置きますが、直下でもよいですし直下でなくても構いません。間にディレクトリを挟むことができます。この時にこれ(meta_package1やmeta_package2)をメタパッケージと呼びます。2階層以上挟むこともできます。

ROSパッケージ内のディレクトリ

基本的に大体のディレクトリ名は任意です。ディレクトリーの分け方も一例と思ってください。

 よく使うもの

  • src/
    .cppや.hファイルを置きます。しかしファイルの位置は後でCMakeListで指定するので、実はsrcフォルダを作るのは必須ではありません。またsrcの中にフォルダを作ってその中に入れてもよいです。個人的には1つのノードが複数のファイルで構成されるなら、それらを1つのディレクトリーにまとめるのを推奨します。 ※ROSwikiではsrc/package_name/のようにパッケージ名のディレクトリを作ってその下に入れるのを推奨していますが、あまりそういうディレクトリ構成を見たことがありません。
  • scripts/
    スクリプトを置きます。主にpythonで書いたファイルを置くところですが、設定ようなどshell scriptを置くこともできます(.shでもrosrunで起動できます)。実行権限を付けるのを忘れずに。ROSが頑張ってファイルを探すので、これもscriptsという名前である必要はありません。
  • launch/
    roslaunch用のファイルを置いておくところです。これもROSが頑張って探すので実はlaunch/というディレクトリー名は必須ではありません。
  • CMakeList.txt(名前固定・必須)
    ディレクトリーではなくファイルですが。ビルド(=catkin_make)時に読み込まれるファイルです。cppファイルのコンパイルの条件などを書きます。
  • package.xml(名前固定・必須)
    ROSパッケージとして必須の情報が書いてあります。実はROSパッケージ名はディレクトリ名で決まるのではなくこのファイルの中のnameタグ(例えば<name>basic_lecture</name>となっているところ)で決まります。なのでディレクトリ名を変えてもこのファイルを変えないと、ROSパッケージとして認識される名前は変わりません。

実行ファイル系

  • include/package_name/
    .hファイルを置く場所です。ほかのパッケージから読み込むものは上のようにパッケージ名のディレクトリの下に置くべきです。
  • msg/(名前固定?)
    カスタムROSメッセージファイルを置く場所です。
  • srv/(名前固定?)
    カスタムROSサービスファイルを置く場所です。

Rviz関連

  • rviz
    rvizのビューの設定ファイルを置きます。
  • urdf
    urdfファイルを置きます。
  • xacro
    xacroファイルを置きます。

gazebo関連

  • worlds
    gazeboのworldファイルを置きます。
  • models
    gazeboのモデルのsdfファイルを置きます。

  • config
    YAMLなどのROSのコンフィグファイルを置きます。
  • cfg
    Dynamic Reconfigure用のファイルを置きます(configと紛らわしいですね)。
  • www
    ROSWWWで参照するHTMLファイルを置きます。
  • recources
    rosbagやPDF等の参考ファイルを置きます。
  • platformio
    マイコン用のプロジェクトファイルを置きます。

参考

ROSwiki: ROSのパッケージ

目次ページへのリンク

ROS講座の目次へのリンク

14
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
11