ROSのpackage.xmlとは何者?


はじめに

ROSの勉強中、package.xmlがどんな働きをしているのかが分からなかったので調べた事をメモ
※ 勘違いがあるかも

package.xmlについて

結論を先に書くと、以下2つの機能を提供する。

  • 第3者にパッケージに関する情報(作者や依存パッケージなど)を提供する。
  • ROSコマンドにパッケージに関する情報を提供する。

もう少し詳細に書くと

  • package.xmlをもつディレクトリがROSのパッケージのルートディレクトリとして認識される。
    • rospackコマンドで表示される依存パッケージ名などはこのファイルの記述が参照される。
    • roscdコマンドで移動する先もこのファイルの場所を元に実行される。
  • パッケージ名や作者、パッケージの依存関係などを記述する
    • 自分だけで使う分には一部記述を除いてCMakeLists.txtと違っいても良い。
    • ただしaptやgithub等で第3者に公開する場合、異なる記述があると使用者が混乱するので一致させる。
  • ビルドの依存関係の記述はなくてもcatkin_makeは通る。
    • ただしbuildtool_dependタグがないとビルドエラーになる。
    • またnameタグのパッケージ名がCMkakeLists.txtのproject(パッケージ名)と異なっていてもビルドエラーになる。
    • この2つのタグは自動生成されているはずなので触らないのが無難。
  • その他
    • export機能を使うと依存するパッケージにプラグインをエクスポートできる。
      • nodoletを使う場合はこの機能を利用するようだが使ったことがないので不明。

CMakeLists.txtと違っててもいい所が少し面倒。

参考サイト

ROS wiki catkin/package.xml
ROS講座97 CMakeList.txtとpackage.xmlの書き方
ROS (2)のpackage.xmlについて(1/2)