(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-03-08
(54)【発明の名称】ロボットの自己位置推定に用いる環境マップの更新方法及び更新装置
(51)【国際特許分類】
G05D 1/246 20240101AFI20240301BHJP
G05D 1/225 20240101ALI20240301BHJP
【FI】
G05D1/246
G05D1/225
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023555663
(86)(22)【出願日】2022-03-11
(85)【翻訳文提出日】2023-09-11
(86)【国際出願番号】 US2022019925
(87)【国際公開番号】W WO2022197544
(87)【国際公開日】2022-09-22
(32)【優先日】2021-03-15
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】100145403
【氏名又は名称】山尾 憲人
(74)【代理人】
【識別番号】100189555
【氏名又は名称】徳山 英浩
(72)【発明者】
【氏名】ドリンカード,ジョン
(72)【発明者】
【氏名】バラダラジャン,カルティク マヘシュ
【テーマコード(参考)】
5H301
【Fターム(参考)】
5H301AA02
5H301BB14
5H301CC03
5H301CC06
5H301CC10
5H301GG09
5H301GG10
5H301KK03
5H301KK08
5H301KK18
(57)【要約】
マップ更新技術は、ロボット(16)が環境(14)内の自律的なナビゲーションのために良質な静的マップ(12)を使用することによって得られる性能上の利点を提供する一方で、自動更新の利便性を提供する。特に、1以上のロボット(16)は、静的マップ(12)に従って環境(14)内で自律的なナビゲーションを実行しながらデータ(22)をログし、集合サーバなどのコンピュータ設備(10)は、ログされたデータ(22)を履歴ログデータ(23)として収集し、履歴ログデータ(23)を用いてマップ更新プロセスを実行する。このような動作は、計算のためにロボット(16)をオフラインにする必要がなく、環境の変化を捕らえるロボット(16)からの観察データに基づいて、静的マップ(12)の定期的又は必要に応じた更新を提供する。
【特許請求の範囲】
【請求項1】
コンピュータ設備(10)によって実行される方法(1500)であって、
環境(14)の静的マップ(12)に従って前記環境(14)内で自律的なナビゲーションを行う1以上のロボット(16)に対する位置推定品質を監視するステップ(1502)であって、任意の特定の時間に任意の特定のロボット(16)が経験する位置推定品質は、静的マップ(12)の関連部分がロボット(16)により検知された局所的な環境特徴と一致する度合いに依存する、ステップと、
前記1以上のロボットの監視された位置推定品質が定義された閾値を下回ることに応答して更新手順をトリガするステップ(1504)であって、前記更新手順は、前記1以上のロボット(16)に送信するために、前記静的マップ(12)に対するマップ更新情報(24)を出力するステップ(1506)を含み、前記マップ更新情報(24)は、前記環境(14)での動作中にログデータ(22)を報告する1以上のロボット(16)に基づいて履歴ログデータ(23)から計算され、任意の特定のロボット(16)からのログデータ(22)は、前記環境(14)内の自律的なナビゲーションのための位置推定を行うために前記特定のロボットによって使用されるセンサデータと、前記特定のロボット(16)によって実行される位置推定処理において使用される対応するオドメトリデータ及び対応する位置推定データの一方又は両方とを含む、ステップと、
を含む、方法(1500)。
【請求項2】
前記更新手順は、前記更新手順の一部として、前記コンピュータ設備(10)がその時点で利用可能な履歴ログデータ(23)に従って、前記マップ更新情報(24)を計算することを更に含む、請求項1に記載の方法(1500)。
【請求項3】
前記コンピュータ設備(10)は、更に、前記コンピュータ設備(10)による前記更新手順の1以上の以前の実行からの履歴マップ更新情報(25)に基づき、マップ更新情報(24)を計算する、請求項2に記載の方法(1500)。
【請求項4】
前記コンピュータ設備(10)は、前記マップ更新情報(24)を反復的に計算するように構成され、各計算は、前記コンピュータ設備(10)がその時点で利用可能な履歴ログデータ(23)を用いて行われ、前記更新手順は、最後に計算されたマップ更新情報(24)を出力する、請求項1~3のいずれか1つに記載の方法(1500)。
【請求項5】
前記マップ更新情報(24)を出力することは、前記コンピュータ設備(10)のユーザから監視入力を受信することに応答して、前記1以上のロボット(16)に送信するために前記マップ更新情報(24)を出力することを含む、請求項1~4のいずれか1つに記載の方法(1500)。
【請求項6】
前記マップ更新情報(24)を出力することは、前記マップ更新情報(24)を前記1以上のロボット(16)に送信すること、又は、前記マップ更新情報(24)を前記1以上のロボット(16)に転送するプロキシデバイス(20)に送信することを含む、請求項1~5のいずれか1つに記載の方法(1500)。
【請求項7】
前記1以上のロボット(16)に送信するために、特定領域を識別するマップ情報を出力することによって、前記1以上のロボット(16)によるデータログを前記環境(14)内の特定領域に限定することを更に含む、請求項1~6のいずれか1つに記載の方法(1500)。
【請求項8】
前記静的マップの更新が許可される前記特定領域を特定するユーザ入力を受信することを更に含む、請求項7に記載の方法(1500)。
【請求項9】
前記マップ更新情報(24)を計算することを含み、前記マップ更新情報(24)を計算することは、マップモダリティと呼ばれるマップ状態の周期的変化を認識することを含み、各マップモダリティは、前記環境(14)の繰り返し状態を反映し、それに関連付けられた対応する時間間隔を有する、請求項1~8のいずれか1つに記載の方法(1500)。
【請求項10】
前記マップ更新情報(24)は、前記マップモダリティに関連付けられた前記対応する時間間隔の間に前記1以上のロボット(16)によって使用されるために、異なるマップモダリティを反映する2以上のモードマップを有する、請求項9に記載の方法(1500)。
【請求項11】
前記履歴ログデータ(23)は、前記1以上のロボット(16)のための前記環境(14)内の動作時間の1以上の間隔にわたっており、前記方法(1500)は、前記環境(14)内の同じ領域に対して各ロボット(16)によって行われた位置推定決定又は特徴観測における不一致を識別し、前記マップ更新情報(24)の計算中に前記不一致を解決することを更に含む、請求項1~10のいずれか1つに記載の方法(1500)。
【請求項12】
前記マップ更新情報(24)の計算中に前記不一致を解決することは、前記1以上のロボット(16)のうちの第1ロボットからの第1データと、前記1以上のロボット(16)のうちの第2ロボットからの関連する第2のデータとの間の不一致に対して前記第1データと前記関連する第2データとの間に関して、最新のデータを使用して前記不一致を解決することを含む、請求項11に記載の方法(1500)。
【請求項13】
前記1以上のロボット(16)の各々は、粒子フィルタベースであり且つ位置推定を実行するが前記静的マップ(12)を更新しないロボット起動型MCL(モンテカルロ位置推定)を用いて、前記静的マップに従って前記環境内で自律的なナビゲーションを実行し、
前記方法(1500)は、更に、
前記コンピュータ設備(10)が、前記履歴ログデータ(23)に表された各ロボット(16)に関して、
前記コンピュータ設備(10)が、粒子フィルタベースであり且つ前記静的マップ(12)の同時位置推定及び更新を行う設備起動型SLAMプロセスを実行する結合プロセスであって、前記ロボット起動型MCLで生じた粒子の進展とは無関係に、前記ロボット起動型MCLで用いられたオドメトリデータ及び対応する環境センシングデータに基づいて、前記設備起動型SLAMプロセスの粒子を進展させる結合プロセスを実行すること、
前記ロボット起動型MCLによって実行された各位置推定サイクルから選択された粒子をクローン化し、前記ロボット起動型MCLによって使用された運動モデルと同一であるが各粒子のマップ更新の追加ステップを有する運動モデルを使用して前記選択された粒子を進展させる非結合プロセスを実行すること、及び
前記結合プロセス及び前記非結合プロセスを介して決定されたマップ更新を比較し、前記結合プロセスによる結合粒子と前記非結合プロセスによる非結合粒子とを含む粒子のプールから、位置推定スコアの観点で最良の粒子を決定することで、前記マップ更新情報(24)として出力するための最終的なマップ更新を得ること、
によって、前記マップ更新情報(24)を計算すること、
を含む、請求項1~12のいずれか1つに記載の方法(1500)。
【請求項14】
通信インタフェース(30)と、
前記通信インタフェース(30)に動作的に関連付けられた処理回路(32)と
を備えるコンピュータ設備であって、
前記処理回路(32)は、
環境(14)の静的マップ(12)に従って前記環境(14)内で自律的なナビゲーションを行う1以上に対するロボット(16)の位置推定品質を監視し、任意の特定の時間に任意の特定のロボット(16)が経験する位置推定品質は、前記静的マップ(12)の関連部分が前記ロボット(16)により検知された局所的な環境特徴と一致する度合いに依存し、
前記1以上のロボットの監視された位置推定品質が定義された閾値を下回ることに応答して更新手順をトリガし、前記更新手順は、前記1以上のロボット(16)に送信するために、前記静的マップ(12)に対するマップ更新情報(24)を出力することを含み、前記マップ更新情報(24)は、前記環境(14)での動作中にログデータ(22)を報告する1以上のロボット(16)に基づいて履歴ログデータ(23)から計算され、任意の特定のロボット(16)からのログデータ(22)は、前記環境(14)内の自律的なナビゲーションのための位置推定を実行するために前記特定のロボット(16)によって使用されるセンサデータと、前記特定のロボット(16)により実行される位置推定処理において使用される対応するオドメトリデータ及び対応する位置推定データの一方又は両方とを含む、ように構成されている、
コンピュータ設備(10)。
【請求項15】
前記処理回路(32)は、前記更新手順の一部として、前記コンピュータ設備(10)がその時点で利用可能な履歴ログデータ(23)に従って、前記マップ更新情報(24)を計算するように更に構成されている、請求項14に記載のコンピュータ設備(10)。
【請求項16】
前記処理回路(32)は、更に、前記処理回路(32)による前記更新手順の1以上の以前の実行からの履歴マップ更新情報(15)及び履歴ログデータに基づいて、前記マップ更新情報(24)を計算するように構成されている、請求項15に記載のコンピュータ設備(10)。
【請求項17】
前記処理回路(32)は、前記マップ更新情報(24)を反復的に計算するように構成され、各計算は、前記コンピュータ設備(10)がその時点で利用可能な履歴ログデータ(23)を用いて行われ、前記更新手順は、最後に計算されたマップ更新情報(24)を出力する、請求項14~16のいずれか1つに記載のコンピュータ設備(10)。
【請求項18】
前記処理回路(32)は、前記コンピュータ設備のユーザから監視入力を受信することに応答して、前記1以上のロボット(16)に送信するための前記マップ更新情報(24)を出力するように構成されている、請求項14~17のいずれか1つに記載のコンピュータ設備(10)。
【請求項19】
前記処理回路(32)は、前記通信インタフェース(30)を介して、前記1以上のロボット(16)に送信することによって前記マップ更新情報(24)を出力するか、或いは、前記マップ更新情報(24)を前記1以上のロボット(16)に転送するプロキシデバイス(20)に送信するように構成されている、請求項14~18のいずれか1つに記載のコンピュータ設備(10)。
【請求項20】
前記処理回路(32)は、前記1以上のロボット(16)に送信するために、特定領域を識別するマップ情報を出力することによって、前記1以上のロボット(16)によるデータログを前記環境(14)内の前記特定領域に制限するように構成されている、請求項14~19のいずれか1つに記載のコンピュータ設備(10)。
【請求項21】
前記処理回路(32)は、前記静的マップの更新が許可される前記特定領域を定義するユーザ入力を受信するように構成されている、請求項20に記載のコンピュータ設備(10)。
【請求項22】
前記処理回路(32)は、前記マップ更新情報(24)を計算するように構成され、前記マップ更新情報(24)を計算する一部として、前記処理回路(32)は、マップモダリティと呼ばれるマップ状態の周期的な変化を認識するように構成され、各マップモダリティは、前記環境(14)の繰り返し状態を反映し、それに関連付けられた対応する時間間隔を有する、請求項14~21のいずれか1つに記載のコンピュータ設備(10)。
【請求項23】
前記マップ更新情報(24)は、前記マップモダリティに関連付けられた前記対応する時間間隔の間に前記1以上のロボット(16)によって使用されるために、異なるマップモダリティを反映した2以上のモードマップを有する、請求項22に記載のコンピュータ設備(10)。
【請求項24】
前記履歴ログデータ(23)は、前記1以上のロボット(16)のための前記環境(14)内の動作時間の1以上の間隔にわたっており、前記処理回路(32)は、前記環境(14)内の同じ領域に対して各ロボット(16)によって行われた位置推定決定又は特徴観察における不一致を識別し、前記マップ更新情報(24)の計算中に前記不一致を解決するように構成されている。請求項14~23のいずれか1つに記載のコンピュータ設備(10)。
【請求項25】
前記1以上のロボット(16)のうちの第1ロボットからの第1データと、前記1以上のロボット(16)のうちの第2ロボットからの関連する第2データとの間の不一致に対して前記マップ更新情報(24)の計算中に前記不一致を解決するために、前記処理回路(32)は、前記第1データと前記関連する第2データとの間に関して、最新のデータを使用して前記不一致を解決するように構成されている、請求項24に記載のコンピュータ設備(10)。
【請求項26】
前記1以上のロボット(16)の各々は、粒子フィルタベースであり且つ位置推定を実行するが前記静的マップ(12)を更新しないロボット起動型MCL(モンテカルロ位置推定)を用いて、前記静的マップ(12)に従って前記環境内で自律的なナビゲーションを実行し、
前記処理回路(32)は、更に、
履歴ログデータ(23)に表された各ロボット(16)に関して、
前記コンピュータ設備(10)が、粒子フィルタベースであり且つ前記静的マップ(12)の同時位置推定及び更新を行う設備起動型SLAMプロセスを実行する結合プロセスであって、前記ロボット起動型MCLで生じた粒子の進展とは無関係に、前記ロボット起動型MCLで用いられたオドメトリデータ及び対応する環境センシングデータに基づいて、前記設備起動型SLAMプロセスの粒子を進展させる結合プロセスを実行すること、
前記ロボット起動型MCLによって実行された各位置推定サイクルから選択された粒子をクローン化し、前記ロボット起動型MCLによって使用された運動モデルと同一であるが各粒子のマップ更新の追加ステップを有する運動モデルを使用して前記選択された粒子を進展させる非結合プロセスを実行すること、及び
前記結合プロセス及び前記非結合プロセスを介して決定されたマップ更新を比較し、前記結合プロセスによる結合粒子と前記非結合プロセスによる非結合粒子とを含む粒子のプールから、位置推定スコアの観点で最良の粒子を決定することで、前記マップ更新情報(24)として出力するための最終的なマップ更新を得ること、
によって、前記マップ更新情報(24)を計算するように構成された、
請求項14~25のいずれか1つに記載のコンピュータ設備(10)。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書で開示される方法及び装置は、環境内で動作しながら自己位置推定を実行するロボットによって使用される環境の静的マップの使用を提供し、更に、ロボットから収集されたログデータのバッチ処理に基づいて、随時マップを更新することを提供する。
【背景技術】
【0002】
倉庫や工場の床などの環境でタスクを実行するロボットは、例えば、1つの「目標」から次の目標に移動し、各目標は、環境内に対応する位置を有する。タスクの実行を支援するための環境内におけるロボットによる自律的なナビゲーションは、ロボットが環境内におけるその位置及び向きについて正確な理解を維持することを必要とし、これは「位置推定」と呼ばれる。ロボットによるタスクの実行に対応するフェーズは、「タスクフェーズ」と呼ばれる。
【0003】
ロボットは、例えば、1以上のタイプのセンサを使用して、そのすぐ近くの周囲を検知し、それが検知したものを環境のマップと比較して、最も可能性の高い現在の位置及び向きを特定する。このようなマップは、環境のCADベースのフロアプランから、又はタスクフェーズの前に実施される手動マッピングフェーズにおいて、センサデータを使用して作成することができる。
【0004】
「同時位置推定及びマッピング」又はSLAMと呼ばれる技術では、ロボットが、環境のマップを作成し、継続的にそのマップを修正することができる。マップの修正は、ロボットの現在の位置及び向きについてロボットのセンサが検知したものと、その位置及び向きについてマップに従って検知すべきものとの間の差異をロボットが検知することから行われる。
【0005】
従来のSLAMを使用して行われるような、タスク実行中にロボットによって更新されるマップは、ロボットが、タスク実行のために環境内をナビゲートするためにマップを使用しながらそのマップを継続的に更新することを示すために、「オンライン」又は「動的」マップと呼ばれる。各ロボットで使用されるオンラインマップは、SLAMベースのマップ更新プロセスに内在するエラーによって、時間の経過とともに劣化する。マップの劣化は、例えば、ロボットが位置推定に使用する重要なランドマークのドリフトとして現れる。
【0006】
初期マップが現在の環境と大きく異なる場合、従来は環境を再マップ化し、その結果得られたマップをロボットが環境内でナビゲーションするために使用するしかなかった。しかしながら、手動マッピングによるマップの「モダリティ」の取得が困難であることや、手動で環境を再マッピングするための時間やコストがかかるなどのデメリットがある。このようなコストには、再マッピングプロセス中に、マップに依存するロボットをオフラインにすることによるペナルティが含まれる。
【発明の概要】
【0007】
マップ更新技術は、環境内の自律的なナビゲーションのために良質な静的マップを使用する自律型ロボットによって得られる性能上の利点を提供するとともに、自動更新の利便性を提供する。特に、1以上のロボットは、静的マップに従って環境内で自律的なナビゲーションを行いながらデータをログし、集中サーバなどのコンピュータ設備が、ログされたデータを履歴ログデータとして収集し、履歴ログデータを用いてマップ更新処理を実行する。このような動作により、ロボットによって環境から収集された実際の観察データに基づいて、静的マップを定期的又は必要に応じて更新することができるが、計算のためにロボットをオフラインにする必要なく、よりリッチで時間のかかる更新をコンピュータ設備によって実行することが可能になる。
【0008】
一実施形態は、コンピュータ設備によって実行される方法を含む。本方法は、環境の静的マップに従って環境内で自律的なナビゲーションを行う1以上のロボットの位置推定品質を監視することを含む。任意の特定の時間に任意の特定のロボットが経験する位置推定品質は、静的マップの関連部分がロボットによって検知された局所的な環境特徴と一致する程度に依存する。本方法は、1以上のロボットに対して監視された位置推定品質が定義された閾値を下回ることに応答して更新手順をトリガすることを更に含む。更新手順は、1以上のロボットに送信するために、静的マップのマップ更新情報を出力することを含む。マップ更新情報は、環境での動作中にログデータを報告する1以上のロボットに基づいて、過去のログデータから計算される。任意の特定のロボットからのログデータは、環境内の自律的なナビゲーションのための位置推定を実行するために特定のロボットによって使用されるセンサデータと、特定のロボットによって実行される位置推定処理に使用される対応するオドメトリデータ及び対応する位置推定データの一方又は両方と、を含む。
【0009】
別の実施形態は、通信インタフェースと、通信インタフェースと動作的に関連付けられた(すなわち、通信インタフェースを使用して情報を送受信する)処理回路とを有するコンピュータ設備を備える。処理回路は、環境の静的マップに従って環境内で自律的なナビゲーションを行う1以上のロボットの位置推定品質を監視するように構成されている。処理回路は、更に、1以上のロボットに対する監視された位置推定品質が定義された閾値を下回ることに応答して前述の更新手順をトリガするように構成されている。
【0010】
もちろん、本発明は、上記特徴及び利点に限定されるものではない。当業者であれば、以下の詳細な説明を読み、添付の図面を見れば、更なる特徴及び利点を認識するであろう。
【図面の簡単な説明】
【0011】
【
図1】1以上のロボットとコンピュータ設備とを備えるシステムの一実施形態のブロック図である。
【
図2】環境のマップを更新するためにマップ更新機能を実装するコンピュータ設備、及び、環境内の自律的なナビゲーションのためにマップの静的コピーを使用する自己位置推定機能を実装するロボットの一実施形態のブロック図である。
【
図3】マップを更新する方法の一実施形態の論理フロー図である。
【
図4】ロボットが自己位置推定を実行し、ログデータを送信する方法の一実施形態の論理フロー図である。
【
図5】条件付きマップ更新の一実施形態の論理フロー図である。
【
図6】条件付きマップ展開の一実施形態の論理フロー図である。
【
図7】環境と、環境内で自己位置推定を行うためにロボットによって使用される環境の静的マップとの間の偏差の関数としての、位置推定品質のプロットである。
【
図8】マップを更新するためのコンピュータ設備と、マップによって表される環境内で動作しながら自己位置推定を実行するためにマップの静的コピーを使用する個々のロボットとを備えるシステムによる動作の方法の一実施形態の論理フロー図である。
【
図9】ユーザからの特定の入力に応答するマップ更新の方法の一実施形態の状態図である。
【
図10】エンドユニット又は自律型インテリジェント車両(AIV)とも呼ばれるロボットと、コンピュータサーバとも呼ばれるコンピュータ設備における機能ユニット又は処理モジュール及び関連データのブロック図である。
【
図11A】
図10で紹介したFull SLAM BOMUの一実施形態を詳述する論理フロー図である。
【
図11B】
図10で紹介したFull SLAM BOMUの一実施形態を詳述する論理フロー図である。
【
図12】自己位置推定中の例示的な粒子状態のプロットである。
【
図13】マルチモーダル環境の一例のブロック図である。
【
図14】更新された環境マップの一例のブロック図である。
【
図15】一実施形態に係るコンピュータ設備による動作の方法の論理フロー図である。
【
図16】一実施形態に係るコンピュータ設備による動作の方法の論理フロー図である。
【発明を実施するための形態】
【0012】
図1は、「コンピュータサーバ」とも呼ばれるコンピュータ設備10を備えるシステム8の一実施形態のブロック図である。環境14のマップ12は、環境14内で動作している間、自己位置推定を実行するために1以上のロボット16によって使用される。各ロボット16は、自己位置推定を実行するために、マップ12の静的コピーを使用する。本明細書で、「自己位置推定」という用語は、環境14内でその姿勢を決定するためにロボット16によって実行される動作を指し、「姿勢」という用語は、適用可能な座標系又は参照フレームにおけるロボットの位置を少なくとも示す。「姿勢」は、更に、環境14内でのロボット16の向きを表すことがある。例示的な「姿勢」は、2次元又は3次元座標値と、ロボット16の向き方向を示す1以上の角度値とを含む。
【0013】
本明細書で特に関心を持つマップ更新の特定の態様は、環境14内で動作する複数のロボット16を備えることから利益を得る。これに対応して、
図1は、環境14で動作する3台のロボット16-1,16-2,及び16-3の「フリート(fleet)」の例を提供する。しかしながら、本明細書で開示される技術は、単一のロボット16から数十又は数百のロボット16、あるいはそれ以上の数のロボット16のフリートに適用される。
【0014】
環境14及び環境14内で動作するロボット16に関しても、同様の柔軟性が適用される。非限定的な例は、環境14として倉庫又は工場の床を含み、ロボット16として車輪付き又は追跡型の自律型車両を含む。しかしながら、ロボット16は、環境14としての空域内で動作する無人航空機(UAV)、例えば、開放又は閉鎖空域内でペイロードを搬送するドローンであってもよい。企図されるロボットタイプの範囲のため、ロボット16は、「エンドユニット」又は自律型インテリジェント車両(AIV)とも呼ばれる。更に、環境14内で動作する「フリート」を構成する個々のロボット16は、同種である必要はなく、構成、能力、及びタスクの責任が異なる、2以上のタイプのロボット16が存在してもよい。
【0015】
ロボットの種類に関係なく、動作の共通点は、環境内で動作する各ロボット16が、環境14のマップ12の静的コピーを使用して自己位置推定を実行することによって、環境14内で自律的なナビゲーションを行うことである。各ロボット16が自律的ナビゲーションのために同時位置推定及びマッピング、すなわち「SLAM」を実行するのとは対照的に、各ロボット16は、マップ12を使用して自己位置推定を実行するが、環境14内の「ライブ」ナビゲーション中にマップ12のコピーを更新することはない。その代わりに、コンピュータ設備10が、条件付き又はトリガベースで、すなわちオンデマンドで、随時マップ更新を実行する。
【0016】
ロボット16がマップ12のコピーを更新せず、代わりにマップ12の静的又は固定コピーで動作し、マップ更新がコンピュータ設備10によって実行されるハイブリッドアプローチを採用すると、ロボット16は、任意に高い品質のマップを提供されることができる。例えば、マップ12は、環境14のマップ12の開発に関与するロボット16又は他の機器が他のタスク又はジョブを実行する義務がないオフラインプロセスを使用して最初に決定されることができ、複数の「パス」又はイテレーション(iteration)が、マップ12の初期バージョンを開発するために使用されてもよい。このように、ロボット16は、SLAMを使用して個々に開発するよりも高品質のマップを有するという利益を得る。
【0017】
もちろん、環境14は、ゆっくりと又は急速に、すなわち時間とともに変化する可能性があり、あるいは、一日の時間、日、又は週などに依存して、様々な構成を通じて「循環」する可能性がある。環境14の周期的又は再発的な変化は、環境14の「モード」と呼ばれることがある。
【0018】
このため、任意の場所及び任意の時間における環境14の状態は、ロボット16で現在使用されているマップ12から逸脱することがある。このような逸脱は、環境14内をナビゲートするためにマップ12を使用する個々のロボット16による自己位置推定の「品質」に影響を与える。本明細書において、「品質」は、環境14内でのロボット16によるライブ動作の間、任意の所与の時間に最も確率の高い姿勢を決定するロボットの能力に関連する信頼性のレベルを測定又は表現する。マップ12が環境16内で発生する変化に鑑みて「陳腐化」すると、少なくとも環境14の影響を受ける領域内で、自己位置推定の品質が悪化する。
【0019】
位置推定品質の低下は、割り当てられたタスクを遂行するロボットの能力に影響を与え、ロボット16と環境14を共有する人の安全に対するリスク、及び環境14内のロボット16及び他の機器に対するリスクも意味する。従って、本明細書で意図するハイブリッド位置推定及びマップ更新の重要な利点は、コンピュータ設備10によるマップ12の条件付き又はオンデマンド更新であり、マップ12の更新中にロボット16をオフラインにする必要がなく、「バッチ」ベースでマップ更新を処理する利点がある。
【0020】
ハイブリッドアプローチは、ロボット16が高品質のマップ12の利点を有して動作することを可能にし、ロボット16がマップ12のそれぞれの現在の静的コピーで動作を続ける間、コンピュータ設備10がそのマップ12を更新又はリフレッシュすることを可能にする。マップ12の更新をロボット16にプッシュすることに関連して、個々のロボット16による進行中の動作に対する最小限の中断のみが発生する。更に、コンピュータ設備10によって決定されるマップ更新は、コンピュータ設備10が、マップ12のそれぞれの静的コピーを使用して環境14内で移動する際に個々のロボット16によって生成されたログデータを受信することに基づいているので、環境14の変化を正確に追跡又は説明することができる。
【0021】
ある意味で、ハイブリッドアプローチは、ロボット16のいずれか1以上の位置推定品質が定義された品質閾値よりも悪くなった場合に、ロボット動作が進行中に任意の品質のマップ更新を決定して、ロボット動作の停止の可能性を許容するように、マップ更新のタスクを「オフライン」構成要素にオフロードするものとして理解することができる。
【0022】
自己位置推定及びマップ更新のハイブリッドアプローチの1以上の実施形態において、ロボット16は、コンピュータ設備10、又はマップ更新の決定に使用するためにロボット生成ログデータ22をコンピュータ設備10に送るための間接経路を提供するローカルネットワーク/プロキシ20などの他の構成要素、への有線又は無線リンク18を有する。リンク18の有線バージョンの一例として、充電ステーション(図示せず)は、ロボット16が充電している間、ロボット16とコンピュータ設備10又はプロキシ20との間のイーサネット又は電力線ベースの通信を提供する。他の実施形態において、リンク18は、無線ローカルエリアネットワーク(WLAM)リンク又はワイドエリアネットワーク(WAN)リンクなどの無線である。
【0023】
リンク18の実施の詳細にかかわらず、コンピュータ設備10は、マップ更新情報24(図では「MUI」)をロボット16に直接又は間接的に、例えばプロキシ20を介して「プッシュ」又は「分配」するように構成されている。このようなプッシュは、時間指定された基準又他の条件付きトリガに従って自動的に実行されてもよいし、人間のオペレータの制御下などにおいてオンデマンドで実行されてもよい。また、人間のオペレータは、コンピュータ設備10がMUI24をロボット16にプッシュするか否か、又はいつプッシュするかに関する最終的な管理判断を提供することができる。本明細書において、MUI24は、例えば、マップ12の最新の更新バージョン、又は、各ロボット16がマップ12の静的コピーを最新バージョンに更新できる変更データを含む。
【0024】
簡単な例として、各ロボット16に提供されたマップ12の「現在の」バージョンが存在し、各ロボット16は、自己位置推定を実行するためにマップ12の当該現在のバージョンの静的コピーを使用する。各ロボット16がMUI24を受信すると、ロボット16は、再開された位置推定動作で使用するために、メモリに保持されているマップ12の局所的な静的コピーを置き換えるか、或いは、他の方法で更新する。個々のロボット16は、受信したMUI24を使用してマップ12の局所的な静的コピーを更新するために、動作を一時的に停止し、その後、マップ12の更新バージョンを使用して動作を再開することができる。
【0025】
コンピュータ設備10は、個々のロボット16によって生成されたログデータ22を取得し、ロボット16からのログデータ22を使用してSLAMのそれ自身のバージョンを実行する。各ロボット16からのログデータ22は、ロボット16によってログされた少なくともセンサデータを含む。センサデータは、マップ注釈に有用なコンテンツを含んでもよい。例示的な場合において、センサデータは、駆動システムを介して環境14内で自律的に移動するロボット16に関連するモータ電流及びトルクの検知値を含んでもよい。ロボット16によってログされたセンサデータは、自己位置推定を実行する目的で、ロボット16がそのすぐ近くの周囲及び環境14内の動きを検知するために使用する環境センシングデータを備えてもよい。このようなセンサデータは、例えば、環境16内の周囲の物理的特徴を示す深度マップ又は点群を得るために、ロボット16によって実行される平面又は体積レーザスキャンから得られるカメラデータ、超音波センサデータ、及び、LIDAR又はレーザスキャナデータのうちのいずれか1以上を含む。
【0026】
1以上の実施形態において、ログデータは、自己位置推定に使用されるセンサデータを含む様々なタイプのセンサデータを含み、更に位置推定処理結果を含む。従って、周囲の文脈から明らかであるか又は別の説明がない限り、本明細書における「ログデータ」という用語は、環境14での動作中にロボット16によってログされた1以上のタイプのセンサデータを意味すると理解される。このようなデータは、オドメトリデータを含んでもよく、1以上の実施形態のログデータは、更に、ロボット16において実行されているモンテカルロ位置推定(MCL)又は他の位置推定アルゴリズムによって生成されるデータなどの位置推定処理結果を含んでもよい。少なくとも1つの例において、ロボット16は、粒子フィルタベースの位置推定アルゴリズムを使用し、ログデータは、粒子フィルタアルゴリズムによって生成された粒子を含んでもよい。
【0027】
前述したように、コンピュータ設備10によるSLAMの実行は、ロボット16に影響を与えず、ロボット16は、マップ12の現在のバージョンを使用して環境14における「通常」又は「ライブ」動作を続けることができる。すなわち、ロボット16は、コンピュータ設備10が個々のロボット16からログデータ22を収集し、マップ更新を実行する間、動作を継続することができる。
【0028】
更に、コンピュータ設備10によって実行されるSLAMは、いくつかの点で自律型車両で使用される従来のSLAMと区別される。第1に、コンピュータ設備10は、本質的に、ライブ位置推定を実行するのではなく、ロボット16によって以前に実行された位置推定動作を「再生」し補足している。第2に、SLAM処理は、ログデータ22のバッチに適用され、それらの時間帯の間で異なる環境特性が作用する複数の時間帯をカバーすることができ、それは、複数のロボット16が、環境14の同じ部分又は重複する部分を異なる視点から見ており、各位置推定処理に影響を及ぼすシステマチックエラーが異なることから生じ得る。これに対応して、1以上の実施形態において、コンピュータ設備10によって実行されるSLAMは、処理のためにバッチ化されるログデータ22の不均一性を考慮又は調整するバッチ最適化SLAMである。
【0029】
図1に描かれた他の例示的な詳細は、1以上の実施形態に係るコンピュータ設備10及びロボット16の代表的な1つのための実施の詳細を含む。コンピュータ設備10に含まれる構成要素は、通信インタフェース30と、処理回路32と、例えば、データ36及びマップ12を格納するためのストレージ34とを備える。また、コンピュータ設備10は、ユーザインタフェース38を備えてもよいし、或いは、ユーザインタフェースを提供するPC又は他のデバイスに通信可能に結合することなどにより、通信インタフェース30を介してユーザインタフェースに結合されてもよい。
【0030】
通信インタフェース30は、イーサネットインタフェースなどのネットワーク又はコンピュータデータインタフェースを備える。付加的又は代替的に、通信インタフェース30は、無線通信回路(無線周波数トランシーバ)を備え、例えばWi-Fi又は他のWLAM接続のための無線通信を提供する。広義には、通信インタフェース30は、処理回路32によって生成されたメッセージ又は他の信号を出力し、取得/受信メッセージ又は他の受信信号を処理回路32に入力するように動作可能である。
【0031】
処理回路32は、例えば、1以上のマイクロプロセッサ又はデジタル信号プロセッサ、又は他のデジタル処理回路を備える。少なくとも一実施形態において、処理回路32は、ストレージ34に格納された1以上のコンピュータプログラムからのコンピュータプログラム命令の実行に少なくとも部分的に基づいて、コンピュータ設備10について本明細書に記載された動作を実行するように特別に適合された1以上のマイクロプロセッサで構成されている。そのために、ストレージ34は、揮発性ストレージと不揮発性ストレージの混合など、1以上のタイプのコンピュータ可読媒体を備える。例としては、プログラム実行のためのワーキングメモリとしてのランダムアクセスメモリ(RAM)と、関与するコンピュータプログラム及び任意のサポート用構成データ36の長期保存のためのFLASH、EEPROM、又はSSD(Solid-State Disk)が挙げられる。このようなデータは、例えば、ロボット16によって記録され、コンピュータ設備10によるバッチ処理のために蓄積されたログデータ22を含む。
【0032】
例示的な実施形態において、各ロボット16は、駆動システム40と、オドメトリシステム42と、環境センシングシステム44と、ロボット制御システム46とを備える。ロボット制御システム46は、ストレージ48を備えてもよいし、ストレージ48に関連付けられてもよい。これらの構成要素又はサブシステムの詳細は、ロボット16の設計とその意図する目的及び能力とに依存して変化する。例えば、駆動システム40、オドメトリシステム42、及び環境センシングシステム44の詳細は、地上での自律的な移動を意図した車輪付き又は追跡型ロボットや、空域内での自律的な飛行を意図した飛行ロボットのように、大きく異なってもよい。この観点において、少なくとも、オドメトリシステム42は、デッドレコニングシステム(dead-reckoning system)とも呼ばれ、ある基準位置に対するロボット16による移動の程度又は範囲を測定又は推定するために使用されてもよい。
【0033】
車輪付き又は追跡型ロボットの場合、例示的な実施形態における駆動システム40は、1以上の駆動輪と、1以上の対応する駆動モータとを備え、オドメトリシステム42には、速度及び移動距離を検知するために用いられる1以上のロータリーエンコーダ又は他の検知機構が含まれる。飛行ロボットの場合、例示的な実施形態における駆動システム40は、1以上のプロペラ又はローターと、1以上の対応する駆動モータとを備え、オドメトリシステム42には、対気速度センサ、高度センサ、及び他のセンサが含まれる。
【0034】
環境センシングシステム44に関して、例示的な実施例においては、1以上のLIDAR又はRADARセンサ、又はその両方を備え、付加的又は代替的に、マシンビジョンベースの検知のための1以上のカメラを備えてもよい。1つの実施例又はシナリオにおいて、ロボット16は、生産環境内で材料、サブアセンブリ、又は完成品を輸送し、その環境のマップ12の静的コピーを使用して、環境14として関与する建物又は定義されたワークスペース全体をナビゲートする。例えば、そのような場合のロボット16は、環境14内の壁、パレット、機械、他のロボットなどの障害物を検知するための、LIDARセンサ、カメラ、超音波センサ、又はそれらのいくつかの混合を備える。これに対応して、ロボット制御システム46は、1以上の割り当てられたタスク又はジョブを実行することを支援する経路計画を実施する。経路計画は、そのオドメトリシステム42とその環境センシングシステム44と環境14のマップ12の局所的な静的コピーによって生成されたデータを使用して、任意の所定の瞬間に環境14内のどこにいるのかをロボット16が決定することに依存する。
【0035】
図2には、コンピュータ設備10がマップ更新機能50を実装し、ロボット16が、ロボット16の動作中に環境14内のロボットの位置を決定する自己位置推定機能52を実装する、例示的配置が描かれている。ここでも、複数のロボット16が存在し、それぞれが、ロボット16が環境内での自己位置推定に使用する自己位置推定機能52を実装している場合がある。
【0036】
ログデータ22としてロボット16によって記録されるデータには、例えば、環境14内の自律的なナビゲーションのための位置推定を行うためにロボット16によって使用されるセンサデータと、ロボット16によって行われる位置推定処理に用いられる対応するオドメトリデータ及び対応する位置推定データの一方又は両方とが含まれる。このようなデータは、ロボット16がタスクフェーズ中に環境14内で割り当てられた又はプログラムされた任務を遂行する(動作する)間、リアルタイム又はほぼリアルタイムで環境14内におけるロボット16を位置推定するために、ロボット16によって生成又は他の方法で使用される。
【0037】
前述したように、環境14内で動作する1以上のロボット16は、例えば継続的又は定期的にログデータ22を報告する。当該ログデータ22は、マップ更新情報を決定するための履歴ログデータ23としてコンピュータ設備10によって使用される。
図2では、1以上のロボット16から収集されたログデータ22が、延長された時間にわたって又は複数の時間間隔にわたって又は複数のロボット22から収集されたデータを含み得ることを表すために、「履歴ログデータ23」として記載されている。
【0038】
従って、コンピュータ設備10によって使用される履歴ログデータ23は、1以上のロボット16からの複数の報告に対応する複数のログデータ22のセットを含む潜在的に大きなデータのバッチを含み得る。履歴ログデータ23の文脈における「その時に利用可能なデータ」についてのあらゆる言及は、関心のある特定の時間に、コンピュータ設備10で利用可能であるデータ、すなわち、ロボット16から報告されたデータを指すと理解するものとする。また、
図2では、コンピュータ設備10における静的マップ12が、静的マップの古いコピーの更新バージョン、例えば、コンピュータ設備10によって実行される後続のマップ更新によって生成された更新マップであってもよいという事実を示すために「履歴マップデータ25」が記載されている。履歴マップデータ25は、履歴マップ更新情報とも呼ばれることがある。
【0039】
図3は、コンピュータ設備10によって実行される方法300の一実施形態を示している。方法300は、コンピュータ設備10が、環境14内で動作する個々のロボット16によって生成されたログデータ22を受信すること(ブロック302)を含む。方法300は、更に、コンピュータ設備10が、受信したログデータ22を使用して、マップ12の更新を実行するステップ又は動作(304)を含む。ここでも、コンピュータ設備10は、ロボット16から直接的に、或いは、1以上の中間媒体を介して又はアクセス可能なデータベースを介して間接的に、ログデータ22を受信してもよい。更に、ログデータ22は、例えば、ロボット16が環境14内でのロボット16の継続的な動作から閾値量のデータをログしたときはいつでも、各ロボット16によって定期的に送信されてもよい。その後、コンピュータ設備10は、1以上の時間帯及び/又は1以上のロボット16からのログデータ22をまとめて集約又はその他の方法でバッチし、マップ更新を決定するために処理するデータバッチを取得する。
【0040】
方法300における任意選択の更なるステップ又は動作は、コンピュータ設備10が、マップ更新情報(
図1ではMUI24)を送信すること(ブロック306)、又は、MUI24を出力してロボット16に配信できるようにすることを含む。そのような動作は、コンピュータ設備10によって自律的に実行されてもよく、或いは、人間のオペレータがMUI24をロボット16にプッシュする最終決定又は許可を与えることを前提に、ゲート又は制御されてもよい。
【0041】
図4は、1以上の実施形態に係るロボット16による動作の方法400を示す。方法400は、マップ12によって表される環境14内で自己位置推定を行うためにロボット16が使用するマップ12の更新を行う際に、コンピュータ設備10が使用するためのログデータ22を提供するという意味で方法300を補足する。方法400のステップ又は動作は、ロボット16が環境14内で自己位置推定を実行すること(ブロック402)、及び、ロボット16がそのセンサの1以上からのデータをログすること(ブロック404)を含む。更に、方法400は、ロボット16が、マップ12を更新する際に使用するために、ログデータ22を送信すること(ブロック406)を含む。
【0042】
図5は、コンピュータ設備10における「条件付き」マップ更新の1以上の実施形態に係る、コンピュータ設備10による動作の方法500を示す。方法500は、コンピュータ設備10が、更新トリガが発生したか又は他の方法で充足されているかを決定することを含む(ブロック502)。そうでない場合(ブロック502からNO)、コンピュータ設備は、環境14での動作中に生成された個々のロボット16からのログデータ22の収集又は編集などの他の進行中の処理(ブロック504)を行う一部として、トリガの条件付き履行について監視を継続する。
【0043】
更新トリガが発生するか又は他の方法で充足されている場合(ブロック502からYES)、方法500は、コンピュータ設備10がマップ12の更新を実行することで継続する(ブロック506)。前述したように、1以上の実施形態におけるコンピュータ設備10は、それ自体でロボット16に更新をプッシュする。一方、他の実施形態において、コンピュータ設備10は、更新がロボット16にプッシュされるか否かについての人間の入力に従う。更に、1以上の実施形態において、コンピュータ設備10は、1以上のロボット16における位置推定品質が定義された品質閾値を下回ることを検知するまで、ロボット16へのマップ更新のプッシュに従ってもよい。そのような低下を検知すると、1以上の実施形態におけるコンピュータ設備10は、それによって決定された最後のマップ更新をプッシュする。他の実施形態において、コンピュータ設備10は、位置推定品質の低下を検知するまで、マップ更新を実行しない。
【0044】
図6は、コンピュータ設備10によって実行される方法600を記載することによって、そのような動作の一例を示す。方法600は、コンピュータ設備10が、環境14で動作する個々のロボット16からログデータ22を収集すること(ブロック602)、及び、「バックグラウンド」動作としてマップ更新を行うこと(ブロック604)を含む。本明細書において、「バックグラウンド」とは、マップ12の更新が、マップ12を使用する1以上のロボット16が環境14で動作している間に実施され得るという事実を指す。
【0045】
しかしながら、マップ12の更新バージョンを無条件にプッシュするのではなく、コンピュータ設備10は、既存のマップ品質が良好であるか否かを判断する(ブロック606)。本明細書において、これは、マップ12のそれらの現在の局所的な静的コピーを使用して個々のロボット16によって達成されている位置推定品質が十分であるか否かによって決定される。そうである場合(ブロック606からYES)、処理は、データ収集及びマップ更新動作へ戻る(ブロック602及び604)。
【0046】
既存のマップ品質が良好でないことを検知した場合(ブロック606からNO)、コンピュータ設備10は、ロボット16にマップ更新をプッシュするが(ブロック608)、少なくとも一実施形態において、プッシュを実施するために人間のオペレータからの確認入力を必要とする。マップ更新をプッシュすることは、ブロック604におけるマップ更新の最も新しい実行からの最新の結果を送信すること、又はそれらの最新の結果から導出される情報を送信することを含む。例えば、コンピュータ設備10は、マップ12の更新バージョンをMUI24として送信してもよいし、各ロボット16がマップ12の局所的な静的コピーを最新バージョンに更新する変更データ(デルタ情報)を送信してもよい。
【0047】
図7は、位置推定精度(すなわち、ロボットの推定姿勢と真の姿勢との間の差)に対する環境14の変化の「量」"のプロットの例を示している。「変化」とは、自己位置推定のためにロボット16によって検知される環境14の特性と、ロボット16によって使用されるマップ12の局所的な静的コピーに表される環境14の特性との間の差異を指す。位置推定精度は、ある閾値の変化量までは平坦なままであり、閾値は図において「X%」として描かれている。閾値を超える更なる変化は、位置推定精度を低下させる結果となる。位置推定精度は、(制御された条件での実験以外では)一般的に測定可能な量ではないが、位置推定品質は、位置推定精度の指標となる。悪い位置推定品質は、悪い位置推定精度の確率(閾値を超えた領域-X%)と相関がある。この閾値までは、環境の変化量に応じて位置推定品質は劣化するものの、位置推定精度は大きく劣化することはない。
【0048】
ロボット16で使用中のマップ12の適正な割合が環境特性の観察によってマッチングされる限り、環境内におけるロボット16の位置及び姿勢が正確に推定されるので、この挙動が達成される。マッチングが前述の閾値を下回ると、ロボットの姿勢の不確実性に起因する瞬間的な位置推定精度の低下が著しく加速し、その結果、所定の時間ウィンドウ内で正しい姿勢の決定と誤った姿勢の決定との間で切り替わり、ロボット16が環境14内で「見失われる」ことにつながる可能性がある。
【0049】
描かれたラベルを使用して、図示された「A」の精度レベルは、基準又は開始精度レベルであり、「B」の精度レベルは、環境内で動作するロボット16に対してマップ更新が必要か否かの決定点となる品質レベルの同等の低下に対応する、精度低下の閾値を表す。一実施形態において、コンピュータ設備10は、ロボット16のいずれか1つにおける位置推定品質がBの閾値を下回ると判断した場合、MUI24がロボット16にプッシュされる必要がある。図中「C」として示される、より低い第2閾値は、全てのロボット16、又は少なくとも評価された位置推定品質がCの閾値を下回る任意の個々のロボット16について、緊急停止を宣言又は課すための決定点として使用されてもよい。
【0050】
広義には、位置推定品質は、全てのロボット16によって独立且つ個別に計算されるメトリックである。1以上の実施形態において、各ロボット16は、コンピュータ設備10による後続のマップ更新で使用されるログデータ22として、センサデータ及び場合によっては他のデータをログするための条件として、位置推定品質メトリックを使用する。例えば、各ロボット16は、その位置推定品質が定義された閾値を下回っているか否かに依存して、データをログするか否かを決定する。また、ロボット16によって決定された個々の位置推定品質からコンピュータ設備10が推定するフリートロボット全体の平均/最小位置推定品質が存在する。この要約又は全体的な位置推定品質は、ロボット16からのログデータ22に基づいて、マップ更新を実行するためのトリガ条件としてコンピュータ設備10によって使用される。
【0051】
図8は、ロボットフリート内の個々のロボット16が、手動更新プロセスを使用するなどして、マップ12の静的コピーを用いて構成されたと仮定する処理又は動作フレームワーク800を例示する。マップ12は、予想されるマップの変化の領域を表す1以上の積層された「更新領域」を有してもよい。そのような領域の例としては、ローディングドック、材料ステージング領域、他の移動式機械がある領域などがある。
【0052】
動作の「タスクフェーズ」(ブロック802)は、環境14内のロボット16(又は複数のロボット16)の通常の自律的な動作、例えば、ロボット16が1以上の材料搬送ジョブの実行において環境14内を自律的にナビゲートする動作を指す。タスクフェーズは、ロボット16がマップ12の局所的な静的コピーを用いて構成されることに依存する。
【0053】
1以上の実施形態において、タスクフェーズを実行するロボット16は、機上のモンテカルロ位置推定(MCL)を使用して環境14内で自己位置推定を実施する。MCL処理は、機上のメモリに保持されたマップ12の現在の静的コピーを使用して、ロボット16の姿勢を推定するとともに、ロボット16によって使用されているマップ12の静的コピーに対応するセンサデータの比率を示す位置推定品質メトリックを計算する。更に、ロボット16は、センサデータをアーカイブファイルに記録する。このログ行動は、以下の2つの基準によってゲートされる:(1)ロボットは、マップ12に対して予め定義された更新領域の1つに位置していなければならない。(2)ロボット16の位置推定品質は、ある閾値範囲内でなければならない。
【0054】
前述した項目(2)の決定点は、
図8のワークフローにおいて、「位置推定品質は良好?」で表される。(YES、ブロック804から)。位置推定品質が高い場合、環境14に漸進的/一時的な変化があるかもしれないが、ロボットのメモリに保持されたマップ12の局所的な静的コピーは、環境14を十分良好に表し続ける。その結果、ロボット16は、
図8において「バックグラウンドデータの収集」(ブロック806)として示され、漸進的な変化を観察するために貴重なものとなり得るセンサデータを収集する。逆に、位置推定品質が低い場合、これは、ロボット16によって保持されるマップ12の静的コピーが実際の環境を正確に表していないことを意味し、マップ更新が有益である可能性が高い。
【0055】
ワークフロー内の「位置推定品質が低下しているがまだOK?」"で表される、後続の決定が行われる(ブロック808からYES)。位置推定スコアは、第2閾値と比較される。位置推定品質が低下しているが、ロボット16がタスクを完了するのにまだ十分である場合、ロボット16は、バックグラウンドのデータ収集(ブロック810)を維持しながら通常通り動作し続けることができる。また、より高品質のマップができるだけ早く利用できるように、ロボット16からこれまでに収集されたデータでマップ更新を計算する時間のかかるプロセスを開始してもよい。
【0056】
また、位置推定スコアがフリートの動作を損なうほど低い場合(すなわち、ロボット16が間もなく見失われて停止する場合)、ロボット位置推定品質が悪くなる(ブロック812からYES)。ここから、ロボット16のフリートを動作に復帰させるために、マップ更新が必要とされる。ロボット16の位置推定はオフされ、データログ及び位置推定のための最後のマップの提供もオフされる(すなわち、これら全ての構成要素がオフされる)。しかしながら、最も重要なことは、マップ更新プロセスがトリガされることである。コンピュータ設備10が利用可能な位置推定データ22を使用してMUI24を決定し、マップ更新の対応する品質チェックが実行されてもよい(ブロック814)。
【0057】
特に、マップ更新アルゴリズムは、環境内における漸進的な変化の観察を含む、これまでに収集されたログデータ22の全てを入力として取得し、マップ更新プロセスを使用して、検知された変化を含むロボット16のフリート用のマップ12の新しいバージョンを計算する。少なくとも一実施形態において、マップ更新プロセスは、「マルチモーダル、マルチユニットバッチ最適化」更新プロセスであり、環境14の複数のモードに対して収集されたログデータ22を考慮すること又は他の方法で調整すること、及びログデータ22が異なるロボット16からのデータを含み得るという事実、及びログデータ22が「オフライン」であり且つデータの生成をもたらしたライブ位置推定動作に続くバッチで処理するという事実を意味している。更新プロセスは、「バッチ最適化マップ更新」を示す「BOMU」と記載されることがある。
【0058】
1以上の実施形態において、BOMUは、バッチ最適化SLAMアルゴリズムである。「従来」のSLAMは、ロボットが環境内でナビゲートしながら位置推定とマッピングとを同時に実行するものであり、環境の変化にもかかわらず、一定レベルの位置推定品質を維持することができる可能性がある。しかしながら、本明細書で開示するバッチ最適化SLAMは、位置推定とマップ更新とを一緒に行う従来のSLAMに存在するリスクであって、位置推定が完全に失われマップ更新が破綻するリスクに対してロバストな静的マッピングの高い品質を継続的に実現する。また、連続的なSLAMの性質は、ロボット16が正確な目標点を決定し、対応する経路計画動作を実行することを不可能にする。
【0059】
バッチ最適化SLAMとは更に対照的に、連続的なSLAMは、典型的には、観測データをフィルタリングするための決定を行うために、最後のセンサデータの小さな(実行中の)時間ウィンドウしか見ていない。そのため、連続的なSLAMはノイズや動的アーティファクトに弱く、そのようなノイズやアーティファクトが誤ってマップに含まれることがある。更に、連続的なSLAMは、ロボットがいる世界の真の測定可能な座標系に関して、マップ内のランドマーク位置のドリフトを引き起こす。また、連続的なSLAMプロセスは、連続的なSLAMが、環境14内でのロボット16のライブ動作中にロボット16に高頻度の姿勢更新を提供する責任を負うため、本明細書に記載されたバッチ最適化SLAMよりもはるかに厳しい計算要件を有する。
【0060】
バッチ最適化SLAMにおいて、ロボット16は、リアルタイム又はほぼリアルタイムの位置推定を実行するが、マップ更新の責任は、コンピュータ設備10に「オフロード」される。従って、コンピュータ設備10は、データのより長い又はより精巧なフィルタリングを実施し、環境14の複数のモードに対して複数のロボット16からの複数のデータセットを考慮する自由がある。コンピュータ設備10においてオフラインでこのようにバッチベースのSLAMを実行することによって、より複雑又は厳密なSLAM処理が可能になり、従来知られているように連続的なSLAMを実行する任意のロボット16内で達成可能であるよりも高品質のマップ更新のセットを生成することができる。
【0061】
図8に描かれたフレームワークに戻ると、BOMUを使用してコンピュータ設備10によって生成された新しいマップの品質、すなわちマップ12の更新バージョンの品質が、ブロック816において評価される。1以上の実施形態において、当該評価は、プログラム的(すなわち、コンピュータ設備10によって決定される信頼性の尺度)及び主観的(すなわち、人間のオペレータによる)の両方である。このマップ計算及び評価は、少なくとも、そのような動作が、位置推定品質がある重要な閾値に低下する前に行われる場合、ロボット16の通常の動作を中断して生産を停止することなく、バックグラウンドプロセスとして行われ得る。
【0062】
品質が十分であることが判明した場合(ブロック816からYES)、コンピュータ設備10は、MUI24をロボット16のフリートにプッシュし(ブロック818)、当該ロボット16は、その後、MUI24を使用してマップ12のそれらの局所的な静的コピーを更新する。しかしながら、新しく更新されたマップの評価された品質が不十分な場合(ブロック816からNO)、環境14の手動の再マッピングが要求される(ブロック820)。
【0063】
ワークフローを実行する責任は、ロボット16とコンピュータ設備10との間で共有される。一実施形態において、コンピュータ設備10は、フリート内の個々のロボット16からのログデータ22のアーカイブログを連続的にダウンロードする(バックグラウンドデータ収集動作の出力)。コンピュータ設備10は、ロボット16が予め定義されたアップデータ領域のいずれかにいつ入り、いつ出るか、及びそれらの領域についてどのような位置推定スコアを報告するかを追跡する。コンピュータ設備10は、フィルタリングされた平均(又は最小)位置推定スコアが特定の閾値を下回ると、マップ更新のためにBOMUを呼び出すことを選択可能である。或いは、コンピュータ設備10は、例えば設定された間隔でBOMUを繰り返し呼び出すが、位置推定スコアが高い限りは単に結果を保存するだけである。BOMUを継続的に呼び出すことは、実装に依存する詳細であるが、各更新プロセスが、より小さなデータセット、すなわち、ログデータ22のより小さなバッチで動作し、より小さな変更を組み込む必要があるので、計算をより効率的にするためすることが望ましい。なお、提示されたマップ更新プロセスは、モバイル産業ロボットによく適しているが、この技術は、ドローンネットワーク、共有ビジュアルポジショニングシステム(VPS)を有する携帯電話ネットワークなどの他のフレームワークに適用することも可能である。従って、ロボット16は、ログデータ22を提供するある種のエンドユニットとして広義に理解することができる。
【0064】
1以上の実施形態において、本明細書に開示されるマップ更新フレームワークは、粒子フィルタベースのSLAMフレームワークを使用し、マップ12によって表される環境14内の1以上のロボット16のタスクフェーズの動作中に生成されたログデータ22を使用して、コンピュータ設備10によるマップ12の更新を可能にする。フレームワークは、環境の漸進的且つ周期的な変化を識別するマップ更新を生成し、マップ更新の生成時まで、環境14内で動作中のロボット16によって記録されたセンサ観測を使用して、ロボット16の展開されたフリートに対して最も正確なマップを提供する。これらのセンサ観測は、個々のロボット16によって提供される各ログデータ22に取り込まれる。
【0065】
開示された技術から得られる利点の理解は、「オフライン」又は「並列」プロセスとしてマップ更新を見ることによって助けられる。「オフライン」又は「並列」プロセスは、マップ12の更新バージョンに到達するために実行されるデータ処理及び計算がコンピュータ設備10で行われる一方で、関係するロボット16がマップ12の現在のコピーを使用して環境14内で動作を続けられることを意味する。この配置のため、単一のロボットにおける従来のSLAM処理と比較して、企図されたマップ更新は、複数のロボット16から、より精巧なフィルタリング及び処理を使用して、より長い時間フレームにわたってより多くのデータを考慮することができる。
【0066】
マップ再生及び/又はロボット16への最新マップ更新のプッシュは、例えば、平均/最小位置推定品質が特定の閾値を超えて低下したことに応答して発生する。個々の位置推定品質値のそれぞれは、マップ12のそれらの静的コピーを使用して環境14内で動作している間に個々のロボット16によって達成される。コンピュータ設備10によって決定された最新のマップ更新に基づいてマップ12のそれらの局所的な静的コピーを更新することは、位置推定品質を、新しく生成されたオフラインマップのものに実質的に戻すようにリセットする。更に、これらのマップ更新は、手間のかかる手動プロセスからではなく、ロボット16が環境14内で動作している間に生成するログデータ22を使用して生成される。ロボット16が更に先でも類似の空間で動作することが予想されるため、その観察結果をマップ12の更新バージョンに組み込むことで、ロボットの自己位置推定性能が向上する。
【0067】
全体的なマップ更新のフレームワークは、ロボット16が環境14内の「通常の」動作中にログデータ22を生成し、コンピュータ設備10がバッチベースの処理のためにログデータ22を集約又はその他の方法で収集し、最新のマップ更新を決定する、ハイブリッド分割として見ることができる。
【0068】
環境の変化は、漸進的である場合がある。典型的な例は、パレットや箱が、再現性の乏しい短時間又は長時間、地平線上で漸進的に移動する場合(これらは通常、手動で移動し、フロアマーカーとほぼ整列される)である。フリート内のロボット16の位置推定性能は、影響された領域で動作する個々のロボット16によって実行される位置推定プロセス中に無視できないほど漸進的変化が大きくなると、劣化し始めることがある。マップ更新プロセスを使用して、ロボット16は、これらの変化が劇的でない場合、ロボット16を良好に位置推定させ続けるために、マップ更新に組み込まれた増分変化に対応する構造を使用することが可能である。典型的には、変化を観察する再視察の間の増分変化が30%未満である場合、マップ更新プロセスが固定ベースマップに対する100%を超える変化を許容することが期待できる。
【0069】
また、環境の変化は、周期的であり得る。このような変化は、例えば、午前中(例えば9時)には、出荷用の箱がドックで準備されている倉庫や出荷センターの典型的な例である。午後(例えば午後4時)までに出荷用トラックに積み込まれた場合、環境14のマップは、午前中とは全く異なって見える。翌日、出荷用の箱は、午前9時にドックに戻される。このような周期的なマップの変化は、典型的には毎日、或いは他の何らかのパターンに従って起こる。同様の長期的なマップの変化の動作及び履歴は、環境14内のゲート、ドア、及び他の構造物でも起こり得る。ここで説明するマップ更新プロセスは、マルチモーダルマップ表現を生成することができ、各モードは、環境14の特徴的な構成を表し、一日中及びより長い時間、地平線上での最適な位置推定のためのマップの周期的変化を特徴付けることができる。従って、モダリティは、マップ12に関して環境変化を特徴付ける上で重要な属性である。
【0070】
他のシナリオにおいて、環境14の変化は、全体的に動的であり得る。これらのシナリオにおいては、変化する構造がシーンを支配する。この支配の例は、ロボット16が「デッドゾーン」で観察する唯一の構造的特徴が移動可能な物体(倉庫のパレットなど)である一方、ロボット16が自己位置推定のために使用するマップ12の局所的な静的コピーがマップ12の関係エリア又は領域内に移動可能な物体がない状態で作成されている場合に生じる。従来、このような状態でロボットを位置推定させるためには、再マッピングを繰り返す必要がある。しかしながら、本明細書に開示されたマップ更新プロセスは、動的物体(可動物)からの特徴から動作することができるので、そのような変化をマップの一部として特徴付けることができる。従って、変化が劇的ではなく、少なくとも最小数の障害物がマップ更新間でその姿勢を保持する限り、結果として得られる位置推定は、そのような変化に対して健全である。
【0071】
前述したように、マップ更新プロセスは、分離プロセス(すなわち、更新は、個々のロボット16の進行中の通常動作から分離される)の形態を取り、コンピュータ設備10によって実行されるBOMUによって駆動される。少なくとも一実施形態において、BOMUは、1以上のロボット16からのログデータ22を使用してマップ12の更新バージョンを生成するバッチ最適化SLAMアルゴリズムである。少なくとも一実施形態において、各ロボット16からのログデータ22は、ロボット16上で実行されるモンテカルロ位置推定(MCL)機能からのデータ、並びに環境センシングデータ及びオドメトリデータを含む。MCL機能からのデータは、例えば、環境センシングデータ及びオドメトリデータに依存して計算された姿勢データを含む。
【0072】
本明細書において、MCL機能は、マップフレーム内のロボットの位置を決定する。MCL機能は、実行中の特定の設計及び動作要件に応じて、他のタイプの位置推定アルゴリズムで代用することができる。少なくとも一実施形態において、ロボット16における自己位置推定は、粒子フィルタベースのMCLであり、コンピュータ設備10によって実施されるバッチ最適化SLAMは、粒子フィルタベースのSLAMアルゴリズムである。少なくとも一実施形態において、コンピュータ設備10によって実施される粒子フィルタベースのSLAMアルゴリズムは、Rao-Blackwellized粒子フィルタアルゴリズムである。ロボット16における位置推定動作及びコンピュータ設備10におけるマップ更新プロセスは、粒子フィルタの使用に限定されないが、粒子フィルタベースの実施例は、少なくともいくつかのシナリオにおいて特定の性能及び品質の利点を提供する。
【0073】
図9は、一実施形態に係るマップ更新プロセスの状態図である。「エンドユニット」は、マップ12によって表される環境14内の自己位置推定のためにマップ12の局所的な静的コピーを使用する本質的に任意のタイプのロボット16を指す。見られるように、エンドユニットの位置推定品質(又は等価的に本明細書では「位置精度」として表現される)が、フロートの動作が停止されるか又は停止される危険が切迫しているほど低下した場合、コンピュータ設備10は、BOMUからマップ更新を呼び出す。コンピュータ設備10は、位置推定品質の劣化が発生した環境14内の時間及び領域に関連するログファイル(ログデータ22)を使用してBOMUを実行する。
【0074】
ロボットA及びBと表される2台のロボット16が、3つの部屋の環境で動作している例を考える。対応するマップ12は、各部屋に1つずつ、3つの領域を有する。この例において、時間期間「t0」の間、ロボットAは専ら領域1内にあり、ロボットBは専ら領域3内にある。時間期間「t1」の間、ロボットAは領域1及び領域2内にあり、ロボットBは領域3及び領域2内にある。ロボットAは0.5の位置推定スコアを繰り返し達成し、ロボットBは1.0の位置推定スコアを達成する。従って、第1領域の平均位置推定スコアは、0.5(ロボットAのみによる)であり、第3領域の平均位置推定スコアは、1.0(ロボットBのみによる)である。しかしながら、領域2の平均位置推定スコアは、0.75(ロボットA及びロボットBの時間加重平均)と計算されてもよい。マップ12の各領域のログファイルのセットは、その領域に位置するロボット16からのログデータ22で構成される。例えば、領域2に対するマップ更新は、時間期間「t0」からのファイルを含まないことに留意すべきである。
【0075】
マップ更新は、位置推定品質平均を使用して、又は各ロボット16に対する個々の位置推定品質(スコア)を使用してトリガされてもよい。前述したように、各ロボット16からのログデータ22は、少なくとも、ロボット16によって使用される1以上のタイプのセンサからロボット16によってログされるセンサデータを含む。センサデータは、ロボット16が自己位置推定を行う際に使用するオドメトリデータを含んでもよい。更に、ログデータ22は、位置推定処理結果、例えば、センサデータ及びオドメトリデータを使用してロボットの自己位置推定アルゴリズムによって生成される出力を含んでもよい。
【0076】
マップ12の新しいバージョンを生成するために実施されるマップ更新プロセスは、時間がかかる可能性がある。しかしながら、前述したように、1つの利点は、コンピュータ設備10がマップ更新を決定する間、ロボット16がマップ12のそれらの現在のコピーを使用して環境14における通常の動作を継続できることである。
【0077】
マップの更新が完了し、マップ12の更新バージョンが生成される(例えば、新しいマップファイルが生成される)と、その結果は、ロボット16にプッシュされるか、少なくとも一実施形態において、マップ12の更新バージョンが十分な品質を有するか否かを評価するために人間のオペレータに提示されてもよい。この場合、オペレータは、以下の4つのオプションを有する:(1)オペレータは、マップ品質がフリートへ展開するには不十分であると判断し、手動再マッピングプロセスの実行を優先して前記マップを拒絶する。(2)オペレータは、マップ品質がフリートへ展開するには不十分であると判断してマップを拒絶し、フリートが運転を継続して、新しいマップがより新しいログデータ22で生成される。(3)オペレータは、マップ品質は十分であるが、フリートが停止してマップ更新を送信することを正当化するのに十分な情報を含んでいないと判断する。すなわち、マップ12の変更が次の更新に延期されることを意味する。(4)オペレータは、マップ品質は十分で、含まれる変更が直ちにフリートへ送信することが必要であると判断する。すなわち、ロボット16のフリートを停止して、全てのロボット16がマップ12の新しいバージョンで更新され、環境14内でのタスク動作をマップ12の更新バージョンを用いて再開することを意味する。
【0078】
図10は、マップ更新プロセスをサポートするための、一実施例におけるフレームワークの機能システム図である。「センサインタフェース及びログ」のブロックは、(タスクフェーズ動作中にロボット16の機能を主に駆動する)リアルタイム位置推定から関連するセンサ及び位置推定状態データを収集し、ログファイルに書き込み、圧縮し、コンピュータ設備10が通信インタフェースを通じて収集できるようにする責任を負うロボットソフトウェアを含む。
【0079】
例示的なロボット16のリアルタイム位置推定ブロック(機能)は、マップ12によって表される環境14内の自己位置推定のためにロボット16で使用中のマップ12の静的コピーに対するロボット16の姿勢を提供する位置推定アルゴリズムを表す。1以上の実施形態において、ロボット16は、MCL機能を使用してこの機能性を実装する。少なくとも一実施形態において、内部アルゴリズム状態情報と同様に、姿勢決定は、マップ更新プロセスを実行するためにコンピュータ設備10に提供されるログデータ22の全て又は一部を構成する。
【0080】
コンピュータ設備10における「サーバインタフェース」のブロックは、コンピュータ設備10上で実行される、或いは、タスクの実行のためにロボット16を派遣する責任を負う「フリートサーバ」として機能する関連コンピュータシステム上で実行される、基礎的ネットワークスタックと相互作用する機能性を表す。いずれの場合においても、コンピュータ設備10は、ロボット16から直接又は間接的にログデータ22を受信又は取得し、フルSLAM BOMUによって生成されたMUI24をロボット16に直接又は間接的にプッシュする。
【0081】
コンピュータ設備10における「位置推定/マップ品質検知インタフェース」のブロックは、個々のロボット16に対する値から、平均/最小位置推定品質及びマップ12内の位置を決定し、1以上の実施形態において、マップ更新が必要であるか否かを確認するためにそのような決定結果を使用する。
【0082】
コンピュータ設備10における「スキャン、センサログを収集するためのインタフェース」のブロックは、コンピュータ設備10に実装される1以上の機能を表し、それによってコンピュータ設備10は、ロボット16からログデータ22を取得、整理、及び処理するように動作可能である。
【0083】
コンピュータ設備10における「マップ更新/プッシュインタフェース」のブロックは、MUI24をロボット16にプッシュするために呼び出される機能を表す。
【0084】
コンピュータ設備10における「ユーザ選択/承認」のブロックは、コンピュータ設備10における機能性を表し、それによりコンピュータ設備は、マップ12に対する更新を受け入れるか拒否するためのユーザ干渉を可能にする。ユーザは、展開のために、生成されたマップのモダリティを選択することも可能である。また、この機能性は、ユーザがマップ更新領域を選択すること、及び/又は、余分なモードを無視することを可能にする。
【0085】
コンピュータ設備における「マルチモーダル フルSLAM BOMU」のブロックは、1以上の実施形態に係るコアマップ更新機能性を表す。少なくとも一実施形態において、このブロックは、現在利用可能なログデータ22からマップ12の新しいバージョンを決定するためにフルSLAM更新を実行するグローバル最適化を備えたRao-Blackwellized粒子フィルタとして実装される。このブロックは、従来のSLAM、粒子フィルタに基づく従来のSLAMであっても、多くの区別を提示する。
【0086】
まず、前記ブロックは、マルチモーダルマップ生成及びマップ管理のために構成されたフルSLAMのバージョンを実行し、以下のタイプの更新を提供するように構成される:(a)アプリケーションの要件に従って環境14の変化が恒久的に組み込まれて周期的に変化しないという仮定を反映し、1つのマップモードのみが生成される単一のマップ更新(この動作は、漸進的変化に対応できる)。(b)マップ更新プロセスがマップ12の複数の更新バージョンを生成し、各「バージョン」が環境14の異なるモードを表すマルチモーダルマップ更新。このように、任意の所与のロボット16にプッシュされたMUI24は、ロボット16が環境14の複数のモードに対するマップ12の更新バージョンを受け取ることを意味する、マルチモーダル更新を含んでもよい。MUI24を使用してロボット16によって更新されるマップ12の局所的な静的コピーは、2以上のマルチモーダルマップを含み、ロボット16は、該当する環境モード(例えば、時間、曜日など)に対応するモーダルマップを使用する。
【0087】
更に、コンピュータ設備10によって実装されるBOMUは、以下のような更なる区別のポイントを提供する。(1)内部粒子状態(ロボット軌道に沿った姿勢及び各粒子の確率的占有グリッドを含む)を既存のマップファイルに保存及びロードするように動作可能であり、それにより、実行にわたってマップ更新状態を保存すること。(2)(i)位置推定がロボット16内においてオンラインで起こり、マップ更新がオフラインで起こる(すなわち、ロボット16の外部で且つロボット16が環境14内で進行中のタスク動作を行うのと並列して又はそれとは独立して起こる)分離SLAMプロセスと、(ii)オフラインプロセスで両方が同時に行われる結合SLAMプロセスと、を含むハイブリッドプロセスを実装すること。従来のSLAMパイプラインにおいては、現在のベストマップのワールド座標系(粒子に関連付けられたもの)がベースマップのものから大きく逸脱することがあり得る。これは、SLAMの本質的な性質によるものであり、位置推定におけるエラーやドリフトは、ワールド座標からのマップ座標のずれとして現れ、その結果、ワールド座標からの位置推定の推定値の更なるずれやドリフトが発生する。この対策として、MCL粒子を使用することが可能である。しかしながら、MCL粒子は、一般にノイズが多く、飛び跳ねるため、きれいなマップ更新に重要な滑らかな軌道推定を行うことができない。更に、タスクフェーズのロボットは、通常、最高速度に近い速度で動作しているため、MCL粒子の状態の推定値は、疎であり、広範囲の瞬間的/過渡的な誤差を含んでいる。従って、「既知の姿勢を用いたマッピング」というアプローチは、実行不可能である。このため、SLAMに基づくマップの更新には、(ドリフトやワールド座標の誤差は少ないが、ノイズが多く、飛び跳ねる)クローンMCL粒子と、(滑らかで局所的に精度が高いがドリフトがある)独立進展型粒子とを組み合わせたハイブリッドモーションモデルを使用する。
【0088】
そのようなBOMUの機能性は、これらは一緒に、コンピュータ設備10におけるBOMUのバッチ最適化SLAMの実装の一例を表す
図11A及び
図11Bに現れている。注目すべき機能ブロックは、
図11A及び
図11Bに現れ、マップ12の更新バージョンを生成するために、各ロボット16からの推定軌道のグローバル最適化によってサポートされる、粒子フィルタベースのマップ更新プロセスを概説する。フルSLAMパイプラインのコンテキストにおけるコアマップ更新のブロックの機能性を以下に説明する。ソフトウェア設計の観点において、このフレームワークは、独立したPC/IPC、Edgeインスタンス、又はクラウドにある別個のマップアップデータサーバとして動作するコンピュータ設備10上で動作するように統合され、フレームワークの展開における拡張性及び柔軟性を可能にすることに留意すべきである。
【0089】
本実施形態におけるBOMUの特に注目すべき特徴は、モーションモデルに依存する粒子の進展モデルである。典型的な粒子フィルタSLAMパイプラインにおける粒子の進展のための運動モデルは、オドメトリベースの運動モデルを使用するが、BOMUにおいては、ハイブリッドアプローチが使用される。本明細書においては、状態推定プロセスとして、「分離マップ更新プロセス」と「結合同時位置推定及びマップ更新プロセス」の斬新なハイブリッドを採用する。「結合プロセス」は、オフラインで、位置推定ステップとマップ更新ステップとを反復的に同時に推定するが、「非結合プロセス」は、位置推定ステップとマップ更新ステップとを分離し、ロボット16のタスクフェーズ動作の一部として、オンラインフェーズで、ロボット16がMCL粒子フィルタを使用して位置推定を実行し、コンピュータ設備10においてオフラインフェーズでマップ更新が行われる。事実上、このアプローチは、オンラインSLAMバージョンでも、オフラインSLAMバージョンでもなく、ハイブリッドマップ更新プロセスであり、結合プロセスのみが同時である。
【0090】
このように、粒子の進展は、独立(結合プロセス;それ自身の再サンプリング/リセットプロセスを有する)又は並列(非結合プロセス;MCL粒子進展のクローニング)のいずれかの運命に従う。前述したように、ハイブリッド進展モデル(及び対応する運動モデル)は、更新されるマップ12の全体的な整合性及びワールドフレーム接地性を維持しながら、様々なタスクフェーズの位置推定条件からのログデータ22を使用してマップ更新を取り扱うための鍵である。クローン粒子が粒子の多様性を低く保つ一方で、独立粒子は多様性を高め、粒子の管理は、粒子を制約しつつ両者のバランスを保つ。このモデルは、複数のロボットにも適用可能でありながら、単一のロボットのマップ更新処理に適している。
【0091】
従来、オンラインSLAM粒子は、位置推定プロセスとマップ更新プロセスとの間で誤差を分散させ、位置推定のドリフトごとに、生成されたマップがワールド座標から乖離し、その結果、誤差が複合化し、産業環境において極めて重要であるゴールのような固定位置推定置がドリフトする。このようなゴールは、高い忠実度で位置決めすることが求められる。一方、固定されたワールド座標マップを参照するMCL粒子は、ドリフトが発生せず、ゴールなどの固定されたランドマークを維持できるため、マップ更新に最適である。しかしながら、(センサノイズや駆動エラーに由来する)プロセスにおける全てのエラーは、位置推定に反映される。MCL粒子及びそれに対応する位置推定は、ノイズが多く、変化に富み、突然で潜在的に回復不可能な位置推定の損失や低下の発生率を高め、マップ更新プロセスを阻害する可能性がある。従って、(SLAM粒子で行われるような)センサ観測に基づく粒子状態の最適化を伴う粒子の何らかの独立した進展が必要である。
【0092】
標準的な単一のロボットのオンラインSLAMパイプラインからの別の重要な偏差は、コンピュータ設備10によって使用されるBOMUに「軌道閉鎖モジュール」を導入することである。このモジュールは、観測(及び観測時間)の点で重複し、矛盾することもあればしないこともある複数のロボット16からのセンサストリームを管理する責任を負う。これらの矛盾は、(各ロボット16におけるセンサノイズモデルの差、及び、より重要なことに、最適でないスキャンマッチングからのMCL状態ノイズ/エラーの関数として)位置推定におけるノイズに起因し得る。ここで、「スキャンマッチング」とは、ロボットのセンサデータで表されるような検知された環境と、ロボット16によって使用されているマップ12の局所的な静的コピーとの間の相関の度合いをいう。
【0093】
簡単に言えば、スキャンマッチングは、任意の瞬間のロボットのセンサデータがマップ12の一部とどれだけよく一致するかの評価である。例えば、ロボットのセンサデータは、ロボット16が壁やドアの特徴などの障害物や開口部を検知できるようにする2D又は3DのLIDARスキャンから得られる「点群」を含み、これらの検知された特徴は、マップ12のロボットの局所的な静的コピーに取り込まれた特徴の配置と比較される。
【0094】
また、各ロボット16からのログデータ22における矛盾は、環境14における時間的変化から生じる。マップ更新プロセスは、(観測において、すなわち、最後の変化が過去にさかのぼった観測と比較して出力マップに大きな影響を与える必要がある)再帰性を優先して重く評価される。これは、漸進的且つ全体的に動的な変化の特徴である。従って、複数のロボット16からのセンサログを、その観測順(時間的)に淡々とマップ更新プロセスに適用していくことが望まれる。しかしながら、軌道の一貫性を維持すること(及びループ閉鎖をサポートすること)も望ましい。このため、単一のロボットからのセンサデータの時間ステップに対する粒子の進展を保持することが望まれる。従って、これらの要件は、相補的である。
【0095】
また、観測における頻度は、重要な考慮事項であるが、これは隠れマルコフモデル(HMM)モジュールによって明示的に処理される。軌道閉鎖モジュールは、時間的及びノイズ分散の不一致を処理し、軌道を閉鎖するために粒子進展プロセスの境界を計算することによって観測を融合させる。しかしながら、軌道は、潜在的なループ閉鎖や粒子の発散が起こらない安定した点でのみ閉じることができる。これは、結合状態と非結合状態との間の偏差(非結合状態によって報告された、ピークの位置推定スコア及びモダリティカウントとともに)を決定することによって、2組の状態が一致するときに軌道の閉鎖を許可することによって達成される。1つのロボットの観測から粒子状態に対応する軌道の閉鎖が与えられると、時間及び観測シーケンスが重複する2つ目のロボットからの観測は、この軌道を閉鎖して他のロボットからの観測シーケンスに切り替える前に、この軌道に沿ってマップを更新するために使用される。最後に、最初の軌道よりも時間的に遅い最初のロボットからの観測シーケンスは、マップ更新プロセスに組み込まれる。
【0096】
従って、軌道の閉鎖は、特定の制約に基づいて複数のロボットからの軌道を閉鎖することによって観測の軌道の一貫性を維持する一方で、マップ更新動作の因果性及び再帰性を確保する。事実上、軌道閉鎖モジュールは、観測の「再帰性/因果性」に対する「軌道の一貫性」のバランスを取る。
【0097】
マップ更新観測の間の矛盾(壊れた線形構造(例えば壁)などの人工物を潜在的にもたらす可能性がある)という点で、前の段落で詳述した考慮事項のいくつかは、マルチロボット状態融合/グローバル最適化及びマップ精密化モジュールによって更に軽減される。グローバル最適化処理の場合、相対的な姿勢因子を用いて、複数のロボット16からの発散する画素占有率観測値を非線形最適化処理で平滑化し、発散する観測値の位置推定値を収束させることができる。また、マップ精密化プロセスは、画素占有率を線分に精密化し、観測の不連続性や切れ目を埋めることで、複数のロボットからの観測の整合性を高めることができる。これらのモジュールは、統合されたシステムの一部として、以下に詳細に説明される。
【0098】
マップ及びシステム状態の初期化
【0099】
典型的な又は従来のオンラインSLAMパイプラインの場合の基本的な仮定は、オンラインマッピングプロセスの開始を提供する固定原点を有する未知の世界である。逆に、想定されるマップ更新では、SLAMベースの更新プロセス(従って、SLAM状態)を、タスクフェーズ動作(位置推定を伴う)のためにロボット16に既に配備されている世界の既知の表現(マップ)に関して初期化する必要がある。従って、コンピュータ設備10におけるBOMUは、世界の表現(メートルマップ)をSLAM座標空間における占有グリッドに変換する責任を負うモジュール又は機能を含む。(世界空間の)マップは、通常プロット座標系で表現されるが、占有グリッドは、ビニング画像座標系を使用する(従って、縦軸を反転させ、原点を再配置する)ことに留意すべきである。更に、SLAMパイプラインで使用される占有グリッドは、効率的なメモリ管理のために対称的な軸スパンを維持する。マップ初期化プロセスは、典型的なSLAMベースのマッパーによって生成された確率的自由空間グリッドマップ(固定ベースマップ)を占有グリッドに変換し、このマップを用いて状態推定フィルタの全ての粒子のマップの状態を初期化する。また、このモジュールは、マップ更新のインスタンス間でSLAMプロセスの状態を保持するシステム状態変数を再初期化する。
【0100】
粒子状態の初期化及びクローニング
【0101】
前述したように、マップアップデータは、SLAMベースのマップの更新のために、ハイブリッドモーションモデルを使用する。このモジュールは、粒子進展モジュールと並んで、典型的なSLAMパイプラインから最も大きく逸脱したものである。タスクフェーズでMCL位置推定によって定義されたロボットの最良の推定姿勢に加えて、ハイブリッドモデルは、MCLの非結合位置推定粒子状態を消費する。インタフェースは、この動作をサポートするためにロボット16におけるMCLに組み込まれ、状態ロガーは、コンピュータ設備10によるプロセスのためにログファイルにこの情報を記録する。これは、MCL粒子状態に関連する全ての変数(主に各粒子に対するロボットの推定姿勢(位置及び方位)、粒子間のベスト、粒子分布情報、ピーク、位置推定スコア、尤度、確率、粒子適合計算などで使用されるレーザスキャンデータ)を含むことに留意すべきである。このモジュールは、ハイブリッド粒子フィルタを読み込んで初期化する。結合更新プロセス及び非結合更新プロセスに対応して、粒子の進展のための運動モデルは、それぞれ独立したオドメトリベースの運動モデル(オンラインSLAMに似ている)、及び並列進展モデルを使用する。
【0102】
MCL粒子は、はるかに数が多い(MCL粒子状態を計算するプロセスは、位置推定状態の検証のみを含み、安価であり、それにより、少ないリソースで計算することができるので、典型的には数千である)が、これらの粒子は、オドメトリ推定値の周りに密接に集中し、精密ナビゲーション状態に適していることがわかる。また、これらは、積極的な再サンプリングのため、多様性に欠ける。一方、独立したSLAM粒子は、数が少ない(SLAM粒子の状態を計算するプロセスには、位置推定/姿勢の高価な最適化が含まれ、それに続いてマップが更新されるため、通常、数十個)が、より広い範囲での拡散や偏差が許容される(位置推定のエラーやマップ座標の更新時のジャンプに適応するため)。
【0103】
更に、後述するように、特定のユースケースを処理するために、ヌルモデルが使用される。具体的には、MCLからのスキャン同期された最良の粒子推定値が、その確率スコア及び尤度とともに、並列進展モデルの粒子にクローニングされる。同様に、MCL粒子分布のピークを形成する再サンプリング粒子の限定された最良のセットは、並列進展モデルの追加の粒子にクローン化される。最後に、これは、再サンプリングされたMCLのピークに対応する追加の粒子によって増加されるが、中央のピークから更に離れた場所に分布している。これは、粒子の多様性を向上させるために行われる。
図12から分かるように、典型的な動作におけるMCL粒子の分布の多様性及び様式は、固定マップでは低くなる(精度を考慮する必要がある)。これは、ループ閉鎖動作がなければ再位置推定が成功するような場合に特に当てはまる。オドメトリに基づく運動モデルは、独立した進展と、結合された位置推定及びマップ更新プロセスとを通じて、このような状況を回避するのに役立つ。これは、MCLによるロボットの姿勢の最良推定値(スキャンマッチング推定値又はオドメトリ補間値)を、粒子を進展させる結合運動モデルと同時に使用するものである。また、MCL粒子は、離散的なジャンプを示すことがわかる。
【0104】
図12を参照すると、ロボット16におけるタスクフェーズ位置推定中の粒子の進展の簡略化された図が描かれている。前の粒子は、確率に従って重み付けされるが、この図では、確率の重み付けを描写する試みも、粒子の実際の数を描写する試みもない。後の粒子は、スキャンマッチング補正後の粒子の状態を表し、分布のピークは、再サンプリングしたピークである。また、この図は、オドメトリ補正された最良の姿勢を補間して示している。パネルAは、20m×20mの空間を上から下へ移動するロボット16の軌道を、破線で示したものである。パネルB及びCは、粒子の状態を「拡大」して示したものである。なお、(i)前の粒子は、後の粒子に遅れを取り、粒子の広がりは、並進運動中に大きく運動方向を向いている(プロットの上半分)。(ii)粒子の広がりは、回転オドメトリが不十分であるために方位があいまいで、より円形になっているが、遅れはない(プロットの中央)。(iii)両方の運動を通して粒子の分布は、典型的には単峰性であり、積極的に再サンプルしているので多様性ではない。(iv)報告された最良の姿勢は、補間により粒子の姿勢になる。
図12に描かれた粒子データの全て又は一部は、ロボット16のログデータ22に「位置推定データ」として記録され、コンピュータ設備10がそのマップ更新動作で使用するために報告される。
【0105】
マップ更新のための粒子の進展及び管理
【0106】
前述したように、独立モデルに従う粒子の進展は、オドメトリベースの結合型運動モデルを使用する。更に、この運動モデルは、特定の使用例のためにヌルモデルによって変調される。特徴のない廊下(進行方向に縛られない環境)に沿ったロボット軌道のセクションの間、後の粒子(観察後、すなわち、スキャンマッチング)は、運動の方向に沿って及びこの方向に対する方位角において著しく発散し得る。また、ロボットの片側に構造物がない区間では、観測可能な構造物がある側から粒子が発散してしまうことがある。このような進展を制限するために、ヌルモーションモデルが使用され、共分散状態がそのような環境構造に遭遇する直前の状態に凍結された粒子に直接オドメトリが適用される。一般的に、独立進展モデルに従った粒子の進展及び管理(再サンプリング/キリング(killing)/リセット)動作は、一般的な粒子フィルタSLAMパイプラインと同様である。並列進展モデルの場合、粒子は、MCL粒子の進展及び管理動作をコピーし、再サンプリング動作もコピーする。その結果、各世代や反復ステップにおいて、(センサやアクチュエーションの制限に対応するために)多様性で且つ(真のワールド座標参照を保持するために)正確性を兼ね備えた健全な粒子のプールが完成する。独立的に進展した粒子の新規な位置推定値は、結合プロセス(独立進展モデル)によって計算されるが、MCL粒子の位置推定は、クローン粒子の非結合プロセスによってコピーされる。その後、結合粒子及び非結合粒子の両方のプール内の各粒子は、そのマップを更新する。マップ更新動作は、タスクフェーズのインクリメンタル且つ全体的な動的変化に対応するために、(重みパラメータを介して)再確認動作及び占有セルのクリアを優先させる。これは、一般的なSLAMパイプラインのマップ更新プロセスが、可能な限りセル占有観測を保持する一方で、尤度の低い未占有セルをクリアするのとは異なる。このようにマップセルを積極的に更新することで、更新されたマップが現在の環境状態に近いことを保証する。展開のための最終的なマップは、従来のオンラインSLAMと同様に、最良の粒子の決定に基づいて、各粒子によって更新且つ保存されたマップの中から選択される。更に、更新されたマップには、安定且つ永続的な特徴のみが追加される。これらは、数フレーム/ビームにわたって観測された特徴であり、統計的に有意であり、変化点の再帰性ベースの消滅に耐えられる。
【0107】
軌道の閉鎖
【0108】
前述したように、軌道閉鎖モジュールは、マップ更新動作の因果性及び反復性を確保しながら、特定の制約に基づいて複数のロボットからの軌道を閉鎖することによって観測の軌道の一貫性を維持する。軌道の一貫性と因果性及び再現性という2つの要素は、対照的な目標である。軌道閉鎖モジュールは、主に時間的に競合する可能性のある(複数のロボットからの)更新のためのセンサ観測の管理を担当する。これは、粒子進展プロセスを離散的な塊に分割することによって、これらの競合を管理する。言い換えれば、SLAMの粒子進展ステップ及びそれに対応する位置推定及びマップ更新ステップのシーケンスによって定義される軌道は、他のロボットからの(空間及び時間で)重複する可能性がある軌道とその対応する観測値とがマップ更新のために粒子フィルタによって処理される前に、最終化されて終了する(従って、軌道の一貫性が保持される)。第2ロボットの軌道閉鎖が完了すると、前記プロセスは、どのロボットの未処理の読み取りがより早いかに基づいて、更新のために第1ロボットの軌道の残り又は第3ロボットに戻される(従って、因果関係が保持される)。「因果関係」とは、時間的に遅いセンサの観測値を適用する前に、時間的に早いセンサの観測値をマップ更新プロセスに適用し、マップ更新プロセスが、過去のある時間ではなく現在の時間から環境の状態に近いマップが得られるようにすることを意味する。マップの時間的変化が「因果関係」のある方法でマップ更新プロセスに適用され、マップ更新における任意の望ましい「再帰性」動作が維持されることを保証するために、閉鎖を実行することが必要である。従って、「因果性」と「再帰性」との違背は、最小化される。
【0109】
「再帰性」優先を維持することは、環境に対する漸進的且つ全体的に動的な変化を扱うために不可欠である。(「頻度」動作によって特徴付けられるような)周期的な変化は、HMMの遷移確率によって処理される。軌道閉鎖プロセスは、全ての軌道を順次処理する従来の連続/オンラインSLAMとは大きく異なる。従って、従来のオンラインSLAMにおいては、(「因果関係」によって順序付けられる)第1ロボットからのセンサ観測値が、ロボットの軌道に沿ったマップの更新に適用される。続いて、第2ロボットからの軌道データを用いた後、第3ロボットからの軌道データを用いて、順次更新が行われる。従って、このような従来のSLAM手法では、第1ロボットから読み取ったデータの後に、第2ロボットから読み取ったデータをマップ更新プロセスに適用するため、「因果関係」及び「再帰性」の基準に抵触することになる。しかしながら、「軌道の整合性」は、保たれる。
【0110】
時間的な不一致の他に、環境占有観測値の矛盾は、センサノイズモデルの違いの関数として変化する位置推定におけるエラー/ノイズから生じ、(閉形式の解を持たない最適化問題として定式化される)最適でないスキャンマッチングによって、不鮮明で確信のないマップ更新をもたらす可能性がある。頻繁に軌道を閉鎖し、センサストリームを切り替えることは、両方のエラーソースからのアーティファクトを軽減するために重要である。
【0111】
ここで、軌道閉鎖インスタンスがどのように決定されるかという疑問が残る。軌道閉鎖モジュールは、粒子進展プロセスの境界を計算することによって、閉鎖インスタンスを識別する。粒子がマルチモーダルである場合、軌道を閉鎖することができず、軌道内の連続した読み取りが処理されるにつれて、時間的に更に沿った軌道のスパン内でループ閉鎖が発生する可能性を示す。また、粒子の進展が発散している(粒子の分布が広がっている)場合、軌道を閉鎖することができず、再サンプリングや最良な粒子インデックスの切り替えが必要な可能性があることを示す。従って、このモジュールは、結合状態と非結合状態との間の偏差を、非結合状態、全ての粒子の全体の多様性(多くの多様性は、より理想度が低い状態を示す)、反復間の大きなエントロピー変化(すなわち、マップ更新ステップごとにマップの変化が大きい)、及び、再サンプリングからの経過時間の長さ(経過時間が長いほど、軌道が安定し、閉鎖に適している)によって報告されるように、位置推定スコア(観測された環境とマップとの間の不一致が大きいために位置推定スコアが悪くなり、閉鎖の理想度が低い)、及び、ピークのモダリティのカウント(より多くのモードが、可能な真の仮定の偏差が大きいことを示し、閉鎖の理想度が低い)とともに追跡し、2セットの状態の収束の安定点及び全体の粒子の一致を決定する。十分な時間が経過し、これらの必要な条件が満たされた場合、軌道の閉鎖が開始される。
【0112】
これらの条件は、「軌道の一貫性及び完全性」が確実に確保される(軌道が長いほど一貫性が高い)ことに留意すべきである。前述したように、これは、軌道がより短い場合に維持される「因果性及び再現性」とは対照的である。従って、両者の間にはトレードオフの関係があり、前述の条件が満たされたときにのみ軌道の閉鎖及び切り替えが行われるようにすることで、2つの要素の適切なバランスが保たれるようになっている。また、軌道閉鎖モジュールは、ロボットが「マップ更新領域」(変更が予想され更新が必要なマップの領域を限定するためにユーザが指定できる領域)としてタグ付けされたセクターを離れるときに軌道を終了させる責任を負う。
【0113】
マルチロボット状態融合、軌道の並べ替え及びグローバル最適化
【0114】
軌道の閉鎖は、主にロボット間の「因果関係」観測の不一致に起因するアーティファクトを大きく軽減することができるが、不正確なMCL位置推定、ロボットセンサ間のシステムエラー、及び時間同期エラーは、生成されたマップにぼやけたアーティファクトを生じさせ得る。マップ表現の確率的な性質と、確率的なマップ清浄及びマップ精密化段階とにより、これらの誤差をある程度減らすことができるが、特にロボットの高速動作時には、大きな誤差が生じる可能性がある。この程度まで、ファクタグラフ最適化に基づくグローバル最適化プロセスが、一貫性のない観測値を処理するために使用される。
【0115】
ファクタグラフを採用し、単一ロボットからのデータで動作するグローバル姿勢グラフ最適化が普及している(例えば、GT-SAMなど)。これは、ホイールエンコーダ、IMU、及びレーザー観測によって測定された、姿勢の異なる推定値を処理し、解決するのに役立つ。ファクタグラフは、ロボットの軌道に沿った複数の姿勢ステップにわたるベイジアンネットワーク又は隠れマルコフモデル(HMM)の表現である。このようなファクタグラフの構造を拡張し、複数のロボット間の不整合を解決することで、このようなファクタグラフの新規なアプローチ及びアプリケーションを提案する。
【0116】
従来のファクタグラフと同様に、各ノッドは、条件付き密度である。マルコフ連鎖は、オドメトリによって定義される前のロボット状態p(x
1)と遷移確率p(x
2|x
1)、p(x
3|x
2)、及びp(x
4|x
3)とを符号化する一方、測定値z
t(レーザースキャナからの測定値など)は、条件付き密度p(z
t|x
t)によってモデル化される状態x
tにのみ依存する。既知の測定値z'
1,z'
2,z'
3,z'
4が与えられると、ロボットの真の姿勢-隠れた状態シーケンス(x
1,x
2,x
3,x
4)は、事後確率p(x
1,x
2,x
3,x
4|z
1=z'
1,z
2=z'
2,z
3=z'
3,z
4=z'
4)を最大化するように推定される。測定変数z
1,z
2,z
3,z
4(z
1は、特徴的な測定値z
11及びz
12の平均として計算される)が与えられると、事後確率は、6つのファクタの積に比例し、3つのファクタはマルコフ連鎖に由来し、3つの尤度ファクタは、
【数1】
【数2】
として定義される。
【0117】
ここで、拡張構造において、第2ロボット(又は複数のロボット)からの付加的な観測値があり、当該観測値は、それらの姿勢の隠れ状態変数(y
1,y
2,y
3,y
4)の観点で表される。複数のロボット観測値から得られた不一致の占有画素群クラスタは、ファクタグラフの定式化において、第2ロボットの相対的な姿勢ファクタ(灰色で示す)と第1ロボットの軌道の最も近い軌道姿勢変数との形でファクタとして付加される。従って、状態変数y
1は、2つのロボットの測定値z
1,z
2の三角形の差に基づく相対的な姿勢ファクタを通じて、変数x
1,x
2に接続される。このとき、更新された事後確率は、次のようになる。
【数3】
【0118】
最大事後確率(MAP)推定又は推定器は、事後確率が最も高い密度を持つ姿勢パラメータを推定する。ファクタ間の独立性を想定すると、これは、積、
【数4】
すなわち、ファクタグラフの値を最大化することと同じである。ファクタグラフの辺は、各ファクタf
iについて、それが変数x
i,y
iのどの部分集合に依存するかを示す。
【数5】
【0119】
このファクタグラフの表現は、ロボットの姿勢のみを最適化/平滑化する姿勢最適化問題として解かれ、最終的なマップは、平滑化された軌道から推定される。姿勢グラフ上の最適化には、2つの要素が必要である。第1要素は、ファクタ(線形化されたファクタで実装)及びSE(2)姿勢グループ上のジェオビアン/偏導関数を推定する能力である。第2要素は、事後密度を最大化する非線形最適化プロセス(レーベンバーグ-マルカートアルゴリズムで実装される)である。その結果、観測値間の不一致が減少し、最終的なマップにおける構造のぼやけが減少する。
【0120】
周期性挙動(定常分布及び混合時間の見積り)を利用したマルチモーダルマップ生成
【0121】
前述したように、典型的な産業環境においては、異なる時点の環境特性を捉えるために、複数のマップが必要とされることが予想される。これは、産業環境に典型的な変化の本質的に周期的な性質に起因する。従って、複数のマップ表現モードが不可欠である。これらのマップモードは、データ観測における基本的な構造に基づいて出現する。これらのモダリティを捉えるために、マップ更新は、各占有グリッドセルの時間的特性を表現する隠れマルコフモデル(HMM)の革新的な使用に依存している。従来、SLAMにおけるHMMの使用は、ベースマップからのずれを追跡する程度のオンライン位置推定及びマッピングプロセスであった。従って、本明細書に記載されたHMMの使用における1つの違いは、複数のモードのマップを生成した後、オフラインで、自己位置推定を実行する際にロボット16によって使用することである。コンピュータ設備10で実施されるSLAMパイプライン内の想定されるマップ更新プロセスの間、HMMは、マップ占有分布を追跡する。分布が周期的に収束するとき(ロボットが環境のマルチモーダル変化におけるモードを再観察するとき)、「定常分布」が生成される。すなわち、マップの各セルの分布は、時間ウィンドウにおける追加の観察による確率の些細な変化で、特定の確率に収束する。なお、このシナリオでは、分布を計算する際に観測値がウィンドウ化(又は切り捨て)されることに留意すべきである。
【0122】
このように、定常分布は、環境が以前に観察されたものに似ているように見える場合を表している。任意の定常分布の観測は、複数回行われる可能性がある。また、観測された定常分布も複数存在する可能性がある。定常分布の数は、マップ表現のモダリティを定義する。この場合、定常分布は(占有空間と自由空間との確率遷移から得られる)遷移確率から計算される。更新されたマップの構築中のメモリ使用量は、HMMセル分布のストレージ要件のために高くなる可能性があるが、これは、定常分布の現在のモデルに適合する過去の分布、及び環境の重大な変化を表さない他の全ての観測を含む非定常分布を選別することによって、実際には低くすることができる。
【0123】
定常分布を特定することに加えて、HMMの「混合時間」も特定する。混合時間は(本文脈において)、ある定常分布から別の定常分布に収束するのに必要な時間であると定義される。これは、各占有セルが最初の定常分布から次の定常分布に移行するのに必要なステップ数としてHMMで表現される。これらのステップには、セルが(環境中のロボットの位置に応じて)観察されている場合と、観察されていない場合とが含まれる。2つのセル分布を比較して、(定期的に観測される)定常分布として分類できるほど類似しているか否かを判断し、最初の定常分布から次の定常分布への移行完了を推定するために、全変動距離を使用する。混合時間は、2つの定常分布間の距離を最小化する最小の時間である。また、混合時間は、メモリ使用量を最小にするために、セル分布の過去の履歴を選別するために使用される。更に、同じ定常分布の観測の間の時間が追跡される。
【0124】
マップセル占有率のこれらの定常分布とそれらに対応する混合時間から、マップ表現のモードが生成され、モードの展開のためのタイミング優先が決定される。なお、(混合時間に基づく)タイミング優先は、位置推定が(所定のマルチモーダルマップによるタスクフェーズの位置推定中に)マップモードを展開するための推奨タイミングを示すものである。また、タスクフェーズの位置推定が、利用可能な全てのモードに基づいてロボットを位置推定し、任意の時点で使用する最良のモードを決定することも可能である。このような実装は、計算コストがかかるが、マップ環境の変化の周期性が変化しても、より堅牢である。また、計算効率を向上させるために、マップモードの総数を制限してもよい。
【0125】
タイミング優先に基づくマルチモーダルマップ表現が有用である場合の一例が、
図13に示される。この例は、倉庫の搬入ドックの場合を示している。環境14のスキャナ観測の分析から、閉鎖された搬入口ロールアップドア(
図13のモードA)、開放されたドア(
図13のモードB)、及び、開放された搬入口ロールアップドアが駐車された輸送トラックの視界につながる付加的なモード(
図13のモードC)に対応する3つのマップモードがあることが分かる。この(第3)モードは、典型的には、毎日大量の積荷が出入りする典型的な倉庫において、1以上のロボット16によって十分な時間で且つ良好な周期性で観察されるが、搬入/搬出プロセス中にモデルの視野を積荷が漸進的に塞いで観察される可能性があるため、他の2つよりも決定性が低い。これらのモードが計算されると、それらはSLAMパイプラインの実行の間に保存され、更なるマップの拡張が可能になる。BOMUのためにコンピュータ設備10によって実装されたマルチモーダルHMMモデリングは、これらのモードの検知を可能にする。
【0126】
システム状態のフリーズ
【0127】
システム状態フリーモジュールは、SLAMマップ更新プロセスを最終化し、粒子の確率的占有グリッドデータ及び軌道データの観点から、更新プロセスの状態をログ/シリアライズする責任を負う。しかしながら、ハイブリッド粒子進展モデルを考慮すると、SLAMマップ更新プロセスの再初期化には、全粒子の完全な状態は必要ない。確率的占有グリッド及びHMMの状態を保持することは、マップ更新の呼び出しの間の連続性を確保し、「再帰性」効果を正しくモデル化するために必要である。軌道データは、タスクフェーズのロボット動作で、特徴のない広い開放エリアを移動する場合(特に手動又はライン/パスフォローシステムを使用している場合)、マップ更新プロセスの再初期化でループ閉鎖動作を実行する際に役立つ。軌道データは、付加的なグローバル最適化の実行に有用であり、マップ更新後の後処理ステップにおける(ゴールなどの)手動ランドマークの挿入/編集にも有用である。
【0128】
マップランドマーク及びメタデータの変換
【0129】
マップランドマーク及びメタデータ変換モジュールは、マップ12のオリジナルバージョンに存在し、タスクフェーズ動作で使用されるランドマーク及び他の関心点を、新規な更新マップに保存及び変換する責任を負う。現在のバージョンのマップ12及び更新バージョンのマップ12のワールド座標系は、ほとんどのユースケースについて(SLAM占有グリッド座標系への変換後に)保存されるため、変換は簡単である。しかしながら、現在占有されているとみなされる占有グリッドセルに位置するゴール及び他の横断可能なランドマークは、マップ12の最終更新バージョンから削除される。この削除により、更新されたマップ12がロボット16に配備されると、到達不能なゴールやあらゆる衝突の可能性がないことが保証される。更に、例外的に、占有グリッドセル内のセクションが変形(伸長)している場合、マップ更新プロセスの一部としてメトリックワールドマップ位置に対するより良い推定値を計算した結果、影響を受けるランドマークが(投影軌道変換を計算することによって)適切に更新される。
【0130】
同様に、ゴールに加えて、ドック、セクター、ゾーンなどのための他のランドマークも最終マップに変換される(
図14に示すように)。なお、ドック、ゴール、又は、ロボットや他の移動ユニット(パレタイザ、パレットジャッキ、フォークリフトなど)が長時間駐車されるかもしれない他のエリアの周りのマップ領域が、マップに追加されるかもしれないことに留意すべきである。この時点で、ユーザは、ロボット16にマップ12を展開する前に、そのような構造物のマップ12をクリーンにすることが期待される。
【0131】
より詳細には、
図14は、ランドマーク変換を伴うBOMUの結果の一例を示している。マップ12の初期又は現在のバージョンは、ロボットのタスクフェーズ動作のために設定されたゴール及びドックを伴って、左側に現れる。右側には、マップ12の更新バージョンが表示され、マップ12の以前のバージョンを使用して環境14でロボット16の通常のライブ動作中にロボット16から収集された(履歴)ログデータ22を使用して更新が決定される。このようなタスクフェーズの動作中(この具体例において)、ロボット16は、ロボットの動作空間を囲み、様々な向きに配置された付加的な構造物を観察しながら、3つのゴール間をパトロールする。これらは、タスクフェーズの動作中に漸進的に変更される。右側の更新されたマップは、これらの構造物(ハッチング)がマップ空間内に挿入されていることを示している。タスクフェーズの動作中にロボットによって観察されていないマップのセクションは、元のマップ占有情報を保持している。なお、ゴール及びドックの位置は、更新されたマップに変換されており、横断不可能なゴール(G2)は、更新されたマップから削除されていることに留意すべきである。
【0132】
上記の例を念頭に置いて、本明細書は、移動ロボットの展開のタスクフェーズ中に、自律的且つ集中的にマップを更新する方法及び装置を広範に開示する。この方法は、1以上の実施形態において、固定マップに動的変化(増分、周期的、及び全体的に動的)を組み込む手順、革新的なHMMベースの定常性推定プロセスを使用して実装されるように、センサログ及びマップ遷移動作から動的変化分布のモダリティ(カウント)を自動的に抽出する手順、更新マップをもたらすハイブリッド状態推定のためのタスクフェーズ動作及びオフライン計算からの状態を融合する手順、これは、「非結合型マップ更新プロセス」と「結合型同時位置推定・マップ更新プロセス」との新規なハイブリッドとして設計されている(「結合型プロセス」がオフラインで位置推定とマップ更新とを繰り返し且つ同時に推定するのに対し、非結合型プロセスは、位置推定とマップ更新とを分離し、ロボットのタスクフェーズ動作の一部としてオンラインフェーズで位置推定を行う手順(MCL粒子フィルタとして実装され、オフラインフェーズでマップ更新が起こる)、観測値(具体的には、観測時間)が重複し、矛盾が生じる可能性のある複数のロボットからのセンサストリームを融合する手順(このような動作は、革新的な軌道閉鎖モジュールに依存する)、及び、グリッドセルランドマークの推定とグローバル最適化とを通じて複数のロボットからのセンサ観測値の間の非互換性を解決する手順、のいずれか1つを含む。
【0133】
本明細書のいくつかの実施形態によれば、マップ更新プロセスは、コンピュータサーバなどのコンピュータ設備10と、1以上のロボット16とを備えるシステム8を含む。ロボット16は、環境14のマップ12の局所的な静的コピーを使用して環境14内で自己位置推定を実施することによって、企図されたマップ更新処理に寄与する。環境14内で動作する際に各ロボット16によって生成されたログデータ22は、コンピュータ設備10に提供される。当該データは、例えば、粒子フィルタベースのモンテカルロ位置推定(MCL)関数を用いて各ロボットによって生成された粒子と、それらの粒子の生成に用いられるセンサデータとを含む。有利には、コンピュータ設備10は、この履歴ログデータ22を使用して、収集データのバッチ処理(及びロボット16間のセンシング/位置推定エラーを考慮する)、環境14のモードの変化、及び同じマップ領域を横断する複数のロボット16の異なる軌道に対して最適化されているSLAMアルゴリズムを実行する。
【0134】
マップ更新のための計算及びメモリの負担は、コンピュータ設備10にあり、マップ更新の計算は、ロボット16が環境14内で通常のタスク動作を継続できる間にコンピュータ設備10によって実行されるので、企図されたアプローチは、個々のロボットが環境14内で動作する際に、リアルタイム又はほぼリアルタイムで同時位置推定及びマッピングを実行しなければならない従来の場合に適用される複雑性及び時間に関する制約を受けない。その結果、より長い期間にまたがる、又は環境14の異なるモードに関連するログデータ22を使用し、複数のロボット16からのログデータ22を使用/再調整することによって、マップ更新の品質を大幅に改善することができ、これにより、センシング及びオドメトリにおけるロボット固有の誤差を軽減することができる。
【0135】
注目すべきは、開示された発明の修正及び他の実施形態が、前述した説明及び関連する図面に示された教示の利益を有する当業者には思い浮かぶであろうことである。
【0136】
本明細書で開示される注目すべき項目の中には、以下の項目がある:
1.移動ロボットの展開のタスクフェーズ中に、自律的且つ集中的にマップを更新する方法及び装置。
2.固定マップに動的な変更(増分、周期的、及び全体的に動的)を組み込む方法及び手順。
3.センサのログやマップ遷移の挙動から、動的変化の分布のモダリティ(カウント)を自動的に抽出する方法及び手順。これは、HMMベースの新規な定常性推定プロセスとして実装されている。
4.タスクフェーズ動作及びオフライン計算からの状態を融合し、更新されたマップをもたらすハイブリッド状態推定を行う方法及び手順。これは、「非結合型マップ更新プロセス」及び「結合型同時位置推定及びマップ更新プロセス」の新しいハイブリッドとして設計されている。「結合型プロセス」は、オフラインで位置推定とマップ更新とを繰り返し且つ同時に推定する一方、「非結合型プロセス」は、位置推定とマップ更新とを分離し、位置推定をMCL粒子フィルタとして実装されたロボットのタスクフェーズ動作の一部としてオンラインフェーズで行い、マップ更新をオフラインフェーズで行う。
5.観測点(特に観測時間)が重複し、矛盾がある場合もない場合もあり得る複数のロボットからのセンサストリームを融合する方法及び手順。これは、新規な軌道閉鎖モジュールとして設計されている。
6.グリッドセルランドマークの推定及びグローバル最適化を通じて、複数のロボットからのセンサ観測の間の非互換性を解決する方法及び手順。
【0137】
実施形態
【0138】
1.(a)通信インタフェース30と、(b)処理回路32とを備えるコンピュータ設備であって、
処理回路32は、(i)マップ12の静的コピーを使用して環境14内で自己位置推定を行う個々のロボット16によって生成されたログデータ22を、通信インタフェース30を介して受信し、(ii)受信したログデータ22を使用するSLAM(同時位置推定及びマッピング)アルゴリズムを実行してマップ12の更新を行うように構成されている、コンピュータ設備10。
【0139】
2.処理回路(32)は、トリガベースで更新を実行するように構成されている、実施形態1に記載のコンピュータ設備10。
【0140】
3.トリガベースは、定期的なベースであり、処理回路32は、定義された間隔に従って更新を繰り返し実行するように構成されている、実施形態2に記載のコンピュータ設備10。
【0141】
4.処理回路32は、繰り返される更新の1以上においてコンピュータ設備10によって決定されるマップ変更の範囲又は性質に依存して、定義された間隔を調整するように構成されている、実施形態3に記載のコンピュータ設備10。
【0142】
5.トリガベースは、マップ品質ベースであり、処理回路32は、マップ12の品質が閾値よりも悪化したことを決定することに応答して、更新を実行するように構成されている、実施形態2に記載のコンピュータ設備10。
【0143】
6.処理回路32は、更新の実行を示すアラートを生成するか、又は、更新の結果としてのマップ12の更新バージョンの利用可能性を示すように構成されている、実施形態1-5のいずれかに記載のコンピュータ設備10。
【0144】
7.処理回路32は、マップ12の局所的な静的コピーを更新する際に各ロボット16によって使用するために、個々のロボット16へのマップ更新情報の送信を開始するように構成され、マップ更新情報は、マップ12の更新バージョン又はマップ12の更新を示す変更データを含む、実施形態1-6のいずれかに記載のコンピュータ設備10。
【0145】
8.処理回路32は、コンピュータ設備10が送信を開始する許可を示す入力信号を受信したことに応答して、マップ更新情報の送信を開始するように構成されている、実施形態7に記載のコンピュータ設備10。
【0146】
9.通信インタフェース30は、ログデータ22を無線で受信するように構成された無線通信インタフェースである、実施形態1-8のいずれかに記載のコンピュータ設備10。
【0147】
10.各ロボット16からのログデータ22は、ロボット16によって使用される1以上のタイプのセンサからのセンサデータを含む、実施形態1-9のいずれかに記載のコンピュータ設備10。
【0148】
11.センサデータは、オドメトリデータを含む、実施形態10に記載のコンピュータ設備。
【0149】
12.各ロボット16からのログデータ22は、モンテカルロ位置推定(MCL)関数を使用して各ロボット16によって生成された粒子フィルタデータを含む、実施形態10又は11に記載のコンピュータ設備10。
【0150】
13.コンピュータ設備10によって実行されるSLAMアルゴリズムは、個々のロボット16からの粒子フィルタデータに含まれる粒子を使用して、マップ12のマップ更新情報(MUI)24を決定する、粒子フィルタベースのSLAMアルゴリズムである、実施形態12に記載のコンピュータ設備10。
【0151】
14.各ロボット16からの粒子フィルタデータは、粒子を含み、各粒子は、環境14内のロボット16の可能な姿勢を表す、実施形態13に記載のコンピュータ設備10。
【0152】
15.処理回路32は、定義された蓄積間隔又はボリューム閾値に従って、受信したログデータを蓄積し、データバッチを形成するように構成され、処理回路は、データバッチ上でSLAMアルゴリズムを実行することによってマップ12の更新を行うように更に構成されている、実施形態10-14のいずれかのコンピュータ設備10。
【0153】
16.コンピュータ設備10による動作の方法300であって、(a)環境14内で動作する個々のロボット16によって生成されたログデータ22を受信すること(ブロック302)と、(b)受信したセンサ及びログデータ22を使用する同時位置推定及びマッピング(SLAM)アルゴリズムを実行することによってマップ12の更新を行うこと(ブロック304)とを含む、方法(300)。
【0154】
17.トリガベースで更新を実行することを更に含む、実施形態16に記載の方法300。
【0155】
18.トリガベースは、定期的なベースであり、方法300は、定義された間隔に従って更新を繰り返し実行することを含む、実施形態17に記載の方法300。
【0156】
19.繰り返される更新の1以上においてコンピュータ設備10によって決定されるマップ変更の範囲又は性質に依存して、定義された間隔を調節することを更に含む、実施形態18の方法300。
【0157】
20.トリガベースは、マップ品質ベースであり、方法300は、マップ12の品質が閾値よりも悪化したことを決定することに応答して、更新を実行することを含む、実施形態17に記載の方法300。
【0158】
21.更新の実行を示すアラートを生成するか、又は、更新の結果としてのマップ12の更新バージョンの利用可能性を示すことを更に含む、実施形態16-20のいずれかに記載の方法300。
【0159】
22.マップ12の局所的な静的コピーを更新する際に各ロボット16によって使用するために、個々のロボット16へのマップ更新情報24の送信を開始することを更に含み、マップ更新情報(MUI)24は、マップ12の更新バージョン又はマップ12の更新を示す変更データを含む、実施形態16-21のいずれかに記載の方法300。
【0160】
23.マップ更新情報の送信は、コンピュータ設備10が送信を開始する許可を示す入力信号を受信することに応答して開始される、実施形態22の方法300。
【0161】
24.ログデータ22を無線で受信することを含む、実施形態16-22のいずれかに記載の方法300。
【0162】
25.各ロボット16からのログデータ22は、ロボット16の1以上のタイプのセンサを介して得られたセンサデータを含み、当該センサデータは、環境14における自己位置推定のためにロボット16によって使用される環境センシングデータを含み、ログデータ22は、環境14における自己位置推定のためにロボット16によって使用される粒子フィルタベースの位置推定アルゴリズムからの粒子などの位置推定処理結果で更に構成されている、実施形態16-24のいずれかに記載の方法300。
【0163】
26.コンピュータ設備10によって実行されるSLAMアルゴリズムは、個々のロボット16からのログデータ22に含まれる粒子フィルタデータを構成する粒子を使用して、マップ12の更新バージョンを決定する粒子フィルタベースのSLAMアルゴリズムである、実施形態25に記載の方法300。
【0164】
27.定義された蓄積間隔又はボリューム閾値に従って、受信したログデータ22を蓄積してデータバッチを形成することを含み、処理回路32は、データバッチ上でSLAMアルゴリズムを実行することによってマップ12の更新を行うように更に構成されている、実施形態25-27のいずれかに記載の方法300。
【0165】
28.(a)環境14内でロボット16を動かすように構成された駆動システム40と、(b)環境14内でのロボット16の動きを推測航法ベースで追跡するように構成されたオドメトリシステム42と、(c)環境14の特性を検知するように構成された環境センシングシステム44と、(d)ロボット制御システム46とを備える、ロボット16。ロボット制御システム46は、(i)ロボット16が環境14内で動作している間にロボット16の自己位置推定を実行し、当該自己位置推定はロボット16のメモリ48に保持された環境14のマップ12の静的コピーを使用して実行され、(ii)環境14におけるロボット16の動作中に、ロボット16の1以上のタイプのセンサによって生成されたログデータ22としてデータを記録し、(iii)コンピュータ設備10がマップ12を更新する際に使用するために、通信リンク18を介してログデータ22をリモートコンピュータ設備10又はそのプロキシ20へ送信する、ように構成されている。
【0166】
29.ロボット制御システム46は、(a)マップ12の更新バージョン、又はマップ12の更新を示す変更データを含むマップ更新情報(MUI)24を受信し、当該マップ更新情報は、ロボット16によって送信されたログデータ22又は環境14で動作する1以上の他のロボット16によって送信されたログデータのようものを使用してリモートコンピュータ設備によって生成され、(b)マップ更新情報から、マップ12の更新された局所的な静的コピーを決定し、(c)環境14において動作中に更なる自己位置推定を実行し、当該更なる自己位置推定は、マップ12の更新された局所的な静的コピーを使用してロボット16によって実行される、ように更に構成されている、実施形態28に記載のロボット16。
【0167】
30.ロボット制御システム(46)は、自己位置推定を実行するように構成され、更に、粒子フィルタリングに基づくモンテカル位置推定(MCL)関数を使用して自己位置推定を実行する、実施形態28又は29に記載のロボット(16)。
【0168】
31.自己位置推定は、ロボット制御システム46が粒子フィルタに基づくアルゴリズムを実行することに基づいており、ロボット制御システム46によって記録されたログデータ22は、環境14においてロボット16の自己位置推定を行うためにロボット16の環境センシングシステム44によって得られた環境センシングデータを少なくとも含み、ログデータ22は、粒子フィルタアルゴリズムによって生成された粒子フィルタデータ、及び、オドメトリシステム42から得られ、環境14においてロボット16の自己位置推定を実行するためにロボット制御システム46によって使用されるオドメトリデータ、の少なくとも1つを更に含み、環境センシングデータは、環境センシングシステム44に含まれる1種類以上のセンサからのセンサデータを含む、実施形態28-30のいずれかに記載のロボット。
【0169】
32.粒子フィルタデータは、粒子を含む、実施形態31に記載のロボット16。
【0170】
33.ロボット16によって実行される方法400であって、(a)ロボット16が環境14内で動作している間に、ロボット16のメモリ48に保持された環境14のマップ12の静的コピーを使用してロボット16の自己位置推定を実行すること(ブロック402)、(b)ロボット16が環境14で動作している間にロボット16の1以上のタイプのセンサから生成されたデータをログデータ22として記録すること(ブロック404)、及び(c)コンピュータ設備10がマップ12を更新する際に使用するために、通信リンク18を介してログデータ22をリモートコンピュータ設備10又はそのプロキシ20に送信すること(ブロック406)、を含む、方法(400)。
【0171】
図15は、一実施形態に係るコンピュータ設備10の動作の方法1500を示す。方法1500は、
図3、
図5、及び
図6に示された動作の組み合わせ、又はそのような動作の変形又は拡張として理解することができる。
【0172】
方法1500は、コンピュータ設備10が、環境14の静的マップ12に従って環境14で自律的なナビゲーションを行う1以上のロボット16の位置推定品質を監視すること(ブロック1502)を含む。任意の特定の時間に任意の特定のロボット16によって経験される位置推定品質は、静的マップ12の関連部分がロボット16によって検知された局所的な環境特徴と一致する程度に依存する。例えば、所与のスキャンサイクル中にロボット16によって得られたレーザスキャンデータ又は点群データは、角、出入り口などの環境14における特定の特徴を示し、位置推定品質は、スキャンデータに関連するロボット16の位置及び向きに関連して静的マップ12が同じ又は同様の特徴を含む程度に依存する。大まかに言えば、各ロボット16は、より大きな環境14内でその局所的な周囲を検知するために使用される1以上のタイプのセンサを備え、前記データは、環境センシングデータと呼ばれることがある。
【0173】
方法1500は、コンピュータ設備10が、1以上のロボットの監視された位置推定品質が定義された閾値を下回ること(ブロック1504から「YES」)に応答して更新手順をトリガすることを更に含む。更新手順を実行することは、コンピュータ設備10が、1以上のロボット16に送信するために、静的マップ12のマップ更新情報を出力すること(ブロック1506)を含む。マップ更新情報は、環境14において動作中にログデータ22を報告する1以上のロボット16に基づいて収集された履歴ログデータ23から計算され、任意の特定のロボット16からのログデータ22は、環境14内の自律的なナビゲーションのための位置推定を行うために特定のロボット16によって用いられるセンサデータと、特定のロボット16によって実行される位置推定処理によって生成される対応オドメトリデータ及び対応位置推定データの一方又は両方とを含む。
【0174】
更新手順は、例えば、コンピュータ設備10が、更新手順の一部として、コンピュータ設備10がそのとき利用可能な履歴ログデータ23に従ってマップ更新情報24を計算することを更に含む。
【0175】
少なくとも一実施形態において、コンピュータ設備10は、コンピュータ設備10による更新手順の1以上の以前の実行からコンピュータ設備10が決定した履歴更新情報に基づいて、マップ更新情報24を更に計算する。
【0176】
コンピュータ設備10は、1以上の実施形態において、マップ更新情報24を反復的に計算するように構成され、各計算は、コンピュータ設備10がそのとき利用可能な履歴ログデータ23を使用する。そのような実施形態における更新手順は、最後に計算されたマップ更新情報を出力する。
【0177】
少なくとも一実施形態においてマップ更新情報24を出力することは、マップ更新情報24の許容可能なマップ品質を示すユーザ入力の受信に応答して、マップ更新情報24を1以上のロボット16に条件付きで送信することを含む。マップ更新情報24を条件付きで出力することは、例えば、コンピュータ設備10のユーザに表示するためのグラフィカル情報を出力することを含む。グラフィカル情報は、マップ更新情報24の品質が許容可能であるか否かをユーザが判断するために、マップ更新情報24に従って更新された静的マップ12のグラフィカル描写である。このような動作は、
図16に、動作1506A、1506B、及び1506Cとして図示されている。
【0178】
マップ更新情報24を出力することは、マップ更新情報24を1以上のロボット16に送信すること、又はマップ更新情報24を1以上のロボット16に転送するプロキシデバイス20に送信することを含む。
【0179】
少なくとも一実施形態において、マップ更新情報24を出力することは、マップ更新情報24が1以上のロボット16に送信可能であることを示すプロンプトを出力することと、コンピュータ設備10のローカル又はリモートユーザからの管理入力に応答して、マップ更新情報24を1以上のロボット16に送信する、又はマップ更新情報24を1以上のロボット16に転送するプロキシデバイス20に送信することを備える。
【0180】
方法1500の1以上の実施形態は、1以上のロボット16によるデータログを環境内の特定領域に制限することを含む。例えば、コンピュータ設備10は、1以上のロボット16に送信するために、指定された領域を特定するマップ情報を出力する。指定された領域は、コンピュータ設備が指定された領域を定義するユーザ入力を受信する場合など、ユーザが構成することができる。
【0181】
1以上の実施形態における方法1500は、マップ更新情報の計算中にマップ状態の周期的な変化を認識することを含み、当該周期的な変化は、マップモダリティと呼ばれる。各マップモダリティは、対応する時間間隔、例えば、1日の時間と関連付けられる。少なくとも1つのそのような実施形態において、マップ更新情報24は、マップモダリティに関連する対応する時間間隔の間に1以上のロボット16によって使用するための、異なるマップモダリティを反映する2以上のモードマップを含む。従って、1以上の実施形態において、マップ更新情報24に従って静的マップ12の各コピーを更新するロボットは、対応する時間に展開するためのモダリティ固有のマッピングを有することになる。
【0182】
方法1500は、マップ更新情報24がトリガされた更新手順で使用できるように、トリガされた更新手順の一部として、又は定期的に、コンピュータ設備10がマップ更新情報24を計算することを更に含んでもよい。コンピュータ設備10によるマップ更新情報24の計算の任意の特定のインスタンスは、コンピュータ設備10がその時に利用可能な履歴ログデータ23に依存する。
【0183】
履歴ログデータ23が1以上のロボット16のための環境14内での動作時間の1以上の間隔に及ぶ少なくとも一実施形態において、方法1500は、コンピュータ設備10が、環境14内の同じ領域に関して各ロボット16によって行われる位置推定決定又は特徴観察における不一致を識別し、マップ更新情報24を計算する間にその不一致を解決することを更に含む。マップ更新情報の計算中に不一致を解決することは、例えば、1以上のロボット16のうちの第1ロボットからの第1データと、1以上のロボット16のうちの第2ロボットからの関連する第2データとの間の不一致を解決することを含み、当該解決とは、第1データと第2データとの間のように、最新のデータを使用することである。
【0184】
1以上の実施形態において、1以上のロボット16の各々は、粒子フィルタベースであり、位置推定を実行するが静的マップを更新しないロボットにインスタンス化されたモンテカルロローカライザ(MCL)を使用して、静的マップ12に従って環境14で自律的にナビゲーションを実行する。これに対応して、少なくとも1つのそのような実施形態における方法1500は、コンピュータ設備10が、履歴ログデータ(23)に表された各ロボット(16)に関して、粒子フィルタベースであり且つ位置推定及び静的マップ12の更新を同時に行う設備起動型SLAMプロセスを実行する結合プロセスを実行するとともに、ロボット起動型MCLによって実行される各位置推定サイクルから選択された粒子をクローン化し、ロボット起動型MCLによって使用される運動モデルと同一であるが、各粒子についてマップ更新の追加ステップを有する運動モデルを使用して選択された粒子を進展させる非結合プロセスを実行することによって、マップ更新情報24を算出することを含む。結合プロセスは、ロボット起動型MCLで発生した粒子の進展とは無関係に、ロボット起動型MCLで使用されたオドメトリデータ及び対応する環境センシングデータに基づいて、設備起動型SLAMプロセスの粒子を進展させる。そのような動作は、1以上の実施形態において、本明細書に記載の全体的なBOMUプロセスに含まれる。
【0185】
そのような実施形態における方法は、コンピュータ設備10が、結合プロセス及び非結合プロセスを介して決定されたマップ更新を比較し、マップ更新情報24として出力するための最終化されたマップ更新を得ることを更に含む。最終化されたマップ更新は、結合プロセスの結合粒子と非結合プロセスの非結合粒子とを含む粒子のプールから、位置推定スコアの観点で最良の粒子を決定することに基づくものである。
【0186】
1以上の実施形態によるコンピュータ設備10は、通信インタフェース30と、通信インタフェース30と動作的に関連付けられた処理回路32とを備える。処理回路32は、方法1500について上述した動作のうちの任意の1つ又は複数を実行するように構成されている。例えば、処理回路32は、環境14の静的マップ(12)に従って環境(14)内で自律的なナビゲーションを行う1以上のロボット(16)の位置推定品質を監視するように構成されている。任意の特定の時間に任意の特定のロボット16が経験する位置推定品質は、静的マップ12の関連部分がロボット16によって検知される局所的な環境特徴に一致する程度に依存している。更に、処理回路32は、1以上のロボット16の監視された位置推定品質が、定義された閾値を下回ることに応答して、更新手順をトリガするように構成されている。
【0187】
更新手順は、処理回路32が、1以上のロボット16に送信するために、静的マップ12に対するマップ更新情報24を出力することを含む。マップ更新情報24は、環境14での動作中にログデータ22を報告する1以上のロボット16に基づいて、履歴ログデータ23から計算される。任意の特定のロボット16からのログデータ22は、特定のロボット16によって実行される位置推定処理で使用される対応するオドメトリデータ及び対応する位置推定データの一方又は両方とともに、環境14内での自律的なナビゲーションのために位置推定の実行に使用するため、特定のロボット16によって用いられるセンサデータを含む。
【0188】
上記の例を念頭に置いて、開示された発明は、開示された特定の実施形態に限定されず、修正及び他の実施形態が本開示の範囲内に含まれることを意味する。特定の用語が本明細書で採用されることがあるが、それらは一般的且つ説明的な意味でのみ使用され、限定を目的とするものではない。
【国際調査報告】