(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-05-12
(45)【発行日】2023-05-22
(54)【発明の名称】ロボットの運動計画
(51)【国際特許分類】
G05D 1/02 20200101AFI20230515BHJP
【FI】
G05D1/02 P
(21)【出願番号】P 2021561732
(86)(22)【出願日】2020-04-23
(86)【国際出願番号】 US2020029600
(87)【国際公開番号】W WO2020219734
(87)【国際公開日】2020-10-29
【審査請求日】2021-12-13
(32)【優先日】2019-04-24
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】521430508
【氏名又は名称】イントリンジック イノベーション エルエルシー
(74)【代理人】
【識別番号】100079108
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100126480
【氏名又は名称】佐藤 睦
(72)【発明者】
【氏名】デュピュイ,ジャン-フランソワ
(72)【発明者】
【氏名】ゴー,キーガン
(72)【発明者】
【氏名】バンダリ,マリアム
【審査官】牧 初
(56)【参考文献】
【文献】特開2010-061442(JP,A)
【文献】特開2006-133863(JP,A)
【文献】特開2019-016306(JP,A)
【文献】特開2017-112962(JP,A)
【文献】特開2008-052669(JP,A)
【文献】特許第6443905(JP,B1)
【文献】特開2019-020760(JP,A)
【文献】特開2005-032196(JP,A)
【文献】特開平11-249734(JP,A)
【文献】特開2018-089736(JP,A)
【文献】米国特許出願公開第2003/0014165(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G05D 1/00-1/12
(57)【特許請求の範囲】
【請求項1】
コンピュータ実装方法であって、
複数のロボットの各々の移動の候補経路を決定することと、
前記複数のロボットの各々に関して、前記ロボットがその候補経路に沿って通り抜けるであろう
行程体積を含む行程領域を決定することと、
前記複数のロボットの前記行程領域のうちの少なくともいくつかを集約して、異なる位置の前記行程領域間のオーバーラップ量を決定することと、
前記行程領域の決定されたオーバーラップ量に基づいて、複数の異なる空間領域を特定することであって、前記特定された空間領域の少なくともいくつかは、それぞれ異なる量の行程体積が重なる領域である、前記空間領域を特定すること、
前記
それぞれの空間領域から
離れる方向に向けられた力ベクトルを
、前記決定されたオーバーラップ量に基づいて特定された前記空間領域に割り当てることであって、
それぞれの空間領域に関する前記力ベクトルは、
前記空間領域においてオーバーラップする前記行程体積の量に基づいて割り当てられた異なる大きさを有する、
前記それぞれの空間領域から離れる方向に向けられた力ベクトルを割り当てることと、
前記
決定された空間領域および
前記空間領域に前記割り当てられた力の大きさに基づいて、特定のロボットが走行するための経路を決定することと、を含む、コンピュータ実装方法。
【請求項2】
前記複数のロボットの前記行程領域を集約することは、前記複数のロボットの各々の前記行程領域の異なる集約を決定することを含み、各ロボットの前記集約は、他のロボットの各々の前記行程領域の集約であり、
前記
それぞれの空間領域から
離れる方向に向けられた力ベクトルを割り当てることは、前記複数のロボットの各々の力ベクトルの異なるセットを割り当てることを含み、各ロボットの力ベクトルの前記セットは、前記他のロボットの各々の前記行程領域の前記集約に基づいて決定される、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記行程領域の集約に基づいて、前記複数のロボットの各々の前記候補経路を更新することと、
前記更新された候補経路に基づいて、前記複数のロボットの更新された行程領域を決定することと、
前記更新された行程領域を集約し、前記更新された行程領域から
離れる方向に向けられた更新された力ベクトルを割り当てることと、
前記更新された行程領域および前記更新された力ベクトルに基づいて、前記特定のロボットが走行するための更新された経路を決定することと、をさらに含む、請求項1
または2に記載のコンピュータ実装方法。
【請求項4】
前記特定のロボットのための開始位置および目的地位置を決定することと、
前記開始位置と前記目的地位置との間の経路セグメントを定義することと、
前記経路セグメントの近接内で見つかった物体を決定することと、
前記物体の特性に基づいて、前記物体に対応する力ベクトルを生成することと、をさらに含み、
前記特定のロボットが走行するための経路を決定することは、
前記物体に対応する前記力ベクトルおよび前記行程領域から
離れる方向に向けられた前記力ベクトルに基づいて前記経路セグメントを変更することを含み、前記経路セグメントの変更の程度は、前記経路セグメントに設定された弾力性の尺度に依存し、前記弾力性の尺度は、前記力ベクトルに応じて前記経路セグメントが引き伸ばされる程度を定義する、請求項1~
3のいずれか一項に記載のコンピュータ実装方法。
【請求項5】
静止物体が占める領域を決定することと、
前記静止物体が占める前記領域から
離れる方向に向けられた力ベクトルを割り当てることと、を含み、
前記特定のロボットが走行するための前記経路は、前記静止物体が占める前記領域から
離れる方向に向けられた前記力ベクトルにさらに基づく、請求項1~
4のいずれか一項に記載のコンピュータ実装方法。
【請求項6】
非ロボット物体の移動経路の行程領域を決定することを含み、
前記行程領域のうちの少なくともいくつかを集約することは、前記複数のロボットの前記行程領域のうちの少なくともいくつかを、前記非ロボット物体の前記行程領域と集約することを含む、請求項1~
5のいずれか一項に記載のコンピュータ実装方法。
【請求項7】
前記特定のロボットが走行するための前記経路を決定することは、前記力ベクトルに基づいて、前記特定のロボットが前記決定された経路を走行するときに前記特定のロボットによって実行される、前記特定のロボットの姿勢または形状の調整を決定することを含む、請求項1~
6のいずれか一項に記載のコンピュータ実装方法。
【請求項8】
前記力ベクトルが三次元であり、前記行程領域が三次元体積である、請求項1~
7のいずれか一項に記載のコンピュータ実装方法。
【請求項9】
前記行程領域および前記割り当てられた力の大きさに基づいて、前記特定のロボットが走行するための前記経路を決定することは、
前記特定のロボットの特性に基づいて前記特定のロボットのための前記経路の一部を制約することをさらに含み、前記特定のロボットの前記特性は、前記特定のロボットの制限速度、前記特定のロボットのサイズ、前記特定のロボットの関節角度限界、または前記特定のロボットのアームが届く長さを含む、請求項1~
8のいずれか一項に記載のコンピュータ実装方法。
【請求項10】
前記複数のロボットの前記候補経路の各々を複数の経路セグメントに分割することであって、前記候補経路の各々に関して、前記複数の経路セグメントの各々は、一連の期間における異なる期間にわたる移動に対応し、前記一連の期間は、少なくとも第1の期間およびそれに続く第2の期間を含む、分割することと、
前記一連の期間中の同じ期間に対応する経路セグメントの行程体積を順次評価することにより、前記複数のロボットの調整された経路を決定することと、をさらに含み、前記決定することは、
前記第1の期間に対応する前記経路セグメントの行程体積に基づいて、前記第1の期間に対応する前記経路セグメントを調整すること、および
前記第1の期間に対応する前記経路セグメントを調整した後、前記第2の期間に対応する前記経路セグメントの行程体積に基づいて、前記第2の期間に対応する前記経路セグメントを調整することを含む、請求項1~
9のいずれか一項に記載のコンピュータ実装方法。
【請求項11】
前記行程領域がボクセルを含み、前記力ベクトルが前記行程領域の前記個々のボクセルのうちの少なくともいくつかの各々から
離れる方向に向けられる、請求項1~
10のいずれか一項に記載のコンピュータ実装方法。
【請求項12】
前記行程領域および前記割り当てられた力の大きさに基づいて、特定のロボットが走行するための経路を決定することは、
前記特定のロボットの特定の候補経路を弾力的に引き伸ばすことによって更新された経路を決定することを含み、前記更新された経路は、前記力ベクトルに応じて曲がりながら、前記特定の候補経路と同じ開始位置および終了位置を維持し、前記特定の候補経路は、前記複数のロボットの前記行程領域を回避するように前記力ベクトルに基づいて引き伸ばされ、前記特定の候補経路が引き伸ばされる量は、前記更新された経路が前記特定の候補経路から逸脱すればするほど力の単位に応じた変化量が減少するように非線形に変化する、請求項1~
11のいずれか一項に記載のコンピュータ実装方法。
【請求項13】
システムであって、
1つ以上のコンピュータと、
前記1つ以上のコンピュータによって実行されたとき、前記1つ以上のコンピュータに請求項1~
12のいずれか一項に記載の方法の動作を実行させる命令を格納している、1つ以上のコンピュータ可読媒体と、を含む、システム。
【請求項14】
1つ以上のコンピュータによって実行されたとき、前記1つ以上のコンピュータに請求項1~
12のいずれか一項に記載の方法の動作を実行させる命令を格納している、1つ以上の非一時的なコンピュータ可読媒体。
【発明の詳細な説明】
【背景技術】
【0001】
本明細書は、概してロボットの運動計画に関する。
【0002】
ロボットシステムは、製造工場、病院、および小売店など、様々な環境で使用されている。タスクを遂行するために、ロボットはしばしば場所から場所へ移動する必要がある。ロボットおよび関連システムは、多くの場合、タスクを遂行するためにロボットが移動するルートを計画できる必要がある。
【発明の概要】
【0003】
いくつかの実装態様では、システムは、経路計画技術を使用して、ロボットの計画された運動経路、例えば、経路に沿って見られる障害物(例えば、静止および動的)を回避する経路を決定することができる。システムは、以下でさらに説明するように、弾力的な経路計画技術を使用して、障害物を考慮するための候補経路を形作ることができる。システムは、他のロボットの経路との対立を回避または制限する経路を計画するために、他のロボットの計画または提案された運動経路を考慮に入れることができる。例えば、第1のロボットの経路を計画するとき、システムは、第2のロボットの計画された運動経路の行程領域を決定することができる。行程領域は、例えば、第2のロボットがその計画経路に沿って移動している間に、第2のロボットが任意の時点で占めるであろう総面積または総体積を表してもよい。追加のロボットが近傍を通って移動する予定の場合、システムはそれらの各経路の行程領域を決定し、複数のロボットの行程領域を集約できる。この情報を使用して、システムは、近くで動作する他のロボットの集約された行程領域情報によって示される様々なレベルの交通量に基づいて、第1のロボットの経路を生成または調整できる。例えば、弾力的な経路計画技術を使用すると、複数のロボットの経路がオーバーラップする交通量の多い領域を、第1のロボットの経路を強く遠ざける力ベクトルで表すことができる。また、少なくとも1台のロボットが移動するように計画されている交通量の少ない領域は、第1のロボットの経路にあまり影響を与えない力ベクトルで表すことができる。このように、弾力的な経路計画プロセスは、交通量の多い領域および交通量の少ない領域のそれぞれの強さに基づいて力ベクトルの周りを操ることによって、交通量の多い領域および交通量の少ない領域を回避する経路を計画することができる。
【0004】
一般に、弾力的な経路計画を使用して、開始点から目的地まで延びる移動の候補経路を改善することができる。計画経路を決定するために、システムは最初に、移動を制約する障害物を特定できる。次に、力ベクトルを、特定された障害物の各々に関連付けることができる。引力または斥力とすることができる力ベクトルは、障害物または物体の寸法、他の障害物までの警告距離、および障害物の他のパラメータなど、障害物または物体に関連する特性に基づいて決定できる。システムが、生成された力ベクトルを経路に適用することにより、システムは、力ベクトルの大きさおよび方向に応じて経路を例えば引き伸ばしたり変形したりするなど、弾力的に経路を曲げることができる。力ベクトルは静止および移動可能な障害物によって提示される制約を表すため、これらのベクトルに基づいて経路を曲げることで、これらの障害物を回避できる。システムは、障害物によって加えられる力ベクトルの様々な大きさおよび分散に基づいて、計画経路を修正できる。
【0005】
いくつかの実装態様では、システムは、経路が一連の所定の基準を満たしているとシステムが判断すると、計画経路が十分に最適化されていると判断する。一連の所定の基準には、システムが初期経路に基づいて開始先と終了先との間を移動することを保証しながら、力ベクトルに応答するためのルールへの準拠を含めることができる。さらに、一連の所定の基準には、例えば、衝突を回避するためにロボットと障害物との間の少なくとも最小距離を維持するための要件を含めることができる。ユーザ定義の基準など、他の基準を使用してもよい。
【0006】
いくつかの実装態様では、システムは、弾力的な経路計画技術を使用して、ロボットの複数の潜在的な運動経路を生成することができる。システムは、1つ以上の経路が所定の基準のセットを満たしていると判断することに基づいて、様々な経路から選択できる。この技術により、ロボットが安全な距離で障害物を回避しながら、元の経路の目的地に正常に到達できるように保証する選択経路をもたらすことができる。システムは、例えば、あるロボットの変更された経路が、その時同じ領域で作動する別のロボットの経路を変更する必要性が生じる可能性がある面を考慮するために、経路調整プロセスを反復して実行してもよい。
【0007】
いくつかの実装態様では、システムは、経路計画中に、環境内の他のロボットの予測または計画された運動を考慮することができる。他のロボットの計画された運動は、ロボットに計画されている経路に干渉したり、影響を与えたりする可能性がある。システムは、他のロボットの予測または計画された運動に基づいて力ベクトルを生成できるため、他のロボットの経路を回避すべき障害物として扱う。システムは、ロボットがそれらのそれぞれの経路に沿って通過するであろう領域の合計を表す行程面積または行程体積に基づいて、力ベクトルの大きさおよび方向を決定できる。力ベクトルを使用して、システムは他のロボットの将来の運動が発生する領域を回避する経路を決定できる。このように計画された経路を使用することで、ロボットは他のロボットに干渉することなく、計画経路に沿って移動することができる。
【0008】
いくつかの実装態様では、システムは、複数の障害物を考慮するために、経路計画中に力ベクトルの合計を適用することができる。システムは、同じ空間領域に作用する力ベクトルを合計して、合力ベクトルを生成できる。システムは、複数の障害物によって加えられる力を考慮するために、合力ベクトルを使用して計画経路を決定できる。
【0009】
経路計画プロセスでは、経路計画中に様々な障害物(例えば、動的障害物および静的障害物)の特性を考慮に入れることができる。ロボットは、最初に環境を分析し、潜在的な障害物を表し得る物体の位置を決定し、かつ/または潜在的な動的障害物を表す物体の予測された移動を決定することができる。ロボットは、障害物情報および経路情報をサーバシステムに提供できる。サーバシステムは、障害物の特性に基づいて計算された力ベクトルに基づいて、初期経路を弾力的に形作るなどすることによって、ロボットがその目的地に到達するための経路を計画することができる。例えば、経路は、複数の静止および/または移動可能な物体からの力ベクトルの組み合わせに基づいて引き伸ばすことができる。このプロセスでは、サーバシステムは、望ましい経路に干渉する可能性のある他のロボットの将来の移動の領域を表す行程領域を決定することもできる。行程領域に基づいて、サーバシステムはロボットの経路を形作る力ベクトルを決定できる。
【0010】
経路計画プロセスを使用して、例えば、目的地へのロボットの移動など、ロボット全体の移動を表す経路を決定することができる。あるいは、計画された経路は、アームまたは道具などのロボットの一部の並進および/または回転など、ロボットの一部のみの移動を指定してもよい。サーバシステムは、ロボットが経路に沿って走行できるように、ロボットへ最終経路を表すデータを提供でき、これにより、ロボットは障害物を回避して目的地に到達できる。
【0011】
上記のように、経路計画プロセスは、ロボットが一定期間にわたって通過すると予想される合計またはすべての点を表す行程体積を使用して、ロボットの将来の運動を考慮に入れることができる。行程領域は、ロボットの幅、サイズ、潜在的な到達距離など、ロボットの特性に基づいて決定できる。行程領域には、ロボットが走行するときのロボットの形状に関する情報を組み込むこともできる。例えば、ロボットはその構成または姿勢を変更してもよく、(例えば、道具を持ち上げたり、アームを上げたり下げたりすることによって)、行程領域は、それらの異なる構成を有するロボットの形状または輪郭に基づいて計算できる。別の例として、行程領域は、ロボットが任意の構成で到達する可能性のあるすべての可能な四肢を表す、ロボットの全可動域を表す全輪郭を示してもよい。
【0012】
システムは、複数のロボットの各々に対応する行程領域を集約し、行程領域間でオーバーラップの程度が異なる領域を特定することができる。システムは、行程領域から離れる方向に向けられた力ベクトルを生成でき、力ベクトルの大きさは、オーバーラップが増加したエリアほど大きくなる。例えば、1つ目の大きさの力ベクトルは、1つの行程領域が配置されている領域から放射される可能性があり、2つ目のより大きな大きさの力ベクトルは、2つの行程領域がオーバーラップしている領域から放射される可能性があり、3つ目の、さらに大きな大きさの力ベクトルは、3つの行程領域がオーバーラップしている領域から放射される可能性がある、などとなる。いくつかの実装態様では、大きさは、個々の行程領域の力ベクトルの単純な加法加算とは異なってもよい。例えば、1つ、2つ、および3つの行程領域がオーバーラップするエリアの場合、それぞれの力ベクトルの大きさは、個々の力ベクトルの線形または加法加算の場合の、単純な1:2:3の比率ではなく、1:4:9になり、混雑したエリアからより強く押し出してもよい。大きさは、任意の適切なマッピング、割り当て、または関数に応じて、オーバーラップのレベルが異なるエリアに割り当てられてもよい。異なるオーバーラップ領域から放射される計算された力ベクトルに基づいて、システムは、オーバーラップした領域に対応する力ベクトルの大きさおよび方向に応じて経路セグメントを引き伸ばすことによって、経路を計画することができる。
【0013】
このシステムは、例えば、地面に沿ったロボットの移動など、二次元の経路を計画するのに使用できる。この場合、行程領域は二次元面積を表してもよく、これは、2D空間でその計画または予測された経路に沿って進むロボットまたは他の移動物体の2Dプロファイルを表してもよい。このシステムは、三次元の経路を計画するためにも使用でき、この場合、行程領域は、3D空間を介してロボットの3D形状またはプロファイルを進ませることを表すと決定された行程体積を表してもよい。例えば、地面に沿った移動を計画することに加えて、システムは、ロボットが計画経路に沿って走行するときに、ロボットの垂直方向の高さに沿ってロボットの姿勢、構成、または向きの変更を導く経路を計画できる。3D計画では、力ベクトルは、少なくとも3D空間内の領域から力を上下に向ける構成要素を有してもよい。その結果、計画中に、3D力ベクトルが、特定の高さの障害物の下方または上方にロボットの経路を向けることがある。計画経路は、障害物の上方または下方にクリアランスを作成するようにその構成を調整するよう、ロボットに命令できる。例えば、計画経路は、ロボットが床に沿って移動する方向に加えて、障害物を避けるために、ロボットが経路に沿った異なる点でロボットアームを上下させるための方向、または他の関節もしくは構成の変更を行うためのロボットの方向を含んでもよい。
【0014】
1つの一般的な態様では、方法は、複数のロボットの各々の移動の候補経路を決定することと、複数のロボットの各々に関して、ロボットがその候補経路に沿って通り抜けるであろう行程領域を決定することと、複数のロボットの行程領域のうちの少なくともいくつかを集約して、異なる位置の行程領域間のオーバーラップ量を決定することと、行程領域から外側に向けられた力ベクトルを割り当てることであって、力ベクトルは、異なる位置の行程領域のそれぞれのオーバーラップ量に従って割り当てられた異なる大きさを有する、割り当てることと、行程領域および割り当てられた力の大きさに基づいて、特定のロボットが走行するための経路を決定することと、を含む。
【0015】
この他の実施形態および本開示の他の態様は、コンピュータストレージデバイス上に符号化された、この方法の動作を実行するように構成された対応するシステム、装置、およびコンピュータプログラムを含む。1台以上のコンピュータのシステムは、作動中システムに動作を実行させる、システム上にインストールされたソフトウェア、ファームウェア、ハードウェア、またはそれらの組み合わせによって、そのように構成されることができる。1つ以上のコンピュータプログラムは、データ処理装置によって実行されると、装置に動作を実行させる命令を有する特長によってそのように構成されることができる。
【0016】
上記のおよび他の実施形態は各々、以下の特徴のうちの1つ以上を任意選択的に、単独または組み合わせて含むことができる。例えば、一実施形態は、以下のすべての特徴を組み合わせて含む。
【0017】
いくつかの実装態様では、この方法は、複数のロボットの行程領域を集約することであって、複数のロボットの各々の行程領域の異なる集約を決定することを含む、集約することを含み、各ロボットの集約は、他のロボットの各々の行程領域の集約であることを含む。行程領域から外側に向けられた力ベクトルを割り当てることは、複数のロボットの各々に力ベクトルの異なるセットを割り当てることを含み、各ロボットの力ベクトルのセットは、他のロボットの各々の行程領域の集約に基づいて決定される。
【0018】
いくつかの実装態様では、この方法は、行程領域のうちの少なくともいくつかを集約することであって、特定のロボットを除くすべての複数のロボットの行程領域を集約して、特定のロボットを除くすべての複数のロボットの行程領域の異なるレベルのオーバーラップを有する空間領域を特定することを含む、集約することを含む。力ベクトルを割り当てることは、空間領域から外側への力を表す力ベクトルのセットを割り当てることを含み、セット中の力ベクトルは、特定のロボットを除くすべての複数のロボットの行程領域の異なるレベルのオーバーラップに従って設定された大きさを有する。特定のロボットの経路を決定することは、力ベクトルのセットに従うことによって候補経路を変更することを含む。
【0019】
いくつかの実装態様では、この方法は、行程領域の集約に基づいて、複数のロボットの各々の候補経路を更新することと、更新された候補経路に基づいて、複数のロボットの更新された行程領域を決定することと、更新された行程領域を集約し、更新された行程領域から外側に向けられた更新された力ベクトルを割り当てることと、更新された行程領域および更新された力ベクトルに基づいて、特定のロボットが走行するための更新された経路を決定することと、をさらに含む。
【0020】
いくつかの実装態様では、特定のロボットのための開始位置および目的地位置を決定することと、開始位置と目的地位置との間の経路セグメントを定義することと、経路セグメントの近接内で見つかった物体を決定することと、物体の特性に基づいて、物体に対応する力ベクトルを生成することと、をさらに含む。特定のロボットが走行するための経路を決定することは、物体に対応する力ベクトルおよび行程領域から外側に向けられた力ベクトルに基づいて経路セグメントを変更することを含む。この方法はさらに、経路セグメントの変更の程度は、経路セグメントに設定された弾力性の尺度に依存し、弾力性の尺度は、力ベクトルに応じて経路セグメントが引き伸ばされる程度を定義することを含む。
【0021】
いくつかの実装態様では、この方法は、静止物体が占める領域を決定することと、静止物体が占める領域から外側に向けられた力ベクトルを割り当てることと、を含む。この方法は、特定のロボットが走行するための経路は、静止物体が占める領域から外側に向けられた力ベクトルにさらに基づくことを含む。
【0022】
いくつかの実装態様では、この方法は、非ロボット物体の移動経路の行程領域を決定することを含む。この方法は、行程領域のうちの少なくともいくつかを集約することは、複数のロボットの行程領域のうちの少なくともいくつかを、非ロボット物体の行程領域と集約することを含む、ということを含む。
【0023】
いくつかの実装態様では、特定のロボットが走行するための経路を決定することは、力ベクトルに基づいて、特定のロボットが決定された経路を走行するときに特定のロボットによって実行される、特定のロボットの姿勢または形状の調整を決定することを含む。
【0024】
いくつかの実装態様では、力ベクトルが二次元であり、行程領域が二次元面積である。
【0025】
いくつかの実装態様では、力ベクトルが三次元であり、行程領域が三次元体積である。
【0026】
いくつかの実装態様では、行程領域および割り当てられた力の大きさに基づいて、特定のロボットが走行するための経路を決定することは、特定のロボットの特性に基づいて特定のロボットのための経路の一部を制約することをさらに含む。特定のロボットの特性は、特定のロボットの制限速度、特定のロボットのサイズ、特定のロボットの関節角度限界、または特定のロボットのアームが届く長さを含む。
【0027】
いくつかの実装態様では、この方法は、複数のロボットの候補経路の各々を複数の経路セグメントに分割することをさらに含み、候補経路の各々に関して、複数の経路セグメントの各々は、一連の期間における異なる期間にわたる移動に対応する。一連の期間は、少なくとも第1の期間およびそれに続く第2の期間を含む。この方法は、一連の期間中の同じ期間に対応する経路セグメントの行程体積を順次評価することにより、複数のロボットの調整された経路を決定することをさらに含み、これは、第1の期間に対応する経路セグメントの行程体積に基づいて、第1の期間に対応する経路セグメントを調整すること、および第1の期間に対応する経路セグメントを調整した後、第2の期間に対応する経路セグメントの行程体積に基づいて、第2の期間に対応する経路セグメントを調整することを含む。
【0028】
いくつかの実装態様では、行程領域がボクセルを含み、力ベクトルが行程領域の個々のボクセルのうちの少なくともいくつかの各々から外側に向けられる。
【0029】
いくつかの実装態様では、行程領域および割り当てられた力の大きさに基づいて、特定のロボットが走行するための経路を決定することは、特定のロボットの特定の候補経路を弾力的に引き伸ばすことによって更新された経路を決定することを含み、更新された経路は、力ベクトルに応じて曲がりながら、特定の候補経路と同じ開始位置および終了位置を維持し、特定の候補経路は、複数のロボットの行程領域を回避するように力ベクトルに基づいて引き伸ばされる。特定の候補経路が引き伸ばされる量は、更新された経路が特定の候補経路から逸脱すればするほど力の単位に応じた変化量が減少するように、非線形に変化する。
【0030】
これらの態様の他の実施形態は、コンピュータストレージデバイス上に符号化された、この方法の動作を実行するように構成された対応するシステム、装置、およびコンピュータプログラムを含む。1台以上のコンピュータのシステムは、作動中システムに動作を実行させる、システム上にインストールされたソフトウェア、ファームウェア、ハードウェア、またはそれらの組み合わせによって、そのように構成されることができる。1つ以上のコンピュータプログラムは、データ処理装置によって実行されると、装置に動作を実行させる命令を有する特長によってそのように構成されることができる。
【0031】
本明細書の主題の1つ以上の実施形態の詳細を、添付の図面および以下の説明に記載する。主題の他の特徴、態様、および利点は、明細書、図面、および特許請求の範囲から、明らかになるであろう。
【図面の簡単な説明】
【0032】
【
図1】ロボットの運動計画のためのシステムの一例を示すブロック図である。
【
図2】ロボットおよび関連構成要素の一例を示すブロック図である。
【
図3】ロボットの運動計画をスコアリングするためのシステムの一例を示すブロック図である。
【
図4】ロボットの運動計画の別の例を示すブロック図である。
【
図5】ロボットの運動計画のためのプロセスの一例を示すフロー図である。
【0033】
個々の図面中の同様の符号および名称は、同様の要素を示している。
【発明を実施するための形態】
【0034】
図1は、ロボットの運動計画のためのシステム100の一例を示すブロック図である。システム100は、クライアントデバイス102、サーバシステム104、ネットワーク106、データベース108、およびロボットシステム110を含む。システム100に示す例は、例えば、目的地(「終了」と記されている)に移動するように、ロボットシステム110(以下、ロボット110と称す)の移動を命令するクライアントデバイス102を示している。システム100は、ロボット110が目的地に到達するための経路を計画する。計画経路は、ロボット110全体の走行を含んでもよいし、またはロボット110の一部のみの移動を含んでもよい。計画経路は、障害物の周りで変形するように候補経路を修正することによって決定することができる。例えば、力ベクトルを障害物に関連付けることができ、候補経路を力ベクトルに基づいて弾力的に曲げることができる。
図1の例は、環境内のロボット110のための経路の計画を示している。システム100はまた、環境および/または互いに相互作用する可能性があり、かつ互いに近接して移動する可能性がある複数のロボットの各々の経路を計画するのに使用することができる。
図1は、ステージ(A)から(G)における様々な動作を示しており、これらは、示された順序または別の順序で実行することができる。
【0035】
ロボット工学の多くの適用の中には、互いに近接して作動する複数のロボットの使用が含まれる。例えば、製造現場では、複数のロボットがすべて共有の作業空間でタスクを実行し、例えば、同じ被加工物または組立品の一部を操作する場合がある。この種類の設定では、異なるロボットが衝突を引き起こしたり、または互いに妨害したりして、互いに干渉する可能性があるという重大なリスクがある。適切な計画がなければ、ロボットが、他のロボットが必要なエリアにアクセスするのを妨害することにより、様々なロボットの移動が衝突または遅延による損傷を引き起こす可能性がある。効果的な経路を決定するために、同じ作業空間内の他のロボットに対して計画された将来の運動の経路を考慮して、1つのロボットの経路を計画してもよい。実際には、計画システムは、複雑なタスクを完了させるために複数のロボットの移動を振り付けて、ロボットの経路を事前に計画し、各ロボットが必要に応じて互いに効率的にあちこちに移動できるようにする。この種類の事前計画は、経路が繰り返し使用される予定の場合、例えば、同じ種類の複数の品物を製造する場合に特に役立てることができる。それにもかかわらず、多くのロボットの移動が互いに影響を与える場合、効果的、効率的、かつ安全な経路を計画することは計算上困難になり得る。
【0036】
以下でさらに説明するように、弾力的な経路計画を使用して、他のロボットの将来の移動を考慮する経路を効率的に決定できる。このプロセスは、様々なロボットが一定期間にわたって通過する空間を表す行程領域を決定することにより、効率的に実行できる。これらの行程領域を集約して、行程領域間の異なるレベルのオーバーラップを有する領域を特定できる。次に、特定されたオーバーラップのエリアを含む、組み合わされたこれらの行程領域を使用して、弾力的な経路調整を導くことができ、これは、すべてのロボットの経路を個別に計算するよりもはるかに効率的になり得る。
【0037】
システムはこの技術を使用して、様々なロボットの経路を反復的に決定できる。例えば、5台のロボットの経路が計画されている場合、ロボット1の経路は、ロボット2~5の初期候補経路の合計行程体積に基づいて計画できる。次に、ロボット2の経路は、ロボット1の更新された経路と、ロボット3~5の初期候補経路との合計行程体積に基づいて計画できる。次に、ロボット3の経路は、ロボット1および2の更新された経路と、ロボット4および5の初期候補経路との合計行程体積に基づいて計画できる。このようにして、システムは、近くで作動する予定の他のロボットの最新の計画経路に基づいて、各ロボットの経路を調整および改良し続けることができる。
【0038】
一般に、ロボットとは、少なくとも部分的かつ自律的に、一連の動作を実行できる1つ以上の構成要素を有するプログラム可能な機械を指す。例えば、ロボットは、物体との相互作用、ロボットの物理的周囲の変更(例えば、物体の配設または操作)、およびロボットの物理的環境の周りを円滑かつ効率的に操ることを含むタスクを実行することができてもよい。ロボットは、人間からの入力および指令に応答するだけでなく、ロボットの知覚系構成要素から検出したそれらのプログラミングおよび状態に基づいて、独自の動作を開始してもよい。ロボット110などのロボットは、システム100などの、環境内の物体と相互作用する(例えば、物理的に操作する、および操る)ための1つ以上の構成要素を含んでもよい。例えば、ロボットは、物体を把持するか、さもなければ移動させるためのアクチュエータを備えたアームを含んでもよい。アクチュエータは、物体を把持するための指のような要素を備えたロボットハンドであってもよい。いくつかの実装態様では、ロボット110のアームまたは脚は、アームまたは脚のエンドエフェクタが6自由度(DOF)で動くことを可能にする1つ以上の構成要素を含むことができる。
【0039】
ロボット110などのロボットは、ロボット110がある位置から別の位置に走行するのを可能にするための、車輪、脚、無限軌道、およびその他の要素などの、1つ以上の電動要素を含むことができる。さらに、ロボット110は、GPSセンサおよび加速度計などの航法要素を含んでもよく、これにより、ロボットは、移動のコースを設定し、自ら方向を決めた経路に沿って走行することができる。いくつかの実装態様では、
図1に示すように、ロボット110は、サーバシステム104などの外部システムによってロボット110に対して計画された経路を有してもよい。したがって、ロボット110は、その機能を使用して、従うように命令された経路に沿って移動してもよい。ロボット110は、ロボット110の外部に接続された1つ以上のセンサを含むセンサ機能を含んでもよく、これにより、ロボット110は、その周囲を知覚し、学習することができる。ロボット110は、シャーシ、ヘッド、および他の接続構成要素などの1つ以上の本体構成要素を含むことができる。本体構成要素は、回転、旋回、シフト、並進など、互いに関連したロボット構成要素の様々な種類の運動を可能にし得る。ロボットは、ロボットに電力を供給するバッテリー、送信機、受信機、センサ、プロセッサ、ならびにデータおよびロボットに対してのプログラム化した命令を格納するためのメモリなど、様々な他の構成要素を含むことができる。これらの態様は、
図2に関して以下でさらに説明される。
【0040】
図1の例では、サーバシステム104は、ロボット110が開始位置から終了位置に移動するための経路138を計画する。開始位置から終了位置に移動する目的は、ユーザから提供された命令、タスクを完了するために移動するロボット110による決定、サーバシステム104もしくは別の計画システムからのデータ、クライアントデバイス102から提供された命令、または他のデータに基づくことができる。経路は、ロボット110がその本体を移動させて、ある位置から別の位置に走行するための経路であってもよい(例えば、ロボット110自体が終了位置に並進されるための経路)。さらに、または代替的に、経路は、ロボット110のアーム、シャーシ、脚、およびマニピュレータなどのロボット110の構成要素のうちの1つの移動など、ロボット110のうちの一部のみの、開始位置から終了位置への移動を表してもよい。経路は、ロボットを工場のある部屋から別の部屋に移動させたり、かつ工場内を走行しながらロボットの構成要素を開始高さから終了高さまで移動させたりするなど、ロボットの位置だけでなく姿勢または構成の変更を指定してもよい。
【0041】
いくつかの実装態様では、
図1に示している経路計画操作は、サーバシステム104によって実行され得る。他の実装態様では、経路計画は、ロボット110の構成要素によって実行され得る。他の実装態様では、サーバシステム104およびロボット110の両方が、経路計画に関するタスクを共有し得る。
【0042】
システム100は、ロボット110が、経路の近傍の障害物を回避しながら、開始位置から終了位置まで走行するための経路138を決定する。本明細書で使用される「障害物」は、ロボットの移動に対する外的制約を広く指す。これらの外的制約には、物理的な障壁(例えば、移動を妨害する物体または物理的な衝突を引き起こす可能性のある物体)が含まれるが、これらに限定されない。他の障害物は、他のロボットまたは物体が走行する予定のエリア、交通量の多いエリア、および好みまたは安全上の考慮事項のために回避されるエリアを避ける必要性など、時間とともに変化する衝突リスクまたは漠然とした制約であっても表すことができる。
【0043】
図1に示している例は、障害物を検出し、障害物を表すデータをサーバシステム104に提供するロボット110を含む。サーバシステム104は、弾力的な経路計画技術を使用してロボット110の経路を計画する。これには、障害物に関連する力ベクトルの生成が含まれる。力ベクトルはそれぞれ、障害物の特性に基づいて大きさおよび方向を有することができる。サーバシステム104は、開始位置から終了位置までのロボットの全体的な移動をなおも維持しながら、力ベクトルの影響により障害物の周りを曲がる1つ以上の経路を生成する。サーバシステム104は、例えば、所定の基準のセットを満たす選択経路に基づいて、複数の経路から1つの経路を選択する。次に、サーバシステム104は、ロボット110によって通り抜けられる計画経路138の経路データ144を提供する。
【0044】
ステージ(A)の間に、ロボット110の目的地が決定される。いくつかの実装態様では、サーバシステム104は、ロボット110によって実行されるべきタスクに基づいて目的地を決定する。例えば、サーバシステム104は、複数のロボットの協調した動作を含む製造努力のうちの一部としてタスクをロボット110に割り当ててもよく、サーバシステム104は、タスクのうちの少なくとも一部を完了するために必要であるとして目的地を指定してもよい。
【0045】
いくつかの実装態様では、ユーザは、例えば、ロボット110と話したりもしくは対話したりすることによって、またはクライアントデバイス102にデータを入力することによって、目的地を指定してもよい。別の例として、サーバシステム104は、ロボット110に、目的地を指定するデータを提供してもよい。別の例として、ロボット110は、検知された状態、スケジュールされたタスク、または別の理由に基づいて、ロボット110自体の目的地を決定してもよい。製造環境では、ロボット110は、品物を製造工場内の別の位置に移動するためにタスクを割り当てられてもよく、ロボット110またはサーバシステム104は、ロボット110またはロボット110の一部が他の位置に移動すべきであると決定されてもよい。
【0046】
ステージ(B)の間に、ロボット110はその環境を観察し、潜在的な障害物、例えば、目的地への走行を妨げる可能性のある物体または状態を特定することができる。ロボット110は、存在する品物を示す地図データ、および形状、サイズ、物体の種類などの他の情報を格納することができる。説明のために、地図データは、地図ビュー160a、例えば、ロボット110の環境の二次元ビューを表す空中ビューとして示されている。そうは言うものの、図に示されている地図ビュー160aおよびその他のものは、必ずしも生成または表示されるとは限らない。むしろ、ロボット110、サーバシステム104、および他のデバイスは、二次元または三次元システムで定義されているかどうかにかかわらず、地図データのデータ表現を単に格納および使用してもよい。
【0047】
ロボット110は、環境を知覚するときにそのセンサから、ロボットの現在位置とその目的地との間に位置する物体を示すデータを取得する。例えば、ロボット110が部屋を横切って目的地に移動するために、ロボット110は、ロボット110が移動する可能性がある場所を妨害またはそうでなければ制限する可能性がある1つ以上の障害物(例えば、障害物116、117、および118)が存在していることを決定する。障害物を検出することにより、ロボット110または別のシステム(例えば、サーバシステム104)が経路計画を開始して、目的地に到達し、かつシステム100の環境120に示されている障害物を回避する経路を取得してもよい。目的地までの直線経路内に障害物が存在しない場合、ロボット110は、目的地まで直線経路112に沿って走行を進めることができる。
【0048】
いくつかの実装態様では、環境120内でロボット110によって見つかった障害物116、117、および118は、ロボット110の移動の邪魔をする可能性がある。例えば、障害物には、炎、切削工具、または衝突リスクなど、ロボット110に害を及ぼす物体を含むことができる。障害物は、静止障害物または動的に移動可能な障害物とすることができる。例えば、計画経路に沿って移動している他のロボットなど、いくつかの障害物は所定の経路に沿って移動することができる。所定の経路に沿って移動している他のロボットに基づいて、ロボット110またはサーバシステム104は、所定の経路に関連する移動の行程体積を決定することができる。以下でさらに説明するロボットの行程体積は、ロボットがその所定の経路に沿って走行する間に通過するであろうすべての点を含む体積を示す。あるいは、ロボットがその経路に沿って通り過ぎるであろうすべてのエリアの合計を表す行程面積を使用してもよい。
【0049】
いくつかの実装態様では、ロボット110は、ロボット110に統合されたそのセンサのうちの1つ以上を使用して環境120を検知する。ロボット110は、いくつかの例を挙げると、カメラ、LIDARセンサ、レーダセンサ、近接センサ、赤外線センサ、加速度計、タッチセンサ、マイク、深度カメラ、および位置センサなどのセンサを含むことができる。他の種類のセンサを使用してもよい。例えば、ロボット110は、画像データ(例えば、赤、緑、および青)ならびに深度データを取得するRGBDセンサを含んでもよい。ロボット110は、センサデータを受信し、センサデータを分析して、ロボット110の現在位置から目的地までの直線経路112に沿った障害物を決定することができる。ロボット110は、物体/障害物の位置、形状、色、サイズ、体積、輪郭、質感、および他の態様を見定めて、物体を検出および特定してもよい。
【0050】
ロボット110は、環境120の受信したセンサデータを処理して、環境内で見つかった障害物の特性を生成する。例えば、環境120内のシステム100に示されるように、ロボット110が障害物(例えば、障害物116、117、および118)のセンサデータを取得した後、ロボット110は、センサデータを処理して、環境120の特性を特定する。ロボット110は、センサデータの特性から障害物データ122を生成する。障害物データ122は、センサから記録されるように、障害物116、117、および118の位置、色、サイズ、輪郭、深さ、形状、および質感のデータ、および他のデータの表現を含んでもよい。
【0051】
ステージ(C)の間に、ロボット110は、障害物データ122をサーバシステム104に送る。任意選択で、ロボット110は、ロボット110が走行する経路を決定するために、要求をサーバシステム104に送信してもよい。もちろん、サーバシステム104がロボット110の動作を管理しているまたは調整をはかっている場合、サーバシステム104は、ロボット110からの通信を受信することなく、経路計画プロセスを開始してもよい。
【0052】
障害物データ122は、環境120内の特定された障害物(例えば、障害物116、117、および118)の位置、ならびに、例えば、障害物のサイズおよび/または形状などの障害物を説明する特性を示すことができる。障害物データ122は、障害物116、117、および118の認識された種類またはカテゴリなど、障害物116、117、および118の他の性質を示してもよい。ロボット110はまた、特定された障害物の地図を生成し、含めることができる。障害物データ122を使用して、サーバシステム104は、障害物116、117、および118の位置および特性を決定することができる。さらに、ロボット110は、ロボット110の現在位置を示すデータ、ロボット110の目的地を示すデータ、ロボット110の識別子、ロボット110が実行しようとしているタスクまたは命令101(例えば、ユーザまたはクライアントデバイス102によって提供される)、および環境120の位置などの他の情報を障害物データ122内にてサーバシステム104に提供することができる。他の詳細は、経路を決定する際にサーバシステム104によって使用するために、ロボット110によって提供されてもよい。
【0053】
ステージ(D)の間に、サーバシステム104は、障害物データ122を分析し、障害物データ122内で見つかった障害物に関連する力ベクトルを計算する。さらに、または代替として、サーバシステム104は、エリアの地図、タスク計画、他のロボットからのセンサデータなどの他の情報源からのデータに基づいてサーバシステム104が認知している障害物または条件に基づき、力ベクトルを計算してもよい。
図1では、例示の目的で、地図ビュー160bが、サーバシステム104によって使用されるデータおよびサーバシステム104によって実行される分析を表すために示されている。サーバシステム104は、障害物を説明する特性を分析し、これらの特性に基づいて力ベクトルを生成することができる。例えば、サーバシステム104は、物体の位置、形状、色、サイズ、体積、輪郭、質感、および他の態様を使用して、物体を特定し、対応する力ベクトルを生成することができる。力ベクトルの各々は、ロボットの経路に影響を与えることができる力のポテンシャルの大きさおよび方向を有することができる。例えば、力ベクトルは引力または斥力とすることができる。同様に、力ベクトルは、2Dまたは3D空間において異なる方向に向けられることができ、ロボット110の経路により強く影響を与えるために、いくつかの力ベクトルは、他のものよりも大きな大きさで作用することができる。
【0054】
いくつかの実装態様では、生成された力ベクトルは、均一な様式で物体または障害物から外向きに放射されるか、または均一な様式で物体または障害物に向かって延びることができる。他の実装態様では、力ベクトルは、不均一な様式で外側に放射されるか、または内側に延びることができる。いくつかの物体または一部物体に関しては、力ベクトルは外側に放射されて、ロボット110の経路に反発してもよい。他の物体または物体のうち一部に関しては、力ベクトルが物体に向けられて、ロボット110の経路を引き付けてもよい。力ベクトルの均一性または不均一性は、物体または障害物自体を説明するパラメータに基づくことができる。例えば、サーバシステム104は、反発力ベクトルを障壁に関連付けてもよく、引力ベクトルを、ロボット110が使用し得る道具に関連付けてもよい。
【0055】
いくつかの実装態様では、サーバシステム104は、ロボット110が経路に沿って移動する間に危害を加えられないことを保証するための力ベクトルを生成する。障害物によって引き起こされる潜在的な危害の程度に基づいて、サーバシステム104は、障害物を回避するためにロボット110の運動の計画された経路を調整するための力ベクトルを生成してもよい。例えば、サーバシステム104が、障害物がロボット110に高いリスクを与えると決定した場合、サーバシステム104は、ロボット110を特定の障害物から反発する方向に、障害物に対してより強い力ベクトル(例えば、より大きな大きさ)を関連付けてもよい。あるいは、障害物が危害の小さなリスクをもたらす場合、サーバシステム104は、より小さな大きさを有するより弱い力ベクトルを採用してもよい。
【0056】
サーバシステム104は、力ベクトルを決定するときに、物体の現在および/または将来の移動を考慮に入れることができる。特に、サーバシステム104は、ロボットのフリートなどの複数のロボットの移動を計画およびスケジュールしてもよく、その複数のロボットのうちいくつかは、同じエリアで同時に作業してもよい。サーバシステム104は、たとえ経路が完全にまとめられていなくても、他のロボットの計画経路を使用して、ロボット110の経路を決定および調整することができる。例えば、サーバシステム104は、ロボット117などの物体が、ロボット110がその経路に沿って目的地に移動するのと同時に、経路150に沿って移動するようにスケジュールされることを決定することができる。ロボット117の形状および向きなどのロボット117の特性に基づいて、サーバシステム104は、ロボット117の計画経路に基づいて行程領域128を決定することができる。行程領域128は、ロボット115が経路150に沿って走行する間中の時間にロボット117が通過するであろう領域全体を含む。ロボット110の経路が二次元表現を使用して計画される場合、行程領域128は二次元面積であってもよい。ロボットの経路が三次元表現を使用して計画される場合、行程領域128は三次元体積であってもよい。サーバシステム104は、経路150に沿って走行しているロボット117を表す行程領域128から外向きに放射される力ベクトルを生成することができる。例えば、サーバシステム104は、行程領域128全体を回避すべき障害物として扱ってもよい。
【0057】
サーバシステム104は、任意の適切なデータ構造または技術を使用して、力ベクトルおよび空間的関係を表すことができる。
図1は、例示を明確にするために、例えば、地図ビュー160a~160dを用いて、経路、物体、および力ベクトルの図解表示を示しているが、サーバシステム104は、あらゆる視覚化を行うことなく、位置関係および力ベクトルを表すデータ構造を生成することができる。任意選択で、経路および力ベクトルなどの特徴を含むロボットの環境を視覚化して、ユーザに提供してもよい。
【0058】
いくつかの実装態様では、力ベクトルは、異なる空間位置で異なる大きさを有してもよい。例えば、物体の表面では、力ベクトルの大きさが高く、物体から離れるにつれて、関数に応じて大きさが減少してもよい。したがって、力ベクトルは、ある位置の経路に大きな程度の影響を与えてもよいが、別の位置の経路には低い程度の影響を与えてもよい。一例として、障害物の力ベクトルは、経路が障害物から1フィートを通る場合に経路に強く反発してもよく、経路が障害物から3フィートを通る場合に、同じ力ベクトルは経路にはるかに弱く反発してもよい。異なる位置での力ベクトルの大きさの変動は、例えば、ユーザ定義関数、線形関数、二次関数、指数関数、ロジスティック関数、または他の種類の変動に基づいてもよい。
【0059】
力ベクトルはまた、力ベクトルが対応する障害物の種類に応じて、大きさおよび方向が変化してもよい。例えば、耐久性がありかつ安価な構成要素の箱から遠ざける、ロボットの経路に反発する力ベクトルの大きさは、衝突の結果がより深刻になる可能性がある、別のロボットまたは壊れやすい品物から遠ざける、ロボットの経路に反発する力ベクトルの大きさよりもはるかに小さくてもよい。
【0060】
ステージ(E)の間に、サーバシステム104は、生成された力ベクトルに基づいて、ロボット110の計画経路138を生成する。
図1では、例示の目的で、地図ビュー160cが、サーバシステム104によって使用されるデータおよびサーバシステム104によって実行される分析を表すために示されている。上記のように、力ベクトルは、ロボット110の運動経路に対する様々な影響、特に、ロボット110の経路を制約する際の障害物および他のロボットの活動の影響を表す。計画経路138は、ロボット110の環境内の障害物を回避し、初期候補経路112の修正されたバージョンを表すものであってもよい。例えば、サーバシステム104は、力ベクトルに基づいて弾力的に初期経路112を曲げることによって、なおも初期経路112と同じ目的地に到達しながら、初期経路112を変更することができる。サーバシステム104は、初期経路112から、異なる方法で初期経路112を修正する複数の経路(例えば、経路136、138、140、および142)を生成してもよい。サーバシステム110は、様々な経路選択肢の中から選択された、所定の基準のセットに最もよく適合する選択経路138を選択し、ロボット110に提供することができる。
【0061】
いくつかの実装態様では、計画経路138を生成する際に、サーバシステム104は、ステージ(D)で生成された力ベクトルの複合的な影響に基づいて、初期経路112を修正または変更する。例えば、サーバシステム104は、同時に取り込まれた力ベクトルが初期経路112にどのように影響するかを決定することができる。引力ベクトルは、初期経路112を力の源に向かって引き付けてもよい。斥力ベクトルは、初期経路112を力の源から押しのけてもよい。初期経路112に加えられる力の量は、力ベクトルの大きさに基づいており、初期経路112が引き伸ばされる方向は、力ベクトルの方向に基づいている。
【0062】
ロボット110は、ロボット110が移動するときにその姿勢または構成を変更する能力を有することができる。これを利用するために、サーバシステム104は、力ベクトルによる姿勢または構成の変更を計画してもよい。例えば、ロボット110全体の横方向の移動を指定することに加えて、力ベクトルに起因して、サーバシステム104は経路138を生成して、ロボット110が経路138を通り抜けるときにその形状または向きを変更するための命令を含むことができる。ロボット110は、ロボット110が計画経路138を通り抜けるときに、その形状、向き、または位置を調整する必要があることがある。ロボット110は、力ベクトルによって表される制約を満たすために回転または並進してもよい。さらに、計画経路138は、ロボット110にその構成要素のうちの1つ(例えば、アームまたは脚など)を移動させるか、または構成要素を調整させることができる。
【0063】
いくつかの実装態様では、サーバシステム104は、初期経路112からの偏差量を最小化し、および/または最小量の距離または走行時間で目的地に到達する経路を生成しようとする。サーバシステム104は、例えば、これらの前述の基準を満たす1つ以上の経路選択肢を生成するために、異なる方法で力ベクトルに基づいて初期経路112の特性を調整することができる。
【0064】
ロボット110の経路を計画するとき、サーバシステム104が調整し得るパラメータのうちの1つは、初期経路112の弾力性または抵抗のレベルである。初期経路112は、初期経路112が力ベクトルに応答する程度に影響を与える特定の弾力性または抵抗を割り当てられてもよい。初期経路112の弾力性の尺度は、加えられた力ベクトルに応じて初期経路112が引き伸ばされる程度を定義することができる。例えば、力ベクトルの同じセットに対して、異なるレベルの弾力性を割り当て、初期経路112からの異なるレベルの変位を有する経路をもたらしてもよい。
【0065】
一般に、弾力性な経路計画技術は、初期経路からの偏差にある程度抵抗するため、経路が変位するほど、力の大きさが大きくなり、さらなる力に応じて経路が変位することが少なくなる。これは、様々な大きさの力に対応する非線形応答で表すことができる。例えば、大きさが1の力は、初期経路を1フィート変位させ、大きさが2の力は、同じ初期経路を1.5フィート変位させ、大きさが3の力は、同じ初期経路を1.75フィート変位させることがある、などである。その効果は、経路を曲げると、弾力性材料を引き伸ばすことによって生じる張力に類似した反作用力が生じ、それがさらなる変形に対する抵抗を増加させ、特に経路の延長を増加させることである。
【0066】
例えば、サーバシステム104が力ベクトルによって初期経路112を曲げると、ある量の張力またはさらなる変形に対する抵抗が生じる。この張力または抵抗の効果は、調整された経路が初期経路112から逸脱する量を制限することである。別の効果は、初期経路112からの偏差が、加えられた力の大きさに比例して調整された経路に沿って分布されることである。張力は、特定の初期経路112の弾力性に基づいて調整することができる。例えば、初期経路112に見られる弾力性が大きいほど、初期経路112が変更されるときに生じる張力が少なくなり、したがって、調整された経路が最終的に初期経路112からより遠くに変位し得る。
【0067】
例えば、サーバシステム104は、特定の量の弾力性を初期経路112に割り当てることができる。サーバシステム104は、特定された障害物の各々からの複合的な力ベクトルに応じて、指定されたレベルの弾力性で初期経路112を引き伸ばすことができる。初期経路112の各部分において、変形は、その部分に局在化された力ベクトルに基づいて決定される。複合的な力ベクトルの影響、および初期経路に割り当てられた制限された弾力性の抵抗の影響によって、経路が変更される。弾力性のレベルが異なることにより、異なる経路136、138、140、および142がもたらされる(弾力性が最も低いものから最も高いものの順に記載されている)。このプロセスでは、経路の開始点と終了点を固定できるため、開始と終了は初期経路112の場合と同じになる。いくつかの実装態様では、サーバシステム104は、障害物からの最小クリアランスを達成するため、走行時間または走行距離の制約を満たすため、効率目標を満たすためなど、ある目的を達成するために計画中に弾力性を変化させてもよい。
【0068】
いくつかの実装態様では、弾力性パラメータに加えて、またはその代わりに、サーバシステム104は、調整された経路の全長に制約を加えてもよい。例えば、初期経路112は、特定の量または特定のパーセンテージを超えて延長しないように制限することができる。
【0069】
上記で論じたように、サーバシステム104は、力ベクトルに応じて変更された初期経路112に、より多くのうねりおよび曲げを導入するにつれて、サーバシステム104が後続の力ベクトルに基づいて初期経路112を引き伸ばすことがより困難になる。例えば、変更された初期経路112が弾力性に対して高い抵抗を有する場合、初期経路が受けることができる曲げおよび変形が少なくなり得る。あるいは、より多くの弾力性が許容される場合、更新された経路は、例えば、初期経路112からより強く曲がり、初期経路112からより遠くに変位することによって、初期経路112からより遠くに逸脱することができる。言い換えれば、より高い弾力性は、力ベクトルに応じる初期経路112からの変化に対するより低い抵抗を提示する。
【0070】
いくつかの実装態様では、サーバシステム104は、経路が計画されている特定のロボット110の特性に基づいて、初期経路112への調整を制約してもよい。例えば、特定のロボットの特性は、変更された初期経路112に沿ってロボットがどのように移動することができるかに影響を及ぼし得る。これらの特性には、とりわけ、特定のロボットの制限速度、特定のロボットのサイズ、特定のロボットの関節角度限界、または特定のロボットのアームが届く長さを含むことができる。サーバシステム104は、ロボットのこれらの特性、およびロボットが初期経路112の一部に沿ってどのように移動するかに基づいて、初期経路112の部分を制約してもよい。さらに、サーバシステム104は、ロボットのこれらの特性に基づいて、経路の特定の部分での弾力性を変化させることができる。
【0071】
例えば、システム100に示されているように、サーバシステム104は、異なるレベルの弾力性を使用して初期経路112を変更することによって、4つの調整された経路を生成する。4つの調整された経路には、経路136、138、140、および142が含まれる。サーバシステム104は、所望の数の調整された経路、例えば、1つ以上の要因に基づいて決定された所定の量または数の経路を生成することができる。調整された経路が生成されると、サーバシステム104は、調整された経路の各々にスコアを割り当てることができる。
【0072】
いくつかの実装態様では、サーバシステム104は、調整された経路の各々の性質を特徴付ける1つ以上のスコアを生成する。スコアは、調整された経路の様々なバージョンを評価するために、経路計画プロセスに沿った様々なステップで生成されてもよく、調整された経路の各々が基準または制約を十分に満たしているかどうかを判断するために使用できる。スコアは、初期経路112からの偏差距離、ターン数、経路距離、ターンの振幅の大きさ、ロボットが調整された経路を通り抜けるのにかかる時間の長さなどの様々な要因に基づくことができる。特定の調整された経路のスコアは、これらの要因のうちの1つ以上を示す値に基づいて値を増減できる。例えば、経路距離が短いほど、またはターンの振幅の大きさが小さいほど、サーバシステム104によって生成されるスコアは高くなる。逆もまた当てはまる。さらに、サーバシステム104は、ロボット110が初期経路112を通り抜けるのにかかる時間の長さを予測し、その時間の長さを、ロボット110が調整された経路を通り抜けるのにかかる予測時間の長さと比較することができる。時間比較に基づいて、サーバシステム104は、対応するスコアを設定することができる。例えば、時間差がゼロに近いほど、調整された経路に対応するスコアが高くなる。
【0073】
サーバシステム104はまた、調整された経路に対応する生成されたスコアを閾値スコアと比較することができる。閾値スコアは、経路に対しての所望の特性のセットに基づいて決定できる。特定の調整された経路のスコアが閾値レベルに到達すると、サーバシステム104は、調整された経路が適用可能な基準を十分に満たしていると決定することができ、サーバシステム104は、調整プロセスを終了することができる。同様に、サーバシステム104が、連続する調整反復中に生成されたスコアがプラトーに達し、さらなる調整が経路を改善していないことを示していると判断した場合、サーバシステム104はまた、調整プロセスを終了してもよい。
【0074】
いくつかの実装態様では、サーバシステム104は、計画経路を示す座標のセットを決定することができる。座標のセットは、ロボット110が開始位置から終了位置までの経路をたどることを可能にする、間隔の狭い座標を含むことができる。あるいは、調整された経路の表現は、ロボット110が経路に沿って移動することを可能にするウェイポイントおよび/または曲線などの他の表現に格納されることができる。
【0075】
サーバシステム104は、ロボット110の経路データをデータベース108に格納することができる。サーバシステム104は、ロボット110の特定を表すデータおよび計画経路に関連するデータを格納することができる。例えば、このデータは、座標点のセット(例えば、GPSデータ)、初期経路112を表すデータ、障害物データ122を表すデータ、およびシステム100に示される環境120を表す他のデータを含むことができる。障害物データ122を表すデータは、障害物データ122中で見つかった障害物のGPS位置データとともに特定された障害物の種類または分類を含むことができる。ロボット110の経路データは、ロボット110へ経路を提供するために使用することができ、かつロボット117などの他のロボットの経路を計画する際に使用するために使用することができる。例えば、ロボット110の計画経路138は、ロボット117および潜在的に他のロボットの経路計画に影響を与えるであろう行程領域を決定するために使用されてもよい。
【0076】
ステージ(F)の間に、サーバシステム104は、経路計画プロセスの結果を表す経路データ144を、ネットワーク106を介してロボット110に送信する。経路データ144は、経路138に沿った点を指定する座標(例えば、GPS座標)を含むことができる。例えば、座標は、開始位置、終了位置、および経路に沿った中間点などの位置を含んでもよい。座標は、GPS座標として表してもよく、またはロボット110によって理解される座標フレームなどの別の座標フレームで表してもよい。他の実装態様では、サーバシステム104は、ロボット110がデータベース108から経路データ144を検索することを可能にする、ロボット110へのポインタ、アドレス、またはインデックスを提供する。
【0077】
ステージ(G)の間に、ロボット110は経路データ144を受信する。経路データ144は、ロボット110のローカルメモリ(例えば、揮発性または不揮発性メモリ)に格納することができる。あるいは、ロボット110が、システムサーバ104がロボット110にポインタ、アドレス、またはインデックスを提供したと判断した場合、ロボット110は、データベース108から、ロボット110に対して選択経路138を定義する経路データ144を検索する。
図1では、例示の目的で、ロボット110によって使用されるデータ(例えば、経路138を定義する経路データ144、障害物データなど)、および経路138と環境の要素との間の関係を表すために、地図ビュー160dが示されている。
【0078】
いくつかの実装態様では、ロボット110は、経路データ144の受信に応じて、計画経路を通り抜けることができる。ロボット110は、経路データ144からのデータ(例えば、経路138を定義する座標点または他のデータ)に基づく図示160dに示されているように、経路138に沿って走行する移動を開始することができる。図示160dに示されている経路138は、障害物116に対応する力ベクトル、障害物118に対応する力ベクトル、ロボット117の行程運動体積128からの力ベクトルを回避し、かつ初期経路112からの偏差を最小化することに基づいて生成される。生成された経路138は、サーバシステム104によって設定された所定の閾値を少なくとも満たすかまたは超え、その結果、ロボット110が計画経路138を通り抜け、効率的かつ最小限の方法で目的地に到達することを可能にする。
【0079】
ロボット110が経路を通り抜けるとき(または経路を通り抜けることに応じて)、ロボット110は、ネットワーク106を介してサーバシステム104へ、経路上のその道程に関するデータを送信することができる。例えば、ロボット110は、そのデータ内において、新しい障害物が見つかったかどうか、以前に特定された障害物が移動または除去されたかどうか、およびロボット110が経路138の通り抜け中にユーザまたはクライアントデバイス102から新しい命令を受け取ったかどうかを提供することができる。あるいは、ロボット110は、経路138の通り抜けが成功したか否かを示すことができる。
【0080】
図2は、ロボット200および対応する構成要素の一例を示すブロック図である。ロボット200は、ロボット200内に統合された1つ以上の構成要素を示している。例えば、ロボット200は、1つ以上のプロセッサ202、1つ以上のセンサ204、送受信機206、ロボット200のアームおよび/または脚の端部に接続されている1つ以上のマニピュレータ208、力ベクトルモジュール210、経路評価モジュール212、およびスコアリングエンジン214を含むことができる。ロボット200は、他の構成要素もさらに含むことができる。ロボット200に示されている各構成要素は、互いに通信することができる。
【0081】
1つ以上のプロセッサ202は、ロボット200の意思決定を制御する。さらに、1つ以上のプロセッサ202は、ロボット200内の他の構成要素の各々と通信する。さらに、プロセッサ202は、ロボット200内に見られる1つ以上のメモリ通信と通信する。プロセッサ202は、ロボット200内の各構成要素に、所望のタスクを実行し、要求に応答するように命令することができる。プロセッサ202はさらに、プロセスまたはタスクを順次または並行して実行することができる。
【0082】
1つ以上のセンサ204は、ロボット200に近接内の環境を分析することができる。例えば、ロボット200は、いくつかの例を挙げると、1つ以上のカメラ、LIDARセンサ、近接センサ、モーションセンサ、赤外線センサ、加速度計、タッチセンサ、マイク、深度カメラ、および位置センサなどのセンサを含むことができる。ロボット200は、いくつかの例を挙げると、LIDAR、3D深度、レーダデータ、画像、および音声データを含むデータをさらに生成することができる。センサ204は、ロボット200の内部に配置するか、またはロボット200の外部に配置することができる。
【0083】
送受信機206は、1つ以上の受信機および1つ以上の送信機を含むことができる。送受信機206は、ロボット200がネットワーク106を介して外部構成要素と双方向に通信することを可能にすることができる。例えば、システム100に示されるように、ロボット110内の送受信機は、クライアントデバイス102、サーバシステム104、およびデータベース108と通信することができる。送受信機206は、異なる周波数帯域を介して通信することができ、ネットワーク106を介して有線または無線接続によって接続することができる。
【0084】
1つ以上のマニピュレータ208は、ロボット200のアームまたは脚の各々の端部に取り付けることができる。例えば、ロボット200のアームまたは脚の端部は、プロセッサ202または送受信機206によって送信された命令に応じてタスクを実行する1つ以上のマニピュレータ208を含むことができる。1つ以上のマニピュレータ208は、物体または地面を開閉、および/または安定化または把持するように命令されてもよい。マニピュレータ208は、物体を把持するために、指のようなまたはクランプのような物体を有してもよい。
【0085】
図1の例に示されているように、サーバシステム104は、障害物の力ベクトルを決定し、初期経路、制約を表す力ベクトル、および初期経路の弾力性に基づいて経路を生成するものとして示された。
図2は、
図1に関して説明したように、これらの技術が、経路評価モジュール212、力ベクトルモジュール210、およびスコアリングエンジン214を使用して、いくつかの実装態様においてロボットによって少なくとも部分的に任意選択で実行できることを示している。
【0086】
力ベクトルモジュール210は、
図1に関して説明したように、特定された障害物に基づいて力ベクトルを生成する1つ以上のソフトウェアおよびハードウェアコンポーネントを含むことができる。例えば、力ベクトルモジュール210は、ロボットから特定された障害物を分析し、これらの特性に基づいて力ベクトルを生成することができる。力ベクトルは、ロボット200の計画経路に影響を与える物体または障害物からの潜在的な力の大きさおよび方向を示すことができる。力ベクトルは、引力または斥力とすることができる。さらに、力ベクトルは、障害物(例えば、物体または行程領域)の外周または外部の周囲において方向および大きさが均一とすることができる。あるいは、力ベクトルは、障害物の周縁の周囲において方向および大きさが不均一とすることができる。
【0087】
経路評価モジュール212は、検出された障害物および他の制約に対して生成された力ベクトルに基づいて、ロボット200の計画経路を生成する1つ以上のソフトウェアおよびハードウェアコンポーネントを含むことができる。例えば、経路評価モジュール212は、ロボットの候補経路を生成し、検出された物体に対応する力ベクトルの周りでロボットの候補経路を曲げ、初期経路の軌道と同様の軌道を維持することによって、計画経路データを生成する。
図1に関して説明したように、検出された障害物の力ベクトルの生成に応じて、経路評価モジュール212は、(その弾力性に基づいて)初期経路112を変形または曲げて、初期経路からの偏差量を最小化しながら力ベクトルを回避する。例えば、曲げおよび/または変形は、ロボット200が障害物と交差することを回避するように、力ベクトルによって作り出される方向と反対の方向で実行される。
【0088】
スコアリングエンジン214は、経路評価モジュール212によって作り出された経路のスコアを決定する1つ以上のソフトウェアおよびハードウェアコンポーネントを含むことができる。例えば、スコアリングエンジン214は、それらの特性に基づいて様々な経路のスコアを生成する。スコアリングに使用される特性は、経路が初期経路112から逸脱する距離、経路に沿って見られたターン数、経路の全体的な距離、ターンの振幅の大きさ、ロボットが経路を通り抜けるための所要時間の長さ、および経路から力ベクトルまでの距離を含むことができる。ターン数がより少なく、経路の全体的な経路距離が短いほど、例えば、スコアリングエンジン214によって生成されるスコアは高くなる。あるいは、初期経路からの偏差距離が大きい場合、またはターンの振幅の大きさが大きい場合、スコアリングエンジン214は、例えば、より低いスコアを生成してもよい。経路評価モジュール212は、特定の環境に対して(それぞれが互いに異なる)複数の経路を生成することができる。スコアリングエンジン214は、複数の経路の各経路のスコアを生成することができる。ロボット200は、最も高いスコアを有する経路(例えば、計画経路)を選択し、それに沿って移動することができる。さらに、スコアリングエンジン214は、生成されたスコアの各々を閾値と比較して、対応する経路が所望の基準を満たしているかどうかを決定してもよい。
【0089】
図3は、ロボットの運動計画をスコアリングするためのシステム300の一例を示すブロック図である。例えば、システム300は、候補経路を生成する経路評価モジュール306、および候補経路の各々にスコアを割り当てるスコアリングエンジン216によって実行される機能を示している。サーバシステム302によって実行される機能は、図示304に示されているこれらの力ベクトルなど、環境内で特定された障害物に対応する力ベクトルを生成することを含む。サーバシステム302は、力ベクトルを計算し、マッピングされた環境に含まれ得る、図示304に示されている表現を、経路評価モジュール306に提供する。
図3では、個々の図示304、318、320、322が、サーバシステム302の処理で使用され得る物体とデータ要素(例えば、力ベクトル、経路、行程体積など)との間の関係の表現を提供している。
【0090】
経路評価モジュール306は、図示304に見られるデータを分析して、初期経路と同様の軌道を有する1つ以上の候補経路を生成する。いくつかの実装態様では、経路評価モジュール306は、図示304を通り抜けるための複数の候補経路を含む経路データ308を生成する。例えば、経路データ308は、第1の候補経路310、第2の候補経路312、および第3の候補経路314を含むことができる。これらの候補経路の各々は、図示304に示されている開始位置から終了位置までのロボットの通り抜けのための1つ以上の一連の位置座標を含むことができる。これらの位置座標は、GPS座標、またはロボットおよびサーバシステム302の両方によって理解されるいくつかの他の座標とすることができる。
【0091】
いくつかの実装態様では、経路評価モジュール306は、経路データ308をスコアリングエンジン316に提供する。スコアリングエンジン316は、それぞれの候補経路ごとにスコアを生成する。例えば、システム300に示すように、経路311は図示318内で候補経路310に対応し、経路313は図示320内で候補経路312に対応し、そして経路315は図示322内で候補経路314に対応する。スコアリングエンジン316は、例えば、いくつかの例を挙げると初期経路からの偏差距離、全体の経路距離、候補経路中のターンの振幅、および候補経路と力ベクトルとの間の距離の表示に基づいて、各候補経路のスコアを生成する。システム300に示す例では、スコアリングエンジン316は、経路311に対して「95」の値を有するスコア324を生成する。スコアリングエンジン316は、経路313に対して「45」の値を有するスコア326を生成する。さらに、スコアリングエンジン316は、経路315に対して「40」の値を有するスコア328を生成する。
【0092】
いくつかの実装態様では、スコアリングエンジン316は、少なくともターンの振幅の大きさおよび初期経路からの候補経路の偏差距離に基づいて、スコアを生成することができる。低いターンの振幅および低い初期経路からの候補経路の偏差距離に基づいて、スコアリングエンジン316は、例えば、候補経路に対応する高いスコア(例えば、「95」のスコア324)を生成する。上記のように、他の要因をスコアリングエンジン316が使用して、対応するスコアを生成することができる。
【0093】
システム300に示すように、スコアリングエンジン316は、図示320および322にそれぞれ見られる経路313および315に対して低いスコアを生成した。例えば、図示320に示すように、経路313は、力ベクトルと交差し、その振幅が大きい大きさを有するターンを含む。さらに、振幅の大きさが大きいと、全体的な経路距離が大きく作成される。したがって、スコアリングエンジン316は、力ベクトルとの交差およびターンの振幅の大きさが大きいために、値「45」の低いスコア326を経路313に帰するように関連付ける。同様に、スコアリングエンジン316は、経路315が力ベクトルと交差し、障害物に近接して来るため、値「40」の低いスコア328を関連付ける。経路315は、経路315に沿って走行するロボットに潜在的な危害を作り出すため、スコアリングエンジンは、対応する経路315に対して低いスコア328を作り出す。
【0094】
図4は、ロボットの運動計画の別の例を示すブロック図である。
図4は、本明細書で説明される経路計画の技術を、複数のロボットの移動の局面でどのように実行することができるのかを示している。例えば、サーバシステム104または302は、複数の他のロボットを考慮して特定のロボットの移動経路を生成し、非常に混雑したエリアを回避することができる。例えば、多くのロボットが一定量の空間を占める場合、特定のロボットは、他のロボットとの衝突を回避するために、非常に混雑した空間体積を回避する経路に沿って移動できる。
【0095】
図4は、他のロボットの移動(例えば、潜在的に計画された、または予測された将来の移動)を考慮して、特定のロボットの経路が決定されるプロセスを示している。例えば、
図4は、ロボット402、404、406、408、および410を示している。もちろん、この技術は、図示されているよりも多いまたは少ないロボットで使用されてもよい。各ロボットは、例えば、将来の移動用に提案された経路など、実行される移動の対応する候補経路を有する。これらは、他のロボットの経路の調整に基づくことを含み、各々がさらに調整される可能性があるため、候補経路と見なすことができる。各ロボットの移動経路には、開始位置から終了位置への移動を含んでもよい。経路により指定された移動は、ロボットの特定の構成要素の移動またはロボット全体自体の移動に対応する。例えば、図示401に示すように、ロボット408は、候補経路409を有してもよい。
【0096】
特定のロボットの移動の候補経路に基づいて、サーバシステムは移動の候補経路によって移動の行程領域を決定することができる。移動の行程領域は、ロボットが候補経路に沿って移動するときの特定のロボットの移動の領域を示す。移動の領域は、潜在的なサイズ、形状、移動、特定のロボットの到達距離などによって示される。この領域は、候補経路に沿った各点でロボットが到達できる可能性のある最も遠い点を示している。例えば、候補経路に沿った特定の点で、ロボットは、回転するか、1つ以上のアームを伸ばすか、または形状を変更してもよく、これは、特定のロボットの行程移動の全体的な領域を変化させることがある。例えば、図示401に示すように、ロボット402は領域412によって定義される移動の行程領域を有し、ロボット404は領域414によって定義される移動の行程領域を有し、ロボット406は、領域416によって定義される移動の行程領域を有し、ロボット408は、領域418によって定義される移動の行程領域を有し、そして、ロボット410は、領域420によって定義される移動の行程領域を有する。
【0097】
いくつかの実装態様では、移動の行程領域は、ロボットの動的な移動に対応し、例えば、ロボットがロボットの候補経路に沿って走行するときのある期間における対応するロボットの予測される移動に対応する。
図4に示すように、各ロボットに対応する領域のいくつかの部分は、互いに積み重なっている。重なった領域は、非常に混雑したエリアまたはロボットが互いに衝突する可能性のあるエリアを示している。例えば、領域420、418、および414の重なりは、ロボット410、408、および404が互いに衝突することがある可能性を示している。あるいは、互いに重ならないエリアは、対応する領域が衝突することなく存在するための安全な領域を示している。
【0098】
一例として、経路409は、ロボット408が領域418内でどのように移動するかに対応する。ロボット408が経路409に沿って移動するとき、ロボット408に取られる空間体積は、領域418によって描写されている。領域418は、ロボット408のアームによる到達範囲の延長、ロボット408の形状、およびロボット408の位置決めを含む、経路409を通り抜ける間にロボット408によって行われる潜在的な移動を含む。しかしながら、領域418は、経路409に沿ったロボット408の潜在的な移動が、他のロボットに対応する領域414、416、および420とどのように交差するであろうかを示している。
【0099】
図示403は、ロボット408が他のロボット402、404、406、および410の潜在的な行程領域をどのように見るかを示している。例えば、サーバシステムは、ロボット408の観点から、各ロボットの行程領域を集約することができ、ここで、特定のロボットの各行程領域は互いに異なる。さらに、サーバシステムは、各ロボットの観点から、各ロボットの行程領域を集約することができる。したがって、各ロボットは、他のロボットの各々に対応する行程領域の集約の異なる見方を有することができる。例えば、ロボット406は、ロボット402、404、408、および410の行程領域の集約を見ることができる。
【0100】
他のロボットの潜在的な行程領域を考慮して、ロボット408の経路409は、その後、他のロボットの非常に混雑した領域(例えば、重なった行程領域のオーバーラップする部分)を回避するように再計画される。ロボット408および/またはロボット408と通信しているサーバシステムは、ロボット408の運動の再計画を実行することができる(例えば、サーバシステム104)。
【0101】
いくつかの実装態様では、サーバシステムは行程領域を集約し、それらの領域の各々にコストを関連付ける。例えば、図示405は、他のロボットの各々に対応する各行程領域に割り当てられたコストを視覚化する。高いスコアほど、行程領域のうちのオーバーラップの程度が高い領域に関連付けられる。同様に、低いスコアほど、行程領域のうちのオーバーラップの程度が低い領域に関連付けられる。行程領域は、特定のレベルでオーバーラップするか、またはある程度のオーバーレイによってオーバーラップし得る。このようにして、図示405に示す領域および対応するコストは、「ヒートマップ」方式で機能する。典型的には、最も高いコストに関連付けられた領域は、ヒートマップ上でホットスポットまたはホット領域として表される。同様に、より低いコストに関連付けられた領域は、ヒートマップ上でコールドスポットまたはコールド領域として示される。例えば、図示405に示すように、ヒートマップスコアは、「4」の高いスコアから「1」の低いスコアまでの範囲である。ロボット408またはサーバシステムは、412、414、416、および420の領域を含む領域に注目し、「4」の高いスコアを生成する。別の例では、オーバーラップ領域がない個々の領域の各々が、「1」の低いスコアに関連付けられる。ロボット408またはサーバシステムは、ロボット408の再計画経路を決定するのを支援するために、これらの領域の各々にコストを関連付ける。
【0102】
行程領域の各領域に関連するコストに基づいて、サーバシステムはコストに基づいて力ベクトルを生成する。例えば、生成される力ベクトルは、コストに正比例する斥力ベクトルとすることができる。したがって、最大の大きさを有する力ベクトルは、最も高いコストに関連付けられた領域(例えば、コストが「4」のオーバーラップ領域)に由来する。力ベクトルは、コストが最も高い領域から外側に反発する。コストがより低い領域、例えば、コストが「3」または「2」の領域は、外側に反発する力ベクトルを有するが、コストが「4」の領域に関連付けられた力ベクトルよりも小さい大きさを有する。いくつかの実装態様では、これらの領域からの力ベクトルは、領域の中心地から均一に、外側に反発してもよい。あるいは、これらの領域からの力ベクトルは、領域の中心地から不均一に、外側に反発してもよい。不均一性は、形状、体積、他の領域とオーバーラップする位置、および他の基準に基づいてもよい。他の実装態様では、これらのコストに関連付けられた力ベクトルは、コストに正比例する引力ベクトルとすることができる。コストが高いほど、力ベクトルの大きさが大きくなる。力ベクトルは、他のロボット(例えば、ロボット402、404、406、および410)の各々に対応する行程領域にさらに関連付けられる。力ベクトルは、注目しているロボットであるロボット408に関連付けられていない。同様に、注目している別のロボットの場合(例えば、その別のロボットの経路を決定する場合)、力ベクトルはその別のロボットではなく他のロボットに関連付けられる。
【0103】
いくつかの実装態様では、各ロボットに対応する集約行程領域の各々は、複素ベクトル場として分析することができる力ベクトルを含んでもよい。複素ベクトル場では、各力ベクトルは、図示405の各点で大きさと方向を割り当てられることができる。大きさと方向は、空間内の各点の領域に関連するコストに基づくことができる。いくつかの実装態様では、力ベクトルは二次元空間で測定することができ、移動の行程領域は二次元空間で測定することができる。他の実装態様では、力ベクトルは三次元空間で測定することができ、移動の行程領域は三次元空間で測定することができる。
【0104】
三次元行程領域の場合、サーバシステムは領域を処理して領域の力ベクトルを決定する。例えば、サーバシステムは、領域の各部分内にボクセルすなわち三次元ピクセルを定義できる。ボクセルは、領域のすぐ外側、または領域が三次元で互いにオーバーラップする位置に配置することができる。サーバシステムは、個々のボクセル各々に対するコストを関連付けることができる。続いてその後、サーバシステムは、システム内の各ボクセルに対応する引力または斥力ベクトルを関連付けることができる。二次元計画では、サーバシステムは、ピクセルに割り当てられたコストに基づいて、ピクセル、および対応する二次元力ベクトルを割り当てることができる。
【0105】
各コストに割り当てられた力ベクトルに基づいて、サーバシステムは、ロボット408の再計画経路を生成することができる。例えば、図示407に示されているように、サーバシステムは、注目しているロボット408のための新しい経路413を生成することができる。ロボット408のための新しい経路413は、他のロボットの行程領域に対応する力ベクトルを回避するように生成することができる。候補経路は、
図1のステージ(E)に関して説明されたステップおよび方法に基づいて生成される。例えば、初期経路409の同じ目的地に到達しながら、力ベクトルを回避するように初期経路409を変形および曲げる。さらに、初期経路409は、初期経路409の弾力性に基づいて、力ベクトルの周りで曲げられ、変形される。いくつかの実装態様では、複数の候補経路が生成されると、複数の候補経路のスコア、および満たされておりかつロボット408に提供されている基準に基づいて、計画経路が選択される。例えば、図示407に示されているような候補経路413は、ロボット408が走行するための経路である。
【0106】
さらに、生成された新しい経路413に基づいて、ロボット408の行程移動体積を示す対応する新しい行程移動体積422も生成される。点線の囲いで示す行程領域422は、ロボット408がその更新された経路に沿った内部で移動し得る新しい領域を示している。その移動は、経路413の各点に沿ったロボットの形状、移動の体積、および到達距離に基づくことができる。ロボットの移動を決定するこのシステムは、フレームワーク内を移動する複数のロボットが相互の衝突を回避できることを保証する。処理する次のロボットまたは他のロボットに基づいて、システムは、領域422の力ベクトルを生成して、別のロボットの候補経路処理に適用することができる。
【0107】
いくつかの実装態様では、ロボット408に対して実行される運動計画プロセスは、他のロボット402、404、406、および410の各々に対して反復して実行されてもよい。例えば、ロボット402、ロボット404、ロボット406、またはロボット410は、処理の注目対象となることがあり、システムは、注目しているロボットの行程運動体積を分析することなく、他のロボットの行程運動体積を分析することができる。各反復の後、ロボットの行程体積を更新し、次のロボットの経路を決定できる。プロセスは継続してもよく、ロボットの経路を複数回更新することを含むことができ、そのたびに、1つ以上の他のロボットの1つ以上の更新された経路に基づいて更新された行程体積を使用する。例えば、このプロセスは、各コスト領域が「2」などの閾値または別のコスト値を下回るまで発生してもよい。別の例では、このプロセスは、オーバーラップ領域が存在しなくなるまで反復して発生してもよい。調整プロセスが停滞し、特定のコストスコアを通り越してそれ以上削減できない場合、調整プロセスは終了することになる。
【0108】
図4の例で、一連のステップにおける特定の時間枠または特定のステップに対するロボット402、404、406、408、410の計画されたロボット運動の分析を表すことができる。使用される時間枠は、システムが制御できる時刻同期の程度に依存することがある。システムがロボットを正確に導ける場合は、より小さな時間窓を使用してもよい。ただし、いくつかの実装態様では、ロボットの移動は持続的または継続的に時刻同期されない。例えば、ロボットは、タスクを実行するように命令が与えられ、既知の制御された時刻にタスクを開始するように命令され得るが、各ロボットがそのそれぞれのタスクを実行するために使用する期間は制御されない場合がある。同期のための時刻チェックポイントの提供、タスクの速度または期間目標の命令など、他の技術を使用できる。時刻同期にどの手法が使用されても(例えば、継続的な持続的制御、タスクの開始のみの制御、または他の技術)、分析に使用される経路は、ロボットが同時にまたはほぼ同時に走行するようにスケジュールまたは予測された経路である。例えば、時間窓は、1秒、5秒、10秒、60秒、1分、1時間などでもよい。
【0109】
一例として、10秒の時間窓が運動計画に使用される場合を考える。運動計画は、インクリメントまたは段階的に実行でき、同時に走行されるであろう経路を表す行程体積は一緒に分析される。例えば、行程体積412、414、416、418、420をもたらす経路はすべて、同じ10秒の時間間隔の間にロボット402、404、406、408、410によって走行される経路としてもよい。したがって、行程体積のオーバーラップは、干渉の実際の可能性を示すが、行程体積のオーバーラップ、または経路の交差でさえ、いずれも衝突を保証するものではない。サーバシステム104、302、または他の処理システムは、最初の10秒間に走行されるであろうロボット402、404、406、408、410の計画経路セグメントの行程体積を使用する。調整された経路セグメントは、ロボット402、404、406、408、410が最初の10秒間の終わりにどこに配置されることになるかを示す。次に、サーバシステムまたは他の処理システムは、次の10秒間にロボットが同時に走行するように計画された経路セグメントを見定め、その期間の行程体積に基づいてそれらの経路セグメントを調整する。したがって、サーバシステムまたは他の処理システムは、ロボットのグループの全体的な運動計画を一度に1期間ずつ段階的に生成し、比較的小さな時間窓にわたる移動をそれぞれ表す経路セグメントのグループを連結することにより、複雑な計画された移動を構築し、ここでグループ内の経路セグメントは、ロボット間の対立の可能性を制限または最小化するように、相互に基づいて決定される。いくつかの実装態様では、時間窓はタスクまたはタスクの一部を表すことができるため、分析される移動の各時間窓は、それぞれのロボットによって実行される作業または活動の特定の部分を表す。
【0110】
図4の技術およびその他上記で論じたような事項は、将来の運動の経路を計画することを含むが、ロボットは、計画に従って移動を実行するときに衝突および経路の対立を回避する技術を実装することもできる。例えば、ロボットは、他のロボットの行程体積を使用して計算された特定の経路に沿って移動するように命令されてもよいが、ロボットは、走行中にそのカメラおよび他のセンサを使用して経路を調整してもよい。これらの調整は、例えば、予期しない障害物を回避したり、他のロボットの計画経路からの逸脱に対応したりなどするために行うことができる。これらの調整にもかかわらず、複数のロボットの計画された運動に行程体積を使用すると、干渉の可能性が最も低く、そのため動的な経路の再調整(例えば、衝突回避のため)の必要性が最小限に抑えられる、最も混雑の少ないエリアにロボットを最初に導く改善された経路を提供することができる。
【0111】
図5は、ロボットの運動計画のためのプロセス500の一例を示すフロー図である。プロセス500は、1つ以上のコンピューティングデバイス、例えば、特定のロボットとは別のローカルコンピュータシステム、リモートコンピュータシステム、ロボットの1つ以上のプロセッサ、またはそれらの任意の組み合わせによって実行されてもよい。以下のこの説明では、これは、これらのコンピューティングデバイス、組み合わせ、または他のコンピューティングデバイスのいずれかを表すことができるコンピューティングシステムを参照することによって示される。
【0112】
502の間に、複数のロボットの各々に関して、移動の候補経路が決定される。候補経路は、起点から目的地まで延びてもよい。例えば、ロボットは、起点(例えば、ロボットの現在位置またはロボットが将来、経路に取り掛かる可能性がある別の位置)から目的地まで延びる候補経路に沿って移動する命令を受け取ってもよい。起点と目的地は、GPS座標、またはロボットおよび対応するシステムサーバが理解できる座標などの一連の座標によって定義できる。
【0113】
いくつかの実装態様では、ロボットは、そのシャーシ上に配置またはロボットアーム上に配置(例えば、ロボットの外部または内部)されたその1つ以上のセンサを使用して、走行する最初の経路を決定することができる。例えば、ロボット408は、1つ以上の障害物を含む環境の特性データを取得するためのセンサを含むことができる。センサには、いくつかの例を挙げると、RGBDセンサ、LIDARセンサ、レーダセンサ、近接センサ、赤外線センサ、加速度計、タッチセンサ、マイク、深度カメラ、および位置センサが含まれる。ロボット408は、このデータを使用して、環境に関する情報、ならびに例えば、障害物の形状、輪郭、サイズ、深さ、および位置などの障害物を説明する情報を生成することができる。さらに、ロボット408はまた、環境を分析している間、音声データおよび/または他のデータを取得することができる。各ロボットは、このステップを実行して候補経路を決定できる。さらに、サーバシステムは、ロボットが最終目的地に移動するための候補経路を提供してもよい。
【0114】
504の間に、複数のロボットの各々の行程領域は、ロボットがその候補経路に沿って通り抜けるであろうと判断される。特定のロボットの移動の候補経路に基づいて、サーバシステムまたはロボットは、移動の行程体積を移動の候補経路に関連付けることができる。移動の行程体積は、ロボットが移動の候補経路に沿って移動するときの移動領域(例えば、三次元空間内)を示す。行程の領域は、潜在的なサイズ、形状、移動、特定のロボットの構成要素の到達範囲などによって示される。例えば、この領域は、候補経路に沿った各点でロボットが到達できる可能性のある最も遠い点を示している。したがって、候補経路に沿った各点で、ロボットは回転するか、1つ以上のアームを伸ばすか、または形状を変更してもよく、これは、候補経路に沿った特定のロボットの行程移動の全体的な領域を変更させ得る。
【0115】
複数のロボットの行程移動には、ある期間にわたる複数のロボットの各ロボットの予測移動が含まれてもよい(例えば、行程移動は、同じ秒、同じ10秒の期間、同じ分など、同じ期間中のある時点でロボットによって実行されると予測または計画された移動を表する)。注目しているロボット以外の各ロボットの移動の行程領域は、ロボットの形状およびロボットの候補経路に基づいて予測できる。ロボットは実際には移動領域のすべての空間を移動するわけではないが、予測される移動の領域を生成することにより、サーバシステムは、他のロボットの予測経路とのあらゆる衝突を回避する更新された経路を生成できる。このステップは、注目しているロボットを除いて、複数のロボットの各々に対して実行される。
【0116】
506の間に、複数のロボットの行程領域のうちの少なくともいくつかが集約されて、異なる位置での行程領域間のオーバーラップ量が決定される。いくつかの実装態様では、1台のロボットが有することとなる候補経路が調整される。サーバシステムは、他のロボットの各々の行程移動領域を集約して、それらのオーバーラップ領域および非オーバーラップ領域を決定することとなる。サーバシステムは、各行程領域に関して、他のロボットのオーバーラップ領域および非オーバーラップ領域の数を決定できる。サーバシステムは、異なる位置で他の行程領域とオーバーラップする行程領域のうちの少なくともいくつかを集約できる。すべての行程領域にオーバーラップ領域があるわけではなく、それらの領域を集約しなければならないわけではない。さらに、その候補経路が調整されているロボットは、行程移動体積の集約を考慮に入れていない。
【0117】
いくつかの実装態様では、サーバシステムは、他のロボットの集約されたオーバーラップ領域の各々にコストを関連付ける。例えば、各行程領域に割り当てられるコストは、オーバーラップ領域の量に基づくことができる。スコアが高いほど、行程体積間のオーバーラップの程度が大きい領域に関連付けられる。同様に、スコアが低いほど、行程体積間のオーバーラップの程度が低い領域に関連付けられる。したがって、領域および対応するコストは「ヒートマップ」として表示できる。典型的には、最も高いコストが関連付けられた領域は、ヒートマップ上でホットスポットまたはホット領域として表される。同様に、低コストに関連付けられた領域は、ヒートマップ上でコールドスポットまたはコールド領域として示される。例えば、ヒートマップスコアは、「5」の高いスコアから「1」の低いスコアまでの範囲とすることができる。サーバシステムは、注目しているロボットの変更された経路を決定するのを支援するために、他のロボットのこれらの各領域にコストを関連付ける。
【0118】
508の間に、行程領域から外側に向けられた力ベクトルが割り当てられ、力ベクトルは、異なる位置での行程領域のそれぞれのオーバーラップ量に応じて割り当てられた異なる大きさを有する。サーバシステムは、他のロボットの行程領域の各領域に関連するコストに基づいて、コストに基づいて力ベクトルを生成する。例えば、生成される力ベクトルは、コストに正比例する斥力ベクトルとすることができる。したがって、最大の大きさを有する力ベクトルは、最も高いコストに関連付けられた領域(例えば、コストが「5」のオーバーラップ領域)に由来する。力ベクトルは、コストが最も高い領域から外側に反発する。さらに、より低いコストを有する領域、例えば、コストが「3」または「1」の領域は、外側に反発する力ベクトルを有するが、「4」または「5」のコストを有する領域に関連付けられた力ベクトルよりも大きさが小さくなる。
【0119】
いくつかの実装態様では、これらの領域からの力ベクトルは、領域の中心地から均一に外側に反発してもよい。あるいは、これらの領域からの力ベクトルは、領域の中心地から不均一に外側に反発してもよい。不均一性は、形状、体積、他の領域とオーバーラップする位置、および他の基準に基づいてもよい。他の実装態様では、これらのコストに関連付けられた力ベクトルは、コストに正比例する引力ベクトルとすることができる。コストが高いほど、力ベクトルの大きさが大きくなる。
【0120】
510の間に、特定のロボットが走行する経路は、行程領域および割り当てられた力の大きさに基づいて決定される。行程領域および割り当てられた力の大きさを使用して、サーバシステム、またはロボットは、対応するロボットの経路を生成できる。新しい経路を生成して、他のロボットの行程領域に対応する力ベクトルを回避できる。力ベクトルの最も強い大きさを回避するために、経路が移動してもよい。さらに、対応する新しい行程移動体積を生成して、新しい経路に関連付けることができる。例えば、
図4に示すように、新しい経路413を、ロボットが候補経路に沿って移動するときの、潜在的なサイズ、形状、移動、特定のロボットの到達距離などによって示される移動領域の図示を表す、新しい行程移動体積422に関連付けることができる。別の例では、新しい経路413は、行程移動体積422および物体の力の割り当てられた大きさを補償する調整された候補経路に基づくことができる。
【0121】
本明細書で説明された本発明の実施形態および機能的動作のすべては、デジタル電子回路内に、または本明細書に開示された構造およびそれらの構造上の均等物を含むコンピュータソフトウェア、ファームウェア、もしくはハードウェア内に、またはそれらのうちの1つ以上を組み合わせて実装され得る。本発明の実施形態は、1つ以上のコンピュータプログラム製品、すなわち、データ処理装置により実施するための、またはデータ処理装置の動作を管制するための、コンピュータ可読媒体上に符号化されたコンピュータプログラム命令の1つ以上のモジュールとして実装され得る。コンピュータ可読媒体は、非一時的なコンピュータ可読格納媒体、機械可読ストレージデバイス、機械可読ストレージ基板、メモリデバイス、機械可読伝播信号を引き起こす物質の組成物、またはこれらのうちの1つ以上の組み合わせであり得る。「データ処理装置」という用語は、データを処理するためのすべての装置、デバイス、および機械を包含し、それらには、例として、プログラマブルプロセッサ、コンピュータ、または複数のプロセッサもしくはコンピュータが含まれる。装置は、ハードウェアに加えて、コンピュータプログラムのための実施環境を作り出すコード、例えば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはそれらのうちの1つ以上の組み合わせを構成するコードを含み得る。伝播信号は、人工的に生成された信号、例えば、好適な受信機装置に伝送するための情報を符号化するように生成される、機械で生成された電気的、光学的、または電気磁気的信号である。
【0122】
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとしても知られている)は、コンパイル式またはインタープリット式言語を含む、任意の形式のプログラミング言語で書かれてもよく、独立型プログラムとして、またはモジュール、コンポーネント、サブルーチン、もしくはコンピューティング環境で使用するために好適な他のユニットとして含まれる任意の形式でデプロイされ得る。コンピュータプログラムは、必ずしもファイルシステム内のファイルに対応する必要はない。プログラムは、他のプログラムまたはデータを保持するファイルの一部(例えばマークアップ言語ドキュメントに格納された1つ以上のスクリプト)に、かかるプログラム専用の単一ファイルに、または複数の調整ファイル(例えば、1つ以上のモジュール、サブプログラム、もしくはコードの一部を格納するファイル)に格納され得る。コンピュータプログラムは、1つのサイトに配置されるか、または複数のサイトにわたって分散、かつ通信ネットワークにより相互接続された、1つのコンピュータ上または複数のコンピュータ上に実施されるようにデプロイされ得る。
【0123】
本明細書で説明されたプロセスおよびロジックフローは、1つ以上のコンピュータプログラムを実施する1つ以上のプログラマブルプロセッサによって実行されて、入力データ上で動作し、出力を生成することによって機能を実行し得る。プロセスおよびロジックフローはまた、専用論理回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によって実行され得、装置もまた、そのようなものとして実装され得る。
【0124】
コンピュータプログラムの実行に好適なプロセッサは、一例として、汎用および特定目的マイクロプロセッサの両方、ならびに任意の種類のデジタルコンピュータのうちの任意の1つ以上のプロセッサを含む。概して、プロセッサは、読み取り専用メモリもしくはランダムアクセスメモリ、またはその両方から命令および/またはデータを受信することになる。コンピュータの必須要素は、命令を実行するためのプロセッサ、ならびに命令およびデータを格納するための1つ以上のメモリデバイスである。概して、コンピュータはまた、データを格納するための1つ以上の大容量ストレージデバイス、例えば、磁気ディスク、光磁気ディスク、もしくは光ディスクを含むか、または大容量ストレージデバイスからデータを受信、もしくはデータを転送、もしくはその両方を行うように動作可能に結合される。しかしながら、コンピュータは必ずしもそのようなデバイスを有する必要はない。さらに、コンピュータは、別のデバイス、例えば、ごく一部ながら例を挙げると、タブレットコンピュータ、携帯電話、携帯情報端末(PDA)、モバイルオーディオプレーヤ、全地球測位システム(GPS)受信機に組み込まれ得る。コンピュータプログラム命令およびデータを格納するための好適なコンピュータ可読媒体には、不揮発性メモリ、媒体、およびメモリデバイスのすべての形態を含み、例として、半導体メモリデバイス(例えば、EPROM、EEPROM、およびフラッシュメモリデバイス)、磁気ディスク(例えば、内蔵ハードディスクまたは取り外し可能ディスク)、光磁気ディスク、ならびにCD-ROMおよびDVD-ROMディスクが含まれる。プロセッサおよびメモリは、専用ロジック回路によって補足され、またはそれに組み込まれ得る。
【0125】
ユーザとの対話を提供するために、本発明の実施形態は、コンピュータ上で実装され得、当該コンピュータは、ユーザに情報を表示するための表示デバイス、例えば、CRT(陰極線管)もしくはLCD(液晶ディスプレイ)モニタ、ならびにユーザがコンピュータに入力を提供できるキーボードおよびポインティングデバイス(例えば、マウス、トラックボール)を有する。他の種類のデバイスを使用して、ユーザとの対話を提供してもよく、例えば、ユーザに提供されるフィードバックは、任意の形式の感覚的フィードバック(例えば、視覚的フィードバック、聴覚的フィードバック、または触覚的フィードバック)であり得、ユーザからの入力は、音響、音声、または触覚入力を含む任意の形式で受信し得る。
【0126】
本発明の実施形態は、バックエンドコンポーネント(例えば、データサーバとして)を含むか、またはミドルウェアコンポーネント(例えば、アプリケーションサーバ)を含むか、またはフロントエンドコンポーネント(例えば、ユーザが本発明の実装態様と対話し得るグラフィカルユーザインターフェースもしくはウェブブラウザを有するクライアントコンピュータ)を含む、コンピューティングシステム、または1つ以上のそのようなバックエンド、ミドルウェア、またはフロントエンドコンポーネントの任意の組み合わせに実装され得る。システムのコンポーネントは、デジタルデータ通信の任意の形式または媒体、例えば、通信ネットワークによって相互接続し得る。通信ネットワークの例には、ローカルエリアネットワーク(「LAN」)およびワイドエリアネットワーク(「WAN」)、例えばインターネットが含まれる。
【0127】
コンピューティングシステムには、クライアントとサーバとが含まれ得る。クライアントおよびサーバは概して、互いにリモートであり、典型的には通信ネットワークを介して相互作用する。クライアントとサーバとの関係は、それぞれのコンピュータで実行され、かつ互いにクライアントとサーバとの関係を有している、コンピュータプログラムによって生じる。
【0128】
いくつかの実装態様については上記で詳細に説明したが、他の修正も可能である。例えば、クライアントアプリケーションはデリゲートにアクセスするものとして説明されているが、他の実装態様では、デリゲートは、1つ以上のサーバで実行されるアプリケーションなど、1つ以上のプロセッサによって実装される他のアプリケーションによって採用されてもよい。加えて、図に描写されたロジックフローは、望ましい結果を達成するために、示された特定の順序、または連続した順序を必要としない。さらに、説明されたフローから他の動作が提供されたり、説明されたフローから動作が削除されたり、他の構成要素が説明されたシステムに追加されたり、説明されたシステムから削除されたりされてもよい。したがって、他の実装態様は、以下の特許請求の範囲内にある。
【0129】
本明細書は多くの特定の実装態様の詳細を含むが、これらは、いずれかの発明の範囲、または請求され得る事項の範囲を限定するものとして解釈されるべきではなく、むしろ特定の発明の特定の実施形態に特有の特徴の説明として解釈されるべきである。別個の実施形態の局面で本明細書に記載された特定の特徴を、単一の実施形態で組み合わせて実装することもできる。逆に、単一の実施形態の局面で本明細書に記載された様々な特徴を、複数の実施形態で別個に、または任意の好適な副次的組み合わせで実装することもできる。また、特徴は、特定の組み合わせで作用するものとして上記され、および当初はそのように特許請求され得るが、いくつかの場合、特許請求された組み合わせからの1つ以上の特徴を、その組み合わせから削除することができ、特許請求された組み合わせは、副次的組み合わせまたは副次的組み合わせの変形例を対象とし得る。
【0130】
同様に、動作が特定の順序で図面に図示されているが、これは、望ましい結果を達成するために、かかる動作がその示された特定の順序、もしくは一連の順序で遂行されるべきであること、または例証したすべての動作が遂行されるべきであることを要求するものとして理解されるべきではない。特定の状況では、マルチタスクおよび並列処理が有利な場合がある。さらに、上記した実施形態における様々なシステムモジュールおよびコンポーネントの分離は、すべての実施形態においてかかる分離を必要とするものとして理解されるべきではなく、記載されたプログラムコンポーネントおよびシステムは、概して、単一のソフトウェア製品内に共に一体化されてもよく、または複数のソフトウェア製品にパッケージ化されてもよい。
【0131】
主題の特定の実施形態を説明してきた。他の実施形態は、以下の特許請求の範囲内に存在する。例えば、特許請求の範囲に記載された動作は、異なる順序で実行されてもよく、望ましい結果を依然として達成することができる。一例として、添付の図に図示されたプロセスは、望ましい結果を達成するために、必ずしも示された特定の順序、または一連の順序を必要としない。ある実装態様では、マルチタスクおよび並列処理が、有利である場合がある。