(57)【要約】【解決手段】第１ロボット（１）を少なくとも１つの第２ロボット（２，２１）と相互接続する方法であって、それぞれのロボット（１，２，２１）は、少なくとも、少なくとも１つの通信機器を制御するよう構成された第１プログラム（Ｐ１）と、第２プログラム（Ｐ２）の構成は、解釈モード又は直接モードの間で送信モードを示すフィールドtyp_serviceを含むセットアップファイルによって決定される、第２プログラム（Ｐ２）と、少なくとも１つのアクチュエータ及び／又は少なくとも１つのセンサを制御するよう構成された第３プログラム（Ｐ３）とを備え、この方法は、第３プログラム（Ｐ３）からの第１メッセージの第２プログラム（Ｐ２）による受信の後に、第１メッセージを第２メッセージへ変換することであって、第２メッセージは、コマンド、クエリ、又は情報のタイプ群のうちのメッセージのタイプを示すフィールドtyp_msgを含む予め定義されたオブジェクト構造に従ってフォーマットされる、変換することと、第２メッセージを、同じロボットに属する第１プログラム（Ｐ１）、他のロボットの第２プログラムのうちの少なくとも１つのプログラムに送信することと、を含む。【選択図】図３
2021514515.tif 000002
【特許請求の範囲】
【請求項１】
第１ロボット（１）を少なくとも１つの第２ロボット（２，２１）と相互接続する相互接続方法であって、それぞれのロボット（１，２，２１）は、
モニタ制御ユニットであって、前記モニタ制御ユニットは、少なくとも１つのプロセッサ（４）及び少なくとも１つのメモリモジュール（Ｍ）を備える、モニタ制御ユニットと、
アクチュエータ又はセンサのような少なくとも１つの周辺機器と、
少なくとも１つの通信機器と、
前記少なくとも１つの通信機器を制御するよう構成され、前記少なくとも１つのプロセッサ上で実行される複数の第１ソフトウェアモジュールを含む第１プログラム（Ｐ１）と、
前記少なくとも１つのプロセッサ上で実行される複数の第２ソフトウェアモジュールを含む第２プログラム（Ｐ２）であって、前記第２プログラム（Ｐ２）の構成は、解釈モード又は直接モードの間で送信モードを示すフィールドtyp_serviceを含むセットアップファイルによって決定され、前記送信モードは、前記第２プログラム（Ｐ２）によって送信されるメッセージを特徴付ける、第２プログラム（Ｐ２）と、
前記少なくとも１つのアクチュエータ及び／又は前記少なくとも１つのセンサを制御するよう構成され、前記少なくとも１つのプロセッサ上で実行される複数の第３ソフトウェアモジュールを含む第３プログラム（Ｐ３）と
を少なくとも備え、
前記相互接続方法は、前記第３プログラム（Ｐ３）から発生する第１メッセージの前記第２プログラム（Ｐ２）による受信の後に、前記ロボット（１、２、２１）のそれぞれの中で前記第２プログラム（Ｐ２）によって実現される以下のステップ
前記第１メッセージを第２メッセージへ変換することであって、前記第２メッセージは、コマンド、クエリ、又は情報のタイプ群のうちの前記メッセージのタイプを示すフィールドtyp_msgを含む予め定義されたオブジェクト構造に従ってフォーマットされる、変換することと、
前記第２メッセージを、同じロボットに属する第１プログラム（Ｐ１）、他のロボットの第２プログラム（Ｐ２）のうちの少なくとも１つのプログラムに送信することと、
を含み、
前記相互接続方法は、同じロボットに属する第１プログラム（Ｐ１）、他のロボットの第２プログラム（Ｐ２）のうちの少なくとも１つのプログラムから発生する、前記予め定義されたオブジェクト構造に従ってフォーマットされた第３メッセージの前記第２プログラム（Ｐ２）による受信の後に、前記第３メッセージの前記フィールドtyp_msgが、コマンドタイプ又はクエリタイプを示す時に、前記ロボット（１、２、２１）のそれぞれの中で前記第２プログラム（Ｐ２）によって実現される
前記第３メッセージに関連付けられた前記セットアップファイルの前記フィールドtyp_serviceがダイレクト送信モードを表す時に、前記第３メッセージを、前記第３プログラム（Ｐ３）によって実現されるよう構成されたプログラム部分に翻訳する翻訳ステップ、及び／又は
第２伝送プロトコルに従って、前記第３メッセージの、又は前記プログラム部分の少なくとも一部を前記第３プログラム（Ｐ３）に送信するステップ
をさらに含む、相互接続方法。
【請求項２】
前記翻訳ステップは、前記少なくとも１つのメモリモジュール（Ｍ）に記憶されたコンフィギュレーションファイルに前記第２プログラム内でアクセスすることを含み、
前記コンフィギュレーションファイルは、前記第２プログラムに、前記第３プログラム（Ｐ３）によって実現されるよう構成された前記プログラム部分を提供する
請求項１に記載の相互接続方法。
【請求項３】
前記第３メッセージの、又は前記プログラム部分の少なくとも一部を送信するステップは、
第２伝送プロトコルによる、前記第２プログラム（Ｐ２）から第４プログラム（Ｐ４）への第４メッセージの第１送信と、
前記第４プログラム（Ｐ４）から前記第３プログラム（Ｐ３）への第５メッセージの第２送信と、
少なくとも含む
請求項１又は２に記載の相互接続方法。
【請求項４】
第１伝送プロトコルは、前記第１ロボット（１、２、２１）の前記第２プログラムＰ２と、前記第２ロボット（１、２、２１）の前記第２プログラムＰ２との間の第６メッセージの送信のために用いられる
請求項１−３のいずれか１項に記載の相互接続方法。
【請求項５】
やり取りされた前記第１メッセージ、前記第２メッセージ、前記第３メッセージ、前記第４メッセージ、前記第５メッセージ、及び前記第６メッセージは、ＪＳＯＮフォーマットである
請求項１−４のいずれか１項に記載の相互接続方法。
【請求項６】
前記第１伝送プロトコルは、ＵＤＰタイプである
請求項３−５のいずれか１項に記載の相互接続方法。
【請求項７】
前記第２伝送プロトコルは、ＴＣＰタイプである
請求項１−６のいずれか１項に記載の相互接続方法。
【請求項８】
前記少なくとも１つの電気通信機器は、無線通信手段を備える
請求項１−７のいずれか１項に記載の相互接続方法。
【請求項９】
前記無線通信手段は、ＷＩＦＩタイプのモジュール、ＲＦＩＤタイプのモジュール、ブルートゥースタイプのモジュール、ＧＳＭタイプのモジュールのうちの少なくとも１つのモジュールを備える
請求項１−８のいずれか１項に記載の相互接続方法。
【請求項１０】
前記第２プログラム（Ｐ２）は、もし受信者が前記少なくとも１つの第２ロボット（２）であるなら、前記第２メッセージを送信する前に、前記第２メッセージを暗号化し、
前記第２プログラム（Ｐ２）は、もし送信者が前記少なくとも１つの第２ロボット（２）であるなら、前記第３メッセージを翻訳又は送信する前に、前記第３メッセージを復号化する
請求項１−９のいずれか１項に記載の相互接続方法。
【請求項１１】
前記少なくとも１つの第２ロボットは、インターネットサーバーに接続されたリモートオペレータを備える
請求項１−１０のいずれか１項に記載の相互接続方法。
【請求項１２】
前記第３プログラム（Ｐ３）は、前記ロボットのオペレーティングシステム及び少なくとも１つのアクチュエータ（Ａ１、Ａ２）及び／又は少なくとも１つのセンサ（Ｃ）のドライバプログラムを含む
請求項１−１１のいずれか１項に記載の相互接続方法。
【請求項１３】
複数のロボット（１、２、２１）の間の協働を管理する方法であって、前記複数のロボット（１、２、２１）のそれぞれは、
モニタ制御ユニットであって、前記モニタ制御ユニットは、少なくとも１つのプロセッサ（４）及び少なくとも１つのメモリモジュール（Ｍ）を備える、モニタ制御ユニットと、
アクチュエータ（Ａ１、Ａ２）又はセンサ（Ｃ）のような少なくとも１つの周辺機器と、
少なくとも１つの通信ネットワークに接続された少なくとも１つの通信機器と、
前記少なくとも１つの通信機器を制御するよう構成され、前記少なくとも１つのプロセッサ上で実行される複数の第１ソフトウェアモジュールを含む第１プログラム（Ｐ１）と、
前記少なくとも１つのプロセッサ上で実行される複数の第２ソフトウェアモジュールを含む第２プログラム（Ｐ２）と、
前記少なくとも１つのアクチュエータ及び／又は前記少なくとも１つのセンサを制御するよう構成され、前記少なくとも１つのプロセッサ上で実行される複数の第３ソフトウェアモジュールを含む第３プログラム（Ｐ３）と
を少なくとも備え、
前記相互接続方法は、以下のステップ
サーバー（３）によってホストされた又はインターネットを通してアクセス可能なアプリケーションレイヤによる、予定された基本タスク及びそれらの順序のリストを含む送信ファイルと、前記周辺機器の識別及び優先度ファイルとの送信と、
前記複数のロボットのそれぞれのロボットの前記第１プログラム（Ｐ１）の機器サービスによる、ミッションファイルと前記識別及び優先度ファイルとの受信と、
前記複数のロボットのそれぞれのロボットの前記第１プログラム（Ｐ１）による、第１クエリタイプメッセージの、その第２プログラム（Ｐ２）への送信であって、これにより前記複数のロボット（１、２、２１）のそれぞれのロボットの少なくとも１つの周辺機器のうちのそれぞれの利用可能な周辺機器（Ａ１、Ａ２、Ｃ）の識別子を確定する、第１クエリタイプメッセージの送信と、
前記複数のロボット（１、２、２１）のそれぞれのロボットの前記第２プログラム（Ｐ２）による、請求項１−１２のいずれか１項に記載の相互接続方法の実行によって、前記複数のロボット（１、２、２１）のそれぞれのロボット上で利用可能な周辺機器（Ａ１、Ａ２、Ｃ）の識別子のリクエストを第３プログラム（Ｐ３）から行い、前記第１プログラム（Ｐ１）に送信することと、
前記利用可能な周辺機器（Ａ１、Ａ２、Ｃ）の識別子の前記複数のロボット（１、２、２１）のそれぞれのロボットの前記第１プログラム（Ｐ１）の前記機器サービスによる処理によって、前記複数のロボット（１、２、２１）のそれぞれのロボット（１、２、２１）によって実現可能なタスクのリストを生成すること、
前記複数のロボット（１、２、２１）のそれぞれのロボットによって実現可能なタスクのリストを、前記第１プログラム（Ｐ１）のそれぞれのネゴシエーション／選択サービスによって、前記複数のロボット（１、２、２１）のそれぞれのロボット（１、２、２１）に及び／又は前記サーバーの中央化されたサービスに送信すること、
前記サーバーの中央化されたサービスによる及び／又は前記ロボット（１、２、２１）のそれぞれのネゴシエーション／選択サービスの間の通信の処理に続く、前記周辺機器の前記識別及び優先度ファイルに基づく、及び前記実現可能なタスクのリストに基づく、前記ミッションに参加するロボットのリストの作成と、
ミッションの実行と、
前記ロボットの同期と、
前記ミッションの実行の監督と
を含む、協働を管理する方法。
【請求項１４】
請求項１−１２のいずれか１項に記載のロボットの相互接続方法を実行するよう構成された命令のセットを含むコンピュータプログラム。
【請求項１５】
請求項１３に記載の協働を管理する方法を実行するよう構成された命令のセットを含むコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、接続されたデバイス群（移動可能なロボット群、センサ群等）の間の通信の分野、及びこれら接続されたデバイス群の相互運用性の分野に関する。
【背景技術】
【０００２】
ヒューマノイドロボット、操作アームを持つ又は持たない移動可能なキャリッジ、ドローン等のような、異なるタイプの移動可能なロボットを使うことが知られている。かなり頻繁に、これらロボットは、周囲のデータを獲得するための異なるセンサに関連付けられ、アドホック通信及び異なるオペレーティング及びモニタコントロールシステムを備える。実質的に自律的なこれら異なるオブジェクトに、完了されるべきタスクの分散及びこれらオブジェクト群の間の協働を組織化することによって、複雑な操作を実行させるためのインプリメンテーションは、しばしば相当に異種のものからなる、ハードウェア及びソフトウェア機器の間の通信及び情報のやりとりを必要とする。
【０００３】
今まで、その物理的特性によって及びそのそれぞれのオペレーティングソフトウェアによっての両方でヘテロジニアスでありながら、サードパーティソフトウェアブロックの容易で統一された統合だけでなく、特に高レベルアプリケーションサービスの開放を可能にする、これら移動可能なオブジェクト群（ロボット及び／又は他のデータセンサ）の間の所望の通信及び相互運用性を確実にするのに十分なインターフェイスソフトウェア又はプログラム、又はミドルウェアと呼ばれるものは存在しなかった。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
よって、解決されるべき課題は、特に、おそらくはリモートで、協働して及び／又は１つ以上の操作者（群）によって、特定のタスクの完了のためのオブジェクトの１つ以上のフリート（群）に所属し得るこれらのオブジェクトを相互接続することによって、異種の移動可能なオブジェクトを一緒にすることができるインターフェイスソフトウェアを設計することにある。
【０００５】
よって本発明は、この課題の全て又は一部に対する解決策を提供することを目的とする。
【課題を解決するための手段】
【０００６】
この目的のために、本発明は、第１ロボットを少なくとも１つの第２ロボットに相互接続する方法、及び複数のロボットの間の協働を管理する方法に関し、加えてこれら方法を実行するよう構成された命令を含む少なくとも１つのコンピュータプログラムにも関する。
【０００７】
本発明は、第１ロボットを少なくとも１つの第２ロボットと相互接続する方法に関し、それぞれのロボットは、
モニタ制御ユニットであって、前記モニタ制御ユニットは、少なくとも１つのプロセッサ及び少なくとも１つのメモリモジュールを備える、モニタ制御ユニットと、
アクチュエータ又はセンサのような少なくとも１つの周辺機器と、
少なくとも１つの通信ネットワークに接続された少なくとも１つの通信機器と、
前記少なくとも１つの通信機器を制御するよう構成され、前記少なくとも１つのプロセッサ上で実行される複数の第１ソフトウェアモジュールを含む第１プログラムＰ１と、
前記少なくとも１つのプロセッサ上で実行される複数の第２ソフトウェアモジュールを含む第２プログラムであって、前記第２プログラムの構成は、解釈モード又は直接モードの間で送信モードを示すフィールドtyp_serviceを含むセットアップファイルによって決定され、前記送信モードは、前記第２プログラムによって送信されるメッセージを特徴付ける、第２プログラムＰ２と、
前記少なくとも１つのアクチュエータ及び／又は前記少なくとも１つのセンサを制御するよう構成され、前記少なくとも１つのプロセッサ上で実行される複数の第３ソフトウェアモジュールを含む第３プログラムＰ３と
を少なくとも備え、
前記方法は、前記第３プログラムから発生する第１メッセージの前記第２プログラムによる受信の後に、前記ロボットのそれぞれの中で前記第２プログラムによって実現される以下のステップ
前記第１メッセージを第２メッセージへ変換することであって、前記第２メッセージは、コマンド、クエリ、又は情報のタイプ群のうちの前記メッセージのタイプを示すフィールドtyp_msgを含む予め定義されたオブジェクト構造に従ってフォーマットされる、変換することと、
前記第２メッセージを、同じロボットに属する第１プログラム、他のロボットの第２プログラムのうちの少なくとも１つのプログラムに送信することと、
を含み、
前記相互接続方法は、同じロボットに属する第１プログラム、他のロボットの第２プログラムのうちの少なくとも１つのプログラムから発生する、前記予め定義されたオブジェクト構造に従ってフォーマットされた第３メッセージの前記第２プログラムによる受信の後に、前記第３メッセージの前記フィールドtyp_msgが、コマンドタイプ又はクエリタイプを示す時に、前記ロボットのそれぞれの中で前記第２プログラムによって実現される以下のステップ
前記第３メッセージに関連付けられた前記セットアップファイルの前記フィールドtyp_serviceが前記ダイレクト送信モードを表す時に、前記第３メッセージを、前記第３プログラムによって実現されるよう構成されたプログラム部分に翻訳することと、及び／又は
第２伝送プロトコルに従って、前記第３メッセージの、又は前記プログラム部分の少なくとも一部を前記第３プログラムに送信することと
をさらに含む。
【０００８】
有利には、それを通して第２プログラムＰ２が、送信されるべき情報及び／又は命令のフォーマッティングを確保する、予め定義され一般的なオブジェクト構造は、以下のフィールドによって構成される。
【０００９】
−メッセージタイプ：コマンド、情報又はクエリ；
−メッセージサブタイプ：データ（位置、リアル、画像、ビデオ、…）又はコマンド（アドバンス、プルバック、ストップ、…）タイプ；
−ソース：ペアＩＰアドレス／ポートによって又はソースの名称によって又はソースの名称によって構成される送信者アドレス（ペアＩＰアドレス／ポートは、ルーティングテーブルでそれに関連付けられ得る）；
−デスティネーション：ペアＩＰアドレス／ポート、又は受信者の名称によって構成された受信者アドレス；
−データフィールドのサイズ；
−データ。
【００１０】
本発明の局面によれば、翻訳ステップは、少なくとも１つのメモリモジュール内に記憶されたルックアップテーブル又はデータベースのような第２プログラム内でのコンフィギュレーションファイル（Ｐ２に属する）へのアクセスを含み、コンフィギュレーションファイルは、第３プログラムによって実現されるよう構成されたプログラム部分を第２プログラムに提供する。
【００１１】
好ましくは、コンフィギュレーションファイルは、第２プログラムが
・メッセージのサブタイプ（前で提示されたオブジェクト構造のサブタイプフィールド内で定義される）と、データ（前で提示されたオブジェクト構造のデータフィールド内で定義される）との対応を確率すること、
・第３プログラムによって実現されるよう構成されたプログラム部分を選択すること（後者がそれを直接に実行できるようにする、ロボットの適切な言語におけるコマンドの又はクエリの翻訳）
をできるようにする。
【００１２】
本発明のある局面によれば、前記第３メッセージの、又は前記プログラム部分の少なくとも一部を送信するステップは、
・第２伝送プロトコルによる、前記第２プログラムから第４プログラムへの第４メッセージの第１送信と、
・前記第４プログラムから前記第３プログラムへの第５メッセージの第２送信と、
少なくとも含む。
【００１３】
本発明のある局面によれば、第１伝送プロトコルは、前記第１ロボットの前記第２プログラムと、前記第２ロボットの前記第２プログラムとの間の第６メッセージの送信のために用いられる。
【００１４】
本発明のある局面によれば、やり取りされた前記第１、第２、第３、第４、第５、及び第６メッセージは、ＪＳＯＮフォーマットである。
【００１５】
本発明のある局面によれば、前記第１プロトコルは、ＵＤＰタイプである。
【００１６】
本発明のある局面によれば、前記第２プロトコルは、ＴＣＰタイプである。
【００１７】
本発明のある局面によれば、前記少なくとも１つの電気通信機器は、無線通信手段を備える。
【００１８】
本発明のある局面によれば、前記無線通信手段は、ＷＩＦＩタイプのモジュール、ＲＦＩＤタイプのモジュール、ブルートゥースタイプのモジュール、ＧＳＭタイプのモジュールのうちの少なくとも１つのモジュールを備える。
【００１９】
本発明のある局面によれば、前記第１ロボットの前記第２プログラムは、もし前記受信者が前記少なくとも１つの第２ロボットであるなら、前記第２メッセージを送信する前に、前記第２メッセージを暗号化し、前記第１ロボットの前記第２プログラムは、もし前記送信者が前記少なくとも１つの第２ロボットであるなら、前記第３メッセージを翻訳又は送信する前に、前記第３メッセージを復号化する。
【００２０】
よって、それぞれのロボット内で、第２プログラムは、メッセージをそれらのオリジン及びデスティネーションに依拠して、スマートに暗号化及び／又は復号化するよう構成されている。
【００２１】
本発明のある局面によれば、前記少なくとも１つの第２ロボットは、インターネットサーバーに接続されたリモートオペレータを備える。
【００２２】
本発明のある局面によれば、前記第３プログラムは、前記ロボットの前記オペレーティングシステム及び少なくとも１つのアクチュエータ及び／又は少なくとも１つのセンサのドライバプログラムを含む。
【００２３】
本発明は、また、複数のロボットの間の協働を管理する方法であって、前記複数のロボットのそれぞれは、
−  モニタ制御ユニットであって、前記モニタ制御ユニットは、少なくとも１つのプロセッサ及び少なくとも１つのメモリモジュールを備える、モニタ制御ユニットと、
−  アクチュエータ又はセンサのような少なくとも１つの周辺機器と、
−  少なくとも１つの通信ネットワークに接続された少なくとも１つの通信機器と、
−  前記少なくとも１つの通信機器を制御するよう構成され、前記少なくとも１つのプロセッサ上で実行される複数の第１ソフトウェアモジュールを含む第１プログラムと、
−  前記少なくとも１つのプロセッサ上で実行される複数の第２ソフトウェアモジュールを含む第２プログラムと、
−  前記少なくとも１つのアクチュエータ及び／又は前記少なくとも１つのセンサを制御するよう構成され、前記少なくとも１つのプロセッサ上で実行される複数の第３ソフトウェアモジュールを含む第３プログラムと
を少なくとも備え、
前記方法は、以下のステップ
サーバーによってホストされた又はインターネットを通してアクセス可能なアプリケーションレイヤによる、予定された基本タスク及びそれらの順序のリストを含む送信ファイルと、前記周辺機器の識別及び優先度ファイルとの送信と、
前記複数のロボットのそれぞれのロボットの前記第１プログラムの機器サービスによる、前記ミッションファイルと前記識別及び優先度ファイルとの受信と、
前記複数のロボットのそれぞれのロボットの前記第１プログラムによる、第１クエリタイプメッセージの、その第２プログラムへの送信であって、これにより前記複数のロボットのそれぞれのロボットの少なくとも１つの周辺機器のうちのそれぞれの利用可能な周辺機器の識別子を確定する、第１クエリタイプメッセージの送信と、
前記複数のロボットのそれぞれのロボットの前記第２プログラムによる、本発明による相互接続方法の実行によって、前記複数のロボットのそれぞれのロボット上で利用可能な周辺機器の識別子のリクエストを第３プログラムから行い（同じロボット内で）、前記第１プログラムに送信する（同じロボット内で）ことと、
前記利用可能な周辺機器の識別子の前記複数のロボットのそれぞれのロボットの前記第１プログラムの前記機器サービスによる処理によって、前記複数のロボットのそれぞれのロボットによって実現可能なタスクのリストを生成すること（それぞれのロボットは、その中で、そこに提供される周辺機器に従って完了できるタスクのリストを確定する）、
前記複数のロボットのそれぞれのロボットによって実現可能なタスクのリストを、前記第１プログラムＰ１のそれぞれのネゴシエーション／選択サービスによって、前記複数のロボットのそれぞれのロボットに及び／又は前記サーバーの中央化されたサービスに送信すること、
前記サーバーの中央化されたサービスによる及び／又は前記ロボットのそれぞれのネゴシエーション／選択サービスの間の通信の処理に続く、前記周辺機器の前記識別及び優先度ファイルに基づく、及び前記実現可能なタスクのリストに基づく、前記ミッションに参加するロボットのリストの作成と、
前記ミッションの実行と、
前記ロボットの同期と、
前記ミッションの実行の監督と
を含む。
【００２４】
本発明は、また、本発明による少なくとも１つの方法を実行するよう構成された命令のセットを含むコンピュータプログラムに関する。
【００２５】
好ましくは、本発明は、ロボットを相互接続する方法を実行するよう構成された命令のセットを含むコンピュータプログラム、及びロボット間の協働の管理方法を実行するよう構成された命令のセットを含むコンピュータプログラムに関する。
【図面の簡単な説明】
【００２６】
適切な理解のために、本発明は、本発明による装置の実施形態を非限定的な例として表す添付の図面を参照して説明される。
【図１】図１は、完全にそれに一体化された本発明の第１変形例による移動可能なロボット、及びその環境の概略を図示したものである。
【図２】図２は、完全にそれに一体化された本発明の第１変形例による、通信するロボットの一隊の概略を図示したものである。
【図３】図３は、第２変形例による本発明のアーキテクチャの概略を図示したものであり、ここで本発明は、一方で、ロボットに部分的に統合され、他方で、部分的にクラウドへ追いやられている。
【図４】図４は、本発明による異なるアクター（ロボット、ユーザー）及び異なる可能性のある通信チャンネルの概略を図示したものである。
【図５】図５は、第１ロボットＲ１及び第２ロボットＲ３の間の通信のダイヤグラムを図示したものである。
【図６】図６は、ユーザーＵ１及びロボットＲ３の間の通信のダイヤグラムを図示したものである。
【図７】図７は、本発明によるロボットの協働のシナリオの概略を図示する。
【図８Ａ】図８Ａは、本発明によるロボットの協働のシナリオの概略を図示する。
【図８Ｂ】図８Ｂは、本発明によるロボットの協働のシナリオの概略を図示する。
【発明を実施するための形態】
【００２７】
本発明及びその実施形態は、図１−図８Ａ，図８Ｂからなる添付の図面を参照して説明される。
【００２８】
本発明は、図１に概略的に示されるような、スタンドアローンロボット１上で第２プログラムＰ２によって実現される方法に関する。Ｐ２は、１つ以上のサブプログラム（群）又はソフトウェアモジュール（群）を含み、第１プログラムＰ１と、２つの他のプログラム、第３プログラムＰ３及び第４プログラムＰ４との間のインターフェイスを行うことを確保するソフトウェアレイヤを構成する。これらプログラムＰ１、Ｐ３、及びＰ４のそれぞれは、１つ以上のサブプログラム（群）又はソフトウェアモジュール（群）を含み、それぞれは、ソフトウェアレイヤを構成する。
【００２９】
図１に提示されるように、ロボット１は、
●  他のロボット２と通信し、ロボット１は、ロボット２に情報及び／又はコマンドを提供し得て、ロボット２を介して、ロボット１は、情報及び／又はコマンドを受け取り得て、いずれの場合も受動的に及び／又はリクエストに応じて行い、
●  リモートサーバー３と通信し、リモートサーバー３を通して、
○  オペレーターは、互いにインタラクトするロボット（群）によって実行されるべきタスクをリモートで特定することができ、
○  ロボット１は、他のロボット２と通信（情報及び／又はコマンドを受動的及び／又はリクエストに応じて）することができる。
【００３０】
本発明の変形例によれば、ロボット１及び２は、直接にかつ互いとだけ通信するよう構成される（例えば、リモートサーバー３に欠陥がある品質低下動作モードにおいて、又は例えばメンテナンスが実行されるべきであるとき、及び／又はコストに関連する理由のためにリモートサーバー３を使用することなく進行させるとき）。
【００３１】
−  本方法の説明を図示する働きをここでするスタンドアローンロボット１は、スタンドアローンロボット又は任意の他の接続されたデバイスであり得るが、ここでこのデバイスは、図１で示されるメインハードウェア機器を備え、それは、可動性又は荷重グリッピング等のためのアクチュエータタイプＡ１、Ａ２の少なくとも１つの周辺機器、及び／又は環境データ獲得（地理的位置、温度等）のためのセンサタイプＣを備える。
【００３２】
−  少なくとも１つの周辺機器（群）のモニタ・制御ユニットは、少なくとも１つのプロセッサ４及び少なくとも１つのメモリモジュールＭを備え、プログラム又はソフトウェアレイヤＰ１、Ｐ２、Ｐ３、及びＰ４（アダプテーションモジュール（adaptation module））は、モニタ・制御ユニット（図２でも示される）のプロセッサ４上で実行される。
【００３３】
−  例えばＷＩＦＩ、又はブルートゥース、又はＧＳＭ通信モジュールのような少なくとも１つの通信機器Ｔ１、Ｔ２は、考慮されているデバイス１がリモートサーバー３と及び／又は他の接続されたデバイス２と通信できるようにする。
【００３４】
第１プログラムＰ１は、電気通信手段Ｔ１、Ｔ２の管理、及び同じロボット又は接続されたデバイスのサブプログラムの間、及び２つの別個のロボット又は接続されたデバイスに属するプログラム及びサブプログラムの間でやりとりされるメッセージの転送プロトコルのサポートを確保する。有利には、第１プログラムＰ１は、
●  コラボレーションサービス、
●  ネゴシエーション／選択サービス、
●  機器サービス、及び
●  とりわけ周辺機器検出サービス、データ同期化サービスを含む通信バス
のような（限定ではなく）ソフトウェアモジュール群のセットを含む。
【００３５】
第２プログラムＰ２、又はサブプログラム群又はソフトウェアモジュール群の第２セットは、本発明による方法を実現する。
【００３６】
第１及び第２プログラムＰ１、Ｐ２は、汎用であって、オペレーティングシステムに関係なく、任意のロボット上で展開され得る。
【００３７】
第３プログラムＰ３、又はサブプログラム群又はソフトウェアモジュール群の第３セットは、それぞれのロボット又は接続されたデバイスの特定のオペレーティングシステム、及びロボット又は考慮されている接続されたデバイスに関連付けられたアクチュエータ及び／又はセンサの特定のドライバを含む。有利には、プログラムＰ３は、
●  ロボットオペレーティングシステム（例えば、ＲＯＳ、ユニバーサルロボットＯＳ、ＡＢＢ  ＯＳ）：ネイティブライブラリ、ナビゲーションパッケージ、…
●  ネイティブフレームワーク：ドライバ、ライブラリ、…
のような（限定ではなく）ソフトウェアモジュール群のセットを含む。
【００３８】
本記載によって、第３プログラムＰ３の具体的なものにおいて、本発明は、ロボット群の１つ以上のフリート（群）の中でその相互運用性を提供及び保証するために、そのロボットに具体的なロボットＯＳを中心として機能することが十分に理解されるべきである。
【００３９】
第４プログラムＰ４、又はアダプテーションサブプログラム群又はソフトウェアモジュール群の第４セットは、本発明がインストールされるロボットに適合されるべき、本発明の唯一のソフトウェアモジュールである。
【００４０】
ロボット及びプログラムＰ１、Ｐ２、Ｐ３、Ｐ４の外部にあるアダプテーションライブラリは、そのロボットに特定の言語における前記第４プログラムのスケルトンを生成することを特に可能にする。
【００４１】
前記アダプテーションライブラリを介して生成され、その必要に応じて操作者によって完了され終了されなければならない第４プログラムＰ４のスケルトンの例（とりわけ、関数<<これをしろ（dothis）>>、<<あれをしろ（dothat）>>のレベルにおいて）は、以下では、プログラミング言語中でイタリックで示される（［  ］で囲まれるように表記される）（コメントはボールド文字である（「  」で囲まれるように表記される））。
【００４２】
////////
「Ｐ２への接続を可能する関数」
open=socket_open(‘ip’,’port’)
「したがってip, portは、Ｐ２がインストールされるロボット又はコンピュータのアドレス（ローカル、クラウド）である」
while (open==false):
open=socket_open(‘ip’,’port’)
end
////////
「Ｐ２からメッセージを受け取る（フィールド単位で（<<インタープリートされた（interpreted）>>モード））ために用いられ得る関数」
def recv_msg():
socket_send_string(‘ready’)
「ロボットはメッセージを受け取る準備ができていることをＰ２に通知する」
while from==””:
from=socket_read_string()
「第１フィールドを受け取るまでスタンバイする」
end
type=socket_read_ascii_float(1)
「その後、他のフィールドが１つずつ受け取られる」
stype=socket_read_string()
size=socket_read_ascii_float(1)
data=socket_read_string()
end
////////////
「Ｐ２に対してメッセージを送ることを可能にする関数（それをメッセージ内に示されたターゲットに送信することを担う）」
def send_msg(message):
socket_send_string(message)
end
//////////////////////
「受け取られたメッセージの異なるフィールドの値に従って採用する振る舞いを操作者が定義する関数。よって、“これをしろ（dothis）”、“あれをしろ（dothat）”という関数は、一般に、そのロボットに特定の１つ命令又は命令（群）のセットである（これは、第４プログラム、つまりロボットに適合されるべき本発明の唯一のソフトウェアモジュールの性質を特徴付ける）。」
def handle():
if type==”command”:
dothis
if type==”request”
dothat
////////
例えば、アダプテーションライブラリは、クラウド上で利用可能であり、又はローカルコンピュータ又はタブレットのようなリクエストに基づいてロボットに接続され得るシステムを通して利用可能である。
【００４３】
アダプテーションライブラリは、またロボット間のインタラクションのシナリオ（群）の定義及び構成において操作者を補助し得る。
【００４４】
よって、アダプテーションソフトウェアモジュール（第４プログラムＰ４）は、操作者の必要に応じてカスタマイズされ、前記アダプテーションライブラリを介して少なくとも部分的に生成される。それは、とりわけ、以下の４つの関数を含む。
【００４５】
●  <<コネクション>>：この関数は、ロボットをソフトウェアレイヤＰ１及びＰ２に接続することを可能にし、これは、適切なペアのＩＰアドレス／ポートの指示に特に基づいている。
【００４６】
●  <<メッセージ送信>>：メッセージは、次から次へと送られるいくつかのフィールドによって作成され、これらメッセージは、６つのフィールド（タイプ、サブタイプ、ソース、デスティネーション、サイズ、データ）によって作成される。
【００４７】
●  <<メッセージ受信>>：受け取られたメッセージは、後で詳述される、特定の構造に準拠しなければならない。さらにロボットがデータを受け取れるようになるとすぐに、プログラムＰ４は、メッセージをレイヤＰ２に送って、自分がメッセージを受け取れることをそれに通知する。
【００４８】
●  <<メッセージ処理>>：この関数は、それぞれのシチュエーションに具体的に適合され、それは、そのロボットに特定の言語で、一方では、受け取られたメッセージ及びデータに従って採用する振る舞いを定義し、他方では、そのシチュエーションに従う。特に、この関数は、ロボットがコマンド、クエリ、情報（ロボットの通信のやり方）を第４プログラムＰ４から第３プログラムＰ３に送信するやり方を定義する。
【００４９】
相互接続されたロボット又はデバイスのそれぞれの上で、ソフトウェアレイヤＰ１は、リモートロボット及び／又はデバイスの間のやり取りのために利用可能である電気通信機器を介して、あるロボット（又はデバイス）から、他のロボット（又はデバイス）及び／又はリモートサーバー３に予め規定通りにフォーマットされたメッセージを転送するよう構成される。ソフトウェアレイヤＰ１及びこれらソフトウェアレイヤによって実現された電気通信機器は、協働して、とりわけ、通信バスＢＣのハードウェア及びソフトウェアの両方の機能を確保することによって、異なるロボットを相互に及びクラウドに接続することを可能にする。好ましくは、それぞれの通信バスＢＣは、それぞれに固有のルータＲを有し、とりわけロボットを直接にクラウドに接続することを可能にする。サーバーによってホストされるより高いソフトウェアレイヤ、例えばＨＭＩ、又はクラウドは、アプリケーションレイヤと呼ばれる。
【００５０】
しばしば<<ミドルウェア>>と呼ばれる中間プログラム又は中間ソフトウェアレイヤＰ２は、
−  一方では、より高いレベルＰ１から通信バスを介して受け取られた及び／又は他のロボットから発生する（特に送信者ロボットの第２プログラムから発生する）及び／又はリモートサーバー３からの情報又はコマンドを、アクチュエータ及び／又はセンサを操縦するための考慮されているロボットに特有のより低いソフトウェアレイヤＰ３によって理解され又は実行され得る情報又は命令に変換し、
−  他方では、逆方向に、考慮されているロボットによって他のロボット（又は接続されたデバイス）及び／又はリモートサーバー３に対して送信されるよう意図される情報又はコマンドメッセージを一般的なやり方でフォーマットし、一般的にフォーマットされたこのメッセージは、受信者ロボット又は接続されたデバイスのミドルレイヤＰ２によって受け取られてから変換される
よう構成される。
【００５１】
それぞれのロボット又は接続されたデバイスの、ヘテロジニアスでありそれぞれのロボット又はデバイスに固有であるソフトウェアレイヤＰ３及びＰ４とは異なり、中間ソフトウェアレイヤＰ２は、汎用的である。この中間ソフトウェアレイヤＰ２は、考慮されているロボットのアクチュエータ又はアクター（actors）を制御するためのソフトウェアレイヤＰ３によってそれぞれのロボット上で実現される所有権のあるフォーマット及び命令と、全てのロボット及び接続されたデバイスの全てに共通な汎用フォーマットとの間でインターフェイスすることを確保する。このインターフェイス機能は、特に、汎用フォーマットに従って受け取られた情報又はコマンドを、受信者ロボットのソフトウェアレイヤＰ４又はＰ３のうちの任意のものに従って実行され得る情報又は命令に翻訳するメカニズムを含む。
【００５２】
図２に示されるように、ロボット１が通信する他のロボット２、２１は、
●  ロボット１のそれらと同種のハードウェア機器（アクチュエータ及び／又はセンサ、プロセッサ及びメモリモジュールを持つモニタ制御ユニット、電気通信機器）、
●  ロボット１のそれらと同種のソフトウェアアーキテクチャ（プログラムＰ１、Ｐ２）、
●  これらロボットに固有のソフトウェアアーキテクチャ（プログラムＰ３、Ｐ４）
を備え得る。
【００５３】
例えば、本発明による方法は、レイヤＰ１、Ｐ２、Ｐ３１及びＰ４１を備えるロボット１を
●  １つのアクチュエータ、２つのセンサ、１つのｗｉｆｉタイプの電気通信機器、少なくとも１つのプロセッサ及び少なくとも１つのメモリモジュールを備える周辺機器の１つのモニタ制御ユニットを有する第１ロボット２であって、前記第１ロボット２のプログラム又はソフトウェアレイヤＰ１、Ｐ２、Ｐ３２、Ｐ４２はそのプロセッサ上で実行される、第１ロボット２、
●  ６つのセンサ、２つのｗｉｆｉ及びブルートゥースタイプ電気通信機器、少なくとも１つのプロセッサ及び少なくとも１つのメモリモジュールを備える周辺機器の１つのモニタ制御ユニットを有する第２ロボット２１であって、前記第２ロボット２１のプログラム又はソフトウェアレイヤＰ１、Ｐ２、Ｐ３３、Ｐ４３はそのプロセッサ上で実行される、第２ロボット２１
と相互接続することを可能にし得る。
【００５４】
相互接続されたロボットのそれぞれのプログラムＰ１、Ｐ２は、同じ（同一の）ソフトウェアブロックを有する。
【００５５】
図３は、本発明の実施形態を示し、ここでロボット（ハードウェアの点で）は、それらに固有のプログラムＰ３及びＰ４だけしか与えられておらず、一方で、一般の汎用プログラムＰ１及びＰ２は、クラウド上に退避されている。ロボット群は、互いにハードウェア及びソフトウェア通信バスＢＣ、及びルーティングテーブルＴＲが関連付けられている少なくとも１つのルータＲを通して通信し、クラウドＣ及び／又はヒューマン・マシンインターフェイスＨＭＩを介した少なくとも１人の人間のユーザーともおそらくは通信する。
【００５６】
好ましくは、前記ルーティングテーブルは、フォーム中の対のリスト（ロボットの名称、ＩＰアドレス：ポート）を含み、これは、有利には第２プログラムＰ２内に統合され得るが、ルータが適切にメッセージを転送できるようにする。よって、ロボットは、メッセージの送信を希望するロボットの名称だけを知っていればよい。
【００５７】
情報が受信者ロボット又はデバイスに送信されるために第２プログラムＰ２に到達すると、第２プログラムＰ２は、以下のフィールドによって構成される所定の汎用オブジェクト構造に従ったメッセージで送信されるべき情報及び／又は命令のフォーマッティングを確保する。すなわち、
−  メッセージタイプ：コマンド、情報又はクエリ；
−  メッセージサブタイプ：データ（位置、リアル、画像、ビデオ、…）又はコマンド（アドバンス、プルバック、ストップ、…）タイプ；
−  ソース：ペアＩＰアドレス／ポートによって又はソースの名称によって構成される送信者アドレス（ルーティングテーブルでそれに関連付けられたペアＩＰアドレス／ポート）；
−  デスティネーション：ペアＩＰアドレス／ポート、又は受信者の名称によって構成された受信者アドレス；
−  データフィールドのサイズ；
−  データ。
【００５８】
この汎用構造は、メッセージのより高いレベル（Ｐ１及びＰ２）へのトランスペアレントな伝送を可能にする。
【００５９】
ソフトウェアレイヤＰ２の構成は、ＪＳＯＮファイルフォーマットに基づく。このセットアップファイルは、
−  第２プログラムＰ２が実行されるロボットのＩＰアドレス（サーバーから見たときの）；
−  当該ロボットを特定するために用いられる名称；
−  第２プログラムＰ２が外部メッセージをリッスンしなければならない外部リスニングポート；
−  当該ロボットの第３又は第４プログラムＰ３、Ｐ４が接続しなければならない内部リスニングポート；
−  ロボット（それが通信をしようと希望される）に向けられたメッセージが、受信者ロボットによって<<インタープリートされる>>（受信の後で）ように意図されているか、又はメッセージがダイレクトモードに従って送達されるかを示すことができるようにする、サービスタイプ。
【００６０】
<<インタープリートされる>>によって、ロボットは、受け取られたメッセージのフィールドの値を分析することによって、その振る舞いを定義しなければならないという事実が理解されなければならない。
【００６１】
この解釈ステップは、第４プログラムＰ４によって実行され、前述のアダプテーションライブラリを通して予め構成される。
【００６２】
ダイレクトサービスにおいて、もしメッセージタイプがコマンド又はクエリなら、コンフィギュレーションファイルのおかげで、受信者ロボット上で実行されている第２プログラムＰ２は、コマンド又はクエリをこの受信者ロボット上で直接に実行され得るコマンドに翻訳する。
【００６３】
本発明のある局面によれば、コンフィギュレーションファイルは、好ましくはその第２プログラムＰ２へのインジェクションの前に、アダプテーションライブラリから生成される（例えば外部プログラムによって）。
【００６４】
好ましくは、ダイレクトモードにおいてコンフィギュレーションファイルに頼ることは、メッセージが、外部システムによるコマンドの実行を可能にするロボットへのコマンド及び／又はクエリからなるときだけ起こる。
【００６５】
例として、プログラミング言語におけるコンフィギュレーションファイルの構造は、以下にイタリックで示され（［  ］で囲まれるように示され）、ここで、特に、<</cmd_vel>>によってＲＯＳ言語に翻訳されたプログラム部分又はＵＲ（ユニバーサルロボット）言語に翻訳されたプログラム部分<<movej>>をコマンド<<move>>に対応させている。
【００６６】
{
［“commands”:］
{
［“move”:］
{
［“ros”: ”/cmd_vel”,
“ur”: ”movej”］
},
［“decoller”: ”/ardrone/takeoff”,
“atterrir”: ”/ardrone/land”］
},
［“requests”］
{
［“modal”: ”mandatory, needed for streaming, just modify the topic name if necessary”,
“modal”: ”/pose”,
“position”: ”/pose”］
}
}
考慮されているロボットの第２プログラムＰ２及びより低いソフトウェアレイヤＰ３、Ｐ４の間の通信は、ＴＣＰタイプの接続を介して実行され、図３で実線の矢印３０によって示される。複数のロボット１、２、２１に属する異なる第２プログラムＰ２間の通信は、点線矢印４０によって図３で示されるＵＤＰタイププロトコルに従って実行される。またサーバー及び／又はクラウドＣへの通信は、図３で矢印４１によって示されるＵＤＰタイププロトコルに従って実行される。
【００６７】
ロボット５０、６０の別個のフリートが本発明による方法を介して互いに通信する他の通信の変形例を説明するために、本発明の全体的な動作が図４に示される。これらフリートは、例えば、他のフリート、ダイレクトユーザー７０、クラウドＣ、又はクラウドＣを通じた少なくとも１つの非局在化されたユーザー８０から、通信バスＢＣを介して上流で受け取られたメッセージを送信するよう構成されたマスターロボット５１、６１をさらに含み得る。
【００６８】
さらに、好ましくは、新しいロボットが、フリートへの参加又はまだそれが認識していない少なくとも１つの他のロボットとの通信をしたいとき、最初のやりとりは、ＵＤＰプロトコルに従って実行され、より好ましくはブロードキャストモード<<broadcast>>に従って実行される。
【００６９】
本発明による相互接続方法は、ほとんどが汎用であるソフトウェアレイヤ群及びモジュール群からなるセットのおかげで、一方では同じフリートのヘテロジニアスなロボットを相互接続することを可能にし、それと同時にいくつかのフリートを一緒に相互接続することも可能にする。
【００７０】
この順序は、既存のアプリケーションレイヤ（群）（リモートＨＭＩ群、ロボットのサイト上で又はロボットそのものの上でのローカルＨＭＩ、クラウド、…）から構成される。
【００７１】
よって、本発明は、ヘテロジニアスなロボット（異なるオペレーティングシステムを有する）の間での協働を管理する方法にも関し、とりわけ、以下のステップ
●  アプリケーションレイヤ（ＨＭＩ、クラウド）から、ミッションを示すファイル群のセットを送信すること（emitting）であって、このファイル群のセットは、とりわけ、予定された基本タスクの識別子群のリスト（ＬＴＰ）、及び周辺機器の優先度ファイルを含む、ファイル群のセットを送信すること、
●  それぞれのロボットのレイヤＰ１のサービス<<機器>>のレベルにおいて、予定された基本タスクの識別子の前記リスト（ＬＴＰ）を受け取ること、
●  このロボット上で利用可能な周辺機器を確定するために、クエリタイプメッセージをレイヤＰ１からレイヤＰ２に送信すること（同じロボット内で）、
●  レイヤＰ２のレベルにおいて本発明による相互接続方法を実現することによって、
○  適切な手法でクエリをレイヤＰ３及び／又はレイヤＰ４に送信すること、
○  レイヤＰ３及び／又はＰ４から発生する、要求された周辺機器情報を回収すること、
○  予め定義されたオブジェクト構造に従って変換された前記情報をレイヤＰ１に送信すること
を行う、相互接続方法を実現すること、
●  レイヤＰ１のレベルにおいて受け取られた情報を、<<機器>>サービスのレベルにおいて処理し、ロボットによって実現可能なタスク群のリスト（ＬＴＲ）を生成すること、
●  前記ロボットによって実現可能なタスク群のリスト（ＬＴＲ）を、レイヤＰ１の<<ネゴシエーション／選択>>サービスから全てのロボットに送信すること、
●  異なるロボットの異なるレイヤＰ１の異なる<<ネゴシエーション／選択>>サービス群の間でネゴシエーションメッセージをやりとりすること、
●  クラウドのレベルにおいて及び／又はロボット間で、やりとりされたネゴシエーションメッセージに基づいて及び周辺機器の優先度ファイルに基づいて、ミッションに参加するロボットのリスト（ファイル）（ＬＲＭ）を生成すること、
●  前記ミッションのプログレスプランの実行をトリガすること、
●  ロボットを同期すること、
●  ロボット間で協働を監督すること
を含む。
【００７２】
好ましくは、ミッションをフォーマライズするファイル群のセットは、少なくとも、実行されるべき基本タスク群の識別子群のリスト（ＬＴＰ）、前記タスクの順序の制約条件に関するパラメータ群のリスト、タスクの完了に必要な周辺機器（アクチュエータ、センサ、…）の識別子のリスト、周辺機器の優先度ファイルを含む。
【００７３】
好ましくは、レイヤＰ１からの及びレイヤＰ１への送信は、通信バスＢＣに属する周辺機器検出サービスを介して実行される。
【００７４】
好ましくは、ロボットによって実現可能なタスクのリスト（ＬＴＲ）は、ロボットの識別子、及び基本タスクの識別子のリスト（ＬＴＰ）の中でそのロボットが完了できるタスクの識別子のリストをとりわけ含むファイルの形態であるか、又はデータベースの形態である。
【００７５】
好ましくは、やりとりされたファイルのセットは、ＪＳＯＮフォーマットである。
【００７６】
ミッションの実行は、退避されているか又はローカルかに関わらず、クラウド内のプログラムを介して、又は専用インターフェイスＨＭＩからユーザーを介してトリガされ得る。
【００７７】
有利には、周辺機器データは、レイヤＰ１の通信バスＢＣに属する<<データ同期>>サービスによって回復される。
【００７８】
有利には、ロボット間の協働の監督は、それぞれのロボットのレイヤＰ１の<<協働>>サービスのレベルにおいて実行される。
【００７９】
図５のダイヤグラムは、第１ロボットＲ１及び第２ロボットＲ３の間の通信を示す。ここで、この通信の異なるステップを説明するが、プログラミング言語の対応する命令は、イタリックで示される（［  ］で囲まれるように表記される）。
【００８０】
−  メッセージM(R1)P3>P2は、ロボットＲ１の第３プログラムＰ３から、ロボットＲ１の第２プログラムＰ２に送られる。
【００８１】
M(R1)P3>P2= ［“info/position/robot3/3.0.1”.］
−  処理T(R1)P2は、レイヤＰ２によってロボットＲ１内でそれから実行され、予め定義されたオブジェクト構造に従ってメッセージをフォーマット及び／又は再構成（ＲＥＣ）する。
【００８２】
［
Type= info
Subtype= position
Target= robot3
Source= robot1
Size= 5
Data= ”3,0,1”
］
−  その後、例えばＪＳＯＮフォーマットにおいてレイヤＰ２によってメッセージをいわゆるシリアル化するステップＳＥへと続き、このフォーマットは、相互運用性の確保及び情報の遡及的保存の容易さを特に、可能にする。
【００８３】
［
{“py/object”: ”message.message”,
“src”: {py/tuple”: [“10.12.1.130”, 48000”]},
“protocol”: 0,
“target”: {py/tuple”: [10.12.1.131, 48000”]};
“type_msg”: “info”,
“subtype”: “position”,
“size”: 5,
“data”: “3,0,1”}
］
−  その後、レイヤＰ２によってメッセージに署名するステップＳＩが続く（例えばコード内の内部キーからの暗号化署名によって）が、このステップは、ＪＳＯＮチェーンの完全性を確保する。
【００８４】
［
087aa394104a8b6d9a3c06d35c768a0bcefadc9
{“py/object”: “message.message”,
“src”: {py/tuple”: [“10.12.1.130”, 48000”]},
“protocol”: 0,
“target”: {py/tuple”: [10.12.1.131, 48000”]},
“type_msg”: “info”,
“subtype”: “position”,
“size”: 5,
“data”: “3,0,1”}
］
−  メッセージM(R1>R3)は、ロボットＲ１からロボットＲ３に送られる。
【００８５】
−  処理T(R3)P2は、ロボットＲ３の第２プログラム内でそれから実行されて、署名をチェックし（ＶＳＩ）、メッセージを再構成し（ＲＥＣ）、これは、その後、ロボットＲ３の第２プログラムによって、ロボットＲ３の第３プログラムＰ３に送信される（M(R3)P2>P3）。
【００８６】
最後に、図６のダイヤグラムは、ユーザーＵ１及びロボットＲ３の間の通信を図示する。この通信の異なるステップを説明するが、プログラミング言語の対応する命令は、イタリックで示される（［  ］で囲まれるように表記される）。
【００８７】
−  メッセージM(U1>WS)がユーザーＵ１によってサーバーＷＳに送られる。
【００８８】
M(U1>WS)= ［≪ Command :move :user1 :robot3 :0.1,0.0,0.3 ≫］
−それから処理T(WS)がサーバーWS内で実行され、予め定義されたオブジェクト構造に従ってメッセージを構成する（Ｃ）。
【００８９】
［
Type= command
Subtype= move
Target= robot3
Source= user1
Size= 11
Data= “0.1,0.0,0.3”
］
−  その後、いわゆるメッセージをシリアル化するステップＳＥ及びそれに署名するステップＳＩが続く。
【００９０】
［
087aa394104a8b6d9a3c06d35c768a0bcefadc9
{“py/object”: “message.message”,
“src”: “web-user1”,
“protocol”: 0,
“target”: {py/tuple”: [10.12.1.131, 48000”]},
“type_msg”: “command”,
“subtype”: “move”,
“size”: 11,
“data”: “0.1,0.0,0.3”}
］
−  メッセージM(WS>R3)は、サーバーＷＳからロボットＲ３に送られる。
【００９１】
−  意図されたシナリオによれば、処理T(R3)P2がそれからロボットＲ３の第２プログラム内で実行され、署名をチェックし（ＶＳＩ）、メッセージを再構成し（ＲＥＣ）、それは、その後、ロボットＲ３の第２プログラムＰ２によって、ロボットＲ３の第３プログラムＰ３に送信される。すなわち、
○  <<直接>>モードによれば、(M(R3;D)P2>P3)においては、コマンド／クエリは、コンフィギュレーションファイルを通して第２プログラムから第３プログラムへ直接に、ロボットに適切な形態で提供される（外部システムによるコマンドの実行を許可するロボットの場合）。
【００９２】
例えば、ＯＲ  ＲＯＳを持つロボットについては、
［
p=ros.Publisher()
p.publish(“/cmd_vel”, msg.data)
］
である。
【００９３】
○  <<解釈>>モードによれば、(M(R3;I)P2>P4>P3)においては、情報（一般に）又はコマンド／クエリ（外部システムによる実行を許可しないロボットの場合）が、第４プログラムを介して、第２プログラムから第３プログラムへと、ロボットに提供される。
【００９４】
このモードでは、第２プログラムは、メッセージをフィールドごとに（オブジェクト構造に従って）第４プログラムに送り、第４プログラムは、適切な要素を第３プログラムに提供し、これら適切な要素は、第４プログラム内で生成され、前記第４プログラムの構造（スケルトン、採用すべき振る舞いが意図されたプログラミング、…）に依存する。
【００９５】
やりとりのセキュリティ
さまざまな通信チャンネルが本発明には伴われる。これらには、とりわけ、
●  第１プログラムＰ１及び／又は第２プログラムＰ２に関連する、ＵＤＰタイププロトコルに従う通信、
●  ロボット間の、ＴＣＰタイププロトコルに従う通信、
●  クラウドと第１及び第２プログラムＰ１及びＰ２との間の、ＵＤＰタイププロトコルに従う通信
が含まれる。
【００９６】
有利には、異なる通信チャンネルはセキュアである。
【００９７】
異なる技術オプションが可能であり、当業者は、意図された応用例に最も適切な技術をどのように選択すべきかを知っている。
【００９８】
例として、
●  ＵＤＰプロトコルに従う通信の場合、
○  直接イーサネットリンクの使用、
○  プロトコルＤＴＬＳ（<<データグラム  トランスポート  レイヤ  セキュリティ>>）の使用、
○  とりわけ、例えばＡＥＳ（<<高度暗号化標準>>）のような暗号化アルゴリズム及び例えばＳＨＡ（<<セキュアハッシュアルゴリズム>>）のようなハッシュ化アルゴリズムを実現する暗号シーケンス（<<暗号スイート>>）の使用
に対して言及され得る。
【００９９】
●  ＴＣＰプロトコルに従う通信の場合、
○  <<ＳＳＬ>>プロトコル（セキュア・ソケット・レイヤー）を介した暗号化及び認証のペア、又は
○  オープンソースインプリメンテーション（例えばOpenSSL）であるかどうかに関わらず、暗号シーケンス（<<暗号スイート>>）を実現する、<<ＴＬＳ>>プロトコル（トランスポート・レイヤ・セキュリティ）を介した暗号化及び認証のペアであって、前記ＴＬＳプロトコルのセキュリティのセットアップを以下を介して可能にする：
・  一方で、匿名であるかどうかに関わらず、例えば、ＲＳＡのような非同期暗号化を通して、又はディフィー・ヘルマンアルゴリズムを通してのような、鍵交換メカニズム、
・  他方で、例えばＡＥＳ（<<高度暗号化標準>>）のような暗号アルゴリズム及びＳＨＡ（<<セキュアハッシュアルゴリズム>>）のようなハッシュ化アルゴリズムを通して、やりとりされるデータのプライバシー及び完全性を確保するメカニズム。
【０１００】
産業アプリケーションシナリオの例
例えば、ロボット群間で相互接続をし、及びロボット群間の協力を管理するこれらの方法は、図７及び図８Ａ及び図８Ｂに示されるシナリオの完了を可能にする。
【０１０１】
図７は、以下の４つのヘテロジニアスロボットを示す。
【０１０２】
●  Ｒ１：レーザーレンジファインダを持ち、ＯＳ  ＲＯＳを持つ移動可能なロボット
●  Ｒ２：爪を持ち、ＯＳ  ＡＢＢを持つマニピュレータアーム
●  Ｒ３：ロボットＲ２とは異なるブランドのマニピュレータアーム及びＯＳ  ＡＢＢを持つロボット、及び
●  Ｒ４：ＯＳユニバーサルロボットを持つドローン
それぞれのロボットは、それ自身のロボットオペレーティングシステムを用いる。
【０１０３】
図８Ａ及び図８Ｂのフローチャートに要約されるように、このミッションの間、湿度センサ、
温度センサ、及びＲＦＩＤタグを備えるロボットＲ１は、ロボットＲ２（これもＲＦＩＤタグを備える）からの、例えば積載エリアＺＣＨに対応するエリアＺ２においてＲ１がＲ２に合流することを促すメッセージを受け取ると、そのスタートエリアＺ１−ＺＤを離れる。そこに到達するために、ロボットＲ１は、例えばそれ自身の走行距離計及びレーザーレンジファインダからのデータを用いて自律移動を実行しなければならない。いったんエリアＺ２のレベルに達すると、ロボットＲ１は、部品の取扱のためのそのストップエリアをそれに示すＲＦＩＤタグと通信しなければならない。
【０１０４】
第２フェーズの間に、それは、運搬されるべき物体を回収する準備ができていることをロボットＲ２に知らせる。よってロボットＲ２は、部品を回収し、それをロボットＲ１上に積載し、それから荷積みの終わりをそれに知らせる。
【０１０５】
次に、ロボットＲ１は、処理エリアＺ３−ＺＴＲに向かって移動する。いったん前記エリアＺ３のレベルに到達すると、それは、ロボットＲ３に部品の温度についての情報を通知する。
【０１０６】
後者は、部品の温度に依存して、<<処理Ａ>>又は<<処理Ｂ>>を実行する。このフェーズが完了すると、ロボットＲ４は、エリアＺ３に合流し、部品を回収し、その温度に依存してエリアＺ４Ａ又はＺ４Ｂにおいてそれを積載する。同時に、ロボットＲ１は、エリアＺ１に戻り、次のサイクルを待つ。
【０１０７】
よって、シナリオの例によって示されたように、本発明による方法は、そのほとんどが汎用であり、インストール及び使用が容易であり（ロボットの初期ロボットオペレーティングシステムはそのまま残る）、かつより高いソフトウェアレイヤの間の通信をトランスペアレントにするメッセージ変換及び送信のための効果的な原理であるソフトウェアアーキテクチャ（レイヤＰ１、Ｐ２）を提供することによって、ヘテロジニアスなロボット群及びセンサ群の間のスムーズな通信を可能にする。
【図１】
2021514515.tif 000003
【図２】
2021514515.tif 000004
【図３】
2021514515.tif 000005
【図４】
2021514515.tif 000006
【図５】
2021514515.tif 000007
【図６】
2021514515.tif 000008
【図７】
2021514515.tif 000009
【図８Ａ】
2021514515.tif 000010
【図８Ｂ】
2021514515.tif 000011
【国際調査報告】
2021514515.tif 000012
2021514515.tif 000013
2021514515.tif 000014
2021514515.tif 000015