(57)【特許請求の範囲】
【請求項１】
センサから、前記センサに対する環境内の複数のマーカの位置を表示する第１のセンサデータを受け取ることと、
前記第１のセンサデータに基づいて、前記複数のマーカの地図内の前記センサのポーズを決定することと、
前記センサから、前記センサから前記環境内の表面までの距離を表示する第２のセンサデータを受け取ることと、
前記第２のセンサデータと前記センサの前記決定されたポーズとに基づいて、前記環境内の前記表面を表す占有格子地図を決定することと、
前記複数のマーカの前記地図と前記環境の設計モデルとの間の、前記占有格子地図内の占有されたセルを前記設計モデルからのサンプリングされたポイントと関連付ける変換を決定することと、
前記複数のマーカの前記地図と前記設計モデルとの間の前記変換を提供することと、を含む方法。
【請求項２】
前記複数のマーカが、水平面に沿って配置された複数の逆反射マーカを含み、前記第１のセンサデータが、２次元レーザスキャナから受け取られる、請求項１に記載の方法。
【請求項３】
前記変換を決定することが、水平面の回転および並進を決定することを含む、請求項１に記載の方法。
【請求項４】
前記変換を決定することが、複数の２次元回転値および並進値をサンプリングすることを含む、請求項１に記載の方法。
【請求項５】
前記変換を決定することが、
複数の候補変換の各候補変換について、前記占有格子地図内の占有されたセルと、前記設計モデルからの、前記サンプリングされたポイントを包含するラインとの間のポイントツーライン法線距離の合計を決定することと、
各候補変換について決定された前記ポイントツーライン法線距離の合計に基づいて、前記複数の候補変換から前記変換を決定することと、を含む、請求項１に記載の方法。
【請求項６】
前記変換を決定することが、
複数の候補変換の各候補変換について、前記設計モデルからの、前記サンプリングされたポイントを包含する直線の閾値距離内にある前記占有格子地図内の占有されたセルの割合を含む測定信頼度を決定することと、
各候補変換について決定された前記測定信頼度に基づいて、前記複数の候補変換から前記変換を決定することと、を含む、請求項１に記載の方法。
【請求項７】
前記決定された変換に対する前記測定信頼度の表示を提供することをさらに含む、請求項６に記載の方法。
【請求項８】
前記占有格子地図を決定することが、障害物、空きスペース、および未知の領域のうちの１つである状態を各セルに割り当てることを含む、請求項１に記載の方法。
【請求項９】
追加の受け取られたセンサデータに基づいて前記複数のマーカの前記地図内の前記センサの前記ポーズを高精度化することと、
前記複数のマーカの前記地図内の前記センサの前記高精度化されたポーズに基づいて、前記複数のマーカの前記地図と前記環境の前記設計モデルとの間の前記変換を調整することと、をさらに含む、請求項１に記載の方法。
【請求項１０】
前記変換を調整することが、前記決定された変換に基づいて候補変換範囲をサンプリングすることを含み、前記サンプリングされた候補変換範囲が、前記変換を決定するために使用された初期の候補変換範囲よりも狭い、請求項９に記載の方法。
【請求項１１】
グラフベースの最適化問題を解くことによって、前記複数のマーカの前記地図と前記変換とを決定することをさらに含む、請求項１に記載の方法。
【請求項１２】
前記グラフベースの最適化問題が、前記占有格子地図内の占有されたセルと、サンプリングされたポイントを包含する、前記設計モデルからのラインとの間の各ポイントツーライン法線距離に対する別個のエッジを含む、請求項１１に記載の方法。
【請求項１３】
前記変換と前記環境の前記設計モデルとに基づいてロボットを制御する命令を提供することをさらに含む、請求項１に記載の方法。
【請求項１４】
前記環境の前記設計モデルが、コンピュータ支援設計（ＣＡＤ）モデルを含む、請求項１に記載の方法。
【請求項１５】
前記変換に基づいて、前記ＣＡＤモデルの位置整合誤差を特定することと、
前記特定された、前記ＣＡＤモデルの位置整合誤差の表示を提供することと、をさらに含む、請求項１４に記載の方法。
【請求項１６】
センサと、
コンピューティングシステムと、
非一過性コンピュータ可読媒体と、
前記非一過性コンピュータ可読媒体に記憶されたプログラム命令であって、前記コンピューティングシステムによって、
前記センサから、前記センサに対する環境内の複数のマーカの位置を表示する第１のセンサデータを受け取り、
前記第１のセンサデータに基づいて、前記複数のマーカの地図内の前記センサのポーズを決定し、
前記センサから、前記センサから前記環境内の表面までの距離を表示する第２のセンサデータを受け取り、
前記第２のセンサデータと前記センサの前記決定されたポーズとに基づいて、前記環境内の前記表面を表す占有格子地図を決定し、
前記複数のマーカの前記地図と前記環境の設計モデルとの間の、前記占有格子地図内の占有されたセルを前記設計モデルからのサンプリングされたポイントと関連付ける変換を決定し、かつ
前記複数のマーカの前記地図と前記設計モデルとの間の前記変換を提供する、ように実行可能であるプログラム命令と、を備えるシステム。
【請求項１７】
前記複数のマーカが、逆反射マーカを含む、請求項１６に記載のシステム。
【請求項１８】
前記コンピューティングシステムが、
追加の受け取られたセンサデータに基づいて、前記複数のマーカの前記地図内の前記センサの前記ポーズを高精度化し、かつ
前記複数のマーカの前記地図内の前記センサの前記高精度化されたポーズに基づいて、前記複数のマーカの前記地図と前記環境の前記設計モデルとの間の前記変換を調整するようにさらに構成されている、請求項１６に記載のシステム。
【請求項１９】
コンピューティングシステムに動作を実行させるように、前記コンピューティングシステムによって実行可能なプログラム命令を中に記憶した非一過性コンピュータ可読媒体であって、前記動作が、
センサから、前記センサに対する環境内の複数のマーカの位置を表示する第１のセンサデータを受け取ることと、
前記第１のセンサデータに基づいて、前記複数のマーカの地図内の前記センサのポーズを決定することと、
前記センサから、前記センサから前記環境内の表面までの距離を表示する第２のセンサデータを受け取ることと、
前記第２のセンサデータと前記センサの前記決定されたポーズとに基づいて、前記環境内の前記表面を表す占有格子地図を決定することと、
前記複数のマーカの前記地図と前記環境の設計モデルとの間の、前記占有格子地図内の占有されたセルを前記設計モデルからのサンプリングされたポイントと関連付ける変換を決定することと、
前記複数のマーカの前記地図と前記設計モデルとの間の前記変換を提供することと、を含む非一過性コンピュータ可読媒体。
【請求項２０】
前記センサが運搬装置と結合されており、
前記動作が、
一定のセンサ運搬装置間変換を使用して前記運搬装置のポーズを決定することをさらに含む、請求項１９に記載の非一過性コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２０１７年４月２１日に出願された米国特許出願第１５／４９４，３４１号の優先権を主張し、その出願はその全体が参照により本明細書に援用される。
【背景技術】
【０００２】
製造業者、小売業者、および輸送事業者などの商業実体は、多くの場合、倉庫を使用して原材料、部品またはコンポーネント、梱包材、および完成品などのアイテムを格納する。倉庫は、パレットと、アクセスを容易化させ、かつ処理を効率化させるように様々なアイテムを保持する多数のパレットを格納するパレットラックと、の使用によってアイテムの編成を可能にすることができる。したがって、倉庫は、倉庫内で稼働する運搬装置および他の設備による運搬のためにアイテムを保持するように構成された平坦な搬送構造物である、様々な種類のパレットを使用し得る。
【０００３】
通常、人間の操作者が、倉庫内の機械、運搬装置、および他の設備を操作し得る。例として、人間の操作者が、フォークリフトを操縦して、配送領域と保管庫との間でパレットを持ち上げて運搬し得る。しかしながら、センサ、計算能力、および他の技術のたゆまぬ進化とともに、企業は、人間の操作者に依存するのではなく、倉庫内で作業を行う自律型および半自律型の運搬装置への切り替えを行いつつある。
【発明の概要】
【０００４】
例の実装形態は、地図生成および位置整合のための方法およびシステムに関する。例の実装形態は、環境内に配置されたマーカの、センサからの測定値を使用してマーカ位置の地図を構築するコンピューティングシステムを伴い得る。コンピューティングシステムは、さらに、環境内の表面までの距離測定値を使用して、マーカの地図を環境の設計モデルと位置整合させ得る。
【０００５】
一態様では、例の方法が提供される。この方法は、センサから、センサに対する環境内の複数のマーカの位置を表示する第１のセンサデータを受け取ることと、第１のセンサデータに基づいて、複数のマーカの地図内のセンサのポーズを決定することと、を含み得る。この方法は、センサから、センサから環境内の表面までの距離を表示する第２のセンサデータを受け取ることと、第２のセンサデータとセンサの決定されたポーズとに基づいて、環境内の表面を表す占有格子地図を決定することと、をさらに含み得る。この方法はまた、複数のマーカの地図と環境の設計モデルとの間の、占有格子地図内の占有されたセルを設計モデルからのサンプリングされたポイントと関連付ける変換を決定することと、複数のマーカの地図と設計モデルとの間の変換を提供することと、を含み得る。
【０００６】
別の態様では、例のシステムが提供される。このシステムは、センサと、コンピューティングシステムと、非一過性コンピュータ可読媒体と、非一過性コンピュータ可読媒体に記憶されたプログラム命令であって、コンピュータシステムによって、センサから、センサに対する環境内の複数のマーカの位置を表示する第１のセンサデータを受け取り、第１のセンサデータに基づいて、複数のマーカの地図内のセンサのポーズを決定する、ように実行可能であるプログラム命令と、を含み得る。非一過性コンピュータ可読媒体に記憶されたプログラム命令によって、さらに、コンピューティングシステムは、センサから、センサから環境内の表面までの距離を表示する第２のセンサデータを受け取り、第２のセンサデータとセンサの決定されたポーズとに基づいて、環境内の表面を表す占有格子地図を決定し得る。非一過性コンピュータ可読媒体に記憶されたプログラム命令によって、さらに、コンピューティングシステムは、複数のマーカの地図と環境の設計モデルとの間の、占有格子地図内の占有されたセルを設計モデルからのサンプリングされたポイントと関連付ける変換を決定し、複数のマーカの地図と設計モデルとの間の変換を提供し得る。
【０００７】
さらなる態様では、非一過性コンピュータ可読媒体が提供される。この非一過性コンピュータ可読媒体は、コンピューティングシステムに動作を実行させるようにコンピューティングシステムによって実行可能な命令が中に記憶されている。この動作は、センサから、センサに対する環境内の複数のマーカの位置を表示する第１のセンサデータを受け取ることと、第１のセンサデータに基づいて、複数のマーカの地図内のセンサのポーズを決定することと、を含み得る。この動作は、センサから、センサから環境内の表面までの距離を表示する第２のセンサデータを受け取ることと、第２のセンサデータとセンサの決定されたポーズとに基づいて、環境内の表面を表す占有格子地図を決定することと、をさらに含み得る。この動作はまた、複数のマーカの地図と環境の設計モデルとの間の、占有格子地図内の占有されたセルを設計モデルからのサンプリングされたポイントと関連付ける変換を決定することと、複数のマーカの地図と設計モデルとの間の変換を提供することと、を含み得る。
【０００８】
また別の態様では、システムが提供される。このシステムは、地図生成および位置整合のための手段を含み得る。特に、このシステムは、センサから、センサに対する環境内の複数のマーカの位置を表示する第１のセンサデータを受け取る手段と、第１のセンサデータに基づいて、複数のマーカの地図内のセンサのポーズを決定する手段と、を含み得る。このシステムは、センサから、センサから環境内の表面までの距離を表示する第２のセンサデータを受け取る手段と、第２のセンサデータとセンサの決定されたポーズとに基づいて、環境内の表面を表す占有格子地図を決定する手段と、をさらに含み得る。このシステムはまた、複数のマーカの地図と環境の設計モデルとの間の、占有格子地図内の占有されたセルを設計モデルからのサンプリングされたポイントと関連付ける変換を決定する手段と、複数のマーカの地図と設計モデルとの間の変換を提供する手段と、を含み得る。
【０００９】
これらの態様および他の態様、利点、および代替物は、添付の図面を適宜参照して以下の詳細な説明を読むことにより、当業者に明らかになるであろう。
【図面の簡単な説明】
【００１０】
【図１】例の実施形態による、システムのブロック図である。
【図２】例の実施形態による、１つ以上の倉庫を動作させるシステムを描画する。
【図３】例の実施形態による、システムを例示する。
【図４】例の実施形態による、１つ以上のロボットデバイスのためのロボットデバイスアーキテクチャを例示する。
【図５】例の実施形態による、１つ以上のロボットデバイスのためのレーザスキャナアーキテクチャを例示する。
【図６】例の実施形態による、スペースの事前地図作成を行うためのデバイスを例示する。
【図７】例の実施形態による、環境内をナビゲートしているロボットを示す。
【図８】例の実施形態による、ロボットが、検出を、地図作成されたランドマークと関連付けることを示す。
【図９】例の実施形態による、ロボット制御システムのモジュールを例示する機能ブロック図である。
【図１０】地図生成および位置整合のための例示の方法を示すフローチャートである。
【図１１】例の実装形態による、占有格子地図を例示する。
【図１２Ａ】例の実施形態による、マーカ位置の地図と設計モデルとの間の変換決定を例示する。
【図１２Ｂ】例の実施形態による、図１２Ａに描画されたマーカ位置の地図と設計モデルとの間の位置整合を例示する。
【発明を実施するための形態】
【００１１】
本明細書では、例の方法およびシステムが記載される。「例の」、「例として役立つ」、および「例示的な」との文言は、本明細書では、「例、実例、または例示として機能すること」を意味するように使用される。「例」である、「例として役立つ」、または「例示的」である、本明細書に記載される任意の実装形態または特徴は、必ずしも、他の実装形態または特徴よりも好ましい、または有利であると解釈されるべきではない。
【００１２】
本明細書に記載された例の実装形態は、限定的であることを意図されていない。本明細書に概して記載され、および図面に例示されているように、本開示の態様は、多種多様な異なる構成に編集され、置換され、組み合わされ、分離され、および設計されることが可能であり、それらの全てが本明細書で明示的に想到される。
【００１３】
Ｉ．概観
計算能力およびセンサ能力の進歩は、倉庫および他の種類の環境内で動作を実行するロボットデバイス（ロボット）の配備の増加に貢献することに役立ってきた。いくつかの動作は据え置き型ロボットによって実行され得るが、多くのタスクにとって、大抵の場合、ロボットが複数の位置の間を上手くナビゲートすることが必要である。したがって、タスクを完了させるために、移動型ロボットは、環境の本質的な理解を必要とし得る。
【００１４】
実際、様々な方法を使用して、使用する移動型ロボットが環境を効率的にナビゲートするための情報を進化させてもよい。特に、移動型ロボットが、移動型ロボットの制御システムが物理的境界の周辺で適切なナビゲーション方針を決定できるようにし得る、スペースの１つ以上の地図に依拠してもよい。
【００１５】
環境の地図を進化させるために、例示の方法は、環境を手作業で調査して、ロボットがナビゲーション中に使用し得る様々なランドマークの位置を決定してもよい。ランドマークは、位置および方位の基準に使用できる環境内の検出可能な特徴を表す。例えば、倉庫は、ロボットを誘導することに役立つ、特定の場所に配置された逆反射マーカ（マーカ）または他のインフラストラクチャを含んでもよい。マーカおよび他の存在し得るランドマークは、ロボットが位置を変化させる際に、マーカおよび他の存在し得るランドマークが、異なる位置および異なる角度から再観測できるため、有益である。例示の目的で、マーカを本明細書で検討される主要なランドマークとして使用するが、他の種類のランドマークも例の範囲内にあり得る。
【００１６】
環境の手作業の調査は、ロボットが使用できるマーカの正確な地図の作成を可能にし得るが、このプロセスは、時間がかかり、ロボットの配備を遅延させる可能性がある。さらに、この方法は、スペースの物理的特徴を指定する設計モデルと位置整合したマーカ位置の地図を作成しない可能性がある。この方法はまた、さらなるマーカを追加しなければナビゲートすることが困難であることが判明する特定の領域を特定するための、後続の試験を必要とし得る。
【００１７】
地図作成プロセスを高速化し、かつリアルタイムのユーザフィードバックを可能にするために、コンピューティングシステムは、センサが環境内の異なる位置からの測定値を提供する間に、センサによって提供される測定値を使用して未知の環境（例えば、倉庫）の地図を構築する同時の自己位置推定および地図作成（ｓｉｍｕｌｔａｎｅｏｕｓ  ｌｏｃａｌｉｚａｔｉｏｎ  ａｎｄ  ｍａｐｐｉｎｇ、ＳＬＡＭ）プロセスを実行してもよい。ＳＬＡＭは、マーカ検出、データ関連付け、ポーズ推定、およびポーズ／マーカ高精度化を伴うことが可能であり、環境のレーザスキャンなどの多様なセンサデータを使用して、２次元（２Ｄ）または３次元（３Ｄ）で実行できる。ＳＬＡＭを実行中に、コンピューティングシステムは、環境に配備されたロボットまたは他の運搬装置（自律型または手動型）によって使用できる検出されたマーカの位置を指定する地図を進化させてもよい。
【００１８】
いくつかの例の実施形態では、コンピューティングシステムは、マーカ位置の部分的に完成された地図を、物理的特徴（例えば、壁、階段、充電ステーション、および駐車スポット）の構造および場所を指定するコンピュータ支援設計（ＣＡＤ）モデルなどの環境の設計モデルと位置整合させる変換の決定もしながら、同時にＳＬＡＭを実行してもよい。変換は、ロボット制御システムが、ナビゲーション中に、マーカと物理的特徴との位置を併せて正確に使用し得るように、マーカの地図を設計モデルと位置整合させてもよい。コンピューティングシステムは、変換、設計モデル、およびマーカの地図を、安全なナビゲーションを可能にする環境に配備されたロボットの制御システムに提供してもよい。いくつかの実例では、人間の操作者が、環境内で運搬装置をナビゲートするときに、組み合わされた情報を使用してもよい。
【００１９】
例の実施形態では、コンピューティングシステムは、センサからの距離測定値を使用して、マーカの検出された位置を、環境のＣＡＤモデルにおける壁および他のインフラストラクチャと位置整合させてもよい。例として、コンピューティングシステムは、センサによって提供された距離測定値に基づいて、第１のマーカを階段の近くに配置させ、別のマーカをドアに関連する壁上に配置させることを決定してもよい。
【００２０】
いくつかの例では、コンピューティングシステムは、周囲の表面の入信するセンサ測定値に基づいて、環境内の対応する領域を表す多数のセルを含む占有格子地図を生成してもよい。特に、コンピューティングシステムは、センサの視点（ｐｏｉｎｔ−ｏｆ−ｖｉｅｗ、ＰＯＶ）に対応する座標系を用いて占有格子地図を進化させてもよい。占有格子地図の各セルは、表される領域のステータスを表示する割り当て状態を有してもよい。例として、セルは、障害物、空きスペース、または未知の物を含んでもよい。占有格子地図は、センサのＰＯＶからのセンサ測定値を使用して進化させてもよいため、占有格子地図は、センサ測定値に基づいて進化させたマーカの地図と同じ座標系を使用して決定されてもよい。結果として、コンピューティングシステムは、占有格子地図とＣＡＤモデルとの間の誤差を最小にすることによって、マーカの地図をＣＡＤモデルと位置整合させてもよい。
【００２１】
進化させた占有格子地図と環境を表すＣＡＤモデルとの誤差を最小にするために、占有格子地図内の占有されたセルを、設計モデルからのサンプリングされたポイントに関連付ける変換が使用されてもよい。例として、変形は、占有格子地図と設計モデルからのサンプリングされたポイントとの間の誤差を減少させる、水平面の回転および並進を伴ってもよい。いくつかの例では、コンピューティングシステムは、変形の決定時に、様々な２Ｄ回転および並進の値をサンプリングしてもよい。
【００２２】
さらなる例では、コンピューティングシステムは、マーカの地図を設計モデルに割り当てる変換の決定もしながら、同時に、環境内のマーカ位置の地図を進化させてもよい。例として、コンピューティングシステムは、環境全体にわたる一回の実施で、環境内のマーカ位置の地図を設計モデルに割り当てることができる変換最適化を、グラフベースのＳＬＡＭ実装形態中に組み込んでもよい。実際的には、コンピューティングシステムは、上記のプロセスを使用して、ＳＬＡＭの一回の反復後に、ロボットが環境の既存のＣＡＤモデルを活用することを可能にしてもよい。
【００２３】
いくつかの例では、コンピューティングシステムは、ＳＬＡＭ（または同様のプロセス）の動作を実行することと、マーカ位置の進化させた地図を設計モデルに割り当てる変換を更新することと、を交互に行ってもよい。例として、コンピューティングシステムは、検出されたマーカの地図に対するセンサのポーズを決定し、続いて、環境内の近くの表面の測定値を使用して、マーカ位置の地図をＣＡＤモデルに割り当ててもよい。結果として、ロボットおよび他の運搬装置は、マーカの位置と物理的特徴との両方を表示する情報を使用して環境をナビゲートしてもよい。例えば、制御システムは、マーカの位置を使用して、物理的な壁の周辺を駐車スポットまで、または環境の設計モデルにおいて表示されるような格納ラックまでナビゲートする方針を決定してもよい。
【００２４】
いくつかの例では、コンピューティングシステムは、マーカの地図の座標系をＣＡＤモデルの座標系と関連して設定することによって、マーカの地図をＣＡＤモデルと位置整合させてもよい。したがって、コンピューティングシステムは、マーカの地図への新たな追加内容を、自動的に、壁、ラッキング、およびＣＡＤモデルにおいて述べた他の構造物に割り当てるように構成されてもよい。加えて、コンピューティングシステムは、追加のセンサデータを使用して、マーカ位置の地図内のセンサのポーズを高精度化してもよい。コンピューティングシステムはまた、高精度化されたポーズを使用して、マーカ位置の地図を設計モデルと位置整合させる変形を調整してもよい。例えば、コンピューティングシステムは、元の変換に基づいた、より狭い範囲の候補変換をサンプリングすることによって、変換を調整してもよい。
【００２５】
いくつかの例の実施形態では、コンピューティングシステムは、決定された変換を他のシステム（例えば、環境内に配備されたロボットの制御システム）に提供してもよい。ロボットの制御システムは、マーカ地図、変換、および／または環境をナビゲートするための設計モデルを使用してもよい。いくつかの場合では、コンピューティングシステムは、変換と環境の設計モデル（例えば、ＣＡＤモデル）とに基づいて、ロボットの制御システムに制御命令を提供してもよい。
【００２６】
ＩＩ．ロボットデバイスのシステム設計
図１は、例の実施形態による、システム１００のブロック図である。システム１００は、プランニングシステム１１０およびロボットデバイス１２０を含む。プランニングシステム１１０は、環境内で動作している１つ以上のロボットデバイスの動きを協調させることができるオフボードプランナ１１２を含むことができる。オフボードプランナ１１２は、ロードマッププランナ１１４を含んでもよく、オフボードプランナ１１２および／またはロードマッププランナ１１４が、ロボットデバイス（例えば、ロボットデバイス１２０）が環境内で追従する１つ以上の非同期経路１１６を生成してもよいようになっている。
【００２７】
図３との関連で以下に検討するプロトタイプグラフ３００などの、ロードマップグラフ、プロトタイプグラフ、環境を表す他のロードマップが、受け取られ、決定され、または他の方法でプランニングシステム１１０、オフボードプランナ１１２、および／またはロードマッププランナ１１４に提供され得る。非同期経路１１６は、ロードマップグラフ、プロトタイプグラフ、または他のロードマップのうちの１つ以上に基づいて進化させた１つ以上の経路とすることができる。例えば、ロードマップグラフ、プロトタイプグラフ、または他のロードマップが、複数の交差部を接続する複数のエッジを有する場合、非同期経路１１６は、複数のエッジおよび／または複数の交差部の観点から指定できる。
【００２８】
いくつかの例では、ロボットデバイス１２０は、経路に追従することが可能な任意の１つ以上の操作される運搬装置とすることができる。例えば、ロボットデバイス１２０は、オンボードソフトウェア１３０および／またはハードウェア１５０を含むことができる。オンボードソフトウェア１３０は、位置測定サブシステム１３２、障害物検出サブシステム１３４、オドメトリサブシステム１３６、経路追従サブシステム１３８、および軌跡追従サブシステム１４２のうちの１つ以上を含むことができる。したがって、オンボードソフトウェア１３０は、他の例では、追加のソフトウェアシステムを含んでもよい。
【００２９】
位置測定サブシステム１３２は、ロボットデバイスを位置測定することが可能なシステムを表す。言い換えると、位置測定サブシステム１３２は、環境を基準としたロボットデバイスの場所決定を可能にし得る。例として、位置測定サブシステム１３２は、ロボットデバイスの位置推定値、および／または、ロボットデバイスを位置測定し、ロボットデバイスが所望の経路（例えば、非同期経路１１６）に追従するのを支援し、および／またはロボットデバイスが軌跡（例えば、軌跡１４０）に追従するのを支援するのに使用できる他の物体の位置推定値を生成することができる。位置推定値が生成されると、位置測定サブシステム１３２は、位置推定値を経路追従サブシステム１３８に提供することができる。
【００３０】
非同期経路、または縮めて経路は、時不変プラン、またはロボットデバイス１２０がどのように開始ポイント（ｓｔａｒｔｉｎｇ  ｐｏｉｎｔ、ＳＰ）から終了ポイント（ｅｎｄｉｎｇ  ｐｏｉｎｔ、ＥＰ）まで進行し得るかを表示する他の情報とする、すなわち、（非同期）経路が時間を考慮しないものとすることができる。対照的に、軌跡は、ロボットデバイス１２０がプランニング時間間隔の間に追従することができる操向角度の値、およびトラクションモータ速度の値を含むことができる。
【００３１】
プランニング時間間隔は、ロボットデバイスが経路、ルート、および／または行程に追従するように誘導または計画される継続時間とすることができる。いくつかの実施形態では、プランニング時間間隔は、例えば、５秒、１秒、０．２秒、０．１秒などの所定の時間量とすることができる。特に、所定のプランニング時間間隔は、プランニング時間間隔の値を指定するユーザ入力に基づいて決定できる。他の実施形態では、プランニング時間間隔は、つなぎ合わせた時間、均一なエッジ（経路）コストに関連付けられた時間、軌跡に沿って進行する推定時間などの１つ以上の他の値に基づいて決定できる。プランニング時間間隔およびプランニング時間間隔の値を決定するための他の技術も同様に可能である。
【００３２】
その場合に、１つ以上の軌跡を使用して、ロボットデバイス１２０がどのようにして開始ポイント（ＳＰ）から終了ポイント（ＥＰ）まで時不変に進行することができるかを記載することができるいくつかの実施形態では、軌跡はまた、プランニング時間間隔にわたって、限定されないが、ロボットデバイス１２０およびロボットデバイス１２０のアクチュエータ位置の他の動力学変数（例えば、速度および加速度）などの、操向角度およびトラクションモータ速度以外の他の変数の値に関する情報を提供することができる。
【００３３】
例として、場所「家」から場所「職場」まで車を運転する経路は、自律型運搬装置の人または制御デバイスなどの制御実体が、家から職場まで車を運転するために使用することができる順序付けられた街路の列挙を含んでもよい。この例では、家から職場までの軌跡は、家から職場まで車を運転するために制御実体が使用することができる速度および／または加速度を指定する１つ以上の命令を伴うことができる。いくつかの例では、軌跡は、交通、天候、および他の時間で変化する条件を考慮に入れることができ、例えば、家から職場まで向かう軌跡は、制御実体が「２０ＭＰＨ以下で１０秒間で右折する」、「３分間で５５ＭＰＨまで加速して直進する」、「３０秒以内に２０ＭＰＨまで減速する」、「２０ＭＰＨ以下で１０秒間で左折する」ことを表示することができる。いくつかの実施形態では、軌跡は、例えば、障害物、経路の変化などに合わせて、道に沿って変化させることができる。
【００３４】
障害物検出システム１３４は、１つ以上の障害物がロボットデバイス１２０の経路および／または軌跡を阻止しているかどうかを判定することができる。障害物の例は、限定されないが、パレット、パレットから落下し得る物体、ロボットデバイス、および環境内で作業している人間の作業者を含むことができる。障害物が検出される場合に、障害物検出サブシステム１３４は、障害物検出を表示する１つ以上の伝達内容を経路追従サブシステム１３８に提供することができる。障害物検出を表示する１つ以上の伝達内容は、障害物検出サブシステム１３４によって検出された１つ以上の障害物の１つ以上の位置に関する場所情報、および／または障害物検出サブシステム１３４によって検出された１つ以上の障害物に関する識別情報を含むことができる。オドメトリサブシステム１３６は、サーボドライブ１５２からのデータなどのデータを使用して、経時的なロボットデバイス１２０の位置の１つ以上の変化を推定することができる。
【００３５】
経路追従サブシステム１３８および／または軌跡追従サブシステム１４２は、プランナが搭載されたロボットデバイス１２０として作用することができる。この搭載されたプランナは、位置測定サブシステム１３２によって提供された位置推定値に基づいて、非同期経路１１６などの１つ以上の経路に追従することができる。
【００３６】
経路追従サブシステム１３８は、非同期経路１１６、位置測定サブシステム１３２からの位置推定入力、障害物検出サブシステム１３４からの１つ以上の障害物の１つ以上の位置に関する場所情報、および／またはオドメトリサブシステム１３６からの位置の１つ以上の変化に関する情報を受け取り、１つ以上の軌跡１４０を出力として生成することができる。
【００３７】
ハードウェア１５０は、サーボドライブ１５２および／またはモータ１５４を含むことができる。サーボドライブ１５２は、１つ以上のサーボ機構および関連電気機器を含むことができる。いくつかの例では、サーボドライブ１５２は、１つ以上のサーボ機構に電力供給し、および／またはサーボ機構からのフィードバック信号を監視する、１つ以上の電子増幅器を含むことができる。サーボドライブ１５２は、オンボードソフトウェア１３０から、軌跡１４４などの制御信号を受け取ることができ、サーボ機構に電流を提供して、制御信号に比例する動きを作成することができる。いくつかの実施形態では、サーボドライブ１５２は、サーボ機構から受け取られたステータス情報を、軌跡１４４によって指令された予測ステータスと比較することができる。その場合に、サーボドライブ１５２は、受け取られたステータス情報と予測ステータスとの間の偏差を補正するために、提供される電流の、電圧周波数またはパルス幅を調整することができる。他の実施形態では、サーボドライブ１５２は、オンボードソフトウェア１３０に、フィードバック信号および／または場所関連情報などの情報を提供することができる。
【００３８】
１つ以上のモータ１５４は、サーボドライブ１５２のサーボ機構の一部または全部とすることができる。例えば、モータ１５４は、サーボドライブ１５２によって提供された電流を使用して、ロボットデバイス１２０の一部または全部を駆動する機械力を生成することができ、例えば、モータ１５４は、ロボットデバイス１２０を推進させる、および／またはロボットデバイス１２０の１つ以上の作動器を駆動する力を提供することができる。
【００３９】
倉庫、オフィスビル、または家などの屋内設定、および／または公園、駐車場、または庭などの屋外設定を含む環境などの環境内のロボットデバイスの経路プランニングは、ロボットデバイスなどのエージェントが追従し得る経路の接続グラフであるロードマップグラフを基準として実行できる。空きスペースアプローチを取らずにロードマップグラフを使用して環境内のエージェントルーティングを計画することは、合計のプランニング状態のスペースを減少させ、したがって、大規模なマルチエージェント協調を扱いやすくすることができる。さらに、ロードマップグラフの使用は、ロボットデバイスにナビゲートさせる領域を作業者が直観的に制御することを可能にし得る。
【００４０】
ロードマップグラフ生成は、まず、レーンの大まかな位置および進行の方向を表示するプロトタイプグラフの生成を伴い得る。いくつかの例では、プロトタイプグラフは、レーンとロボットデバイスの進行の方向とを表示する有向グラフとすることができる。他の例では、プロトタイプグラフは、環境の地図または描画に基づいて、手動で生成できる。
【００４１】
図２は、例の実施形態による、１つ以上の倉庫を動作させるためのシステム２００を描画している。システム２００は、倉庫管理システム２１０、プランニングシステム１１０、およびロボットデバイス２２０を含む。倉庫管理システム２１０は、倉庫に関連付けられた１つ以上のロジスティクス要求２１２、例えば、倉庫に１つ以上のアイテムを格納する要求、および／または倉庫から１つ以上のアイテムを出荷する要求を受け取ることができる。倉庫管理システム２１０は、ロジスティクス要求２１２を１つ以上のアクション２１４に変換することができ、アクション２１４は、限定されないが、１つ以上の指定エージェントを１つ以上の指定場所に移動させる「ｍｏｖｅ−ｔｏ」アクション、および１つ以上のアイテムを１つ以上の指定場所に搬送する「ｔｒａｎｓｐｏｒｔ」アクションを含むことができる。いくつかの例では、アクション２１４は、フォーム｛エージェントＩＤ，目的地｝のｇｏ−ｔｏコマンドを含むことができるが、「ｍｏｖｅ  ｐａｌｌｅｔ」などの他のアクションが可能である。これらは、通常、ｍｏｖｅ−ｔｏコマンドに分解不能であるが、（ｍｏｖｅ  ｔｏ  ｐｉｃｋ  ｌｏｃａｔｉｏｎ，ｍｏｖｅ  ｔｏ  ｐｌａｃｅ  ｌｏｃａｔｉｏｎ）に分解可能である。
【００４２】
プランニングシステム１１０は、オフボードプランナ１１２およびエクスキュータ２２０を含む。オフボードプランナ１１２は、入力としてアクション２１４を受け取り、倉庫内で動作している１つ以上のエージェント、例えばアクション２１４を実行する複数のロボットデバイスについて、１つ以上の協調経路２１６を生成することができる。協調経路２１６は、倉庫内の全てのエージェントがロジスティクス要求２１２を遂行するための協調アクションの一部とすることができる。協調アクションは、エージェントの優先度を考慮に入れることができ、例えば、ロボットデバイスＲＤ１およびＲＤ２が両方ともほぼ同じ時刻にあるポイントに到達すると予測される場合に、ロボットデバイスＲＤ２がそのポイントを通過するのをロボットデバイスＲＤ１が待つ（またはその逆も可）など、ロボットデバイスのうちの一方が他方よりも高い優先度を有する、または他方に対して優先権を有することができる。エクスキュータ２２０は、協調経路２１６を受け取り、非衝突サブ経路２２２を生成して、ロボットデバイス１２０を協調アクションプランのうちの自己の部分の完遂に向かわせてアクション２１４を実行させ、ロジスティクス要求２１２を遂行させる。
【００４３】
図２において上記に例示したように、オフボードプランナ１１２およびエクスキュータ２２０を含むプランニングシステム１１０は、ロボットデバイス１２０と通信することができる。いくつかの実施形態では、ロボットデバイスは、例えば、労働安全衛生庁（Ｏｃｃｕｐａｔｉｏｎａｌ  Ｓａｆｅｔｙ  ａｎｄ  Ｈｅａｌｔｈ  Ａｄｍｉｎｉｓｔｒａｔｉｏｎ、ＯＳＨＡ）クラス１またはクラス３の動力付き産業トラックなどのフォークトラックとすることができる。他の実施形態では、プランニングシステム１１０は、「クラウド」（例えば、１つ以上のネットワークコンピューティングデバイス）に位置する、および／またはロボットデバイス１２０と同じ位置にある敷地のどこかに位置する１つ以上のネットワークコンピューティングデバイスを使用して実行されるソフトウェアを含むことができる。
【００４４】
図３は、例の実施形態による、ネットワーク３１８を使用して接続された、ロジスティクスインターフェース３１０、倉庫管理システム２１０、および１つ以上のロボットデバイス１２０を含むシステム３００を例示している。ロジスティクスインターフェース３１０は、パレットおよび／またはロボットデバイスなどの物体の、倉庫管理システム２１０への移動に関して、ネットワーク３１８を介して倉庫管理システム２１０に在庫タスク命令を提供することができる。例の在庫タスクは、タイプＢのアイテムを収容したパレットＡを場所Ｃに移動させること、とすることができる。
【００４５】
倉庫管理システム２１０は、ロジスティクスインターフェース３１０から在庫タスク命令を受け取り、在庫タスク命令を実行するようにロボットデバイス１２０を制御するための、１つ以上のタスク／ミッション命令（例えば、ロボットデバイスＡにパレットＢを場所Ｃから場所Ｄに移動させる命令）および／またはプランを生成することができる。タスク／ミッション命令および／またはプランは、１つ以上の経路および／または１つ以上の軌跡に関する情報を含むことができ、タスク／ミッション命令、プラン、経路、および軌跡（単数）／軌跡（複数）は、図１および図２に関連して検討した技術を使用して、倉庫管理システム２１０のプランニングシステム１１０によって生成される。
【００４６】
例えば、倉庫管理システム２１０は、集中化制御サービスとすることができ、例えばサーバコンピューティングデバイスなどの１つ以上のコンピューティングデバイスを使用して、稼働し、データを記憶する。これらのタスクを実行するために、倉庫管理システム２１０は、ＷＭＳミドルウェアを含むことができ、ユーザインターフェースを提供して、システム３００を監視および管理するためのツールへのアクセスを提供する。ＷＭＳミドルウェアおよび／または倉庫管理システム２１０の他の構成要素は、１つ以上のアプリケーションプログラミングインターフェース（ａｐｐｌｉｃａｔｉｏｎ  ｐｒｏｇｒａｍｍｉｎｇ  ｉｎｔｅｒｆａｃｅ、ＡＰＩ）、例えば、タスク／ミッション命令（例えば、ロボットデバイスＡにパレットＢを場所Ｃから場所Ｄに移動させる命令）からロボットデバイス経路、ポーズ、および／または軌跡への変換、在庫タスクとタスク／ミッション命令との間の変換、およびＡＰＩ間の変換、のためのプロトコル変換ＡＰＩを使用することができる。
【００４７】
倉庫管理システム２１０によって提供されるユーザインターフェースは、システム３００に、限定されないが、例えば、１つ以上のロボットデバイスの場所、バッテリステータス、充電状態などを提示することなどのロボットデバイス１２０の監視と、１つ以上のロボットデバイス１２０に対する、在庫タスク命令、タスク／ミッション命令、プラン、経路、および／または軌跡（単数）／軌跡（複数）の生成の可能化および送出と、１つ以上の倉庫地図、パレット、ネットワーク、および／またはプランニングシステム（例えば、プランニングシステム１１０、倉庫管理システム２１０、および／またはロジスティクスインターフェース３１０）に関連するデータの再検討、更新、消去、および／または挿入とを含む、１つ以上のユーザインターフェース機能を提供することができる。
【００４８】
いくつかの実施形態では、倉庫管理システム２１０は、ロジスティクスインターフェース３１０とロボットデバイス１２０との間と、ロボットデバイス１２０のうちの２つ以上と１つ以上のロボットデバイス１２０に搭載されたオンボードシステム３２０などの１つ以上のオンボードシステムとの間と、の通信をルーティングすることができる。他の実施形態では、倉庫管理システム２１０は、システム３００に関連するデータ、例えば、限定されないが、ロボットデバイス１２０のうちの１つ以上によるタスク／ミッション命令の完了に関するデータ、ロボットデバイスが初期化／起動された場所を示すデータを含む、ロボットデバイス１２０のいくつかまたは全ての場所および／またはポーズに関するデータ、人間のアクション、事故解析、および／またはデバッギングに対する１つ以上のオーディットトレールに関連するデータ、および状態追跡についてのデータを記憶し、生成し、読み出し、書き込み、更新し、および／または消去することができる。他の実施形態では、倉庫管理システム２１０は、ロボットデバイス１２０および１つ以上のアダプタと通信する中央メッセージルータ／永続性マネージャを含むことができる。１つ以上のアダプタの各々は、倉庫管理システム２１０に利用可能な、システム３００のデータおよび／または通信へのアクセスを提供することができ、限定されないが、上述のユーザインターフェースに対するユーザインターフェースサービスアダプタ、システム３００に関する情報へのワールドワイドウェブ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ、ＷＷＷ）／インターネットアクセスを可能にするウェブコンテンツサービスアダプタ、メッセージプロキシアダプタ、るおよび／またはＡＰＩ間通信とＷＭＳとの間の仲介手段として作用するＷＭＳアダプタを含むことができる。
【００４９】
図３は、１つ以上のロボットデバイス１２０の各々が、オンボードシステム３２０、ネットワークスイッチ３３０、運搬装置コントローラ３３２、プログラマブルロジックコントローラ（ｐｒｏｇｒａｍｍａｂｌｅ  ｌｏｇｉｃ  ｃｏｎｔｒｏｌｌｅｒ、ＰＬＣ）３３４、１つ以上のデバイスセンサ３３８、および１つ以上のデバイス３４０のうちの１つ以上を含むことができる。
【００５０】
オンボードシステム３２０は、ロボットデバイス１２０への設置および使用のために構成された、ロボットプランニングの計算およびセンサパッケージとすることができ、オンボードシステム３２０は、オンボードセンサ３２２および１つ以上のプランニング／実行プロセッサ３２４を含むことができる。図３はまた、ネットワークスイッチ３３０を使用して、（ネットワーク３１８を介して）プランニングシステム１１０と、デバイスセンサ３３８と、および／またはロボットデバイス１２０の１つ以上のアクチュエータと少なくとも通信するように構成された、そのオンボードシステム３２０を示す。
【００５１】
オンボードシステム３２０は、ロボットデバイス１２０の位置測定、プランを実行するための、および／または倉庫管理システム２１０によって提供される経路および／または軌跡に沿って進行するための、ローカル軌跡の生成、ドライブ３４０に対する、１つ以上の（ローカル）軌跡に追従させるコマンドの生成、ロボットデバイス１２０のアクチュエータを制御するコマンドの生成、および倉庫管理システム２１０へのポーズ、ステータス、および／または他の情報の報告、のうちの１つ以上を担うことができる。
【００５２】
オンボードセンサ３２２は、オンボードシステム３２０をナビゲートおよび／または制御するための、１つ以上のナビゲーションレーザ、レーザスキャナ、カメラ、および／または他のセンサを含むことができる。例えば、ロボットデバイス１２０のロボットデバイスは、ドイツ、ＷａｌｄｋｉｒｃｈのＳＩＣＫ  ＡＧ、日本、大阪のＨＯＫＵＹＯ  ＡＵＴＯＭＡＴＩＣ  ＣＯ．ＬＴＤ、および／または日本、大阪のＫＥＹＥＮＣＥ  ＣＯＲＰＯＲＡＴＩＯＮによって提供される１つ以上のレーザスキャナなどの、１つ以上のレーザスキャナを含むことができる。レーザスキャナは、ロボットデバイスの進行の方向に沿った、ならびにロボットデバイスの両側部、角部、および／または後部に沿った、障害物の検出および／または回避に使用できる。レーザスキャナはまた、反射器に基づく位置測定を使用してロボットデバイスを位置測定するために使用できる。いくつかの実施形態では、カメラおよび／または他のセンサは、レーザスキャナの代わりに、またはレーザスキャナとともに、障害物検出、障害物回避、および／または位置測定に使用できる。
【００５３】
プランニング／実行プロセッサ３２４は、少なくともオンボードセンサ３２２に接続された１つ以上のコンピュータプロセッサを含むことができる。プランニング／実行プロセッサ３２４は、オンボードセンサ３２２からのデータを読み取り、ローカル軌跡および／またはドライブ３４０に対する、ロボットデバイス１２０を移動させるコマンドを生成し、倉庫管理システム２１０と通信することができる。ローカル軌跡は、ロボットデバイス１２０が、開始ポーズで開始し、ある時点で終了ポーズに至る軌跡とすることができる。いくつかの例では、開始ポーズは、暗黙的に指定でき、例えば、開始ポーズはロボットデバイス１２０の現在のポーズとすることができ、したがって、ローカル軌跡は、ロボットデバイス１２０の開始ポーズがロボットデバイス１２０の現在のポーズであるという仮定に基づいている。
【００５４】
プランニング／実行プロセッサ３２４は、コンポーネントフレームワークを利用することができる。コンポーネントフレームワークは、Ｖｉｒｇｉｎｉａ、Ｏｎａｎｃｏｃｋのｂｏｏｓｔ．ｏｒｇによって提供される「ｂｏｏｓｔ：：ａｓｉｏ」および「ｂｏｏｓｔ：：ｓｉｇｎａｌｓ２」ソフトウェアライブラリなどの、ロボットデバイス１２０の一貫した非同期モデルを提供するように構成された、入出力（ｉｎｐｕｔ／ｏｕｔｐｕｔ、Ｉ／Ｏ）およびシグナリングに対するソフトウェアライブラリ上に構築されたマルチスレッドのジョブスケジューリングおよびメッセージ回送システムとすることができる。コンポーネントフレームワークは、ソフトウェアコンポーネントがスレッドセーフな態様で並列に実行できるように、ソフトウェアコンポーネント（またはモジュール）間の通信を可能にすることができる。
【００５５】
コンポーネントフレームワークは、状態機械コンポーネント、位置測定コンポーネント、プランニングコンポーネント、および軌跡追従コンポーネントのうちの１つ以上を含むことができる。状態機械コンポーネントは、運搬装置初期化、運搬装置通信、および障害処置についての、ロボットデバイス１２０の状態を管理することができる。状態機械コンポーネントは、決定論的有限オートマトンまたは他の状態機械を使用してロボットデバイスの状態を管理することができる。
【００５６】
位置測定コンポーネントは、運搬装置からのデータを読み取り、ロボットデバイス１２０の以前の状態情報を統合してロボットデバイス１２０のポーズを決定することができる。運搬装置センサデータは、運搬装置センサによって検出された、対象となる１つ以上のランドマーク／ポイントを表示してもよい。これに代えて、運搬装置センサからのデータは、位置測定コンポーネントが、運搬装置センサデータに基づいて対象となる１つ以上のランドマーク／ポイントを検出するような処理を必要としてもよい。ポーズは、パレットまたは他の物体などの、対象となる１つ以上の検出されたランドマーク／ポイントに対して決定できる。プランニングコンポーネントは、倉庫管理システム２１０から１つ以上の目標を受け取り、それらの目標を達成するようにロボットデバイス１２０に対するローカル軌跡を決定することができる。いくつかの実施形態では、ローカル軌跡は、ロボットデバイス１２０が、所定の時間量、例えば、１００ミリ秒、２００ミリ秒、５００ミリ秒、１秒、５秒の間、追従すべき、短期間の軌跡とすることができる。軌跡追従コンポーネントは、プランニングコンポーネントによって生成されたローカル軌跡を受け取り、ローカル軌跡に沿って進行させる駆動制御命令を生成することができる。駆動制御命令は、次いで、ロボットデバイス１２０のトラクションモータおよび他のアクチュエータを制御するドライブ３４０に中継される。
【００５７】
ネットワークスイッチ３３０は、ロボットデバイス１２０の通信を可能にすることができる。これらの通信は、限定されないが、オンボードシステム３２０とロボットデバイス１２０の残りの部分、例えばデバイスセンサ３３８およびドライブ３４０との間の通信と、ネットワーク３１８を介した倉庫管理システム２１０との通信と、を含むことができる。例えば、ネットワークスイッチ３３０は、Ｅｔｈｅｒｎｅｔおよび／または有線ネットワークに対する他の有線通信インターフェースを介した、および／またはＷｉ−Ｆｉ（商標）および／または無線ネットワークに対する他の無線通信インターフェースを介した、伝送制御プロトコル／インターネットプロトコル（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ、ＴＣＰ／ＩＰ）ベースの通信を可能にすることができ、台湾、Ｎｅｗ  Ｔａｉｐｅｉ  ＣｉｔｙのＰＬＡＮＥＴ  Ｔｅｃｈｎｏｌｏｇｙ  ＣｏｒｐｏｒａｔｉｏｎによるＰＬＡＮＥＴ  Ｅｔｈｅｒｎｅｔ  Ｓｗｉｔｃｈなどである。
【００５８】
いくつかの実施形態では、ロボットデバイス１２０とプランニングシステム１１０との間の通信は、遠隔手続呼び出し（ｒｅｍｏｔｅ  ｐｒｏｃｅｄｕｒｅ  ｃａｌｌｓ、ＲＰＣ）を含むことができる。遠隔手続呼び出しは、プランニングシステム１１０のソフトウェアによって、ロボットデバイス１２０のうちの１つ以上に常駐するソフトウェア手続き、方法、および／または機能の呼び出しを可能にすることができ、その逆も可能である。遠隔手続呼び出しは、ＴＣＰ／ＩＰ、ＨＴＴＰ１．０および／またはＨＴＴＰ２．０などのハイパーテキストトランスファープロトコル（ＨｙｐｅｒＴｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ、ＨＴＴＰ）、および／または別の通信プロトコルといった通信プロトコルに基づくことができる。遠隔手続呼び出しのいくつかまたは全ては、暗号化されたデータを含むことができ、このようなデータは、セキュアソケットレイヤ（Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔｓ  Ｌａｙｅｒ、ＳＳＬ）、トランスポートレイヤセキュリティ（Ｔｒａｎｓｐｏｒｔ  Ｌａｙｅｒ  Ｓｅｃｕｒｉｔｙ、ＴＬＳ）、および／または、１つ以上の他の暗号アルゴリズムおよび／またはプロトコルを使用して暗号化されてもよい。暗号化されたデータが使用される実施形態では、プライベート認証局などの１つ以上の認証局が、暗号化および／または暗号化されたデータの復号に使用される１つ以上の証明書を認証することができる。認証局は、アクセス制御リスト（ａｃｃｅｓｓ  ｃｏｎｔｒｏｌ  ｌｉｓｔ、ＡＣＬ）を使用して、１つ以上の証明書へのアクセスを制御することができる。遠隔手続き呼び出しは、ＲＰＣ関連通信のための、要求／応答プロトコルおよび／または双方向ストリーミングプロトコルを使用することができる。ＲＰＣ関連通信に双方向ストリーミングプロトコルが使用される実施形態では、単一の持続するＲＰＣを使用して、双方向ストリーミングプロトコルを実装することができる。
【００５９】
運搬装置３３２および／またはプログラマブルロジックコントローラ３３４は、ロボットデバイス１２０の電気的およびセンサ管理機能性を提供することができる。電気的およびセンサ管理機能性は、限定されないが、電気負荷制御、照明制御、センサおよび／またはスイッチ信号処理、および電源管理の機能性を含むことができる。運搬装置マスタ３３６は、ロボットデバイス３２０の、リフトデバイスなどの１つ以上のアクチュエータを制御するための機能性を提供することができる。
【００６０】
デバイスセンサ３３８は、ロボットデバイス１２０を制御することおよび／または動作させることに関連するデータを提供することができる１つ以上のセンサを含むことができる。このデータは、限定されないが、位置測定情報、位置推定値、および地図作成データなどの、ロボットデバイス１２０の周囲の環境に関する情報を提供することができる。例えば、デバイスセンサ３３８は、１つ以上のレーザ（例えば、２次元（２Ｄ）レーザ、安全レーザ、レーザスキャナ）、カメラ（例えば、飛行時間（Ｔｉｍｅ−ｏｆ−Ｆｌｉｇｈｔ、ＴｏＦ）カメラ、赤緑青（ＲＧＢ）カメラ、温度カメラ）、電気センサ、近接センサ、ナビゲーションデバイス、および場所センサを含むことができる。
【００６１】
ドライブ３４０は、ロボットデバイス１２０を移動させるための機能性を提供する、１つ以上のドライブコントローラおよび／またはアクチュエータを含むことができる。ドライブコントローラは、ドライブアクチュエータに、ロボットデバイス１２０の動きを制御するように指示することができる。ドライブアクチュエータは、１つ以上のトラクションモータ、電気ドライブ、油圧ドライブ、および圧縮空気ドライブを含むことができる。
【００６２】
図４は、例の実施形態による、ロボットデバイス１２０のロボットデバイスアーキテクチャ４００を例示している。ロボットデバイス１２０のロボットデバイスアーキテクチャ４００は、ソフトウェアを含むことができる。このソフトウェアは、位置測定用ソフトウェア４１０、パレットポーズ推定器用ソフトウェア４１２、状態機械に関連するソフトウェア４１４、プランナ追従器用ソフトウェア４１６、コンポーネントフレームワーク用ソフトウェア４２０、およびオペレーティングシステム４３０を含むことができる。このソフトウェアは、１つ以上のハードウェアプランニング／実行プロセッサ３２４によって実行できる。ロボットデバイス１２０と他のデバイスとの間の通信は、ネットワークゲートウェイ４４０および／またはネットワークスイッチ３３０を使用して実行できる。例えば、ネットワークゲートウェイ４４０は、ロボットデバイス１２０のロボットデバイスとの、およびロボットデバイス内での無線通信に使用でき、ネットワークスイッチ３３０は、ロボットデバイス１２０のロボットデバイスとの、およびロボットデバイス内での有線通信に使用できる。ロボットデバイスアーキテクチャ４００はまた、図３に関連して上述したデバイスセンサ３３８およびドライブ３４０などの追加のハードウェアを含む。いくつかの実施形態では、ロボットデバイスアーキテクチャ４００は、限定されないが、ＴｏＦカメラ４５０およびＲＧＢカメラ４５２を含む１つ以上のカメラを含むことができ、１つ以上のカメラは、１つ以上のスチルカメラおよび／または１つ以上のビデオカメラを含むことができる。
【００６３】
図５は、例の実施形態による、ロボットデバイス１２０のレーザスキャナアーキテクチャ５００を例示している。いくつかの実施形態では、デバイスセンサ３３８のうちのいくつかまたは全ては、レーザスキャナアーキテクチャ５００によって例示されるレーザおよびレーザスキャナとすることができる。
【００６４】
レーザスキャナアーキテクチャ５００は、レーザ５１０、５１２、５２０、５２２、レーザスキャナ５２４、プロトコル変換器５２６、ネットワークスイッチ３３０、およびオンボードシステム３２０を含むことができる。レーザ５１０、５１２、５２０、および５２２は、ロボットデバイス１２０の一定位置に位置させることができ、例えば、レーザ５１０は、ロボットデバイスの前部に位置させることができ、レーザ５１２は、ロボットデバイスの後部に位置させることができ、レーザ５２０は、ロボットデバイスの左前角部に位置させることができ、レーザ５２２は、ロボットデバイスの右前角部に位置させることができる。レーザ５１０、５１２、５２０、５２２および／またはレーザスキャナ５２４は、環境内でロボットデバイスを位置測定するための情報を提供することができる。いくつかの実施形態では、レーザ５１０、５１２、５２０、５２２および／またはレーザスキャナ５２４は、１つ以上の反射器の反射される光を放出することができ、反射光は、１つ以上のレーザセンサによって検出でき、ロボットデバイスは、反射光を検出するためにかかる時間の長さに基づいて、環境内で位置測定できる。これらの実施形態のうちの特定のものでは、レーザ５１０、５１２、５２０、５２２および／またはレーザスキャナ５２４のうちのいくつかまたは全ては、反射されたレーザ光を検出する１つ以上のレーザセンサを含むことができる。その場合に、レーザ５１０、５１２、５２０、５２２および／またはレーザスキャナ５２４は、限定されないが、レーザに関連するデータ（例えば、レーザの保守データ）、レーザによって放出された光に関連するデータ、および反射されたレーザ光をレーザセンサによって検出するのにかかる時間の１つ以上の長さに関連するデータを含むデータを生成することができる。
【００６５】
図５に例示するように、レーザ５２０、５２２などのいくつかのレーザ、およびレーザスキャナ５２４は、ネットワークスイッチ３３０に直接接続できる一方、レーザ５１０、５１２などの他のレーザは、プロトコル変換器５２６を介してネットワークスイッチ３３０に接続できる。プロトコル変換器５２６は、レーザ５１０および／または５１２などのレーザによって使用される通信プロトコルを、ネットワークスイッチ３３０によって使用される通信プロトコルに変換することができ、例えば、ＲＳ−４２２に基づく通信プロトコルからＥｔｈｅｒｎｅｔに基づく通信プロトコルに変換することができる。その場合に、レーザ５１０、５１２、５２０、５２２および／またはレーザスキャナ５２４は、ネットワークスイッチ３３０および場合によってはプロトコル変換器５２６を介して、オンボードシステム３２０にデータを送り、オンボードシステム３２０からコマンドを受け取ることができる。
【００６６】
いくつかの実施形態では、ロボットデバイス１２０は、１つ以上の障害条件を受け得る。それらの障害条件の例および関連復旧方針が以下の表１に記載されている。
【表１−１】
0006986188.tif 000002
【表１−２】
0006986188.tif 000003
【００６７】
ＩＩＩ．例の、環境の事前地図作成
図６は、例の実施形態による、スペースの事前地図作成を行うための例のデバイスを示す。より詳細には、デバイスは、１つ以上のロボットが後に配備され得る環境を表すセンサデータを収集するように構成されたセンサ６０２を含む。いくつかの例では、センサ６０２は、環境内の表面および検出されたマーカの場所までの距離測定値を作成することが可能な、２次元ナビゲーションレーザセンサであってもよい。特に、センサ６０２は、レーザ光ビーム６０４を投射し、反射されたビームを測定してもよい。センサ６０２は、ロボットの検出能力を複製するために、スペース内に配備されるロボット上のセンサと同じ高さに設置されてもよい。例として、センサ６０２は、環境内の水平面内に配置された逆反射反射器を検出する高さに配置されてもよい。他の例では、センサ６０２は、距離または輪郭の測定値を作成するのみの２次元レーザスキャナであってもよい。さらなる例では、センサ６０２は、立体カメラなどの別の種類のセンサであってもよい。
【００６８】
デバイスは、加えて、センサ６０２からのデータを処理するコンピューティングユニット６０６を含む。特に、コンピューティングユニット６０６は、本明細書に記載された種類の地図作成機能の任意のものを実行して、スペースの地図を生成し、および／または生成された地図を使用するように構成されてもよい。デバイスは、加えて、センサ６０２およびコンピューティングユニット６０６の両方に電源供給するバッテリパック６０８を含む。デバイスは、１つ以上のロボットを配備することに先立って、デバイスをスペース中に容易に移動させる可動ベース６１０をさらに含む。例として、可動ベース６１０は、図６に示すように、ホイール上の三脚であってもよい。電源および／または電源供給されない可動ベースを含む、他の種類の可動ベースが使用されてもよい。
【００６９】
例の範囲内で、自動誘導運搬装置（ａｕｔｏｍａｔｅｄ  ｇｕｉｄｅｄ  ｖｅｈｉｃｌｅ、ＡＧＶ）の用途と倉庫（ＡＧＶを有する、または有さない）の最適化とは、環境に関する正確な幾何学的情報（例えば、正確な地図）を必要としてもよい。正確な設備地図は、手動および自動の運搬装置環境（例えば、２つの動力産業トラックを通過させるには互いに接近しすぎているラック）の両方において、設備／ワークフローの非効率さの特定をもたらし得る。設備レイアウト（例えば、ＣＡＤモデル）は、建築設計および建設プロセスを誘導するために使用され、必ずしも現実世界を反映するように更新されなくてもよい。したがって、設備レイアウトは、多くの場合、不正確さを包含し、信頼できるとみなされなくてもよい（例えば、ＣＡＤは、適切かつ正確な壁を包含し得る一方、後で追加されるラックおよび他のインフラストラクチャは、かなりの量、例えば３０センチメートルだけずれ得る）。いくつかの例では、図６に示すような事前地図作成デバイスを使用して、最適化されたＡＧＶおよび／または手動のフォークトラック配備を可能にする正確な設備地図を生成することに役立ててもよい。
【００７０】
事前地図作成システムは、多数の異なる用途に使用されてもよい。いくつかの例では、倉庫の地図（例えば、壁およびラックなどの他のインフラストラクチャを包含する幾何学的地図）が生成され、スペースの既存のＣＡＤモデルと比較されてもよい。このプロセスは、ＣＡＤモデルが現実世界を厳密に反映しないことを明らかにし得る。設備地図は、その後、事実に合ったレイアウトに更新されてもよい。さらなる例では、倉庫地図作成が、倉庫がどのようにして、ロボットＡＧＶを使用して自動化され得るか、および／または手動駆動される原動機付き産業トラックを使用して最適化されるかを例証する状況において、ロボットシステムを配備するために使用されてもよい。
【００７１】
追加の例では、倉庫スペースが事前地図作成されて、地図に基づいて設定されるマーカ（反射器）のプランニング（環境内で反射器を配置する場所）を支援してもよい。このようなプロセスを用いて、ＡＧＶ配備のプランニング段階を高速化してもよい。
【００７２】
さらなる例では、倉庫地図および反射器設定は、運搬装置をその場所へ送る前に（または時間を節約するために運搬装置が出荷される間に）、ＡＧＶロールアウトプロセスにおいて早期に決定されてもよい。運搬装置が到着すると、運搬装置は、地図をアップロードし、駆動を開始して、または地図を使用して、運搬装置を用いる後続の地図作成実施を初期化および起動してもよい。
【００７３】
いくつかの例では、正確な地図作成を使用して、新世代の手動トラックが、既存の設備において動作することが可能であるかどうか、または設備が変更を必要とするかどうかを判定することもできる。追加の例では、正確な地図はまた、ワークフローおよび進行距離に対するラッキング、充電ステーション、または駐車ステーションのような手動設備の非効率さを特定することを可能にすることができる。この情報を使用して、より最適な設備レイアウトについての提案を提供してもよい。
【００７４】
述べたように、コンピューティングユニット６０６は、センサ６０２によって収集されたセンサデータに基づいて、様々な地図作成機能性を実施するように構成されてもよい。いくつかの例では、地図作成機能性は、倉庫地図および反射器地図の両方を構築するための、階層構造のポーズグラフＳＬＡＭおよびバンドル調整を含んでもよい。この機能性は、部分的な反射器設定のみを伴って、または反射器設定を全く伴わずに倉庫の地図を作成するために、輪郭／距離測定とマーカ検出とを切り替えることによって両方の地図を作成してもよい。地図作成機能性は、加えて、生成された地図を倉庫のＣＡＤモデルと自動的に位置整合させることを含んでもよい。地図作成機能性は、加えて、以前に構築された地図を用いて地図作成プロセスを起動することを含んでもよい（例えば、新たな地図は、以前の地図から起動された反射器位置を用いて、ＣＡＤモデルおよび以前の地図の両方と自動的に位置整合されてもよい）。
【００７５】
例のプロセスは、記憶、可視化などを含めて、図６に例示されたデバイスを使用して地図作成実施の結果を取り出すことを含んでもよい。取り出された結果は、次いで、ナビゲーションのため運搬装置にアップロードすること、新たな地図作成実施（以前の実施に由来する結果を用いて起動される）のために運搬装置にアップロードすること、シミュレーションによるシステムの配備を示すコンポーネント内に結果をインポートすること、生成された地図を既存のＣＡＤモデルと比較するコンポーネント内に結果をインポートすること、および／または自動化された反射器プランニングを支援するコンポーネント内に結果をインポートすることを含む、様々な機能に適用されてもよい。
【００７６】
ＩＶ．環境におけるロボットの、例の位置測定
図７は、例の実施形態による、環境内でナビゲートしているロボットを示す。環境に対するロボット７００の場所および方位が推定され、ロボットがそれに従って環境中をナビゲートすることを可能にしてもよい。特に、ポーズは、環境内のロボットの場所および方位を表示してもよい。
【００７７】
コンピューティングシステムは、１つ以上のセンサ７０２からの受け取られた信号７０６に基づいて、ロボット７００のポーズを決定してもよい。センサ７０２によって提供される信号７０６は、倉庫内の様々な場所に配置された逆反射マーカによって反射されてもよい。例として、ロボットは、ロボットの周囲の領域に光を放出する光検出および測距（ｌｉｇｈｔ  ｒａｎｇｉｎｇ  ａｎｄ  ｄｅｔｅｃｔｉｏｎ、ＬＩＤＡＲ）ユニットを使用してもよく、ロボットの周囲の領域に配置されたマーカは、ロボットのセンサによって検出のために光を戻るように反射してもよい。
【００７８】
センサ７０２で反射された信号７０６は、ロボットに対するマーカの場所を表示してもよい。コンピューティングシステムが、これらの決定されたマーカの場所を使用して、マーカの地図を進化させてもよい。いくつかの場合には、コンピューティングシステムは、検出されたマーカを使用して、既に生成されたマーカ位置の地図を補充してもよい。例として、コンピューティングシステムは、新たな測定値を使用して地図内の１つ以上のマーカの位置を修正してもよい。
【００７９】
コンピューティングシステムがまた、ロボットがマーカの地図を使用してナビゲートする際に、ロボットのポーズを決定してもよい。コンピューティングシステムは、検出されたマーカを地図内のマーカと整合させて、ロボットの位置および方位を決定してもよい。環境内の障害物７１０に関連するマーカの場所が予め定められてもよい。例えば、障害物の場所がまた、地図に表されてもよい。ロボットは、推定されたポーズと障害物の予め定められた場所とに基づいて、障害物を避けながら環境内をナビゲートするように移動７０８してもよい。
【００８０】
図８は、例の実施形態による、検出結果を地図作成されたランドマークと関連付けているロボットを示す。候補ランドマーク８１２から検出された信号８０６は、ロボット８００の１つ以上のセンサ８０２によって受け取られてもよい。この信号は、ロボットに関連する候補ランドマークの場所を表示してもよい。候補ランドマークは、地図作成されたランドマーク８０４に位置整合するように変換されてもよい。関連付け８１４は、候補ランドマークと地図作成されたランドマークとの間で形成されてもよく、関連付け８１４は、変換された候補ランドマークと地図作成されたランドマークとの間の最小距離をもたらす。例えば、関連付け８１４は、少なくとも、反復最近接点（ｉｔｅｒａｔｉｖｅ  ｃｌｏｓｅｓｔ  ｐｏｉｎｔ、ＩＣＰ）法などの二乗平均を使用して形成されてもよい。候補ランドマークは、候補ランドマークと地図作成されたランドマークとの間の関連付け８１４に基づいて、変換および回転されてもよい。ロボットのポーズは、ロボットを同様に変換および回転することによって推測されてもよい。
【００８１】
図９は、例の実施形態による、ロボット制御システムのモジュールを例示する機能ブロック図である。ロボット制御システムは、オンボード検知モジュール９００の一部としての１つ以上のセンサを含んでもよい。センサは、ロボットのホイールオドメトリ９０８を表示するデータを提供してもよい。センサはまた、ナビゲーションスキャナ９１０を含んでもよい。ナビゲーションスキャナ９１０は、ロボットの環境内の候補ランドマークから信号を受け取るように構成されてもよい。
【００８２】
ロボット制御システムのポーズ推定モジュール９０２は、環境内の地図作成されたランドマークを基準としたロボットの場所および方位を表示してもよい。ポーズ推定モジュール９０２は、オンボード検知モジュール９００からの入力に基づいて機能を実行するソフトウェアを含んでもよい。例えば、ナビゲーションスキャナ９１０がスキャンを実行する各時点で、オンボード検知モジュールからのセンサデータは、ポーズ推定モジュール９０２によって処理されて、環境におけるロボットの現在の場所および方位を決定してもよい。ポーズ推定モジュール９０２のポーズ追跡／高精度化ブロック９１２およびグローバル位置測定ブロック９１４は、処理ステップを表す一方、ポーズブロック９１６、信頼度／精度ブロック９１８、および初期ポーズ推定ブロック９２０は、処理ブロック９１２および９１４の出力を表す。
【００８３】
ポーズ推定モジュール９０２は、２つのモードで動作してもよい。第１のモードでは、ポーズ推定モジュール９０２は、ロボットの初期ポーズ推定値９２０を有してもよく、ポーズ追跡／高精度化ブロック９１２は初期ポーズ推定値９２０を更新してもよい。ポーズ追跡／高精度化ブロック９１２は、初期ポーズ推定値９２０と合わせてホイールオドメトリ９０８とナビゲーションスキャナ９１０からのデータとを利用して、候補ランドマークに関連するロボットの場所を特定してもよい。ポーズ追跡／高精度化ブロック９１２は、候補ランドマークを、初期ポーズ推定値９２０に近い特定の地図作成されたランドマークと関連付けてもよい。ポーズ推定モジュール９０２は、関連付けに基づくポーズ推定値９１６と、ポーズ推定値の信頼度／精度９１８と、をさらに提供してもよい。ポーズ推定値の信頼度／精度９１８は、初期ポーズ推定値が適度であること、または初期ポーズ推定値がさらなる高精度化を必要とすることを表示してもよい。また、第１のモードでは、ポーズ追跡／高精度化ブロック９１２によって決定されたポーズ９１６および信頼度／精度９１８を後処理モジュール９０４で使用して、ロボットの高精度化されたポーズ推定値を決定してもよい。一方、グローバル位置測定ブロック９１４は省略されてもよい。さらに、ポーズ追跡／高精度化９１２中に得られたポーズ推定値９１６は、以後のポーズ推定値に使用するために、ロボットの初期ポーズ推定値９２０として扱われてもよい。
【００８４】
第２のモードでは、ポーズ推定モジュール９０２は、ロボットが環境内のどこに存在するかの初期表示を有さなくてもよい。言い換えると、初期ポーズ推定値９２０は、まだ決定されていなくてもよい。第２のモードでは、ポーズ推定モジュール９０２は、ポーズ追跡／高精度化９１２ではなくグローバル位置測定９１４を利用して、ロボットのポーズを決定してもよい。グローバル位置測定ブロック９１４は、ロボットの環境全体にわたって、候補ランドマークと地図作成されたランドマークとの間の関連付けをテストしてもよい。グローバル位置測定ブロック９１４はまた、ポーズ推定値９１６および信頼度／精度９１８を出力してもよい。また、第２のモードでは、グローバル位置測定ブロック９１４によって決定されたポーズ９１６および信頼度／精度９１８を、後処理モジュール９０４で使用して、ロボットの高精度化されたポーズ推定値を決定してもよい。さらに、グローバル位置測定９１４中に得られたポーズ推定値９１６は、以後のポーズ推定値に使用するために、ロボットの初期ポーズ推定値９２０として扱われてもよい。
【００８５】
後処理モジュール９０４を使用して、ポーズ追跡／高精度化またはグローバル位置測定から得られたポーズ推定値を高精度化してもよい。後処理モジュールは、位置測定モジュールのポーズ推定値および信頼度／精度と、オンボード検知モジュールのホイールオドメトリと、の融合外挿９２２を実行してもよい。融合外挿中、高精度化されたポーズ推定値は、高信頼度／精度が存在する場合に、位置測定モジュールによって提供される推定されたポーズに、より依拠してもよい。逆に、高精度化されたポーズ推定値は、低信頼度／精度が存在する場合に、ホイールオドメトリに、より依拠してもよい。さらに、後処理モジュールは、提供された信頼度／精度と高精度化されたポーズ推定値とに基づいて、地図更新９２４を提供してもよい。例えば、地図更新は、高精度化されたポーズ推定値に基づいて、地図作成されたランドマークの場所を更新してもよい。他の例では、地図更新は、高精度化されたポーズ推定値を生成するために使用される、地図作成されたランドマークと関連付けられた統計情報を更新してもよい。
【００８６】
図９のロボット制御システムによって実行される機能の各々は、定期的に実行されてもよい。例えば、ナビゲーションスキャナ９１０は、８Ｈｚでスキャンを実行してもよい一方、オドメトリ９０８は、１００Ｈｚで更新してもよい。別の例では、ポーズ推定モジュールの処理ブロック９１２および９１４は、オンボード検知モジュールから８Ｈｚでデータを受け取ってもよく、ポーズ９１６および信頼度／精度９１８を８Ｈｚで作成してもよい。異なる周波数が同様に可能である。
【００８７】
Ｖ．例のＳＬＡＭ実装形態
コンピューティングシステムが、ＳＬＡＭまたは類似のプロセスを実行して、ロボットの場所を決定しながら、さらに環境内のマーカの位置を検出してもよい。例えば、コンピューティングシステムは、レーザスキャン内の測定値の強度に基づいてマーカを検出してもよく、異なるセットの測定値からの観測されたマーカを整合してもよい。
【００８８】
異なるスキャン間の検出されたマーカを関連付けようとする場合に、十分な量の検出マーカがないこと、または検出マーカ間の誤った関連付けからもたらされる欠陥などの、潜在的な誤差が発生し得る。コンピューティングシステムが、各検出マーカを、複数回検出された最近接マーカと関連付け得る最近接近傍アプローチを使用して、これらまたは他の潜在的誤差を解消してもよい。特に、最近接近傍アプローチは、ユークリッド距離または他の距離定量を使用して最近接マーカを決定することを伴い得る。いくつかの実例において、コンピューティングシステムはまた、有効化ゲートを利用して、マーカが以前に観測されたことがある場合、またはマーカが新たに検出されたランドマークとして追加されるべきである場合を判定するように構成されてもよい。検出マーカ間のデータ関連付けの結果は、コンピューティングシステムが環境内のロボットの現在のポーズを推定することを可能にすることができる。
【００８９】
コンピューティングシステムは、ロボットの現在のポーズの推定時に、ロボットの制御システムからの制御命令を使用してもよい。例として、ロボットのホイール上に配置されたセンサから提供されたオドメトリデータを使用して、ロボットの現在のポーズの変化を推定してもよい。例として、ロボットは、初期方位θを有する初期２Ｄ位置（ｘ，ｙ）を有してもよい。制御システムによって適用される制御によって表示されるように（Δｘ，Δｙ）だけ位置を変化させ、かつ（Δθ）だけ方位を変化させた後に、ロボットの更新されたポーズは、更新された方位（θ＋Δθ）を有する（ｘ＋Δｘ，ｙ＋Δｙ）である。コンピューティングシステムは、入信するセンサスキャン内の検出マーカを使用して、推定されたポーズをさらに高精度化してもよい。
【００９０】
コンピューティングシステムはまた、検出マーカと環境内の他の測定値（例えば、近くの表面までの距離を表す輪郭測定値）とを使用して、センサの現在のポーズ（またはロボット）を推定してもよい。センサ／ロボットの以前のポーズが既知である場合に、コンピューティングシステムは、最近のポーズ推定値を使用して、マーカの以前の検出に基づいてマーカが位置すべき場所を予測してもよい。コンピューティングシステムは、後続の測定値を使用して、ロボットのポーズの変化を監視し続けてもよい。
【００９１】
いくつかの実例では、コンピューティングシステムは、新たな測定値に基づいて最近の変化を反映するように、各観測マーカと関連付けられた不確実性を修正してもよく、また、新たに検出されたマーカを環境内のマーカの地図に追加してもよい。コンピューティングシステムは、反復してＳＬＡＭを実行してスペース内でマーカの地図を更新し続け、ロボットが環境の地図を作成しながら安全にナビゲートもすることを可能にしてもよい。
【００９２】
別の例の実装形態では、コンピューティングシステムが、初期ポーズ監視、ローカルウィンドウ最適化、グローバル最適化、および完全なバンドル調整などの１つ以上の動作を使用する変更されたＳＬＡＭプロセスを実行してもよい。コンピューティングシステムは、多くの場合、初期ポーズ推定後に後続の動作を抑制してもよい。実際、コンピューティングシステムは、先行する動作の実行中に、次の計算的により費用のかかる動作を実行するか否かを決定してもよい。
【００９３】
コンピューティングシステムは、環境の初期スキャンを、ロボットの一連のポーズを表す、基礎をなすポーズグラフに追加してもよい。初期スキャンは、地図の座標系の基礎を形成するポーズ（０）として割り当てられてもよい。その後、環境の後続のスキャンごとに、コンピューティングシステムは、グラフに追加された以前のノード（例えば、ポーズ（０））を参照し、それに従って現在のポーズを更新してもよい。いくつかの実例では、コンピューティングシステムは、位置合わせプロセス（例えば、マーカベースの位置測定に対する反復最近接点（ＩＣＰ）アルゴリズム）と、式［１］に示すような、整合するマーカ検出の対と地図作成されたランドマークとの間のユークリッド点間距離と、を使用して、ポーズを更新してもよい。
［１］Ｔ＊＝ａｒｇ  ｍｉｎΣｉΣｊｗｉｊ｜｜ｍｊ−Ｔ（ｄｉ）｜｜２
【００９４】
式［１］を使用して、ポーズグラフ内の１つのリンクに対する誤差を決定してもよい。言い換えると、コンピューティングシステムが、式［１］を使用して、２つの異なるポーズ間に誤差が存在するかどうかを判定してもよい。したがって、ポーズグラフが、誤差を減少させるために最適化問題を作成する多数のリンクを含んでもよい。式［１］は、整合のためにｗｉｊ＝１という一定の重みを仮定してもよい。ただし、いくつかの実例では、コンピューティングシステムは、ロボットのより近くに検出されたマーカ、またはコンピューティングシステムによって安定に見えていた検出マーカにより高い影響を与えるために非定数の重みを適用するように構成されてもよい。コンピューティングシステムはまた、マーカの検出レートの要因となり、一般化された位置合わせプロセス（例えば、ＩＣＰ）におけるような共分散・共分散メトリクスなどの異なる誤差関数を使用してもよい。マーカ間の整合対ごとに、コンピューティングシステムは、ポーズグラフ全体（または部分グラフ）を最適化して、２つのノード間の個々のＩＣＰ問題を同時に解いてもよい。
【００９５】
いくつかの場合では、レーザスキャンとスキャン内のマーカ検出との整合は、わずかな誤差と不正確さとをもたらし得る。したがって、ローカルウィンドウ最適化は、ローカルウィンドウのポーズグラフ最適化によって推定されたポーズを高精度化することによって、不所望の効果を解消し得る。特に、コンピューティングシステムは、近隣ノードの以前のポーズをポーズグラフ内で一定に維持し、かつローカルウィンドウの外にあるより古い推定値の使用を制限しながら、推定されたポーズを最適化し得る。例えば、スキャンが、ロボットの近くの少数の検出マーカしか作成しない場合に、コンピューティングシステムは、ローカルウィンドウ最適化を利用してポーズ推定値を改善してもよい。
【００９６】
コンピューティングシステムは、ロボットがある距離を進行し、または環境のスキャンの間にある角度回転して、最大距離または最大角度を超える場合に、ポーズグラフに新たなノードを追加してもよい。特に、コンピューティングシステムは、現在のスキャンを、後続のポーズ決定に使用できる新たな基準スキャンとして、基礎をなすポーズグラフに追加してもよい。
【００９７】
コンピューティングシステムは、さらに、他のノードのローカル近傍を決定し、結果として生じるサブグラフ（すなわち、ノードのローカル近傍）を最適化して、ローカルウィンドウ内のノードによって表されるその他のポーズと同様に、ロボットの現在のポーズの推定値を高精度化してもよい。コンピューティングシステムは、サブグラフをポーズグラフの残りに接続するノードを一定に維持し、新たなスキャンの要因（すなわち、それぞれのポーズの初期計算時における、それまで利用可能でなかった情報）となりながら現在のポーズを高精度化するようにサブグラフ内の全ての他のポーズを最適化してもよい。
【００９８】
コンピューティングシステムはまた、ループ検出および検証を実行してもよい。例として、ローカルウィンドウが、環境のその領域の以前の通過中に作成されたグラフノードを包含する場合に、コンピューティングシステムは、この領域の以前のスキャンを使用して、ポーズグラフのグローバル最適化を起動してもよい。グローバル最適化が、ロボットのポーズの変化を表すポーズグラフ内の全てのノードを最適化し、マーカ位置の地図の構築を可能にしてもよい。コンピューティングシステムは、２つのポーズ／ノードからマーカが検出される場合に、両方のポーズを有するエッジをグラフに追加してもよい。２つのポーズを変化させることによって、コンピューティングシステムは、２つのポイント間の距離を最小にし、新たなロボットポーズを取得してもよい。コンピューティングシステムは、全てのノードを調べ、地図を取得するためにワールド系における全てのマーカ検出を抽出してもよい。
【００９９】
グローバル最適化中に、コンピューティングシステムは、マーカ検出を整合させ（または環境の輪郭スキャンを整合させ）、これにより、環境の異なるスキャン内で検出されたマーカの全ての見つかった整合間の差を最小にするために、最適化されるグラフ内の全てのポーズを必要とする大きな最適化問題内にブロックを形成してもよい。コンピューティングシステムは、グローバルシステムがロボットの正確なポーズ推定値を作成するように収束するまで、繰り返されるプロセスでポーズを整合および最適化してもよい。
【０１００】
ノイズを減殺し、マーカ位置のより正確な地図を取得するために、コンピューティングシステムは、最終的な完全な調整を実行して、ロボットの経路とマーカ位置の地図との両方を最適化してもよい。コンピューティングシステムは、グラフ内のポーズをそれぞれのスキャンとともに最適化して、マーカの新たな地図を構築してもよく、バンドル調整中に、地図作成された反射器の位置を高精度化することによって、測定値誤差および他の不正確さをさらに補正してもよい。特に、いくつかの実例では、集約されたマーカ検出は、グローバルグラフ最適化のペアワイズ形式で非常によく整合し得るが、環境内のマーカの実際の位置を正確に表さない場合がある。したがって、コンピューティングシステムは、完全なバンドル調整を使用して、マーカ位置の地図における個々のマーカ位置の精度を改善し得る。
【０１０１】
以下の表２は、変更されたＳＬＡＭプロセスの様々なステップと対応するポーズグラフとを例示している。
【表２−１】
0006986188.tif 000004
【表２−２】
0006986188.tif 000005
【０１０２】
コンピューティングシステムは、位置整合されたスキャンのマーカ検出を集約することによって、マーカ位置の地図を更新し続けてもよい。各検出マーカについて、コンピューティングシステムは、検出マーカが、地図に既に追加されたマーカに整合するかどうかを確かめるために検査してもよく、このことは、予測されるマーカ間距離に対応する最大距離（例えば、０．５メートルの距離閾値）を有する最近接近傍探索を使用して環境の複数のスキャン内で検出されたマーカ間の整合を特定することを伴ってもよい。コンピューティングシステムが、検出マーカが地図内に配置されたマーカに整合することを見出す場合に、コンピューティングシステムは、必要であれば地図内のマーカの位置を調整してもよい。いくつかの実例では、コンピューティングシステムは、一般に新たなマーカの追加後、または地図の再構築後に再構築できるマーカの地図のｋｄ木において近似的な最近接近傍探索を使用して整合処理を高速化してもよい。
【０１０３】
いくつかの例では、コンピューティングシステムが、セット内の全てのポイントを調べ、かつ各ポイントを別のセットのポイントにおける最近接ポイントと整合させることによって、整合を決定してもよい。特に、距離閾値内の最近接ポイントは、整合とみなしてもよい。他の例では、コンピューティングシステムが、ｋｄ木、またはより速い整合の探索を可能にし得る他の探索構造を使用してもよい。
【０１０４】
誤検出である可能性が高いマーカ検出を特定するために、コンピューティングシステムは、ローカル検出履歴を監視してマーカが安定であるかどうかを判定してもよい。マーカ位置の最終的な地図には、新たなマーカとして、または以前に追加されたマーカを補正するために、安定なマーカが含まれる。コンピューティングシステムは、環境のスキャン内に検出された全てのマーカに関する情報を包含する中間の地図表現を、安定なマーカのみを包含し、高反射性の表面によって引き起こされやすい誤検出を包含しない、マーカ位置の最終的な地図と区別してもよい。
【０１０５】
例の実施形態では、コンピューティングシステムは、各地図作成されたマーカについてのローカル検出履歴を監視して誤検出を除去してもよい。例として、ｎ回のスキャンのローカルウィンドウにおいて、コンピューティングシステムは、追加されたスキャンごとに（地図作成された各マーカに対して）ネガティブを加算し、スキャンが、地図作成されたマーカに整合するマーカ検出を包含した場合にはポジティブを加算してもよい。検出のローカルウィンドウの例が、以下の表３に示されている。
【表３】
0006986188.tif 000006
【０１０６】
表３に示すように、コンピューティングシステムは、環境のスキャンｎ＝２０のウィンドウサイズを使用してもよい。地図作成されたマーカのローカルウィンドウがポジティブの閾値量（例えば、合計スキャンの７５％ポジティブ）を示すと、コンピューティングシステムは、マーカが安定であるとみなしてもよい。したがって、コンピューティングシステムは、安定なマーカを更新し続けてもよく、安定なマーカは、その後、手動で除去されないか、またはマーカの最終的な地図の完全な再構築中に不安定とみなされる場合でない限り、不安定になり得ない。グラフが、新たなスキャンの追加からかなり変化する場合に（例えば、グローバル最適化の場合に）、コンピューティングシステムは、マーカの地図を再構築してもよく、このことは、マーカが安定であるときを判定するためにより高い閾値（例えば、合計スキャンの８０％超のポジティブの閾値）を使用することを伴ってもよい。
【０１０７】
いくつかの例では、コンピューティングシステムは、マーカの地図内のマーカの位置を更新するように構成されてもよい。例として、地図作成されたマーカの位置を更新するために、コンピューティングシステムは、式［２］に示すように、整合するマーカ検出のｎ個の位置ｐｉの全てにわたる平均μを逐次計算してもよい。
【数１】
0006986188.tif 000007
【０１０８】
式［２］に示すように、コンピューティングシステムは、全てのマーカ検出を等しく重み付けしてもよいが、いくつかの例では、測定された位置におけるノイズが距離とともに増加する傾向にあることから、センサにより近接して検出されたマーカに、ロボットから遠く離れて検出されたマーカより高い重みを与えるように、逐次の重み平均を使用してもよい。コンピューティングシステムはまた、誤検出がより大きい共分散を示し得る傾向にあることから、集約された位置に対して逐次の共分散を計算して、真のマーカ検出から誤検出を識別する追加の方法を提供してもよい。さらに、コンピューティングシステムはまた、ポイントツーポイント誤差から、ポーズ監視における共分散ベースの誤差関数と、グラフ最適化のコスト関数と、に切り替えてもよい。
【０１０９】
ＶＩ．例のシステムおよび方法
図１０は、例の実装形態による、方法１０００を例示するフローチャートである。特に、方法１０００は、地図生成および位置整合を実行するように実装されてもよい。
【０１１０】
方法１０００（ならびに本明細書で開示された他のプロセスおよび方法）は、例えばロボットデバイス１２０を伴う装置内に（またはより詳細には、プロセッサと本明細書に記載された機能をデバイスに実行させるように実行可能である命令を有する非一過性コンピュータ可読媒体とによるなど、ロボットデバイス１２０の構成要素またはサブシステムによって）実装できる方法を提示する。これに加えて、またはこれに代えて、方法１０００が、任意の他の装置およびシステム内に実装されてもよい。
【０１１１】
方法１０００ならびに本明細書に記載された他のプロセスおよび方法は、ブロック１００２，１００４，１００６，１００８，１０１０，および１０１２のうちの１つ以上によって例示されるような動作、機能、またはアクションを含んでもよい。ブロックは順次に例示されているが、これらのブロックはまた、並列に、および／または本明細書に記載されたものとは異なる順序で実行されてもよい。また、様々なブロックは、より少ないブロックに結合され、追加のブロックに分割され、および／または所望の実装形態に基づいて除去されてもよい。
【０１１２】
加えて、方法１０００ならびに本明細書に記載された他のプロセスおよび方法について、フローチャートは、本実装形態の１つの可能な実装形態の機能性および動作を示している。この点で、各ブロックは、プロセスにおいて特定の論理関数またはステップを実装するためにプロセッサによって実行可能な１つ以上の命令を含む、プログラムコードのモジュール、セグメント、または一部を表してもよい。このプログラムコードは、例えばディスクまたはハードドライブを含む記憶デバイスなどの、任意の種類のコンピュータ可読媒体に記憶されてもよい。コンピュータ可読媒体は、例えばレジスタメモリ、プロセッサキャッシュ、およびランダムアクセスメモリ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ、ＲＡＭ）のような短期間の間データを記憶するコンピュータ可読媒体などの、非一過性コンピュータ可読媒体を含んでもよい。
【０１１３】
コンピュータ可読媒体はまた、例えば読み出し専用メモリ（ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ、ＲＯＭ）、光ディスクまたは磁気ディスク、コンパクトディスク読み出し専用メモリ（ｃｏｍｐａｃｔ−ｄｉｓｃ  ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ、ＣＤ−ＲＯＭ）のような副次的または永続的長期間の記憶装置などの、非一過性媒体を含んでもよい。コンピュータ可読媒体はまた、任意の他の揮発性または不揮発性の記憶システムであってもよく、例えばコンピュータ可読記憶媒体、または有形の記憶デバイスとみなされてもよい。加えて、方法１０００ならびに本明細書に記載された他のプロセスおよび方法について、図１０の各ブロックは、プロセスにおいて特定の論理関数を実行するように配線された回路を表してもよい。
【０１１４】
ブロック１００２では、方法１０００は、センサに対する環境内の複数のマーカの位置を表示する第１のセンサデータを受け取ることを含んでもよい。コンピューティングシステム（例えば、制御システム、遠隔配置されたコンピューティングシステム）が、センサ（単数）またはセンサ（複数）から環境のセンサ測定値を受け取ってもよい。例として、コンピューティングシステムは、レーザスキャナが環境内の位置を変化させる際に、レーザスキャナからスキャンを受け取ってもよい。コンピューティングシステムは、入信するセンサデータ内に、環境内に配置されたランドマーク（例えば、マーカ）を検出してもよい。
【０１１５】
例の実装形態では、コンピューティングシステムは、２Ｄレーザスキャナから、水平面に沿って配置されたマーカの測定値を受け取ってもよい。コンピューティングシステムは、レーザスキャナから各スキャンにおいて、水平面内のマーカを検出してもよい。他の例では、コンピューティングシステムは、カメラ画像、ＲＡＤＡＲなどの、移動型ロボットに結合された他の種類のセンサから、センサデータを受け取ってもよい。
【０１１６】
ブロック１００４では、方法１０００は、第１のセンサデータに基づいて、複数のマーカの地図内のセンサのポーズを決定することを含んでもよい。コンピューティングシステムは、センサデータを使用して、ＳＬＡＭまたは類似のプロセスを実行して、マーカの位置を指定する地図を進化させることもしながら、環境に対するセンサのポーズを決定してもよい。コンピューティングシステムは、センサが環境内で位置を変化させる際に、推定されるポーズおよびマーカの地図をさらに決定および更新してもよい。
【０１１７】
いくつかの例では、コンピューティングシステムが、センサを含むロボットのポーズを決定してもよい。例として、コンピューティングシステムは、センサのポーズとロボットのポーズとが等しいと仮定してもよい。さらなる例では、コンピューティングシステムが、一定のセンサロボット間変換を使用して、ロボットのポーズを決定してもよい。
【０１１８】
ブロック１００６では、方法１０００は、センサから環境内の表面までの距離を表示する第２のセンサデータを受け取ることを含んでもよい。コンピューティングシステムは、センサと環境内の表面との間の距離を指定するセンサデータをさらに受け取ってもよい。これらの輪郭測定値は、センサと、壁、階段、格納ラックなどの、近くに配置された物理的特徴との間の距離を指定してもよい。いくつかの例では、センサは、ロボットまたは他の種類の運搬装置に結合されてもよく、コンピューティングシステムは、センサと環境内の表面との間の距離を、ロボットと表面との間の距離として定義してもよい。
【０１１９】
ブロック１００８では、方法１０００は第２のセンサデータとセンサの決定されたポーズとに基づいて、環境内の表面を表す占有格子地図を決定することを含んでもよい。コンピューティングシステムは、ロボットの推定されたポーズと、センサと環境内の物理的特徴との間の距離を表示するセンサデータと、を使用して、占有格子を決定してもよい。
【０１２０】
占有格子は、環境の周囲領域を表す、ロボットの視点（ｐｏｉｎｔ  ｏｆ  ｖｉｅｗ、ＰＯＶ）からの多数のセルを含んでもよい。各セルは、特定の領域を表してもよく、領域のステータスを表示する状態を割り当てられてもよい。特に、セルが、障害物、空きスペース、または未知のものを有するものとして割り当てられてもよい。未知のセルが、領域が障害物を含むか否かを判定するための追加のセンサデータを必要としてもよい。占有格子はロボットのＰＯＶからのセンサデータを使用して決定されるため、占有格子は、ロボットのセンサからのセンサデータを使用して決定されたマーカ位置の地図と同じ座標系を使用して決定されてもよい。したがって、コンピューティングシステムは、マーカ位置の地図を占有格子と位置整合させてもよい。
【０１２１】
図１１は、例の実施形態による、例の占有格子を例示している。占有格子１１００は、ロボット１１４０に結合されたセンサのＰＯＶからの、環境の周囲領域を表す。ただし、例示目的で、占有格子１１００は、環境内に配置されたロボット１１４０をさらに示す上面視により示されている。占有格子１１００の各正方形セルは、環境の対応する領域を表す。他の例では、占有格子１１００は、異なる形状およびサイズを有し得る、より多い、またはより少ないセルを含んでもよい。例えば、占有格子１１００のサイズおよび構成全体は、占有格子１１００が表す環境に依存して異なってもよい。
【０１２２】
占有格子１１００は、異なる３種類のセルを含む。第１の種類のセル１１１０は、十字交差パターンのシェーディングを含み、環境内の物理的特徴などの、検出された障害物を含む領域を表す。占有格子１１００は、占有格子１１００の境界の周辺に配置された多数のセル１１１０を含み、セル１１１０は、ロボットがナビゲーション中に避け得る壁または他の物理的障害物に対応してもよい。
【０１２３】
第２の種類のセル１１２０は、シェーディングを含まず（空白セル）、環境内の空きスペースを表す。ロボットは、環境内の潜在的な障害物に衝突せずに、環境内のセル１１２０を通ってうまくナビゲートし得る。第３の種類のセル１１３０は、ドット状のシェーディングを含み、環境内の未知の領域を表す。占有格子１０００を進化させているコンピューティングシステムは、まだ、このような領域が、障害物を包含するのか、またはオープンスペースであるのかを特定していなくてもよい。
【０１２４】
コンピューティングシステムが、環境をナビゲートしている１つ以上のロボットに結合されたセンサからの環境の新たな測定値を利用して、占有格子１１００を更新および調整し続けてもよい。したがって、ロボット１１４０は、マーカの地図を設計モデルと位置整合させるように占有格子１１００を進化させてもよい。
【０１２５】
図１０を参照すると、ブロック１０１０は、複数のマーカの地図と環境の設計モデルとの間の、占有格子地図内の占有されたセルを設計モデルからのサンプリングされたポイントと関連付ける変換を決定することを含んでもよい。設計モデル（例えば、ＣＡＤモデル）は、倉庫ラック、充電ステーション、入口および出口、駐車スポット、および、壁および他の構造の全体的なレイアウトの位置などの、環境の物理的特徴の場所および位置を指定してもよい。コンピューティングシステムは、環境内でロボットをナビゲートしている制御システムが、マーカ位置および物理的特徴の両方を使用して制御方針を決定し得るように、マーカの地図とＣＡＤ設計モデルとの間の変換を決定してもよい。
【０１２６】
例の実施形態では、コンピューティングシステムは、潜在的な回転のセットを伴う潜在的な並進のセットをサンプリングし、これらの初期の推定値を使用してポイントの位置合わせを実施してもよい。例として、コンピューティングシステムは、ポイント整合間に大きな距離（例えば、５０ｍ）を有して開始し、位置合わせ中に占有格子地図の解像度を低下させてもよい。各反復ステップでは、コンピューティングシステムは、全ての占有されたセル中心（またはこれらのサブセット）についてサンプリングされたモデルにおける一致点を探索し、式［３］を使用してポイントツーライン誤差を最小にする変換を計算してもよい。式［３］において、「Ｒ」は回転を表し、「ｔ」は並進を表し、「ｐ」は格子地図中のポイントであり、「ｑ」はモデルにおけるポイントの整合であり、「ｎ」はポイントにおける法線（すなわち、ポイントｑがサンプリングされたラインの方向に垂直なベクトル）である。
［３］Ｔ＝Σ［（Ｒｐｉ＋ｔ−ｑｉ）＊ｎｉ］２
【０１２７】
いくつかの実例では、環境（例えば、倉庫）の態様を表すＣＡＤモデルは、スペース内の壁、ラッキング、および他の物理的特徴を描画するポリゴンまたはラインセグメントのセットを包含してもよい。マーカ位置の生成された地図とＣＡＤモデルとの間のポイントのサンプリング時に、コンピューティングシステムが全てのラインセグメントを抽出してもよい。マーカの地図内の経路セグメントの長さがサンプリングされた距離を超える場合に、コンピューティングシステムは、開始ポイントを追加し、次いで、互いに離間したセットサンプル距離をラインセグメントに沿ってサンプリングしてもよい。コンピューティングシステムはまた、重複を検査してもよく、このことは、いくつかのラインセグメントからの追加されたサンプルポイントが、以前に追加されたポイントに一致しないことを判定することを伴ってもよい。例として、２つのラインセグメントが同じポイントで終了または開始する場合に、コンピューティングシステムは、そのポイントを１回だけ、サンプリングされたポイントセットに追加してもよい。
【０１２８】
いくつかの例では、コンピューティングシステムは、マーカ位置の地図のポイントがどの程度よく設計モデルのポイントと位置整合するかに基づいて、信頼度を決定してもよい。信頼度を使用して、最も高い信頼度を生じる変換を選択してもよい。例として、コンピューティングシステムは、信頼度が閾値信頼度レベル（例えば、５０％信頼度）を上回ることを必要としてもよい。コンピューティングシステムはまた、距離測定値とＣＡＤモデルとの間の整合を使用して、マーカ地図におけるロボットポーズと、マーカ位置の地図とＣＡＤモデルとの間の変換と、を最適化してもよい。
【０１２９】
いくつかの例では、コンピューティングシステムは、水平面の回転および並進による変換を決定してもよい。例として、コンピューティングシステムは、マーカ位置の地図を回転させて、地図の座標系を設計モデルの座標系と位置整合させてもよい。
【０１３０】
さらなる例では、コンピューティングシステムは、複数の２次元回転および並進値をサンプリングすることによって、変換を決定してもよい。特に、コンピューティングシステムは、複数の候補変換の各候補変換について、占有格子地図内の占有されたセルと、サンプリングされたポイントを包含する設計モデルからのラインとの間のポイントツーライン法線距離の合計を決定してもよい。コンピューティングシステムは、各候補変換について決定されたポイントツーライン法線距離の合計に基づいて、複数の候補変換から変換をさらに決定してもよい。
【０１３１】
加えて、コンピューティングシステムは、複数の候補変換の各候補変換について、占有格子地図内の占有されたセルであって、サンプリングされたポイントを包含する設計モデルからのラインから閾値距離内にある占有されたセルの割合を含む測定値信頼度を決定してもよい。コンピューティングシステムは、次いで、各候補変換について決定された測定値信頼度に基づいて、変換を決定してもよい。コンピューティングシステムはまた、決定された変換に対する測定された信頼度の表示を提供してもよい。
【０１３２】
図１２Ａは、例の実施形態による、マーカ位置の地図と設計モデルとの間の変換決定を例示している。図１２Ａに示すように、マーカの地図１２００は、環境をナビゲートしているロボットに結合されたセンサからのスキャンにおいて検出されたマーカ１２０２の位置を伝達する。マーカ１２０２は、ロボットが安全にナビゲートするのを支援するために、様々な場所に配置されて示されている。他の例では、マーカ１２０２は、他の例において、より多い、またはより少ないマーカを含んでもよい。
【０１３３】
設計モデル１２１０は、マーカの地図１２００によって表された同じ環境の２Ｄ概観モデルを表し、倉庫ラック、壁、および他の特徴などの物理的構造の位置を示す。図１２Ａに示す例の例示では、マーカの地図１２００の座標系は、設計モデル１２１０の座標系と位置整合されていない。ただし、コンピューティングシステムが、マーカの地図１２００の座標系を、設計モデル１２１０の座標系と位置整合させる変換を決定してもよい。例として、コンピューティングシステムは、ロボットの近くの表面の測定値を使用して占有格子地図を決定し、占有格子地図内の占有されたセルを設計モデルからのサンプリングされたポイントと関連付ける変換をさらに決定してもよい。
【０１３４】
例として、コンピューティングシステムは、占有格子地図内の占有されたセルと、サンプリングされたポイントを包含する設計モデルからのラインとの間のポイントツーライン法線距離の合計を決定してもよく、各候補変換について決定されたポイントツーライン法線距離の合計に基づいて、候補変換のセットから変換を決定してもよい。コンピューティングシステムはまた、他のプロセスを使用して変換を決定してもよい。
【０１３５】
図１２Ｂは、例の実施形態による、図１２Ａに描画された、マーカ位置の地図と設計モデルとの間の位置整合を例示している。上述したように、コンピューティングシステムが、マーカの地図１２００を設計モデル１２１０と位置整合させる変換を決定してもよい。結果として、コンピューティングシステムは、環境内の物理的特徴に対するマーカ１２０２の位置を描画する位置整合された地図１２３０を決定してもよい。したがって、ロボットは、位置整合された地図１２３０を使用して、経路を決定し、ナビゲーション中に障害物を回避してもよい。
【０１３６】
図１０を再度参照すると、ブロック１０１２は、複数のマーカの地図と設計モデルとの間の変換を提供することを含んでもよい。コンピューティングシステムは、変換を、環境内に配備されたロボットの制御システムまたは他のシステムなどの、１つ以上のデバイスに提供してもよい。例として、コンピューティングシステムは、変換、マーカ位置、および設計モデルに表示された物理的特徴の位置を使用して、環境内のロボットをナビゲートするための制御命令を提供してもよい。コンピューティングシステムは、ナビゲートするのが困難な領域についての警告などの追加の情報で制御命令を補充してもよい。
【０１３７】
いくつかの実施形態では、コンピューティングシステムが、受け取られた追加のセンサデータを使用して、マーカ位置の進化させた地図に対してロボットのポーズ推定値を高精度化してもよい。例として、コンピューティングシステムは、環境の新たに得られたスキャンを使用して、マーカのセットに対するロボットの位置または方位を調整してもよい。
【０１３８】
コンピューティングシステムはまた、ロボットの高精度化されたポーズに基づいて、決定された変換を調整してもよい。例えば、コンピューティングシステムは、以前に決定された変換に基づいて、候補変換の範囲をサンプリングすることによって、変換を調整してもよい。特に、候補変換の範囲は、コンピューティングシステムが初期変換を初めて決定するために使用した候補変換の初期範囲よりも狭くてもよい。
【０１３９】
いくつかのＳＬＡＭグラフでは、グラフは、ノードにおけるポーズおよびスキャンと、２つのポーズ（ノード）からマーカ決定の整合によって形成されたエッジと、を含んでもよい。同時に位置整合を行う場合に、コンピューティングシステムは、ＣＡＤモデルからサンプリングされた最近接ポイントに、距離測定値（マーカ検出ではない）の整合を表す追加のエッジを追加してもよいポイントツー誤差を使用する代わりに、コンピューティングシステムは、ポイントツーライン誤差を使用して、整合するマーカ検出間の距離と、測定された２ＤスキャンポイントからＣＡＤモデル内の壁およびラッキングまでの距離と、を最小にするようにポーズを最適化してもよい。
【０１４０】
いくつかの例の実施形態では、コンピューティングシステムは、グラフベースの最適化問題を解くことによって、マーカ位置の地図および変換を決定してもよい。グラフベースの最適化問題は、占有格子地図内の占有されたセルと、サンプリングされたポイントを包含する設計モデルからのラインとの間の各ポイントツーライン法線距離について、別個のエッジを最小にすることを伴ってもよい。コンピューティングシステムは、グラフベースの最適化問題を解いて、マーカの地図内のポイントを設計モデル内のポイントと位置整合させながら、同時にＳＬＡＭを実行してもよい。
【０１４１】
いくつかの例では、コンピューティングシステムが、決定された変換に基づいて、ＣＡＤモデルの位置整合誤差を特定し、ＣＡＤモデルの特定された位置整合誤差の表示をさらに提供してもよい。例として、コンピューティングシステムは、物理的特徴の位置および方位のＣＡＤモデル表現が、物理的特徴の実際の位置および方位とわずかに異なることを判定してもよい。したがって、コンピューティングシステムは、変換の決定時（または後）に位置整合誤差を特定し、位置整合誤差の表示を提供してもよい。
【０１４２】
数十または数百のマーカを有する大きな環境を伴う別の例では、コンピューティングシステムが、地図と設計モデルとの両方の重心を決定することによって、マーカ位置の地図と設計モデルとの間の変換を決定してもよい。コンピューティングシステムは、マーカの地図内の全てのマーカから二乗平均を減算し、潜在的な方位の範囲にわたる種々の初期ポーズを有する、結果として得られたポイントセットに対する位置合わせベースのプロセス（例えば、ＩＣＰプロセス）を使用してもよい。したがって、コンピューティングシステムは、位置整合パラメータ（すなわち、位置整合を可能にする変換）を決定するための最高数のインライアを生じるこの位置合わせの位置整合を使用し得る。
【０１４３】
さらなる例の実施形態では、コンピューティングシステムが、マーカ位置の地図を地図の以前のバージョンと位置整合させて、環境内のマーカの位置を確認してもよい。例えば、コンピューティングシステムは、コンセンサスベースのフレームワークを使用して、両方の地図内に配置されたマーカ間の潜在的な整合をサンプリングし、さらに、最大数のインライアを作成するこの整合（サンプリングされたセットについて計算された位置整合の使用後に見出された整合）を使用して両方の地図の要因となるマーカ位置の更新された地図を生成してもよい。
【０１４４】
Ｖ．結論
本開示は、本出願に記載された特定の実装態様の観点で限定されず、実装態様は、様々な態様の例示として意図されている。当業者に明らかであるように、本開示の趣旨および範囲から逸脱することなく、多くの変更および変形がなされ得る。本明細書に列挙されたものに加えて、本開示の範囲内の機能的に均等な方法および装置が、以上の記載から当業者には明らかであろう。このような変更および変形は、添付の特許請求の範囲の範囲内に入ることが意図されている。
【０１４５】
上記の詳細な説明は、添付の図面を参照して、開示されたシステム、デバイス、および方法の様々な特徴および機能を記載している。図面において、文脈上別段の断りがなければ、類似の記号は、通常、類似の構成要素を特定する。本明細書および図面に記載された例の実装形態は、限定的であることを意図されていない。本明細書で提示された手段の趣旨および範囲を逸脱することなく、他の実装形態を利用することができ、他の変更をなし得る。本開示の態様は、本明細書に概して記載され、図面に例示されたように、多種多様な異なる構成に編集され、置換され、組み合わされ、分離され、および設計されることが可能であり、それらの全てが本明細書で明示的に想到されることは、たやすく理解できるであろう。
【０１４６】
図面に示した特定の配置は、限定的であるとみなされるべきではない。他の実装形態が、所与の図面に示した各要素をより多く、またはより少なく含むことができることは理解できるはずである。さらに、例示された要素のいくつかは組み合わされ、または省略され得る。またさらに、例の実装形態は、図面に示されていない要素を含むことができる。
【０１４７】
様々な態様および実装形態が本明細書に開示されているが、他の態様および実装形態が、当業者には明らかであろう。本明細書に開示された様々な態様および実装形態は、例示の目的であって、限定的であることを意図されておらず、真の範囲は以下の特許請求の範囲によって示される。
【図１】
0006986188.tif 000008
【図２】
0006986188.tif 000009
【図３】
0006986188.tif 000010
【図４】
0006986188.tif 000011
【図５】
0006986188.tif 000012
【図６】
0006986188.tif 000013
【図７】
0006986188.tif 000014
【図８】
0006986188.tif 000015
【図９】
0006986188.tif 000016
【図１０】
0006986188.tif 000017
【図１１】
0006986188.tif 000018
【図１２Ａ】
0006986188.tif 000019
【図１２Ｂ】
0006986188.tif 000020