こんにちは!長谷川です。
前回はROSの環境のセットアップとROSのファイルシステムについて説明しましたが、今回はROSのパッケージの作成とビルドについて説明したいと思います。
今回も前回同様、主に英語版Wikiのチュートリアルに従って進みます。日本語版Wikiのチュートリアルは情報が古いですが、英語版がわかりにくい場合、適宜参照すると理解の助けになると思います。
パッケージの作成
前回、パッケージとは何かをお話しましたが、パッケージはpackage.xmlとCMakeLists.txtを含んでいる必要があります。逆に言えば、最低限これらを含んでいれば、パッケージとして認められます。パッケージ作成においては、これらのひな形を自動で生成させ、それらを後から編集します。また、前回作ったようなcatkin workspaceを利用しながらパッケージを編集するのが推奨みたいですが、パッケージを単独でビルドすることも可能らしいです。以下では、チュートリアル通り、catkin workspaceを利用してパッケージを作成、ビルドします。
まず、端末(Terminal)を開き、
$ cd ~/catkin_ws/src $ catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
と入力します。
何か表示されましたね。どうやら、~/catkin_ws/srcの中に、beginner_tutorialsというパッケージが作成されたようです。
この場合、すでに一部のパッケージの依存関係が定められています。なぜかというと、「catkin_create_pkg」という命令は、
catkin_create_pkg <package_name> [depend1] [depend2] [depend3]
のように使用した場合、パッケージ[depend1],[depend2],[depend3]に依存するようなパッケージを作るからです。このことを、前回紹介したrospackを用いて確かめてみましょう。前回はrospackにfindというオプションをつけて使いましたが、今回はdepends1というオプションをつけます。これで依存関係を確認できるというわけです。
rospack depends1 beginner_tutorials
と入力すると、roscpp,rospy,std_msgsが表示されました。これは、先にcatkin_create_pkgで指定した依存関係と同じですね。
さて、上の依存関係は当然package.xmlに記録されているはずです。確認してみましょう。
$ roscd beginner_tutorials $ cat package.xml
<build_depend>
の後ろと、
<run_depend>
の後ろに、roscpp,rospy,std_msgsが確認できますね。
次に、beginner_tutorialsが依存しているパッケージの依存関係(間接的な依存関係)を調べてみましょう。例えばrospyについては、先ほどと同じように
rospack depends1 rospy
と入力するとわかります。
このような間接的な依存関係も含めて、指定したパッケージが依存するパッケージを全て列挙するのが、rospackにdependsというオプションをつけたものです。
rospack depends beginner_tutorials
と入力すると、以下のようになります。
要は、依存関係というのはかなり複雑だ、ということですね・・・。
次に、package.xmlを編集してみましょう。例として、
$ cd ~/catkin_ws/src/beginner_tutorials $ vi package.xml
と入力して、エディタviでpackage.xmlを開きます。
チュートリアルによると、色々変えなきゃならないところがあるようですが、とりあえず例として、ライセンス部分を変えてみたいと思います。
<license>
の後に書かれているTODOを、BSDと書き換えます。
このようなライセンスの明記や、チュートリアルで指示される作成者の名前、連絡先のタグへの記入は、作成したパッケージが他の人に共有される際の障害を取り払うためのものです。それゆえ、作成したパッケージをアップロードする場合には必ず記入しておきましょう。
パッケージのビルド
次に、自分の作ったパッケージをビルドしてみましょう。ビルドというのは、ソースコードファイルを実行ファイルに変換することです。
$ cd ~/catkin_ws $ ls src
と入力して、CMakeLists.txt beginner_tutorialsが出てきたら、今までの作業がうまくいっているようです。
catkin_make
と入力します。すると、色々表示されて、ビルドが進行します。終わったら、
$ ls
と入力してみます。
buildとdevel、srcというフォルダがあることがわかります。これでビルドができていることが確認できました。
以上、ROSのパッケージの作成とビルドについて説明しました。
次回は、CRANE+を動かすための環境の構築について説明したいと思います。