ROS2の世界観を勉強するためのメモです.
はじめに
ROS2の目的と用途について述べる.
ROS2の目的
- オープンソースでロボットプロジェクトを簡単に行うことができ,開発した内容を共有することが目的.
- そのために,Robot Operating System(ROS)は,ロボットアプリケーションを構築するためのソフトウェアライブラリとツールのセットを用意している.
- つまり,ドライバーから最先端のアルゴリズム,強力な開発者ツールを備えており,ロボットプロジェクトに必要なものがすべてオープンソースで揃っている.
ROS2の用途
- ROSが提供するユースケースとは違った,別のユースケースに対応することがROS2の用途である.
- つまり,以下のような用途である.
-
複数のロボットのチーム:
- 今日のROSを使用してマルチロボットシステムを構築することは可能ですが、標準的なアプローチはなく、それらはすべて、ROSのシングルマスター構造の上にあるハックのようなものです。
-
小さな組み込みプラットフォーム:
- 「ベアメタル」マイクロコントローラーを含む小さなコンピューターを、デバイスドライバーによってROSから分離するのではなく、ROS環境の第一級の参加者にしたいと考えています。
-
リアルタイムシステム:
- プロセス間通信やマシン間通信(適切なオペレーティングシステムやハードウェアのサポートが前提)を含め、リアルタイム制御をROSで直接サポートしたいと考えています。
-
非理想的なネットワーク:
- 低品質のWiFiから地上から宇宙への通信リンクまで、損失や遅延が原因でネットワーク接続が低下した場合でも、ROSが可能な限り動作することを望みます。
-
実稼働環境:
- ROSが引き続き研究室で選択されるプラットフォームであることが重要ですが、ROSベースのラボプロトタイプが実際のアプリケーションでの使用に適したROSベースの製品に確実に進化できるようにしたいと考えています。
-
システムを構築および構築するための所定のパターン:
- ROSの特徴である根本的な柔軟性を維持する一方で、ライフサイクル管理やデプロイメントの静的構成などの機能のための明確なパターンとサポートツールを提供したいと考えています。
-
複数のロボットのチーム:
ROS2の世界観
- (現在の勉強した限りの認識だと)ROS graphがすべてです.
- ROS graphは,一度に一緒にデータを処理するROS2の要素のネットワーク.
- つまりは,すべての実行可能ファイルとそれらの接続が含まれた視覚的マップのことです.
- だから,ここではROS graphの登場人物を紹介します.
ROS graph上の主な登場人物
- graphなので基本的には,point(vertex)役とedge役の2つ.
- point役は,node.
- edge役は通信機能のことで,主にtopic.その他にも,serviceとactionがある.
node
- ROS2のサービスとして,publisher/subscriber,server/client,parameterなどの機能を提供するもの.
- 単一のモジュールの目的であり,複数のnodeを複合的に組み合わせて協調的に動作させることでロボットシステムを作る.
- ROS2ではnodeをクラス化することで,1つのターゲットで複数のノードの実行順を制御可能.
topic
- nodeがメッセージを交換するための通信機能であり,ROSグラフの重要な要素.
- トピックはデータがノード間,つまりシステムの異なる部分間を移動するための重要な方法のひとつ.
- この他の通信機能として,
serviceとactionの2つがある.
- この他の通信機能として,
- 周期的なデータ通信に向いている.
service
- ROSグラフ上のnodeのもう1つの通信方法です.
- serviceは,topicのpublisher/subscriberモデルではなく,コールアンドレスポンスモデルに基づいています.
- topicを使用すると,nodeはデータストリームをsubscribeして継続的な更新を取得できますが,serviceは,clientによって明示的に呼び出された場合にのみデータを提供します.
- serviceがnodeに情報を渡すのはそのnodeが具体的に要求した場合のみであり,(連続ストリームではなく)要求ごとに1回だけ行います.
- 通常は継続的な呼び出しにサービスを使用したくありません.継続的な情報伝達にはtopicやactionがより適しています.
action
- 長時間実行されるタスクを対象としたROS2の通信タイプの1つ.
- これらは目標,結果,フィードバックの3つの部分で構成されています.
- actionはtopicとserviceに基づいて構築されています.
- それらの機能はserviceに似ていますが,actionはプリエンプティブです(実行中にキャンセルできます).
- また,単一の応答を返すserviceとは対照的に,安定したフィードバックを提供します.
- publisher/subscriberモデルと同様のclient/serverモデルを使用します.
-「action_client」nodeは「action_server」nodeに目標を送信し、「action_server」nodeは目標を確認して、フィードバックと結果のストリームを返します。
その他の登場人物
- nodeの内部状態を記述したparameterがある.
- また,nodeとtopicなどの登場人物で構成された集合に特別な名前がついたものとして,target,library,package,projectがある.開発規模が大きくなると,重要性が上がる.
parameter
- nodeの構成値です.parameterはnode設定と考えることができます.
- nodeは,整数・浮動小数点数・ブール値・文字列・リストとしてparameterを格納できます.
- ROS2では,各nodeは独自のparameterを維持します.
- すべてのparameterは動的に再構成可能で,
ROS2 serviceから構築される.
target
- クラス化したnodeを1つ以上組み込み,実行可能にしたもの.
library
- nodeを共有ライブラリ化したもの.
package
- 関係があるターゲットとライブラリで構成された集合.
project
- 関係があるターゲットとライブラリで構成された集合.
workspace
- ライブラリで構成された集合であり,トップディレクトリ.