(57)【特許請求の範囲】
【請求項１】
ロボットエージェントを制御する制御システムであって：
タスクの割り当てられた役割を実行する際にロボットエージェントを制御するタスクコントローラであって、タスクの割り当てられた役割のロボットエージェントによる実行を開始し、タスクの割り当てられた役割のロボットエージェントによる実行の完了を伝達するように構成されているタスクコントローラと、
タスクコントローラと通信するステータスマネージャであって、
(i)タスクのためのロボットエージェントの票を示す、ロボットエージェントのタスク状態と、
該タスクのための一以上のピアロボットエージェントの一以上の票を示す、一以上のピアロボットエージェントの一以上のピアタスク状態と、
タスクのための共有票を示す、共有タスク状態と、
を含む、ロボットエージェントのためのステータス情報を維持するように構成され、
(ii)ロボットエージェントが参加エージェント又は監視エージェントとして作動しているか否かに基いて共有タスク状態を決定し、
共有タスク状態を決定するときに、ロボットエージェントが参加エージェントとして作動しているときは、ロボットエージェントのタスク状態が考慮され、
共有タスク状態を決定するときに、ロボットエージェントが監視エージェントとして作動しているときは、ロボットエージェントのタスク状態が考慮されないように構成され、
(iii)一以上のピアロボットエージェントのうちの少なくとも一つからの第２のタスクのためのステータス情報に、タスクと第２のタスクとが相互依存であるか否かに基いて、サブスクライブするように構成されている、
ステータスマネージャと、
を含む制御システム。
【請求項２】
ステータスマネージャと通信し、一以上のピアロボットエージェントのうちの少なくとも一つから、一以上のピアロボットエージェントのうちの一つによって伝達されたピアステータス情報を含む第１のステータスメッセージを受信する、ピアツーピア通信システムをさらに含む、請求項１に記載の制御システム。
【請求項３】
ステータスマネージャがさらに、第１のステータスメッセージに含まれるピアステータス情報に基いて決定される、ロボットエージェントのタスク状態の少なくとも一つ、又は一以上のピアタスク状態の変更に応答して、ロボットエージェントのステータス情報を更新するように構成されている、請求項２に記載の制御システム。
【請求項４】
共有タスク状態は、所定量のロボットエージェントと、参加エージェントとして作動する一以上のピアロボットエージェントとが同一のタスク状態で一致することを示す、請求項１に記載の制御システム。
【請求項５】
ステータスマネージャが、第１のステータスメッセージに基づいてロボットエージェントのステータス情報を更新する前に、第１のステータスメッセージに含まれるバージョン情報を解析して、第１のステータスメッセージがロボットエージェントのステータス情報よりもさらに最新のピアステータス情報を伝達しているか否かを決定するようにさらに構成されている、請求項２に記載の制御システム。
【請求項６】
ピアツーピア通信システムが、ステータスマネージャのロボットエージェントのステータス情報の更新に応答して、一以上のピアロボットエージェントの少なくとも一つに、ロボットエージェントに記憶されたステータス情報を含む、第２のステータスメッセージを送信するようにさらに構成されている、請求項２に記載の制御システム。
【請求項７】
複数のデバイスのうちの第１のデバイスにおいて、
(i)第１のデバイスのタスクのための票を示す、第１のデバイスに対応する第１のタスク状態と、
他のデバイスのタスクのための他の票を示す、該複数のデバイスのうちの他のデバイスに対応する他のタスク状態と、
タスクのための共有票を示す、共有タスク状態と、
を記憶し、
第１のタスク状態と他のタスク状態とは、複数のデバイスのうちの１以上のデバイスで実行されるタスクに関連づけられており；
(ii)第１のデバイスが参加エージェント又は監視エージェントとして作動しているか否かに基いて共有タスク状態を決定し、
共有タスク状態を決定するときに、第１のデバイスが参加エージェントとして作動しているときは、第１のデバイスの第１のタスク状態が考慮され、
共有タスク状態を決定するときに、第１のデバイスが監視エージェントとして作動しているときは、第１のデバイスの第１のタスク状態が考慮されず；
(iii)他のデバイスのうちの少なくとも一つのデバイスからの第２のタスクのためのステータス情報に、タスクと第２のタスクとが相互依存であるか否かに基いて、サブスクライブする；
ことを含む方法。
【請求項８】
プロセッサを、請求項７に記載の方法を実行する手段として機能させるための命令を記憶する、コンピュータによって読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は概して、タスクを実行する際に複数のエージェント又はデバイスを連係させることに関するものである。
【背景技術】
【０００２】
例えばロボット、ロボットビークル、又はソフトウェアエージェント等の自律エージェントは、中央ノードを通して共有の又は個別のタスクの実行の連係を行うことができる。中央ノードは各自律エージェントと通信して、各自律エージェントのステータスを判断して、自律エージェントがいつタスクを実行する準備ができているかを判断し、次の動作を始めるように各自律エージェントに伝達する。中央ノードは中央の「黒板」の役割を果たし、各自律エージェントはここにそのステータスを掲示し、他の自律エージェントがそのステータスを見直すことができる。
【０００３】
中央ノードへの依存には特定の不利点がある。例えば、各自律エージェントが中央ノードに通信を頼っているため、中央ノードが故障すると、自律エージェントはタスクを実行することができなくなり得る。別の実施例としては、中央ノードへの依存により、システムの拡張性が制限されうる。これは中央ノードが限られた数の自律エージェントとの通信を無理なく維持することしかできず、それ以上になると、通信の干渉又はコンテンションが起こり動作が非効率的になり得るためである。同様に、各自律エージェントが中央ノードとの通信を維持しなければならないと、中央ノードの送信範囲により、自律エージェントが共有又は個別のタスクを実行できる領域の広さが制限され得る。
【０００４】
自律エージェントが中央ノードと無関係に動作可能である分散システムにより、これらの問題の幾つかが解決される。しかしながら、自律エージェントが中央ノードに頼らずに動作可能であったとしても、各自律エージェントが他の自律エージェントのステータスを判断するのに他の全ての自律エージェントと通信する必要があるならば、これらの制限によりシステムの拡張性と領域範囲が限定されうる。
【発明の概要】
【０００５】
本明細書に開示された実施形態には、タスクを実行するために複数のデバイスを連係させるためのコンピュータによって実行される方法、システム、及びコンピュータによって読み取り可能な記憶媒体が含まれる。図示した実施形態によれば、複数のデバイス、ロボットエージェント、又は他のエージェントは、中央ノードを使用して動作を連係させる代わりに、ピアツーピア通信を使用して通信する。各エージェントは、それ自体のタスクステータスと、一又は複数のピアエージェントのステータスを含む、ローカルステータス情報を維持している。一つのエージェントがそれ自体のタスクステータスを更新する、又はピアエージェントの内の一つのタスクステータスの変更を示すメッセージを受信すると、ローカルステータス情報が更新され、エージェントにおいて既知の最新ステータス情報を共有するためにメッセージが一又は複数のピアエージェントに送られる。各エージェントは、ピアエージェントから受け取ったメッセージを処理して、このタスクがエージェントによる実行に含まれる場合にこのタスク状態を局所的に更新することで、長期間タスク状態を把握する。エージェントのタスクステータスの共有項は、所定時点におけるタスク状態の一般合意である。共有項は、全てのエージェントが同じタスク状態に到達した時、動作している全てのエージェントが同じタスクステータスに到達した時、又は所定数の又は一部のエージェント又はアクティブなエージェントが同じステータスに到達した時に存在しうる。共有項が存在することを判断するために、エージェントは次の動作に進むことができる。
【０００６】
コンピュータによって実行される方法のある実例となる実施形態では、更新されたステータス情報はデバイスに記憶される。更新されたステータス情報は、複数のデバイスのうちの一以上のデバイスのタスク状態についての票の変更を反映する。第一の更新されたステータスメッセージが複数のデバイスのうちの一以上のデバイスに送られる。第一の更新されたステータスメッセージは更新されたステータス情報を伝達する。デバイスのタスク共有項は、更新されたステータス情報が複数のデバイスのうちの所定量のデバイスがタスクステータスについて一致することを示す時に更新される。
【０００７】
図示した別の実施形態では、ロボットエージェントを制御するシステムは、タスクの割り当てられた役割を実行するロボットエージェントを制御するタスクコントローラを含む。タスクコントローラは、割り当てられた役割の実行を開始し、割り当てられた役割の実行が完了したことを報告する。システムはまた、タスクコントローラと通信して、ロボットエージェントに記憶されたステータス情報を更新するステータスマネージャも含む。ステータス情報には、ロボットエージェントと、一以上のピアロボットエージェントのそれぞれのタスク状態についての票が含まれる。システムはまた、ステータスマネージャと通信するピアツーピア通信システムも含む。ピアツーピア通信システムは、第一のステータスメッセージを一以上のピアロボットエージェントのうちの少なくとも一つから受け取る。第一のステータスメッセージには、一以上のピアロボットエージェントのうちの一つによって報告されたピアステータス情報が含まれる。システムは２番目のステータスメッセージを一以上のピアロボットエージェントに送る。２番目のステータスには、ロボットエージェントに記憶されたローカルステータス情報が含まれる。
【０００８】
さらに別の実例となる実施形態では、コンピュータシステムによって実行可能な命令がコンピュータによって読み取り可能な記憶媒体に記憶される。コンピュータによって読み取り可能な記憶媒体には、各ローカルエージェントと、タスクに関連する一以上のピアエージェントのタスク状態についての票を示すステータス情報を記憶する命令が記憶される。コンピュータによって読み取り可能な記憶媒体には、ローカルエージェント又は一以上のピアエージェントのうちの少なくとも一つのタスク状態についての票の変更を識別するために、コンピュータシステムによって実行可能な命令が記憶される。コンピュータによって読み取り可能な記憶媒体には、ステータス情報を更新してタスク状態についての票の変更を反映させるために、コンピュータシステムによって実行可能な命令が記憶される。コンピュータによって読み取り可能な記憶媒体には、ステータスメッセージを送信して、更新されたステータス情報を一以上のピアエージェントのうちの一又は複数のピアエージェントに送るために、コンピュータシステムによって実行可能な命令が記憶される。コンピュータによって読み取り可能な記憶媒体にはまた、ステータス情報が特定数のエージェントがタスク状態について一致することを示しているか否かに基づいて、タスクの共有項を判断するためにコンピュータシステムによって実行可能な命令が記憶される。
【０００９】
説明してきた特徴、機能及び利点は、様々な実施形態において個別に達成することができる、または下記の説明及び図面を参照することによってさらに詳細が開示される更に別の実施形態と組み合わせることができる。
【図面の簡単な説明】
【００１０】
【図１】タスクを実行する際に複数のエージェントデバイスを連係させるために、実例となる実施形態においてエージェントによって使用される有限状態機械のブロック図である。
【図２】エージェントによって、エージェントの状態の変更、または別のエージェントの状態の変更に応じて、局所的に維持される共有項及びステータス情報を更新する方法の特定の実施形態のフロー図である。
【図３】複数のエージェントデバイスによって実行されるタスクを含む共有プランの特定の実施形態のブロック図である。
【図４】タスクを実行する際に複数のデバイスを連係させるシステム及び方法の実例となる実施形態による、複数の共有タスク及び非共有タスクを実行する複数のエージェントを示すブロック図である。
【図５】タスクを実行する際に複数のデバイスを連係させるシステム及び方法の実例となる実施形態による、複数の共有タスク及び非共有タスクを実行する複数のエージェントを示すブロック図である。
【図６】タスクを実行する際に複数のデバイスを連係させるシステム及び方法の実例となる実施形態による、複数の共有タスク及び非共有タスクを実行する複数のエージェントを示すブロック図である。
【図７】タスクを実行する際に複数のデバイスを連係させるシステム及び方法の実例となる実施形態による、複数の共有タスク及び非共有タスクを実行する複数のエージェントを示すブロック図である。
【図８】タスクを実行する際に複数のデバイスを連係させるシステム及び方法の実例となる実施形態による、複数の共有タスク及び非共有タスクを実行する複数のエージェントを示すブロック図である。
【図９】タスクを実行する際に複数のデバイスを連係させるシステム及び方法の実例となる実施形態による、複数の共有タスク及び非共有タスクを実行する複数のエージェントを示すブロック図である。
【図１０】タスクを実行する際に複数のデバイスを連係させるシステム及び方法の実例となる実施形態による、複数の共有タスク及び非共有タスクを実行する複数のエージェントを示すブロック図である。
【図１１】タスクを実行する際に複数のデバイスを連係させるシステム及び方法の実例となる実施形態による、複数の共有タスク及び非共有タスクを実行する複数のエージェントを示すブロック図である。
【図１２】タスクを実行する際に複数のデバイスを連係させるシステム及び方法の実例となる実施形態による、複数の共有タスク及び非共有タスクを実行する複数のエージェントを示すブロック図である。
【図１３】タスクを実行する際に複数のデバイスを連係させるシステム及び方法の実例となる実施形態による、複数の共有タスク及び非共有タスクを実行する複数のエージェントを示すブロック図である。
【図１４】タスクを実行する際に複数のデバイスを連係させるシステム及び方法の実例となる実施形態による、複数の共有タスク及び非共有タスクを実行する複数のエージェントを示すブロック図である。
【図１５】タスクを実行する際に複数のデバイスを連係させるシステム及び方法の実例となる実施形態による、複数の共有タスク及び非共有タスクを実行する複数のエージェントを示すブロック図である。
【図１６】タスクを実行する際に複数のデバイスを連係させるシステム及び方法の実例となる実施形態による、複数の共有タスク及び非共有タスクを実行する複数のエージェントを示すブロック図である。
【図１７】タスクを実行する際に複数のデバイスを連係させるシステム及び方法の実例となる実施形態による、複数の共有タスク及び非共有タスクを実行する複数のエージェントを示すブロック図である。
【図１８】タスクを実行する際に複数のデバイスを連係させる方法の実例となる実施形態のフロー図である。
【図１９】タスクを実行する際に複数のロボットエージェントを連係させるシステムの実例となる実施形態を含むロボットエージェントのブロック図である。
【図２０】タスクを実行する際に複数のロボットエージェントを連係させる、コンピュータによって実行される方法及びコンピュータによって実行可能なプログラム命令の実施形態を実行するのに作動可能な汎用コンピュータシステムのブロック図である。
【発明を実施するための形態】
【００１１】
特定の実例となる実施形態によれば、一以上の共有タスクを実行する際に複数のデバイスを連係させるコンピュータによって実行される方法、システム、及びコンピュータによって読み取り可能な記憶媒体が開示されている。実例となる実施形態によれば、複数のデバイス、ロボットエージェント、又は他のエージェントは、中央ノードを通してその動作を連係させることによってではなく、ピアツーピア通信を使用して通信を行う。各エージェントは、それ自体のタスク状態についての票、及び一以上のピアエージェントの票を含むローカルステータス情報を維持する。エージェントがそれ自体のタスク状態についての票を更新する、又はピアエージェントのうちの一つの票の変化を示すメッセージを受け取ると、ローカルステータス情報が更新され、最新のステータス情報を共有するために一以上のピアエージェントにステータスメッセージが送られる。
【００１２】
ある実例となる実施形態によれば、ステータス情報のバージョンは最適な複製を利用して共有される。したがって、多数のステータス情報のバージョンが、共通のタイムフレーム内で複数のエージェント間を循環している場合がある。例えば修正及び同期ベクターの使用を通して等のバージョン制御を使用して、多数のステータス情報の循環セットのうちのどれが最新のものかを判断することができる。
【００１３】
ある特定の実例となる実施形態によれば、各エージェントがエージェントのタスク状態についての票の共有項を監視して、共有又は個別タスクの実行を進めるか否か、あるいはどのように共有又は個別タスクの実行を進めるかを判断する。各エージェントは、共有項が次の状態へと進む前にタスクのステータスについての一致を示すまで待機することができる。例えば、共有項は、全てのエージェントがタスクステータスについて一致する、アクティブな全てのエージェントがタスクステータスについて一致する、あるいは、所定数のエージェントがタスクステータスについて一致する時に、タスクステータスについての一致を示すことができる。エージェントはまた、外部制御電源によって送信される制御メッセージの有効化、ポーズ、又はキャンセルに左右されうる。いずれかのエージェントのステータスの不具合により、一以上の共有又は個別タスクの実行が終了となる場合がある。
【００１４】
図１は、タスクを実行する際に複数のエージェントを連係させるためにエージェントによって使用される有限状態機械１００のブロック図である。この有限状態機械は、タスクの実行の連係及び監視のためにタスクのライフサイクルを表示している。追加のドメイン固有のデータをタスクと関連づけしてタスクを完全に定義することが可能である。例えば、追加の情報には、ロボットエージェントが開けるドア、又は動作が起きる最短持続時間又は最長持続時間を含むことができる。実例となる実施形態によれば、共有タスクを実行するために連結された複数のエージェントの各エージェント、又は複数のデバイスは、共有タスクについての有限状態機械１００のローカルコピーを維持して、各エージェントに対して一貫したステータスパスを維持する。
【００１５】
共有項は、各エージェントが共有タスクに関与してタスクの次の状態を票決することを可能にすることによって維持される。これが、タスクがこのエージェントにしたがって遷移すべき状態である。各エージェントは、次の状態の共有項が作成されると、有限状態機械を次の状態に同時に遷移させる。エージェントは、ピアツーピア通信を通して他のエージェントとその票を共有する。この票は、このエージェントが受信した参加している他のエージェントによって投じられた最新の票をも含むタスクステータスメッセージに含まれる。例えばバージョンベクター等のバージョニング情報がステータスメッセージに含まれており、これによって受け取るエージェントがメッセージのコンテンツをエージェントの最新のタスクステータスに結合させることが可能になる。ステータスメッセージを受け取った後に、各エージェントは票を集計する、すなわち共有項を計算する。共有項が新規の状態への遷移である場合、エージェントは必要に応じてエージェントの有限状態機械の複製の状態を更新する。特定の状況に対して、以下に均衡を破る規則が定義されている。タスクに参加しないエージェントである監視エージェントは同じアルゴリズムを実行するが、票は投じない。監視エージェントはステータスメッセージを中継するように作動することができる。特定の実施形態によれば、監視エージェントはステータスメッセージがさらなる最新のステータス情報を中継するか否かを判断して、その後で更新された情報を既存のステータス情報と結合させることができる。最新のものと判断されたステータス情報のみを送信することで、監視エージェントと他のエージェントは、他のエージェントが無効のステータスメッセージを処理することを防止することができる。エージェントがどのようにタスク状態について票決し、ステータスメッセージを共有し、共有項に到達して違うタスク状態へと進むかを、図４〜１７を参照しながら下に説明する。
【００１６】
有限状態機械１００は６つの標準状態を含む。標準状態は、共有タスクに参加している各エージェントがタスクを実行する流れの中で入ることができる状態を含む。この６つの標準状態には、新規の状態１０２、ディスパッチ状態１０４、レディ状態１０６、アクティブ状態１０８、完了状態１１０、ポーズ又は保留状態１１２、及びキャンセル状態１１４を含む。有限状態機械１００はまた２つのエラー状態も含む。エージェントは、システムの故障又は何らかの他の状況により、一以上のエージェントが共有タスクでの役割を良好に果たせなかったときに、エラー状態になりうる。２つのエラー状態には、作成不具合状態１１６及び故障状態１１８を含む。
【００１７】
新規状態１０２は、タスクがエージェントにおいて作成されたときの各タスクの初期の状態である。エージェントは、タスクがエージェントに分配された時に、自動的にディスパッチ状態１０４に入る。特定の実例となる実施形態によれば、タスクは、タスクに参加している又はタスクをサブスクライブしている各エージェントに、有限状態機械１００の複製を各エージェントに分配することによって分配される。エージェントが特定のタスクに参加できない場合でも、そのエージェントが監視する又は実行する何らかの他のタスクの前提条件として、タスクの実行を監視することができる。
【００１８】
共有タスクに参加しているエージェントは、いつ次の状態へと遷移するかについて票決するため、有限状態機械を集団的な視点から説明する。レディ状態１０６は、参加しているエージェントがタスクにおいて割り当てられた役割を実行する準備ができていることを示す。アクティブ状態１０８は、エージェントがタスクにおいて割り当てられた役割を実行するプロセスにあることを示す。さらに下に説明する実例となる実施形態によれば、共有タスクに参加している全てのエージェント又は所定量のエージェントが票決してレディ状態１０６の共有項に到達した時に、エージェントは自動的にレディ状態１０６からアクティブ状態１０８に進むことができる。エージェントはまた、一以上の他のエージェントによって実行される前提条件のタスクが完了したときに、レディ状態１０６からアクティブ状態１０８へと進むように票決することもできる。あるいは、実例となる別の実施形態によれば、エージェントは、外部制御電源（図１に示さず）からの信号の受信に応じてのみ、レディ状態１０６からアクティブ状態１０８へ進むように票決することができる。外部制御電源は、複数のエージェントの共有項に基づいて、又は別の状況、例えば外部電源からのデータ又は人間の制御決定に基づいてアクティブ状態１０８への遷移を合図することができる。完了状態１１０は、参加しているエージェントがタスクにおける役割を完了したことを示す。
【００１９】
有限状態機械１００の標準状態にはまた、ポーズ状態１１２又はキャンセル状態１１４も含むことができる。タスクがアクティブ状態１０８にあるときに、ポーズ状態１１２又はキャンセル状態１１４のいずれかを外部制御電源によって開始することができる。例えば、外部制御電源は、ポーズ信号を送って、タスクをアクティブ状態１０８からポーズ状態１１２に遷移させることができる。特定の実例となる実施形態によれば、参加している全てのエージェントが信号を受け取って、ポーズ状態１１２への遷移を実行するための共有項を形成する。外部制御電源はまた、エージェントがポーズ状態１１２からアクティブ状態１０８に戻る遷移を票決するためのレジューム信号を送ることもできる。あるいは、外部制御電源は、キャンセル信号を送って、エージェントがキャンセル状態１１４への遷移を票決することによりタスクをキャンセルするようにすることができる。タスクは、アクティブ状態１０８、あるいはポーズ状態１１２のいずれかからキャンセル状態１１４に遷移することができる。
【００２０】
２つのエラー状態のうちの第１のエラー状態は、作成不具合状態１１６である。作成不具合状態１１６は、エージェントがそのタスクに対して有限状態機械１００の複製を良好に作成する、又はそうでなければタスクの実行に使用される追加の命令を受信する能力がないことを表しうる。実例となる実施形態によれば、エージェントはディスパッチ状態１０４からのみ、作成不具合状態１１６への遷移を票決する。２つのエラー状態のうちの２番目は故障状態１１８である。エージェントは、タスクにおいてエージェントが割り当てられた役割を実行することができなかったときに、故障状態１１８への遷移を票決することができる。例えばエージェントは、ハードウェア又はソフトウェアの故障の結果、エージェントが解決できない状況に遭遇したことに応答して、エージェントが割り当てられた役割を実行することを阻む全ての状況に直面した際に、故障状態１１８に遷移することができる。エージェントはまた、タスクの実行に関与している別のエージェントの不具合においても故障状態１１８へ遷移する場合がある。実例となる実施形態によれば、均衡を破る法則として、故障状態の票決は、標準状態の票決を覆して、共通項を選択された故障状態へと強制的に変える。さらに下に説明するように、ピアエージェント又はピアデバイスが故障したことを示すステータス情報を受信すると、これはエージェントによって登録されたレディ状態１０６又はアクティブ状態１０８又はポーズ状態１１２をしのぎ、このため割り当てられたエージェントのうちの一つがタスクにおける役割を果たすことができなかった時に、共通項が完了したタスクを反映しない場合がある。
【００２１】
特定の実例となる実施形態では、共有タスクに参加する各エージェントは、共有タスクについての有限状態機械１００の独立したコピーを維持する。例えば、エージェントは他のピアエージェント、又はピアデバイスのいかなる状態とも無関係に、レディ状態１０６に入ることを票決することができる。しかしながら、エージェントが特定の状態に影響を与えるか否かは、そのエージェント及びタスクに参加している他のエージェントの共通項に依存しうる。言い換えると、幾つかの又は全てのピアエージェントがまだレディ状態１０６に対する票決に同意する又は伝達していない場合でも、そのエージェントはレディ状態１０６を前提とすることを票決することができる。したがって、エージェントがレディ状態１０６を取ると票決したとしても、参加しているエージェントの共有項はレディ状態１０６とはならない場合があり、エージェント又はピアエージェントのいずれも、複数のエージェントがレディ状態１０６に一致したようには作動しない。
【００２２】
図２は、エージェントの状態の変化、又は別のエージェントの状態の変化に応じて、エージェントが局所的に維持されている共有項及びステータス情報を更新する方法２００の特定の実施形態のフロー図である。エージェントとは、複数のエージェントのうちの一つである。エージェントは、ローカルエージェントからの票、及び共有タスクに参加している他の全てのエージェントの票を含むステータス情報を維持する。エージェントはステータス情報を使用して、共有タスクに参加しているエージェントの共有項を判断して、次のタスク状態にいつ遷移するかを判断する。エージェントが票を新規のタスク状態に移動する方に変更する（例えば、タスクを完了する時に、エージェントは図１を参照して説明したように、アクティブ状態から完了状態へ票を変更する）と、エージェントは維持しているローカルステータス情報を更新して共有項を判断する。あるいは、エージェントが、ローカルステータス情報に反映される一以上の他のエージェントについての異なる票を報告する別のエージェントからステータス情報を受け取ると、エージェントはローカルステータス情報を更新する。ローカルステータス情報が変更されると、エージェントは更新されたローカルステータス情報を送信する又は広める。
【００２３】
方法２００は、エージェントが最新の状態２０２、例えばタスク有限状態機械１００（図１）の最新の状態にあるときに開始する。ステップ２０４においてエージェントがそれ自体の票を変更したかどうかが判断される。変更していなければ、本方法２００は状態２０２に戻り、ローカルエージェントの票に変化がないかどうかの監視を続ける。一方で、ステップ２０４においてエージェントが票を変更したと判断された場合、ステップ２１０においてエージェントはローカルステータス情報を更新する。同時に、最新の状態２０２から、ステップ２０６においてエージェントが別のエージェントからステータスメッセージを受け取ったかどうかが判断される。もし受け取っていなければ、本方法２００は状態２０２に戻り、ローカルエージェントの票の変更、又は別のエージェントからのステータスメッセージの受信の監視を続ける。他方、ステップ２０６においてエージェントが別のエージェントからステータスメッセージを受け取ったと判断した場合、エージェントは、ステップ２０８において、ステータスメッセージに表示された任意のエージェントの票が、ローカルステータス情報に表される票から変更されたものかどうかを判断する。もし変更されていなければ、本方法２００はステップ２０２に戻り、ローカルエージェントの票の変更、又は別のエージェントからのステータスメッセージの受信を監視する。他方、ステップ２０８においていずれかのエージェントの票が変更されたと判断した場合、エージェントはステップ２１０においてローカルステータス情報を更新する。バージョンベクター又は他のプロセスの使用を介したバージョニング制御を利用して、受け取ったステータスメッセージに表示されたステータス情報が最新のものであるか、又は少なくともエージェントによって維持されたステータス情報よりも新しいものであるかを判断することができる。
【００２４】
ステップ２１０において変更された一つの票又は複数の票を表示するためにローカルステータス情報を更新した後で、エージェントはステップ２１２においてステータスメッセージを送信して、更新されたステータス情報を広める。エージェントは、ステップ２１４においてステータス情報が更新された結果、新しい共有項に到達したかどうかを判断する。新しい共有項に達してない場合、本方法は最新の状態２０２に戻り、ローカルステータス情報を変更しうる票の変更を監視する。他方、ステップ２１４において新しい共有項に到達した場合は、エージェントはステップ２１６において新規の状態、例えばタスク有限状態機械１００（図１）によって表示される次の状態に遷移する。本方法は再度最新の状態２０２に戻り票の変更を監視する。例えば、別のエージェントは第２のステータスメッセージを受け取ることができ、この第２のステータスメッセージはタスク状態についての票が変更されたことを示しうる。ローカルステータス情報はステップ２１０において次に再度更新され、ステップ２１２において再度送信される。
【００２５】
票の変更、ステータス情報の共有、及び新規の共有項にいつ到達したかの判断の実施例は、共有又は個別タスクを実行する複数のエージェントの実施例を示す図４〜１７のブロック図に図示されている。タスクは図３を参照して説明される共有プランの一部である。
【００２６】
図３は、タスクを実行する複数のエージェントを連係させる実例となる実施形態にしたがって、複数のエージェントが複数の共有タスクを含むタスクを実行する共有プラン３００のブロック図である。共有プラン３００は複数のタスクを含む。共有プラン３００の幾つかのタスクの実行を図４〜１７を参照して説明する。共有プラン３００は、多数のエージェントを使用して複数の部屋のうちの一つから別の部屋へオブジェクトを移動させる一連のタスクを示す。説明のために、エージェントＡはドアを作動させる役割を持つ一方で、エージェントＢ及びエージェントＣはオブジェクトを２つの部屋の間、部屋Ｘから部屋Ｙへと移動させる。オブジェクトが移動された後で、エージェントＡはドアを閉め、共有プラン３００は完了する。
【００２７】
共有プラン３００を実行するために、幾つかのタスクが共有プラン３００において連結した全てのエージェントによって実行することができ、これにはドアへ移動するタスク３０４と、戻って停止するタスク３３２が含まれる。他のタスク、例えばドアを開けるタスク３１２及びドアを閉めるタスク３１４は、単一のエージェントによってのみ実行可能である。これらは、他のエージェントが参加する連結又は共有タスクではない独立した単独のタスクである。それでもなお、他のエージェントは、別のエージェントに割り当てられた個別のタスクの実行を監視することができる。例えば、オブジェクトを部屋から部屋へ移動させるタスクを受け持ったエージェントは、ドアが開いている時を知らせてもらうためにドアを作動させる個別のタスク又は複数のタスクをサブスクライブすることができる。
【００２８】
図４〜１７の実施例では、オブジェクトの移動に伴うタスクは共有タスクである。つまり、エージェントＡ４１４及びエージェントＣ４１６を含む複数のエージェントは連結し、一致して動作する。エージェントは共有ステータスに同意して、それらのタスクを良好に実行することができる。オブジェクトを移動させるエージェントによって実行されるタスクはまた、ドアを作動させるエージェント、エージェントＡ４１２がサブスクライブすることにより、エージェントＡ４１２にいつドアを閉めて良いかが知らされる。
【００２９】
図３を参照すると、開始タスク３０２の後で、エージェントはすべて、ドアまで移動する共有タスク３０４の一部としてドアのそばの初期位置まで移動する。第１のエージェント（又は、タスクに一より多いエージェントが必要な場合は複数の第１エージェント）がドアを開けるタスク３１２を実行する。第１のエージェントがドアを開けると、複数の第２エージェントが多数の共有タスクを実行する。共有タスクには、オブジェクトまで移動するタスク３２２、オブジェクトに係合するタスク３２４、部屋Ｙに移動させるタスク３２６、及びオブジェクトを開放するタスク３２８が含まれる。第１のエージェントは、複数の第２エージェントが共有タスク３２２〜３２８を完了したと判断すると、ドアを閉めるタスク３１４を実行する。全てのエージェントはその後、戻って停止する３３２及び終了３３４する共有タスクを実行する。
【００３０】
図４〜１７は、タスクを実行する際に複数のデバイスを連係させる実例となる実施形態にしたがって複数の共有及び非共有タスクを実行する複数のエージェントのブロック図である。共有及び非共有タスクの実行には、図３の共有プラン３００を参照して説明する幾つかの共有及び非共有タスクの実行が含まれる。図４〜１７の実施例では、図４に示すように、共有プランが開始された時に、エージェントＡ４１２、エージェントＢ４１４、及びエージェントＣ４１６は全て部屋Ｙ４０６の停止領域４１８に位置している。オブジェクト４０２は部屋Ｘ４０４に位置している。部屋Ｘ４０４及び部屋Ｙ４０６の間のドア４０８は、エージェントＡ４１２によって開けられ（例えば、図３に示すようなドアを開けるタスク３１２）、これによりエージェントＢ４１４及びエージェントＣ４１６がオブジェクト４０２を部屋Ｘ４０４から部屋Ｙ４０６まで移動させることが可能になる。タスクの実行中の複数の時点において、外部制御電源４２０は、幾つかのタスクの一部の実行を開始する又は停止するように、エージェントＡ４１２、エージェントＢ４１４、及びエージェントＣ４１６にメッセージを送ることができる。
【００３１】
図４は、Ｔ＝０  ４２２の時点におけるエージェントＡ４１２、エージェントＢ４１４、及びエージェントＣ４１６の初期状態を示す。Ｔ＝０  ４２２の時点において、エージェントＡ４１２、エージェントＢ４１４、エージェントＣ４１６はそれぞれ「新規の」状態に入っている。新規の状態から開始して、各エージェントは、ドア４０８まで移動する共有タスクでの割り当てられた役割の実行を進める。図４は、共有プランの実施において各エージェントＡ４１２、エージェントＢ４１４、及びエージェントＣ４１６それぞれによって維持されるステータス情報４３０、４４０、及び４５０を示す。エージェントＡのステータス情報４３０は、エージェントＡの票４３２、エージェントＢの票４３４、エージェントＣの票４３６、及び共有項４３８を含む。共有項４３８は、エージェントＡの票４３２、エージェントＢの票４３４、エージェントＣの票４３６からエージェントＡ４１２によって作成される。各エージェント４１２〜４１６の票は、各エージェント４１２〜４１６によって維持されるステータス情報４３０、４４０、４５０にそれぞれ基づいて各エージェント４１２〜４１６によって判断された共有項を表す。特定の実例となる実施形態では、共有項４３８はエージェント４１２、４１４、及び４１６の状態の一致した共有項を表しうる。他の形態の共有項を、図５を参照して下に説明する。
【００３２】
エージェントＡ４１２の共有項４３８は、エージェントＡのステータス情報４３０に含まれるエージェントＡの票４３２、エージェントＢの票４３４、エージェントＣの票４３６に基づいて局所的に判断される。エージェントＢ４１４及びエージェントＣ４１６はおなじように、共有プランに参加しているエージェント４１２〜４１６に関するローカルステータス情報を維持する。例えば、エージェントＢのステータス情報４４０は、エージェントＡの票４４２、エージェントＢの票４４４、エージェントＣの票４４６、及びエージェントＢのステータス情報４４０に含まれる全てのエージェント４１２〜４１６の最後に一致した状態を表す共有項４４８を含む。エージェントＣのステータス情報４５０は、エージェントＡの票４５２、エージェントＢの票４５４、エージェントＣの票４５６、及びエージェントＣのステータス情報４５０に含まれる全てのエージェント４１２〜４１６の最後に一致した状態を表す共有項４５８を含みうる。
【００３３】
実例となる実施形態によれば、各エージェント４１２〜４１６によって維持されるステータス情報４３０、４４０、４５０は、ステータス情報４３０、４４０、４５０が変更されるごとにピアツーピア通信を利用して、他のエージェント４１２〜４１６に送信される。エージェント４１２〜４１６のうちの一つがそれ自体の状態を更新する時、そのエージェントはステータス情報を更新し、そのステータス情報を他のエージェント４１２〜４１６へ送信する。また、エージェント４１２〜４１６のうちの一つが、一又は複数のエージェント４１２〜４１６のステータスを変更する別のエージェント４１２〜４１６からステータス情報を受け取り、そのエージェントはそれ自体のステータス情報を更新し、次にステータスメッセージを送信して更新されたステータス情報を他のエージェント４１２〜４１６に中継する。さらに下に説明するように、異なるステータス情報４３０、４４０、４５０の異なるセットを支持する多数のステータスメッセージは最適な複製を使用して瞬時に送信することができる。ステータス情報４３０、４４０、４５０の幾つかはより最新で、他の情報よりもさらに新しく発行されたものであってよい。同期及び修正ベクター、又は別の種類のバージョニング制御を使用して、各エージェント４１２〜４１６が最新のステータス情報を識別し最新のステータス情報に応答するようにすることができる。
【００３４】
図４では、各エージェントの票は、他のエージェント４１２〜４１６に通信されたように「新規の」状態である。例えば、エージェントＡのステータス情報４３０は、エージェントＡの票４３２が新規であり、エージェントＢの票４３４が新規であり、エージェントＣの票４３６が新規であることを示す。全てのエージェント４１２〜４１６が新規の状態に一致しているため、共有項４３８もまた新規の状態である。同様に、エージェントＢのステータス情報４４０は、エージェントＡの票４４２が新規であり、エージェントＢの票４４４が新規であり、エージェントＣの票４４６が新規であり、したがって、共有項４４８は新規であることを示す。エージェントＣのステータス情報４５０は、エージェントＡの票４５２が新規であり、エージェントＢの票４５４が新規であり、エージェントＣ４４６の票が新規であり、したがって、共有項４５８は新規であることを示す。
【００３５】
図５は、Ｔ＝１  ５２２の時点における各エージェント４１２〜４１６を示すブロック図である。Ｔ＝１  ５２２の時点では、一つのタスクを表す有限状態機械５０２の複製が外部制御電源４２０から各エージェントへディスパッチされる。各エージェント４１２〜４１６は、タスクの実行中にエージェント４１２〜４１６の遷移をガイドする有限状態機械５０２のコピーを受け取る。エージェントＡのステータス情報４３０は、エージェントＡの票５３２をディスパッチング、エージェントＢの票５３４をディスパッチング、及びエージェントＣの票５３６をディスパッチングとして示す。全てのエージェントの票はエージェントＡのステータス情報４３０において一致しており、したがって、エージェントＡのステータス情報４３０に関する共有項５３８はＴ＝１  ５２２の時点のディスパッチングに更新される。同様に、エージェントＢのステータス情報４４０は、エージェントＡの票５４２をディスパッチング、エージェントＢの票５４４をディスパッチング、及びエージェントＣの票５４６をディスパッチングとして示す。エージェントＢのステータス情報４４０に関する共有項５４８もまた、Ｔ＝１  ５２２の時点のディスパッチングに更新される。エージェントＣのステータス情報４５０は、エージェントＡの状態５５２をディスパッチング、エージェントＢの票５５４をディスパッチング、及びエージェントＣの票５４６をディスパッチングとして示す。エージェントＣのステータス情報４５０に関する共有項５５８もまた、Ｔ＝１  ５２２の時点においてディスパッチングに更新される。
【００３６】
特定の実例となる実施形態では、ステータス情報４３０、４４０、及４５０が示す全てのエージェント４１２〜４１６の票がＴ＝１  ５２２の時点においてディスパッチングであるため、共有項５３８、５４８、５５８はディスパッチングに更新される。しかしながら、別の特定の実例となる実施形態では、一致した共有項に到達せずに共有項５３８、５４８、５５８を更新することができる。共有項はどちらかといえば、所定数のエージェント４１２〜４１６又はアクティブエージェント４１２〜４１６の所定部分が更新された状態を伝達したときに更新することができる。またあるいは、共有項は、所定数のアクティブエージェント４１２〜４１６、エージェント４１２〜４１６の所定部分、又は全てのアクティブエージェント４１２〜４１６が更新された状態を伝達したときに更新することができる。エージェント４１２〜４１６がアクティブで機能しているか否かは、エージェント４１２〜４１６をプログラミングして定期的な「心拍」信号を送信してエージェント４１２〜４１６がアクティブであることを通信することによって判断することが可能である。エージェント４１２〜４１６のうちの一つが、一又は複数の心拍信号を送信しなかったときには、伝達できなかったエージェント４１２〜４１６の状態は非アクティブに変更され、伝達できなかったエージェントは投票権を失いうる。
【００３７】
特定の実施形態では、新規からディスパッチングまでの遷移は自動的であってよい。特定の実施形態では、エージェントがディスパッチング段階を完了し、エージェントのステータスを伝達することができる前に、エージェントの状態を解析するために状態機械を受信することになる。しかしながら、エージェントのタスク状態の共有項に基づきタスク状態の遷移プロセスを図示するため、図４〜８の実施例に、共有項への到達に基づいてディスパッチング状態へ遷移しているエージェント４１２〜４１６を示す。
【００３８】
例えば、エージェント４１２〜４１６のうちの２つのエージェント等の所定数のエージェントの状態が更新された時に、共通項を更新することができる。同様に、例えばエージェント４１２〜４１６の過半数又は三分の二等のエージェント４１２〜４１６の所定部分の状態が更新された時に共通項を更新することができる。ステータス情報４３０、４４０、４５０に示すように、Ｔ＝１’５２２’の時点において、エージェントＡの票４３２、４４２、４５２はディスパッチングに更新されておらず、新規として伝達されている。エージェントＢの票４４４、４５４、４６４及びエージェントＣの票４４６、４５６、４６６はディスパッチングに更新されたままである。全てのエージェント４１２〜４１６の状態がディスパッチングとして伝達されていないため、ディスパッチングというエージェント４１２〜４１６の一致した共通項は存在しえない。しかしながら、エージェント４１２〜４１６は、例えばエージェント４１２〜４１６のうちの２つのエージェント等の所定数のエージェント４１２〜４１６が更新された状態を伝達したときに、共通項５３８’、５４８’、５５８’を更新することができるように構成することが可能である。したがって、Ｔ’＝４２２’の時点において、エージェントＢの票５３４、５４４、５５４及びエージェントＣの票５３６、５４６、５５６を含むエージェントのうちの２つのエージェントの状態がディスパッチングとして伝達されたため、共通項５３８’、５４８’、５５８’をディスパッチングに更新することができる。共有項５３８’、５４８’、５５８’は、エージェントＡの票４３２、４４２、及び４５２が更新されていなくても更新される。
【００３９】
同様に、エージェント４１２〜４１６は、例えばエージェント４１２〜４１６の過半数又はエージェント４１２〜４１６の三分の二等のエージェント４１２〜４１６の所定部分が更新された状態を伝達するときに、共有項５３８’、５４８’、５５８’を更新することができるように構成することができる。したがって、Ｔ’＝４２２’の時点において、エージェントＢの票５３４、５４４、５５４及びエージェントＣの票５３６、５４６、５５６の過半数（又は三分の二）がディスパッチングとして伝達されたため、共通項５３８’、５４８’、５５８’をディスパッチングに更新することができる。共有項５３８’、５４８’、５５８’は、エージェントＡの票４３２、４４２、及び４５２が更新されていなくても更新される。
【００４０】
別の実施例では、Ｔ＝１”５２２”の時点において、エージェントＡ４１２は、所定数の期間、又は所定の長さの時間、心拍信号を記録できなかったために非アクティブに分類される、又はされている。この結果、Ｔ＝１”５２２”の時点においてはエージェントＡ４１２のステータス情報は伝達されない。それにも関わらず、エージェントＢ４１４及びエージェントＣ４１６は、全てのエージェント４１２〜４１６が伝達していない時でも、共有項５４８”、５５８”を更新することができるように構成することができる。エージェントＡ４１２の心拍又は状態の記録の失敗は、図５にエージェントＡの票５４２”、５５２”を示す「Ｘ」で表示されている。
【００４１】
Ｔ＝１”５２２”の時点において、エージェントＢの票５４４、５５４及びエージェントＣの票５４６、５５６はディスパッチングとして伝達される。この結果、共有項５４８”、５５８”は、アクティブな全てのエージェント４１２〜４１６が更新された時に、エージェントＢ４１４及びエージェントＣ４１６が共有項５４８”、５５８”を更新するように構成されている場合に、ディスパッチングに更新することができる。あるいは、エージェントＢ４１４及びエージェントＣ４１６は、所定数のエージェント４１２〜４１６が更新された時に、共有項５４８”、５５８”をディスパッチングに更新するように構成することができる。例えば、共有項５４８”、５５８”は、エージェント４１２〜４１６のうちの少なくとも２つが更新された時、又はアクティブなエージェント４１２〜４１６のうちの少なくとも２つが更新された時に、エージェントＡ４１４及びエージェントＣ４１６が共有項５４８”、５５８”を更新するように構成されているときに、Ｔ＝１  ５２２”の時点においてディスパッチングに更新することができる。あるいは、共有項５４８”、５５８”は、エージェント４１２〜４１６の所定部分が更新された時に、エージェントＢ４１４及びエージェントＣ４１６が共有項５４８”、５５８”を更新するように構成されている時に、Ｔ＝１”５２２”の時点でディスパッチングに更新することができる。例えば、エージェント４１２〜４１６の過半数が更新された時に、又はアクティブなエージェント４１２〜４１６の過半数が更新された時に、共有項５４８”及び５５８”をＴ＝１”５２２”の時点で更新することができる。あるいは、共有項５４８”及び５５８”はまた、エージェント４１２〜４１６の三分の二が更新された時に、又はアクティブなエージェント４１２〜４１６の三分の二が更新された時に、Ｔ＝１”５２２”の時点で更新することもできる。
【００４２】
したがって、特定の実例となる実施形態は、エージェント４１２〜４１６の状態の一致した共有項に到達していないときに、エージェント４１２〜４１６の共有項を更新することができる。しかしながら、図４〜１７の実施例については、エージェント４１２〜４１６は、エージェント４１２〜４１６の状態の一致した共有項を識別したときにのみ、共有項を更新すると仮定する。
【００４３】
図６は、エージェントＣの票６３６、６４６、６５６がレディ状態に更新されると同時に、エージェントＡの票５３２、５４２、５５２及びエージェントＢの票４３４、４４４、４５４がディスパッチングから更新されていない時の、Ｔ＝２  ６２２の時点における各エージェント４１２〜４１６を示すブロック図である。エージェントＣ４１６は、エージェントＣのステータス情報４５０のエージェントＣの票５５８をレディに更新している。エージェントＣのステータス情報４５０が更新されると、エージェントＣ４１６は、ステータスメッセージを送信して、エージェントＣのステータス情報４５０をエージェントＡ４１２及びエージェントＢ４１４に通信する。ただし、エージェントＣの票６３６、６４６、６５６がエージェントのステータス情報４３０、４４０、４５０においてレディに更新されていても、エージェントＡの票５３２、５４２、５５２はディスパッチングのままであり、エージェントＢの票５３４、５４４、５５４はディスパッチングのままである。エージェント４１２〜４１６は、エージェント４１２〜４１６の状態の共有項が一致しているときにのみ共有項を更新するように構成されているため、共有項５３８、５４８、５５８はディスパッチングのままである。
【００４４】
図７は、エージェントＡ４１２及びエージェントＢ４１４がレディ状態に到達したときの、Ｔ＝３  ７２２の時点における各エージェント４１２〜４１６を示すブロック図である。エージェントＡ４１２及びエージェントＢ４１４は他のエージェントからステータス情報をそれぞれ受信しているが、エージェントＣ４１６はエージェントＡ４１２に関する更新されたステータス情報をまだ受け取っていない。エージェントＡのステータス情報４３０では、エージェントＡの票７３２はレディに更新されて、エージェントＢの票７３４はレディに更新される。エージェントＡ４１２は前もってエージェントＣの票６３６をレディに更新している。エージェントＡのステータス情報４３０が全てのエージェント４１２〜４１６がＴ＝３  ７２２の時点においてレディ状態を票決していることを示すため、共有項７３８はレディに更新される。同様に、エージェントＢのステータス情報４４０では、エージェントＡの票７４２はレディに更新され、エージェントＢの票７４４はレディに更新され、それと同時にエージェントＣの票６４６は前もってレディに更新されている。エージェントＢのステータス情報４３０が、全てのエージェント４１２〜４１６がここでレディ状態について票決し一致していることを示すため、共有項７４８はレディに更新される。
【００４５】
エージェントＣ４１６はまだ、エージェントＡの票４１２をレディ状態に更新するステータス情報を支持するステータスメッセージを受信していない。したがって、エージェントＣのステータス情報４５０はエージェントＡの票６５２をディスパッチングとして示し続ける。エージェントＢの票７５４がレディ状態に更新されており、エージェントＣの票６５６が予めレディに更新されていたとしても、エージェントＣのステータス情報４５０の共有項６５８はディスパッチングのままである。
【００４６】
図８は、エージェントＣが、エージェントＡ４１２からの更新されたステータス情報を支持するステータスメッセージを受信した時の、Ｔ＝４  ８２２の時点における各エージェント４１２〜４１６を示すブロック図である。エージェントＣ４１６は、エージェントＡ４１２の更新されたステータス情報を、エージェントＡ４１２からのエージェントＡのステータス情報４３０の送信を受信することによってか、あるいはエージェントＢ４１４からのエージェントＢのステータス情報４４０を支持するステータスメッセージを受信することによって受信していてよく、この２つは両方ともＴ＝３  ７２２の時点においてエージェントＡ４１２がレディ状態に到達したことを示している。エージェントＡのステータス情報４３０及びエージェントＢのステータス情報４４０はＴ＝３  ７２２の時点において最新のものであり、エージェントＡのステータス情報４３０又はエージェントＢのステータス情報４４０は変更されない。また、エージェントＡのステータス情報４３０及びエージェントＢのステータス情報はＴ＝３  ７２２の時点で最新のものであったため、エージェントＡのステータス情報４３０の共有項７３８、及びエージェントＢのステータス情報４４０の共有項７４８は変更されないままである。しかしながら、エージェントＣのステータス情報４５０は更新されて、エージェントＡの票８５２がレディ状態であることを示す。同様に、エージェントＣのステータス情報４５０は全てのエージェント４１２〜４１６がレディ状態について一致していることを示すため、共有項８５８はレディ状態に更新される。
【００４７】
図９は、Ｔ＝５  ９２２の時点における各エージェント４１２〜４１６を示すブロック図である。Ｔ＝５  ９２２の時点においては、全てのエージェント４１２〜４１６はレディ状態を伝達しており、外部制御電源４２０はエージェント４１２〜４１６に起動信号９７０を送信している。実例となる実施形態によれば、全てのエージェント４１２〜４１６が、各エージェント４１２〜４１６によって維持されるステータス情報の共有項４３０、４４０、４５０によって判断されたように、レディ状態に到達し、レディ状態を票決すると、エージェント４１２〜４１６は自動的にアクティブ状態に更新され、割り当てられた役割を実行する。別の実例となる実施形態によれば、図９に示すようにエージェント４１２〜４１６のアクティブ状態への遷移は外部制御電源４２０によって引き起こされる。外部制御電源４２０は、エージェント４１２〜４１６と同様に、エージェント４１２〜４１６によって送信されたステータス情報を監視して、アクティブ状態へ更新する前に、エージェント４１２〜４１６がいつレディ状態に同意する共有項に到達したかを識別することができる。
【００４８】
Ｔ＝５  ９２２の時点において、外部制御電源４２０からの起動信号９７０の受信に応じて、各エージェント４１２〜４１６はそれ自体の状態をアクティブ状態へ更新する。したがって、エージェントＡのステータス情報４３０は更新されてエージェントＡの票９３２をアクティブとして示し、エージェントＢのステータス情報４４０は更新されてエージェントＢの票９４４をアクティブとして示し、エージェントＣのステータス情報４５０は更新されてエージェントＣの票９５６をアクティブとして示す。各エージェント４１２〜４１６はそれ自体の状態の変更に応じて、ステータス情報を送信して、他のエージェント４１２〜４１６が局所的に維持されるステータス情報４３０、４４０、４５０を更新することができるようにする。したがって、エージェントＢ４１４及びエージェントＣ４１６から更新されたステータス情報を受信した後に、エージェントＡのステータス情報４３０は、エージェントＢの票９３４をアクティブに更新し、エージェントＣの票９３６をアクティブに更新する。全てのエージェント４１２〜４１６の票はエージェントＡのステータス情報４３０にしたがって一致しているため、共有項９３８はアクティブに更新される。エージェントＡ４１２はしたがってその最初のタスク：ドア４０８まで移動するの実行を開始する。
【００４９】
エージェントＡ４１２及びエージェントＣ４１６から更新されたステータス情報を受信した後に、エージェントＢのステータス情報４４０はエージェントＡの票９４２をアクティブに更新し、エージェントＣの票９４６をアクティブに更新する。全てのエージェントの票が一致しているため、エージェントＢのステータス情報４４０の共有項９４８はアクティブに更新される。エージェントＢ４１４は次にドア４０８まで移動するタスクの実行を開始する。更新されたステータス情報をエージェントＡ４１２及びエージェントＡ４１４から受信した後で、エージェントＣのステータス情報４５０はエージェントＡの票９５２をアクティブに更新し、エージェントＢの票９５４をアクティブに更新する。全てのエージェント４１２〜４１６の票が一致しているため、エージェントＣのステータス情報４４０の共有項９５８はアクティブに更新される。エージェントＣ４１６は次に、ドア４０８まで移動するタスクの実行を開始する。
【００５０】
図１０は、Ｔ＝６  １０２２の時点における各エージェント４１２〜４１６を示すブロック図である。Ｔ＝６  １０２２の時点において、エージェントＡ４１２はタスクにおける役割を完了し、ドア４０８へ到達している。したがって、エージェントＡのステータス情報４３０は更新されてエージェントＡの票１０３２を完了として示し、更新されたエージェントＡのステータス情報４３０は他のエージェント４１４、４１６へ送信される。エージェントＢ４１４及びエージェントＣ４１６はタスクにおけるそれらの役割をまだ完了しておらず、したがって、それぞれまだアクティブ状態である。このため、エージェントＡのステータス情報４３０は、エージェントＢの票９３４がアクティブであり、エージェントＣの票９３６がアクティブであることを表示している。エージェントＡのステータス情報４３０の共有項９３８はアクティブのままである。
【００５１】
同様に、エージェントＢのステータス情報４４０は更新されて、エージェントＡの票１０４２を完了していると示すが、エージェントＢの票９４４をアクティブとして、エージェントＣの票９４６をアクティブとして表示する。エージェントＢのステータス情報４４０の共有項９４８はアクティブのままである。エージェントＣのステータス情報４５０は更新されて、エージェントＡの票１０５２を完了として示し、エージェントＢの票９５４をアクティブとして、エージェントＣの票９５６をアクティブとして示す。エージェントＣのステータス情報４５０の共有項９５８はアクティブのままである。
【００５２】
図１１は、Ｔ＝７  １１２２の時点における各エージェント４１２〜４１６を示すブロック図である。Ｔ＝７  １１２２の時点において、エージェントＢ４１４及びエージェントＣ４１６はエージェントＡ４１２と同様にタスクにおけるそれらの役割を完了し、ドア４０８まで到達している。したがって、エージェントＢのステータス情報４４０は更新されてエージェントＢの票１１４４を完了しているとして示し、エージェントＢのステータス情報４４０は他のエージェント４１２、４１６へ送信される。エージェントＣのステータス情報４５０もまた更新されて、エージェントＣの票１１５６を完了しているとして示し、エージェントＣのステータス情報４５０は他のエージェント４１２、４１４へ送信される。
【００５３】
他のエージェント４１４、４１６からの更新されたステータス情報の受信に応答して、エージェントＡのステータス情報４３０は更新されて、エージェントＢの票１１３４を完了しているとして示し、エージェントＣの票１１３６を完了しているとして示す。この結果、エージェントＡのステータス情報４３０の共有項１１３８が完了に更新される。エージェントＢのステータス情報４４０は更新されてエージェントＣの票１１４６を完了しているとして示す。この結果、エージェントＢのステータス情報４４０の共有項１１４８は完了に更新される。エージェントＣのステータス情報４５０は更新されてエージェントＣの票１１５４を完了しているとして示す。この結果、エージェントＣのステータス情報４５０の共有項１１５８は完了に更新される。
【００５４】
図１２は、Ｔ＝８  １２２２の時点における各エージェント４１２〜４１６を示すブロック図である。Ｔ＝８  １２２２の時点において、エージェントＡ４１２はドア４０８を開ける非共有タスクを実行中のアクティブ状態である。ドア４０８を開けるタスクは非共有であるため、タスクは他のエージェント４１４、４１６の助けを得ずに、したがって他のエージェント４１４、４１６の共有項なしでエージェントＡ４１２によって実行可能である。
【００５５】
実例となる実施形態によれば、エージェントＡのステータス情報４３０は更新されて、エージェントＡの票１２３２をアクティブとして示す。エージェントＢの票１２３４及びエージェントＣの票１２３６は、エージェントＢ４１４及びエージェントＣ４１６がエージェントＡ４１２が実行しているタスクに参加していないため、状態を伝達しない。この結果、エージェントＡのステータス情報４３０の共有項１２３８はエージェントＡの票１２３２によってのみ変化する。したがって共有項１２３８はアクティブである。
【００５６】
エージェントＢ４１４及びエージェントＣ４１６はドア４０８を開けるタスクに参加しないが、エージェントＢ４１４及びエージェントＣ４１６はそれでもなお、非共有タスクについてエージェントＡのステータス情報４３０をサブスクライブしうる。エージェントＢ４１４及びエージェントＣ４１６には、オブジェクト４０２に係合しオブジェクト４０２を移動させるタスクが割り当てられている。エージェントＢ４１４及びエージェントＣ４１６は、オブジェクト４０２を移動させるタスクの前提条件として、ドア４０８を開けることをエージェントＡ４１２に依存する。したがって、エージェントＡのステータス情報４３０をサブスクライブすることによって、エージェントＢ４１４及びエージェントＣ４１６はいつドア４０８が開いてエージェントＢ４１４及びエージェントＣ４１６の次のタスクに進むことができるかを判断することができる。他のエージェントのタスクへの一致はしたがって、エージェント４１２〜４１６が、一つのタスクの実行が一以上の他のエージェント４１２〜４１６によって実行されるタスクの完了によって左右される、非共有だが相互依存したタスクを実行することが可能になりうる。
【００５７】
エージェントＢのステータス情報４４０は、エージェントＡのタスク状態１２４２がアクティブであることを表示する。再度、エージェントＢ４１４及びエージェントＣ４１６はエージェントＡ４１２の非共有タスクに参加していないため、エージェントＢの票１２４４及びエージェントＣの票１２４６は状態を表示しない。共有項１２４８はエージェントＡの票１２４２にのみ左右される。エージェントＡの票１２４２がまだアクティブである間、すなわちエージェントＡ４１２がまだドア４０８を開けるプロセスにある時は、エージェントＢ４１４はその次のタスクの実行を待つ。エージェントＡの票１２４２が更新されてエージェントＡ４１２のタスクが完了であることを示すと、エージェントＢ４１４はその次のタスクに進むことができる。同様に、エージェントＣのステータス情報４５０はエージェントＡのタスク状態１２５２がアクティブであることを示す。再度、エージェントＢ４１４及びエージェントＣ４１６はエージェントＡ４１２の非共有タスクに参加していないため、エージェントＢの票１２５４及びエージェントＣの票１２５６は状態を表示しない。共有項１２５８はエージェントＡの票１２４２にのみ左右される。エージェントＡの票１２５２がまだアクティブである間、すなわちエージェントＡ４１２がまだドア４０８を開けるプロセスにある時は、エージェントＣ４１６はその次のタスクの実行を待つ。エージェントＡの票１２５２が更新されてエージェントＡ４１２のタスクが完了であることを示すと、エージェントＣ４１６はその次のタスクに進むことができる。
【００５８】
図１３は、Ｔ＝９  １３２２の時点における各エージェント４１２〜４１６を示すブロック図である。Ｔ＝９  １３２２の時点までには、エージェントＡ４１２はドア４０８を開ける非共有タスクの実行を完了している。したがって、Ｔ＝９  １３２２の時点において、エージェントＢ４１４及びエージェントＣ４１６はオブジェクト４０２を移動させる準備のためにオブジェクト４０２に近づくために部屋Ｘの中へ移動４０４している。
【００５９】
Ｔ＝９  １３２２の時点において、エージェントＢ４１４及びエージェントＣ４１６はエージェントＡ４１２が参加しない共有タスクを実行する。エージェントＡ４１２は、エージェントＢ４１４及びエージェントＣ４１６がオブジェクト４０２に係合し、オブジェクト４０２を移動させ、オブジェクト４０２との係合を解除する間待機し、オブジェクト４０２との係合が解除された時点でエージェントＡ４１２はドア４０８を閉める。したがって、エージェントＢ４１４及びエージェントＣ４１６が、エージェントＡ４１２が参加しない一以上のタスクを実行するのにアクティブである間、エージェントＡ４１２はエージェントＢ４１４及びエージェントＣ４１６によって送信されるステータス情報をサブスクライブして、エージェントＡ４１２がいつ次の動作を実行するかを判断することができる。
【００６０】
前述したようにエージェントＢ４１４及びエージェントＣ４１６が相互にステータス情報を送信すると仮定して、エージェントＢのステータス情報４４０は更新されてエージェントＢの票１３４４とエージェントＣの票１３４６をアクティブとして表示する。エージェントＡの票１３４２はエージェントＡ４１２が現在のタスクに参加していないことを示すために状態を表示しない。エージェントＢのステータス情報４４０の共有項１３４８は、エージェントＡ４１２の状態に関係なく、参加しているエージェントがアクティブであることを示す。エージェントＣのステータス情報４５０は更新されてエージェントＢの票１３５４及びエージェントＣの票１３５６をアクティブとして示す。エージェントＡの票１３５２は状態を表示しない。エージェントＣのステータス情報４５０の共有項１３５８は、エージェントＡ４１２の状態に関係なく、参加しているエージェントをアクティブとして示す。
【００６１】
図１４は、Ｔ＝１０  １４２３の時点、Ｔ＝１２  １４２５の時点、Ｔ＝１２  １４２２の時点における各エージェント１２〜４１６を示すブロック図である。図１４は、ポーズ又は保留信号１４７０を送信することによってタスクをポーズし、レジューム信号１４８０を送信することによってタスクを再開する外部制御電源４２０を示す。
【００６２】
Ｔ＝１０  １４２２の時点において、エージェントＢ４１４はオブジェクト４０２に隣接した目的位置に到達している一方で、エージェントＣ４１６はまだ目的位置に到達していない。エージェントＢ４１４及びエージェントＣ４１６は相互に（エージェントＡ４１２によっても監視されている）ステータス情報を送信する。エージェントＢのステータス情報４４０は更新されてエージェントＢの票１４４４は完了に変更されるが、エージェントＣのステータス情報１３４６はアクティブのままである。エージェントＢの票１４３４は更新されてエージェントＡのステータス情報４３０は完了となり、エージェントＢの票１４５４は更新されてエージェントＣのステータス情報４５０は完了となる。しかしながら、エージェントＣ４１６がそのタスクの一部を完了していないため、共有項１３３８、１３４８、及び１３５８はアクティブのままである。
【００６３】
Ｔ＝１１  １４２３の時点において、外部制御電源４２０はポーズ又は保留信号１４７０を送信する。特定の実例となる実施形態によれば、ポーズ信号１４７０を受信した時に、タスクに参加している全てのアクティブなエージェントはその票をポーズに更新する。したがって、エージェントＣの票１４３６、１４４６、１４５６はポーズに変更される。
【００６４】
図１５は、外部制御電源４２０がキャンセル信号１５７０を送信した後の、Ｔ＝１３  １５２２の時点における各エージェント４１２〜４１６を示すブロック図である。実例となる実施形態によれば、キャンセル信号１５７０が送られたときのエージェントのステータスとは関係なく、エージェント４１２〜４１６は動作を中断する。各エージェント４１２〜４１６はその票をキャンセルに更新し、他のエージェントに更新されたステータス情報４３０、４４０、４５０を送信する。エージェントＡの票１５３２、１５４２、１５５２はキャンセルに更新される。エージェントＢの票１５３４、１５４４、１５５４はキャンセルに更新される。エージェントＣの票１５３６、１５４６、１５５６はキャンセルに更新される。各エージェント４１２〜４１６の共有項１５３８、１５４８、１５５８はキャンセルに更新される。
【００６５】
図１６は、エージェントＣ４１６がタスクの実行に失敗した後の、Ｔ＝１４  １６２２の時点における各エージェント４１２〜４１６を示すブロック図である。図１６に関しては、図１５を参照して説明したように外部制御電源４２０はタスクの実行をキャンセルしておらず、エージェントＣ４１６が失敗する前に、各エージェントがＴ＝１２  １４２５（図１４）の時点におけるのと同じステータスを有していたと仮定される。
【００６６】
エージェントＣ４１６のタスクの実行の失敗は、システムの不具合の結果、外部の状況の結果、又は任意の数の他の要因によるものである可能性がある。エージェントＣ４１６が失敗すると、エージェントＣ４１６はエージェントＣのステータス情報４５０においてエージェントＣの票１６５６を失敗に更新する。エージェントＣのステータス情報４５０は他のエージェントに送信され、これによりエージェントＡのステータス情報４３０が、エージェントＣの票１６３６を失敗に更新する。エージェントＢのステータス情報４４０もまた更新されて、エージェントＣの票１６４６を失敗に更新する。特定の実例となる実施形態によれば、エージェント４１２〜４１６の一つの票が失敗に更新されると、他のエージェントはそれぞれの票を失敗に更新する。したがって、エージェントＡの票１６３２、１６４２、１６５２及びエージェントＢの票１６３４、１６４４、１６５４が失敗に更新される。さらに、各エージェント４１２〜４１６の共有項１６３８、１６４８、１６５８が失敗に更新される。エージェントＣ４１６の失敗に応答して、タスク又はプランを修正するために、外部制御電源４２０を介してステップを採用することができる。
【００６７】
図１７は、Ｔ＝７’  １７２２の時点、Ｔ＝７”  １７２３の時点、及びＴ＝７’’’  １７２５の時点における各エージェント４１２〜４１６を示すブロック図である。図１１を参照すると、Ｔ＝７の時点において、全てのエージェント４１２〜４１６は完了状態に到達し、更新されたステータス情報を相互に通信することにより、共有項１１３８、１１４８、及び１１５８が完了状態を伝達することが可能になる。しかしながら、エージェント４１２〜４１６が状態の更新を非同期的に伝達する場合（例えば、それら自体のステータスの更新に応じて、又は他のエージェント４１２〜４１６からのステータス情報の受信に応答して）があり、エージェント４１２〜４１６が矛盾するステータス情報を受信する可能性がある。図１７に図示する実施例では、Ｔ＝７’  １７２２の時点において、全てのエージェントが完了状態に到達している一方で、エージェントＡ４１２は更新されたステータス情報をエージェントＣ４１６から受信するが、エージェントＢ４１４からは受信しないと仮定する。エージェントＢ４１４はエージェントＡ４１２から更新されたステータス情報を受信しているが、エージェントＣ４１６からは受信していない。エージェントＢ４１４はエージェントＢのステータス情報４４０を更新して、エージェントＢの票１１４４を完了として含める。Ｔ＝７”の時点において、エージェントＡ４１２及びエージェントＢ４１４は、それぞれがまだ他のエージェント４１２〜４１６から更新されたステータス情報を受信していないにも関わらず、最新のステータス情報を送信する。
【００６８】
Ｔ＝７’’’の時点において、エージェントＣ４１６はエージェントＡ４１２及びエージェントＢ４１４から矛盾した更新を受信する。Ｔ＝７’’’の時点において、エージェントＡ４１２及びエージェントＢ４１４は、全てのエージェント４１２〜４１６がそれらのタスクを完了していることを示す更新されたステータス情報を受信しているが、エージェントＣ４１６はこの情報を有していない。その代わりに、エージェントＡ４１２からエージェントＣ４１６が受信した更新されたステータス情報１７７０は、エージェントＡの票１０３２を完了、エージェントＢの票１０３４をアクティブ、エージェントＣの票１１３６を完了として表示する。エージェントＢ４１４からエージェントＣ４１６が受信した更新されたステータス情報１７８０は、エージェントＡの票１０４２を完了、エージェントＢの票１１４４を完了、エージェントＣの票１０４６をアクティブとして表示する。エージェントＣ４１６が一つの更新又はその他を受信するならば、エージェントＣ４１６は不正確な状態に更新されることとなる。図１７の単純な３つのエージェントの実施例では、エージェント４１２〜４１６の状態入力を比較して、伝達されたどのステータス情報が最新のものかを判断することは簡単な作業だが、おびただしい数の非同期更新を送信する多数の広く分散したエージェントを有するシステムにおいては、コンテンツの検査及び比較に基づいた問題の解消は不可能でありうる。
【００６９】
特定の実例となる実施形態では、更新されたステータス情報は最適な複製を利用して非同期的に交換される。最適な複製はバージョニング制御を利用して複数の更新を区別し、いつ更新を受け入れるべきか、無視するべきか、統合するべきかを判断する。実例となる実施形態によれば、バージョニング制御には修正ベクター及び同期ベクターを使用した最適な複製の形態が使用される。
【００７０】
修正ベクターは、更新を行うエージェントがいつ最後にステータス情報を修正したかを表示する。エージェントＡ４１２からの更新されたステータス情報１７７０は、図１０に示すようにＴ＝６の時点において、エージェントＡ４１２が（他のステータス情報への同期を含まない）修正を最後に行ったことを示す修正ベクター１７７２を有する。同期ベクター１７７４は、エージェントＡ４１２が（エージェントＣ４１６からの更新されたステータス情報の受信に応答して）Ｔ＝７’の時点において、ステータス情報を最後に同期化したことを示す。エージェントＢ４１４からの更新されたステータス情報１７８０は、エージェントＢ４１４がエージェントＢの票１１４４を完了に更新した時に、Ｔ＝７’の時点においてステータス情報を最後に修正したことを示す修正ベクター１７８２を有する。同期ベクター１７８４は、エージェントＢ４１４が図１０に示すようにエージェントＡ４１２からの状態更新を受信した際に、Ｔ＝６の時点において別の更新に最後に同期化したことを示す。
【００７１】
修正及び同期ベクターを使用して、一つの更新が別の更新よりもさらに最新のものである時を判断することができる。第２の更新についての修正及び同期ベクターによって識別された更新時間が両方とも第１の更新よりも新しいものである時、第２の更新は第１の更新よりも新しく、第１の更新の差し替えとして使用可能である。第２の更新について修正及び同期ベクターによって記憶された時間が第１の更新のものと同一である場合、更新は等しいものである。しかしながら、修正ベクターによって識別された更新時間が同期ベクターによって識別された更新時間と一致しない時は、解決計画を使用して、一つのベクターが別のものよりもさらに最新のものでありえる時を判断することができる、又は一つのステータス情報セットのさらに最新の入力を以前作成されたステータス情報セットにいつ統合してステータス情報を更新できるかを判断することができる。
【００７２】
図１８は、タスクを実行する際にデバイスを複数のデバイスと連係させる方法１８００の実例となる実施形態のフロー図である。本方法１８００は例えば図１９を参照して説明する制御システム又は図２０を参照し説明する汎用コンピュータシステムによって実行可能である。
【００７３】
１８０２において、更新されたステータス情報はデバイスにおいて記憶され、ここで更新されたステータス情報は複数のデバイスのうちの一以上のデバイスのタスク状態についての票の変更を反映する。第１の更新されたステータスメッセージが複数のデバイスのうちの一以上のデバイスに送信され、ここで第１の更新されたステータスメッセージは第１の更新されたステータス情報を通信する。１８０６において、更新されたステータス情報が、複数のデバイスのうちの所定量のデバイスがタスク状態について一致することを示すとき、デバイスにおいてタスクの共有項が更新される。
【００７４】
図１９は、タスクを実行する際に複数のロボットエージェントを連係させる制御システム１９１０の実例となる実施形態を含むロボットエージェント１９００のブロック図である。ロボットエージェント１９００は、共有タスク又は一連の互いに依存するタスクの実行に参加する多数のロボットエージェントのうちの一つであってよい。ロボットエージェント１９００は、例えば無人機（ＵＡＶ）等のロボットビークル、例えば図４〜１７のロボットエージェント等の移動ロボット、製造工場における組立てロボット、ネットワークオペレーションを監視するロボットソフトウェアエージェント、又は任意の他の種類のロボットエージェントであってよい。
【００７５】
制御システム１９１０は、共有タスク、相互依存タスク、又は非共有タスクであってよいタスクにおける割り当てられた役割を実行するためにロボットエージェント１９００を制御するタスクコントローラ１９２０を含む。図４〜１７の実施例を考慮すると、タスクコントローラはマニピュレーターに係合してオブジェクト又はドアに係合した後に、マニピュレーター又はロボットエージェント１９００全体を動かして、オブジェクトを指定位置に移動させる制御論理を含むことができる。ある実例となる実施形態では、タスクコントローラ１９２０は、ロボットエージェント１９００の割り当てられた役割の実行を開始し、割り当てられた役割の実行の完了を伝達するように構成されている。
【００７６】
ステータスマネージャ１９３０は、ローカルステータス情報１９４０を維持し監視する。前述したように、ローカルステータス情報１９４０は、ロボットエージェント１９００のタスク状態だけでなく、一以上のピアロボットエージェント１９６０のピアタスク状態を含む。ステータスマネージャ１９３０はタスクコントローラ１９２０と通信して、ロボットエージェント１９００のタスク状態に基づきローカルステータス情報１９４０を更新する。例えば、ステータスマネージャ１９３０は、ロボットエージェント１９００のタスク状態についての票が変更された時にステータス情報１９４０を更新する。ステータスマネージャ１９３０はまた、ピアツーピア通信システム１９５０とも通信してピアロボットエージェント１９６０とステータスメッセージ１９５５を交換して、一以上のピアロボットエージェント１９６０のそれぞれのピアタスク状態を判断する。例えば、ステータスマネージャ１９３０は、ステータス情報１９４０が所定量のロボットエージェント１９００と一以上のピアロボットエージェント１９６０がタスク状態について一致していることを示す時に、タスクの共有項を更新することができる。別の実施例として、ステータスマネージャ１９３０は、ステータスメッセージ１９５５が一以上のピアロボットエージェントのタスク状態についての票が変更されたことを伝達した時に、ステータス情報１９４０を更新する。様々な実施形態において、ステータスマネージャ１９３０はまた前述したようにバージョン情報を解析して、ステータスメッセージ１９５５がローカルステータス情報１９４０よりもさらに最新のピアステータス情報を伝達しているか否かを判断することもできる。バージョン情報を解析した後で、ステータスマネージャ１９３０はステータスメッセージ１９５５に基づいてローカルステータス情報１９４０を更新する。
【００７７】
ピアツーピア通信システム１９５０はまた、ステータスマネージャ１９３０との通信に加えて、一以上のピアロボットエージェントからもステータスメッセージを受信する。ピアツーピア通信システム１９５０は、図４〜１７を参照して説明したように、各エージェントによって維持されるステータス情報を通信するピアロボットエージェントからステータスメッセージを受信する。ピアツーピア通信システム１９５０はまた、ローカルステータス情報１９４０が更新された時に、ステータスメッセージを一以上のピアロボットエージェント１９６０に送信してローカルステータス情報を通信するようにも構成されている。
【００７８】
図２０は、図１〜１８に図示されるコンピュータによって実行される方法及びコンピュータが実行可能なプログラム命令の実施形態を実行するのに使用できる汎用コンピュータシステム２０００のブロック図である。ある実例となる実施形態では、コンピュータデバイス２０１０は、一以上の他の自律エージェントと協働して連係タスクを実行するために備えられた自律エージェントを含む。コンピュータデバイス２０１０は通常、少なくとも一つのプロセッサ２０２０を含む。コンピュータデバイス２０１０内部において、プロセッサ２０２０はシステムメモリ２０３０、一以上の記憶デバイス２０４０、一以上の入力／出力デバイス２０６０、及び一以上のネットワークインターフェース２０７０と通信し、コンピュータデバイスは一以上のネットワークインターフェース２０７０を介して一以上の他のコンピュータシステム２０８０と通信する。
【００７９】
システムメモリ２０３０は、例えばランダムアクセスメモリ（ＲＡＭ）デバイス等の揮発性メモリデバイス、例えば読み出し専用メモリ（ＲＯＭ）等の非揮発性メモリデバイス、プログラム可能な読み出し専用メモリ、及びフラッシュメモリを含むことができる。システムメモリ２０３０は通常、全オペレーティングシステムだけでなく、コンピュータデバイス２０１０を起動させる基礎／入出力システムを含むことができるオペレーティングシステム２０３２を含むことにより、コンピュータデバイス２０１０がユーザ、他のプログラム、及び他のコンピュータシステム２０８０と交流することが可能になる。システムメモリ２０３０はまた、例えばタスクの一部である、また同様に共有プランの一部でもあり得る動作の実行において自律エージェントを管理するプログラム等の一以上のアプリケーションプログラム２０３４も通常含む。システムメモリ２０３０はまた、前述したように、例えばローカル自律エージェント、又は一以上の他の自律エージェントについてのステータス情報等のプログラムデータ２０３６も含むことができる。
【００８０】
プロセッサ２０２０はまた、一以上の記憶デバイス２０４０とも通信する。記憶デバイス２０４０は、例えば磁気ディスク、光ディスク、又はフラッシュメモリデバイス等の取り外し可能な非揮発性記憶デバイスを含むことができる。記憶デバイス２０４０はまた、通常一以上の磁気ディスク及び非揮発性メモリを含む取り外しできない記憶デバイスも含むことができる。
【００８１】
プロセッサ２０２０が一以上の入力／出力インターフェース２０５０を介して一以上の入力／出力デバイス２０６０と通信することにより、コンピュータデバイス２０１０がユーザと相互に交流することが可能になる。入力／出力デバイス２０６０は、キーボード、ポインティングデバイス、マイクロホン、スピーカー、及びディスプレイを含むことができる。プロセッサ２０２０がまた一以上のネットワークインターフェース２０７０とも通信することにより、コンピュータデバイス２０１０が、自律エージェントにおいて使用されるように、他の自律エージェントと通信することが可能になる。
【００８２】
図２０に示す、又はその他に前の段落において説明したような全てのコンポーネント又はデバイスは必ずしも本発明の実行を支持するのに必要ではない。例えば、デバイスは、システムを操作するための全てのプログラム及びデータを記憶するフラッシュメモリを含む統合システムメモリ及び記憶デバイスを含むことができる。加えて、全ての入力及び出力をネットワークインターフェース２０７０を介して通信する場合、システムは他の任意の入力／出力インターフェース２０５０又は入力／出力デバイス２０６０を含まない場合がある。
【００８３】
本明細書に開示された実施形態の説明は、それら種々の実施形態の構造の全般的な理解を促すことを目的としている。説明は、本明細書に開示される構造又は方法を利用する装置及びシステムの要素及び特徴の全てを完全に説明することを目的としていない。本開示内容を読めば、当業者には他の多くの実施形態が自明であろう。本開示内容からは他の実施形態を利用及び獲得することができ、例えば本発明の範囲から逸脱することなく、構造的及び理論的置換と変更とを行うことができる。例えば、方法のステップを、図面に示す順序とは異なる順序で実行することができ、或いは一又は複数の方法ステップを省略することができる。したがって、本明細書及び添付図面は、制限的なものではなく、例示的なものである。
【００８４】
更に、ここでは特定の実施形態を例示して説明したが、開示した特定の実施形態を、同じ又は類似の結果を達成するために後で設計されるあらゆる構成で置き換えることができる。本明細書は、種々の実施形態に後で行われる全ての変更又は変形例を含むことを意図している。本開示内容を読めば、当業者には、上述の実施形態の組み合わせ、及び本明細書には具体的には記載していないその他の実施形態が自明であろう。
【００８５】
本出願の要約書は、特許請求の範囲又は意味を文字通りに解釈するものではなく、また制限するものでもない。加えて、上述の詳細な説明、種々の特徴は、本開示内容を合理化する目的で、一つにまとめる、或いは単一の実施形態として説明することができる。本開示内容は、特許請求される実施形態が、各請求項に明記されている特徴の他に更なる特徴を必要としていることを意味するものではない。そうではなく、特許請求の範囲に記載するように、特許請求の主題は、開示された任意の実施形態の全ての特徴のうちの一部を目的とするものである。
また、本発明は以下に記載する態様を含む。
（態様１）
タスクを実行する際に複数のデバイスを連係させる、コンピュータによって実行される方法であって：
デバイスにおいて、複数のデバイスのうちの一以上のデバイスのタスク状態についての票の変更を反映する、更新されたステータス情報を記憶し；
前記複数のデバイスのうちの一以上のデバイスへ、更新されたステータス情報を通信する第１の更新されたステータスメッセージを送信し；
前記更新されたステータス情報が複数のデバイスのうちの少なくとも所定量のデバイスがタスクステータスについて一致したことを示す時に、デバイスのタスク共有項を更新する
ことを含む方法。
（態様２）
更新されたステータス情報が前記複数のデバイスのうちの一つのデバイスからの第２の更新されたステータスメッセージの受信に応じて作成され、前記第２の更新されたステータスメッセージが前記複数のデバイスのうちの一以上のデバイスのタスク状態についての票が変更されたことを示す、態様１に記載のコンピュータによって実行される方法。
（態様３）
更新されたステータス情報が、デバイスのタスク状態についての票の変更に応じて作成される、態様１に記載のコンピュータによって実行される方法。
（態様４）
所定量のデバイスには、アクティブな前記複数のデバイス全てが含まれる、態様１に記載のコンピュータによって実行される方法。
（態様５）
所定量のデバイスには、前記複数のデバイスのうちの所定数のデバイスが含まれる、態様１に記載のコンピュータによって実行される方法。
（態様６）
第１の更新されたステータスメッセージがピアツーピア通信を介して送信される、態様１に記載のコンピュータによって実行される方法。
（態様７）
第１の更新されたステータスメッセージが最適な複製を使用して配分される、態様６に記載のコンピュータによって実行される方法。
（態様８）
第１の更新されたステータスメッセージには、第１の更新されたステータスメッセージと他の更新されたステータスメッセージの間の矛盾を解消する修正ベクター及び同期ベクターが含まれる、態様７に記載のコンピュータによって実行される方法。
（態様９）
前記複数のデバイスのうちの識別されたデバイスのタスクステータスが下記：
前記識別されたデバイスがタスクにおいて割り当てられた役割を実行する準備ができたことを示すレディステータス；
前記識別されたデバイスがタスクにおいて割り当てられた役割を実行していることを示すアクティブステータス；及び
前記識別されたデバイスがタスクにおいて割り当てられた役割の実行を完了したことを示す完了ステータス
のうちの一つを含む、態様１に記載のコンピュータによって実行される方法。
（態様１０）
識別されたデバイスが：
タスク共有項が、前記複数のデバイスのうちの所定量のデバイスがレディステータスについて一致する共有項に到達したことを示す；及び
外部制御電源からの信号の受信に応答する
のいずれかの時に、アクティブステータスへ遷移する、態様９に記載のコンピュータによって実行される方法。
（態様１１）
更新されたステータス情報が：
タスクの実行が外部制御電源によってポーズされたことを示すポーズステータス；
タスクが前記複数のデバイスのうちの一以上のデバイスによって実行可能ではなかったことを示す失敗ステータス；及び
タスクの実行が外部制御電源によってキャンセルされたことを示すキャンセルステータス
のうちの一つを含む、態様１に記載のコンピュータによって実行される方法。
（態様１２）
ロボットエージェントを制御する制御システムであって：
タスクの割り当てられた役割を実行する際にロボットエージェントを制御するタスクコントローラであって、割り当てられた役割の実行を開始し、割り当てられた役割の実行の完了を伝達するタスクコントローラと、
タスクコントローラと通信するステータスマネージャであって、ロボットエージェントに記憶され下記：
ロボットエージェント；及び
一以上のピアロボットエージェントの各々
のタスク状態についての票を含むステータス情報を更新するステータスマネージャと、
ステータスマネージャと通信するピアツーピア通信システムであって、
一以上のピアロボットエージェントのうちの少なくとも一つから、一以上のピアロボットエージェントのうちの一つによって伝達されたピアステータス情報を含む第１のステータスメッセージを受信し、
ロボットエージェントに記憶されたステータス情報を含む第２のステータスメッセージを一以上のピアロボットエージェントに送信する、ピアツーピア通信システムと
を含む制御システム。
（態様１３）
ステータス情報が所定量のロボットエージェントと一以上のピアロボットエージェントがタスクステータスについて一致することを示す時に、ステータスマネージャがタスク共有項を更新する、態様１２に記載の制御システム。
（態様１４）
ロボットエージェントのタスク状態についての票が変更された時に、ステータスマネージャがステータス情報を更新する、態様１２に記載の制御システム。
（態様１５）
第１のステータスメッセージが一以上のピアロボットエージェントのうちの少なくとも一つのタスク状態についての票が変更されたことを伝達するときに、ステータスマネージャがステータス情報を更新する、態様１２に記載の制御システム。
（態様１６）
ステータスマネージャが、第１のステータスメッセージに基づいてステータス情報を更新する前に、第１のステータスメッセージに関連するバージョン情報を解析して、第１のステータスメッセージがステータス情報よりもさらに最新のピアステータス情報を伝達しているか否かを判断する、態様１５に記載の制御システム。
（態様１７）
ステータスマネージャのステータス情報の更新に応答して、ピアツーピア通信システムが第２のステータスメッセージを送信する、態様１５に記載の制御システム。
（態様１８）
タスクに関連する各ローカルエージェントと一以上のピアエージェントのタスク状態についての票を示すステータス情報を記憶し、
ローカルエージェント及び一以上のピアエージェントのうちの少なくとも一つのタスク状態についての票の変更を識別し、
タスク状態についての票の変更を反映させるためにステータス情報を更新し、
更新されたステータス情報を一以上のピアエージェントのうちの一以上のエージェントに送信するためにステータスメッセージを送信し、
ステータス情報が特定量のローカルエージェント及び一以上のピアエージェントがタスクステータスについて一致することを示しているか否かに基づいてタスク共有項を判断する
ためにコンピュータシステムによって実行可能な命令を記憶する、コンピュータによって読み取り可能な記憶媒体。
（態様１９）
タスク共有項における変更に応答してタスクに関連する動作を実行するためにコンピュータシステムによって実行可能な命令をさらに含む、態様１８に記載のコンピュータによって読み取り可能な記憶媒体。
（態様２０）
ステータスメッセージが最適な複製を使用して一以上のピアエージェントに送信される、態様１８に記載のコンピュータによって読み取り可能な記憶媒体。
【図１】
0005814231.tif 000002
【図２】
0005814231.tif 000003
【図３】
0005814231.tif 000004
【図４】
0005814231.tif 000005
【図５】
0005814231.tif 000006
【図６】
0005814231.tif 000007
【図７】
0005814231.tif 000008
【図８】
0005814231.tif 000009
【図９】
0005814231.tif 000010
【図１０】
0005814231.tif 000011
【図１１】
0005814231.tif 000012
【図１２】
0005814231.tif 000013
【図１３】
0005814231.tif 000014
【図１４】
0005814231.tif 000015
【図１５】
0005814231.tif 000016
【図１６】
0005814231.tif 000017
【図１７】
0005814231.tif 000018
【図１８】
0005814231.tif 000019
【図１９】
0005814231.tif 000020
【図２０】
0005814231.tif 000021