🤖ROS2 の rosグラフ
ROS 2システムの中心には、ROSグラフがあります。
ROSグラフは、ROSシステム内のノードのネットワークと、それらが通信するためのノード間の接続を指します。
ROS(Robot Operating System)のグラフとは、ROSシステム内で相互作用するノード(プロセス)のネットワークを指します。このネットワークは、ノードが互いに通信を行い、情報を共有できるようにします。
ROSグラフの主な要素は次のとおりです:
ノード:独立したプロセスで、ROSの基本的な実行単位です。ノードは各々特定のタスク(例えば、センサーデータの読み取りやロボットの運動制御)を実行します。
トピック:ノード間でデータを共有するための通信チャネルです。ノードは特定のトピックをパブリッシュ(送信)したり、サブスクライブ(受信)することができます。
メッセージ:データを伝達するためのデータ構造で、トピックを通じて送受信されます。ROSでは標準的なメッセージタイプが提供されており、またユーザーがカスタムメッセージタイプを定義することも可能です。
マスター:ノード間の通信を調整する中心的なノードで、ROSのネームサービス(他のノードがノードやトピックを見つけるのを助けるサービス)を提供します。
サービス:ノードが他のノードに対してリクエストを送信し、レスポンスを受け取るためのものです。これは一対一の同期通信で、一方のノードが他方のノードに対して特定のタスクを要求する際に使用されます。
ROSクライアントライブラリは、異なるプログラミング言語で書かれたノードの通信を可能にします。異なる言語のROS APIに必要な共通機能を実装したコアROSクライアントライブラリ(RCL)が存在します。これにより、言語固有のクライアントライブラリが書きやすくなり、より一貫した動作を持つようになります。
ROSクライアントライブラリは、ほとんどのROSユーザーが慣れ親しんでいるユーザー向けのAPIを提供し、さまざまなプログラミング言語で提供されることがあります。
rmw APIは、ROS 2ソフトウェアスタックと基礎となるミドルウェア実装の間のインターフェイスです。ROS 2 で使用される基礎となるミドルウェアは DDS または RTPS の実装であり、サービスの発見、公開と購読の仕組み、リクエストとリプライの仕組み、メッセージタイプのシリアライズを担当しています。
rcl APIは、クライアントライブラリを実装するために使用される少し高いレベルのAPIであり、ミドルウェア実装に直接触れることはなく、ROSミドルウェアインターフェース(rmw API)の抽象化を通じて行われます。
ROSグラフは、一度に一緒にデータを処理するROS 2要素のネットワークです。それは、すべての実行可能ファイルと、それらをすべてマップして視覚化する場合のそれらの間の接続を包含しています。
ROSの各ノードは、単一のモジュールの目的を担当する必要があります(例えば、車輪のモーターを制御するノード、レーザー距離計を制御するノード、など)。各ノードは、トピック、サービス、アクション、パラメータを介して他のノードとデータを送受信することができます。