(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-06-27
(45)【発行日】2024-07-05
(54)【発明の名称】モーション計画グラフ生成ユーザインターフェース、システム、方法、および物品
(51)【国際特許分類】
B25J 9/22 20060101AFI20240628BHJP
【FI】
B25J9/22 A
(21)【出願番号】P 2021561986
(86)(22)【出願日】2020-04-15
(86)【国際出願番号】 US2020028343
(87)【国際公開番号】W WO2020214723
(87)【国際公開日】2020-10-22
【審査請求日】2023-01-26
(32)【優先日】2019-04-17
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】520296244
【氏名又は名称】リアルタイム ロボティクス, インコーポレーテッド
【氏名又は名称原語表記】REALTIME ROBOTICS, INC.
【住所又は居所原語表記】27 Wormwood St.,Suite #110,Boston,Massachusetts 02210 United States of America
(74)【代理人】
【識別番号】100105131
【氏名又は名称】井上 満
(74)【代理人】
【識別番号】100105795
【氏名又は名称】名塚 聡
(72)【発明者】
【氏名】フロイド-ジョーンズ,ウィリアム
(72)【発明者】
【氏名】マーレイ,シーン
(72)【発明者】
【氏名】リャン,マシュー
(72)【発明者】
【氏名】シーバーリング,アルネ
【審査官】岩▲崎▼ 優
(56)【参考文献】
【文献】特開2018-134703(JP,A)
【文献】特表2018-505788(JP,A)
【文献】特開2002-73130(JP,A)
【文献】米国特許出願公開第2008/0125893(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
B25J 1/00ー21/02
(57)【特許請求の範囲】
【請求項1】
ユーザインターフェースを提供するためのプロセッサベースのシステムにおけるオペレーション方法であって、前記方法は、
1つまたは複数の起点ポーズの視覚的指定を可能にする少なくとも1つのユーザインターフェース要素を提供するステップと、
前記プロセッサベースのシステムによって、いくつかの追加ポーズを自律的に生成するステップであって、前記起点ポーズおよび自律的に生成された前記追加ポーズはポーズグループを形成する、該ステップと、
前記プロセッサベースのシステムによって、いくつかのエッジを自律的に生成するステップであって、各エッジは、前記起点ポーズおよび
前記自律的に生成された前記追加ポーズを含む前記ポーズグループの前記ポーズのそれぞれのペアの間の移行を特定する、該ステップと、を有
し、
前記プロセッサベースのシステムによって、前記自律的に生成された前記追加ポーズのいずれかが運動学的制約に違反するかどうかを決定するために、前記自律的に生成された前記追加ポーズの運動学的検査を自律的に実行するステップと、
前記プロセッサベースのシステムによって、前記ポーズの前記それぞれのペアのそれぞれの間の各移行の衝突検査を自律的に実行するステップと、
前記プロセッサベースのシステムによって、前記衝突検査を成功裏に通過し、前記運動学的検査を成功裏に通過した自律的に生成された前記エッジ及び前記自律的に生成された前記追加ポーズのそれぞれについての前記自律的に生成された前記エッジに対応するエッジ及び前記自律的に生成された前記追加ポーズに対応するノードをモーション計画ラティスに追加するステップを含み、
前記モーション計画ラティスは複数のノードと複数のエッジとを含み、前記ノードはそれぞれの状態を表し、前記エッジは前記モーション計画ラティス内の前記エッジのそれぞれの1つによって結合された前記ノードのそれぞれのペアによって表される前記状態のペアの間の有効な移行をそれぞれ表す、方法。
【請求項2】
前記プロセッサベースのシステムによる
視覚的に示された1つまたは複数の前記起点ポーズの運動学的検査を自律的に実行するステップをさらに有する、請求項1に記載の方法。
【請求項3】
自律的に生成された前記追加ポーズの運動学的検査を自律的に実行するステップは、ロボットの幾何学的形状に基づいて、前記プロセッサベースのシステムによって自律的に生成された前記追加ポーズの運動学的検査を自律的に実行するステップを含む、請求項2に記載の方法。
【請求項4】
前記ポーズのそれぞれの
間の移行の衝突検査を自律的に行うステップをさらに有する、請求項1に記載の方法。
【請求項5】
前記ポーズのそれぞれのペア間の各移行の衝突検査を自律的に実行するステップ
は、
前記起点ポーズと前記自律的に生成された前記追加ポーズとを含む前記ポーズグループ内の前記ポーズのそれぞれのペアの間のそれぞれの移行の衝突検査を自律的に実行するステップをさらに有する、請求項1に記載の方法。
【請求項6】
前記プロセッサベースのシステムによって、ロボットが自己衝突しているか、またはワークスペース内の物体と衝突している場合に、前記ポーズグループから任意のポーズを自律的に排除するステップをさらに有する、請求項1に記載の方法。
【請求項7】
前記プロセッサベースのシステムによって、第1のサブラティス
内のポーズと第2のサブラティス
内のポーズの間でポーズを接続するいくつかのサブラティス接続ポーズを自律的に生成するステップをさらに有する、請求項1に記載の方法。
【請求項8】
前記プロセッサベースのシステムによって、第1のサブラティス
内のポーズと第2のサブラティス
内のポーズとの間でポーズを接続するいくつかのサブラティス接続エッジを自律的に生成するステップをさらに有する、請求項1に記載の方法。
【請求項9】
有効なポーズを無効なポーズから視覚的に区別する視覚的提示を提供するステップをさらに含む、請求項1に記載の方法。
【請求項10】
プレゼンテーションウィンド内のロボットの視覚的表現における選択されたアイテムの並進または回転の少なくとも1つがドラッグ入力を介して指定されることを可能にする少なくとも1つのユーザインターフェース要素を提示するステップをさらに含む、請求項1に記載の方法。
【請求項11】
プレゼンテーションウィンド内のロボットの視覚的表現における選択された関節の並進または回転のうちの少なくとも1つがドラッグ入力を介して指定されることを可能にする少なくとも1つのユーザインターフェース要素を提示するステップをさらに含む、請求項1に記載の方法。
【請求項12】
プロセッサベースのシステムであって、
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサによって実行されるとき、前記少なくとも1つのプロセッサに、
グラフィカルユーザインターフェースを提供させ、
1つまたは複数の起点ポーズの指定を受信させ、
いくつかの追加ポーズを自律的に生成させ、
いくつかのエッジを自律的に生成させ
、
前記プロセッサベースのシステムによって、前記自律的に生成された前記追加ポーズのいずれかが運動学的制約に違反するかどうかを決定するために、前記自律的に生成された前記追加ポーズの運動学的検査を自律的に実行させ、
前記プロセッサベースのシステムによって、前記ポーズの前記それぞれのペアのそれぞれの間の各移行の衝突検査を自律的に実行させ、
前記衝突検査を成功裏に通過し、前記運動学的検査を成功裏に通過した自律的に生成された前記エッジ及び前記自律的に生成された前記追加ポーズのそれぞれについての前記自律的に生成された前記エッジに対応するエッジ及び前記自律的に生成された前記追加ポーズに対応するノードをモーション計画ラティスに追加させる、少なくとも1つのプロセッサ実行可能命令またはデータを格納する少なくとも1つの非一時的プロセッサ読み取り可能媒体を有し、
前記起点ポーズおよび自律的に生成された前記追加ポーズはポーズグループを形成し、
各エッジは前記起点ポーズ及び
前記自律的に生成された前記追加ポーズを含む前記ポーズグループのそれぞれの前記ポーズのペアの間の移行を特定
し、
前記モーション計画ラティスは複数のノードと複数のエッジとを含み、前記ノードはそれぞれの状態を表し、前記エッジは前記モーション計画ラティス内の前記エッジのそれぞれの1つによって結合された前記ノードのそれぞれのペアによって表される前記状態のペアの間の有効な移行をそれぞれ表す、
プロセッサベースのシステム。
【請求項13】
前記少なくとも1つのプロセッサによって実行されたとき、プロセッサ実行可能命令またはデータのうちの前記少なくとも1つは、前記少なくとも1つのプロセッサに、
視覚的に示された1つまたは複数の前記起点ポーズの運動学的検査を自律的に実行させる、請求項
12に記載のプロセッサベースのシステム。
【請求項14】
自律的に生成された前記追加ポーズの運動学的検査を自律的に実行するために、前記少なくとも1つのプロセッサは、
ロボットの幾何学的形状に基づいて自律的に生成された前記追加ポーズの運動学的検査を自律的に実行する、請求項
13に記載のプロセッサベースのシステム。
【請求項15】
前記少なくとも1つのプロセッサによって実行されるとき、プロセッサ実行可能な命令またはデータのうちの前記少なくとも1つは、前記少なくとも1つのプロセッサに、さらに、
各前記ポーズのそれぞれの
間の移行の衝突検査を自律的に行なわせる、請求項
12に記載のプロセッサベースのシステム、
【請求項16】
前記少なくとも1つのプロセッサによって実行されるとき、プロセッサ実行可能な命令またはデータのうちの前記少なくとも1つは、前記少なくとも1つのプロセッサに、さらに、
前記ポーズのそれぞれのペア間の各移行の衝突検査を自律的に実行させる
ために、
プロセッサ実行可能な命令またはデータのうちの前記少なくとも1つは、前記起点ポーズと前記自律的に生成された追加ポーズとを含む前記ポーズグループ内の前記ポーズのペアのそれぞれの間のそれぞれの移行の衝突検査を自律的に実行させる、
請求項9に記載のプロセッサベースのシステム。
【請求項17】
前記少なくとも1つのプロセッサによって実行されるとき、プロセッサ実行可能命令またはデータのうちの前記少なくとも1つは、前記少なくとも1つのプロセッサに、さらに、
ロボットが自己衝突しているか、またはワークスペース内の物体と衝突している場合に、前記ポーズグループから任意のポーズを自律的に排除する、請求項
12に記載のプロセッサベースのシステム。
【請求項18】
前記少なくとも1つのプロセッサによって実行されるとき、プロセッサ実行可能命令またはデータのうちの前記少なくとも1つは、前記少なくとも1つのプロセッサに、さらに、
第1のサブラティス
内のポーズと第2のサブラティス
内のポーズとの間でポーズを接続するいくつかのサブラティス接続ポーズを自律的に生成させる、請求項
12に記載のプロセッサベースのシステム。
【請求項19】
前記少なくとも1つのプロセッサによって実行されるとき、プロセッサ実行可能命令またはデータのうちの前記少なくとも1つは、前記少なくとも1つのプロセッサに、さらに、
第1のサブラティス
内のポーズと第2のサブラティス
内のポーズとの間でポーズを接続するいくつかのサブラティス接続エッジを自律的に生成させる、請求項
12に記載のプロセッサベースのシステム。
【請求項20】
前記少なくとも1つのプロセッサによって実行されるときに、プロセッサ実行可能命令またはデータのうちの前記少なくとも1つは、前記少なくとも1つのプロセッサに、さらに、
有効なポーズと無効なポーズの視覚的に区別する視覚的提示を提供させる、請求項
12に記載のプロセッサベースのシステム。
【請求項21】
前記少なくとも1つのプロセッサによって実行されるときに、プロセッサ実行可能命令またはデータのうちの前記少なくとも1つは、前記少なくとも1つのプロセッサに、さらに、
プレゼンテーションウィンド内のロボットの視覚的表現における選択されたアイテムの並進または回転の少なくとも1つがドラッグ入力を介して指定されることを可能にする少なくとも1つのユーザインターフェース要素を提示させる、請求項12に記載のプロセッサベースのシステム。
【請求項22】
前記少なくとも1つのプロセッサによって実行されるときに、プロセッサ実行可能命令またはデータのうちの前記少なくとも1つは、前記少なくとも1つのプロセッサに、さらに、
プレゼンテーションウィンド内のロボットの視覚的表現における選択された関節の並進または回転のうちの少なくとも1つがドラッグ入力を介して指定されることを可能にする少なくとも1つのユーザインターフェース要素を提示させる、請求項12に記載のプロセッサベースのシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は一般に、ロボットのモーション計画に関し、特に、ロボットのモーション計画に有用なモーション計画グラフの生成を容易にするユーザインターフェース、システム、方法、および物品に関する。
【背景技術】
【0002】
モーション計画は、可動付属肢を有するロボットおよび自律または半自律車両を含むロボット制御およびロボット工学における基本的な問題である。モーション計画はロボットが開始状態またはポーズ(又は、姿勢)から目標状態またはポーズへと追従することができる経路を完全に指定し、典型的には、動作環境内の障害物と衝突することなく、または動作環境内の障害物と衝突する可能性を低減する。モーション計画(又は、モーションプランニング/動作プラニング/動作計画/運動計画/motion planning/動作を計画すること)の課題は、ロボット自体の特性が変化しても、動作中の障害物だけでなく、ロボット自体の運動学を説明する比較的低コストで非常に高速な速度でモーション計画を実行する能力を含む。例えば、そのような特性はロボットが様々なサイズの物体を保持しているとき、異なるエンドエフェクタに変更するとき、または異なる付属肢(又は、アペンデージ/appendage)に変更するときに、ロボットによって占有されていると考えられる容積を含むことができる。また、プロセッサチップ回路上に記憶することができる限られた量のモーション計画情報に関しても課題がある。
【0003】
モーション計画グラフツールキットはモーションプランナ(例えば、リアルタイムロボットモーション計画アクセラレータおよびRapidSense Spatial Perceptionシステム(又は、ラピッドセンス空間感知システム))によって使用されるモーション計画グラフ(本明細書では交換可能にロードマップまたはロードマップファイルまたはラティス(又は、格子/lattice)と呼ばれる)の作成または生成を可能にする。モーション計画グラフツールキットは、1つ以上の非一時的コンピュータまたはプロセッサ可読媒体上に記憶されるプロセッサ実行可能命令またはアプリケーション(例えば、ソフトウェアおよび/またはファームウェア)として実装される。モーション計画グラフツールキットは、直感的なユーザインターフェース、例えば直感的なグラフィカルユーザインターフェース(GUI)を提供する。アプリケーションはエンドユーザがロボットのデジタルモデルまたは仮想モデル、およびロボットが動作する動作環境(本明細書では互換的にワークセルと呼ばれる)のデジタル表現または仮想表現と対話して、既知の位置を有する物体(例えば、静止物体)に関して運動学的(又は、動力学的に)に検査(又は、チェック)され、衝突検査されたモーション計画グラフまたはロードマップまたはラティスを生成または作成することを可能にする。運動学的検査はロボットが例えば、物理的な幾何学的形状または設計、またはロボット(例えば、関節の数、関節の位置、自由度、付属肢の長さ)に基づいて、定義された状態またはポーズになれるか、またはそれに移動し得るかを決定することを含み得る。衝突検査は、ロボットが例えば、環境内の静止物体と衝突することがないなど、衝突無しで定義された状態またはポーズになれるか、または移動することができるかどうかを判定することを含むことができる。
【0004】
システムまたはアプリケーションは起点の(又は、原点の/オリジンの)または「シード」ポーズ(”seed” poses)の指定を可能にするユーザインターフェース(例えば、グラフィカルユーザインターフェース)を提示することができる。これは、有利には、ロボットおよび障害物を伴う環境の表現が提示されるプレゼンテーションウィンドを提供することができる。ユーザインターフェースは起点またはシードポーズが視覚的に指定されることを可能にするツールを提供することができ、ロボットの現在のポーズ、将来のポーズ、または過去のポーズさえも表すことができる。
【0005】
システムまたはアプリケーションはいくつか(又は、多数)の追加ポーズ、例えば、隣接ポーズまたは同じ領域内のポーズを自律的に生成することができ、起点ポーズおよび追加または隣接ポーズはポーズグループ(又は、ポーズのグループ)を形成し、また、自律的にいくつかのエッジを形成し、各エッジが、起点ポーズおよび追加または隣接ポーズを含むポーズグループのポーズのそれぞれのペア間の移行(又は、遷移)を識別する。
【0006】
システムまたはアプリケーションは、ロボットの自己衝突またはロボットにとって不可能なポーズを識別するなど、運動学的検査を自律的に実行してもよい。
【0007】
システムまたはアプリケーションは、ポーズのそれぞれの衝突検査を自律的に実行することができる。システムまたはアプリケーションは、ポーズのそれぞれのペア(又は、対)の間の各移行の衝突検査を自律的に実行することができる。
【0008】
システムまたはアプリケーションはロボットが自己衝突しているか、またはワークスペース内の物体と衝突している場合に、ポーズグループから任意のポーズを自律的に除去することができる。
【0009】
ユーザインターフェースを提供するためのプロセッサベースのシステムにおけるオペレーションの方法は、
1つまたは複数の起点またはシードポーズの視覚的指定を可能にする少なくとも1つのユーザインターフェース要素を提供するステップと、
1つまたは複数の起点またはシードポーズの指定を受信するステップと、
例えば、隣接ポーズまたは同じ領域内のポーズなどのいくつかの追加ポーズを自律的に生成するステップであって、起点ポーズおよび追加または隣接ポーズがポーズグループを形成する、該ステップと、
いくつかのエッジを自律的に生成するステップであって、各エッジが起点ポーズおよび追加または隣接ポーズを含むポーズグループのポーズのそれぞれのペア間の移行を特定する、該ステップを含むものとして要約され得る。
【0010】
この方法は、プロセッサベースのシステムによって運動学的検査を自律的に実行することをさらに含むことができる。運動学的検査を自律的に実行することは、ロボットの幾何学的形状に基づいて、プロセッサベースのシステムによって自律的に生成された追加ポーズの運動学的検査を自律的に実行することを含むことができる。
【0011】
この方法は、各ポーズの衝突検査を自律的に実行するステップをさらに含むことができる。
【0012】
この方法は、ポーズのそれぞれのペアの間の各移行の衝突検査を自律的に実行するステップをさらに含むことができる。
【0013】
この方法はさらに、プロセッサベースのシステムによって、ポーズグループから、ロボットが自己衝突しているか、またはワークスペース(又は、作業空間)内の物体と衝突している任意のポーズを自律的に排除することを含むことができる。
【0014】
本明細書では可動付属肢およびエンドエフェクタを有するロボットに関して、実装形態および例を一般的に説明するが、本明細書で説明する様々な構造、プロセス、および技法を、例えば自律車両を含む他のロボットに適用することができる。特に明記しない限り、本明細書におけるロボットへの言及は、移動可能な付属肢を有するロボット、ならびに自律車両の形態のロボットを含む。本明細書では、リアルタイムロボットモーション計画加速器(MPA)に関して、実施形態および例を一般的に説明するが、他のモーション計画器は本明細書で一般的に説明されるモーション計画グラフ、ロードマップ、またはラティスを使用することができる。
【図面の簡単な説明】
【0015】
図面において、同一の参照番号は、同様の要素または作用を示す。図面における要素のサイズおよび相対位置は、必ずしも一定の縮尺で描かれてはいない。例えば、さまざまな要素の形状および角度は一定の縮尺で描かれず、これらの要素のいくつかは、図面を見やすくするために、随時適当に拡大および配置されている。さらに、描かれた要素の特定の形状は、特定の要素の実際の形状に関するいかなる情報も伝えることを意図しておらず、図面における認識を容易にするために単に選択されたものである。
図1は、1つの例示としての実施に従って、ロボットが動作し得る環境の概略図である。
図2は、少なくとも部分的に、
図1の環境で動作することができるロボットのモーション計画に有用なモーション計画グラフを生成するように動作可能な、1つの例示された実施形態によるプロセッサベースのシステムの機能ブロック図である。
図3Aは、図示された一実施形態による、
図2のプロセッサベースのシステムによって最初に提示されるグラフィカルユーザインターフェースの最初の画面のスクリーンプリント(又は、スクリーン画面)であり、モーション計画グラフを事前に生成する。
図3Bは、図示された一実施形態による、
図2のプロセッサベースシステムによって2回目に提示されるグラフィカルユーザインターフェースの第1画面のスクリーンプリントである。
図3Cは、図示された一実施形態による、
図2のプロセッサベースシステムによって提示されるグラフィカルユーザインターフェースの新規プロジェクトダイアログボックスのスクリーンプリントである。
図3Dは、図示された一実施形態による、
図2のプロセッサベースシステムによって提示されるグラフィカルユーザインターフェースの衝突部品取り付けダイアログボックスのスクリーンプリントである。
図3Eは、図示された一実施形態による、
図2のプロセッサベースシステムによって提示されるグラフィカルユーザインターフェースのエンドエフェクタダイアログボックスのスクリーンプリントである。
図3Fは、図示された一実施形態による、
図2のプロセッサベースのシステムによって提示されるグラフィカルユーザインターフェースのロボットインスペクタダイアログボックス(又は、検査ダイアログボックス)のスクリーンプリントである。
図3Gは、図示された一実施形態による、
図2のプロセッサベースのシステムによって提示されるグラフィカルユーザインターフェースのワークスペースインスペクタダイアログボックスのスクリーンプリントである。
図3Hは、図示された一実施形態による、
図2のプロセッサベースシステムによって提示されるグラフィカルユーザインターフェースの起点ポーズ設定ダイアログボックスのスクリーンプリントである。
図3Iは、図示された一実施形態による、
図2のプロセッサベースのシステムによって提示されるグラフィカルユーザインターフェースのロードマップ領域ウィンドのスクリーンプリントであり、複数の起点ポーズを有する例示的なロードマップ領域を示す。
図3Jは、図示された一実施形態による、
図2のプロセッサベースのシステムによって提示されるグラフィカルユーザインターフェースのスクリーンプリントであり、経路可視オプション(又は、経路表示オプション)が選択されたときの、現在のエッジの例示的なロボット、ワークスペース、および経路を示す。
図3Kは、図示された一実施形態による、
図2のプロセッサベースのシステムによって提示されるグラフィカルユーザインターフェースのスクリーンプリントであり、例示的なロボット、ワークスペース、およびエッジを示している。
図4Aは、1つの例示の実施形態による、
図1のロボットのための例示的なモーション計画グラフであって、対応する移行がロボットと環境内の1つ以上の障害物との間の衝突をもたらすであろうと判定された計画グラフのエッジを含む。
図4Bは、1つの例示の実施形態による、
図1のロボットのための例示的モーション計画グラフであって、対応する移行がロボットと環境内の1つ以上の障害物との間の衝突をもたらすであろうと判定された計画グラフのエッジが除去されている。
図5は、1つの例示の実施形態による、プロセッサベースのシステムにおけるオペレーションの方法を示すフロー図である。
図6は、1つの例示の実施形態による、
図5に示された方法を実行する際に使用され得る、プロセッサベースのシステムにおけるオペレーションの方法を示すフロー図である。
【発明を実施するための形態】
【0016】
以下の説明においては、種々の開示の実施形態が正しく理解されるように、ある程度具体的に詳細を記載する。但し、当業者ならば、これら具体的な詳細の1つ以上を欠いても、または他の方法、他の構成部材、他の材料を用いても実施が可能であることは容易に理解するところであろう。他の例では、コンピュータシステム、アクチュエータシステム、および/または通信ネットワークに関連する周知の構造は実施形態の説明を不必要に曖昧にすることを避けるために、詳細には示されておらず、または説明されていない。他の例では実施形態の説明を不必要に曖昧にすることを回避するために、1つまたは複数のオブジェクトなどの知覚データおよびボリュメトリック表現を生成するための周知のコンピュータビジョン方法および技法は詳細には説明されていない。
【0017】
本明細書及び特許請求の範囲において文脈上他に要求されない限り、用語「を有する(comprise)」及びそのヴァリエーション(comprises、comprising等)は、「含むが、それに限定されない(including, but not limited to)」として、確定していない(open)包括的な意味であるとみなされるべきである。
【0018】
本明細書全体を通して、「一実施形態(one embodiment又はan embodiment)」とは実施形態に関連して説明された特定の特徴、構成または特質が少なくとも一実施形態に含まれることを意味し、したがって、本明細書全体を通して様々な箇所に「一実施形態(one embodiment又はan embodiment)において」という語句が現れることは必ずしもすべてが同じ実施形態を指すわけではない。さらに、特定の特徴、構造または特質は1以上の実施形態において任意の適当な方法で組み合わせられ得る。
【0019】
本明細書および添付の特許請求の範囲で使用されるように、単数形「a」、「an」、および「the」は文脈上別段の明確な指示をしない限り、複数の指示対象を含む。また、用語「または」は文脈上別段の明確な指示をしない限り、「および/または」を含む意味で一般に使用されることにも留意されたい。
【0020】
発明の名称及び要約は便宜上のものであり、本発明の範囲を表すものではなく、又は実施形態を意味するものでもない。
【0021】
図1は、1つの例示としての実施形態による、ロボット102が動作し得る動作環境100を示す。簡潔にするために、本明細書では、動作環境100を環境100と呼ぶ。環境はロボット102が動作し、移動することができる二次元または三次元空間を表す。ロボット102はデカルト(Cartesian)、ロボットアセンブリ用選択的コンプライアンスアーム(SCARA)、円筒座標(cylindrical)、デルタ(delta)、極座標(polar)、および垂直関節型ロボットを含むが、これらに限定されない、任意のタイプのロボットであってもよい。また、ロボットは自律的に又は半自律的に(すなわち、少なくとも部分的には自律的に)作動し、環境100によって表される空間内を移動することができる自動車、飛行機、ドローン、又は任意の他の車両であってもよい。環境100はロボットが動作し、ロボットの「構成空間」(しばしば「C空間」と呼ばれる)とは異なり、ロボットの「構成空間」は
図4Aおよび
図4Bのモーション計画グラフに関して以下で参照され、「自動車および再構成可能な動作計画プロセッサのための動作計画」と題された2017年6月9日に出願された国際特許出願第PCT/US2017/036880号(その全体が参照により本明細書に組み込まれる)、ならびに「特定のロボット動作計画ハードウェアおよびその製造および使用方法」と題された2016年1月5日に出願された国際特許出願第WO2016/122840号(その全体が参照により本明細書に組み込まれる)に説明されているように、二次元または三次元空間である。構成空間は典型的には多くの次元(すなわち、三次元より大きい)である。特に、計画グラフの各ノードはロボットの特定の構成(ロボットの関節位置の特定のセットの完全な仕様である)、ロボットのポーズ、速度、および方位を含むことができるが、これらに限定されない、ロボットの状態を表す。計画グラフの各エッジは、ある状態から別の状態へのロボットの移行を表す。
【0022】
図1を参照すると、環境100は、障害物衝突領域を含むことができる。これらの障害物衝突領域は環境100内の静的物体(例えば、ビン、コンテナ、柱、棚、建物、木、岩、家具)または動的物体(例えば、他のロボット、車両、人)によるものであり得る。例えば、障害物A 112および障害物B 104は、ロボット102が障害物A 112または障害物B 104のいずれかと同時に環境100内の同じ空間を占有しようとした場合に、ロボット102が障害物A 112または障害物B 104と衝突することが可能であるように、環境100内に衝突領域を作り出す物体を表す。様々な実施形態では、
図1に示すオブジェクトよりも少ないオブジェクトまたは追加のオブジェクトがあってもよい。
【0023】
さらに、ロボット自体の幾何学的形状、ならびにロボットの数、位置、および移動の自由度に基づいて、ロボットの移動またはポーズに課される運動学的制約が一般に存在する。
【0024】
モーション計画に対する課題は比較的低コストであるが、非常に高速でモーション計画を実行する能力を含む。これに関与するのは、ロボット102が占有されていると考えられる空間および環境100内の障害物を効率的に表現し、伝達し、比較するための課題である。例えば、
図1に示されるように、障害物A 112は、現在、ロボット102の前方にある。ロボット102が、ロボットアーム106のどの動作(およびロボット102の任意の動作)が障害物A 112との衝突をもたらすかを迅速かつ効率的に判定することができることは有利である。したがって、本開示はロボット102および1つまたは複数の障害物A 112によって占有される環境100内で動作する、自律車両を含むロボット102のためのモーション計画を可能にするために、モーション計画グラフ、ロードマップまたはラティスを生成する解決策を提供する。特に、エンドユーザは1つまたは複数のポーズを指定することができ、システムまたはアプリケーションは、有利には1つまたは複数の自律的に生成された追加のポーズ、およびポーズ間のエッジを自動的にまたは自律的に決定することができる。システム又はアプリケーションは、ポーズ及びエッジの運動学的検査及び衝突検査を自動的に又は自律的に実行することが有利である。
【0025】
図1は代表的な環境100を示すが、典型的な環境は他のロボットに対応する物体、ならびに様々な他の自然または人工の静的および動的な物体および障害物を含む、多くの追加の物体および実体を含むことができる。本明細書で教示する概念は、図示したものよりも込み入った(又は、物の多い/populated)環境で同様に使用することができる。
【0026】
図2および以下の説明は、例示された一実施形態による、様々な例示され説明されたモーション計画システムおよび方法が実施され得る、適切なプロセッサベースのシステム200の簡潔で一般的な説明を提供する。
【0027】
必須ではないが、実施形態の多くはコンピュータまたはプロセッサ可読媒体上に記憶され、衝突評価およびモーション計画動作を実行することができる1つ以上のコンピュータまたはプロセッサによって実行されるプログラムアプリケーションモジュール、オブジェクト、またはマクロなどの、コンピュータ実行可能命令の一般的なコンテキストで説明される。そのようなモーション計画の動作は、計画グラフのエッジに関連するロボットの掃引ボリューム(又は、掃引体積/swept volumes)の1つまたは複数の離散化された(discretized)表現を生成することと、ロボット掃引ボリュームの離散化された表現を生成するためにいくつかの離散化(discretizations)のうちのどれを使用するかを決定すること、環境中の障害物を含む、ロボット102が動作することになる環境の離散化された表現を生成すること、環境の離散化された表現を生成するために、複数の離散化のうちのどれを使用するかを決定すること、複数の計画グラフを決定すること、決定された複数の計画グラフおよびエッジ情報のそれぞれのセットを記憶すること、計画グラフのノードによって表される状態の間を遷移する際にロボット102の少なくとも一部によって掃引されるボリュームを表す情報を生成すること、計画グラフのエッジに関する衝突評価を実行すること(又は、計画グラフのエッジでの衝突評価を実行すること)、計画グラフのためのエッジ情報のセットを提供すること、計画グラフから1つまたは複数の最適化された結果を識別すること、計画グラフのエッジに関連する掃引ボリュームの離散化された表現と、ロボット102が動作する環境内の障害物の離散化された表現との間の衝突に対して衝突検査を行うこと、最適化がロボット102のための衝突のない経路を生成するかどうかを判定すること、及び、ロボット102のためのモーション計画を実施することのうちの1つまたは複数を含むことができるが、それらに限定されない。
【0028】
図1のロボット102は、
図2に示すセンサ282などのセンサを有し、これはプロセッサ212aなどの1つまたは複数のプロセッサに知覚データを送る。知覚データは、どのボクセル又はボックス又は他の表現が現在の環境で占有されているかのストリームとして提供することができる。このデータは、占有グリッドまたは他のデジタル表現の形でプロセッサ212aなどの1つまたは複数のプロセッサによって生成される(または前記プロセッサに提供される)。特に、ロボットまたは環境100内の物体(例えば、障害物)のいずれかを表す場合、それらの表面をボクセル(3Dピクセル)または多角形(又は、ポリゴン)のメッシュ(しばしば三角形)のいずれかとして表すことができる。空間の各離散化された領域は、「ボクセル」と呼ばれ、3D(体積)ピクセルと等価である。場合によっては、代わりに物体をボックス(直角プリズム)として表すことが有利である。物体がランダムに成形されていないという事実のために、ボクセルがどのように構成されるかにはかなりの量の構造が存在することがあり、物体内の多くのボクセルは3D空間内で互いにすぐ隣り合っている。したがって、オブジェクトをボックスとして表すことは、はるかに少ないビットを必要とすることがある(すなわち、ボックスの2つの対向するコーナーについてのx、y、zデカルト座標だけを必要とすることがある)。また、ボックスに対して交差テスト(又は、インターセクションテスト/intersection tests)を行うことは、ボクセルに対して行うことに匹敵する複雑さである。
【0029】
多くの実施形態は複数のセンサの出力を組み合わせることができ、センサは、非常に細かい粒度のボクセル化を提供することができる。しかし、ロボット102がモーション計画を効率的に実行するために、ロボット102のプロセッサ212aは様々な状態間の遷移を行うときに、ロボット102によって掃引される3D空間内の環境およびボリュームを表すために、より粗いボクセル(すなわち、「プロセッサボクセル」)を使用することができる。したがって、システム200は、それに応じてセンサ282の出力を変換することができる。例えば、センサ282のアウトプットは各軸上で10ビットの精度を使用することができ、したがって、センサ282から直接的に生じる各ボクセル(すなわち、「センサボクセル」)は30ビットのIDを有し、230のセンサボクセルがある。システム200は18ビットのプロセッサボクセルIDに対して、それぞれの軸上で6ビットの精度を(設計時(又は、計画時)および実行時に)使用し、218のプロセッサボクセルが存在する。したがって、プロセッサボクセルごとに212のセンサボクセルがある。実行時に、システム200が、プロセッサボクセル内のセンサボクセルのいずれかが占有されていると判定した場合、システム200はプロセッサボクセルが占有されていると見なし、それに応じて占有グリッドまたは他の表現を生成する。
【0030】
ロボット102のための計画グラフの各エッジはまた、そのエッジによって表されるある状態から別の状態への計画グラフにおける遷移を行うときに、ロボット102によって掃引される3D空間内の体積に対応するいくつかの数のボクセル(またはボックス)を有する。そのエッジによって表されるある状態から別の状態への計画グラフの遷移を行うときにロボット102によって掃引されるこれらのボクセルまたはボックスは、計画グラフエッジ情報メモリ284などの計画グラフ専用のオフチップメモリに計画グラフのエッジごとに記憶することができる。様々な他の実施形態では、そのエッジによって表されるある状態から別の状態への計画グラフの遷移を行うときにロボット102によって掃引されたボクセルまたはボックスは、例えば、1つまたは複数の特定用途向け集積回路(ASIC)内のオンチップメモリなどの他の位置に、計画グラフのエッジごとに格納することができる。
【0031】
1つの実施形態では、衝突評価(又は、衝突アセスメント)がまず、プロセッサ212aのようなプロセッサに、すべての障害ボクセル(またはボックス)をストリーミングすることによって実行される。例えば、障害物A 112及び障害物B 104を含む、環境100を表す障害物ボクセル(又はボックス)が、プロセッサ212aにストリームされて環境メモリ294に保存され得る。環境メモリ294は、プロセッサ212aのオンチップメモリである。いくつかの実施形態では、環境メモリ294がフィールドプログラマブルゲートアレイ(FPGA)内のブロックRAM(BRAM)であってもよい。ある実施形態では、BRAMが数キロビットのランダムアクセスメモリ(RAM)を含む専用の構成可能な2ポートメモリユニットであってもよい。FPGAは、これらのブロックのいくつかを含む。次に、ロボット102に対する計画グラフの各エッジに対するエッジ情報は計画グラフエッジ情報メモリ284からなど、計画グラフに充てられたオフチップメモリからストリーミングされる。エッジボクセル(またはボックス)ごとに、エッジの掃引ボリュームからストリーミングインされるとき、それが障害物ボクセル(またはボックス)のいずれかと衝突する場合、プロセッサ212aは、計画グラフ内のそのエッジとの衝突を判定する。
【0032】
例えば、エッジボクセルが計画グラフのエッジxの掃引ボリュームからストリーミングインされるとき、プロセッサ212aは、エッジボクセルを環境メモリ294に記憶された全ての障害物ボクセル(又はボックス)と比較するためにブール回路を使用することができる。システム200が比較に基づいて、エッジボクセルが障害物ボクセル(またはボックス)のいずれかと衝突すると判定した場合、システム200は、エッジxとの衝突を記録する。この実施形態は、衝突評価が計画グラフのすべてのエッジ上で並行して実行される他の設計と比較して、衝突評価においてはるかに大きな計画グラフを使用することを可能にするので、衝突評価の技術を改善する。特に、これは、プロセッサチップ回路上に記憶することができる限られた量の計画グラフ情報に関する他の設計の欠点を克服するのに役立つ。本明細書で説明する衝突評価方法を使用すると、環境メモリ294などのオンチップ記憶装置は、多くの場合、すべての障害物ボックスを記憶するのに十分以上である(ボクセルを使用する場合はそれほどそうではない場合があるが)。これは、より安価なオフチップ記憶装置に大きな計画グラフおよび/または複数の計画グラフを記憶する能力を提供する。例えば、これは大きな計画グラフおよび/または複数の計画グラフを、いくつかの実施形態ではダイナミックランダムアクセスメモリ(DRAM)のような安価なタイプのメモリである計画グラフエッジ情報メモリ284に記憶する能力を提供する。
【0033】
様々な実施形態では、そのような動作が完全にハードウェア回路で、またはシステムメモリ214などのメモリストレージに格納されたソフトウェアとして実行され、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、グラフィックス処理ユニット(GPU)プロセッサ、プログラムドロジックコントローラ(PLC)、電気的プログラマブルリードオンリメモリ(EEPROM)などの1つまたは複数のハードウェアプロセッサ212aによって、またはメモリストレージに格納されたハードウェア回路およびソフトウェアの組合せとして実行され得る。
【0034】
また、知覚、計画グラフ構築、衝突検出、および経路探索の様々な関連する態様の実施は、その全体が参照により本明細書に組み込まれる「自動車および再構成可能な動作計画プロセッサのための動作計画」と題された2017年6月9日に出願された国際特許出願第PCT/US2017/036880号、「特定のロボット動作計画ハードウェアおよびその製造および使用方法」と題された2016年1月5日に出願された国際特許出願第WO2016/122840号および「動的オブジェクトを有する環境における自動車の動作計画を容易にするための装置、方法、および物品」と題された2018年1月12日に出願された米国特許出願第62/616,783号にも記載されている。当業者は例示された実施形態、ならびに他の実施形態はロボット、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースの、またはプログラム可能な家庭用電化製品、パーソナルコンピュータ(「PC」)、ネットワーク接続されたPC、ミニコンピュータ、メインフレームコンピュータなどを含む、他のシステム構造および構成、ならびに/または他のコンピューティングシステム構成を用いて実施することができることを理解するであろう。実施形態またはその一部は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクまたはモジュールが実行される分散コンピューティング環境で(例えば、設計時および事前実行時に)実施することができる。分散コンピューティング環境では、プログラムモジュールがローカルおよびリモートメモリ記憶装置または媒体の両方に配置されてもよい。しかしながら、モーション計画を改善するのを助けるためには、ある種の情報がどこにどのように記憶されるかが重要である。
【0035】
例えば、様々なモーション計画の解決策はロードマップ(すなわち、計画グラフ)をプロセッサに「ベークイン」し、ロードマップ内の各エッジはプロセッサの再構成不可能なブール回路に対応する。プランニンググラフ(又は、計画グラフ)がプロセッサに「ベークイン」される設計は、複数のまたは大きな計画グラフを格納するためのプロセッサ回路が限られているという問題を提起する。
【0036】
1つの解決策は、計画グラフ情報をメモリ記憶装置に配置する再構成可能な設計を提供する。このような解決策では再び、計画グラフの各エッジについての情報が存在するが、この情報は回路にベーク(又は、べークイン)される代わりにメモリに記憶される。各エッジはロボット102の動作に対応し、各動作は、3D空間内のボリュームを掃引する。この掃引ボリュームはいくつかの障害物ボクセル(またはボックス、しかしながら、様々な実施形態で障害物を表すことが決定されてもよい)と衝突する。このような解決策では、このエッジが衝突するボクセルがメモリに記憶される情報である。
【0037】
いくつかの実施形態では、システムまたはアプリケーションが実行時に複数の計画グラフ間を動的に切り替える(すなわち、プロセッサを再構成する)ことを提供してもよい。例えば、物体を把持することができるエンドエフェクタを有するロボットを考える。何かを保持しているときと、何かを保持していないときとで、ロボットアームが3D空間の異なる部分に衝突する。一例は、エンドエフェクタを有するアームの端部に大きなボールを保持するロボットアーム106である。ロボット102が何かを保持している場合、ロボット102が「何も保持していない」ときに対応する計画グラフは動作しない。逆に、ロボット102が何も保持していない場合であっても、「何かを保持している」計画グラフを非常に控えめに使用することができるが、それは非効率的であり、ロボット102が最大の可能なオブジェクトを保持しているシナリオに対応する単一の計画グラフの使用を必要とする。代わりに、様々な実施形態ではシステム200が異なる可能な特性に対応する計画グラフのファミリ、例えば、「何も保持していない」、「サイズxの小さい球を保持している」、「サイズyの直角プリズムを保持している」などを構築する。これらの計画グラフはロボット102が物を拾い上げ、それらを下に置くときに、プロセッサ212aによって計画グラフエッジ情報メモリ284に入れたり、そこから出したりすることができる。この解決策は、エンドエフェクタが時々変化するロボットにも適用される。例えば、ロボット102は、第1のセット(又は、組)の寸法を有する第1のエンドエフェクタを有する構成であってもよい。この第1のエンドエフェクタは、第2のセットの寸法を有する第2のエンドエフェクタとスワップ(又は、交換)されてもよい。第1のエンドエフェクタが第2のセットの寸法の第2のエンドエフェクタとスワップされると、ロボット102は、第2のエンドエフェクタを有する異なる配置になる。第2のセットの寸法の寸法が第1のセットの寸法の寸法と異なる場合、ロボットによって掃引されるボリューム(又は、体積)は、エンドエフェクタが交換されると変化する。また、例えば、ロボットが自律型または部分的に自律型の車両である場合、車両は第1の期間の間、第1の配置において第1のセットの寸法を有し、同じ車両は、第2の期間の間、第2の配置において第2のセットの寸法を有することができる。例えば、車両は第1の構成では空であり、第2の構成では完全に積載されており、車両の重量を変化させ、場合によっては、例えば、曲がり角またはカーブの周りをコーナリングするときに、道路上の車両の高さ、車両の下のクリアランス、または車両の軌道さえも変化させることができる。第2の寸法のセットの寸法が第1の寸法のセットの寸法と異なる場合、車両によって掃引されるボリュームは、第1の構成と第2の構成との間で変化する。同様に、第1の配置と第2の配置との間で軌道が変化する場合、車両によって掃引されるボリュームが配置間で変化する。したがって、システム200は、異なるエンドエフェクタについて、異なる計画グラフを計画グラフエッジ情報メモリ284に格納する。
【0038】
計画グラフは、前もって、例えば、実行時より前の設定時に生成することができる。いったん計画グラフが生成されると、それらはすべて計画グラフエッジ情報メモリ284に記憶されてもよく、プロセッサ212aがそれらをスワップインおよびスワップアウトするか、またはロボットが特定のサイズの物体を把持しているときなど、ロボット102の現在の特性に基づいてどちらを使用するかを選択することは、比較的迅速かつ効率的である。
【0039】
上述したように、いくつかの前処理活動は実行時の前に実行されてもよく、したがって、いくつかの実施形態ではこれらの動作が、ネットワークインターフェース260を介してプロセッサベースのシステム200に通信ネットワークを介してリンクされる遠隔処理装置によって実行されてもよい。例えば、プログラミング段階は、関心のある問題に対するロボットの準備を可能にする。そのような実施形態では、実行時計算を回避するために、広範囲の前処理が活用される。ロードマップ内のエッジによって表される1つの状態から別の状態への計画グラフ内の遷移を行うときにロボット102によって掃引される3D空間内のボリュームに関する事前計算されたデータは、計画グラフエッジ情報メモリ284に格納され、実行時にプロセッサ212aによってアクセスされ得る。システム200はまた、実行時の前に、実行時中に起こり得るロボットの異なる可能な変化する寸法特性に対応する一群の計画グラフを構築してもよい(又は、システム200はまた、実行時中に起こり得るロボットの異なる可能な変化する寸法特性に対応する実行時前の一群の計画グラフを構築してもよい)。次に、システム200は、このような計画グラフを計画グラフエッジ情報メモリ284に記憶する。
【0040】
実行時フェーズの間、センサ282は、プロセッサ212aに知覚データを送信する。知覚データは、現在の環境に存在し、オンチップ環境メモリ294に格納されているボクセルまたはボックスのストリームであってもよい。環境メモリ294から検索された知覚データを計画グラフエッジ情報メモリ284に記憶された情報と比較するためにブール回路を使用して、プロセッサ212aはどの動作が衝突を回避するかを計算し、ロボット102が従うべき計画グラフ内の対応する経路を選択する。次に、プロセッサ212aが動作し、結果として生じる経路をアクチュエータシステム266に戻す。
【0041】
図2は、プロセッサ212aによって表される1つまたは複数のプロセッサと、システムメモリ214、計画グラフエッジ情報メモリ284、およびディスクドライブ224に関連するコンピュータ可読媒体226などの1つまたは複数の関連する非一時的機械可読記憶媒体とを備える、ロボット102用のシステムなどのプロセッサベースのシステム200を示す。システムメモリ214、計画グラフエッジ情報メモリ284、およびディスクドライブ224に関連するコンピュータ可読媒体226を含む、関連する非一時的コンピュータまたはプロセッサ可読記憶媒体は、システムバス216などの1つ以上の通信チャネルを介してプロセッサ212aに通信可能に結合される。システムバス216は、メモリコントローラを備えたメモリバス、周辺バス、および/またはローカルバスを含む、任意の既知のバス構造またはアーキテクチャを採用することができる。1つまたは複数のセンサ282およびアクチュエータシステム266も、システムバス216を介してプロセッサ212aに通信可能に結合される。このような構成要素の1つまたは複数は、また、または代わりに、例えば、1つ以上のパラレルケーブル、シリアルケーブル、または高速通信が可能なワイヤレスネットワークチャネル、例えば、ユニバーサルシリアルバス3.0、PCIe(Peripheral Component Interconnect Express)等の1つ以上の他の通信チャネルを介して、またはThunderbolt(登録商標)を介して、互いに通信することも可能である。
【0042】
プロセッサベースのシステム200はまた、ネットワークインターフェース260を介してプロセッサベースのシステム200の様々な構成要素に直接通信可能に結合されたまたは間接的に通信可能に結合されたリモートシステム、例えば、デスクトップコンピュータ、ラップトップコンピュータ、ウルトラポータブルコンピュータ、タブレットコンピュータ、スマートフォン、ウェアラブルコンピュータ(図示せず)に通信可能に結合されてもよい。このような遠隔システムは、プロセッサベースのシステム200およびプロセッサベースのシステム200内の様々な構成要素とのプログラミング、構成、制御、または他の方法でのインターフェースまたは入力データに使用することができる。このような接続はインターネットプロトコルを使用する1つ以上の通信チャネル、例えば、インターネット等の1つ以上のワイドエリアネットワーク(WAN)を介してもよい。上述したように、実行前計算(例えば、計画グラフのファミリの生成)はロボット102または他のロボットとは別個のシステムによって実行することができ、一方、システム200がロボット102の物理的寸法の変化にリアルタイムで反応するように計画グラフを変更することができることが重要であるため、実行時計算は、ロボット102上にあるプロセッサ212上で実行することができる。
【0043】
別段の記載がない限り、
図2に示される様々なブロックの構造および動作は従来の設計のものであるか、またはその全体が参照により本明細書に組み込まれる「自動車および再構成可能な動作計画プロセッサのための動作計画」と題する2017年6月9日出願の国際特許出願第PCT/US2017/036880号、「特定のロボット動作計画ハードウェアおよびその製造および使用方法」と題する2016年1月5日出願の国際特許出願第WO2016/122840、および/または「動的オブジェクトを有する環境における自動車の動作計画を容易にするための装置、方法、および物品」と題する2018年1月12日出願の米国特許出願第62/616,783号に記載されている。その結果、そのようなブロックは参照により本明細書に組み込まれる参考文献を考慮して、当業者によって理解されるように、さらに詳細に説明される必要はない。
【0044】
プロセッサベースのシステム200は、1つまたは複数の処理ユニット212、システムメモリ214、計画グラフエッジ情報メモリ284、およびシステムメモリ214および計画グラフエッジ情報メモリ284を含む様々なシステム構成要素を処理ユニット212に結合するシステムバス216を含むことができる。いくつかの実施形態では、計画グラフエッジ情報メモリ284がシステムメモリ214であってもよく、またはその一部であってもよい。処理ユニットは、1つまたは複数の中央処理ユニット(CPU)212a、デジタル信号プロセッサ(DSP)212b、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)などの任意の論理処理ユニットとすることができる。システムメモリ214は、リードオンリーメモリ(「ROM」)218およびランダムアクセスメモリ(「RAM」)220を含み得る。計画グラフエッジ情報メモリ284はDRAMなどのRAMを含み得る。ROM218の一部を形成し得る基本入出力システム(「BIOS」)222は、スタートアップ時など、プロセッサベースのシステム200内の要素間で情報を転送するのに役立つ基本ルーチンを含む。
【0045】
プロセッサベースのシステム200は例えば、ハードディスクから読み書きするためのハードディスクドライブ、リムーバブルフラッシュメモリデバイスから読み書きするためのフラッシュメモリドライブ、リムーバブル光ディスクから読み書きするための光ディスクドライブ、または磁気ディスクから読み書きするための磁気ディスクドライブであってもよいディスクドライブ224を含んでもよい。プロセッサベースのシステム200はまた、様々な異なる実施形態において、そのようなディスクドライブの任意の組み合わせを含んでもよい。ディスクドライブ224は、システムバス216を介して処理ユニット212と通信することができる。ディスクドライブ224は当業者に知られているように、そのようなドライブとシステムバス216との間に結合されたインターフェースまたはコントローラ(図示せず)を含むことができる。ディスクドライブ224およびその関連するコンピュータ可読媒体226は、コンピュータ可読命令、データ構造、プログラムモジュール、およびプロセッサベースのシステム200のための他のデータの不揮発性記憶装置を提供する。当業者は、WORMドライブ、RAIDドライブ、磁気カセット、デジタルビデオディスク(「DVD」)、ベルヌーイカートリッジ、RAM、ROM、スマートカードなど、コンピュータによってアクセス可能なデータを記憶することができる他のタイプのコンピュータ可読媒体を使用することができることを理解するであろう。
【0046】
プログラムモジュールは、オペレーティングシステム236、1つ以上のアプリケーションプログラム238、他のプログラムまたはモジュール240、プログラムデータ242などのシステムメモリ214に記憶することができる。アプリケーションプログラム238はプロセッサ212に、計画グラフのエッジに関連するロボット掃引ボリュームの1つまたは複数の離散化された表現を生成すること、ロボット掃引ボリュームの離散化された表現を生成するために、いくつかの離散化のうちのどれを使用するかを決定すること、環境100における障害物を含むロボットが動作する環境100の離散化された表現を生成すること、環境100の離散化された表現を生成するためにいくつかの離散化された表現のどれを使用するかを決定すること、複数の計画グラフを決定すること、決定された複数の計画グラフおよびエッジ情報のそれぞれの組を記憶すること、計画グラフのノードによって表される状態の間を遷移する際にロボットの少なくとも一部によって掃引されるボリュームを表す情報を生成すること、計画グラフのエッジに関する衝突評価を実行すること、計画グラフのためのエッジ情報のセットを提供すること、計画グラフから1つまたは複数の最適化された結果を特定すること、計画グラフのエッジとロボット102が動作する環境100内の障害物の離散化された表現に関連する掃引ボリュームの離散化された表現の間の衝突に対し衝突検査を行うこと、最適化がロボットのための衝突のない経路を生成するかどうかを決定すること、およびロボットのためのモーション計画を実施することのうちの1つまたは複数を実行させる命令を含むことができる。アプリケーションプログラム238は本明細書および参照により本明細書に組み込まれる参照文献に記載されるように、プロセッサ212に(センサ282を介して)知覚、計画グラフ構築、衝突検出、および経路探索の他の動作を実行させる1つまたは複数の機械可読命令をさらに含むことができる。
【0047】
アプリケーションプログラム238はさらに、プロセッサ212に、ロボット102が異なる寸法を有するときに対応する状態間の遷移においてロボット102によって掃引される異なるボリュームを表す計画グラフエッジ情報のそれぞれのセットを生成させ、計画グラフエッジ情報のそれぞれのセットに対応して計画グラフエッジ情報メモリ284に複数の計画グラフを記憶させる、1つまたは複数の機械可読命令を含むことができる。
【0048】
アプリケーションプログラム238はさらに、プロセッサ212に、ロボット102が動作する環境100の第1の離散化された表現の少なくとも一部分について、環境100の第1の離散化された表現の少なくとも一部分を環境メモリ294に供給させ、格納させ、計画グラフの各エッジに対して、計画グラフエッジ情報メモリ284内にエッジ情報のそれぞれのセットを提供させ、格納させ、対応する遷移がロボット102の少なくとも一部分と、環境100内の障害物A 112および障害物B 104などの1つ以上の障害物の少なくとも1つの少なくとも一部分との間の衝突をもたらす計画グラフのエッジのいずれかを特定させる1つ以上の機械可読命令を含むことができる。
【0049】
「環境」という用語は本例では障害物を含むロボットの現在のワークスペースを指すために使用される。「タスク」という用語は本例ではロボット102がその環境内の障害物と衝突することなく、ポーズAからポーズBに到達しなければならない(おそらく、何かを把持または落とす)ロボットタスクを指すために使用される。「シナリオ」という用語は本例では環境/タスク対のクラスを指すために使用される。例えば、シナリオは「3フィートのテーブルを有する環境内での所与の範囲内のサイズおよび形状を有するx障害物とy障害物との間でのピックアンドプレースタスク」とすることができる。このような基準に適合する多くの異なるタスク/環境対が、目標の位置、障害物のサイズおよび形状に応じて存在し得る。システム200は、ネットワークインターフェース260を介して通信ネットワークを介してリンクされる1つ以上の遠隔処理装置を含んでもよい。そのような1つまたは複数のリモート処理デバイスはシステム200に、様々な異なるシナリオのタスクおよび環境の対に対してロボット102が動作する環境100の表現のそれぞれの離散化を生成させる、1つまたは複数の機械可読命令を実行することができる。例示的な実施形態では、それぞれの離散化のうちの少なくとも2つはボクセルのそれぞれのセットを含む。それぞれの離散化のボクセルは、それぞれの離散化内のサイズおよび形状のうちの少なくとも1つにおいて非均質(non-homogenous)であってもよい。また、それぞれの離散化のボクセルの不均一性のそれぞれの分布は、互いに異なっていてもよい。特に、離散化はそれぞれのボクセルのセットを含むことができ、それぞれの離散化のうちの少なくとも2つのボクセルはそれぞれの離散化内でサイズおよび形状のうちの少なくとも1つにおいて不均質であり、それぞれの離散化のうちの少なくとも2つのボクセルの不均質性のそれぞれの分布は互いに異なる。アプリケーションプログラム238はプロセッサ212に、ロボットが動作する環境100の表現の生成されたそれぞれの離散化の有効性を評価させ、特定のシナリオに対して最も有効であると評価される生成されたそれぞれの離散化を記憶させる、1つまたは複数の機械可読命令を含むことができる。
【0050】
アプリケーションプログラム238はロボット102が実行するタスクとロボットが動作する環境100のペアを分類する特定(又は、識別)されたシナリオに基づいて、プロセッサ212に、ロボット102の1つの状態とロボット102の別の状態との間で遷移するときにロボット102が通過するそれぞれの領域を表すいくつかの掃引ボリュームを生成するために、いくつかの離散化のうちのどれを使用するかを決定させ、計画グラフ内の複数のエッジのそれぞれについて、決定された離散化を使用してエッジのそれぞれの掃引ボリュームを決定させる、1つまたは複数の機械可読命令をさらに含むことができる。アプリケーションプログラム238はさらに、プロセッサ212に、識別されたシナリオに対して最も有効であると評価される、ロボット102が動作することになる環境100の表現の決定された掃引ボリュームのそれぞれの離散化を記憶させる、1つまたは複数の機械可読命令を含むことができる。
【0051】
アプリケーションプログラム238はロボット102が動作する環境100とロボット102が実行するタスクのペアを分類する識別されたシナリオに少なくとも部分的に基づいて、プロセッサ212に、環境100の離散化表現を生成するためにいくつかの離散化のうちのどれを使用すべきかを決定させる、1つまたは複数の機械可読命令をさらに含むことができる。アプリケーションプログラム238はさらに、プロセッサ212に、環境100を感知する1つまたは複数のセンサ282によって生成されたセンサ情報を受信させ、判定された離散化を使用して環境内に障害物がある場合にはそれを含む環境の離散化表現を生成させる1つまたは複数の機械可読命令を含むことができる。決定された離散化の複数のボクセルはそれぞれの離散化内の(又は、離散化内で)サイズおよび形状のうちの少なくとも1つにおいて不均質であってもよく、決定された離散化のボクセルの不均質性のそれぞれの分布はいくつかの離散化のうちの別の1つのボクセルの不均質性の分布と異なってもよい。
【0052】
アプリケーションプログラム238はさらに、プロセッサ212に、ロボットが動作する環境内の任意の障害物と計画グラフのエッジの間の複数の計画グラフの衝突検査を実行させる1つまたは複数の機械可読命令を含むことができる。プロセッサ212は各計画グラフに対してこのような衝突検査を実行し、それに応じて計画グラフを一時的に更新し、最適化を実行し、更新された計画グラフからの最適化された結果(もしあれば)が満足条件を満たすかどうかを判定することができる。満足条件が満たされない場合、プロセッサ212は次の計画グラフに移動し、同じ動作を実行してもよい。満足条件が満たされる計画グラフが見つかると、プロセッサ212は、満足条件を満たす計画グラフからの最適化された結果のうちの1つによって識別される遷移をロボット102に適用する。
【0053】
アプリケーションプログラム238はさらに、プロセッサ212に、
図5および
図6に示される方法を含むがこれに限定されない、本明細書で説明される様々な他の方法を実行させる1つまたは複数の機械可読命令を含むことができる。
【0054】
様々な実施形態では上述の動作のうちの1つまたは複数がシステム200の1つまたは複数のリモート処理デバイスによって実行することができ、これらのデバイスはネットワークインターフェース260を介して通信ネットワークを介して、またはロボット102上に配置された1つまたは複数のプロセッサ212によってリンクされる。
【0055】
図2にはシステムメモリ214に記憶されるように示されているが、オペレーティングシステム236、アプリケーションプログラム238、他のプログラム/モジュール240、およびプログラムデータ242はディスクドライブ224の関連するコンピュータ可読媒体226上に記憶することができる。
【0056】
プロセッサ212は、1つまたは複数の中央処理装置(CPU)、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)などの任意の論理処理装置とすることができる。市販のコンピュータシステムの非限定的な例としては米国Intel(登録商標)社が提供するマイクロプロセッサのCeleron、Core 2、Itanium、Xeonファミリ、米国Advanced Micro Devicesが提供するK8、K10、Bulldozer、およびBobcatシリーズマイクロプロセッサ、米国アップルコンピュータが提供するA5、A6、およびA7シリーズマイクロプロセッサ、米国Qualcomm、Inc.が提供するSnapdragonシリーズマイクロプロセッサ、米国Oracle Corp.が提供するSPARCシリーズマイクロプロセッサが挙げられるが、これらに限定されない。別途記載されない限り、
図2に示される種々のブロックの構成およびオペレーションは、従来の設計のものである。その結果、そのようなブロックは当業者によって理解されるので、本明細書でさらに詳細に説明される必要はない。
【0057】
したがって、衝突の回避を容易にするために、設計時(実行時の前)に、1つまたは複数の計画グラフがシステム200によって生成され、1つの状態から別の状態への様々な遷移を行うときに、ロボット102によってどの領域が占有されるかが判定される。例えば、ロボット102のための計画グラフのエッジは、領域302に対応するロボット102によって掃引される3D空間内のボリュームに対応するいくつかの数のボクセル(またはボックス)を有する。計画グラフの対応する遷移を行うときの領域に対応するロボット102によって掃引されるボクセルまたはボックスは、計画グラフエッジ情報メモリ284などの、計画グラフに専用のオフチップメモリに計画グラフのエッジに対応するものとして記憶することができる。次に、実行時に、障害物A 112(および障害物B 104も)を含む環境100を表す障害物ボクセル(またはボックス)が占有グリッドまたは他の表現の形でプロセッサ212aに提供され(たとえば、ストリーミングされ)、オンチップ環境メモリ294に記憶される。システム200は(占有グリッドまたは他の表現に基づいて)どのボクセルが占有されているかを決定し、現在占有されているボクセルと衝突する動きを使用しないことを決定する。特に、エッジの掃引ボリュームの一部を表すそれぞれのエッジボクセル(またはボックス)について、それが計画グラフエッジ情報メモリ284からストリームイン(又は、流入/stream in)されるとき、プロセッサは、占有グリッドまたは他の表現に基づいて、環境メモリ294に記憶されている障害ボクセル(またはボックス)のいずれかと衝突するかどうかを決定する。エッジボクセル(またはボックス)が障害物ボクセル(またはボックス)のいずれかと衝突する場合、システム200は計画グラフ内のそのエッジとの衝突を判定し、計画グラフ内のそのエッジに関連するロボット102の動作を使用しないと判定する。
【0058】
例えば、
図1に示すロボットアーム106の運動を実行する前に、システム200は、計画グラフエッジメモリ284から適用可能な計画グラフの全てのエッジのエッジボクセル(又はボックス)をストリームインし始める。各エッジについて、プロセッサ212aは各エッジボクセル(又はボックス)に遭遇するとき、任意のエッジボクセル(又はボックス)が環境メモリ294(障害物A 112のためのものを含む)に記憶された障害ボクセル(又はボックス)のいずれかと衝突するかどうかを検査する。環境メモリ294に格納された障害物A 112の障害物ボクセル(またはボックス)は占有グリッドまたは他の表現に従ってその同じ領域を占有するので、掃引領域内の任意のエッジボクセル(またはボックス)はそのような衝突をもたらすことになる。プロセッサ212aは障害物ボクセル(又はボックス)のいずれかと衝突するエッジボクセル(又はボックス)に遭遇するとすぐに、その後、プロセッサ212aは、計画グラフのそのエッジを使用しないことを決定する。計画グラフのエッジの処理が終了すると、プロセッサ212aは、環境メモリ294に記憶された障害物ボクセル(またはボックス)と衝突すると判定されなかった残りのエッジを使用して、ロボットを初期位置から目標位置に移動させる計画グラフ内の経路を決定する。
【0059】
システム200はまた、各計画グラフによって表される掃引ボリュームをどのように表すか、ならびに環境100内の障害物をどのように表すかに関する決定を行うことができる。そのような決定は例えば、掃引ボリュームをボクセルまたはボックスで表すかどうか、使用するボクセルまたはボックスの形状およびサイズ、使用するボクセルまたはボックスのサイズおよび/または形状が不均一である離散化を使用するかどうか、およびどのシナリオでボクセルまたはボックスの異なる形状および/またはサイズを使用するかなど、どのように離散化を実行すべきかに関してプロセッサ212aによって行われる決定を含むことができる。様々な実施形態では計画グラフのそれぞれによって表される掃引ボリュームをどのように表すか、ならびに環境100内の障害物をどのように表すかに関する決定を行うための上述の1つまたは複数のそのような動作はネットワークインターフェース260を介して通信ネットワークを介してリンクされるシステム200の1つまたは複数のリモート処理デバイスによって、またはロボット102上に位置する1つまたは複数のプロセッサ212によって実行され得る。
【0060】
特に、システム200は、ロボット102のワークスペースをボクセル(後でボックスにグループ化することができる)に離散化することを決定することができる。1つの例示的な実施形態は、三次元の各々において均一な量子化(又は、量化/数量化/quantization))を実行する。しかしながら、ロボットのワークスペースの異なる部分においてより小さい/より大きいボクセル及び/又は非立方体形状のボクセルを有することが有利であり得る。例えば、一実施形態はロボット102のすぐ目の前の空間においてより小さなボクセル(より細かい解像度)を使用し、ロボットが到達できる最遠端のところでより大きなボクセル(より粗い解像度)を使用する。したがって、様々な実施形態は、非一様量子化を使用および/または非立方体形状ボクセルを使用することができる。本開示はまた、システム200がボクセルサイズおよび/または形状をどのように選択するかについてのアルゴリズムを提供する。
【0061】
一実施形態では、実行時間の前に実行のためのトレーニングアルゴリズムを使用して、様々な異なるシナリオに対してどのボクセルサイズおよび形状を使用するのがよいかを決定する。システム200は、1つまたは複数のシナリオからのタスク/環境ペアの所与のまたは生成された大きなセットを使用することによってトレーニングされ得る。次いで、システム200は、トレーニングサンプルの大きなセットにわたって最も効果的であると評価される離散化を選択する。
【0062】
例えば、任意の所与の環境/タスク対に対して、最適な離散化(または等しく最適な複数の離散化)が存在する。システム200はT個の環境/タスクペア(ここで、Tは大きな数である)をテスト/トレーニングし、次いで、それぞれについて最適な離散化を記録することができる。これは多くの異なる離散化をもたらし得、その各々は1つのみまたは少数の環境/タスク対に対して最適である。すべてのT個の環境/タスク対をテストした後、システムは、サンプルのセット全体にわたって最も有効であると評価される離散化を選択する。このアプローチはまた、取り扱いにくいあらゆる可能な環境/タスク対に対してあらゆる可能な離散化を試みることを含む。
【0063】
上記の問題を克服するために、システム200はシステム200が有限数の可能な離散化Gを考慮することを除いて、上記で説明したようなトレーニングを実行する。各環境/タスク対に対して、システムは、提供されたG個の離散化のうちのどれが最も効果的であると評価されるかを記録する。全てのT個の環境/タスク対を処理した後、システム200は、最も多くの環境/タスク対において最も効果的であると評価される離散化を選択する。
【0064】
一例として、ロボット102は、その前方の空間のボックスに面していてもよい。システムは6ビットが各次元における位置を記述するために使用されるように、空間を離散化することを決定してもよい(すなわち、各軸上に26の位置があり得る)。これにより、それぞれが一意の18ビットIDを持つ218ボクセルが生成される。計画時に、システム200はあらゆるエッジの動作について掃引ボリュームを事前計算し、それをその掃引ボリューム内のボクセルIDの集合として記録する。掃引ボリュームがボクセルと部分的に交差する場合であっても、掃引ボリュームは、その掃引ボリューム内のボクセルIDの集合に含まれる。これが、より細かい解像度を使用することがより良い理由である。次に、実行時に、センサ282はプロセッサ212aに、ロボット102の前に何があるかを知らせるが、予め計算された掃引ボリュームを表すボクセルよりはるかに細かい粒度であり、したがって、システム200はセンサ入力を処理し、どのボクセルが現在占有されているかをプロセッサ212aに通信する。いくつかの実施形態ではプロセッサ212aがセンサ入力を処理し、他の実施形態ではセンサ入力を処理してプロセッサ212aに通信するセンサ282のプロセッサなどの別個のプロセッサがある。プロセッサ212aは環境メモリ294に記憶されている情報に基づいて現在環境にあるボクセルまたはボックスを、計画グラフエッジ情報メモリ284に記憶されている計画グラフエッジ情報の各エッジに対してリストされているボクセルまたはボックスと比較し、現在どのエッジが衝突しているかを決定する。そのような実施形態では、比較を可能にするために、実行時と同じ離散化が計画時に使用されることが重要である。
【0065】
システム200が非一様離散化を使用することを選択するとき、システム200は18ビットのボクセルIDおよび218ボクセルを依然として使用してもよいが、ボクセルはキューブ(又は、立方体)である必要はない(またはそれらはキューブであってもよいが、すべて同じサイズではない)。再度、この実施形態では、システムが実行時と同じ離散化を計画時に使用することが重要である。非一様離散化を使用する場合、システム200は計画時および実行時に使用され、最も効果的であると評価されるボクセルサイズおよび形状をシステムが選択するように、上述のようなトレーニングを使用して、各ボクセルのサイズおよび形状が何であるかを選択する。そのような訓練で使用される評価基準は解決することができる(例えば、システム200が、ロボット102の目標を達成するための何らかの衝突のない経路を見出すことができる)タスクの割合および見出される経路の質に関する基準を含んでもよい。
【0066】
モーション計画グラフまたはロードマップツールキットはモーションプランナ(例えば、リアルタイムロボットモーション計画アクセラレータおよびRapidSense Spatial Perceptionシステム)によって使用されるモーション計画グラフ(本明細書では互換的にロードマップまたはロードマップファイルと呼ばれる)の作成または生成を可能にする。モーション計画グラフツールキットは、1つ以上の非一時的コンピュータまたはプロセッサ可読媒体に記憶される一セットのプロセッサ実行可能命令またはアプリケーション(例えば、ソフトウェアおよび/またはファームウェア)として実施される。モーション計画グラフツールキットは、直感的なユーザインターフェース、例えば直感的なグラフィカルユーザインターフェース(GUI)を提供する。このアプリケーションにより、エンドユーザは、ロボットのデジタルモデルまたは仮想モデルと、ロボットが動作する動作環境(本明細書では互換的にワークセルと呼ぶ)のデジタル表現または仮想表現と対話して、運動学的に検査され、衝突検査されたモーション計画グラフまたはロードマップを生成または作成することができる。
【0067】
システム、アプリケーション、ユーザインターフェース、およびオペレーションの理解を容易にするために、最初に、高レベル概念のいくつかの概要をすぐ下に提供する。
【0068】
プロジェクトは、モーション計画グラフ又はロードマップツールキットにおける最上位のコンテナ(又は、容器)である。各プロジェクトは、名前付きワークスペースのセット、ハブのセット、ロードマップ領域のセット、およびボクセル領域を含む。
【0069】
ワークスペースは、環境内のロボットのある物理的構成を表す。周囲の作業セルまたはそれ自体との異なる衝突の可能性をもたらすロボットの物理的構成に対するいかなる修正も、別個のワークスペースと見なされるべきである。したがって、環境内のすべての障害物が固定されたままであっても、第1のワークスペースの物理的特性からのロボットの物理的特性の変化は、別個の第2のワークスペースに対応する。
【0070】
ワークスペースには、それぞれ独自のロードマップ領域のセットがある。ワークスペースは、異なるワークスペースにわたって同じ領域をクローニングするために複製されてもよいことに留意されたい。モーション計画グラフやロードマップツールキットで作業している間、「アクティブワークスペース」という概念がある。これは、現在、モーション計画グラフやロードマップツールキットによって提供されている三次元ビューで視覚化されているワークスペースである。各ワークスペースは、最上位プロジェクトで定義されたすべての「ハブ」も継承し、各ロードマップ領域が他の領域やハブにどのように接続するかの設定が含まれる。この設定は、補間マトリクス(行列)と呼ばれる。エッジを生成するとき、各ロードマップ領域はこれらの設定に基づいて、他の領域およびハブと同様に、内部的に接続される。ワークスペースはまた、ロボットまたは静的シーン内のリンクの対が互いに衝突検査される設定を含む。この設定のセットは、衝突マトリクスと呼ばれる。プロジェクトで定義されているワークスペースごとに、ユーザはシステムまたはアプリケーションに「Occupancy Group」または*.ogファイルを生成させ、リアルタイムロボティックスモーション計画アクセラレータ(MPA)などで実行時に使用する。
【0071】
ボクセル領域は、システムによって使用されるカメラの視野を表す。MPAは動的障害物がこの領域にある場合にのみ、動的障害物を検査および/または回避する。ボクセル領域内に存在する任意のポーズまたはエッジは「ボクセル化」され、すなわち、ロボットがポーズで取る物理的空間(またはエッジモードである場合、エッジ内のすべての中間ポーズのセット)が計算され、ボクセルとして保存される。各エッジのボクセルの集合は実行時中の衝突検査のためにMPAハードウェアに送信される「占有グループ」ファイルに保存される。
【0072】
ロードマップ領域は、ポーズのグルーピング(又は、グループ)である。エッジを生成するとき、ロードマップ領域内のすべてのポーズは補間マトリクス内の設定に基づいて、ネットワーク内の他の領域およびハブと同様に、互いに接続される。ロードマップ領域の寸法、密度、および位置を構成することができる。ロードマップ領域内のすべてのポーズは、ロードマップ領域を作成または修正するときに指定される起点ポーズと呼ばれる、ロボットの様々な構成でシード(又は、導入/seed)される。
【0073】
ハブはすべてのワークスペースで共有されるロボットの特定のポーズである。デフォルトでは、すべてのロードマップ領域がすべてのハブに接続される。ハブはホームポーズを指定したり、複数のロードマップ領域間の接続性を強制したりする場合に便利である。
【0074】
可動付属肢を有するロボットを扱う場合、ポーズは、ロボットの特定の関節構成と組み合わされた三次元空間におけるエンドエフェクタの特定の点である。自律車両を扱う場合、ポーズは自律車両の三次元空間における特定の点と方向である。ポーズはロボットの関節が特定の関節構成にあるとき、ロボットのエンドエフェクタが三次元空間のどこにあるかを記述する回転成分と共に、x、y、z変位を有する。ポーズは、ロボットアームがそれ自体または静的ワークスペース内の他の物体と衝突することなく、空間内のその点に到達することができる場合に有効である。衝突するか、または運動学的に実行不可能なポーズは無効とみなされ、視覚的に示され得る(例えば、赤で表示される)。
【0075】
エッジは任意の2つのポーズ間の接続であり、2つの関連するポーズ間の遷移を表す。また、エッジは、補間タイプを有する。モーション計画グラフまたはロードマップツールキットは、ジョイント補間およびデカルト補間をサポートする。ジョイント補間モードでは、終点ジョイント構成間のロボットのジョイント空間で直線補間することにより、動作を計算する。デカルト補間モードでは、自律的に生成された付加ポーズの離散集合で、2つの終点フレーム間の三次元空間で補間することにより、動作を計算する。
【0076】
いずれの補間モードにおいても、エッジは有効であっても無効であってもよい。ポーズの場合と同様に、エッジはその任意の部分が運動学的に実行不可能であり、かつ/または衝突している場合には、無効にされる。
【0077】
衝突パーツ(又は、衝突部分/衝突部品)は、ロボットまたはモデル化された環境またはシーンの任意の位置に取り付けることができる単純な境界形状である。通常、衝突パーツは、ロボットがオブジェクトをピック(又は、把持)または配置したときのコリジョンボリュームの変化を表すために使用される。衝突パーツはまた、所望であれば、任意のキープアウトゾーンを生成するために使用され得る。
【0078】
衝突マトリクスは、ポーズおよびエッジを生成するときに衝突について検査されるべき「ユニバーサルロボット記述フォーマット」(URDF)リンクのペアのセットを定義する。2つのものが決して衝突しない場合、そのもののペアを検査から除去することができ、これにより、より高速なエッジ生成が可能になる。ワークスペースごとに1つの衝突マトリクスがあり、システムまたはアプリケーションのパフォーマンスが向上する。
【0079】
補間マトリクスは、各ロードマップ領域が他の領域およびハブにどのように接続するかを定義する。各接続のオプションは、ジョイント補間、デカルト補間、または接続されていない。
【0080】
モーション計画グラフまたはロードマップツールキットは、ロボットオペレーティングシステム(ROS)と協働することができる。ROSはロボットミドルウェア(すなわち、ロボットソフトウェア開発のためのソフトウェアフレームワークの集合)である。また、マクロを用いてもよい。たとえば、モーション計画グラフやロードマップツールキットは、ROSで使用されるパッケージの構築(ビルド)に使用されるCMakeマクロと関連コードの集合であるCatkinで機能する場合がある。
【0081】
次に、
図3A~
図3Kに示す様々なユーザインターフェース要素を参照して、オペレーションを説明する。
【0082】
モーション計画グラフまたはロードマップの作成を開始するために、プロセッサベースのシステムまたはプロセッサベースのシステムで実行されるアプリケーションが、多数のユーザインターフェース要素を介して多数の初期入力仕様を受け取る。
【0083】
例えば、プロセッサベースのシステムまたはアプリケーションは、ロボットの記述またはデジタルモデルを、例えばデジタルファイルとして受信することができる。モデル化されるロボットについて、このファイルは、視覚メッシュ、衝突メッシュ、および運動学を定義する。デジタルモデルは、手動で作成することも、コンピュータ支援設計(CAD)アプリケーション(ソフトウェアやファームウェアなど)からのエクスポートプロセスを介して作成することもできる。ロボットの記述は、標準化されたフォーマット、例えばURDFを使用して提供されてもよい。例えば、SolidWorks(登録商標)アセンブリをURDFファイルに変換する市販のプラグインがある。
【0084】
また、例えば、URDFファイルがROSパッケージへのリンクを含む場合、プロセッサベースのシステムまたはアプリケーションは、ROSパッケージへのパス仕様をオプションで受け取ることができる。ROS_PACKAGE_PATHは、catkinワークスペース内のROSパッケージへのすべての可能なパスを含む環境変数である。この変数を使用すると、プロセッサベースのシステムまたはアプリケーションがURDFファイルを正常に見つけて解析できる。
【0085】
また、例えば、プロセッサベースのシステムまたはアプリケーションは、URDF規格に含まれていないロボットに関する追加情報を含むファイルをオプションで1つ以上受け取ることができる。追加情報は標準フォーマット、例えば、「SRDF(Semantic Robot Description File)」フォーマットで受信されてもよい、追加情報の1つは、例えば、URDF内のどのリンクが互いに衝突検査されるべきかを定義する「衝突マトリクス」であってもよい。このファイルは、プロセッサベースのシステムまたはアプリケーションにインポートして、ポーズおよびエッジの妥当性を検査するためにプロセッサベースのシステムまたはアプリケーションによって使用される衝突マトリックスを抽出することができる。
【0086】
図3Aは、記述された一実施形態による、先験的にモーション計画グラフを生成するために
図2のプロセッサベースシステムによって最初に提示されるグラフィカルユーザインターフェースの第1の画面300aを示す。
図3Bは、記述された一実施形態による、
図2のプロセッサベースのシステムによって2回目に提示されるグラフィカルユーザインターフェースの第1の画面300bを示す。
【0087】
第1の画面300aは4つのプルダウンメニュー、すなわち、ファイルメニュー302a、編集メニュー302b、カメラメニュー302c、およびヘルプメニュー302dを含むメニューバー302を含む。第1のスクリーン300aは、また、ロボットモデル305及び動作環境又はワークスペース307の三次元表現が提示されるプレゼンテーションウィンド304を含む。第1の画面300aはプレゼンテーションウィンド304に隣接し、情報を提供するか、またはユーザ入力の入力または選択を可能にする様々なユーザインターフェース要素を含む1セットのパネルをさらに含む。パネルは例えば、プロジェクトパネル306、インスペクタパネル308、ビューコントロールパネル310、およびコンソールパネル312を含むことができる。
【0088】
(ファイルメニュー)
ファイルプルダウンメニュー302は、ファイルに関連する多くのユーザ選択可能なオプションを提供する。
【0089】
例えば、エンドユーザは、ファイルプルダウンメニュー302aから新規プロジェクトメニュー項目を選択することができる。ファイルプルダウンメニュー302aからの新規プロジェクトメニュー項目の選択に応答して、システムまたはアプリケーションは、「新規プロジェクト」ダイアログボックス314を提示することができる。
【0090】
新規プロジェクトダイアログボックス
図3Cは、例示の一実施形態による、
図2のプロセッサベースのシステムによって提示されるグラフィカルユーザインターフェースの新規プロジェクトダイアログボックス314を示す。
【0091】
新規プロジェクトダイアログボックス314は、ユーザに新規プロジェクトを作成するように促す。新規プロジェクトダイアログボックス314は、プロジェクトのディレクトリ名となる名前を入力するための「プロジェクト名」フィールド314aを提供する。新規プロジェクトダイアログボックス314はプロジェクトが作成されるディレクトリを入力するための「プロジェクトパス」フィールド314bを提供する。新規プロジェクトダイアログボックス314は、使用するURDFまたは*.xacroファイルへのパスを入力するための「URDFパス」フィールド314cを提供する。新規プロジェクトダイアログボックス314は「ROSパッケージパス」フィールド314dを提供して、URDFがそのような名前を使用する場合、ファイルパスを指定するための「package://」プレフィックスを入力する。これは、これらの最上位ディレクトリへのパスを指定するために使用できる。新規プロジェクトダイアログボックス314はそれぞれプロジェクトパスフィールド314b、URDFパスフィールド314c、およびROSパッケージパス314dに対応するユーザ選択可能なブラウザアイコン314e、314f、314gのセットを提供し、ユーザはそれぞれのフィールドに対して適切な入力をブラウザで選択することができる。
【0092】
新規プロジェクトダイアログボックス314は「キネマティックチェーン開始」フィールド314hを提供し、キネマティックチェーン(又は、動力学チェーン/一連の動力学処理)が開始するURDFからのロボットリンクを指定する。指定されたリンクには、可動の親ジョイントがあってはならない。特に、キネマティックチェーン開始フィールドは、選択するリンクのスクロール可能なリストを提供することができる。新規プロジェクトダイアログボックス314は、キネマティックチェーンが終了する場合にURDFからのロボットリンクを指定するためのキネマティックチェーン終了フィールド314iを提供する。このリンクはキネマティックチェーンスタートの子であるべきであり、子として可動ジョイントを有さないべきである。衝突検査が可能になるためには、ロボット内の各可動ジョイントが各ポーズに対して完全に分かっている必要がある。
【0093】
ファイルメニュー
図3A及び3Bに戻ると、ファイルプルダウンメニュー302aはユーザ選択可能な「Load Project」メニューアイテムを含むことができ、その選択によりシステム又はアプリケーションは既存のプロジェクトをロードする。ファイルプルダウンメニュー302aがユーザ選択可能な「Save Project」メニューアイテムを含むことができ、その選択によりシステム又はアプリケーションは現在のプロジェクトを同じ場所に保存する。ファイルプルダウンメニュー302aがユーザ選択可能な「Save Project As」メニューアイテムを含むことができ、その選択によりシステム又はアプリケーションは現在のプロジェクトを新しい場所に新規事例(又は、インスタンス)として保存する。ファイルプルダウンメニュー302aはユーザ選択可能な「Load Scene Snapshot」メニューアイテムを含み、その選択によりシステムまたはアプリケーションはrtr-apiから生成したスナップショットをプレゼンテーションウィンド304に表示のためにロードする。ファイルプルダウンメニュー302aはユーザ選択可能な「Export Configs」メニューアイテムを含むことができ、その選択によりシステム又はアプリケーションはアクティブなワークスペースのすべての有効なジョイント構成をエクスポートする。ファイルプルダウンメニュー302aはユーザ選択可能な「Export Edges」メニューアイテムを含むことができ、その選択によりシステム又はアプリケーションはアクティブなワークスペースのすべてのエッジをエクスポートする。ファイルプルダウンメニュー302aはユーザ選択可能な「Export Poses」メニューアイテムを含むことができ、その選択によりシステム又はアプリケーションはアクティブなワークスペースのすべてのポーズをエクスポートする。
【0094】
引き続き
図3Aおよび
図3Bを参照すると、「edit」プルダウンメニュー302bはユーザが「設定」メニューを選択することを可能にし、「設定」メニューは、プロジェクト設定およびワークスペース設定のためのユーザ選択可能なオプションを提供する。
【0095】
プロジェクト「設定」はユーザが自動ポーズ検証を設定(例えば、トグル)することを可能にする。自動ポーズ検証設定は、ロードマップ領域またはハブに対する何らかの変更がシステムまたはアプリケーションがポーズを自動的に再計算することになるかどうかを判定する。このプロセスはバックグラウンドで行われる。ユーザは、非常に大きな動作計画グラフまたはロードマップを用いて作業する場合、自動ポーズ検証を無効にしたい場合がある。
【0096】
プロジェクト設定により、ユーザは起点ポーズが領域と共に回転するか否かを設定(例えば、トグル)することができる。領域と共に回転する起点ポーズの設定は、ロードマップ領域の回転がどのようにオペレートされるかを決定する。領域と共に回転する起点ポーズの設定が無効にされる場合、ロードマップ領域内のポーズの向きは、世界に対して固定されたままである。領域と共に回転する起点の設定が有効であれば、それらの方向は全体として領域とともに回転する。
【0097】
ワークスペース設定により、ユーザはキネマティックチェーンを設定することができる。キネマティックチェーン設定は、システムが衝突検査ポーズ計算のために使用するキネマティックチェーンを設定する。このチェーンは、一旦設定されると編集できない。キネマティックチェーン設定を変更するために、エンドユーザは新しいプロジェクトを作成する。ワークスペース設定では、URDF内のどのリンクが互いに衝突検査されるかをエンドユーザが設定(configure)できる。したがって、エンドユーザは物理的位置またはジョイント制限の制約のために、決して衝突しないリンク間の衝突検査を無効にすることを選択することができ、有利には処理時間を短縮する。設定(configuration)は、衝突マトリクスを介して実施することができる。
【0098】
エンドユーザは、例えば「import SRDF」ユーザインターフェース要素を介して、システムまたはアプリケーションにSRDFファイルから衝突マトリクスをインポートさせることができる。
【0099】
エンドユーザはシステムまたはアプリケーションに、「補間タイプマトリックス」ユーザインターフェース要素を介して、モーション計画グラフまたはロードマップが互いにどのように接続するか、および/またはハブにどのように接続するかを定義させることができる。利用可能なオプションは、JOINT、CARTESIAN、またはNOT CONNECTEDを含むことができる。
【0100】
1つまたは複数のタブにより、エンドユーザは、URDF内の任意のリンクの任意の位置に取り付けることができる様々な部品を作成することができる。システムまたはアプリケーションは、衝突検査を実行するときにこれらの部分を使用する。部品は様々な形態、例えば、ボックス、球、または円筒のいずれかをとることができ、部品ライブラリとして格納することができる。部品のサイズは、エンドユーザによって指定または調整することができる。
【0101】
カメラ/ビューポイントメニュー(Camera/Viewpointメニュー)
カメラまたはビューポイントメニュー302cはユーザがビューを切り替えること、例えば、パースペクティブビューモードとオルソグラフィックビューモードとの間で切り替えることを可能にする。あるいは、三次元ビューに提示される1セットの軸の中心にある立方体(右上隅に位置する)を選択(例えば、クリック)して、カメラ設定間で切り替えることができる。
【0102】
ヘルプメニュー
ヘルププルダウンメニュー302dを選択すると、ユーザが選択できる各種ヘルプメニューを備えたヘルプメニューが表示される。
【0103】
プレゼンテーションウィンド
プレゼンテーションウィンド304は、ロードされたロボットワークセルの三次元ビューを提供する。エンドユーザはプレゼンテーションウィンド304内でパンし、軌道を描き(orbit)、ズームすることができる。ハブ、ロードマップ領域、ポーズ、エッジ、およびボクセル領域はすべてプレゼンテーションウィンド304内に視覚化される。オブジェクト(例えば、ロボット)を選択する(例えば、クリックする)と、選択されたオブジェクトが作成される。
【0104】
プレゼンテーションウィンド304で利用可能なツールを使用して、ロボットモデル305および任意のロードマップ領域の両方を操作するいくつかの異なる方法がある。
【0105】
プレゼンテーションウィンド304は「FKパネル」ユーザ選択可能アイコン304aを含み、その選択によりFKパネルのプレゼンテーションが行われる。FKパネルはエンドユーザが関節角度を入力として指定することを可能にし、システムまたはアプリケーションは三次元空間におけるロボットの対応する位置を決定し、ロボットの対応する三次元位置を提示するであろう。
【0106】
プレゼンテーションウィンド304は「IKパネル」ユーザが選択可能なアイコン304bを含み、その選択はIKパネルのプレゼンテーションを引き起こす。IKパネルはエンドユーザがロボットの少なくとも一部(例えば、エンドエフェクタ)の位置を三次元で指定することを可能にし、システムまたはアプリケーションはロボットの対応する関節角度を決定して、ロボットの一部を三次元空間内に位置決めし、対応する関節角度を提示する。
【0107】
また、「FKパネル」と「IKパネル」は単にC空間と三次元空間または実世界空間との間を平行移動するだけであり、「FKパネル」と「IKパネル」は、エンドユーザがエンドエフェクタの並進および/または回転を微調整することを可能にする。各調整の増分は変更可能である。現在の位置が「世界」基準フレーム内、または任意の定義されたロードマップ領域の基準フレーム内で見ることができる。
【0108】
プレゼンテーションウィンド304は、並進ウィジェット304cを含む。どの項目が選択されるかに応じて、システムまたはアプリケーションは並進ウィジェット304cを、ロボットのエンドエフェクタに、またはロードマップ領域またはボクセル領域の起点に出現させる。並進ウィジェット304cはエンドユーザが例えば、ポインタまたはカーソルを位置決めし(例えば、マウスオーバーし)、対応する軸上で選択する(例えば、クリックする)ことによって、選択されたアイテムを三次元(x、y、またはz軸)でドラッグすることを可能にする。翻訳ウィジェット304cはユーザが選択可能な(例えば、「T」ボタン)の選択(クリック)によって有効/無効にすることができる。
【0109】
プレゼンテーションウィンド304は、回転ウィジェット304dを含む。どのアイテムが選択されるかに応じて、システムまたはアプリケーションは回転ウィジェット304dをロボットのエンドエフェクタに、またはロードマップ領域の起点に出現させる。回転ウィジェット304dは、エンドユーザが、選択されている間に、対応する軸の周りを選択(例えば、クリック)およびドラッグすることによって、選択されたアイテムを3つの軸(x、y、またはz軸)の周りで回転させることを可能にする。回転ウィジェット304dはユーザが選択可能なアイコン(例えば、「R」ボタン)を選択する(例えば、クリックする)ことによって、有効/無効にすることができる。
【0110】
プレゼンテーションウィンド304は、スケーリングウィジェット304eを含む。システムまたはアプリケーションにより、スケーリングウィジェット304eがロードマップまたはボクセル領域の起点に出現させる。スケーリングウィジェット304eは、エンドユーザが選択されたオブジェクトの寸法を三次元(x、y、またはz)で変更することを可能にする。ロードマップ領域をスケーリングする場合、システムまたはアプリケーションは、その特定の領域の密度設定に基づいて、領域内のポーズの数を自動的に増加および/または減少させる。
【0111】
プレゼンテーションウィンド304には、ユーザが選択可能なアイコン304fを間接ドラッグモードで含む。関節ドラッグモードがアクティブであるとき、並進、回転、およびスケーリングウィジェット304c、304d、304eは無効とされ、エンドユーザはロボット表現上の可動リンク上でホバー(例えば、マウスオーバー)することができる。リンクが選択されると、システムまたはアプリケーションはそのようなものを視覚的に示し(例えば、リンクを強調表示する)、可能な関節移動を表す視覚的指示(例えば、螺旋)の提示を引き起こす。次いで、エンドユーザは視覚的表示に対してリンク(例えば、ボール)の表現を移動させることができ、例えば、関節の位置を制御するために螺旋上でボールを上下に移動させることができる。システムまたはアプリケーションは、入力に従って位置を更新する。
【0112】
プレゼンテーションウィンド304は、一セットの三次元コントロール304gを含む。エンドユーザは三次元コントロール304gを操作して、システムまたはアプリケーションに、プレゼンテーションウィンド304に提示される三次元ビューを調整させることができる。例えば、エンドユーザは、マウスまたは他のポインティングデバイス上のボタンを押し続けることによって、表現されたシーンの周りをパンすることができる。最終用途は、マウスまたは他のポインティングデバイス上の別のボタンを押し続けることによってビューを回転させることができる。エンドユーザは例えば、マウスまたは他のポインティングデバイス上のスクロールホイールを介してズームを制御することができる。プレゼンテーションウィンド304は例えば、三次元制御アイコン304g(例えば、プレゼンテーションウィンド304の右上に示されている)を含むことができ、これは、エンドユーザがポインタで操作することができ、エンドユーザが特定の軸整列ビューに迅速に移動することを可能にし、また、オルソグラフィックモードとパースペクティブモードとを切り替えることを可能にする。
【0113】
プロジェクトパネル(Projectパネル)
プロジェクトパネル306は、現在のワークスペースおよびプロジェクト内のすべてのオブジェクトをリストする。項目を選択する(クリックするなど)と、その項目が選択された項目になり、詳細情報が表示される。
【0114】
プロジェクトパネル306は、エンドユーザが利用可能なワークスペースのすべてを見ること、ならびに新しいワークスペースを作成することを可能にするワークスペースセクション306aを含む。新しいワークスペースを作成するために、エンドユーザは「ワークスペース名」テキストフィールドに名前をタイプし、「追加」ユーザ選択可能アイコン306bを選択する。エンドユーザは「アクティブワークスペース」ドロップダウンメニュー306cを使用して、どのワークスペースが現在のワークスペースであるかを選択することもできる。新しいワークスペースを作成することは、新しいワークスペースをアクティブワークスペースに自動的にしないことに留意されたい。現在アクティブなワークスペースがプレゼンテーションウィンド304に表示され、プロジェクトパネル306にリストされたすべての領域および衝突パーツはアクティブワークスペースに基づく。エンドユーザがクローニングするワークスペースを選択(例えば、クリック)し、次いで、インスペクタパネル308上の「複製」ユーザ選択可能アイコン308aを選択することによって、既存のワークスペースを複製することができる。
【0115】
投影パネル306は、ボクセル領域セクション306dを含む。ボクセル領域セクション306dはそれぞれが異なる機能を有する3つのユーザ選択可能なアイコン(例えば、ボタン)を有する。「ターゲット」ユーザ選択可能アイコン306eは、エンドユーザにボクセル領域を選択させ、インスペクタパネル308は選択されたボクセル領域に関する詳細を示し、プレゼンテーションウィンド304内に変換またはスケール制御をもたらす。「目」ユーザ選択可能アイコン306fはエンドユーザに、プレゼンテーションウィンド304上のボクセル領域の可視性をトグルさせる。「ボクセル」ユーザ選択可能アイコン306gはエンドユーザに、プレゼンテーションウィンド304上のボクセルの可視性をトグルさせる。
【0116】
プロジェクトパネル306は、ロードマップ領域セクション306hを含む。ロードマップ領域セクション306hは、アクティブワークスペース内の利用可能なロードマップ領域のすべてをエンドユーザに示す。領域を選択する(例えば、クリックする)と、インスペクタパネル308上のその領域が選択され、プレゼンテーションウィンド304内で、選択された領域を回転、スケーリング、または変換することができる。「追加」ユーザ選択可能アイコン306iを選択する(例えば、クリックする)ことにより、システムまたはアプリケーションはロボットのエンドエフェクタの現在の位置に新しいロードマップ領域を作成し、エンドユーザが新しい起点ポーズを追加できるようにするメニューを提示することになる。「インポート」ユーザ選択可能アイコン306jを選択する(例えば、クリックする)ことにより、システムまたはアプリケーションはエンドユーザに、インポートのためのファイルを選択するように促すことになる。インポートされたロードマップ領域は変換および回転することができるが、スケーリングすることはできない。「複製」ユーザ選択可能アイコン306kを選択する(例えば、クリックする)ことにより、選択されたロードマップ領域がクローン化される。
【0117】
プロジェクトパネル306は、ハブセクション306lを含む。ハブセクション306lは、プロジェクトで作成されたすべての利用可能なハブを提示する。エンドユーザはエントリを選択し(例えば、クリックし)、インスペクタパネル308でハブを選択することができる。アイテム上でのダブル選択(例えば、ダブルクリック)はシステムまたはアプリケーションに、ロボットモデルを、選択されたハブによって識別されるポーズに移動させることができる。新しいハブは例えば、名称フィールド306mに名前を入力し、ユーザ選択可能なアイン306nを「追加」することを選択(例えばクリック)することによって追加される。これに応答して、システムまたはアプリケーションは、ロボットモデルのエンドエフェクタの現在位置に新しいハブを作成する。
【0118】
プロジェクトパネル306は、衝突部品セクション306oを含む。衝突部品セクション306oは、ロボットモデルに現在取り付けられているすべての部品、すなわち動作環境を提示する。部品の1つを選択する(例えば、クリックする)と、システムまたはアプリケーションは、選択されたアイテムについてインスペクタパネル308を提示する。エンドユーザは「追加」ユーザ選択可能なアイコン306pを選択(例えばクリック)することで新しい部品を取り付けることができ、その選択により、システムまたはアプリケーションがエンドユーザに接続名称を付けるように促し、取り付ける部品ライブラリから部品を選択し、部品にどのリンクに取り付けるかを識別し、その部品を親リンクに接続する方法についてのオフセットを指定することができる。部品ライブラリに部品がない場合は、設定パネルから部品を追加できる。また、部品を取り付けると、システムまたはアプリケーションは、現在のワークスペースの衝突マトリクスを修正することになる。デフォルトでは衝突部品は親リンクに対して衝突検査されないが、URDF内の他のすべてのリンクに対して衝突検査される。部品がキネマティックチェーン内にないリンクに取り付けられる場合、システムまたはアプリケーションは、依然として、それを衝突として扱う。部品を取り付けることが説明できないポーズを無効にする場合、エンドユーザは、衝突マトリクスが新たに取り付けた部品に対して正しいことを確認するために検査することができる。
【0119】
プロジェクトパネル306はポーズ検証ステータスセクション(例えば、プロジェクトパネルの底部の青いバー)306qを含む。ポーズ検証ステータスセクション306qは、完了したポーズ検証のパーセンテージの表示を提供する。システムまたはアプリケーションは、領域またはハブが作成または変更されるたびにポーズ検証を実行する。このシステムまたはアプリケーションはバックグラウンドでこのプロセスを実行し、完了すると、すべてのポーズが有効または無効として識別される。システムまたはアプリケーションは第1の視覚特性(例えば、緑色)を使用して有効なポーズを視覚的に表すことができ、第2の視覚特性(例えば、赤色)を使用して無効なポーズを視覚的に表すことができる。ポーズ生成を必要とするアイテムが検証が既に実行されている間に修正される場合、システムまたはアプリケーションは、検証プロセスを再開する。通常、ポーズ検証は自動的に実行されるが、エンドユーザは大きなモーション計画グラフやロードマップなどに対して設定パネルを使用して、この機能を無効にすることができる。自動ポーズ検証が無効になっている場合は、ユーザが選択可能な「検証」アイコン(緑色のボタンなど)がプログレスバーの下などに表示される。
【0120】
プロジェクトパネル306は、エッジ生成ユーザ選択可能アイコン306rを含む。グラフやロードマップが設定され、ポーズ検証が完了したら、エンドユーザはユーザ選択可能なアインコン306r「エッジを生成する」を選択する(例えばクリックする)ことができる。ユーザ選択可能なアインコン306r「エッジを生成する」を選択すると、システムまたはアプリケーションは現在アクティブなワークスペースのすべてのポーズを1つの接続されたロードマップに接続するプロセスを起動する。このプロセスの間、システムまたはアプリケーションは、各ロードマップ領域および補間マトリクスの設定を使用して、どのポーズを互いに接続するかを決定する。次に、システムまたはアプリケーションは、各可能な接続を衝突検査して、接続が有効であるか否かを判定する。このプロセスが完了した後、エンドユーザは、エッジを視覚化することを望むことができる。
【0121】
プロジェクトパネル306には、「接続可視」ユーザ選択可能なアイコン306s(例えば、チェックボックス、ラジオボタン)が含まれる。システムまたはアプリケーションは第1の視覚特性(例えば、青)を使用して有効なエッジを提示し、第2の視覚特性(例えば、赤)を使用して無効なエッジを提示する。現在のワークスペースの複雑さに応じて、システムまたはアプリケーションは有効なエッジを決定し、そのようなものをレンダリングするのにいくらかの時間がかかることがある。
【0122】
エッジが満足できるようになると、現在アクティブなワークスペースに対して占有ファイルが生成できる。占有ファイルは例えばランタイムオペレーション中に、MPAによって採用されてもよい。プロジェクトパネル306は占有生成ユーザ選択可能アイコン306t(例えば、チェックボックス、ラジオボタン)を含む。占有生成ユーザ選択可能なアイコン306tの選択(クリックなど)により、システムまたはアプリケーションは現在アクティブなワークスペース用の占有ファイルを生成する。システムまたはアプリケーションでは、占有ファイルのファイル名を選択するようにエンドユーザに求められる場合がある。名前を入力すると、エンドユーザは「保存」ユーザ選択可能アイコンを選択(例えばクリック)できる。「保存」ユーザ選択可能アイコンを選択すると、システムまたはアプリケーションは生成プロセスを開始する。これは、ロードマップの複雑さに応じて長時間かかる可能性がある。なお、使用中の作業領域ごとにそれぞれの占有ファイルを生成してもよい。
【0123】
検査パネル(または、インスペクションパネル/Inspectionパネル)
インスペクタパネル308は、現在選択されているオブジェクトに関する情報を提示する。インスペクタパネル308はコンテキストに依存して(又は、コンテキストセンシティブであって)もよく、表示される情報はどのタイプのオブジェクトが選択されるかに応じて異なる。例えば、インスペクタパネル308はモデル化されたロボットのエンドエフェクタの位置および向きを、座標フレーム選択ユーザインターフェース(例えば、プルダウンメニューまたはリスト)308bを介して選択された実世界座標基準系または他の何らかの座標基準系で提示することができる。インスペクタパネル308はまた、システムまたはアプリケーションが衝突解析に基づいて衝突していると判定する任意のリンクのリストを示すことができる。
【0124】
ビューコントロールパネル(View Controlパネル)
ビュー制御パネル310は、どのオブジェクトがプレゼンテーションウィンド304に表示されるかを制御するウィジェットを含む。ビュー制御パネル310は、エンドユーザがボクセルを表示、または経路をビューイングするときにどのポーズまたはエッジが視覚化されるかを選択することを可能にする。
【0125】
「ハブ可視(Hubs Visible)」ユーザインターフェース要素(例えば、チェックボックス)308cにより、エンドユーザは、プレゼンテーションウィンド304に表示されるプロジェクトで作成されたハブを有することを、選択することができる(チェックされた場合など)。
【0126】
「ポーズ可視(Poses Visible)」ユーザインターフェース要素(例えば、チェックボックス)308dにより、エンドユーザは、プレゼンテーションウィンド304に表示されるアクティブなワークスペースに対して生成されたポーズを有することを選択することができる(チェックされた場合など)。
【0127】
「接続可視(Connections Visible)」ユーザインターフェース要素(例えば、チェックボックス)308eにより、エンドユーザは、プレゼンテーションウィンド304に表示されるアクティブなワークスペースに対して生成されたエッジ接続を有することを選択することができる(チェックされた場合など)。
【0128】
「経路可視(Paths Visible)」ユーザインターフェース要素(例えば、チェックボックス)308fはエンドユーザが、ディスプレイモードがエッジモードである場合、プレゼンテーションウィンド304に表示される現在のインデックスのためにアームが移動する経路を有することを選択する(例えば、チェックされる場合)ことができる。、「経路可視(Paths Visible)」ユーザインターフェース要素がチェックされず、ディスプレイモードがエッジモードである場合、ロボットアームは、選択されたエッジに沿って前後に移動する。
【0129】
「スナップボクセル領域(Snap Voxel Region)」ユーザインターフェース要素(例えば、トグル)308gは、エンドユーザがシステムまたはアプリケーションに、ボクセル領域の位置および寸法を計算させ、更新させることを選択することを可能にし、その結果、得られるボクセル領域は、動作計画グラフまたはロードマップにおいて生成された各エッジ上のロボットのすべての位置を囲む。
【0130】
「ディスプレイモード(Display Mode)」ユーザインターフェース要素(例えば、プルダウンメニュー)308hは、エンドユーザがプレゼンテーションウィンド304におけるプレゼンテーションのためのポーズモードとエッジモードとの間で選択することを可能にする。ポーズモードにおいて、「インデックス(Index)」フィールドの値の変化は、システムまたはアプリケーションに、示された位置にロボットアームをジャンプさせる。エッジモードにおいて、インデックスフィールドの値の変化は、システムまたはアプリケーションに、ロボットのアームを、選択されたエッジに沿って前後に移動させる、または「経路可視」が選択される場合、システムまたはアプリケーションはエンドエフェクタがそのエッジのためにとる経路のプレゼンテーションを引き起こす。
【0131】
「インデックス(Index)」ユーザインターフェース要素(例えば、フィールド)308iは、エンドユーザがどのポーズまたはエッジがアクティブであるか、およびそのポーズまたはエッジがどのように表示されるかを選択することを可能にする。ポーズまたはエッジが生成されると、それらは大きなアレイでシステムに記憶される。
【0132】
「スナップショットビュー(Snapshot View)」ユーザインターフェース要素(例えばプルダウンメニュー)308jにより、エンドユーザは、「ファイル(File)」メニューからスナップショットがシステムにロードされた場合、どのタイプのデータが表示されるかを選択することができる。
【0133】
コンソールパネル
コンソールパネル312は、システムまたはアプリケーションから出力されたすべてのログを表示する。コンソールパネル312は、システムからのメッセージ、警告およびエラーを表示する。
【0134】
図3Dは、例示された一実施形態による、
図2のプロセッサベースのシステムによって提示されるグラフィカルユーザインターフェースの「衝突部品取り付け」ダイアログボックス320を示す。
【0135】
「衝突部品取付け」ダイアログボックス320は取付け名を指定する「取付け名」フィールド320aと、取付け部品を選択するための取付け部品プルダウンリストと、親リンクを選択するための親リンクプルダウンリストとを含む。「衝突部品取付け」ダイアログボックス320は、x、y、z軸座標320b、320c、320d、およびx、y、z軸320e、320f、320gの周りの向きの角度を介して三次元ポーズを入力するためのフィールドも含む。ユーザが選択可能なアイコンにより、エンドユーザは取付けを受け入れるかキャンセルすることができる。
【0136】
図3Eは、図示された一実施形態による、
図2のプロセッサベースのシステムによって提示されるグラフィカルユーザインターフェースのIKパネル322を示す。IKパネル322を使用して、モデル化されているロボットのエンドエフェクタのポーズを指定することができる。
【0137】
IKパネル322は、位置フィールド322a、322b、322cと、x、y、z軸座標を介して三次元ポーズを表示する回転フィールド322d、322e、322fと、x、y、z軸の周りの配向角とを含む。IKパネル320は各位置および回転フィールドについて、ユーザが選択可能な位置および回転調整アイコン(例えば、上向き矢印、下向き矢印)322g、322h、322i、322jのペアを含み、その選択によってポーズが調整される。IKパネル320は位置調整アイコンおよび/または回転調整アイコンがそれぞれ選択されたときに位置および回転が調整される増分サイズを設定するために、位置および回転増分フィールド322k、322lを含む。IKパネル322は1セットのスナップツーアクシスのユーザ選択可能要素(例えば、トグル)322mを含み、その選択により、システムまたはアプリケーションは、座標をそれぞれの軸にスナップする。IKパネル322は座標が表現される基準系(例えば、実世界)を選択するための基準系プルダウンリスト322nを含む。
【0138】
前述したように、検査パネル308はコンテキストに依存し(コンテキストセンシティブであって)、どのタイプのアイテムが現在選択されているかに基づいて情報を表示することができる。
【0139】
図3Fは、
図2のプロセッサベースのシステムによって提示されるグラフィカルユーザインターフェースのロボットインスペクタパネル308-1の形態のインスペクタパネル308を示す。
【0140】
ロボットインスペクタパネル308-1は、アクティブなワークスペース内のロボットの状態に関する情報を示す。これらは、どのメッシュモード308-1bがロボットを描くために使用されているか(衝突または視覚)、およびエンドエフェクタのポーズ、例えば、x、y、z軸308-1c、308-1d、308-1eおよびエンドエフェクタのx、y、z軸308-1f、308-1g、308-1hの周りの向き(座標を見るためのフレームを含む)などのurdfからの名前308-1aなどを含む。「基準フレーム選択」プルダウンリスト308-1iにより、ユーザは基準フレームを選択することができる。それはまた、現在互いに衝突している全てのロボットリンクをリストするテーブル308-1jを含む。この情報は現在のワークスペースの衝突マトリクスのエラーを迅速に診断し、訂正するのに役立つ。ロボット検査パネル308-1は、三次元パネル304内のロボット上の任意の可動リンクをクリックすることによって可視にすることができる。
【0141】
図3Gは、図示された一実施形態による、
図2のプロセッサベースのシステムによって提示されるグラフィカルユーザインターフェースの「ワークスペースインスペクタ」パネル(又は、Workspace Inspectorパネル)308-2の形態のインスペクタパネル308を示す。
【0142】
「ワークスペースインスペクタ」パネル308-2はプロジェクトパネル上で検査したい作業領域をクリックすることによって見ることができる。インスペクタパネル308-2は、現在の状態を特定する「状態」フィールド308-2aと、システムまたはアプリケーションに作業領域の複製又はクローン(duplicate or clone)を行わせる「複製」ユーザ選択可能アイコン(例えばボタン)308-2bを含む。インスペクタパネル308-2はIK解決のために使用されるキネマティックチェーンの開始リンク308-2cおよび終了リンク308-2dの表示を含む。インスペクタパネル308-2は有効および無効なポーズ308-2eと有効および無効なエッジ308-2fの数の表示を含む統計値も含む。インスペクタパネル308-2は生成されたジョイント構成、エッジ、ポーズを各々エクスポートする能力を提供する「構成」ユーザ選択可能アイコン308-2g、「エッジ」ユーザ選択可能アイコン308-2h、および「ポーズ」ユーザ選択可能アイコン308-2iを含む。
【0143】
ワークスペースはワークスペースインスペクタパネル308内の名前フィールド(例えば、トップフィールド)を編集することによって、名前を変更することができる。ワークスペースは、名前フィールドの横にある「×」をクリックして選択(クリックなど)することで削除できる。
【0144】
「ボクセル領域インスペクタ」パネル(又は、"voxcel Region Inspector"パネル)(図示せず)は、ボクセル領域の現在の座標(x、y、z)を、その現在の寸法と共に提示する。この「ボクセル領域インスペクタ」パネルはプロジェクトパネル上の「ターゲット」アイコンを選択する(例えば、クリックする)ことによって可視にすることができる。
【0145】
「ロードマップ領域インスペクタ」パネル(又は、"roadmap region Inspector"パネル)(図示せず)は現在選択されている領域に関する情報を提示し、エンドユーザが、領域内のポーズがどのように生成され、互いに接続されるかを変更することを可能にする。
【0146】
ロードマップ領域をスケーリングするとき、ポーズ間隔値は、各ポーズ間の間隔を決定する。例えば、ロードマップ領域を大きくすると、所定のポーズ間隔値で指定された間隔で、より多くのポーズが追加されることになる。
【0147】
「接続密度」値(又は、"Connection density"値)は、システムまたはアプリケーションによって生成されるエッジの数を指定または制御することができる。内部値は、現在選択されている領域内のすべてのポーズの間でいくつのエッジが生成されるかを制御する。外部値は、領域間の接続が補間マトリクスに従って接続されるように設定されると仮定して、現在選択されている領域と他のすべての領域との間でいくつのエッジが生成されるかを制御する。
【0148】
「内部モーションタイプ値」" Internal Motion type "値は、選択されたロードマップ領域内の各ポーズ間のエッジがJOINTまたはCARTESIAN補間タイプを使用して作成されるかどうかを決定する。
【0149】
「ハブインスペクタ」パネル(又は、"hub inspector"パネル)(図示せず)はワールドフレーム内のハブの現在位置(x、y、z、ロール、ピッチ、ヨー)を示し、「移動(Go To)」ボタンはロボットモデルをそのハブに移動させ、「ポーズ更新」ボタンをクリックすると、ハブの位置およびジョイントの構成は現在のロボットモデルの位置およびジョイントの構成になる。
【0150】
「衝突部品インスペクタ」パネル(又は、"collision part inspector"パネル)(図示せず)には、衝突部品の名前、現在の親、親からの取り付けオフセット、およびその寸法が表示され、名前フィールドの横の「×」ボタンをクリックすることによって、部品を削除することができる。
【0151】
また、インスペクタはエンドユーザに、対応するフィールドに新しい数字を入力することによって、領域の位置およびサイズを閲覧および編集させるとともに、「起点位置」を管理させる
【0152】
図3Hは、図示された一実施形態による、
図2のプロセッサベースシステムによって提示されるグラフィカルユーザインターフェースの「セット起点ポーズ」ダイアログボックス(又は、"set origin pose"ダイアログボックス)330を示す。
【0153】
起点ポーズは、所与のロードマップ領域内の他のポーズのすべてがどのようにシードされるかを記述するポーズのセットである。「起点ポーズ管理」ユーザ選択可能アイコン(例えば、ボタン)を選択する(例えば、クリックする)と、システムまたはアプリケーションはエンドエフェクタ座標がロックされたままであるモードにロボットモデルをロックするが、回転制御ウィジェットおよび/またはIKウィンドを介してその点の周りで回転させることができる。
【0154】
設定起点ポーズダイアログボックス(又は、"set origin pose"ポーズダイアログボックス)330は「領域名」フィールド330aを含み、領域名を入力または表示する。設定起点ポーズダイアログボックス330は、「go to」ユーザ選択可能アイコン330bを含み、その選択によって、システムまたはアプリケーションは選択されたポーズにアイテムを移動させる。次に、「add current pose」ユーザ選択可能アイコン330cを選択する(例えば、クリックする)ことによって、ロードマップ領域に新しい起点ポーズを追加することができる。ロードマップ領域に追加された各起点ポーズについて、システムまたはアプリケーションは対応する起点ポーズの向きにシードされた領域の密度および間隔パラメータに一致するポーズのセットを作成する。「Poses Visible」が使用可能であり、複数の起点ポーズが追加される場合、向きの違いは容易に明らかになるであろう。設定起点ポーズダイアログボックス330は「update」ユーザ選択可能アイコン330dを含み、その選択はシステムまたはアプリケーションに起点ポーズを更新させる。設定起点ポーズダイアログボックス330が「削除」ユーザ選択可能アイコン(又は、"delete"ユーザ選択可能アイコン)330eを含み、その選択は、システムまたはアプリケーションに起点ポーズを削除させる。
【0155】
図3Iは、図示された一実施形態による、
図2のプロセッサベースのシステムによって第3の時点で提示されたグラフィカルユーザインターフェースのプレゼンテーションウィンド304を示し、例示的なロボット340と、複数の起点ポーズ344を有するロードマップ領域342とを示す。
【0156】
図3Jは第4の時点での
図2のプロセッサベースのシステムによって提示されるグラフィカルユーザインターフェースのプレゼンテーションウィンド304であり、例示された一実施形態による、経路可視オプションが選択されたときの、現在のエッジのための例示的なロボット340、ワークスペース346、および経路348を示す。
【0157】
図4Aは
図1のロボット102のための例示的モーション計画グラフ400であり、これは、1つの例示的実施形態による、対応する移行がロボット102と環境100内の1つ以上の障害物との間の衝突をもたらすであろうと決定された計画グラフ400のエッジを含む。
図4Bは1つの例示の実施形態による、対応する移行がロボット102と環境100内の1つ以上の障害物との間の衝突をもたらすことになると決定された計画グラフ400のエッジが除去された例示的なモーション計画グラフ400である。計画グラフ400の各ノードはロボット102の状態を表し、計画グラフ400の各エッジは、ロボット102のある状態から別の状態への移行を表す。例えば、エッジ410aは、ノード408aによって表されるロボット102の状態とノード408bによって表されるロボット102の状態との間の移行を表す。エッジ410iは、ノード408cによって表されるロボット102の状態とノード408dによって表されるロボット102の状態との間の移行を表す。
【0158】
ロボット102のための計画グラフ400の各エッジは、計画グラフ400において、そのエッジによって表されるある状態から別の状態への移行を行うときに、ロボット102によって掃引される3D空間内のボリュームに対応するいくつかの数のボクセル(またはボックス)を有する。このような情報は、オフチップ計画グラフエッジ情報メモリ284に計画グラフエッジ情報として記憶され、システム200はロボット102の寸法の変化に対応するために、異なる計画グラフをスワップアウトすることができる。実行時に現在の環境を表すセンサ282から受け取った情報を使用して、システム200はどのボクセル(またはボックス)が現在占有されているかを判定し、システム200は、現在占有されているボクセル(またはボックス)と衝突する動きを使用しないと判定する。
【0159】
いくつかの実施形態では、システムが現在の環境(およびその中の障害物)を表すセンサ282から受信され、オンチップ環境メモリ294に記憶された情報を、計画グラフエッジ情報メモリ284に記憶された計画グラフエッジ情報と実行時に比較することによって、占有ボクセル(またはボックス)と衝突するいかなる動きも使用しないことを決定する。この比較に基づいて、システム200は、どの計画グラフエッジがロボット102と環境100内の1つまたは複数の障害物との間の衝突をもたらすであろう移行(したがって、どの対応する動き)を表すかを決定する。一例として、
図4Aは、エッジ410b、410c、410d、410e、410f、410g、410h、410i、410j、410k、および410lが、ロボット102と環境100内の1つまたは複数の障害物との間の衝突をもたらす移行(したがって、どの対応する動き)を表すと判定されたことを示す。
【0160】
例えば、ロボット102がノード408aによって表される状態からノード408dによって表される状態に移動するという目標を達成するために、ロボット102は、ロボット102と環境100内の1つまたは複数の障害物との間の衝突をもたらす移行を表すと判定されたエッジ410b、410c、410d、410e、410f、410g、410h、410i、410j、410kおよび410lによって表される移行を回避しなければならない。したがって、
図4Bは、環境100内の1つまたは複数の障害物と衝突することなく、ノード408aによって表される状態からノード408dによって表される状態に移動するという目標を達成するためにロボット102が従うことができる、システム200によって識別される計画グラフ400内の、そのようなエッジが除去された計画グラフおよび潜在的経路416を示す。
【0161】
図5は、例示された一実施形態による、プロセッサベースのシステム200におけるオペレーション方法500を示す。プロセッサベースのシステム200におけるオペレーション方法500は例えば、システムの呼出しまたは起動または電源投入に応答して、502から開始する。
【0162】
504で、プロセッサベースのシステムまたはプロセッサベースのシステムを介して実行されるアプリケーションを介して、ユーザインターフェースが提示される。
【0163】
506で、ロボットモデルが、プロセッサベースのシステムまたはアプリケーションを介して受信または指定される。
【0164】
508において、離散化された動作環境が、プロセッサベースのシステムまたはアプリケーションを介して受信または指定される。
【0165】
510において、離散化された動作環境におけるロボットモデルの表現が、プロセッサベースのシステムまたはアプリケーションを介して提示されるユーザインターフェースを介して提示される。
【0166】
512において、プロセッサベースのシステムまたはアプリケーションは、例えば、ユーザインターフェースを介した入力として、1つ以上のシードポーズを指定する入力を受け取る。シードポーズは手動で入力することも、ファイルまたはファイルへのリンクとして提供することもできる。
【0167】
任意選択で、514において、プロセッサベースのシステムまたはアプリケーションは、自律的に生成されたシードポーズの運動学的検査および/または衝突検査を自律的に実行する。例えば、プロセッサベースのシステムまたはアプリケーションは、モデル化されているロボットの運動学的制約がシードポーズまたはシードポーズ間の移行(例えば、エッジ)によって違反されているかどうかを自律的に判定する。また、例えば、プロセッサベースのシステムまたはアプリケーションは、オブジェクト(例えば、環境内の既知の静的オブジェクト)との衝突がシードポーズからまたはシードポーズ間の移行から生じるかどうかを自律的に決定する。
【0168】
516で、運動学的制約に違反せず、衝突が検出されない場合、プロセッサベースのシステムまたはアプリケーションは1つまたは複数のシードポーズおよび/または任意の関連するエッジを、モーション計画グラフ、ロードマップ、またはラティスに、あるいはモーション計画グラフ、ロードマップ、またはラティスの領域またはサブラティスに追加する。
【0169】
518において、プロセッサベースのシステムまたはアプリケーションは、シードポーズに基づいて、1つ以上の追加ポーズおよび/または関連するエッジを自律的に生成する。例えば、プロセッサベースのシステムまたはアプリケーションは、起点ポーズの領域またはサブラティス内に1つまたは複数の隣接するポーズおよびエッジを自律的に生成することができる。
【0170】
520において、プロセッサベースのシステムまたはアプリケーションは、自律的に生成された追加のポーズおよび/またはエッジの運動学的検査および/または衝突検査を自律的に実行する。例えば、プロセッサベースのシステムまたはアプリケーションは、モデル化されているロボットの運動学的制約が、追加のポーズ、または、シードポーズと追加のポーズ間の移行(例えば、エッジ)、または、追加のポーズ間の移行によって違反されるかどうかを自律的に判定する。また、例えば、プロセッサベースのシステムまたはアプリケーションは、オブジェクト(例えば、環境内の既知の静的オブジェクト)との衝突が、追加ポーズにより、または、シードポーズと追加ポーズ間の移行により、または、追加ポーズ間の移行により生じるかどうかを自律的に決定する。
【0171】
522において、運動学的制約に違反せず、衝突が検出されない場合、プロセッサベースのシステムまたはアプリケーションは1つまたは複数の追加のポーズおよび/または関連するエッジを、モーション計画グラフ、ロードマップまたはラティスに、またはモーション計画グラフ、ロードマップまたはラティスの領域またはサブラティスに追加する。
【0172】
524で、システムまたはアプリケーションは、ユーザインターフェースを介して結果を提示する。
【0173】
526において、ロボットモデルおよび/または動作環境に対する調整を指定するユーザ入力が、プロセッサベースのシステムまたはアプリケーションを介して受信される。
【0174】
528において、システムまたはアプリケーションは、指定された調整に基づいて、運動学的検査および/または衝突検査を自律的に実行する。例えば、システム200は、モデル化されているロボットの運動学的制約が調整に基づいて違反されているかどうかを自律的に判定する。また、例えば、システム200は、対応する移行がロボット102の少なくとも一部と、環境内の1つ以上の障害物の少なくとも1つの少なくとも一部との間の衝突をもたらす第1の計画グラフのエッジがあればそのいずれかを特定する。システムは第1のノードとして表される第1のポーズと第2のノードによって表される第2のポーズの間の移行において、ロボットまたはその一部によって掃引されるボリュームを決定することができ、この移行は、第1のノードと第2のノードの間のエッジとして表される。
【0175】
530において、運動学的制約に違反せず、衝突が検出されない場合、プロセッサベースのシステムまたはアプリケーションは、モーション計画グラフ、ロードマップまたはラティス、またはモーション計画グラフ、ロードマップまたはラティスの領域またはサブラティスを更新して、調整を表す。
【0176】
532において、システムまたはアプリケーションは、ユーザインターフェースを介して結果を提示する。
【0177】
モーション計画を容易にするためのプロセッサベースのシステム200におけるオペレーションの方法500は534で、例えば、再び呼び出されるまで終了する。いくつかの実施形態では、方法500が継続的に実行されることも、マルチスレッドプロセッサ上のスレッドとして実行されることもできる。
【0178】
図6は
図5に示される方法500を実行する際に使用され得る、例示の一実施形態による、プロセッサベースのシステムにおけるオペレーションの方法600を示す。プロセッサベースのシステム200におけるオペレーションの方法600は602において、例えば、システムの呼び出し又はインヴォケーション(call or invocation)または電源投入に応答して開始する。
【0179】
いくつかの実装形態では、エンドユーザがモーション計画グラフ、ロードマップ、またはラティスの2つ以上の領域またはサブラティスのそれぞれに、シードポーズまたは起点ポーズをシードすることができる。システムまたはアプリケーションはそれぞれの領域またはサブラティスのための追加のポーズおよび/またはエッジを自律的に生成し、運動力学的および/または衝突検査を実行し、運動力学的および/または衝突検査された追加のポーズおよび/またはエッジをそれぞれの領域またはサブラティスに追加することができる。次いで、システムまたはアプリケーションは自律的に、またはエンドユーザによって誘導されて、領域またはサブラティスを縫い合わせて、完全に接続されたモーション計画グラフ、ロードマップ、またはラティスを形成することができる。例えば、システム又はアプリケーションは、サブラティス接続ポーズ及び/又は関連するサブラティス接続エッジを生成し、運動学的及び/又は衝突検査を実行し、運動学的及び/又は衝突検査されたサブラティス接続ポーズ及び/又は関連するサブラティス接続エッジをモーション計画グラフ、ロードマップ又はラティスに追加することができる。例えば、システムまたはアプリケーションは特定の領域のためのロードマップ又はサブラティスを生成し得る。システムまたはアプリケーションはグラフ内の1つまたは複数の最も近いハブへのエッジを生成し、例えば、第1の領域またはサブラティスからのハブ点を第2の領域またはサブラティスのハブ点に直接接続することができる。次に、システムまたはアプリケーションはハブ同士を接続するエッジを生成し、運動学的および/または衝突検査が、不可能なポーズまたは衝突を検出しない場合、そのエッジを追加することができる。
【0180】
604において、プロセッサベースのシステムまたはアプリケーションは、例えば、ユーザインターフェースを介した入力として、モーション計画グラフ、ロードマップ、またはラティスの第1の領域またはサブラティスのための1つまたは複数のシードポーズを指定する入力を受信する。シードポーズは手動で入力することも、ファイルまたはファイルへのリンクとして提供することもできる。
【0181】
任意選択で、606において、プロセッサベースのシステムまたはアプリケーションは、任意選択で、シードポーズの運動学的検査および/または衝突検査を自律的に実行する。例えば、プロセッサベースのシステムまたはアプリケーションは、モデル化されているロボットの運動学的制約がシードポーズまたはシードポーズ間の移行によって違反されているかどうかを自律的に判定する。また、例えば、プロセッサベースのシステムまたはアプリケーションは、オブジェクト(例えば、環境内の既知の静的オブジェクト)との衝突がシードポーズまたはシードポーズ間の移行から生じるかどうかを自律的に決定する。
【0182】
608で、運動学的制約に違反せず、衝突が検出されない場合、プロセッサベースのシステムまたはアプリケーションは、上記1つまたは複数のシードポーズおよび任意の関連するエッジを、モーション計画グラフ、ロードマップ、またはラティスの第1の領域または第1のサブラティスに追加する。
【0183】
610において、プロセッサベースのシステムまたはアプリケーションは、モーション計画グラフ、ロードマップ、またはラティスの第1の領域または第1のサブラティスのシードポーズに基づいて、1つまたは複数の追加のポーズおよび/または関連するエッジを自律的に生成する。例えば、プロセッサベースのシステムまたはアプリケーションは、シードまたは起点ポーズの第1の領域または第1のサブラティス内に1つまたは複数の隣接ポーズを自律的に生成することができる。
【0184】
612において、プロセッサベースのシステムまたはアプリケーションは、自律的に生成された追加のポーズおよび/またはエッジの運動学的検査および/または衝突検査を自律的に実行する。例えば、プロセッサベースのシステムまたはアプリケーションは、モデル化されているロボットの運動学的制約が追加のポーズ(複数)により又はシードポーズと追加のポーズとの間の移行により又は追加のポーズ(複数)間の移行によって違反されるかどうかを自律的に判定する。また、例えば、プロセッサベースのシステムまたはアプリケーションはオブジェクト(例えば、環境内の既知の静的オブジェクト)との衝突が、追加ポーズ(複数)により又はシードポーズと追加ポーズの間の移行により又は追加ポーズの間の移行によって生じるかどうかを自律的に決定する。
【0185】
614で、運動学的制約に違反せず、衝突が検出されない場合、プロセッサベースのシステムまたはアプリケーションは、1つまたは複数の追加のポーズおよび任意の関連するエッジを、モーション計画グラフ、ロードマップ、またはラティスの第1の領域または第1のサブラティスに追加する。
【0186】
616において、プロセッサベースのシステムまたはアプリケーションは、例えば、ユーザインターフェースを介した入力として、モーション計画グラフ、ロードマップ、またはラティスの第2の領域またはサブラティスのための1つまたは複数のシードポーズを指定する入力を受信する。シードポーズは手動で入力することも、ファイルまたはファイルへのリンクとして提供することもできる。
【0187】
任意選択で、618において、プロセッサベースのシステムまたはアプリケーションは、任意選択で、シードポーズの運動学的検査および/または衝突検査を自律的に実行する。例えば、プロセッサベースのシステムまたはアプリケーションは、モデル化されているロボットの運動学的制約がシードポーズによりまたはシードポーズ間の移行により違反されているかどうかを自律的に判定する。また、例えば、プロセッサベースのシステムまたはアプリケーションはオブジェクト(例えば、環境内の既知の静的オブジェクト)との衝突がシードポーズからまたはシードポーズ間の移行から生じるかどうかを自律的に決定する。
【0188】
620で、運動学的制約に違反せず、衝突が検出されない場合、プロセッサベースのシステムまたはアプリケーションは、1つまたは複数のシードポーズおよび任意の関連するエッジを、モーション計画グラフ、ロードマップ、またはラティスの第2の領域または第2のサブラティスに追加する。
【0189】
622において、プロセッサベースのシステムまたはアプリケーションは、モーション計画グラフ、ロードマップ、またはラティスの第2の領域または第2のサブラティスのシードポーズに基づいて1つまたは複数の追加のポーズおよび/または関連するエッジを自律的に生成する。例えば、プロセッサベースのシステムまたはアプリケーションは、シードまたは起点ポーズの第2の領域または第2のサブラティス内に1つまたは複数の隣接ポーズを自律的に生成することができる。
【0190】
624において、プロセッサベースのシステムまたはアプリケーションは、自律的に生成された追加のポーズおよび/またはエッジの運動学的検査および/または衝突検査を自律的に実行する。例えば、プロセッサベースのシステムまたはアプリケーションは、モデル化されているロボットの運動学的制約が追加のポーズによってまたはシードポーズと追加のポーズの間の移行によってまたは追加のポーズ間の移行によって違反されるかどうかを自律的に判定する。また、例えば、プロセッサベースのシステムまたはアプリケーションは、オブジェクト(例えば、環境内の既知の静的オブジェクト)との衝突が、追加のポーズによりまたはシードポーズと追加のポーズとの間の移行によりまたは追加ポーズ間の移行によって生じるかどうかを自律的に決定する。
【0191】
626で、運動学的制約に違反せず、衝突が検出されない場合、プロセッサベースのシステムまたはアプリケーションは、上記1つまたは複数の追加のポーズおよび任意の関連するエッジを、モーション計画グラフ、ロードマップ、またはラティスの第2の領域または第2のサブラティスに追加する。
【0192】
628において、プロセッサベースのシステムまたはアプリケーションは、第1の領域または第1のサブラティスのポーズを第2の領域または第2のサブラティスのポーズと結合するために、1つまたは複数のサブラティス接続ポーズおよび/または関連するサブラティス接続エッジを自律的に生成し、モーション計画グラフ、ロードマップ、またはラティスの2つまたはそれ以上の領域または2つまたはそれ以上のサブラティスの接続またはスティッチ(又は、縫い合わせ)を行う。例えば、プロセッサベースのシステムまたはアプリケーションは、第1の領域と第2の領域との間、または第1のサブラティスと第2のサブラティスとの間に、1つまたは複数の隣接するポーズを自律的に生成することができる。
【0193】
630において、プロセッサベースのシステムまたはアプリケーションは、自律的に生成されたサブラティス接続ポーズおよび/またはサブラティス接続エッジの運動学的検査および/または衝突検査を自律的に実行する。例えば、プロセッサベースのシステムまたはアプリケーションは、モデル化されているロボットの運動学的制約がサブラティス接続ポーズによりまたはサブラティス接続ポーズ間の移行によりまたはサブラティス接続移行により、およびそれぞれの領域またはそれぞれのサブラティスのポーズまたはエッジにより違反されるかどうかを自律的に判定する。また、例えば、プロセッサベースのシステムまたはアプリケーションは、オブジェクト(例えば、環境内の既知の静的オブジェクト)との衝突が、サブラティス接続ポーズ、または、サブラティス接続ポーズ間のサブラティス接続移行、または、それぞれの領域またはそれぞれのサブラティスの移行およびポーズまたはエッジから生じるかどうかを自律的に判定する。
【0194】
632で、運動学的制約に違反せず、衝突が検出されない場合、プロセッサベースのシステムまたはアプリケーションは、上記1つまたは複数のサブラティス接続ポーズおよび任意の関連するサブラティス接続エッジを、モーション計画グラフ、ロードマップ、またはラティスに追加する。
【0195】
上記の例は、説明を明確にするために、2つの領域またはサブラティスのみを有する実施形態を提示する。当業者は本明細書の教示から、同じアプローチを3つ以上の領域またはサブラティスに適用するために繰り返すことができることを認識するであろう。
【0196】
モーション計画を容易にするためのプロセッサベースのシステム200におけるオペレーションの方法600は例えば、再び呼び出されるまで、634で終了する。一部の実施形態では、方法600が継続的に実行することも、マルチスレッドプロセッサ上のスレッドとして実行することもできる。
【0197】
上記の詳細説明においては、ブロック図、概略図及び実施例を用いて、装置及び/又は方法の多様な実施形態について記載した。これらのブロック図、概略図及び実施例は1つまたは複数の機能及び/または動作を含んでいるが、当業者には明らかなように、これらのブロック図、フローチャート及び実施例の範囲におけるそれぞれの機能及び/または動作は個々に及び/または一括して、多様なハードウェア、ソフトウェア、ファームウェア、または事実上任意のこれらの組み合わせによって実装することができる。一実施形態では、本願主題がブール回路、特定用途向け集積回路(ASIC)および/またはFPGAを介して実装され得る。しかしながら、本明細書に開示された実施形態は全体的にまたは部分的に、標準的な集積回路における様々な異なる実装において、1つまたは複数のコンピュータ上で実行される1つまたは複数のコンピュータプログラムとして(例えば、1つまたは複数のコンピュータシステム上で実行される1つまたは複数のプログラムとして)、1つまたは複数のコントローラ上で実行される1つまたは複数のプログラムとして、1つまたは複数のプロセッサ(例えば、マイクロプロセッサ)上で実行される1つまたは複数のプログラムとして、ファームウェアとして、またはそれらの事実上任意の組合せとして実装することができ、回路を設計すること、および/またはソフトウェアおよび/またはファームウェアのためのコードを書き込むことは、本開示に照らして当業者の技術の範囲内で十分にあることを、当業者は認識するであろう。
【0198】
当業者は本明細書に記載された方法またはアルゴリズムの多くが、追加のオペレーションを使用し、いくつかのオペレーションを省略し、および/または指定された順序とは異なる順序でオペレーションを実行し得ることを認識するであろう。
【0199】
さらに、当業者は、本明細書で教示されるメカニズムが様々な形態でプログラム製品として配布されることが可能であり、例示的な実施形態が配布を実際に実行するために使用される信号担持媒体の特定のタイプにかかわらず、等しく適用されることを理解するであろう。信号担持媒体の例にはハードディスクドライブ、CD ROM、およびコンピュータメモリなどの記録可能タイプの媒体が含まれるが、これらに限定されない。
【0200】
上記の種々の実施形態は組み合わされて更なる実施形態を提供することができる。「1つまたは複数のプロセッサ上に離散化された環境を記憶するロボットのモーションプラニングおよびその改善された動作」と題する2018年2月6日に出願された米国特許出願第62/626,939号、および「自動運転車のためのモーションプラニングと再構成可能なモーションプラニングプロセッサ」と題する2017年6月9日に出願された国際特許出願第PCT/US2017/036880号、「動的物体を有する環境における自動運転車のモーションプラニングを容易にするための装置、方法及び物品」と題する2018年1月12日に出願された米国特許出願公開第62/616,783号、「特殊化されたロボット移動ハードウェア及びその製造及び使用方法」と題する2016年1月5日に出願された国際特許出願公開第WO2016/122840号、および、「モーションプランニンググラフ生成ユーザインターフェース、システム、方法、および物品」と題する2019年4月17日に出願された米国特許出願公開第62/835,139号を含むがこれらに限定されない、本願と同一の譲受人に譲渡された、本明細書に言及されかつ/またはアプリケーションデータシートにリストされた米国特許出願公開、米国特許出願、外国特許および外国特許出願の全てが、全体として参照により本明細書に組み込まれる。上記の詳細説明に照らして、上記の及び他の変形がそれらの実施形態に対して行われることが可能である。一般に、以下の特許請求の範囲において、使用される用語は特許請求の範囲を、明細書および特許請求の範囲に開示される特定の実施形態に限定するように解釈されるべきではなく、そのような特許請求の範囲が権利を有する均等物の全範囲とともに、すべての可能な実施形態を含むように解釈されるべきである。したがって、特許請求の範囲は、本開示によって限定されない。
下記は、本願の出願当初に記載の発明である。
<請求項1>
ユーザインターフェースを提供するためのプロセッサベースのシステムにおけるオペレーション方法であって、前記方法は、
1つまたは複数の起点ポーズの視覚的指定を可能にする少なくとも1つのユーザインターフェース要素を提供するステップと、
前記プロセッサベースのシステムによって、いくつかの追加ポーズを自律的に生成するステップであって、前記起点ポーズおよび自律的に生成された前記追加ポーズはポーズグループを形成する、該ステップと、
前記プロセッサベースのシステムによって、いくつかのエッジを自律的に生成するステップであって、各エッジは、前記起点ポーズおよび自律的に生成された前記追加ポーズを含む前記ポーズグループの前記ポーズのそれぞれのペアの間の移行を特定する、該ステップと、を有する、方法。
<請求項2>
前記プロセッサベースのシステムによる運動学的検査を自律的に実行するステップをさらに有する、請求項1に記載の方法。
<請求項3>
運動学的検査を自律的に実行するステップは、ロボットの幾何学的形状に基づいて、前記プロセッサベースのシステムによって自律的に生成された前記追加ポーズの運動学的検査を自律的に実行するステップを含む、請求項2に記載の方法。
<請求項4>
前記ポーズのそれぞれの衝突検査を自律的に行うステップをさらに有する、請求項1に記載の方法。
<請求項5>
前記ポーズのそれぞれのペア間の各移行の衝突検査を自律的に実行するステップをさらに有する、請求項1に記載の方法。
<請求項6>
前記プロセッサベースのシステムによって、ロボットが自己衝突しているか、またはワークスペース内の物体と衝突している場合に、前記ポーズグループから任意のポーズを自律的に排除するステップをさらに有する、請求項1に記載の方法。
<請求項7>
前記プロセッサベースのシステムによって、第1のサブラティスと第2のサブラティスの間でポーズを接続するいくつかのサブラティス接続ポーズを自律的に生成するステップをさらに有する、請求項1に記載の方法。
<請求項8>
前記プロセッサベースのシステムによって、第1のサブラティスと第2のサブラティスとの間でポーズを接続するいくつかのサブラティス接続エッジを自律的に生成するステップをさらに有する、請求項1に記載の方法。
<請求項9>
プロセッサベースのシステムであって、
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサによって実行されるとき、前記少なくとも1つのプロセッサに、
グラフィカルユーザインターフェースを提供させ、
1つまたは複数の起点ポーズの指定を受信させ、
いくつかの追加ポーズを自律的に生成させ、
いくつかのエッジを自律的に生成させる、少なくとも1つのプロセッサ実行可能命令またはデータを格納する少なくとも1つの非一時的プロセッサ読み取り可能媒体を有し、
前記起点ポーズおよび自律的に生成された前記追加ポーズはポーズグループを形成し、
各エッジは前記起点ポーズ及び自律的に生成された前記追加ポーズを含む前記ポーズグループのそれぞれの前記ポーズのペアの間の移行を特定する、
プロセッサベースのシステム。
<請求項10>
前記少なくとも1つのプロセッサによって実行されたとき、プロセッサ実行可能命令またはデータのうちの前記少なくとも1つは、前記少なくとも1つのプロセッサに、
運動学的検査を自律的に実行させる、請求項9に記載のプロセッサベースのシステム。
<請求項11>
運動学的検査を自律的に実行するために、前記少なくとも1つのプロセッサは、
ロボットの幾何学的形状に基づいて自律的に生成された前記追加ポーズの運動学的検査を自律的に実行する、請求項10に記載のプロセッサベースのシステム。
<請求項12>
前記少なくとも1つのプロセッサによって実行されるとき、プロセッサ実行可能な命令またはデータのうちの前記少なくとも1つは、前記少なくとも1つのプロセッサに、さらに、
各前記ポーズのそれぞれの衝突検査を自律的に行なわせる、請求項9に記載のプロセッサベースのシステム、
<請求項13>
前記少なくとも1つのプロセッサによって実行されるとき、プロセッサ実行可能な命令またはデータのうちの前記少なくとも1つは、前記少なくとも1つのプロセッサに、さらに、
前記ポーズのそれぞれのペア間の各移行の衝突検査を自律的に実行させる、請求項9に記載のプロセッサベースのシステム。
<請求項14>
前記少なくとも1つのプロセッサによって実行されるとき、プロセッサ実行可能命令またはデータのうちの前記少なくとも1つは、前記少なくとも1つのプロセッサに、さらに、
ロボットが自己衝突しているか、またはワークスペース内の物体と衝突している場合に、前記ポーズグループから任意のポーズを自律的に排除する、請求項9に記載のプロセッサベースのシステム。
<請求項15>
前記少なくとも1つのプロセッサによって実行されるとき、プロセッサ実行可能命令またはデータのうちの前記少なくとも1つは、前記少なくとも1つのプロセッサに、さらに、
第1のサブラティスと第2のサブラティスとの間でポーズを接続するいくつかのサブラティス接続ポーズを自律的に生成させる、請求項9に記載のプロセッサベースのシステム。
<請求項16>
前記少なくとも1つのプロセッサによって実行されるとき、プロセッサ実行可能命令またはデータのうちの前記少なくとも1つは、前記少なくとも1つのプロセッサに、さらに、
第1のサブラティスと第2のサブラティスとの間でポーズを接続するいくつかのサブラティス接続エッジを自律的に生成させる、請求項9に記載のプロセッサベースのシステム。
<請求項17>
ユーザインターフェースを提供するためのプロセッサベースのシステムにおけるオペレーションの方法であって、実質的に本明細書に開示及び説明された、方法。
<請求項18>
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサによって実行されるときに、前記少なくとも1つのプロセッサに、本明細書に実質的に開示及び説明されたユーザインターフェースを提供させるプロセッサ実行可能な命令またはデータの少なくとも1つを格納する少なくとも1つの非一時的プロセッサ可読媒体
を備えるプロセッサベースのシステム。