2013年12月25日水曜日

2013年ロボットニュースを振り返り

個人的に気になった2013年ロボットニュースを思い出して書いてみました。
超偏っていると思いますが・・・。

正直最近のしか覚えてないので、これは?というのあればコメント欄で教えてください。

3月 カワダロボティクス設立

JSKのH7や産総研HRP-2などの製造を担当していた川田工業からカワダロボティクスが生まれました。やはり大企業ではやりにくかったのかな?
(ところでゼネラルロボティクス社ってどうなったんでしょうか?)

6月 宇宙で会話?小型ヒューマノイドKIROBO発表

ロボ・ガレージの高橋さんや電通などがタッグを組んで小型ヒューマノイドを宇宙に送る計画が発表になりました。先日、ちゃんと若田さんと宇宙で会話していましたね。
失敗できないプロジェクトを成功させたのはすごいと思います。

10月 HOSPI販売開始

自律移動界ではかなりの老舗、PanasonicのHOSPIがついに一般販売を開始しました。
歴史的なニュースだったと思います。
一つの区切りですかね。

10月 Unbound Robotics UBR-1発表

元Willowのメンバーがスピンアウトした会社からROSをサポートした、一本腕のモバイルマニピュレータUBR-1を350万くらいで販売する、と発表されました。
トヨタのHSRにそっくりですが、彼らがそのことに全く触れようとしないのは何故でしょうね。
本当に売られるといいなぁ。







11月 PrimeSenseがAppleに買収される

ロボットの3Dセンサといえば、KinectかXtionというくらいに独占状態にあった、PrimeSense社がAppleに買われちゃいましたね。
今後の安価な3DセンサはMicrosoftのKinect v2になるのか、Xtionが売られ続けるのか、
他のセンサが来るのか、楽しみです。

11月 ソフトバンクロボット参入

アスラテックという会社でソフトバンクがロボット事業に参入を発表しました。
Googleよりちょい早い。
http://www.asratec.co.jp/

12月 Googleのロボット参入

ついに巨人Googleがロボットに本気になりましたね。

12月 DRC Trials

Darpaのロボティクスチャレンジが行われ、JSK OBが作ったシャフトが優勝しましたね。
1年の終わりにGood news! めでたい!

なかなか国内、国外で活発な動きがあっていいですね!
ロボット盛り上がってる感があります。

2013年12月24日火曜日

2013年ROS振り返り

今年ももうすぐ終わりですね。

このブログでROSと私の2013年を振り返ってみましょう。

1月 Groovyリリース

新年からGroovyがリリースされていましたね。catkinが正式された野心的なリリースで、willowに正月休みはないのかとビビりました。

2月 Willow解散のうわさ

このころ、大部分が解雇された、という噂が流れました。もっと長期的に開発をすると思っていましたので、びっくりしましたね。

2~5月は私のblogはcatkin化の話題でした。catkinは思想は美しいですが未だになかなか難しく、rosbuildがなつかしいです。

catkin化: 何をすればいいか理解する編

7月 ROS Hydromedusa betaリリース

8月 WillowのメンバーがSuitable Techへ合流

  実質のwillow解散のニュースでした。主なメンバはすでにOSRFなどのスピンオフ会社などに分散していましたが、ショック!でした。

9月 Hydroリリース

4月予定が伸びに伸び、9月リリースになりました。ついにcatkinのパッケージのみの提供になりましたね。

新デバイス

Oculus RiftやLeap Motionといった革新的なデバイスが我々一般人が入手可能な価格で発売されるなど、新デバイスへの期待感もありました。
 8月 Oculus Riftで動かすロボット作ってみた
来年はKinect V2が一般入手できるようになるでしょうし、MYOも出ます。まだまだ盛り上がりそうです。

1年でかなり大きな動きがありましたね。
来年はどうなるかな?Indigoは予定どおりリリースされるでしょうか?
楽しみです。

2013年12月1日日曜日

もう一つのUSBカメラROSドライバ cv_camera

ROS hydroにcv_cameraをリリースしました。

https://github.com/OTL/cv_camera

hydro使っている人ならば、

$ sudo apt-get install ros-hydro-cv-camera

で入ります。


USBカメラのドライバは、一番メジャーなのが、Bosch作成のusb_cam

http://wiki.ros.org/usb_cam

だと思うのですが、他にも

http://wiki.ros.org/gencam_cu
https://github.com/ericperko/uvc_cam

とか色々あります。

でも、camera_infoをサポートしていなかったり、
Nodeletとして使えなかったり、キャプチャ周期を指定できなかったり、
不満がありました。

そこで以上の不満を解決するものをゼロから作ることにしました。

と、ここまで書いて、それらを満たすものを発見してしまいました。

http://wiki.ros.org/uvc_camera

あるある。。。。

cv_cameraは、OpenCVのcv::VideoCaptureを使うことで、
OSに依存しません。(OpenCVに丸投げ)

なので、OSXでも普通に動くのも特徴ですから。むしろそここそが特徴ですから!

と、思ったらuvc_cameraもOSXで動くみたい!オワタ。。。

2013年11月6日水曜日

wiki.ros.org のindexingへの登録の仕方

昔はros-usersにメールしていたのですが、
現在はrosdistroのdoc.yamlを自分で編集するようです。

以下のwikiに書いてあるとおりにすればOKです。
rosrubyのpull requestを送りました。

http://wiki.ros.org/rosdistro/Tutorials/Indexing%20Your%20ROS%20Repository%20for%20Documentation%20Generation

2013年9月24日火曜日

ROS Community Metrics Report

ROSコミュニティーのメトリクス(データ)が発表になっています。

http://wiki.ros.org/Metrics


2012/07のレポート
http://download.ros.org/downloads/metrics/metrics-report-2012-07.pdf

2013/08のレポート
http://download.ros.org/downloads/metrics/metrics-report-2013-08.pdf


日本からのros.orgアクセスは世界第3位 ー> 第4位(中国に抜かされた)

となっており、意外と多い国ですね。

韓国とか多いかと思ったら案外多くないですね。

AUBロボコンの結果とか見ても中国が圧倒的なので、中国脅威かも??

2013年9月22日日曜日

ドキュメント生成コマンド rosdoc_lite

前からrosdocというコマンドがありましたが、
いつのまにかrosdoc_liteが標準になったようです。

http://wiki.ros.org/rosdoc_lite

中身は基本的にはdoxgenのラッパーですが、PythonにはSphinxとか色々設定できるようです。

rosrunとかじゃなく、いきなりコマンドで使えます。

rosdoc_lite <path_of_package>

これでdoc/html/index.htmlが生成されます。
doxgenの初期設定とかめんどいので、便利ですね。

2013年9月5日木曜日

hydroリリースされました

やっとhydroがでました。


  • 700以上のパッケージ
  • Ubuntu Precise, Ubuntu Quantal, Ubuntu Raringのサポート
  • 次のIndigo(12ヶ月リリース周期)のリリース予定は2014年4月
  • Fuerteサポート終了

Hydroへの移行について


いつもどおり、upgradeのガイドがあります。
以下は特にガイドがありますので、使っている人は注意ですね。
  • gazebo
  • PCL(1.6 -> 1.7)
  • stage
  • tf -> tf2
  • pr2
  • navigation Costmap2D
  • hokuyo_node
  • rosserial
  • sicktoolbox_wrapper
  • TinyXML
  • Xacro
tfはついにdeprecatedになり、tf2が標準となるようです。
実装が新しくなった他にも、/tf_staticという、latched topicで静的な関係を記述するものが増えたりしています。

2013年8月23日金曜日

rosbuildの今後

 rosbuildのROSパッケージはdebianバイナリパッケージにしないよ。
ということみたいです。
これからもビルド・実行は出来るから安心しましょう。
 Having achieved this coverage and having no perceivable demand for rosbuildbased binary releases(aka zero releases so far) we plan to drop support forbuilding debian packages using the old rosbuild based release system. Thisis moving this change forward one release. The main reason for this is thatit will save approximately half the work of running the buildfarm and allowus to put the energy into other areas which are in higher demand. (Possiblythings such as adding support for armhf) 

 Note that you will still be able to build and run dry packages withrosbuild and rosmake from source.  We are only going to drop support forreleasing them into debian packagse.

Oculus Riftで動かすロボット作ってみた

OculusRiftのROSドライバを作りました。

https://github.com/OTL/oculus

OculusRiftは3Dのヘッドマウントディスプレイです。
http://www.oculusvr.com/
基本ゲーム向けなんですが、ロボットのインタフェースとしても非常に面白そうですよね。

2つのカメラ画像をROSメッセージとしてPublishすれば、
それを使ってOculus用の画像を作ります。

また、頭の傾きをtfとして発行します。

また、これを使ったテレプレゼンスロボットを作ってみました。
Oculusはオキュラスと読むようですね。。。



rvizでの仮想世界をOculusで眺めることができるプラグインがすでにあります。
http://ros.org/wiki/oculus_rviz_plugins

こっちも楽しそう。まだ試してないけど。

2013年8月17日土曜日

dynamixelのリポジトリとcatkin化

かなり前の話題になりますが、dynamixel_motorスタックがgoogle codeから
githubに以降したもよう。
catkin化もされていますので、私のリポジトリも役目を終えたようです。

https://github.com/arebgun/dynamixel_motor

いじりたければ、ここをベースにforkしましょう。

2013年7月23日火曜日

ROS Hydromedusa betaリリース

次期ROSのリリースHydroのベータが出ました。
http://www.ros.org/news/2013/07/announcing-ros-hydromedusa-beta-release.html

Gazebo 1.9, PCL 1.7, tf2なんかが入ったようです。


次のリリースのIndigo Iglooは1年後の2014年5月予定になっています。
http://www.ros.org/wiki/indigo/Planning

1年周期のリリース、1つのリリースの開発(Indigo)、2つのリリースのサポート(Hydro/Groovy)になったようです。

なので、Hydroの正式リリースにより、Fuerteが開発のライフサイクルを終えることが名言されていますね。もしまだFuerteの方がいたら移行を急ぎましょう〜。
(debファイルとドキュメントはしばらく置いておくそうです。)

また、いつもどおりTシャツを売っています。

http://www.ros.org/news/2013/07/ros-hydromedusa-logo-and-tshirt-campaign.html

買おうかな。

2013年6月13日木曜日

ROS利用環境アンケート実施中

ros-japan-usersメーリスでも話題になったROSのリリースの話題です。
主にUbuntuについてですが、現在の使用環境と、将来的なサポートへの期待の調査が来ています。自分の環境をサポートしてもらいたい人はアンケートに協力してみたらどうでしょうか?
今週末までみたいです。

https://www.surveymonkey.com/s/JY63R3Z
原文:
Hi Everyone,
To facilitate the release timeline discussion please take a moment to fillout this survey about your ROS usage past and expected so we can make aninformed decision going forward.
https://www.surveymonkey.com/s/JY63R3Z
We will keep this survey open through the end of the week.
Tully

2013年6月9日日曜日

NHK大学ロボコン2013

今日はNHK大学ロボコンの応援に行きました!
我らがRoboTech(ロボテック)は惜しくも準優勝!!
決勝は二秒差という僅差の試合でした。本当に感動しました!


私が現役のころの10年前は一回勝つのがやっとでしたが、二個下の後輩が優勝し、それ以来かなり強いみたいです。

当時はここまで強く大きな団体になるとは全く思えませんでした。当時株を持っておけば大儲けだったなぁ。

応援の掛け声とチーム名が当時のままなのがうれしいです。

今年の課題は、いつもの、自動マシンと手動マシンがブロックを運ぶのがベースなんですが、
最後に自動マシンがとって来た苗(矢みたいなの?)をぶん投げて、直径50cmの高い台に乗っけるというのがありました。

投げるマニピュレーション技術なんて世の中になかなかなさそうなのに、
これをほとんど自動で、確実にこなしていました。
恐ろしい技術力です。

2013年5月23日木曜日

ロボットがメインストリームになるのを妨げているのはなんだろうか?

世の中完全にITがメインストリームであり、ロボットなんて全く相手にされていません。
ITはすでに飽和していると言われていて、次にロボットが期待されているわけですが、
いったいいつになったらロボットの時代が来るのか。。。
我々知能ロボットソフトウェアの開発をしている人間はみんなIT業界の連中を指をくわえて眺めている状態ではないでしょうか。

普段あまり思想とか書かないですけど、OSRFのブライアンガーキーさんの記事が目に入ったので翻訳して紹介します。我々ロボットソフトをやっている人間からすれば中身は至って普通のことが書いてありますが、なかなか明文化されている文章は見たことがなかったので、代弁してもらうことにしました。

原文: http://robohub.org/brian-gerkey-on-what-is-the-single-biggest-obstacle-preventing-robotics-from-going-mainstream/

 ロボティクスがもっと広く採用されるための最大の障壁は、ロボットアプリが経験のあるロボット開発者(roboticists)にしか作れないということだ。信頼性とロバスト性を兼ねそろえた役に立つアプリを作るためには、深く広い様々な分野の知識が必要不可欠だ。例えば状態推定や、認識、動作計画などだ。単なるソフトウェアなら多くの人が書けるが、こういったロボット開発の経験がある人はほんの少ししかいない。必要なのは多くの普通のソフトウェア開発者をロボットアプリ開発に参加させることだ。

 私がアプリ(applications)と言っているのは、それを新しいアルゴリズムの開発やコアな要素開発と区別すためだ。普通のソフトウェアのアナロジーで語れば、デスクトップアプリを作るために、プロセスのスケジューラーやファイルシステム、メモリ管理を理解する必要がないということだ。同様にウェブアプリを書くのにDNSやウェブサーバーやウェブソケットの詳細を知っている必要はない。もちろんそれらの知識はあれば役に立つが、一度コアが出来て、理解され、ドキュメントが書かれ、チュートリアルが出来てしまえば、障壁は著しく低くなる。ただコードを書けばよいというレベルになる。

 単にもっと多くの人をロボットに関わらせる、その先に行くためには、日々の生活の中でロボット技術が有益に使われるためのもっとよいアイデアが必要だ。私はロボットコミュニティーに入って15年になるが、ロボット開発者は病的なまでにアプリのアイデアを考えるのが苦手だと確信するに至った。我々は技術に魅了されており、それは重大な問題に取り組むためのモチベーションとしてはいいが、そのためにロボットとしての問題を解決することに集中してしまい、その問題が本当に人々に必要とされているのかどうかを考えていない。この問題は、我々のコミュニティーに新しく異なる分野の桁違いに多くの人を加えることで解決できる。そして、それは有能なプログラマがロボットアプリの開発をできるようにすることによって成し遂げることができる。

 AndroidやiOSプラットフォームは3G, GPS, タッチスクリーンの理解なしに、役に立ち、時には世界を変えてしまうようなモバイルアプリを作ることを可能にした。我々もロボットについて同じことができる。我々は多大な努力によってオープンで、共有できるロボットソフトウェアプラットフォームの正しい道を進んでいる。必要なのはただこの道を突き進み、それらを作るときに常に非ロボットエンジニアのことを念頭に置くことだ。

2013年5月1日水曜日

catkin化はなかなか進んでいなさそう

まだ世間でもcatkin化は進んでいないですね。

hydraから大丈夫かな。

自分で使いたいパッケージをcatkin化して回ることになりそう。

catkin化する必要性は現時点では正直あまりないんですが、
自分の作るパッケージをcatkin化したいので、
依存するものはすべてcatkinになっていないといけないのです。

とりあえず2つ程catkin化しました。

USBカメラのノードとDynamixelのノードです。

uvc_camのほうにはpullリクエストも送ってみました。
dynamixelもissue投げたので取り込まれるといいな。

どっちも早くリリースまでいってほしい。

やっとcatkinに慣れてきました。

2013年4月30日火曜日

ROSで顔認識

OpenCVで顔認識プログラムやろうかと思ったのですが、
ROSにあったので使ってみたいと思います。

http://www.ros.org/wiki/face_detector

インストールは以下でできます。
$ sudo apt-get install ros-groovy-people

一応willowのスタックのようです。

ただしこれは単眼ではなく、ステレオカメラかRGBDカメラ(Kinect / Xtion)が必要です。
3次元位置を出せるみたいです。

今回は私はUSBカメラで顔の画面上の位置だけ出したかったので、
2次元のものを探したら、やっぱりありました。

http://www.ros.org/wiki/pi_face_tracker


これはROS By Exampleを書いている人たちのプロジェクトですね。

ドキュメントもしっかりしているので、これを使ってみます。

インストールはソースからやる必要があるみたいです。
catkin化されてないです。

インストール方法を簡単に書くとuvc_camパッケージのインストール

$ git clone https://github.com/ericperko/uvc_cam.git
$ rosdep install uvc_cam
$ rosmake uvc_cam

pi_vision スタックのインストール
$ svn co http://pi-robot-ros-pkg.googlecode.com/svn/trunk/pi_vision
4 rosdep install pi_vision
$ rosmake pi_vision

ビルドは多分、いろいろ古くてうまく行かないので、以下だけやるといいと思います。

 $ roscd pi_face_tracker
 $ make

基本的にはpythonのコードなのでビルドはいらないです。

で、USBカメラでの実行は以下のコマンドでUSBカメラのノードを上げて、


$ roslaunch ros2opencv uvc_cam.launch




$ roslaunch pi_face_tracker face_tracker_uvc_cam.launch 

でいいみたいです。

データセットのせいか、メガネがあると認識しづらいみたいです。
発見&追従です。



/roi
に sensor_msgs/RegionOfInterest
で座標が出ます。

OTLさん素顔公開です!!

2013年4月29日月曜日

catkinでのpythonのtestについて

catkinにはまだなれません。

catkin化したパッケージのテストについて調べたので書いてみます。
catkinはとにかくドキュメントが少なすぎて泣ける。

普段pythonしかコード書かないので、pythonのtestについてです。

catkinではpythonでのtestにnoseというフレームワークを基本的に使うみたいです。
unittestフレームワークを使ったコードはそのまま使えるので、
あまり意識しなくても大丈夫かも。

まず、テストファイルをこれまでと同様に準備します。

で、CMakeLists.txtに
catkin_add_nosetests(test/unit)

などと書きます。

noseではテストをパッケージにできるので、
test/unit以下にunittestのファイルと__init__.pyを置いておけば
すべて実行されるみたいです。

で、rostestのほうは、

add_rostest(test/***.test)

と書きます。
中身は今までどおり、rostestパッケージを使った書き方でよさそうです。

これで、

$ catkin_make run_tests
とすれば、すべてのパッケージのテストが実施されます。

$ cd WORKSPACE/build
$ make run_tests_PACKAGE_NAME

で、指定したパッケージだけのテストもできます。
いろんなソースとか調べた方法なので、もし、もっとちゃんとしたドキュメントとか
ご存知の方いたら教えてください。

2013年3月9日土曜日

ROS勉強オフ会開催中

今日はROS勉強オフ会開催中です!

Turtlebot2を買った強者が自宅に来ております。

ROSのインストールはできたけど、ロボットが動かないとか。

僕の読みでは原因はケーブルの差し忘れです。


5分後・・・・



動きました!

ROS_HOSTNAME/ROS_MASTER_URIの設定がおかしかったみたいです。

2013年2月22日金曜日

Robots for Humanity (IROS 2012 Video Track)

Willowの社長自ら解説するRobots for Humanityプロジェクトのビデオです。




2013年2月10日日曜日

catkin化: スクリプトで楽をする編

みなさんcatkin化してますか?
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

catkinizeの引数はpathとバージョン番号です。
もし、stackならcatkinize_stackを使えばOK。もしPakcageの新規作成ならcatkin_create_pkgを使いましょう。

手動でチェック


catkinizeがすべて自動でやってくれるわけではないので、手動で対応しなければなりません。
例えばpackage.xmlの依存関係はすべてコメントアウトされた状態にあります。
また、CMakeLists.txtもTODOで、手動で埋めるべき項目が記されています。

注意:catkinではすべてのCMakeプロジェクトが1つにまとめられます。そのためCMake上の変数やターゲット名は被らないようにしなければなりません。

以下にやることを原典を参考に書いておきますが、実際にはCMakeLists.txtをいじりながら、ビルド、実行、ができる状態まで編集しつつ、分からないところを調べる、という作業になります。
  1. maintainerの項目がコメントアウトされた状態で入っている(authorと同じになっている)のでそれを確認してコメントイン。<maintainer email="hoge@hoge.com">のように、emailフィールドも入れた方がいいみたいです。
  2. dependenciesがbuild/run/testで分かれたので、確認してコメントイン。http://ros.org/wiki/catkin/package.xmlを読んで意味を理解しましょう。
  3. CMakeLists.txtが編集されているので、そこに書かれたTODOをちゃんとやる
  4. 自動的に変更された部分を確認して修正する
  5. 古いコメント部分を削除
  6. 生成するメッセージ、サービス、アクションをadd_**_filesに記入
  7. 古いincludeを削除
  8. catkin_packageマクロを埋める
  9. 変数名がユニークなものになるように変更
  10. 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にて教えてください。

2013年2月9日土曜日

catkin化: 何をすればいいか理解する編

groovyから正式採用されたビルドシステムcatkin。
fuerteまではrosbuildというシステムを使っていた人がほとんどだと思いますが、
Groovyからはcatkinが標準になりました。

今回はすでにrosbuildで作っているパッケージをcatkin化する方法を見ていきます。

参考URL
http://ros.org/wiki/catkin/migrating_from_rosbuild

これまでとの違い

・manifest.xmlがpackage.xmlに変更
・stackという概念がなくなった。代わりにメタパッケージ(metapackage)が導入された(stack.xmlはpackage.xmlになる)
・CMakeLists.txtの内容が大幅に変わった

用語

これまでのrosbuildを使ったパッケージをDryパッケージ、
catkin化されたものをWetパッケージと呼ぶようなので覚えておくと良いと思います。

変換の手順

  1. workspaceの作成
  2. 依存パッケージがcatkin化されているならば、既存プロジェクトをこのworkspaceに移動させる
  3. stackをメタパッケージに変換する。ただしunary stackは単なるpackageになる。
    1. stackの中にstackと同じ名前のcatkinパッケージを作成する(ros_comm/ros_commのようになる)
    2. 作成したメタパッケージのpackage.xmlのrun_dependタグに、stack内のパッケージ名を書く
    3. stack.xmlから必要な情報をpackage.xmlに移してstack.xmlを削除する。
    4. stackフォルダには、同名のメタパッケージと普通のパッケージだけが含まれる状態にする
  4. manifest.xmlを含むフォルダにて
    1. manifest.xmlをpackage.xmlにリネームする
    2. nameタグを追加。パッケージ名(フォルダ名)を入れる。
    3. CMakeLists.txtがなければcatkin_package()を呼ぶCMakeLists.txtを作る
  5. CMakeLists.txtの編集
    1. rosbuildコマンドをcatkinのものに置き換える(後述)
    2. バイナリがどうインストールされるかを記述する
  6. すべてのバイナリ(実行ファイル、ライブラリ)に対して
    1. メッセージヘッダの生成のためにadd_dependencies()を加える(例:geometry_msgs_gencpp)
  7. すべてのPython実行ファイルについて
    1. setup.pyではなくcmakeでインストールすること
  8. もしpythonのpackageを含んでいるならば、setup.pyを作成し、catkin_python_setup()をCMakeLists.txtに記述する。
catkinワークスペースは以下のような配置になる。catkin_makeを使ったとき、バイナリはbuildフォルダに作られる。
my_workspace/
  build/  <-- created by catkin_make
  devel/  <-- created by catkin_make
  src/
    package_1/
      package.xml
      CMakeLists.txt
      src/
        code.cpp
        ...
    package_2/
      package.xml
      CMakeLists.txt
      src/
        code.cpp
        ...
    ...

もしcleanしたいときはbuild/とdevel/は削除してもよい。これらは自動で作成される。

これまでmanifest.xmlで管理されていた、ライブラリのエクスポート情報などは、CMakeで管理されるようになる
詳しくは
参照。

rosbuildで使われていたマクロはCMakeの標準的な記述、もしくはcatkin独自の記述に変更される。詳しくは
参照。

CMakeのマクロ対応表


Build Macros
rosbuild
catkin
rosbuild_init()
remove
rosbuild_add_library(...)
add_library(...)
rosbuild_add_executable(...)
add_executable(...)
rosbuild_add_compile_flags(...)
set_target_properties(target PROPERTIES COMPILE_FLAGS new_flags)
rosbuild_remove_compile_flags(...)
set_target_properties(target PROPERTIES COMPILE_FLAGS new_flags)
rosbuild_add_link_flags(...)
set_target_properties(target PROPERTIES LINK_FLAGS new_flags
rosbuild_remove_link_flags(...)
set_target_properties(target PROPERTIES LINK_FLAGS new_flags)
rosbuild_add_boost_directories(...); rosbuild_link_boost(target components)
find_package(Boost REQUIRED COMPONENTS components); include_directories(${Boost_INCLUDE_DIRS}); target_link_libraries(target ${Boost_LIBRARIES})
rosbuild_add_openmp_flags(...)
find_package(OpenMP), then do other stuff
rosbuild_invoke_rospack(...)
DO NOT DO THIS
rosbuild_find_ros_package(...)
DO NOT DO THIS
rosbuild_find_ros_stack()
DO NOT DO THIS
rosbuild_check_for_sse(...)
look around online and find an example of how to find SSE
rosbuild_include(package module)
include(module) (might require some initial work to find the path to the module)
rosbuild_add_lisp_executable()
no support for this currently
rosbuild_add_swigpy_library(target lib src1 src2)
?
Test Macros
rosbuild
catkin
rosbuild_add_gtest(...)
catkin_add_gtest(...)
rosbuild_add_gtest_labeled
?
rosbuild_add_gtest_future
?
rosbuild_add_gtest_build_flags
use set_target_properties on test target
rosbuild_add_pyunit
migrate to catkin_add_nosetests(...)
rosbuild_add_pyunit_labeled
?
rosbuild_add_pyunit_future
?
rosbuild_add_rostest
?
rosbuild_add_rostest_labeled
?
rosbuild_add_rostest_future
?
rosbuild_add_roslaunch_check
?
rosbuild_declare_test
add_dependencies(tests <test-target>)
rosbuild_count_cores
?
rosbuild_check_for_display
?
rosbuild_check_for_vm
?
Message / service macros
rosbuild
catkin
rosbuild_add_generated_msgs(...)
add_message_files(DIRECTORY msg FILES ...)
rosbuild_add_generated_srvs(...)
add_service_files(DIRECTORY srv FILES ...)
rosbuild_genmsg()
generate_messages() (once per CMakeLists.txt)
rosbuild_gensrv()
generate_messages() (once per CMakeLists.txt)
Listing the message files is useful as adding removing files will trigger an automatic reconfigure by cmake.
Version macros
rosbuild
catkin
rosbuild_get_stack_version
obsolete
rosbuild_get_package_version
obsolete
Data Macros
rosbuild
catkin
rosbuild_download_data(url filename [md5sum])
?
rosbuild_download_test_data
download_test_data
rosbuild_untar_file
?
Special targets
rosbuild
catkin
rosbuild_premsgsrvgen
?
rosbuild_precompile
?
rosbuild_make_distribution
?
Actionlib
rosbuild
catkin
include(${actionlib_msgs_PACKAGE_PATH}/cmake/actionbuild.cmake)
Remove this, Add actionlib_msgs to find_package call
genaction()
add_action_files(DIRECTORY msg FILES ...)


Pythonについて

catkinはPythonのdistuilsというライブラリを利用する。もしpackage内でpython packageやscriptを使っているならばsetup.pyを加える必要がある。
標準的な配置(src/package_name/)を使っているならば以下の様なsetup.pyになる。

   1 #!/usr/bin/env python
   2 
   3 from distutils.core import setup
   4 from catkin_pkg.python_setup import generate_distutils_setup
   5 
   6 d = generate_distutils_setup(
   7    scripts=['bin/myscript'],
   8    packages=['PYTHON_PACKAGE_NAME'],
   9    package_dir={'': 'src'}
  10 )
  11 
  12 setup(**d)
そしてCMakeLists.txtに
catkin_python_setup()
を記述する。

詳しくは
を参照。

という感じで、翻訳してみましたが、これだけ見ると嫌になってきますね。
しかし、これをある程度自動化してくれるスクリプトがあるようですので、
次回はそれを紹介します。

2013年1月1日火曜日

Groovyリリース

あけましておめでとうございます。

元日にGroovyリリース来ました!
willowに休日はなかったのか。

http://www.ros.org/news/2012/12/ros-groovy-galapagos-released.html

Groovyは正式にcatkin(rosbuildを使わず、cmakeの仕組みでビルド)化され、
慣れ親しんだroscreate-pkgがなくなる、など大きな変更があります。



Ubuntu Users: Please make sure to use the Python tools from apt and not pip. The pip based installs tend to go out of date and not get updated with the rest of the system.



とありますので、upgradeする人は、pipで入れていたPythonツール群(rosdepなど)は削除したほうが良さそうです。

主な変更は

・コードのGitHubへの移動
・catkin化(stackの削除:metapackageの導入)
・リリースシステムbloomの導入
・rqtの導入(WxからQtへの移行)

くらいですかね。

ビルドシステムが変更されたため、ベーシックなチュートリアルから変更されていますので、このブログの過去記事がまた役に立たなくなりましたのでご注意ください。

catkin化はぜひ取り上げたいですね。