catkinizeというcatkin化を助けてくれるスクリプトがあるので、これを使ってみましょう。
参考URL:
http://ros.org/wiki/catkin/migrating_from_rosbuild
githubにソースがあるのでそこから取ってきてインストールします。
$ git clone https://github.com/ros-infrastructure/catkinize $ cd catkinize $ sudo python setup.py install
移行するためのworkspaceをつくります。
ここではlight_curtainというOTLの自作packageの移行をするものとします。
$ mkdir light_curtain_ws/src $ cd light_curtain_ws $ catkin_make $ source devel/setup.bash
ここにlight_curtain packageのソースをもってきて、catkinizeします。
$ cd src $ git clone https://github.com/OTL/light_curtain.git $ catkinize light_curtain 0.1.0
もし、stackならcatkinize_stackを使えばOK。もしPakcageの新規作成ならcatkin_create_pkgを使いましょう。
手動でチェック
catkinizeがすべて自動でやってくれるわけではないので、手動で対応しなければなりません。
例えばpackage.xmlの依存関係はすべてコメントアウトされた状態にあります。
また、CMakeLists.txtもTODOで、手動で埋めるべき項目が記されています。
注意:catkinではすべてのCMakeプロジェクトが1つにまとめられます。そのためCMake上の変数やターゲット名は被らないようにしなければなりません。
以下にやることを原典を参考に書いておきますが、実際にはCMakeLists.txtをいじりながら、ビルド、実行、ができる状態まで編集しつつ、分からないところを調べる、という作業になります。
- maintainerの項目がコメントアウトされた状態で入っている(authorと同じになっている)のでそれを確認してコメントイン。<maintainer email="hoge@hoge.com">のように、emailフィールドも入れた方がいいみたいです。
- dependenciesがbuild/run/testで分かれたので、確認してコメントイン。http://ros.org/wiki/catkin/package.xmlを読んで意味を理解しましょう。
- CMakeLists.txtが編集されているので、そこに書かれたTODOをちゃんとやる
- 自動的に変更された部分を確認して修正する
- 古いコメント部分を削除
- 生成するメッセージ、サービス、アクションをadd_**_filesに記入
- 古いincludeを削除
- catkin_packageマクロを埋める
- 変数名がユニークなものになるように変更
- pythonスクリプトがあるならその対応
・・・とやることいっぱいです。
また、
超はまったのが、dynamic_reconfigureで、
dynamic_reconfigure.parameter_generatorじゃなく、
dynamic_reconfigure.parameter_generator_catkin
にしないといけないところでした。
ともかく、すべてを理解してからじゃないととても無理だと思います。
package.xml, CMakeLists.txtの新しいフォーマットの理解をしましょう。
ともかく、1回やれば大体分かると思いますので、簡単なものからやってみるといいでしょう。
あと、ライブラリが自動でリンクされないので、以下のような感じに書くとcatkinで依存関係記述されたライブラリがリンクできます。
target_link_libraries(hogehoge_target ${catkin_LIBRARIES})
うーん、思ったより大変だった。
参考になるか分かりませんが、groovy化したlight_curtainをおいて置きます。
つっこみ、修正等あればgithubにて教えてください。
0 件のコメント:
コメントを投稿