2017/05/30

ROSチュートリアル4 -ROSパッケージの作成とビルド-

こんにちは!
ROSチュートリアル3 -catkin workspaceの作成-の続きで,

今回やる内容はCreatingPackageおよびbuild our ROS packageです.




cratkinとはROSの最新のビルドシステムでした.catkinでのビルドの方法について説明していきます.

パッケージにはかならず,package.xml およびCMakeLists.txtが必要です.
じゃあ,どこにそれがあるかっていうと,

ワークスペースの中にsrcフォルダがあり,その中にCmakeLists.txtが1つとpackageフォルダがn個あります.
そして,各packageフォルダにはCmakeLists.txtが1つとpackage.xmlが1つあります.

では,catkin packageを作ってみます.

$cd ~/catkin_ws/src
$catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
一般的に書くならば
$catkin_create_pkg <package_name> [depend1] [depend2] [depend3]
です.

これで,std_msgsとrospyとroscppに依存したbeginner_tutorialsというパッケージができます.
できたパッケージにはpackage.xml およびCMakeLists.txtが含まれているはずです.

ここで,
$ cd ~/catkin_ws
$ catkin_make
とすると,作ったパッケージがビルドされます.


確認を行います.

$rospack depends1 beginner_tutorials
とすると,依存するパッケージがわかります.
std_msgsとrospyとroscppが出てくるはずです.

つぎに,
$ roscd beginner_tutorials

$ cat package.xml

として,package.xmlの中を見てみましょう.
  <build_depend>roscpp</build_depend>
  <build_depend>rospy</build_depend>
  <build_depend>std_msgs</build_depend>
なるほど確かに依存関係が書かれています.

では,beginner_tutorialsが依存するrospyというパッケージも何かに依存しているのでしょうか?
$rospack depends1 rospy
とすると,genpy,roscpp,rosgraph,rosgraph_msgs,roslib,std_msgsと依存していることがわかります.

ってことは
beginner_tutorialsは間接的に(rospyとかを介して)もっと依存しているはずです
$rospack depends beginner_tutorials
とすると,間接的な依存関係も見ることができます.

依存関係が途中で増えた時はどうすればいいでしょう.
CMakeLists.txtとpackage.xmlを編集する必要があります.

package.xmlの編集を考えてみましょう.
まず,description tagはpackageの名前です.自由に変更可能だが短く。
次に,maintainer tags:必須。このパッケージについてだれにコンタクトをとればいいか示す。Emailも設定。

次に,license tags GPLv2とか,BSDとかが書いてあります.ROSではほとんどBSD

つぎが,dependencies tagsタグです.
 <build_depend>,  <run_depend>を増やすことで,依存関係も増やすことができます.
build_depend, buildtool_depend,run_depend, test_depend

の種類がある。詳しくは
http://wiki.ros.org/catkin/package.xml#Build.2C_Run.2C_and_Test_Dependencies
軽く説明すると
Build Dependencies:このパッケージのビルドに必要なパッケージ
Build Tool Dependencies:自身の構築に必要なビルドシステムツール。一般にcatkinだけあればよい
Run Dependencies:コード実行の際に必要なパッケージ。またはこのパッケージに対してライブラリを作成する
Test Dependencies:ユニットテストのときにだけ必要なパッケージ

CMakeLists.txtも同様にstd_msgsとrospyとroscppがあるところに依存関係を足していけばOKです.



では,catkin_makeしてみましょう!!

1.  環境セットアップ
$ source /opt/ros/indigo/setup.bash

2.  catkin_makeの利用
catkinmakeは標準的なCmakeのcmake+make。
beginner_tutorials/  CMakeLists.txtがあるか確認。あれば以下で表示されるはず
$cd ~/catkin_ws/
$ ls src

ビルドする
$ catkin_make
この時パスは以下に設定されるはず
Base path: /home/user/catkin_ws
Source space: /home/user/catkin_ws/src
Build space: /home/user/catkin_ws/build
Devel space: /home/user/catkin_ws/devel
Install space: /home/user/catkin_ws/install

lsで以下の表示の確認
$ ls
build
devel
src

build:   build spaceのデフォルト。cmake と makeが環境設定しパッケージをビルドする場所
devel:   devel spaceのデフォルト。パッケージのインストールに先んじて、実行ファイルとライブラリが入る。


以上です,また!!

0 件のコメント:

コメントを投稿