(57)【要約】      （修正有）【課題】ロボットクラスターにおけるフォールト・トレラントな地図構築（ＳＬＡＭ）のための技術を提供する。【解決手段】ロボット位置推定および地図構築（ＳＬＡＭ）が、リソースが制約されたロボットクラスターにおいて実行され、分散型ＳＬＡＭが、信頼性のある方法で、かつ、リーダーロボットが故障した場合に自己修復可能に実行される。フォールト・トレランスを確保するために、複数のロボットが、時系列分析によって、それら自身の故障確率を見出し、さらに、それを用いて、分散型の方法によって、クラスター信頼性を向上させることができるようになっている。【選択図】図１
2019028988.tif 000002
【特許請求の範囲】
【請求項１】
ロボットクラスターの少なくとも一部によって、分散型同時位置推定および地図構築（ＳＬＡＭ）を受信する工程であって、前記ロボットクラスターは、リーダーロボットと、複数のメンバーロボットとを含み、前記複数のメンバーロボットは、複数の作業ロボットと、複数の待機ロボットとを含む、前記分散型ＳＬＡＭを受信する工程と、
前記分散型ＳＬＡＭの複数のタスクを実行している間に、関連コンポーネントに基づいて、前記リーダーロボットの信頼性を算出する工程と、
前記リーダーロボットによる前記リーダーロボットの前記複数のタスクのそれぞれの自己タスク完了タイム（ＳＴＣＴ）値、および、前記リーダーロボットの前記信頼性が所定のしきい値未満であるときの前記複数の作業ロボットのそれぞれによる前記リーダーロボットの前記複数のタスクのそれぞれのリーダータスク完了タイム（ＬＴＣＴ）値の少なくとも１つを判別する工程と、
判別された前記ＬＴＣＴ値および前記ＳＴＣＴ値の少なくとも１つに基づいて、前記リーダーロボットの故障を予測する工程と、
前記リーダーロボットの前記故障を予測した際に、前記複数のメンバーロボットの１つに対して、前記リーダーロボットの前記複数のタスクの譲渡を実行することにより、フォールト・トレラントな分散型ＳＬＡＭを実行する工程と、を含むことを特徴とするプロセッサー実施方法。
【請求項２】
前記作業ロボットの前記ＬＴＣＴ値は、タスクを終了させるために、前記リーダーロボットのために前記作業ロボットが待機する時間に基づいて増加し、さらに、前記リーダーロボットの前記ＳＴＣＴ値は、タスクを実行するために、前記リーダーロボットによって費やされる時間に基づいて増加する請求項１に記載の方法。
【請求項３】
判別された前記ＬＴＣＴ値および前記ＳＴＣＴ値の少なくとも１つに基づいて、前記リーダーロボットの前記故障を予測する前記工程は、
前記複数の作業ロボットのそれぞれの前記ＳＴＣＴ値が所定のＳＴＣＴ限界値よりも大きいときに、前記リーダーロボットの前記故障を予測する工程と、
前記リーダーロボットの前記ＬＴＣＴ値が所定のＬＴＣＴ限界値よりも大きいときに、前記リーダーロボットの前記故障を予測する工程とのいずれか一方を実行する工程を含む請求項１に記載の方法。
【請求項４】
前記リーダーロボットの前記故障を予測した際に、前記複数のメンバーロボットの前記１つに対して、前記リーダーロボットの前記複数のタスクの譲渡を実行する前記工程は、
前記複数の作業ロボットのそれぞれの前記ＬＴＣＴ値に基づいて、前記リーダーロボットの前記故障が予測されたときに、前記複数のメンバーロボットの前記１つによって、前記リーダーロボットの前記複数のタスクを引き継ぐ工程と、
前記リーダーロボットの前記ＳＴＣＴ値に基づいて、前記リーダーロボットの前記故障が予測されたときに、前記リーダーロボットによって、前記複数のメンバーロボットの前記１つに対して、前記リーダーロボットの前記複数のタスクを割り当てる工程とのいずれか一方を実行する工程を含む請求項１に記載の方法。
【請求項５】
前記複数のメンバーロボットの前記１つに対して、前記リーダーロボットの前記複数のタスクの譲渡を実行する前記工程は、
前記分散型ＳＬＡＭを実行している間に、関連コンポーネントに基づいて、前記複数のメンバーロボットのそれぞれの信頼性を算出する工程と、
前記関連する算出された信頼性に基づいて、前記複数のメンバーロボットのそれぞれの待機スコアを算出する工程と、
対応する待機スコアに基づいて、前記複数のメンバーロボットの前記１つに対して、前記リーダーロボットの前記複数のタスクの譲渡を実行する工程と、を含む請求項１に記載の方法。
【請求項６】
前記対応する待機スコアに基づいて、前記複数のメンバーロボットの前記１つに対して、前記リーダーロボットの前記複数のタスクの譲渡を実行する前記工程は、
前記複数のメンバーロボットの最小の待機スコアを有する前記１つに対して、前記リーダーロボットの前記複数のタスクの譲渡を実行する工程を含む請求項５に記載の方法。
【請求項７】
システムであって、
クラウドベース基盤と、
前記クラウドベース基盤に通信可能に接続されたロボットクラスターと、を含み、
前記ロボットクラスターは、リーダーロボットと、複数の作業ロボットおよび複数の待機ロボットを有する複数のメンバーロボットとを含み、
前記リーダーロボットおよび前記複数のメンバーロボットのそれぞれは、前記クラウドベース基盤から、分散型同時位置推定および地図構築（ＳＬＡＭ）を受信し、
前記リーダーロボットおよび前記複数のメンバーロボットは、前記分散型ＳＬＡＭを実行している間に、関連コンポーネントに基づいて、信頼性を算出し、
前記複数の作業ロボットのそれぞれが、前記リーダーロボットの前記信頼性が所定のしきい値未満であるときのタスクの対応するリーダータスク完了タイム（ＬＴＣＴ）値を判別し、または、前記リーダーロボットが、対応する自己タスク完了タイム（ＳＴＣＴ）値を判別し、
前記システムは、
前記複数の作業ロボットの前記ＬＴＣＴ値が所定のＬＴＣＴ限界値よりも大きいときには、前記複数のメンバーロボットの１つが前記リーダーロボットの故障を予測し、前記リーダーロボットの複数のタスクを引き継ぐ工程と、
対応する前記ＳＴＣＴ値が所定のＳＴＣＴ限界値よりも大きいときには、前記リーダーロボットが、前記故障を予測し、前記リーダーロボットの前記複数のタスクを、前記複数のメンバーロボットの１つに割り当てる工程との一方を実行することにより、フォールト・トレラントなＳＬＡＭを実行することを特徴とするシステム。
【請求項８】
前記作業ロボットの前記ＬＴＣＴ値は、タスクを終了させるために、前記リーダーロボットのために前記作業ロボットが待機する時間に基づいて増加し、さらに、前記リーダーロボットの前記ＳＴＣＴ値は、タスクを実行するために、前記リーダーロボットによって費やされる時間に基づいて増加する請求項７に記載のシステム。
【請求項９】
前記複数のメンバーロボットのそれぞれは、前記関連する算出された信頼性に基づいて、対応する待機スコアを算出し、さらに、前記複数のメンバーロボットの最小の待機スコアを有する前記１つが、前記リーダーロボットの前記複数のタスクを引き継ぐ請求項７に記載のシステム。
【請求項１０】
演算デバイスにおいて実行可能なプログラムを具体化している非一時的コンピューター可読媒体であって、
前記プログラムは、
ロボットクラスターの少なくとも一部によって分散型同時位置推定および地図構築（ＳＬＡＭ）を受信するためのプログラムコードであって、前記ロボットクラスターは、リーダーロボットと、複数のメンバーロボットとを含み、前記複数のメンバーロボットは、複数の作業ロボットと、複数の待機ロボットとを含む、前記分散型ＳＬＡＭを受信するためのプログラムコードと、
前記分散型ＳＬＡＭの複数のタスクを実行している間に、関連コンポーネントに基づいて、前記リーダーロボットの信頼性を算出するためのプログラムコードと、
前記リーダーロボットによる前記リーダーロボットの前記複数のタスクのそれぞれの自己タスク完了タイム（ＳＴＣＴ）値、および、前記リーダーロボットの前記信頼性が所定のしきい値未満であるときの前記複数の作業ロボットのそれぞれによる前記リーダーロボットの前記複数のタスクのそれぞれのリーダータスク完了タイム（ＬＴＣＴ）値の少なくとも１つを判別するためのプログラムコードと、
判別された前記ＬＴＣＴ値および前記ＳＴＣＴ値の少なくとも１つに基づいて、前記リーダーロボットの故障を予測するためのプログラムコードと、
前記リーダーロボットの前記故障を予測した際に、前記複数のメンバーロボットの１つに対して、前記リーダーロボットの前記複数のタスクの譲渡を実行することにより、フォールト・トレラントな分散型ＳＬＡＭを実行するためのプログラムコードと、を含むことを特徴とする非一時的コンピューター可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
優先権の主張
本特許出願は、２０１７年７月２６日付けで出願されたインド国特許出願Ｎｏ．２０１７２１０２６５５０に基づく優先権を主張する。上述の出願の内容の全てが、参照によりここに援用される。
【０００２】
本明細書に開示の発明は、一般的に、ロボットクラスターにおける同時位置推定および地図構築（ＳＬＡＭ：Simultaneous Localization And Mapping）に関し、より具体的には、ロボットクラスターにおけるフォールト・トレラント（fault-tolerant）なＳＬＡＭに関する。
【背景技術】
【０００３】
一般に、複数の自律ロボットは、環境の共同地図を構築し、さらに、自身の相対的な位置を推定する能力（一般的に、同時位置推定および地図構築（ＳＬＡＭ）問題と称される）を有している。コモディテーハードウェア（大部分の想定では、特定の目的のために特化したハードウェア）を、交換するに高いコストを要する時代において、クラウド・ロボット・ミドルウェアにおけるソフトウェア信頼性は、ＳＬＡＭの軽量な分散型実行、低コストの複数のロボット、および複数のネットワークエッジデバイスを可能とする。しかしながら、重大任務における複数ロボットシステムの機能を達成するためには、ハードウェア故障およびクラウドサーバーへの接続障害に直面したときに、機能全体がスムーズに低下するような（degrades gracefully）、ミドルウェアの復元（resilience）が必要となる。複数ロボット協調ＳＬＡＭ（multi-robot cooperative SLAM）が信頼性を提供するとしても、異なるロボットによって構築される複数の地図の方向合わせや統合（合併）は、プロセスおよびメモリーの双方の面において集中的なタスクであり、そのため、ロボットクラスターへの応用に適したものではない。また、最上位の（primary）ロボットの故障は、地図構築プロセスを終了させ、ＳＬＡＭプロセスの失敗に繋がってしまう。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の実施形態は、従来のシステムにおいて、本発明者らによって認識されている１つまたは複数の上述の技術的問題に対する解決法として、技術的改良を提供するものである。前述のように、ここに詳述される実施形態は、ロボットクラスターにおけるファールト・トレラントな同時位置推定および地図構築のための方法およびシステムを提供する。
【０００５】
実施形態の１つにおいて、プロセッサー実施方法（processor-implemented method）は、ロボットクラスターの少なくとも一部によって、分散型同時位置推定および地図構築（ＳＬＡＭ）を受信する工程を含む。ここで、ロボットクラスターは、リーダーロボットと、複数のメンバーロボットとを含み、複数のメンバーロボットは、複数の作業ロボットと、複数の作業ロボットが順番でなる、いくつかの待機ロボットとを含む。プロセッサー実施方法は、さらに、分散型ＳＬＡＭの複数のタスクを実行している間に、関連コンポーネント（associated components）に基づいて、リーダーロボットの信頼性を算出する工程を含む。プロセッサー実施方法は、さらに、リーダーロボットによるリーダーロボットの複数のそれぞれのタスクの自己タスク完了タイム（ＳＴＣＴ：Self-Task Completion Time）値、および、リーダーロボットの信頼性が所定のしきい値未満であるときの複数の作業ロボットのそれぞれによるリーダーロボットの複数のタスクのそれぞれのリーダータスク完了タイム（ＬＴＣＴ：Leader’s Task Completion time）値の少なくとも１つを判別する工程を含む。プロセッサー実施方法は、さらに、判別されたＬＴＣＴ値およびＳＴＣＴ値の少なくとも１つに基づいて、リーダーロボットの故障を予測する工程を含む。プロセッサー実施方法は、さらに、リーダーロボットの故障を予測した際に、複数のメンバーロボットの１つに対して、リーダーロボットの複数のタスクの譲渡を実行することにより、フォールト・トレラントな分散型ＳＬＡＭを実行する工程を含む。
【０００６】
異なる実施形態において、ロボットクラスターにおけるフォールト・トレラントなＳＬＡＭのためのシステムが提供される。システムは、クラウドベース基盤（could based infrastructure）と、クラウドベース基盤に通信可能に接続されたロボットクラスターとを含む。ここで、ロボットクラスターは、リーダーロボットと、複数の作業ロボットおよび複数の作業ロボットが順番でなる、いくつかの待機ロボットを有する複数のメンバーロボットとを含む。リーダーロボットおよび複数の作業ロボットのそれぞれは、クラウドベース基盤から分散型同時位置推定および地図構築（ＳＬＡＭ）を受信する。リーダーロボットおよび複数の作業ロボットは、分散型ＳＬＡＭを実行している間に、関連コンポーネントに基づいて、信頼性を算出する。複数の作業ロボットのそれぞれが、リーダーロボットの信頼性が所定のしきい値未満であるときのタスクの対応するリーダータスク完了タイム（ＬＴＣＴ）値を判別する、または、リーダーロボットが対応する自己タスク完了タイム（ＳＴＣＴ）値を判別する。システムは、複数の作業ロボットのＬＴＣＴ値が所定のＬＴＣＴ限界値よりも大きいときには、複数のメンバーロボットの１つがリーダーロボットの故障を予測し、リーダーロボットの複数のタスクを引き継ぐ工程と、対応するＳＴＣＴ値が所定のＳＴＣＴ限界値よりも大きいときには、リーダーロボットが故障を予測し、リーダーロボットの複数のタスクを、複数のメンバーロボットの１つに対して割り当てる工程の一方を実行することにより、フォールト・トレラントなＳＬＡＭを実行する。
【０００７】
異なる実施形態において、ロボットクラスターにおけるフォールト・トレラントなＳＬＡＭのための方法を実行するためのコンピュータープログラムを具体化（embody）している非一時的コンピューター可読媒体（non-transitory computer-readable medium）が提供される。方法は、ロボットクラスターの少なくとも一部によって分散型同時位置推定および地図構築（ＳＬＡＭ）を受信する工程を含む。ここで、ロボットクラスターは、リーダーロボットと、複数のメンバーロボットとを含み、複数のメンバーロボットは、複数の作業ロボットと、複数の作業ロボットが順番でなる、いくつかの待機ロボットとを含む。方法は、さらに、分散型ＳＬＡＭの複数のタスクを実行している間に、関連コンポーネントに基づいて、リーダーロボットの信頼性を算出する工程を含む。方法は、さらに、リーダーロボットによるリーダーロボットの複数のタスクのそれぞれの自己タスク完了タイム（ＳＴＣＴ：Self-Task Completion Time）値、および、リーダーロボットの信頼性が所定のしきい値未満であるときの複数の作業ロボットのそれぞれによるリーダーロボットの複数のタスクのそれぞれのリーダータスク完了タイム（ＬＴＣＴ：Leader’s Task Completion time）値の少なくとも１つを判別する工程を含む。方法は、さらに、判別されたＬＴＣＴ値およびＳＴＣＴ値の少なくとも１つに基づいて、リーダーロボットの故障を予測する工程を含む。方法は、さらに、リーダーロボットの故障を予測した際に、複数のメンバーロボットの１つに対して、リーダーロボットの複数のタスクの譲渡を実行することにより、フォールト・トレラントな分散型ＳＬＡＭを実行する工程を含む。
【０００８】
上記概要の記載および以下の詳細な説明の双方は例示および説明のためのものであって、特許請求の範囲のように、本発明の限定となるものではないことは理解すべきである。
【図面の簡単な説明】
【０００９】
本明細書に組み入れられ、本開示の一部を構成する添付の図面は、以下の詳細な説明とともに例示的な実施形態を説明し、開示の原理を説明するためのものである。
【００１０】
【図１】図１は、例示的な実施形態に係る、ロボットクラスターにおけるフォールト・トレラントな位置推定および地図構築（ＳＬＡＭ）のためのシステムのブロック図を示している。
【００１１】
【図２】図２は、例示的な実施形態に係る、ロボットの複数のクラスを協働させるためのシーケンス図を示している。
【００１２】
【図３Ａ】図３Ａは、例示的な実施形態に係る、リーダーのワークフローを引き継ぐメンバーロボットを示している。
【図３Ｂ】図３Ｂは、例示的な実施形態に係る、リーダーのワークフローを引き継ぐメンバーロボットを示している。
【図３Ｃ】図３Ｃは、例示的な実施形態に係る、リーダーのワークフローを引き継ぐメンバーロボットを示している。
【００１３】
【図４Ａ】図４Ａは、例示的な実施形態に係る、リーダーのワークフローを、メンバーロボットへ割り当てするリーダーロボットを示している。
【図４Ｂ】図４Ｂは、例示的な実施形態に係る、リーダーのワークフローを、メンバーロボットへ割り当てするリーダーロボットを示している。
【００１４】
【図５】図５は、例示的な実施形態に係る、ロボットクラスターにおけるフォールト・トレラントなＳＬＡＭのための方法のフロー図を示している。
【００１５】
本分野における当業者であれば、本発明の原理を具体化する図示のシステムおよびデバイスの概念図を表す任意のブロック図を適切に理解できるであろう。同様に、任意のフローチャート、フロー図等が、コンピューター可読媒体において実質的に表され、（コンピューターまたはプロセッサーが明示的に示されているか否かに関わりなく）コンピューターまたはプロセッサーによって実行される様々な処理を表すことは適切に理解されるであろう。
【発明を実施するための形態】
【００１６】
添付の図面を参照して例示的な実施形態が記述される。各図面中において、参照番号の左端の桁の数字は、その参照番号が最初に現れる図面の番号を特定している。各図面において、同様の特徴およびモジュールに対して、一貫して同じ参照番号が用いられている。利便性のため、各図を通じて、同じまたは同様の要素には、同じ参照番号が用いられている。開示の原理の例および特徴がここに記述されるが、開示の実施形態の原理および範囲から逸脱することなく、変形、変更、および他の実施が可能である。以下の詳細な説明は、例示のためにのみ提供されるものであり、本発明の正確な範囲および原理は、特許請求の範囲によって示されている。
【００１７】
ロボットクラスターにおけるフォールト・トレラントな同時位置推定および地図構築（ＳＬＡＭ）のための技術が開示される。この技術では、ロボットの位置推定および地図構築（ＳＬＡＭ）が、リソースが制約されたロボットクラスターにおいて実行され、分散型ＳＬＡＭが、信頼性のある方法で、かつ、活動中のロボットの故障が発生した場合に自己修復可能に実行される。フォールト・トレランスを保証するため、モーター、ベアリング、およびセンサーを含むがこれに限定されない複数の内部コンポーネントの時系列解析により、複数のロボットが、それら自身の故障確率を見出し、さらに、それを用いて、分散型の方法（distributed manner）によって、クラスター信頼性を向上させることができるようになっている。
【００１８】
本発明の方法およびシステムは、本明細書に記述される特定の実施形態に限定されるものではない。加えて、本発明の方法およびシステムは、本明細書に記述される他のモジュールおよび方法から独立および別個に実施することができる。各デバイス要素／モジュールおよび方法は、他の要素／モジュールおよび他の方法と組み合わせて用いることもできる。
【００１９】
ロボットクラスターにおけるフォールト・トレラントなＳＬＡＭのためのシステムおよび方法を実施するための態様が、図１〜５を参照して詳述される。記述されるロボットクラスターにおけるフォールト・トレラントなＳＬＡＭのための方法およびシステムの態様は、任意の数の異なるシステム、実行環境、および／または設定において実施可能であるが、以下の例示的なシステムの文脈において、実施形態が記述される。
【００２０】
図１は、例示的な実施形態にかかる、ロボットクラスターにおけるフォールト・トレラントなＳＬＡＭのための方法１００のブロック図を示している。図１に示すように、システム１００は、クラウド基盤（cloud infrastructure）１０２と、クラウド基盤１０２に通信可能に接続されたロボットクラスター１０４とを含む。さらに、ロボットクラスター１０４は、複数のロボット１０６Ａ−Ｎを含んでいる。いくつかの例において、複数のロボットは、リーダーロボットと、複数の作業ロボットと、複数の作業ロボットが順番でなる、いくつかの待機ロボットとを含んでいる。
【００２１】
複数のロボット１０６Ａ−Ｎは、プロセッサーのような１つまたは複数のハードウェアプロセッサー、１つまたは複数のメモリー、およびネットワークインターフェースユニットのようなネットワークインターフェースユニットを含んでいる、または、それらと通信可能となっている。１つの実施形態において、プロセッサー、メモリー、およびネットワークインターフェースユニットは、システムバスや同様の機構によって接続されている。プロセッサーは、回路実施、特に、通信に関連する音声および論理機能を備えている。例えば、プロセッサーは、これに限定されるものではないが、１つまたは複数のデジタル信号プロセッサー（ＤＳＰｓ）、１つまたは複数のマイクロプロセッサー、１つまたは複数の特殊用途コンピューターチップ、１つまたは複数のフィールドプログラマブルゲートアレイ（ＦＰＧＡｓ）、１つまたは複数の特定用途向け集積回路（ＡＳＩＣｓ）、１つまたは複数のコンピューター、様々なアナログ−デジタルコンバーター、デジタル−アナログコンバーター、および／またはその他のサポート回路を含む。また、プロセッサーは、メッセージおよび／またはデータ、または、情報をエンコードする機能を備えていてもよい。プロセッサーは、特に、プロセッサーの動作をサポートするよう構成されたクロック、演算論理ユニット（ＡＬＵ）、および論理ゲートを含んでいてもよい。さらに、プロセッサーは、プロセッサーがアクセス可能なメモリーまたは他の媒体内に保存された１つまたは複数のソフトウェアプログラムを実行する機能を含んでいてもよい。
【００２２】
「プロセッサー」とラベル付けされた任意の機能ブロックを含む、図中に示される様々な要素の機能は、専用ハードウェア（dedicated hardware）の使用と同様、適切なソフトウェアと協働してソフトウェアを実行可能なハードウェアの使用として提供されていてもよい。プロセッサーによって提供されるのであれば、機能は、単一の専用ハードウェア、単一の共有ハードウェア、または複数の個別プロセッサー（そのうちいくつかは、共有されていてもよい）によって、提供することができる。さらに、用語「プロセッサー」の明示的な使用は、ソフトウェアを実行可能なハードウェアに対する排他を意味することを構成するものではなく、ＤＳＰハードウェアに限定されず、暗示的に、ネットワークプロセッサー、特定用途向け集積回路（ＡＳＩＣ）、ＦＰＧＡ、ソフトウェアを保存するためのリードオンリーメモリー（ＲＯＭ）、ランダムアクセスメモリー（ＲＡＭ）、および不揮発性記憶媒体がこれに含まれる。従来および／または一般的な他のハードウェアも、これに含まれる。
【００２３】
インターフェースは、様々なソフトウェアおよびハードウェアインターフェースを含み、例えば、キーボード、マウス、外部メモリー、およびプリンターのような周辺デバイスのためのインターフェースを含む。インターフェースは、有線ネットワーク（例えば、ローカルエリアネットワーク（ＬＡＮ）、ケーブル等）および無線ネットワーク（例えば、無線ＬＡＮ（ＷＬＡＮ）、セルラー、または衛星）を含む様々なネットワークおよびプロトコルタイプにおける相互通信を容易にすることができる。
【００２４】
メモリーのような１つまたは複数のメモリーは、システムの機能を実施するためにシステムによって用いられる任意の数の情報およびデータを保存している。メモリーは、例えば、揮発性メモリーおよび／または不揮発性メモリーを含む。揮発性メモリーの例としては、これに限定されるものではないが、揮発性ランダムアクセスメモリーが挙げられる。不揮発性メモリーは、追加的または代替的に、電気的消去可能プログラム可能リードオンリーメモリー（ＥＥＰＲＯＭ）、フラッシュメモリー、ハードドライブ等を含む。揮発性メモリーのいくつかの例は、これに限定されるものではないが、ランダムアクセスメモリー、動的ランダムアクセスメモリー、静的ランダムアクセスメモリー等を含む。不揮発性メモリーのいくつかの例は、これに限定されるものではないが、ハードディスク、磁気テープ、光学ディスク、プログラム可能リードオンリーメモリー、消去可能プログラム可能リードオンリーメモリー、電気的消去可能リードオンリーメモリー、電気的消去可能プログラム可能リードオンリーメモリー、フラッシュメモリー等を含む。メモリーは、対応するロボットが、様々な例示的な実施形態に係る様々な機能を実行することを可能とするための情報、データ、アプリケーション、命令等を保存するよう構成されていてもよい。追加的または代替的に、メモリーは、プロセッサーによって実行されたときに、対応するロボットに、様々な実施形態で記述されるような方法における動作を実行させる複数の命令を保存するよう構成されていてもよい。メモリーは、特定のタスクを実行または特定の抽象データ型を実施するルーティーン、プログラム、オブジェクト、コンポーネント、データ構造等を含む。また、メモリーは、対応するロボットのアプリケーションおよび機能を補う複数のプログラムまたはコード化命令を含んでいてもよい。
【００２５】
動作中において、クラウド基盤１０２は、ＳＬＡＭを配布および並列処理し、ロボットクラスター１０４におけるＳＬＡＭの実行を信頼性の高いものとする。一般的に、ＳＬＡＭは、未知の環境を探索する複数のロボット１０６Ａ−Ｎ用の１次要求（primary requirement）であり、ロボットミドルウェアに組み込まれている。例えば、標準的なロボットのワークフローにおいて、１つのロボットが、車両から荷下ろしを実行し、コンベアベルト上に荷を置き（タスク１）、さらに、別のロボットが、ベルトから荷をピックアップし、荷をラック（棚）に置く（タスク２）。タスク１とタスク２は別々のタスクであるので、２つの別々のロボットにこれらを割り当てることができる。ＳＬＡＭが個々のロボットのミドルウェア内に組み込まれているので、複数のタスクを単純にセグメント化（区分け）することができ、１つのロボットのＳＬＡＭの一部を他のロボットに割り当てることができる。このワークフローを信頼性の高いものとするために、修正スキャンベースのＳＬＡＭ（modified scan based SLAM）が用いられる。ＳＬＡＭ問題を解くためのラオ―ブラックウェル化粒子フィルター（ＲＢＰＦ：Rao Blackwellized Particle Filter）を用いるＳＬＡＭアルゴリズムが用いられる。ＳＬＡＭ問題では、各粒子が可能性のあるロボットの軌道および地図を表す。マップ構築プロセスをスピードアップするために、複数の外部サーバーにおいて、アルゴリズムの複数のインスタンスを実行することにより、アルゴリズムを並列処理する必要がある。リソースの集中的スキャンマッチングルーティーン（resource intensive scan matching routine）を、複数の異なるサーバーに開放することは、並列処理に対する極めて重要な解決方法を提供する。ＳＬＡＭアルゴリズムは、ロボットの姿勢と、スキャンマッチングにおける各状態変数（粒子）の重要重み（importance weight）を直接修正する。ここで、各粒子の重要さは、各粒子用に予測されたロボット位置から得られる現在の観測の尤度（likelihood）に基づいて算出され、重みの正規化（weight normalization）のみが複数の粒子の再サンプリングのために必要とされる。複数の粒子は、スキャンを実行時に、ロボットクラスターに参加している複数のロボットのうち、リーダーロボット（リーダー）によって、参加している各作業ロボットに送信される。複数の粒子は、ロボットクラスター内の１つまたは複数の作業ロボット（ワーカー）によって受信される。ここで、複数の粒子の受理は、直列的な形式（serialized form）となっている。そのため、直列化された粒子は、作業ロボットによって非直列化される。非直列化の詳細は、ループ中の順序付けシーケンスにおいて追加投入（populated）される。ここで用いられる並列処理戦略は、リーダーおよび複数の他のロボットの双方が粒子に関する全ての情報（full information）を保持しているが、割り当てられた粒子のセットのみを処理する。分散型実行のこのアプローチは、複数のロボット１０６Ａ−Ｎのそれぞれにおける完全な状態の情報およびデータ（地図）の可用性をもたらし、リーダーロボット（例えば、１０６Ａ）が故障を起こしたとき（すなわち、低データ転送）の場合に、引き継ぎのための複数の準備の任意のものを実行する。例えば、信頼性の低く、欠陥のあるシス���ムの主要因であるいくつかの要因が存在する。要因は、グローバルでの矛盾、干渉、ソフトウェアエラー、または不完全性および通信障害であるローカル視点（local perspectives）、モーター故障、センサー故障、および走行距離計測（odometry）失敗のような個々のロボットの機能不全（malfunction）を含む。ＳＬＡＭのタスクは、リーダーロボット１０６Ａを除く複数のロボット１０６Ｂ−Ｎの全てが故障を起こしている場合であっても、低速ではあるが、実行可能である。そのため、１アウトオブｎ：Ｇ（1-out-of-n: G）、すなわち、並列システムとしてタスクをモデル化可能である。対照的に、ロボットのモジュールの１つが故障したとき（１アウトオブｎ：Ｆ）、すなわち、直列システムでは、ロボットは故障する。例えば、ＳＬＡＭアルゴリズムを信頼性の高いものとするために、オリジナルの一連のＳＬＡＭアルゴリズムに実行されるアップデート（図２の修正ＳＬＡＭアルゴリズム２００のために、ロボットにクラス分けされたものを協働させるシーケンス図に示されているようなもの）は、以下のようなものである。
リーダーロボット（ループ中のもの）において、
１．リーダーの走行距離計測を送信し、さらに、協働する他のロボット（peers）をスキャンする。
２．モーションモデルを用いて、走行距離計測から自己の姿勢（self-pose）を予測する。
３．割り当てられた全ての粒子のため、スキャンマッチング、姿勢の修正、および重みのアップデートを実行する。
４．タイムアウト中に、協働する他のロボットに割り当てられた粒子のための修正された姿勢および重みを取得。
５．協働する他のロボットからの一式のスキャンマッチング結果を統合および生成。
６．待機スコアを用いて、待機リストを設定。
７．スキャンマッチング結果（姿勢＋重み）および待機リストを協働する他のロボットに送信。
８．重み正規化、再サンプリング、および地図アップデートを実行。
複数のその他のロボット（ループ内のもの）において、
１．リーダーロボットの現在の姿勢およびスキャンを取得。
２．タイムアウトするまでにリーダーロボットからの最新のスキャンが利用可能ではなく、さらに、自身が次に待機する場合、既存の地図構築を用いて、リーダーロボットの最後の既知の位置まで、ある程度物理的にナビゲートし、リーダーのワークフロー（上述のもの）を再スタートする。
３．待機中でないのであれば、スキャンを着信するまで別のタイムアウトを待つ。
４．モーションモデルを用いて、走行距離計測から、初期リーダーロボットの姿勢を予測する。
５．割り当てられた全ての粒子のため、スキャンマッチング、姿勢の修正および重みのアップデートを実行する。
６．リーダーに割り当てられた粒子のための修正された姿勢および重みを送信。
７．タイムアウトまでに、リーダーロボットから、統合されたスキャンマッチング結果（姿勢＋重み）および待機リストを受信し、そうでなければ、工程２を引き継ぐ。
８．重み正規化、再サンプリング、および地図アップデートを実行する。
９．現在の地図において、自身の位置を推定する。
【００２６】
例示的な実施形態において、リーダーロボット１０６Ａおよび複数のメンバーロボット１０６Ｂ−Ｎは、分散型ＳＬＡＭを実行している間に、関連コンポーネント（associated components）に基づいて、信頼性を算出する。１つの実施形態において、信頼性は、ロボットが所与の時間において適切に機能を提供するであろう確率として規定され、Ｒ（ｔ）＝１−Ｆ（ｔ）として表すことができる。ここで、Ｒ（ｔ）およびＦ（ｔ）は、それぞれ、所与の時間ｔにおける信頼性および故障確率を表す。この実施形態において、ロボットは、自身の信頼性を以下の例示的な式を用いて算出する。
2019028988.tif 000003
ここで、Ｒｉは、ｉ番目のロボットの信頼性を表し、Ｒｊは、ｉ番目のロボットのｊ番目のモジュールの信頼性を表し、Ｍはｉ番目のロボットにおけるモジュールの数である。
【００２７】
例えば、モジュールの信頼性は、温度、負荷等の様々な危険原因によって影響を受け得る。そのため、信頼性を算出するために用いられる基準（metric）は、以下のように算出可能な平均故障時間間隔（ＭＴＴＦ：Mean Time to Failure）である。
2019028988.tif 000004
【００２８】
さらに、複数のメンバーロボット１０６Ｂ−Ｎのそれぞれは、関連する算出された信頼性に基づいて、対応する待機スコアを算出する。例示的な実施形態において、複数のメンバーロボット１０６Ｂ−Ｎのそれぞれは、関連する算出された信頼性を用いて、対応する故障確率Ｆ（ｔ）を判別する。複数のロボット１０６Ｂ−Ｎは、故障確率を用いて、対応する待機スコアを算出する。１つの例において、ロボットは、以下の式を用いて、自身の待機スコアを算出する。
待機スコア＝ξｔ＋μＦ（ｔ）
ここで、ｔおよびＦ（ｔ）は、それぞれ、現在のタスクを得るための時間および時系列予測を用いて算出されたロボットの故障確率であり、ξおよびμは、それぞれ、ロボットの遅延および故障確率に与えられた重みに基づいて、ユーザーによって決定される定数である。
【００２９】
１つの実施形態において、複数の作業ロボット（例えば、１０６Ｂ−Ｄ）のそれぞれは、リーダーロボット１０６Ａの信頼性が所定のしきい値未満であるときに、タスクの対応するリーダータスク完了時間（ＬＴＣＴ：Leader’s Task Completion Time）値を判別する。例えば、作業ロボットのＬＴＣＴ値は、タスクを終了させるために、リーダーロボットのために作業ロボットが待機する時間に基づいて増加し、リーダーロボット１０６Ａからの如何なる通信も受信しない。ＬＴＣＴ値は、タスクを実行するために活動中であるリーダーロボット１０６Ａの故障判別のための、他の可能性のある作業ロボット１０６Ｂ−Ｄによる測定値である。さらに、複数のメンバーロボット１０６Ｂ−Ｎの１つは、作業ロボット１０６Ｂ−ＤのＬＴＣＴ値が所定のＬＴＣＴ限界値よりも大きいときには、リーダーロボット１０６Ａの故障（発生した実際の故障）を予測し、さらに、リーダーロボットの複数のタスクを引き継ぐ。例えば、複数のメンバーロボットの最小の待機スコアを有する１つが、リーダーロボットの複数のタスクを引き継ぐ。自身の位置およびリーダーロボットの位置を知っている選ばれたロボットは、リーダーロボットの位置まで駆動し、自身の姿勢を仮定し（assume its pose）、さらに、続く次のスキャンからＳＬＡＭを続行する。
【００３０】
１つの例において、リーダーロボットと、複数の作業ロボット（ＷＲ１、ＷＲ２、およびＷＲ３）と、次の待機ロボット（ＳＲ１、ＳＲ２、およびＳＲ３）から構成されるロボットクラスターを考える。最初に、複数の作業ロボットがＬＴＣＴ値αを有し、リーダーロボットが自己タスク完了時間（ＳＴＣＴ）値βを有し、さらに、全てのロボットが待機スコアから算出される待機スコアを有する。ここで、待機スコアは、現在のタスクの遂行の遅延からのみ導出され、故障確率は算出されない（故障確率がゼロと仮定される）。状態１において、図３Ａの３００Ａに示されているように、リーダーロボットが機能しており、複数の作業ロボットにメッセージを送信する。状態２において、図３Ｂの３００Ｂに示されているように、リーダーロボットが故障し、複数の作業ロボットへの任意のメッセージの送信が停止する。その結果、複数の作業ロボットのＬＴＣＴ値が値δだけ増加する。このとき図３Ｃの３００Ｃに示されているように、ＬＴＣＴ値がしきい値に到達し、最低の待機スコアを有するロボット（すなわち、ＷＲ１）が、リーダーのワークフローを引き継ぐ。
【００３１】
別の実施形態において、リーダーロボット１０６Ａは、対応するＳＴＣＴ値を判別する。リーダーロボットのＳＴＣＴ値は、タスクを実行するためにリーダーロボットよって費やされた時間に基づいて増加する。さらに、リーダーロボット１０６Ａは、対応するＳＴＣＴ値が所定のＳＴＣＴ限界値よりも大きいときに、故障を予測し、さらに、リーダーロボットのタスクを、複数のメンバーロボットの最小の待機スコアを有する１つに割り当てる。
【００３２】
１つの例示的な状況において、リーダーロボットのメモリー内に存在する障害予測モジュールが、リーダーロボットの故障確率の算出に有用である。ここで、走行距離計測不具合やレーザー故障のような故障に関連するハードウェアが検討される。また、モーターベアリングのようなハードウェアまたはセンサーの実行データが、追加的な外部センサーをフィッティングすることにより利用可能となっている。サポートベクター回帰（ＳＶＲ：Support Vector Regression）モデルを用いて、時系列の実行データから、障害が予測される。ＳＶＲの目的関数は、以下の制約に従う１／２｜｜ｗ｜｜２を最小化することである。
ｙｉ−＜ｗ，ｘｉ＞−ｂ≦ε
＜ｗ，ｘｉ＞＋ｂ−ｙｉ≦ε
ここで、ｘｉおよびｙｉは、それぞれ、トレーニングデータおよびラベルを表す。内部プロダクトｘｉおよび切片（intercept）ｂの総和は、特定のしきい値ε内にある予測値である。
【００３３】
状態１において、図４Ｂの４００Ａに示されているように、リーダーロボットは、故障（センサー、アクチュエーター、またはコンポーネント（例えば、モーターベアリング、車輪等）の故障）を予測する。その結果、ＳＴＣＴ値が値δだけ増加する。所定の時間経過後、ＳＴＣＴ値が所定の限界値（すなわち、しきい値）に到達し、図４Ｂの４００Ｂに示されているように、リーダーロボット自身によって、契約ネットプロトコル（ＣＮＰ：Contract Net Protocol）を用いて、復元メカニズムが起動される。プロトコルに従って、リーダーロボットは、実行すべきタスクの仕様書を含む告知を送信する。告知を受信すると、作業ロボットＷＲ１−３および待機ロボットＳＲ１−３は、自身の待機スコアを用いて、タスクの引き継ぎを申請する（自身の待機スコアを用いて、入札する）。リーダーロボットは、リーダーの複数のタスクを、最小の待機スコアで申請した（入札した）ロボットに割り当てる。
【００３４】
図５は、例示的な実施形態に係る、ロボットクラスターにおけるフォールト・トレラントなＳＬＡＭのための方法のフロー図を示している。方法５００は、コンピューター実行可能命令の一般的な文脈において記述することができる。一般的に、コンピューター実行可能命令は、特定の機能を実行または特定の抽象データ型を実施するルーティーン、プログラム、オブジェクト、コンポーネント、データ構造、プロシージャー、モジュール、関数等を含む。方法５００は、通信ネットワークを介して互いに接続された複数の遠隔処理デバイスによって機能が実行される実行分散型演算環境内において実施することができる。方法５００の記述される順番は、限定を構成するものではなく、方法５００または代替的な方法を実施するために、任意の数の記述された方法のブロックを任意の順番で組み合わせることができる。さらに、方法５００は、任意の好適なハードウェア、ソフトウェア、ファームウェア、またはこれらの組み合わせにおいて実施することができる。１つの実施形態において、フローチャートに示されている方法５００は、図１のシステム１００のようなシステムによって実行することができる。
【００３５】
ブロック５０２において、分散型同時位置推定および地図構築（ＳＬＡＭ）が、ロボットクラスターの少なくとも一部によって受信される。例えば、ロボットクラスターは、リーダーロボットと、複数のメンバーロボットとを含み、複数のメンバーロボットは、複数の作業ロボットと、複数の作業ロボットが順番でなる、いくつかの待機ロボットを含む。基本的に、分散型ＳＬＡＭは、リーダーロボットおよび複数の作業ロボットによって受信される。ブロック５０４において、分散型ＳＬＡＭの複数のタスクを実行している間に、関連コンポーネントに基づいて、リーダーロボットの信頼性が算出される。ブロック５０６において、リーダーロボットによる、リーダーロボットの複数のタスクのそれぞれの自己タスク完了タイム（ＳＴＣＴ）値、および、リーダーロボットの信頼性が所定のしきい値未満であるときの複数の作業ロボットのそれぞれによる、リーダーロボットの複数のタスクのそれぞれのリーダータスク完了タイム（ＬＴＣＴ）値の少なくとも１つが判別される。例えば、作業ロボットのＬＴＣＴ値は、タスクを終了させるために、リーダーロボットのために作業ロボットが待機する時間に基づいて増加し、さらに、リーダーロボットのＳＴＣＴ値は、タスクを実行するために、リーダーロボットによって費やされる時間に基づいて増加する。
【００３６】
ブロック５０８において、判別されたＬＴＣＴ値およびＳＴＣＴ値の少なくとも１つに基づいて、リーダーロボットの故障が予測される。例示的な実施において、複数の作業ロボットのそれぞれのＳＴＣＴ値が所定のＳＴＣＴ限界値よりも大きいときに、リーダーロボットの故障が予測される。別の例示的な実施において、リーダーロボットのＬＴＣＴ値が所定のＬＴＣＴ限界値よりも大きいとき、リーダーロボットの故障が予測される。
【００３７】
ブロック５１０において、リーダーロボットの故障が予測されると、複数のメンバーロボットの１つに対して、リーダーロボットの複数のタスクの譲渡が実行され、これにより、フォールト・トレラントな分散型ＳＬＡＭを実行することができる。１つの実施形態において、複数の作業ロボットのそれぞれのＬＴＣＴ値に基づいて、リーダーロボットの故障が予測されたとき、リーダーロボットの複数のタスクが、複数のメンバーロボットの１つによって引き継がれる。別の実施形態において、リーダーロボットのＳＴＣＴ値に基づいて、リーダーロボットの故障が予測されたとき、リーダーロボットの複数のタスクが、複数のメンバーロボットの１つに割り当てられる。これらの実施形態において、分散型ＳＬＡＭを実行している間に、関連コンポーネントに基づいて、複数のメンバーロボットのそれぞれの信頼性が算出される。さらに、関連する算出された信頼性に基づいて、複数のメンバーロボットのそれぞれの待機スコアが算出される。さらに、対応する待機スコアに基づいて、複数のメンバーロボットの１つに対して、リーダーロボットの複数のタスクの譲渡が実行される。例示的な実施において、リーダーロボットの複数のタスクが、複数のメンバーロボットの最小の待機スコアを有する１つに譲渡される。本方法が記述された順番は、限定を構成するものではなく、方法５００または代替的な方法を実行するために、任意の数の記述された方法のブロックを、任意の順番で組み合わせることができる。さらに、個々のブロックが、本明細書に記述された本発明の原理および範囲から逸脱しない範囲において、本方法から削除されていてもよい。さらに、方法５００は、任意の好適なハードウェア、ソフトウェア、ファームウェア、またはこれらの組み合わせにおいて実施することができる。
【００３８】
１つの実施において、本明細書で記述された１つまたは複数の方法が、少なくとも一部分において、非一時的コンピューター可読保存媒体内に具体化された複数の命令として実施され、１つまたは複数の演算デバイスによって実行可能となっている。一般的に、プロセッサー（例えば、マイクロプロセッサー）は、非一時的コンピューター可読媒体（例えば、メモリー）から、複数の命令を受信し、これら命令を実行することにより、本明細書で記述された１つまたは複数の方法を含む１つまたは複数の方法を実行することができる。このような命令は、様々な既知のコンピューター可読媒体の任意のものを用いて、保存および／または転送することができる。コンピューター可読保存媒体は、プロセッサーによって読み出し可能な情報またはデータが保存されている任意の種類の物理メモリーを意味する。そのため、コンピューター可読保存媒体は、プロセッサーに本明細書で記述された実施形態と一致する複数の工程または段階を実行させるための複数の命令を含む、１つまたは複数のプロセッサーによる実行のための複数の命令を保存している。用語「コンピューター可読媒体」は、有体の製品を含み、かつ、伝送波および過渡信号を除外する、非一時的なものであることは理解されるべきである。例えば、ランダムアクセスメモリー（ＲＡＭ）、リードオンリーメモリー（ＲＯＭ）、揮発性メモリー、不揮発性メモリー、ハードドライブ、ＣＤ−ＲＯＭ、ＤＶＤ、フラッシュドライブ、ディスク、および任意のその他既知の物理保存媒体を例として挙げることができる。
【００３９】
しかしながら、保護の範囲は、上述のようなプログラムに加えて、内部にメッセージを保持するコンピューター可読手段にまで及ぶことは理解されるべきである。そのようなコンピューター可読保存手段は、プログラムが、サーバー、携帯デバイス、または任意の好適なプログラム可能デバイス上で実行されたときに、本方法の１つまたは複数の工程を実行するためのプログラムコード手段を含む。
【００４０】
図示の工程は、示された例示的な実施形態を説明するために提示されたものであり、現在進行中の技術の発展が、特定の機能が実行される本方法を変更し得ることは予想されるべきものである。本明細書で提供された、これらの例示は、説明のためのものであり、限定ではない。さらに、機能的に構築された複数のブロックの境界は、記述の利便性のために、ここでは任意に規定されている。特定の機能および機能同士の関係性が適切に実行されている限り、代替的な境界を規定することが可能である。本分野における当業者であれば、本明細書に含まれる技術に基づいて、代替物（本明細書で記述されたものの同等物、拡張物、変形物、変更物等）は、明らかであろう。そのような代替物もまた、開示の実施形態の範囲および原理内に含まれる。また、用語「含む（comprising）」、「有する(having)」、「含む（containing）」、「備える（including）」、およびその他同様の形式は、意味的に同等であり、その用語の後に列挙された１つまたは複数の項目を含むオープンエンドな範囲を示すものであって、１つまたは複数の項目の排他的なリストを意味するものではなく、リストされた１つまたは複数の項目にのみ限られることを意味するものではない。本明細書および添付の特許請求の範囲において用いられている単数形「ａ」、「ａｎ」、および「ｔｈｅ」は、文脈上明確にそれ以外を示す場合を除き、複数形への参照をも含むことに留意するべきである。
【００４１】
本開示および例示は、例示のみのために用いられており、開示された実施形態の真の範囲および原理は、特許請求の範囲によって示されている。
【図１】
2019028988.tif 000005
【図２】
2019028988.tif 000006
【図３Ａ】
2019028988.tif 000007
【図３Ｂ】
2019028988.tif 000008
【図３Ｃ】
2019028988.tif 000009
【図４Ａ】
2019028988.tif 000010
【図４Ｂ】
2019028988.tif 000011
【図５】
2019028988.tif 000012
【外国語明細書】
2019028988.tif 000013
2019028988.tif 000014
2019028988.tif 000015
2019028988.tif 000016
2019028988.tif 000017
2019028988.tif 000018
2019028988.tif 000019
2019028988.tif 000020
2019028988.tif 000021
2019028988.tif 000022
2019028988.tif 000023
2019028988.tif 000024
2019028988.tif 000025
2019028988.tif 000026
2019028988.tif 000027
2019028988.tif 000028
2019028988.tif 000029
2019028988.tif 000030
2019028988.tif 000031
2019028988.tif 000032
2019028988.tif 000033
2019028988.tif 000034
2019028988.tif 000035
2019028988.tif 000036
2019028988.tif 000037
2019028988.tif 000038
2019028988.tif 000039
2019028988.tif 000040
2019028988.tif 000041
2019028988.tif 000042
2019028988.tif 000043
2019028988.tif 000044
2019028988.tif 000045