こんにちは、プラスプラスの真山です。
ROS(Robot Operating System)で使われる用語についてまとめておきたいと思います。
ノード (Node)
ROS 内で実行される最小のプロセス。実行可能な一つのプログラム。
パッケージ (Package)
プログラムの集合であり、ROS ソフトウェアの基本単位。 パッケージ内のノードの実行に必要な全てのファイルが含まれる。
メタパッケージ (Mata Package)
共通の目的を持つパッケージの集合。例えば、ナビゲーションに関連したメタパッケージには、AMCL、DWA、EKF、map_serverなど、約 10 個のパッケージが含まれている。
メッセージ (Message)
ノードは他のノードとメッセージをやりとりし、データを交換する。
トピック (Topic)
トピックはいわゆる「話題」である。ノードの起動時、ノードのパブリッシャはトピック名をマスタに登録し、そのトピックの具体的な内容(話題)をメッセージで定めた形式で他ノードに送信する。
パブリッシュ (Publish) / パブリッシャ (Publisher)
トピックを用いたメッセージデータの送信のこと。/ その配信者。
サブスクライブ (Subscribe) / サブスクライバ (Subscliber)
トピックを通じたメッセージデータの受信のこと / その購読者。
サービス (Service)
サービス通信は同期通信方式であり、サービス要請(Service Request)とサービス応答(Service Response)を用いた双方向通信を行う。
サービスサーバ (Service Server)
サービスクライアントからサービス要請を受け取ると、指定された処理を実行した後に、その結果をサービスクライアントに返信する。
サービスクライアント (Service Client)
サービスサーバにサービス要請し、その結果を受け取る。
アクション (Action)
サービスに似た双方向通信方式であるが、要請から応答まである程度時間が必要な時に使用される非同期通信方式。データ形式として。サービスの要請と応答に対応する目標(Goal)と結果(Result)、そして中間結果を返すフィードバック(Feedback) で構成される。
アクションサーバ (Action Server)
アクションクライアントから目標を取得し、フィードバック及び結果を送信する。アクションクライアントからの命令に従い、指定された処理を実行する。
アクションクライアント (Action Client)
アクションサーバに目標を送信し、フィードバック及び結果を受信する。アクションサーバから得られたフィードバックに基づき、次の目標を設定したり、処理を取り消す。
パラメータ (Parameter)
ノードの処理に影響を与える変数。
パラメータサーバ (Parameter Server)
パラメータを登録するサーバ。
catkin (キャットキン)
現在使われているROSのビルドシステム。
ROS ビルド (rosbuild)
catkin ビルドシステムの前に利用されていたビルドシステム。ROSのバージョンによって互換性のために使われることもある。
roscore
マスタを実行するためのコマンド。roscore は、コンピュータが同じネットワークに接続されていれば、1台のコンピュータで実行すればよい。
rosrun
1つのノードを実行する時に使用するコマンド。
roslaunch
複数のノードを一度に実行する時に使用するコマンド。
bag
データ通信で送受信されるメッセージを bag (.bag ファイル)として記録することができる。.bag ファイルを使えば、記録した時点の通信状況がいつでも再現できる。
ROS Wiki
ROS についての基本的な説明やROSが提供するパッケージ、機能の情報は ROS Wiki が提供している。パッケージで使用されるパラメータ、著作者、ライセンス、ホームページ、リポジトリ、チュートリアルなども記載されている。 Documentation - ROS Wiki
リポジトリ (Repository)
公開パッケージの場合、各パッケージのWikiにはパッケージのリポジトリが明記されている。各リポジトリはURLが割り当てられ、パッケージのソースコードが管理されている。
グラフ (Graph)
ノード、トピック、パブリッシャ、サブスクライバの関係は、グラフ形式で確認できる。
ネーム (Name)
ノード、パラメータ、トピック、サービスはそれぞれネームを持つ。ネームはマスタに登録され、ノードのパラメータ、トピック、サービスなどを利用する際に参照される。
クライアントライブラリ (Client Library)
言語依存性を抑えるため、クライアントライブラリを採用している。 クライアントライブラリは roscpp、rospy、roslisp、rosjava、roslua、roscs、roseus、PhaROS、rosR などが提供されており、これにより C++ 、Python、Lisp、Java、Lua、.NET、EusLisp、R、などのプログラミング言語を利用できる。
URI (Uniform Resource Identifier)
インターネット上の住所。インターネットプロトコルの識別子として使用される。
MD5 (Message-Digest algorithm 5)
128ビット暗号化ハッシュ関数。
RPC (Remote Procedure Call)
RPC は「離れた場所のコンピュータ上のプログラムから、別のコンピュータ上の処理を呼び出すこと」という意味。この機能でコンピュータのプログラムを遠隔操作できる。
XML (Extensible Markup Language)
用途にあわせて拡張可能なマークアップ言語。タグを用いてデータ構造を記述でき、ROSでは、*.launch、*.urdf、package.xml など、様々な目的で使用されている。
XMlRPC (XML-Remote Procedure Call)
RPC プロトコルの一種で、エンコーディング形式には XML を、転送方式には HTTP プロトコルをそれぞれ使用する。
TCP/IP
IPに基づき、TCPを用いてデータを送受信する方式。
CMakeLists.txt
ROSのビルドシステムである catkin は CMake を使用しており、CMakeList.txt にビルド環境が記述される。
package.xml
パッケージの名称、ライセンス、パッケージ依存性など、パッケージ情報を記載した XML ファイルである。