はじめに

近藤豊さんの『改訂新版 ROS 2ではじめよう 次世代ロボットプログラミング ロボットアプリケーション開発のための基礎から実践まで』(以下、近藤ROS 2本)が先月(2024年9月)に発売されたのでさっそく読んでみました。 私は大学生時代からROS 1を使い始めて、現在も仕事でROS 2を触っていますが、 いまだにROSに対して苦手意識というか、ROSをあまり深く理解できていないという感覚がありました。 今回は近藤ROS 2本を読むことで曖昧に理解していた知識がしっかり補強された気がして非常に嬉しい限りです。 この記事では近藤ROS 2本を読み進めていく中で気になったことや勉強になったこと、感想などをメモ書き程度で記録しておこうと思います。

書籍情報はこちらです↓

技術評論社の書籍案内 - 近藤ROS 2本

近藤ROS 2本メモ

各章ごとに気になったことや勉強になったこと、感想などのメモを箇条書きします。

はじめに

  • メッセージ通信の項目でトピックやサービス、アクションと並んでパラメータが紹介されているが、パラメータがメッセージ通信の一つであるという認識がなかった。パラメータの仕組み(挙動)について意識したことがなかったので勉強になる。公式のドキュメントでもどのように説明されているのか改めて確認したい。(vi)
  • → 下記に公式ドキュメントのリンクを記載。
  • → パラメータにはサービスが利用されているとのこと。(62)
  • 大学生の頃にROS 1を使っていたときは特に気にしていなかったが、たしかにROS 1を製品開発で使用するのは大変そう。ROS 2誕生の経緯も知れて良かった。(vii)
  • MoveIt Studio(ix)、AWS RoboMaker(xii)、Foxglove Studio(xii)なども聞いたことはあるが、他人に話せる程度の知識は持っておきたい。
  • mROS 2はPC側とマイコン側でノードが直接通信できると紹介されているが、この「直接通信」は何を表しているのか気になる。mROS 2とmicro-ROSの違いも確認したい。(x)
  • → micro-ROSが仲介を必要とすることに対してmROS 2は必要ないとのこと(149)
  • 各章の構成や対象読者の説明が丁寧で勉強になる。(xiv)

公式ドキュメントにおけるパラメータの説明↓

docs.ros.org/en/jazzy/Concepts/Basic/About-Parameters

第1章:ROSの歴史

  • ros-oコミュニティを初めて知った。(3)
  • ROS 2はROS 1の上位互換というよりも、もっと広く利用されるために新しいROSを作り上げたというイメージらしい。そもそもの開発された目的が違う感じかも。(4)
  • 「1-4 ROS 1とROS 2の違い」が情報がまとまっていてかなり勉強になる。また、それ以降のDDSなどの通信の説明も充実していてありがたい。(5)

第2章:開発環境セットアップ

  • 公式ドキュメントが英語なので、日本語のインストール方法の説明も参考になる。(21)

第3章:ROS 2の基本機能

  • ノード発見デーモンはいつか必要になるかもしれないので覚えておきたい。(31)
  • colcon mixinはたまに見かけるが、よく分かっていなかったので勉強になった。(33)
  • Pub/Subの通信を日本語でどう表現するかはやはり悩みどころ。「送信受信」、「出版購読」、「配信」も使ったりする。(35)
  • プロセス間通信とプロセス内通信は理解できたが、それぞれの使い分け(使いどころ)が気になる。プロセス間通信のほうが汎用性は高いが、プロセス内通信のほうがパフォーマンスは高いみたいな感じだろうか。(41)
  • 「3-4-3 コンピュータ間通信」でROS_DOMAIN_IDの説明がなかったが、ROS_STATIC_PEERSのほうが安全ということだろうか。要確認。(45)
  • サービスは基本的に非同期通信で、疑似的に同期通信も可能にしているとのこと。なるほど。(46)
  • アクションはフィードバックを受け取れることに加えて、途中で中断できることも特徴の一つとのこと。たしかに。(52)
  • パラメータは設定と取得がサービスで行われるとのこと。各ノードにパラメータサーバが用意される。ノードの実行中にパラメータが書き換わるとコールバック関数が呼び出されるということも設定できる。(62)

第4章:ROS 2の応用機能

  • コンポーネントやライフサイクル、QoSあたりは重要であることは分かりつつも何となくの曖昧な理解のままだったので、情報がまとまっていて勉強になった。とはいえ、まだ理解し切れていない部分もあるのでまた読み返したい。(69)
  • 現状ROS 2を使う上でセキュリティを気にする場面は少なかったが、認証やアクセス制限の機能などがROS 2に備わっているということで勉強になった。(103)

第5章:Pythonクライアントライブラリrclpy

  • Pythonでトピック、サービス、アクションを扱う内容が簡潔にまとめられていて参考になる。(111)

第6章:ROS 2に対応したツール / パッケージ

  • ROS 1からROS 2への移植時に中身が刷新されたツールやパッケージが多いとのこと。(本章を通して)
  • rosbagはROS 2 Jazzyからトピックだけでなくサービスの記録にも対応したとのこと。凄い!(128)
  • MoveItは移動ロボットへの対応も進んでいるとのこと。凄い!(135)

第7章:ROS 2エコシステム

  • ROSBoard便利そう。(148)
  • AutowareやIsaac ROSも触りたい気持ちは常にある。(151)

第8章:実践ROS 2ロボットプログラミング

  • PCLはあまり使ったことがないので触ってみたい。(164)

おわりに

  • 事前アンケートで「リアルタイム制御」が一番人気なのはたしかに意外だった。あと「セキュリティ」があまり人気がないのも意外だった。(187)
  • 本を作り上げる大変さが伝わってくる(勉強になりました。ありがとうございます)。(おわりにを通して)

付録

  • Windowsで動かしたい人も多そう。Dockerやrockerの説明もあって充実している。(付録を通して)

おわりに

近藤ROS 2本を読み終えました。 もちろん全ての知識を自分の中に取り込めたわけではありませんが、 明らかに私のROS 2に対する気持ちは前向きになったと思います。 ROS 2の全体像や輪郭を掴めた感じがあります。 これからはROS 2を曖昧な理解のまま使うのではなく、 他人に説明できるくらい理解しながら使いこなせたら嬉しいなと思っています。 近藤ROS 2本、とても良い本でした。 おすすめです。 それでは、また。