2016年10月7日金曜日

【Book】Programming Robots with ROS CHAPTER 23 読んだ

前のエントリーで書いたProgramming  Robots With ROSのChapter 23 を読んでみた。
一番最後の章から再開するあたりが自分らしいというか残念というか。




だーいたい内容をメモったので書いておきます、英語最近使ってないので嘘っぱちだったらごめんなさい。日本語版でないのかな。


CHAPTER 23 Using C++ in ROS

○概要

・この本でPythonを使った理由
1.初心者でもとっつきやすい
2.core packageが充実しているので、泥臭い部分無視で上の方に集中して開発可能
3.ROSがPythonを強力にサポートしてる
4.(著者が)元々すべてのサンプルを1つの言語で書こうと思ってた

・でもPython以外の言語で書きたいことがあるかもしれませんね。
 例えば(滅多にないかもですが)実行速度の問題とか。

・C++での書き方についてこの章では説明します。
 callback使ったり、topic使う部分はPythonと基本共通です。
 文法とかデータ構造とか違います

・ROSの2大メジャーな言語はC++とPythonです。
・この章はC++について書いてあるけど、他の言語にも適応できる内容です。

○いつC(もしくはその他の言語を)使うべきか?(When Should You Use C(or Some Other Language)?)
・答え:使って楽になるとき使おう

・ROSは同じシステム内で、異なる言語で書かれたノードが混在する場合でも、簡単に開発できます。
C++が得意ならC++使えばいいし、もしC++の資産があればC++使えばいい。


・もし複雑な計算をするときに、C++で書いて高速化、と考える場合1点注意してください。
Pythonのライブラリ(scipyとか)も結構最適化されてるから、わざわざC++で書く必要があるかをちゃんと考えてから選びましょう


○catkinでC++をビルドする
- Pythonとの最大の違いはコンパイルするかしないか
- C++の場合修正するためにビルドする必要があるよ
- (作者たちの意見だけど)コンパイルし直すのがめんどいからPythonがよく使われるのでは?
- 規模が大きくなった場合、コンパイルに数分かかるようになる。開発効率が落ちるかも

以下の3ファイルをC++使うとき修正するよ。

1.package.xml
手動で修正 or catkin_create_pkgで修正できます。
例:user@hostname$ catkin_create_pkg <package name> roscpp


2.CMakeLists.txt
  build対象の.cppファイルを追記する。
  例:minimalというexecutableをminimal.cppから作る場合
 add_executable(minimal
   src/minimal.cpp
  )
 ライブラリについてはcatkinがよろしくやってくれる?
 
 
3.catkin_make
 ビルドするときは、catkin workspaceのrootでcatkin_makeを実行する。
 ビルドが成功すると、minimalの場合、以下の場所にminimalが作成される。
 catkin_workspace/devel/lib/<package name>/minimal

 
○Translating from Python to C++(and Back Again)
・A Simple Node
・Topics
・Services
詳細は省略。(サンプルはPythonで一回書いたことあればわかりやすい感じです)
- #include <ros/ros.h>はincludeしましょう
-初期化:ros::init(argc, argv, "minimal")
-ros::ok()でCtrl-Cされた条件を見てる。
 
・Summary
 一回書き換えやっとけば簡単に書き換えれるようになります。
 結論:好きな言語使えばいいよ。

0 件のコメント:

コメントを投稿