ROS解説本4冊の書評と、開発スタイルに合わせたおすすめの入門書紹介(2018/10/20 実用ロボット開発のためのROSプログラミング追加)

概要

ROSの解説本として日本語で販売されている書籍として、「ROSではじめるロボットプログラミング」、「ROSロボットプログラミングバイブル」「プログラミングROS」の3冊がある。
どれも非常によくまとまっているが、それぞれ個性があるので、各書籍の感想を記載し、開発(学習)スタイルに合わせたおすすめの本を記載する。

[2018/10/20加筆]
実用ロボット開発のためのROSプログラミングが販売されたので、書評を追加し、4冊の比較とした。

ROSではじめるロボットプログラミング

3冊の中では一番初心者向けの本。ROSのバージョンはIndigo。
基本的な開発言語はPythonであり、気軽に試してみたいという場合には、この本がおすすめ。(後半にはC++を使ったプログラムの書き方も多少出てくる)
ただし、自己位置推定や自律走行部分はライブラリをそのまま使うだけで終わってしまうので、これを読んですぐにガンガン開発できる!という感じではない。

こんな人におすすめ

学部生の方
気軽にROSが何かを知りたい方
PythonもC++も、両方知りたいという方
 

ROSロボットプログラミングバイブル

ROSロボットプログラミングバイブル

ROSロボットプログラミングバイブル

2018/03に出版された、3冊の中で最も新しい本。新しい本だけあってROSのバージョンは3冊の中で唯一、2016年版であるKineticとなる。
開発言語がC++で統一されており、C++で学びたい方にはこの本が最適。
また、ROSの各種ツールについての説明がかなり豊富であり、ROSの機能を最大限に活用して開発を行いたい。ROSシステムの隅々まで知りたい。という方にはおすすめ。
自己位置推定等のパッケージの紹介でも、すべてのパラメータにコメントが付いており、説明が親切で読みやすい。

こんな人におすすめ

C++でROSを勉強したいと思っている方
Ubuntu16.06 Kineticの解説書が欲しいと思っている方
ROSに内包されるツールについて詳しく知りたい方

プログラミングROS

プログラミングROS ―Pythonによるロボットアプリケーション開発 (オライリー・ジャパン)

プログラミングROS ―Pythonによるロボットアプリケーション開発 (オライリー・ジャパン)

  • 作者: Morgan Quigley,Brian Gerkey,William D. Smart,河田卓志,松田晃一,福地正樹,由谷哲夫
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2017/12/13
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログ (2件) を見る

海外の書籍の翻訳本。ROSのバージョンはIndigo。
開発言語はPython。巡回ロボット、アームロボット、チェスロボット等、様々なタスクをこなすロボットのサンプルプログラムをこれでもかと詰め込んでおり、個人的には一番おすすめ。
ソースを一つずつ追って中身を理解するのもよし、実装したいタスクに近いソースコードを取ってきて改造するもよし、様々な使い方ができる。
日本語訳版のおまけとして、Pepperの制御方法等も記載されており、少し面白かった。(使うことは一生ないと思うが・・・)
唯一の難点は少し翻訳が硬く、読みにくい部分がある点。

こんな人におすすめ

Pythonを使ってROSを勉強したい人
サンプルコードをいっぱい読みたい人

実用ロボット開発のためのROSプログラミング

実用ロボット開発のためのROSプログラミング

実用ロボット開発のためのROSプログラミング

  • 作者: 西田健,森田賢,岡田浩之,原祥尭,山崎公俊,田向権,垣内洋平,大川一也,齋藤功,田中良道,有田裕太,石田裕太郎
  • 出版社/メーカー: 森北出版
  • 発売日: 2018/10/13
  • メディア: 単行本
  • この商品を含むブログを見る

[2018/10/20加筆]
日本の著名なロボット研究者の方たちの共著。
ROSを使ったプログラミング手法を学ぶ、というよりは、ROSのパッケージや周辺のライブラリの活用方法が中心となった本。
ロボットのモデリングから、コンピュタビジョンとの複合、actionlibやプラグインといった、試してみたくなるトピックが詰め込まれており、読んでいて非常に楽しい。
実際に自分のロボットやセンサに組み込んでみたい、と思わせてくれる良書。

ただし、ROSを使ったプログラミングをこれだけで学ぶには不足しているように感じた。
本書でイメージを掴み、プログラミングROSか、ROSロボットプログラミングバイブルを副読書としてプログラミング手法を学ぶのが良いと思う。

こんな人におすすめ

ROSを中心としたロボット開発の全体像を掴みたい人
actionlibやプラグインあたりの突っ込んだ部分が知りたい人

まとめ

概要を知りたいならば「ROSではじめるロボットプログラミング」がおすすめ。詳細を知りたいという方は、C++で勉強したいならば「ROSロボットプログラミングバイブル」、Pythonでサンプルコードをたくさん読みたいならば「プログラミングROS」を選択すると良い。
記載されている事項に重複が多いため、3冊すべて買って読むと少しがっかりするかも。
ROSは奥が深いため、どれかの本で概要を勉強したら、今度はROS wikiを辿って自分で情報を収集することが大切。特にtf(座標変換)に関する記述がどの本も弱いため、実際にプログラミングを行う際は、ネット等の情報を参考にしながら勉強する必要がある。

[2018/10/20加筆]
ROSを含めたロボット開発の概要をつかむ上では「実用ロボット開発のためのROSプログラミング」が非常に有効。上記三冊のいずれかと「実用ロボット開発のためのROSプログラミング」を併読することで、やりたいことは大体できるようになる(どう調べれば良いかわかる)ように思う。


また、ROSの使い方のみを学習しても、ロボットの実装の深い部分には触れない。やはり、以下のような本を通じてロボットの自己位置推定や自律走行のアルゴリズム自体の学習が必須だと思う。

確率ロボティクス (プレミアムブックス版)

確率ロボティクス (プレミアムブックス版)

SLAM入門: ロボットの自己位置推定と地図構築の技術

SLAM入門: ロボットの自己位置推定と地図構築の技術