2章準備

ROSでコードを書き始める前に、このフレームワークを支えるキーとなる概念のいくつかを紹介します。ROSシステムはたくさんの独立したプログラムから構成され、それらはお互いに絶えず通信し合っています。本章では、このアーキテクチャーについて説明し、アーキテクチャーとやり取りをするコマンドラインツールを見ていきます。また、ROSが使用する命名規則や名前空間の詳細についても説明し、これらがどのように皆さんが作成するコードを再利用しやすくするのかを見ていきます。

2.1 ROSグラフ

ROSの設計の動機となったもともとの「困難な問題」の1つが「物を拾う」という問題でした。複数のカメラとレーザースキャナー、操作アーム、車輪付きの台座を装備した、比較的大きく複雑なロボットを想像してみてください。「物を拾う」という問題において、ロボットがすべきこと(タスク)は、家やオフィス環境の中を動き、要求されたものを見つけ、要求された場所に運ぶことです。このタスクを実現するには、複数のロボットソフトウェアアプリケーションによる複数の観点からの操作を必要とします。多くの他のロボットが行うタスクも状況は同じです。これが、ROSの設計上のゴールの1つとなりました。

  • アプリケーションタスクは、ナビゲーション、コンピュータービジョン、物をつかむなどたくさんの独立したサブシステムに分解できる。
  • これらのサブシステムは、保安巡回を行ったり、掃除したり、郵便物を配達したりするなどの他のタスクでも使用できる。
  • ハードウェアと形状の適切な抽象化レイヤーによって、このアプリケーションソフトウェアの大部分はどのようなロボットででも動かすことができる。

これらのゴールは、ROSシステムの基本となる表現、すなわちグラフ

Get プログラミングROS ―Pythonによるロボットアプリケーション開発 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.