(58)【調査した分野】(Int.Cl.,DB名)
前記複数のサンプルセットを決定することは、前記ロボットの初期姿勢推定に基づいて、対応するマップ化ランドマークの対応距離閾値内にある候補ランドマークを識別することを備え、各サンプルセットは、前記識別された候補ランドマークおよび対応するマップ化ランドマークのサブセットを備える、請求項1に記載の方法。
前記決定された、前記選択されたサンプルセットに関連するインライアの数と、前記複数の候補ランドマークにおける候補ランドマークの総数との比に基づいて、前記推定された姿勢に関連する姿勢推定信頼度を決定することを更に備え、候補ランドマークに対するインライアの比が高いほど、前記複数の候補ランドマークにおける誤検出が少ないことを示す、請求項1に記載の方法。
前記推定された姿勢の精度を決定することを更に備え、前記精度を決定することは、前記姿勢推定と、過去の姿勢推定を表す統計データとを比較することを備える、請求項1に記載の方法。
前記複数のサンプルセットから前記サンプルセットを選択することは、前記サンプルセットの1つがインライア閾値を満たすまたは超える数のインライアを有することが決定されるまで、前記サンプルセットの各々に関する前記インライアの数を連続的に決定することを備える、請求項1に記載の方法。
前記ロボットに関連する前記複数の候補ランドマークの前記位置を決定することは、前記ロボットの少なくとも1つのセンサから前記位置を受信することを備える、請求項1に記載の方法。
前記ロボットに関連する前記複数の候補ランドマークの前記位置を決定することは、強度閾値を上回る強度を有する、前記ロボットの前記少なくとも1つのセンサからの信号を識別することを備える、請求項1に記載の方法。
前記選択されたサンプルセットに関連する前記インライアを前記複数のマップ化ランドマークのうちの近隣マップ化ランドマークに関連付ける精緻化変換を決定することと、
前記精緻化変換に基づいて、前記ロボットの前記姿勢を推定することと、
を更に備える、請求項1に記載の方法。
前記複数のサンプルセットを決定することは、前記ロボットに関連する前記複数の候補ランドマークの前記位置に基づいて、前記複数の候補ランドマークから各サンプルセットについて3つの候補ランドマークを選択することを備える、請求項1に記載の方法。
各サンプルセットに関して、前記サンプルセット内の前記候補ランドマークを前記対応するマップ化ランドマークに関連付ける前記変換を決定することは、前記対応するマップ化ランドマークと位置合わせするために前記サンプルセット内の前記候補ランドマークのシフトされた位置および向きを推定することを備える、請求項1に記載の方法。
前記ロボットに結合された光検出および測距(LIDAR)ユニットを更に備え、前記LIDARユニットは、前記複数の候補ランドマークを検出するために前記ロボットの周囲のエリアに光信号を放出するように構成される、請求項13に記載のシステム。
【発明を実施するための形態】
【0010】
[0024] 方法およびシステムの例が本明細書において説明される。本明細書で説明される任意の実施形態または特徴の例は、必ずしも他の実施形態または特徴よりも好適または有利であるものとして解釈されるものではない。本明細書で説明される実施形態例は、限定的であることが意図されない。開示されるシステムおよび方法の特定の態様は、異なる様々な構成で配置および結合されてよく、それら全てが本明細書において考慮されることが容易に理解される。
【0011】
[0025] 更に、図に示される特定の配置は、限定的なものとしてみなされてはならない。他の実施形態は、所与の図に示される各要素より多いまたは少ない要素を含み得ることを理解すべきである。また、図示される要素のいくつかは結合され、あるいは省かれてもよい。更に、実施形態例は、図に示されない要素を含んでもよい。
I.概観
【0012】
[0026] 実施形態例は、ロボットの環境におけるロボットの姿勢を推定し、それによって環境内のロボットの通行を支援するために用いられ得る方法およびシステムを含み、またはこれに関連する。たとえば、ロボットの1または複数のセンサは、環境内のランドマークからの信号を受信することによってランドマークを検出してよい。ロボットは、受信信号に基づいてランドマークに対する自身の位置を決定してよい。また、環境内のランドマークの位置は、マップ化され得る。ロボットは、どのマップ化ランドマークが検出されたランドマークに対応するかを決定してよい。ロボットは、検出されたランドマークに対する自身の位置を、対応するマップ化ランドマークに対する自身の位置に変換することによって、環境内の自身の姿勢を推定してよい。
【0013】
[0027] いくつかの例において、ロボットは、ランドマークに関連しない、またはランドマークの位置を誤って表現する信号を受信または検出し得る。この種の受信または検出信号は、「誤検出」と称され得る。誤検出は、ロボットに環境内の自身の姿勢を不正確に推定させ、その結果、ロボットが環境内を効率的に通行することを妨げ得る。たとえばロボットは、検出されたランドマークが1または複数の誤検出を含むために、特定のマップ化ランドマークを検出されたランドマークに誤って関連付けることがある。この誤った関連性に基づいて、ロボットは、環境内の自身の姿勢を不正確に推定し、環境内を非効率的に通行し得る。
【0014】
[0028] システムおよび方法の例は、誤検出を除去すると同時にロボットの姿勢を推定するために役立ち得る。そのため、検出されたランドマークは、候補ランドマークとして扱われてよく、候補ランドマークは、それらのどれがマップ化ランドマークに対応し、どれが誤検出に対応するかを決定するために検査され得る。
【0015】
[0029] いくつかの例は、候補ランドマークの複数のサブセット(たとえば3つの候補ランドマークのサブセット)をサンプリングすることを含んでよい。サブセットのサンプリングされた候補ランドマークの各々は、その後、対応するマップ化ランドマークとペアにされ得る。サンプリングされたサブセットのいくつかは誤検出を含み、他は誤検出を含まないので、このプロセスは候補ランドマークの検査に役立ち得る。サンプリングされたサブセットの各々は、個々に評価され得る。これらの例は更に、各サブセットの候補ランドマークに適用するための変換を決定することを含んでよい。変換は、サンプリングされた候補ランドマークと対応するマップ化ランドマークとの間が最小距離になるように、サンプリングされた各サブセットの候補ランドマークを対応するマップ化ランドマークと位置合わせしてよい。候補ランドマークおよび対応するマップ化ランドマークのサブセットを用いることにより、変換を決定するために要する計算が低減され得る。
【0016】
[0030] いくつかの例は更に、サンプリングされたサブセットの各々に関連するインライアの数を決定することを含んでよい。サンプリングされたサブセットの各々に関して決定された変換は、全ての候補ランドマークに適用され得る。サンプリングされたサブセットに関するインライアの数は、変換後の候補ランドマークと近隣マップ化ランドマークとの間の距離に基づいてよい。たとえば、変換後の候補ランドマークと近隣マップ化ランドマーク(たとえば最も近いマップ化ランドマーク)との間の距離は、インライア距離閾値と比較され得る。インライア距離閾値以下の近隣マップ化ランドマークとの距離を有する変換後の候補ランドマークは、「インライア」と称され得る。閾値を上回る近隣マップ化ランドマークとの距離を有する変換後の候補ランドマークは、「アウトライア」と称され得る。インライアは、変換後のサブセットが、候補ランドマークを近隣マップ化ランドマークと正確に位置合わせしたことを示してよく、アウトライアはその逆を示してよい。誤検出を含まないサンプリングされたサブセットは、候補ランドマークを近隣マップ化ランドマークと正確に位置合わせする変換をもたらし、より多くのインライアを生成する可能性が高い。したがって、より多くのインライアは、誤検出をほとんどまたは全く含まないサンプリングされたサブセットに対応し、より多い数のアウトライアは、1または複数の誤検出を含むサブセットに対応し得るので、インライアの数を決定することは候補ランドマークを検査するために役立ち得る。
【0017】
[0031] いくつかの例において、候補ランドマークおよび対応するマップ化ランドマークのサブセットは、反復的にサンプリングされ得る。これらの例は、サンプリングされたサブセットの各々に関連するインライアの数を決定すること、および最大数のインライアを有するサブセットを選択することを含んでよい。他の例において、関連するインライアの数がインライア閾値を満たすまたは超える、最初に反復サンプリングされたサブセットが選択され得る。サブセットが選択された後、そのサブセットに関連するインライアの変換は、ロボットの姿勢を推定するために用いられ得る。インライアは、どのサブセットが誤検出を含むかを決定するために用いられ、ロボットの姿勢を推定するためにも用いられ得るので、本明細書で説明される方法およびシステムは、誤検出を除去すると同時にロボットの姿勢を推定し得る。
【0018】
[0032] 追加の例は、姿勢推定信頼度を決定することを含んでよい。姿勢推定信頼度は、サブセットに関連するインライアと候補ランドマークの総数との比に基づいてよい。1に近い比は、誤検出が非常に少ないことを示し、0に近い比は、多数の誤検出があることを示してよい。
【0019】
[0033] また更なる例において、ロボットの初期姿勢推定を示す過去情報が利用可能であってよい。たとえば初期姿勢推定は、ロボットが時間(t1)に座標(x,y)にあったことを示してよい。これらの例において、ロボットは、ロボットの初期姿勢推定に部分的に基づいて、候補ランドマークおよび対応するマップ化ランドマークのサブセットをサンプリングしてよい。たとえば、対応するマップ化ランドマークは、座標(x,y)に最も近いマップ化ランドマークから選択され得る。
【0020】
[0034] 以下、その例が添付図面に示された様々な実施形態が詳細に参照される。以下の詳細な説明において、本開示および説明される実施形態の完全な理解を提供するために、数々の具体的な細部が記載される。ただし、本開示は、これらの具体的な細部なしでも実施され得る。他の例において、周知の方法、手順、および構成要素、および回路は、実施形態の態様を不必要に不明確にしないために、詳細に説明されない。
II.ロボットデバイスに関するシステム設計
【0021】
[0035]
図1は、実施形態例に係る、システム100のブロック図である。システム100は、計画システム110およびロボットデバイス120を含む。計画システム110は、環境内で動作する1または複数のロボットデバイスの動きを調和させ得るオフボードプランナ112を含んでよい。オフボードプランナ112は、ロードマッププランナ114を含んでよい。オフボードプランナ112および/またはロードマッププランナ114は、たとえばロボットデバイス120などのロボットデバイスが環境内で動作中に辿る1または複数の非同期経路116を生成してよい。
【0022】
[0036] たとえば
図3に関連して後述する写真版グラフ300などの、ロードマップグラフ、写真版グラフ、または環境を表す他のロードマップは、受信、決定、または他の方法で計画システム110、オフボードプランナ112、および/またはロードマッププランナ114へ提供され得る。非同期経路116は、ロードマップグラフ、写真版グラフ、または他のロードマップに基づく1または複数の経路であってよい。たとえば、ロードマップグラフ、写真版グラフ、または他のロードマップが、複数の交差点に接続する複数のエッジを有する場合、非同期経路116は、複数のエッジおよび/または複数の交差点に関して特定され得る。
【0023】
[0037] いくつかの例において、ロボットデバイス120は、経路を追従することができる任意の1または複数の操舵車両(複数も可)であってよい。たとえばロボットデバイス120は、オンボードソフトウェア130および/またはハードウェア150を含んでよい。オンボードソフトウェア130は、位置測定サブシステム132、障害物検出サブシステム134、オドメトリサブシステム136、経路追従サブシステム138、および軌道追従サブシステム142の1または複数を含んでよい。位置測定サブシステム132は、ロボットデバイスの位置測定、すなわち環境におけるロボットデバイスの位置を決定するために用いられ得る。位置測定サブシステム132は、ロボットデバイスおよび/またはロボットデバイスを位置測定するために用いられ得る他の物体の位置推定値を生成し、ロボットデバイスがたとえば非同期経路116などの経路を辿ることを支援し、および/またはロボットデバイスがたとえば軌道140などの軌道を辿ることを支援してよい。位置推定値が生成されると、位置測定サブシステム132は、位置推定値を経路追従サブシステム138へ提供してよい。
【0024】
[0038] 非同期経路または短距離経路は、時不変プラン、またはロボットデバイス120がどのように出発点SPから終着点EPへ移動し得るかを示す他の情報であってよく、すなわち、(非同期)経路は時間を考慮しない。対照的に、軌道は、ロボットデバイス120が計画時間間隔ごとに辿り得る、操舵角およびトラクションモータ速度の値を含んでよい。
【0025】
[0039] 計画時間間隔は、ロボットデバイスが経路、ルート、および/または行程を辿るようにガイドまたは計画された持続時間であってよい。いくつかの実施形態において、計画時間間隔は、たとえば5秒、1秒、0.2秒、0.1秒など、所定の時間であってよい。特に、所定の計画時間間隔は、計画時間間隔の値を指定するユーザ入力に基づいて決定され得る。他の実施形態において、計画時間間隔は、たとえばステッチ時間、均一エッジ(または経路)コストに関連する時間、軌道に沿って移動するための推定時間など、1または複数の他の値に基づいて決定され得る。計画時間間隔および計画時間間隔の値を決定するための他の技術も可能である。
【0026】
[0040] その後、1または複数の軌道は、ロボットデバイス120がどのように出発点SPから終着点EPへ移動し得るかを時変方式で表すために用いられ得る。いくつかの実施形態において、軌道は、たとえば限定ではないがロボットデバイス120の他の運動学的変数(たとえば速度および加速度)およびロボットデバイス120のアクチュエータ位置など、計画時間間隔にわたる操舵角およびトラクションモータ速度以外の変数の値に関する情報も提供してよい。
【0027】
[0041] 一例として、「ホーム」位置から「ワーク」位置へ車を運転する経路は、たとえば人間または自律車両の制御デバイスなどの制御エンティティがホームからワークへ車を運転するために用い得る車道の順序付きリストを含んでよい。この例において、ホームからワークへの軌道は、制御エンティティがホームからワークへ車を運転するために用い得る速度および/または加速度を指定する1または複数の命令を伴ってよい。いくつかの例において、軌道は、交通量、障害物、天候、および他の時間依存条件を考慮してよく、たとえば、ホームからワークへ向かう軌道は、制御エンティティが「10秒以内に20MPH以下で右折する」、「55MPHまで加速し3分間直進する」、「30秒以内に20MPHまで減速する」、「10秒以内に20MPH以下で左折する」ことなどを示してよい。いくつかの実施形態において、軌道は、たとえば障害物、経路の変化などを考慮するために途中で変更され得る。
【0028】
[0042] 障害物検出サブシステム134は、1または複数の障害物がロボットデバイス120の経路および/または軌道を遮断しているかを決定してよい。これらの障害物の例は、パレット、パレットから落下した可能性のある物体、ロボットデバイス、および環境内で働く人間オペレータを含んでよいが、これに限定されない。障害物が検出された場合、障害物検出サブシステム134は、障害物検出を示す1または複数の通信を経路追従サブシステム138へ提供してよい。障害物検出を示す1または複数の通信は、障害物検出サブシステム134によって検出された1または複数の障害物の1または複数の位置に関する位置情報、および/または障害物検出サブシステム134によって検出された1または複数の障害物に関する識別情報を含んでよい。オドメトリサブシステム136は、たとえばサーボドライブ152からのデータなどのデータを用いて、ロボットデバイス120の位置の1または複数の変化を経時的に推定してよい。
【0029】
[0043] 経路追従サブシステム138および/または軌道追従サブシステム142は、ロボットデバイス120に搭載されたプランナとして機能してよい。このオンボードプランナは、位置測定サブシステム132によって提供された位置推定値に基づいて、たとえば非同期経路116などの1または複数の経路を辿ってよい。
【0030】
[0044] 経路追従サブシステム138は、非同期経路116、位置測定サブシステム132からの位置推定値入力、障害物検出サブシステム134からの1または複数の障害物の1または複数の位置に関する位置情報、および/またはオドメトリサブシステム136からの1または複数の位置の変化に関する情報を受信し、1または複数の軌道140を出力として生成してよい。
【0031】
[0045] ハードウェア150は、サーボドライブ152および/またはモータ154を含んでよい。サーボドライブ152は、1または複数のサーボメカニズムおよび関連電気機器を含んでよい。いくつかの例において、サーボドライブ152は、1または複数のサーボメカニズムに動力供給するため、および/またはサーボメカニズム(複数も可)からのフィードバック信号を監視するために用いられる1または複数の電子増幅器を含んでよい。サーボドライブ152は、オンボードソフトウェア130から、たとえば軌道144などの制御信号を受信し、制御信号に比例する動きを生成するためにサーボメカニズム(複数も可)へ電流を供給してよい。いくつかの実施形態において、サーボドライブ152は、サーボメカニズム(複数も可)から受信したステータス情報と、軌道144によって命令される予定ステータスとを比較してよい。その後、サーボドライブ152は、受信ステータス情報と予定ステータスとの間のずれを補正するために、供給した電流の電圧周波数またはパルス幅を調整してよい。他の実施形態において、サーボドライブ152は、たとえばフィードバック信号および/または位置関連情報などの情報をオンボードソフトウェア130へ提供してよい。
【0032】
[0046] 1または複数のモータ154は、サーボドライブ152のサーボメカニズム(複数も可)の一部または全部であってよい。たとえばモータ154は、ロボットデバイス120の一部または全部を駆動するための機械力を生成するためにサーボドライブ152によって供給される電流を用いてよく、たとえばモータ154は、ロボットデバイス120を推進させ、および/またはロボットデバイス120の1または複数のエフェクタを駆動する力を供給してよい。
【0033】
[0047] たとえば倉庫、オフィスビル、または住居などの屋内環境、および/またはたとえば公園、駐車場、または庭などの屋外環境を含む環境におけるロボットデバイスの経路計画は、たとえばロボットデバイスなどのエージェントが辿り得る経路の連結グラフであるロードマップグラフに関して実行され得る。環境内でのエージェントルート指定を計画するために自由空間アプローチではなくロードマップグラフを用いることによって、全体計画状態空間が低減され、大規模マルチエージェント調和を扱いやすくすることができる。また、ロードマップグラフの使用により、オペレータは、ロボットデバイスの通行が許可されたエリアを直感的に制御することが可能である。
【0034】
[0048] ロードマップグラフ生成は、第1に、レーンの大まかな位置および移動方向を示す写真版グラフの生成を伴ってよい。いくつかの例において、写真版グラフは、ロボットデバイスの移動方向およびレーンを示す有向グラフであってよい。他の例において、写真版グラフは、環境の図またはマップに基づいて手動で生成され得る。
【0035】
[0049]
図2は、実施形態例に係る、1または複数の倉庫を運営するためのシステム200を示す。システム200は、倉庫管理システム210、計画システム110、およびロボットデバイス220を含む。倉庫管理システム210は、たとえば1または複数の物品を倉庫に保管する要求および/または1または複数の物品を倉庫から出荷する要求などの、倉庫に関連する1または複数の物流要求212を受信してよい。倉庫管理システム210は、物流要求212を1または複数の行動214に変換してよく、行動214は、1または複数の指定されたエージェントを1または複数の指定位置へ移動させるための「移動」行動、および1または複数の物品を1または複数の指定位置へ搬送するための「輸送」行動を含んでよいが、これに限定されない。いくつかの例において、行動214は、{エージェントID、宛先}形式の移動コマンドを含んでよいが、たとえば「パレットの移動」などの他の行動も可能である。しかしこれらは一般に、移動コマンド(ピック位置への移動、載置位置への移動)に分解することができる。
【0036】
[0050] 計画システム110は、オフボードプランナ112および実行部220を含む。オフボードプランナ112は、行動214を入力として受信し、たとえば複数のロボットデバイスなどの、倉庫内で動作する1または複数のエージェントが行動214を実行するための1または複数の調和経路216を生成してよい。調和経路216は、倉庫内のエージェント全てが物流要求212を履行するための調和行動計画の一部であってよい。調和行動計画は、エージェントの優位性を考慮してよく、たとえばロボットデバイスRD1およびRD2の両方がほぼ同時に地点に到達すると予想される場合、たとえばロボットデバイスRD1はロボットデバイスRD2が地点を通過するまで待機する(またはその逆である)ように、ロボットデバイスの一方が他方に対し優位性または優先権を有してよい。実行部220は、調和経路216を受信し、ロボットデバイス120に、自身の調和行動計画の一部の遂行において行動214を実行し物流要求212を履行するように指示するために、非衝突サブ経路222を生成してよい。
【0037】
[0051]
図2において上述したように、オフボードプランナ112および実行部220を含む計画システム110は、ロボットデバイス120と通信してよい。いくつかの実施形態において、ロボットデバイスは、たとえば任意の職業安全衛生局(OSHA)クラス1またはクラス3動力付き産業トラックなどのフォークトラックであってよい。他の実施形態において、計画システム110は、「クラウド」に存在する1または複数のネットワーク型コンピューティングデバイス(たとえば1または複数のネットワーク型コンピューティングデバイス)および/またはロボットデバイス120と同じ場所にある建物内のどこかに位置する1または複数のネットワーク型コンピューティングデバイスを用いて実行するソフトウェアを含んでよい。
【0038】
[0052]
図3は、実施形態例に係る、ネットワーク318を用いて接続された、物流インタフェース310、倉庫管理システム210、および1または複数のロボットデバイス120を含むシステム300を示す。物流インタフェース310は、たとえばパレットなどの物体および/またはロボットデバイスの倉庫管理システム210への移動に関する棚卸タスク命令を、ネットワーク318を介して倉庫管理システム210へ提供してよい。棚卸タスクの例は、種類Bの物品を収容するパレットAを位置Cへ移動することであってよい。
【0039】
[0053] 倉庫管理システム210は、物流インタフェース310から棚卸タスク命令を受信し、1または複数のタスク/ミッション命令(たとえばロボットデバイスAにパレットBを位置Cから位置Dへ移動させる命令)および/または棚卸タスク命令を実行するようにロボットデバイス(複数も可)120を制御するための計画を生成してよい。タスク/ミッション命令および/または計画は、1または複数の経路および/または1または複数の軌道に関する情報を含んでよく、タスク/ミッション命令(複数も可)、計画(複数も可)、経路(複数も可)、および軌道(複数も可)は、
図1および
図2に関して説明される技術を用いて倉庫管理システム210の計画システム110によって生成される。
【0040】
[0054] たとえば、倉庫管理システム210は、たとえばサーバコンピューティングデバイスなどの1または複数のコンピューティングデバイスを用いてデータを実行および格納する集中制御サービスであってよい。これらのタスクを実行するために、倉庫管理システム210は、WMSミドルウェアを含んでよく、システム300を監視および管理するためのツールへのアクセスを提供するユーザインタフェースを提供してよい。WMSミドルウェアおよび/または倉庫管理システム210の他の構成要素は、タスク/ミッション命令(たとえばロボットデバイスAにパレットBを位置Cから位置Dへ移動させる命令)からロボットデバイスの経路、姿勢、および/または軌道への変換、棚卸タスクとタスク/ミッション命令との間の変換、およびAPI間での変換のために、たとえばプロトコル変換APIなどの1または複数のアプリケーションプログラミングインタフェース(API)を用いてよい。
【0041】
[0055] 倉庫管理システム210によって提供されるユーザインタフェースは、たとえば1または複数のロボットデバイスの位置、バッテリ状態、充電状態などに関するデータの提示など、ロボットデバイス(複数も可)120を監視すること、棚卸タスク命令(複数も可)、タスク/ミッション命令(複数も可)、計画(複数も可)、経路(複数も可)、および/または軌道(複数も可)の生成およびロボットデバイス(複数も可)120の1または複数への送信を可能にすること、および1または複数の倉庫マップ、パレット、ネットワーク、および/または計画システム(たとえば計画システム110、倉庫管理システム210、および/または物流インタフェース310)に関するデータを再検討、更新、削除、および/または挿入することを含むがこれに限定されない、システム300に関する1または複数のユーザインタフェース機能を提供してよい。
【0042】
[0056] いくつかの実施形態において、倉庫管理システム210は、物流インタフェース310とロボットデバイス(複数も可)120との間およびロボットデバイス(複数も可)120の2つ以上の間の通信をルート指定し、たとえばロボットデバイス(複数も可)120の1または複数に搭載されたオンボードシステム320などの1または複数のオンボードシステムを管理してよい。他の実施形態において、倉庫管理システム210は、限定ではないがたとえば、ロボットデバイス(複数も可)120の1または複数によるタスク/ミッション命令の完了に関するデータ、ロボットデバイスが初期化/起動された位置を示すデータを含む、ロボットデバイス(複数も可)120の一部または全部の位置および/または姿勢に関するデータ、人間の行動に関する1または複数の監査追跡、事故分析、および/またはデバッギングに関するデータ、および状態追跡に関するデータなどの、システム300に関するデータを格納、生成、読み取り、書き込み、更新、および/または削除してよい。他の実施形態において、倉庫管理システム210は、ロボットデバイス(複数も可)120および1または複数のアダプタと通信する中央メッセージルータ/持続性マネージャを含んでよい。1または複数のアダプタの各々は、倉庫管理システム210に利用可能なシステム300の通信および/またはデータへのアクセスを提供してよく、限定ではないが、上述したユーザインタフェースのためのユーザインタフェースサービスアダプタ、システム300に関する情報へのワールドワイドウェブ(WWW)/インターネットアクセスを可能にするウェブコンテンツサービスアダプタ、APIおよび/またはWMS間の通信の中継として機能するメッセージ代理アダプタおよび/またはWMSアダプタを含んでよい。
【0043】
[0057]
図3は、1または複数のロボットデバイス120の各々が、オンボードシステム320、ネットワークスイッチ330、車両コントローラ332、プログラマブル論理コントローラ(PLC)334、1または複数のデバイスセンサ338、および1または複数のドライブ340の1または複数を含み得ることを示す。
【0044】
[0058] オンボードシステム320は、ロボットデバイス120へのインストールおよびロボットデバイス120との併用のために構成されたロボット計画のための計算およびセンサパッケージであってよく、オンボードシステム320は、オンボードセンサ322および1または複数の計画/実行プロセッサ324を含んでよい。
図3は、(ネットワーク318を介して)計画システム110と、デバイスセンサ338と、および/またはロボットデバイス120の1または複数のアクチュエータと少なくとも通信するためにネットワークスイッチ330を用いるように構成されたオンボードシステム320も示す。
【0045】
[0059] オンボードシステム320は、ロボットデバイス120の位置測定、計画を実行するためのローカル軌道の生成および/または倉庫管理システム210によって提供された経路および/または軌道に沿った移動、ドライブ340に1または複数の(ローカル)軌道を辿らせるコマンドの生成、ロボットデバイス120のアクチュエータ(複数も可)を制御するコマンドの生成、および姿勢、状態、および/または他の情報を倉庫管理システム210へ報告することの1または複数を担ってよい。
【0046】
[0060] オンボードセンサ322は、オンボードシステム320をナビゲートおよび/または制御するための1または複数のナビゲーションレーザ、レーザスキャナ、カメラ、および/または他のセンサを含んでよい。たとえば、ロボットデバイス(複数も可)120のうちのロボットデバイスは、たとえばドイツ、ヴァルトキルヒ所在のSICK AG社、日本、大阪府所在の北洋電機株式会社、および/または日本、大阪府所在の株式会社キーエンスによって供給される1または複数のレーザスキャナなどの、1または複数のレーザスキャナを含んでよい。レーザスキャナは、ロボットデバイスの移動方向およびロボットデバイスの側方、角、および/または後方に沿った障害物の検出および/または回避のために用いられ得る。レーザスキャナは、反射板ベースの位置測定を用いてロボットデバイスを位置測定するためにも用いられ得る。いくつかの実施形態において、カメラおよび/または他のセンサは、レーザスキャナの代わりに、またはレーザスキャナとともに、障害物検出、障害物回避、および/または位置測定のために用いられ得る。
【0047】
[0061] 計画/実行プロセッサ(複数も可)324は、少なくともオンボードセンサ322に接続された1または複数のコンピュータプロセッサを含んでよい。計画/実行プロセッサ(複数も可)324は、オンボードセンサ322からのデータを読み取り、ローカル軌道および/またはロボットデバイス120を移動させるためのドライブ(複数も可)340へのコマンドを生成し、倉庫管理システム210と通信してよい。ローカル軌道は、ロボットデバイス120が始動姿勢で始動し、何らかの時間に終着姿勢に到達する軌道であってよい。いくつかの例において、始動姿勢は暗示的に指定されてよく、たとえば始動姿勢は、ロボットデバイス120の現在の姿勢であってよく、ローカル軌道は、始動姿勢がロボットデバイス120の現在の姿勢であるという前提に基づいてよい。
【0048】
[0062] 計画/実行プロセッサ(複数も可)324は、コンポーネントフレームワークを利用してよい。コンポーネントフレームワークは、たとえばバージニア州オナンコックのboost.org社によって供給される「boost::asio」および「boost::signals2」ソフトウェアライブラリなどの、ロボットデバイス120の無矛盾非同期モデルを提供するように構成された入力/出力(I/O)およびシグナリングに関するソフトウェアライブラリ上に構築されたマルチスレッド型ジョブスケジューリングおよびメッセージ受渡しシステムであってよい。コンポーネントフレームワークは、ソフトウェアコンポーネント(またはモジュール)間の通信を可能にし得るので、ソフトウェアコンポーネントは、スレッドセーフ方式で並行して実行され得る。
【0049】
[0063] コンポーネントフレームワークは、ステートマシンコンポーネント、位置測定コンポーネント、計画コンポーネント、および軌道追従コンポーネントの1または複数を含んでよい。ステートマシンコンポーネントは、車両初期化、車両指揮および故障対応のためにロボットデバイス120の状態を管理してよい。ステートマシンコンポーネントは、ロボットデバイスの状態を管理するために、決定性有限オートマンまたは他のステートマシンを用いてよい。
【0050】
[0064] 位置測定コンポーネントは、車両センサからのデータを読み取り、ロボットデバイス120の姿勢を決定するためにロボットデバイス120の以前の状態情報を統合してよい。車両センサデータは、車両センサによって検出された1または複数のランドマーク/対象地点を示してよい。あるいは、車両センサから得たデータは、位置測定コンポーネントが車両センサデータに基づいて1または複数のランドマーク/対象地点を検出するような処理を必要とし得る。姿勢は、たとえばパレットまたは他の物体など、検出された1または複数のランドマーク/対象地点に対して決定され得る。計画コンポーネントは、倉庫管理システム210から1または複数の目的を受信し、ロボットデバイス120がこれらの目的を達成するためのローカル軌道を決定してよい。いくつかの実施形態において、ローカル軌道は、ロボットデバイス120が、たとえば100ミリ秒、200ミリ秒、500ミリ秒、1秒、5秒など所定の時間辿るべき短期間軌道であってよい。軌道追従コンポーネントは、計画コンポーネントによって生成されたローカル軌道を受信し、ローカル軌道に沿って移動するドライブ制御命令を生成してよい。その後、ドライブ制御命令は、トラクションモータおよびロボットデバイス120に関する他のアクチュエータを制御するドライブ340へ中継される。
【0051】
[0065] ネットワークスイッチ330は、ロボットデバイス(複数も可)120のための通信を可能にし得る。これらの通信は、オンボードシステム320とロボットデバイス120の他の部分、たとえばデバイスセンサ338およびドライブ340との間の通信、およびネットワーク318を介した倉庫管理システム210との通信を含んでよいが、これに限定されない。たとえばネットワークスイッチ330は、たとえば台湾、新北市の株式会社プラネットテクノロジーによるプラネットイーサネットスイッチのように、イーサネットおよび/または他の有線通信インタフェース(複数も可)を介した有線ネットワークへの、および/または、WiFi(登録商標)および/または他の無線通信インタフェース(複数も可)を介した無線ネットワークへの、伝送制御プロトコル/インターネットプロトコル(TCP/IP)ベースの通信を可能にし得る。
【0052】
[0066] いくつかの実施形態において、ロボットデバイス(複数も可)120と計画システム110との間の通信は、リモートプロシージャコール(RPC)を含んでよい。リモートプロシージャコールは、計画システム110のソフトウェアによってロボットデバイス(複数も可)120の1または複数に常駐するソフトウェア手順、方法、および/または機能を呼び出すこと、およびその逆を含んでよい。リモートプロシージャコールは、たとえばTCP/IP、たとえばHTTP1.0および/またはHTTP2.0などのハイパーテキスト転送プロトコル(HTTP)、および/または他の通信プロトコルなどの通信プロトコルに基づいてよい。リモートプロシージャコールの一部または全部は、暗号化データを含んでよく、そのようなデータは、セキュアソケットレイヤ(SSL)、トランスポート層セキュリティ(TLS)、および/または1または複数の他の暗号化アルゴリズムおよび/またはプロトコルを用いて暗号化され得る。暗号化データが用いられる実施形態において、たとえばプライベート認証機関などの1または複数の認証機関は、暗号化データの暗号化および/または解読に用いられる1または複数の証明書を認証してよい。認証機関は、1または複数の証明書へのアクセスを制御するために、アクセス制御リスト(ACL)を用いてよい。リモートプロシージャコールは、RPC関連通信のための要求/応答プロトコルおよび/または双方向ストリーミングプロトコルを用いてよい。RPC関連通信のために双方向ストリーミングプロトコルが用いられる実施形態において、双方向ストリーミングプロトコルを実装するために単一の長寿命RPCが用いられ得る。
【0053】
[0067] 車両コントローラ332および/またはプログラマブル論理コントローラ334は、ロボットデバイス(複数も可)120のための電気およびセンサ管理機能を提供してよい。電気およびセンサ管理機能は、電気負荷制御、照明制御、センサ制御、センサおよび/またはスイッチ信号処理、および電力管理のための機能を含んでよいが、これに限定されない。車両マスタ336は、ロボットデバイス(複数も可)320の、たとえばリフトデバイスなどの1または複数のアクチュエータを制御するための機能を提供してよい。
【0054】
[0068] デバイスセンサ(複数も可)338は、ロボットデバイス(複数も可)120の制御および/または動作に関連するデータを提供し得る1または複数のセンサを含んでよい。データは、限定ではないがたとえば位置測定情報、位置推定、およびマッピングデータなどの、ロボットデバイス(複数も可)120に関する環境に関する情報を提供してよい。たとえば、デバイスセンサ(複数も可)338は、1または複数のレーザ(たとえば2方向(2D)レーザ、安全レーザ、レーザスキャナ)、カメラ(たとえば飛行時間(ToF)カメラ、三原色(RGB)カメラ、サーモカメラ)、電気センサ、近接センサ、ナビゲーションデバイス、および位置センサを含んでよい。
【0055】
[0069] デバイス(複数も可)340は、ロボットデバイス(複数も可)120を動かすための機能を提供する1または複数のドライブコントローラおよび/またはアクチュエータを含んでよい。ドライブコントローラは、ドライブアクチュエータに、ロボットデバイス(複数も可)120の動きを制御するように指示してよい。ドライブアクチュエータは、1または複数のトラクションモータ、電動ドライブ、油圧ドライブ、空圧ドライブを含んでよい。
【0056】
[0070]
図4は、実施形態例に係る、ロボットデバイス(複数も可)120のロボットデバイスアーキテクチャ400を示す。ロボットデバイス(複数も可)120のロボットデバイスアーキテクチャ400は、ソフトウェアを含んでよい。ソフトウェアは、位置測定のためのソフトウェア410、パレット姿勢推定器のためのソフトウェア412、ステートマシンに関連するソフトウェア414、プランナフォロアのためのソフトウェア416、コンポーネントフレームワークのためのソフトウェア420、およびシステムを動作させるためのソフトウェア430を含んでよい。ソフトウェアは、1または複数のハードウェア計画/実行プロセッサ324によって実行され得る。ロボットデバイス(複数も可)120と他のデバイスとの間の通信は、ネットワークゲートウェイ440および/またネットワークスイッチ330を用いて実行され得る。たとえば、ネットワークゲートウェイ440は、ロボットデバイス(複数も可)120のうちのロボットデバイス内での、またはこれとの無線通信のために用いられ、ネットワークスイッチ330は、ロボットデバイス(複数も可)120のうちのロボットデバイス内での、またこれとの有線通信のために用いられ得る。ロボットデバイスアーキテクチャ400は、たとえば
図3に関連して上述したデバイスセンサ(複数も可)338およびドライブ(複数も可)340などの追加のハードウェアも含む。いくつかの実施形態において、ロボットデバイスアーキテクチャ400は、ToFカメラ450およびRGBカメラ452を含むがこれに限定されない1または複数のカメラを含んでよく、1または複数のカメラは、1または複数のスチルカメラおよび/または1または複数のビデオカメラを含んでよい。
【0057】
[0071]
図5は、実施形態例に係る、ロボットデバイス(複数も可)120に関するレーザスキャナアーキテクチャ500を示す。いくつかの実施形態において、デバイスセンサ(複数も可)338の一部または全部は、レーザスキャナアーキテクチャ500によって示されるレーザおよびレーザスキャナであってよい。
【0058】
[0072] レーザスキャナアーキテクチャ500は、レーザ510、512、520、522、レーザスキャナ524、プロトコルコンバータ526、ネットワークスイッチ330、およびオンボードシステム320を含んでよい。レーザ510、512、520、および522は、ロボットデバイス(複数も可)120の定位置にあってよく、たとえば、レーザ510はロボットデバイスの前部に位置し、レーザ512はロボットデバイスの後部に位置し、レーザ520はロボットデバイスの前部左角に位置し、レーザ522はロボットデバイスの前部右角に位置してよい。レーザ510、512、520、522および/またはレーザスキャナ524は、環境内でロボットデバイスを位置測定するための情報を提供してよい。いくつかの実施形態において、レーザ510、512、520、522および/またはレーザスキャナ524は、1または複数の反射板から反射した光を放出してよく、反射光は、1または複数のレーザセンサによって検出されてよく、ロボットデバイスは、反射光を検出するために要する持続時間に基づいて環境内で位置測定され得る。これらの実施形態において特に、レーザ510、512、520、522および/またはレーザスキャナ524の一部または全部は、反射レーザ光を検出するための1または複数のレーザセンサを含んでよい。したがって、レーザ510、512、520、522および/またはレーザスキャナ524の一部または全部は、レーザに関連するデータ(たとえばレーザに関連するメンテナンスデータ)、レーザによって放出された光に関連するデータ、およびレーザセンサ(複数も可)によって反射レーザ光を検出するために要する1または複数の持続時間に関連するデータを含むがこれに限定されないデータを生成してよい。
【0059】
[0073]
図5に示すように、たとえばレーザ520、522などのいくつかのレーザおよびレーザスキャナ524は、ネットワークスイッチ330に直接接続され得るが、たとえばレーザ510、512などの他のレーザは、プロトコルコンバータ526を介してネットワークスイッチ330に接続され得る。プロトコルコンバータ526は、たとえばレーザ510および/または512などのレーザによって用いられる通信プロトコルを、ネットワークスイッチ330によって用いられる通信プロトコルに変換してよく、たとえばRS‐422に基づく通信プロトコルからイーサネットに基づく通信プロトコルに変換してよい。その後、レーザ510、512、520、522、およびレーザスキャナ524は、ネットワークスイッチ330および場合によってはプロトコルコンバータ526を介して、オンボードシステム320へデータを送信し、オンボードシステム320からのコマンドを受信してよい。
【0060】
[0074] いくつかの実施形態において、ロボットデバイス(複数も可)120は、1または複数の障害状態を仮定され得る。これらの障害状態および関連する修復戦略の例が以下の表2に表される。
【表1】
III.環境内でのロボットデバイスの位置測定
【0061】
[0075]
図6は、実施形態例に係る、環境内を通行するロボットを示す。ロボット600の位置および向きが推定されてよく、ロボットは、それに応じて環境内を通行してよい。ロボットの位置および向きは、ロボットの「姿勢」と称され得る。ロボットの姿勢は、ロボットの1または複数のセンサ602による受信信号606に基づいて推定され得る。受信信号は、環境全体に配置されたランドマーク604に関連してよい。たとえば信号は、倉庫内の様々な位置に設けられた再帰反射マーカによって反射され得る。この例において、ロボットは、ロボットの周囲のエリアに光を放出する光測距および検出(LIDAR)ユニットを含んでよく、ロボットの周囲のエリアに位置する再帰反射器は、ロボットの1または複数のセンサによって検出するためにロボットへ光を反射してよい。
【0062】
[0076] いくつかの例において、受信信号は、ロボットに対するランドマークの位置を含んでよい。また、環境内のランドマークの位置は予め決定され得る。たとえばランドマークは、マップ化され得る。受信信号と、対応するマップ化ランドマークとをマッチングすることによって、環境内のロボットの姿勢が推測されることが可能になり得る。たとえば、ロボットは、マップ上の自身の位置を決定するために、検出したランドマークとマップ化ランドマークとを位置合わせしてよい。また、環境内の障害物610に関するランドマークの位置が予め決定され得る。たとえば、障害物の位置もまたマップ化され得る。ロボットは、推定された姿勢および予め決定された障害物の位置に基づいて、障害物を回避しながら環境内を通行するように動き608を行ってよい。
【0063】
[0077]
図7は、実施形態例に係る、検出をマップ化ランドマークに関連付けるロボットを示す。候補ランドマーク712からの検出信号706は、ロボット700の1または複数のセンサ702によって受信され得る。信号は、ロボットに関連する候補ランドマークの位置を示してよい。候補ランドマークは、マップ化ランドマーク704と位置合わせするために変換され得る。候補ランドマークとマップ化ランドマークとの間に、変換後の候補ランドマークとマップ化ランドマークとの間の最小距離をもたらす関連性714が形成され得る。たとえば関連性714は、たとえばiterative closest point(ICP)法などの最小二乗平均法を用いて形成され得る。候補ランドマークは、候補ランドマークとマップ化ランドマークとの間の関連性714に基づいて移動および回転され得る。ロボットの姿勢は、ロボットを同様に移動および回転させることによって推測され得る。
【0064】
[0078]
図8は、実施形態例に係る、ロボット制御システムのモジュールを示す機能ブロック図である。ロボット制御システムは、オンボード感知モジュール800の一部として1または複数のセンサを含んでよい。センサは、ロボットの車輪オドメトリ808を示すデータを提供してよい。またセンサは、ナビゲーションスキャナ810も含んでよい。ナビゲーションスキャナ810は、ロボットの環境内の候補ランドマークからの信号を受信するように構成され得る。
【0065】
[0079] ロボット制御システムの姿勢推定モジュール802は、環境内のマップ化ランドマークに対するロボットの位置および向きを示してよい。姿勢推定モジュール802は、オンボード感知モジュール800からの入力に基づいて機能を実行するソフトウェアを含んでよい。たとえば、ナビゲーションスキャナ810がスキャンを実行する度に、オンボード感知モジュールからのセンサデータは、環境内のロボットの現在の位置および向きを決定するために姿勢推定モジュール802によって処理され得る。姿勢推定モジュール802の姿勢追跡/精緻化ブロック812およびグローバル位置測定ブロック814は、処理ステップを表し、姿勢ブロック816、信頼度/精度ブロック818、および初期姿勢推定ブロック820は、処理ブロック812および814の出力を表す。
【0066】
[0080] 姿勢推定モジュール802は、2つのモードで動作してよい。第1のモードにおいて、姿勢推定モジュール802は、ロボットの初期姿勢推定820を有してよく、姿勢追跡/推定ブロック812は、初期姿勢推定820を更新してよい。姿勢追跡/精緻化812は、候補ランドマークに関するロボットの位置を識別するために、初期姿勢推定820と併せて車輪オドメトリ808およびナビゲーションスキャナ810からのデータを利用してよい。姿勢追跡/精緻化ブロック812は、候補ランドマークを、初期姿勢推定820付近にある特定のマップ化ランドマークに関連付けてよい。姿勢推定モジュール802は更に、関連性に基づく姿勢推定816、および姿勢推定の信頼度/精度818を提供してよい。信頼度/精度818は、初期姿勢推定が適切であること、または更なる精緻化を要することを示してよい。また第1のモードにおいて、姿勢追跡/精緻化ブロック812によって決定された姿勢816および信頼度/精度818は、ロボットの精緻化姿勢推定を決定するために後処理モジュール804によって用いられ得る。その間、グローバル位置測定ブロック814はスキップされ得る。また、姿勢追跡/精緻化812中に導出された姿勢推定816は、後続する姿勢推定において用いるためのロボットの初期姿勢推定820として扱われ得る。
【0067】
[0081] 第2のモードにおいて、姿勢推定モジュール802は、ロボットが環境内のどこにあるかの初期インジケーションを有さなくてよい。すなわち、初期姿勢推定820は未だ決定されていなくてよい。第2のモードにおいて、姿勢推定モジュール802は、ロボットの姿勢を決定するために姿勢追跡/精緻化812ではなくグローバル位置測定814を利用してよい。グローバル位置測定ブロック814は、ロボットの環境全体にわたるマップ化ランドマークと候補ランドマークとの関連性を検査してよい。またグローバル位置測定ブロック814は、姿勢推定816および信頼度/精度818を出力してよい。また第2のモードにおいて、グローバル位置測定ブロック814によって決定された姿勢816および信頼度/精度818は、ロボットの精緻化姿勢推定を決定するために後処理モジュール804において用いられ得る。また、グローバル位置測定814中に導出された位置推定816は、後続する姿勢推定において用いるためのロボットの初期姿勢推定820として扱われ得る。
【0068】
[0082] 後処理モジュール804は、姿勢追跡/精緻化またはグローバル位置測定から導出された姿勢推定を精緻化するために用いられ得る。後処理モジュールは、位置測定モジュールの姿勢推定および信頼度/精度およびオンボード感知モジュールの車輪オドメトリの融合外挿822を実行してよい。融合外挿中、信頼度/精度が高い場合、精緻化姿勢推定は、位置測定モジュールによって提供された姿勢推定により依存してよい。逆に、信頼度/精度が低い場合、精緻化姿勢推定は、車輪オドメトリにより依存してよい。また、後処理モジュールは、提供された信頼度/精度および精緻化姿勢推定に基づいてマップ更新824を提供してよい。たとえばマップ更新は、精緻化姿勢推定に基づいてマップ化ランドマークの位置を更新してよい。他の例において、マップ更新は、精緻化姿勢推定を生成するために用いられたマップ化ランドマークに関連する統計情報を更新してよい。
【0069】
[0083]
図8のロボット制御システムによって実行される機能の各々は、定期的に実行され得る。たとえば、ナビゲーションスキャナ810は8Hzでスキャンを実行し、車輪オドメトリ808は100Hzで更新してよい。他の例として、姿勢推定モジュールの処理ブロック812および814は、オンボード感知モジュールからのデータを8Hzで受信し、姿勢816および信頼度/精度818を8Hzで生成してよい。同様に様々な周波数が可能である。
【0070】
[0084]
図9は、実施形態例に係る、ロボットのマップ化環境を示す。ロボットの姿勢推定の生成は、環境内の予め定められたランドマークの位置に依存してよい。たとえば、マップ化ランドマーク902は、マップ上の第1の座標(x1,y1)に対応し、マップ化ランドマーク904は第2の座標(x2,y2)に対応し、マップ化ランドマーク906は第3の座標(x3,y3)に対応し、マップ化ランドマーク908は第4の座標(x4,y4)に対応してよい。この例において、マップ化ランドマークは実質的に水平なマーカ平面に配置され得るので、x軸およびy軸のみが関係し得る。たとえば、倉庫内の各再帰反射器は、床面から5フィートの高さ(z軸に対応)に位置してよい。他の例において、マップ化ランドマークは、マップ上の座標範囲に対応してよい。たとえば、座標範囲は、様々なランドマークのサイズに対応してよい。また他の例において、マップ化ランドマークは、(3D)マップ上の3次元(3D)座標に対応してよい。マップ化ランドマークの位置を表す他の方法も可能である。
【0071】
[0085] いくつかの実施形態例において、マップ化ランドマークは、光源の方へ光を反射するように構成された再帰反射マーカであってよい。そのような例において、ロボットは、ロボットの周囲のエリアに光を放出するように構成された光測距および検出(LIDAR)ユニットを含んでよい。再帰反射マーカは、LIDARユニットからの信号をロボットへ反射してよい。ロボットは、再帰反射マーカからの反射信号を受信しロボットに対するマーカの位置を検出するように構成され得る、ロボットの1または複数のセンサを含んでよい。
【0072】
[0086]
図10は、実施形態例に係る、複数の検出を行ったロボットを示す。ロボットの姿勢推定の生成は、ロボット1000の1または複数のセンサ1002によって検出された信号1006に更に依存してよい。一例において、信号は、候補ランドマーク1012、1014、1016、1018、および1020と関連してよい。信号は、ロボットに関する候補ランドマークの位置を示してよい。たとえば、候補ランドマーク1012は、ロボット1000に対する半径(r1)およびロボット1000に対する角度(α1)に対応し、候補ランドマーク1014は、半径(r2)および角度(α2)に対応し、候補ランドマーク1016は、半径(r3)および角度(α3)に対応し、候補ランドマーク1018は、半径(r4)および角度(α4)に対応し、候補ランドマーク1020は、半径(r5)および角度(α5)に対応してよい。他の例において、候補ランドマークは、ロボット1000に関するデカルト座標によって表され得る。ロボットに対する候補ランドマークの位置を表す他の方法も可能である。
【0073】
[0087] いくつかの例において、候補ランドマークの位置は、ロボットの少なくとも1つのセンサによって決定され得る。すなわち、センサは、候補ランドマークの位置を示す信号を受信してよい。センサは、受信信号を表すセンサデータを生成し、センサデータに基づいて候補ランドマークの位置を決定してよい。ロボットの制御システムはその後、センサから候補ランドマークの位置を受信してよい。他の例において、少なくとも1つのセンサは、生センサデータを生成してよく、ロボットの1または複数のプロセッサは、候補ランドマークの位置を決定するために生センサデータを処理してよい。たとえば、プロセッサは、強度閾値を上回る強度を有する、ロボット上のセンサからの信号を識別してよい。また他の例において、ロボットから遠隔にあるプロセッサが、センサデータに基づいて候補ランドマークの位置を検出してよい。候補ランドマークの位置を決定するための他の方法も可能である。
【0074】
[0088] 候補ランドマークは、マップ化ランドマークに対応し、または対応しないこともある。たとえば、候補ランドマーク1012、1014、1016、および1018は、マップ化ランドマーク(たとえば
図9のマップ化ランドマーク902、904、906、および908)に対応し、候補ランドマーク1020は誤検出に対応してよい。誤検出は、候補ランドマークと、対応するマップ化ランドマークとの位置合わせを困難にし、その結果、ロボットの正確な位置推定を妨げ得る。正確な位置推定を実現するために候補ランドマークを検査する方法を説明する実施形態例を以下に示す。
【0075】
[0089]
図11A、
図11B、
図11C、および
図11Dは、実施形態例に係る、候補ランドマークおよび対応するマップ化ランドマークのサンプルセットに関連するインライアの決定を示す。
図11Aは、ロボットのマップ化環境を示す。マップ化ランドマーク1102、1104、1106、および1108は、予め決定された位置を有する。
図11Bは、複数の検出を行ったロボットを示す。検出は、候補ランドマーク1112、1114、1116、1118、および1120に対応する。実施形態例において、候補ランドマーク1112、1114、および1120、および対応するマップ化ランドマーク1102、1104、および1106を含むサンプルセットが決定される。この例において、3つの候補ランドマークがサンプリングされた。ただし、様々な数のサンプリングされたランドマークが同様に可能である。たとえば、サンプリングされたランドマークの数は、候補ランドマークの総数の百分率に関連してよい。
【0076】
[0090] いくつかの実施形態において、候補ランドマークのサンプリングは、疑似ランダムに実行され得る。他の実施形態において、候補ランドマークのサンプリングは、規則正しい形式で実行され得る。たとえば、候補ランドマークのサンプリングは、ロボットに対する角度の順序で実行され得る。他の例において、候補ランドマークのサンプリングは、ロボットに対する半径の順序で実行され得る。また他の例において、第1の候補ランドマークは疑似ランダムに選択され、他の候補ランドマークは、第1の候補ランドマークとの近接度に基づいてサンプリングされ得る。また他の例において、候補ランドマークは、所望の幾何学形状に基づいて選択され得る。たとえば、二等辺三角形に最も近い候補ランドマークがサンプリングされ得る。他の例において、直線に最も近い候補ランドマークがサンプリングされ得る。候補ランドマークをサンプリングする他の方法も可能である。
【0077】
[0091] いくつかの実施形態において、対応するマップ化ランドマークは、サンプリングされた候補ランドマークと同様の形式で選択され得る。他の実施形態において、サンプリングされた候補ランドマークと同様の幾何学形状を成す、対応するマップ化ランドマークがサンプリングされ得る。この例において、サンプリングされたマップ化ランドマーク1102、1104、および1006は、サンプリングされた候補ランドマーク1112、1114、および1120が成す幾何学形状に最も近いものである。対応するマップ化ランドマークをサンプリングする他の方法も可能である。
【0078】
[0092] いくつかの実施形態において、各々が異なる候補ランドマークおよび対応するマップ化ランドマークの組み合わせを含む数個のサンプルセットが決定され得る。サンプルセットの各々は、どのサンプルセットがロボットの姿勢を適切に表すかを決定するために検査され得る。
【0079】
[0093]
図11Cは、候補ランドマークの全てに適用された、サンプルセットに基づいて決定された変換を示す。変換は、サンプリングされた候補ランドマークのサブセットを対応するマップ化ランドマークに関連付けるサンプルセットに関して決定され得る。たとえば、変換は、サンプリングされた候補ランドマークと対応するマップ化ランドマークとの間の距離が最小になるように候補ランドマークを移動および回転させ得る。この実施形態例において、サンプリングされた候補ランドマーク1112、1114、および1120は、対応するマップ化ランドマーク1104、1106、および1102との間の全体距離が最小になるように配向された。たとえばiterative closest point(ICP)アルゴリズムなどの最小二乗法が、この位置合わせを実現し得る。任意の同様のアルゴリズムが適宜、サンプリングされた候補ランドマークのサブセットと対応するマップ化ランドマークとを位置合わせし得る。他の変換も可能である。
【0080】
[0094] 変換は、サンプリングされた候補ランドマークのサブセットおよび対応するマップ化ランドマークに基づいて決定され得るが、候補ランドマークの全てに適用されてよい。この例において、変換は、サンプリングされた候補ランドマークに加えて、サンプリングされていない候補ランドマーク1116および1118にも適用される。
【0081】
[0095] 決定された変換が候補ランドマークに適用されると、変換後の候補ランドマークと近隣マップ化ランドマークとの間の距離が決定され得る。変換後の特定の候補ランドマークに対応する近隣マップ化ランドマークは、変換が適用された後の最も近いマップ化ランドマークであってよい。いくつかの例において、各マップ化ランドマークは、変換後の候補ランドマークの1つの近隣マップ化ランドマークとしてのみ機能してよい(たとえば、単一のマップ化ランドマークは、複数の候補ランドマークのインライアとなることはできない)。この例において、マップ化ランドマーク1102は、変換後の候補ランドマーク1120の近隣マップ化ランドマークであり、マップ化ランドマーク1104は、変換後の候補ランドマーク1112の近隣マップ化ランドマークであり、マップ化ランドマーク1106は、変換後の候補ランドマーク1114の近隣マップ化ランドマークである。
【0082】
[0096] 変換は一般に、ロボット1100の可能な姿勢を示してよい。変換後の候補ランドマークと近隣ランドマークとの間の距離は、変換が実行可能な姿勢を表すか否かを示してよい。たとえば、変換に関連するインライアの数が決定され得る。
【0083】
[0097]
図11Dは、実施形態例に係る、変換後の候補ランドマークに関連するインライアの数を示す。インライアの各々は、インライア距離閾値に基づいて決定され得る。インライア距離閾値は、変換後の候補ランドマークがマップ化ランドマークのいずれかと適切に位置合わせされたかを示してよい。この例において、インライア距離閾値は、それぞれ変換後の候補ランドマーク1120、1112、および1114を取り囲む半径領域1130、1132、および1134によって表される。近隣マップ化ランドマークから距離閾値内にある任意の変換後の候補ランドマークは、インライアと考えられ得る。この例において、変換後の候補ランドマーク1112、1114、および1120は、インライアと考えられ得る。候補ランドマーク1116および1118は
図11Dには示されず、これらはインライアと考えられない。また、変換後の候補ランドマークのいずれかのインライア距離閾値内にないマップ化ランドマーク1108も
図11Dに示されない。
【0084】
[0098] 誤検出を含むサンプリングされたサブセットは、ロボットの姿勢を表すのに適切ではない変換をもたらし得る。この例において、候補ランドマーク1112、1114、1116、および1118はそれぞれマップ化ランドマークに対応するが、候補ランドマーク1120は誤検出に対応する。
図11Cおよび
図11Dは、サンプリングされたサブセットが誤検出を含むためにロボットの姿勢を適切に表さない変換の実施形態例を示す。
【0085】
[0099] この例において、5つの変換後の候補ランドマークから3つのインライアが決定される。すなわち、5分の3の候補ランドマークは、変換に基づいて適切に位置合わせされたと考えられ得る。インライアを有する5分の3の候補ランドマークは、実行可能な変換に対応せず、ロボットの実行可能な姿勢を示すものではないことが決定され得る。変換が実行可能ではないという決定に他の要因も寄与してよい。
図11A〜Dにおいて、たとえば、サンプリングされていない候補ランドマークのいずれもインライアに関連しない。決定された変換は、サンプリングされた候補ランドマークと対応するマップ化ランドマークとを最も適切に位置合わせすることが意図されるので、変換後のサンプリングされた候補ランドマークはインライアに関連することが通常であり得る。したがって、サンプリングされていない候補ランドマークがインライアに関連するかが、変換の実行可能性を決定する際により重視され得る。インライアの数が不十分であると決定された例において、他の候補ランドマークおよび対応するマップ化ランドマークがサンプリングされ、他の候補ランドマークが変換され、他の候補ランドマークに関連するインライアの数が決定され得る。
【0086】
[0100]
図12A、
図12B、
図12C、および
図12Dは、実施形態例に係る、候補ランドマークおよび対応するマップ化ランドマークの別のサンプルセットに関連するインライアの決定を示す。
図12Aは、
図11Aに示すものと同じ、ロボットのマップ化環境を示す。同様に、
図12Bは、
図12Bに示すものと同じ検出を行ったロボットを示す。ただし、
図12Aおよび
図12Bは、異なるサンプルセットを示す。この例において、候補ランドマーク1214、1216、および1218、および対応するマップ化ランドマーク1204、1206、および1208がサンプリングされる。
図12Cは、候補ランドマークの全てに適用された、サンプルセットから決定された変換を示す。この例において、変換は、サンプリングされた候補ランドマーク1214、1216、および1218、および対応するマップ化ランドマーク1204、1206、および1208に基づいて決定される。変換は、サンプリングされていないランドマーク1212および1220にも適用される。
図12Dは、マップランドマークと位置合わせされた変換後の候補ランドマークに関連するインライアの数を示す。サンプリングされた候補ランドマーク1214、1216、および1218は、サンプリングされた候補ランドマークの半径領域1234、1236、および1238内にある近隣マップ化ランドマーク1204、1206、および1208に対応するので、インライアである。サンプリングされていない候補ランドマーク1212もまた、近隣マップ化ランドマーク1202が候補ランドマーク1212の半径距離1232内にあるので、インライアである。
【0087】
[0101]
図12Dは、5つの候補ランドマークのうち4つのインライアを含む実施形態例を示す。5つの候補ランドマークのうちインライアを有する4つは、実行可能な変換に対応し、ロボットの実行可能な姿勢を示すことが決定され得る。この決定は、合計4つのサンプリングされた近隣ランドマーク1202、1204、1206、および1208が存在するという理由からなされ得る。したがって、この例における4つのインライアの決定は、候補ランドマークを各々の関連マップ化ランドマークと適切に位置合わせする変換を示す。変換が実行可能であるという決定に、他の要因も寄与してよい。
図12Dにおいて、たとえば、サンプリングされていない候補ランドマークの1つがインライアに関連する。
図12A〜12Dに示すように、1または複数の誤検出に由来する変換は、サンプリングされていない候補ランドマークに関連するインライアを考慮する可能性が低いので、サンプリングされていない候補ランドマークがインライアに関連することは有意であり得る。
【0088】
[0102]
図12A〜12Dは、マップ化ランドマークに対応する候補ランドマークのみを含むサンプリングされたサブセットが、ロボットの姿勢を適切に表す変換をもたらし得ることを示す。
図12A〜12Dは、任意のマップ化ランドマークから遠い誤検出がどのように変換の不適切性を示し得るかを示したが、いくつかの例は、マップ化ランドマークに近い誤検出を含んでよい。
【0089】
[0103]
図13A、
図13B、
図13C、および
図13Dは、実施形態例に係る、候補ランドマークおよび対応するマップ化ランドマークのまた別のサンプルセットに関連するインライアの決定を示す。
図13Aは、
図11Aおよび
図12Aに示すものと同じロボットのマップ化環境を示す。ただし
図13Bは、2つの追加の検出(候補ランドマーク1320および1322)を行い、検出(
図11B/
図12Bの候補ランドマーク1120/1220)を損失したロボットを示す。この例は、ロボット1300が環境内の自身の位置および向きを変えると、追加の誤検出を検出し得ることを示す。たとえば、候補ランドマーク1312、1314、1316、および1318は、それぞれマップ化ランドマーク1302、1304、1306、および1308に対応してよく、候補ランドマーク1320および1322は、誤検出に対応してよい。これは、ロボットの様々な位置および向き(
図11B/
図12Bの1100/1200)において1つの誤検出(
図11B/
図12Bの候補ランドマーク1120/1220)のみを含んだ
図11A〜Dおよび
図12A〜Dに示す例とは対照的である。
【0090】
[0104]
図13Cは、候補ランドマークの全てに適用された、サンプルセットから決定された変換を示す。この例において、サンプルセットは、候補ランドマーク1314、1322、および1316、および対応するマップ化ランドマーク1304、1306、および1308を含む。
図13Dは、変換が4つのインライアをもたらすことを示す。具体的には、近隣マップ化ランドマークが半径領域1334、1342、および1336内に含まれるように、サンプリングされた候補ランドマーク1314、1322、および1316はそれぞれ近隣マップ化ランドマーク1304、1306、および1308と位置合わせされる。また、サンプリングされていない候補ランドマーク1312は、近隣マップ化ランドマーク1302が半径領域1332内に含まれるように、近隣マップ化ランドマーク1302と位置合わせされる。したがって、
図13Dは、サンプリングされた候補ランドマークのサブセットが、誤検出(たとえば候補ランドマーク1322)を含むにも関わらず、一見すると実行可能な変換をもたらし得る。
図13C〜Dは、誤検出を用いる変換が、わずかにシフトされたロボットの姿勢推定を示し得ることも示す。不正確な姿勢推定は、ロボットに環境内を非効率的に通行させ得る。
【0091】
[0105]
図13A〜Dに示されるようなシナリオの悪影響を緩和するために、いくつかの測定が行われ得る。たとえば、インライア距離閾値が低減され得る。この場合、マップ化ランドマークに近い誤検出であっても、誤検出を含まないサンプリングされたサブセットと同じ数のインライアを生成することはない。また、誤検出がそのような変換をもたらす場合でも、姿勢は、たとえば
図13Cに示すシフトよりも低い程度にシフトされる。この例において、インライア距離閾値は、変換後の候補ランドマーク1312がインライアを生成しないように低減され得る。しかしながら、インライア距離閾値の低減はなお、誤検出によって生じるシフトされた姿勢推定を可能にし得る。
【0092】
[0106] また、誤検出を含むサンプルセットは実行可能な変換をもたらし得るが、サンプルセットは必ずしも、ロボットの姿勢を推定するために選択されるわけではない。他のより適したサンプリングされたサブセットが代わりに選択されてよい。たとえば、2つ以上のサンプルセットが同じ数のインライアを生成する場合、マップ化ランドマークとの最小正味距離を有する変換後のサンプルセットが選択され得る。たとえば、候補ランドマーク/マップ化ランドマークペア1212/1202、1214/1204、1216/1206、および1218/1208間の距離は、1312/1302、1314/1304、1322/1306、および1316/1308間の距離よりも小さいので、
図12Dに示す変換は、
図13Dに示す変換よりも好適であってよい。追加の例において、同数のインライアを生成するサンプルセットは、互いに反復的に比較され得る。インライア距離閾値は、1つのサンプルセットが他よりも多い数のインライアを有するまで、反復ごとに減少し得る。
【0093】
[0107] サンプルセットが選択されると、サンプルセットに基づいてロボットの姿勢推定が決定され得る。いくつかの例において、サンプルセットに関して既に決定された変換は、推定ロボット姿勢を決定するために直接適用され得る。他の例において、選択されたサンプルセットに関連する全てのインライアを用いて、精緻化変換が決定され得る。精緻化変換はその後、より正確なロボット姿勢推定を生成するために適用され得る。姿勢推定の他の例も可能である。
【0094】
[0108] いくつかの例は、サンプリングされたサブセットに関連する姿勢推定信頼度を決定することも含んでよい。姿勢推定信頼度は一般に、候補ランドマークの総数との比較における、サンプリングされたサブセットに関連して決定されたインライアの数に関する。たとえば姿勢推定信頼度は、候補ランドマークの総数に対する決定されたインライアの数の比に基づいてよい。この例において、1に近い比は、正確な姿勢推定の可能性が高いことを示す。対照的に、0に近い比は、正確な姿勢推定の可能性が低いことを示す。
【0095】
[0109] いくつかの例において、姿勢推定信頼度は、精緻化姿勢推定を決定する際に考慮され得る。たとえば、高い姿勢推定信頼度を有する選択されサンプリングされたサブセットは、精緻化姿勢推定への一次寄与因子であってよい。低い姿勢推定信頼度を有する選択されサンプリングされたサブセットは、精緻化姿勢推定への二次寄与因子であってよい。たとえば、精緻化姿勢推定は、選択されたサンプルセットよりも車輪オドメトリに大きく由来し得る。このように、姿勢推定の完了は、カルマンフィルタリングを想起させ得る。
【0096】
[0110] 他の例は、サンプリングされたサブセットに関連する姿勢推定の精度を決定することを含んでよい。精度は、ロボットの過去の姿勢推定に関する統計情報に基づいてよい。たとえば、各マップ化ランドマークについて共分散行列が決定され得る。共分散行列は、過去の姿勢推定の位置および向きを含んでよい。共分散行列と良好にマッチしない姿勢推定は、共分散行列に適合する姿勢推定のように正確ではない可能性がある。たとえば、
図13A〜13Dにおけるサンプルセットに基づく姿勢推定は、
図12A〜12Dのサンプルセットから導出された姿勢推定がマップ化ランドマーク1206に適合するようにマップ化ランドマーク1306に関する共分散行列に適合しない。これは、ロボット1300の姿勢は、姿勢推定をシフトさせ得る2つの誤検出(候補ランドマーク1320および1322)を含むが、ロボット1200は1つの誤検出(候補ランドマーク1220)しか含まないことに起因し得る。いくつかの例において、両方のサンプルセットが同じ数のインライアを生成する場合でも、他方よりも正確であるとみなされるサンプルセットが選択され得る。追加の例において、姿勢推定は、姿勢推定信頼度に関して説明したものとほぼ同じ方法で決定された姿勢推定の精度に基づいて精緻化され得る。
【0097】
[0111]
図14は、実施形態例に係る、ロボットの環境内でのロボットの姿勢を推定するために用いられ得る方法のブロック図である。いくつかの例において、方法は、システムの一部として実行され得る。たとえばブロック1400は、非一時的コンピュータ可読媒体に格納されたプログラム命令を実行する1または複数のプロセッサとともにロボットの1または複数のセンサによって実行され得る。例において、ロボットの1または複数のセンサは、複数の候補ランドマークからの信号を受信してよく、実行されるプログラム命令は、受信信号に基づいてロボットに関連する候補ランドマークの位置を決定してよい。1または複数のプロセッサは、ブロック1402、1404、1406、1408、および1410に含まれる機能を実行するためにもプログラム命令を実行してよい。
【0098】
[0112] 他の例において、方法は、コンピューティングシステムの一部として実行され得る。これらの例において、非一時的コンピュータ可読媒体は、コンピューティングシステムに方法のブロックを実行させるために1または複数のプロセッサによって実行可能な命令を格納してよい。
【0099】
[0113] これらの例において、1または複数のプロセッサおよび非一時的コンピュータ可読媒体は、ブロックを遠隔に実行してよい。他の例において、1または複数のプロセッサおよび非一時的コンピュータ可読媒体は、ロボットにおいて方法を実行してよい。また他の例において、方法の一部は遠隔的に実行され、他の部分はロボットにおいて実行され得る。
【0100】
[0114] 方法のブロック1400は、ロボット上の少なくとも1つのセンサからのセンサデータに基づいてロボットに関連する複数の候補ランドマークの位置を決定するために実行され得る。たとえば、ロボットの1または複数のセンサは信号を受信してよい。信号は、ロボットの環境内のランドマークまたは環境内の他の物体から発され得る。ランドマークおよび物体の位置が決定され得る。各検出は、候補ランドマークとして扱われ得る。
【0101】
[0115] 方法のブロック1402は、複数のサンプルセットを決定するために実行されてよく、各サンプルセットは、複数の候補ランドマークおよび複数の対応するマップ化ランドマークのサブセットを備える。たとえば、複数のサンプルセットを決定することは、ロボットに関連する複数の候補ランドマークの位置に基づいて、複数の候補ランドマークから各サンプルセットについて3つの候補ランドマークを選択することを備えてよい。またサンプルセットは、3つの対応するマップ化ランドマークも含んでよい。
【0102】
[0116] 他の例において、複数のサンプルセットを決定することは、ロボットの初期姿勢推定に基づいて、対応するマップ化ランドマークから対応閾値内にある候補ランドマークを識別することを備えてよく、各サンプルセットは、識別された候補ランドマークおよび対応するマップ化ランドマークのサブセットを備える。たとえば、初期姿勢推定(x1,y1)および向きα1を有するロボットは、ロボットに関連する位置にある候補ランドマークを検出してよい。ロボットは、オドメトリデータも有してよい。ロボットの概略姿勢は、初期姿勢推定およびオドメトリデータに基づいて推測され得る。それに応じて、環境内の候補ランドマークの位置が推測され得る。環境のマップは、候補ランドマークの推測位置から対応閾値内にあるマップ化ランドマークを決定するために検索され得る。候補ランドマークおよび対応閾値内のマップ化ランドマークは、対応ペアを成してよい。サンプルセットは、対応ペアから決定され得る。
【0103】
[0117] 方法のブロック1404は、サブセット内の候補ランドマークを対応マップ化ランドマークに関連付ける変換を各サンプルセットについて決定するために実行され得る。変換は、サンプルセットのサンプリングされた候補ランドマークを対応するマップ化ランドマークと位置合わせするために、たとえばICPアルゴリズムなどの最小二乗平均アルゴリズムを用いてよい。
【0104】
[0118] 方法のブロック1406は、各サンプルセットのための変換を複数の候補ランドマークに適用し、変換後の複数の候補ランドマークと複数の近隣マップ化ランドマークとの間の距離に基づいて、各サンプルセットに関連するインライアの数を決定するために実行され得る。変換後の複数の候補ランドマークと近隣マップ化ランドマークとの間の距離が決定され得る。インライア距離閾値内に近隣マップ化ランドマークを有する変換後の候補ランドマークは、インライアと考えられ得る。
【0105】
[0119] 方法のブロック1408は、各サンプルセットに関連するインライアの数に基づいて複数のサンプルセットからサンプルセットを選択するために実行され得る。複数のサンプルセットのうち、最大数のインライアを有するサンプルセットが選択され得る。他の例において、複数のサンプルセットのうち、予め定められた数のインライアを生成する第1のサンプルセットが選択され得る。
【0106】
[0120] 方法のブロック1410は、選択されたサンプルセットに基づいてロボットの姿勢を推定するために実行され得る。姿勢は、選択されたサンプルセットのために決定された変換を用いて推定され得る。他の例において、選択されたサンプルセットに関連する全てのインライアに基づく精緻化変換が、より高い精度のために用いられ得る。
【0107】
[0121]
図15は、実施形態例に係る、ロボットの環境内でのロボットの姿勢を推定するために用いられ得る他の方法のブロック図である。
図15に示される方法もまた、
図14に関して上述したものとほぼ同じ方法でシステムまたはコンピュータシステムによって実行され得る。
【0108】
[0122] 方法のブロック1500は、ロボット上の少なくとも1つのセンサからのセンサデータに基づいてロボットに関連する複数の候補ランドマークの位置を決定するために実行され得る。
【0109】
[0123] 方法のブロック1502は、複数のサンプルセットを決定するために実行されてよく、各サンプルセットは、複数の候補ランドマークおよび複数の対応するマップ化ランドマークのサブセットを備える。
【0110】
[0124] 方法のブロック1504は、複数のサンプルセットからサンプルセットを選択するために実行され得る。複数のサンプルセットからのサンプルセットの選択は、複数のサンプルセットの順序に基づいてよい。たとえばブロック1504において、方法は、ブロック1502によって決定されたのと同様に各サンプルセットを選択してよい。
【0111】
[0125] 方法のブロック1506は、サブセット内の候補ランドマークを対応するマップ化ランドマークに関連付ける変換を選択されたサンプルセットに関して決定するために実行され得る。変換は、サンプルセットのサンプリングされた候補ランドマークを対応するマップ化ランドマークと位置合わせするために、たとえばICPアルゴリズムなどの最小二乗平均アルゴリズムを用いてよい。
【0112】
[0126] 方法のブロック1508は、選択されたサンプルセットのための変換を複数の候補ランドマークに適用し、変換後の複数の候補ランドマークと複数の近隣マップ化ランドマークとの間の距離に基づいて、選択されたサンプルセットに関連するインライアの数を決定するために実行され得る。
【0113】
[0127] 方法のブロック1510は、選択されたサンプルセットに関連するインライアの数とインライア閾値とを比較するために実行され得る。たとえば、インライア閾値は予め定められた数であってよく、ブロック1504の選択されたサンプルセットに関連するインライアの数が閾値と比較され得る。他の例において、インライア閾値は予め定められた百分率であってよく、候補ランドマークの総数に対する、ブロック1504の選択されたサンプルセットに関連するインライアの百分率が、閾値百分率と比較され得る。ブロック1510は、その方法における三項演算子の機能を果たし得る。たとえば、閾値が満たされたことの決定は、1つの結果を有してよく、閾値が満たされないことの決定は、他の結果を有してよい。
【0114】
[0128] 方法のブロック1512は、インライアの数がインライア閾値を満たさないまたは超えない場合のブロック1510の結果を表す。その結果、ブロック1504が実行され、異なるサンプルセットが選択される。したがって方法は、サンプルセットの1つが、インライア閾値を満たすまたは超える数のインライアを有することが決定されるまで、サンプルセットの各々についてインライアの数を連続的に決定することを含む。
【0115】
[0129] 方法のブロック1514は、インライアの数がインライア閾値を満たすまたは超える場合のブロック1510の結果を表す。その結果、ブロック1516が実行される。
【0116】
[0130] 方法のブロック1516は、上述したものとほぼ同じ方法で選択されたサンプルセットに基づいてロボットの姿勢を推定するために実行され得る。
【0117】
[0131] 本開示は、様々な態様の例示として意図される、本出願において説明された特定の実施形態に関して限定されるものではない。当業者には明らかであるように、本開示の主旨および範囲から逸脱することなく多数の修正例および変形例が生み出され得る。本開示の範囲内である機能的に同等の方法および装置は、本明細書に列挙されたものに加えて、上記説明から当業者には明らかである。そのような修正例および変形例は、添付のクレームの範囲内に含まれることが意図される。
【0118】
[0132] 上述した説明は、添付図面を参照して開示されたシステム、デバイス、および方法の様々な特徴および機能を説明するものである。図面において、類似の記号は一般に、文脈が特に指示しない限り、類似の構成要素を識別する。本明細書および図面において説明された実施形態例は、限定的であることが意図されない。本明細書に提示された主題事項の主旨または範囲から逸脱することなく、他の実施形態が利用され、他の変更例が生み出されてよい。本掲示の態様は、本明細書で一般に説明され、図面に示されるように、異なる様々な構成で配置、代替、結合、分離、および設計されてよく、それら全てが本明細書において明確に考慮されることが容易に理解される。
【0119】
[0133] 情報の処理を表すブロックは、本明細書で説明された方法または技術の特定の論理機能を実行するように構成され得る回路に対応してよい。代替または追加として、情報の処理を表すブロックは、モジュール、セグメント、または(関連データを含む)プログラムコードの一部に対応してもよい。プログラムコードは、方法または技術における特定の論理機能または行動を実行するためにプロセッサによって実行可能な1または複数の命令を含んでよい。プログラムコードおよび/または関連データは、たとえばディスクまたはハードドライブを含むストレージデバイスまたは他の記憶媒体など任意の種類のコンピュータ可読媒体に格納され得る。
【0120】
[0134] コンピュータ可読媒体は、たとえばレジスタメモリ、プロセッサキャッシュ、およびランダムアクセスメモリ(RAM)といった短期間データを格納するコンピュータ可読媒体などの非一時的コンピュータ可読媒体も含んでよい。コンピュータ可読媒体は、たとえば読取専用メモリ(ROM)、光または磁気ディスク、コンパクトディスク読取専用メモリ(CD‐ROM)といった二次または持続性長期間ストレージなど、より長い期間プログラムコードおよび/またはデータを格納する非一時的コンピュータ可読媒体も含んでよい。コンピュータ可読媒体は、他の任意の揮発性または不揮発性ストレージシステムであってもよい。コンピュータ可読媒体は、たとえばコンピュータ可読記憶媒体、または有形ストレージデバイスと考えられ得る。
【0121】
[0135] また、1または複数の情報伝送を表すブロックは、同じ物理デバイス内のソフトウェアおよび/またはハードウェアモジュール間の情報伝送に対応してよい。ただし、他の情報伝送は、様々な物理デバイスにおけるソフトウェアモジュールおよび/またはハードウェアモジュール間であってよい。
【0122】
[0136] 図に示す特定の配置は、限定的なものとみなされてはならない。他の実施形態は、所与の図に示される各要素より多いまたは少ない要素を含んでよいことを理解すべきである。また、図示された要素のいくつかは、結合され、または省かれ得る。更に、実施形態例は、図に示されない要素を含んでよい。
【0123】
[0137] 様々な態様および実施形態が本明細書に開示されたが、他の態様および実施形態が当業者には明らかである。本明細書に開示された様々な態様および実施形態は例示を目的としており、限定的であることは意図されず、適正な範囲は、以下のクレームによって示される。