記事のディレクトリ
このセクションでは、内容が通信アーキテクチャの部分に沿って引き続き説明します
コミュニケーション(続きます)
サービス
トピックは、パブリッシュ・サブスクライブ方法を使用することである前に、我々は言ったが、この一方向のメッセージ送信は時々我々のニーズを満たすことができません。
ROS 同期通信モードは、ノード間の要求-応答の方法によって通信してもよいです。
ここでは、サーバーServer
の外側には、サービス提供しますService
、別のnode
要求によって缶をRequest
サービスを起動します。誰呼び出した場合は、このサービスは実行されません。
ノードは、人間の体の座標を取得するために時間を望んでいるなど、いくつかのシナリオに適用されます。我々はサービスの方法と通信している場合は、この時点で、あなたは、センサ情報を取得し、要求がある場合にのみ行われる人間の送信を調整されている必要はありません。
注:同期通信が意味する、要求を送信した後は、サーバーが結果を返すまで、クライアントは続行されます、クライアントにブロックされます。
トピックVSサービス
コールバックとRPCを明確に理解
SRV
定義ファイル内のサービスデータタイプや通信規格のフォーマット、* .srv。
SRVファイルとして書き込まれ
サービス要求の水平ラインフォーマットが必要とされている間、経路を修正し、水平ラインによって返される応答のフォーマット。要求メッセージは、できるだけ簡単にする必要があります。そして、それだけではSRVのMSGファイル内にネストすることができますHumanPose[]
仕様の要件に次の形式でのファイル形式。
ご注意ください
その定義と完成修飾SRVのMSGで以降、変更するpackage.xml
とCMakeList.txt
ファイル。図の可視赤色部分。
共通コマンド
パラメータサーバー
実際には、実行中のサーバパラメータroscore
コマンドは、システムが自動的に私たちは良いスタートを持っているのに役立ちます。それはROS同期通信および非同期通信とは異なる通信モード内にあります。より静的より話題とサービスの前に道。通常、私たちはしばしば読み書きするために、PS上のパラメータの一部を変更しないでください。同時に、私たちは、業務を読み書きするには、コマンドライン、打ち上げファイル、およびノード(API)を使用することができます。
PSは、辞書のキーストア各種パラメータ、辞書は、各種パラメータ及び構成を維持します。
コマンドラインから
ではload
とdump
、必須ではYAML形式で、次のよう
name:'ZHANGSAN'
age:20
gender:'M'
score:{Chinese:80,Math:90|
起動ファイルの動作
変更されたAPI
セクションroscppとrospyを参照してください。
アクション
同期通信のために、サービスは結果を待つための要求を送信した後に遮断する必要があります。この結果は、比較的長い時間がかかる場合がありますが、今回は、クライアントのために、サーバーは、それが実行中である知っているか、クラッシュしていません。私たちは、そのサーバがリアルタイムのフォローアップの進捗状況に関するフィードバックを提供することを願って。一方、サーバは、サービスを受けた時、我々はまた、この通信がニーズを満たしていないと、この時点でのサービス、サービスを中断するために何かをしたいことがあります。この問題では、アクションがされて入ってきました。
アクション類似したサービス、状態フィードバックとのコミュニケーション。一般的に長い時間(例えば、距離)で使用される、プリエンプティブタスク(行わ半分を遮断することができます)。
目標:すなわち、要求が
キャンセル:割り込み命令
のステータス:ここでサーバーの状態
操作結果処理した後に返さ:結果が
フィードバックを:リアルタイムのステータス
アクション
ファイル* .actionに定義されたアクションの通信データフォーマット。
アクションは、3つのセクションに分かれてする必要があります。
- 最初の段落:目標
- 第二段落:結果(アクションがリターンを実行し、一度だけ渡します)
- 第三段落:フィードバック(リアルタイムの状況、それが何回かに復帰している場合があります)
例えば
ソースを記入してください。
本論文では、「AndroidのOSは、はじめに」MOOCの中国の大学をまとめた
リンク:リンク。
ビデオキャプチャプログラムからの写真