catkin_make徹底理解
catkinワークスペース
STEP1
- ROS_PACKAGE_PATHの確認、設定
- $ mkdir ~/test_catkin_ws/src
- $ cd ~/test_catkin_ws/src
- $ catkin_init_workspace
ここで、~/test_catkin_ws/src にCMakeKist.txtが作成される
STEP2
- cd ~/test_catkin_ws
- catkin_make
ここで、buildとdevelができる
buildとは
- catkinパッケージを構成するためにCMakeを呼び出し、さまざまな処理を行う場所でビルドスペースと呼ばれる
develとは
- 生成される目的コードをインストールする前に作業を行うスペースであり、開発スペースと呼ばれる
develや/opt/ros/indigoの中に設定ファイル.bashがある
/opt/ros/indigo設定読み込み
- コアパッケージへのパスが反映
devel設定読み込み
- ユーザーのワークスペースにインストールされたパッケージを反映
パッケージ作成
ROSパッケージをビルドするには
- CMakeList.txt
- package.xml
が必要
$ catkin_create_pkg <package_name> [depend1] [depend2] ... ex: catkin_create_pkg test_package roscpp rospy std_msgs
こうすることで、依存関係がpackage.xmlに追加される
- 同じパッケージがある場合は$ROS_PACKAGE_PATHに記載の順番で呼ばれる
コードの変更、修正時
- package.xml
- CMakeLists.txt
を修正
package.xml
現在のパッケージの名前や、ほかのパッケージとの依存関係、コンパイル時のフラグなどの基本情報が定義
大事なタグ
<build_depend> 現在のパッケージをインストールする前に、先にインストールする必要のあるパッケージの名前を指定する <run_depend> 現在のパッケージを実行する際に必要とするほかのパッケージの名前や現在のパッケージが依存するランタイムライブラリ名などを指定する <test_depend> 現在のパッケージの機能テストを行う際に依存するパッケージ名を指定する <buildtool_depend> 現在のパッケージを構築する際に使用されるシステムツールを指定する 一般的にはcatkin <export> 現在のパッケージをコンパイルする際に必要となるフラグやヘッダファイル、ライブラリなどのパス情報を指定する
CMakeLists.txt
- CMakeビルドシステムに使われる設定ファイル
- このファイルの中にはターゲットを生成する際に必要なツールや関連するライブラリおよび生成方法などを記述する。CMakeでビルドするときに、このファイルを参照してターゲットを生成する
記述する内容
. 関連するほかのcatkinパッケージ名
ex: find_package(catkin REQUIRED COMPONENTS roscpp rospy std_msgs)
. メッセージ・サービス・アクションジェネレータ
ex: add_message_files( FILE Message1.msg)
. メッセージ・サービス・アクションのデータタイプの生成
ex: generate_message(DEPENDENCIES std_msgs)
. パッケージの構築情報
ex: catkin_package(~)
. 構築するターゲットの指定
ex: add_executable(~)
. インストール方法
ex: install(~)
. テスト項目
ex: catkin_add_gtest(~)
- . メタパッケージの記述
単一のパッケージのみビルドしたい場合
catkin_make --pkg <package name>