(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-09-14
(45)【発行日】2022-09-26
(54)【発明の名称】ロボットの動作計画に役立つ衝突検出
(51)【国際特許分類】
B25J 13/08 20060101AFI20220915BHJP
【FI】
B25J13/08 A
(21)【出願番号】P 2021509212
(86)(22)【出願日】2019-08-06
(86)【国際出願番号】 US2019045270
(87)【国際公開番号】W WO2020040979
(87)【国際公開日】2020-02-27
【審査請求日】2021-02-18
(32)【優先日】2018-08-23
(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)【参考文献】
【文献】米国特許出願公開第2016/0107313(US,A1)
【文献】米国特許出願公開第2008/0234864(US,A1)
【文献】特表2018-505788(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
B25J 1/00 ~ 21/02
(57)【特許請求の範囲】
【請求項1】
ロボットの動作計画に有用なプロセッサベースのシステムの少なくとも1つのコンポーネントの動作方法であって、
構成時における、
動力学モデルによって表されるロボットについて、前記ロボット
のデータ構造表現を生成するステップであって、
前記ロボットの前記データ構造表現は前記ロボットをデータ構造の形式で表現したものである、該ステップと、
前記
ロボットが動作する環境について、前記環境内
の持続的障害物のセット
のデータ構造表現を生成するステップであって、
前記環境内の前記持続的障害物のセットの前記データ構造表現は前記環境内の前記持続的障害物のセットをデータ構造の形式で表現したものであり、前記環境内の前記持続的障害物のセットの前記データ構造表現は第1の数の障害物の各々の前記障害物によって占められる前記環境内のそれぞれの体積が前記構成時に既知であ
る前記第1の数の障害物の表現を含む、該ステップと、
実行時における、
ロボットの少なくとも第1の数のポーズの各々について、回路の少なくとも1つのセットによって、前記ロボットの
前記データ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットの他の部分と衝突するかどうかを決定するステップと、
前記ロボットの少なくとも第2の数のポーズの各々について、回路の少なくとも1つのセットによって、前記環境内の
前記持続的障害物のセットの
前記データ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットが動作する前記環境内の任意の
前記持続的障害物と衝突するかどうかを決定するステップであって、
前記環境内の前記持続的障害物のセットの前記データ構造表現は前記第1の数の障害物の各々の前記障害物によって占められる前記環境内のそれぞれの体積が
前記構成時に既知である
前記第1の数の障害物の
前記表現を含む、該ステップと、
前記ロボットの少なくとも第3の数のポーズの各々について、回路の少なくとも1つのセットによって、前記環境内の過渡的障害物のセットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記環境内の任意の過渡的障害物と衝突するかどうかを決定するステップであって、
前記環境内の前記過渡的障害物のセットの前記データ構造表現は前記環境内の前記過渡的障害物のセットをデータ構造の形式で表現したものであり、前記環境内の前記過渡的障害物のセットの前記データ構造表現は、もし存在するのであれば第2の数の障害物の各々の前記障害物によって占有される前記環境内のそれぞれの体積が前記実行時の少なくとも一部で既知であり、前記障害物の各々によって占有される前記環境内のそれぞれの体積が前記構成時に不知である前記環境内の
前記第2の数の障害物の表現を含む、該ステップと、
前記ポーズのうちの少なくとも1つについて衝突が検出されたかどうかを表す信号を提供するステップ
を有する方法。
【請求項2】
前記環境内の前記持続的障害物のセットの前記データ構造表現を生成するステップは、境界体積の階層を生成するステップを含む、請求項1に記載の方法。
【請求項3】
境界体積の階層を生成するステップは、リーフノードとして三角形メッシュを有する境界ボックスの階層を生成するステップを含む、請求項2に記載の方法。
【請求項4】
境界体積の階層を生成するステップは、球体の階層を生成するステップを含む、請求項2に記載の方法。
【請求項5】
境界体積の階層を生成するステップは、k-ary球ツリーを生成するステップを含む、請求項2に記載の方法。
【請求項6】
境界体積の階層を生成するステップは、軸整列境界ボックスの階層又は境界体積の階層を生成するステップを含む、請求項2に記載の方法。
【請求項7】
前記環境内の前記持続的障害物のセットの前記データ構造表現を生成するステップは、前記環境内の前記持続的障害物のセットを表すボクセル占有情報を記録するオクツリーを生成するステップを含む、請求項1に記載の方法。
【請求項8】
前記ロボットの前記データ構造表現を生成するステップは、k-aryツリーを生成するステップを含む、請求項1に記載の方法。
【請求項9】
前記ロボットの前記データ構造表現を生成するステップは、前記ロボットの複数のリンクのそれぞれについて、それぞれのk-aryツリーを生成するステップを含む、請求項1に記載の方法。
【請求項10】
前記ロボットの前記データ構造表現を生成するステップは、前記ロボットの複数のリンクのそれぞれについて、4以上のツリー深さを有するそれぞれの8-aryツリーを生成するステップを含む、請求項1に記載の方法。
【請求項11】
前記ロボットの前記データ構造表現を生成するステップは、前記ロボットの複数のリンクのそれぞれについて、それぞれのk-aryツリーを生成するステップを含み、前記k-aryツリーの各ノードは前記それぞれの球体の任意の部分が占有されている場合に占有されていると識別される球体である、請求項1に記載の方法。
【請求項12】
前記ロボットが、ロボット付属物を含み、
前記ロボット付属物の第1のポーズと前記ロボット付属物の第2のポーズの間の前記ロボット付属物の動作について、前記ロボット付属物のC空間における前記ロボット付属物の前記第1のポーズと前記第2のポーズの間の複数の中間ポーズを、前記C空間において連続的に隣接するポーズの複数の対の間の距離が動作細分割粒度についての受信値を満たすまで計算するステップをさらに有する、請求項1に記載の方法。
【請求項13】
前記ロボット付属物の複数の中間ポーズを計算するステップは、
前記ロボット付属物の関節のそれぞれについて、前記第1および前記第2のポーズにおける前記関節のそれぞれの位置および向きの間を補間してn番目の中間ポーズを取得するステップと、
前記ロボット付属物の関節のそれぞれについて、終了条件に達するまで、それぞれのi番目の反復についてのそれぞれの最近傍ポーズの対における前記関節のそれぞれの位置および向きの間を反復的に補間するステップをさらに有する、請求項12に記載の方法。
【請求項14】
前記終了条件はn番目の中間ポーズを得るように動作細分化粒度を満たす連続的に隣接するポーズ間の距離であり、
複数の前記反復に対して、前記終了条件に達したかどうかを決定するステップをさらに有する、請求項13に記載の方法。
【請求項15】
複数の前記ポーズの各々について、動力学ロボットモデル上で順方向動力学計算を実行して、前記ロボット付属物の各リンクの複数の変換を計算するステップをさらに含む、請求項12に記載の方法。
【請求項16】
前記ロボットの任意の部分が前記ロボットの他の部分と衝突するかどうかを決定するステップ、前記ロボットの任意の部分が任意の持続的障害物と衝突するかどうかを決定するステップ、又は、前記ロボットの任意の部分が任意の過渡的障害物と衝突するかどうかを決定するステップの少なくとも1つが、階層表現またはユークリッド距離場表現のうちの少なくとも1つに基づいて決定するステップを含む、請求項1に記載の方法。
【請求項17】
ロボットの動作計画に有用な衝突評価を生成するシステムであって、
前記システムは、
少なくとも1つのプロセッサと、
プロセッサ実行可能命令またはデータのうちの少なくとも1つを記憶する少なくとも1つの非一時的プロセッサ可読媒体であって、
前記少なくとも1つのプロセッサによって実行されたときに、前記少なくとも1つのプロセッサに、
構成時に、
動力学モデルによって表されるロボットについて、前記ロボットのデータ構造表現を生成するステップ
であって、前記ロボットの前記データ構造表現は前記ロボットをデータ構造の形式で表現したものである、該ステップと、
前記
ロボットが動作する環境について、前記環境内
の持続的障害物のセット
のデータ構造表現を生成するステップであって、
前記環境内の前記持続的障害物のセットのデータ構造表現は前記環境内の前記持続的障害物のセットをデータ構造の形式で表現したものであり、前記環境内の前記持続的障害物のセットの前記データ構造表現
は第1の数の障害物の各々の前記障害物によって占められる前記環境内のそれぞれの体積が前記構成時に既知である前記第1の数の障害物の
前記表現を含む、該ステップと、
実行時に、
ロボットの少なくとも第1の数のポーズの各々について、前記ロボットの
前記データ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットの他の部分と衝突するかどうかを決定するステップと、
前記ロボットの少なくとも第2の数のポーズの各々について、
前記環境内の
前記持続的障害物のセットの
前記データ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットが動作する前記環境内の任意の
前記持続的障害物と衝突するかどうかを決定するステップであって、
前記環境内の前記持続的障害物のセットの前記データ構造表現は前記第1の数の障害物の各々の前記障害物によって占められる前記環境内のそれぞれの体積が
前記構成時に既知である前記第1の数の障害物の
前記表現を含む、該ステップと、
前記ロボットの少なくとも第3の数のポーズの各々について、前記環境内の過渡的障害物のセットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記環境内の任意の過渡的障害物と衝突するかどうかを決定するステップであって、
前記環境内の前記過渡的障害物のセットの前記データ構造表現は前記環境内の前記過渡的障害物のセットをデータ構造の形式で表現したものであり、前記環境内の前記過渡的障害物のセットの前記データ構造表現は、もし存在するのであれば第2の数の障害物の各々の前記障害物によって占有される前記環境内のそれぞれの体積が
前記実行時の少なくとも一部で既知であり、前記障害物の各々によって占有される前記環境内の
前記それぞれの体積が前記構成時に不知である前記環境内の前記第2の数の障害物の表現を含む、該ステップと、
前記ポーズのうちの少なくとも1つについて衝突が検出されたかどうかを表す信号を提供するステップを実行させる
、該非一時的プロセッサ可読媒体を有する、システム。
【請求項18】
前記少なくとも1つのプロセッサは、前記環境内の前記持続的障害物のセットの前記データ構造表現を生成するために、境界体積の階層を生成する、請求項17に記載のシステム。
【請求項19】
前記少なくとも1つのプロセッサは、境界体積の階層を生成するために、リーフノードとして三角形メッシュを有する境界ボックスの階層を生成する、請求項18に記載のシステム。
【請求項20】
前記少なくとも1つのプロセッサは、境界体積の階層を生成するために、球体の階層を生成する、請求項18に記載のシステム。
【請求項21】
前記少なくとも1つのプロセッサは、境界体積の階層を生成するために、k-ary球ツリーを生成する、請求項18に記載のシステム。
【請求項22】
前記少なくとも1つのプロセッサは、境界体積の階層を生成するために、軸整列境界ボックスの階層を生成する、請求項18に記載のシステム。
【請求項23】
前記少なくとも1つのプロセッサは、境界体積の階層を生成するために、指向性境界ボックスの階層を生成する、請求項18に記載のシステム。
【請求項24】
前記少なくとも1つのプロセッサは、前記環境内の前記持続的障害物のセットの前記データ構造表現を生成するために、前記環境内の前記持続的障害物のセットを表すボクセル占有情報を記憶するオクツリーを生成する、請求項17に記載のシステム。
【請求項25】
前記少なくとも1つのプロセッサは、前記ロボットの前記データ構造表現を生成するために、k-aryツリーを生成する、請求項17に記載のシステム。
【請求項26】
前記少なくとも1つのプロセッサは、前記ロボットの前記データ構造表現を生成するために、前記ロボットの複数のリンクのそれぞれについて、それぞれのk-aryツリーを生成する、請求項17に記載のシステム。
【請求項27】
前記少なくとも1つのプロセッサは、前記ロボットの前記データ構造表現を生成するために、前記ロボットの複数のリンクのそれぞれについて、それぞれの8-aryツリーを生成する、請求項17に記載のシステム。
【請求項28】
前記少なくとも1つのプロセッサは、前記ロボットの前記データ構造表現を生成するために、前記ロボットの複数のリンクのそれぞれについて、4以上のツリー深さを有するそれぞれの8-aryツリーを生成する、請求項17に記載のシステム。
【請求項29】
前記少なくとも1つのプロセッサは、前記ロボットの前記データ構造表現を生成するために、前記ロボットの複数のリンクのそれぞれについて、それぞれのk-aryツリーを生成し、前記k-aryツリーの各ノードは前記それぞれの球体の任意の部分が占有されている場合に占有されていると識別される球体である、請求項17に記載のシステム。
【請求項30】
前記ロボットが、ロボット付属物を含み、
前記少なくとも1つのプロセッサ実行可能命令またはデータの実行は、前記少なくとも1つのプロセッサに、
前記ロボット付属物の第1のポーズと前記ロボット付属物の第2のポーズの間の前記ロボット付属物の動作について、前記ロボット付属物のC空間における前記ロボット付属物の前記第1のポーズと前記第2のポーズの間の複数の中間ポーズを、前記C空間において連続的に隣接するポーズの複数の対の間の距離
が動作細分割粒度についての受信値を満たすまで計算するステップをさらに実行させる、請求項17に記載のシステム。
【請求項31】
前記ロボット付属物の複数の中間ポーズを計算するために、前記少なくとも1つのプロセッサは、
前記ロボット付属物の関節のそれぞれについて、前記第1および前記第2のポーズにおける前記関節のそれぞれの位置および向きの間を補間してn番目の中間ポーズを取得するステップと、
前記ロボット付属物の関節のそれぞれについて、終了条件に達するまで、それぞれのi番目の反復についてのそれぞれの最近傍ポーズの対における前記関節のそれぞれの位置および向きの間を反復的に補間するステップを実行する、請求項30に記載のシステム。
【請求項32】
前記終了条件はn番目の中間ポーズを得るように動作細分化粒度を満たす連続的に隣接するポーズ間の距離であり、
前記プロセッサ実行可能命令またはデータのうちの前記少なくとも1つの実行は、前記少なくとも1つのプロセッサに、複数の前記反復に対して、前記終了条件に達したかどうかを決定するステップをさらに実行させる、請求項31に記載のシステム。
【請求項33】
前記少なくとも1つのプロセッサ実行可能命令またはデータの実行はさらに、前記少なくとも1つのプロセッサに、
複数の前記ポーズの各々について、動力学ロボットモデル上で順方向動力学計算を実行して、前記ロボット付属物の各リンクの複数の変換を計算するステップをさらに実行させる、請求項30に記載のシステム。
【請求項34】
前記ロボットの任意の部分が前記ロボットの他の部分と衝突するかどうかの決定、前記ロボットの任意の部分が任意の持続的障害物と衝突するかどうかの決定、又は、前記ロボットの任意の部分が任意の過渡的障害物と衝突するかどうかの決定の少なくとも1つが、階層表現またはユークリッド距離場表現のうちの少なくとも1つに基づく決定を含む、請求項17に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は一般に、ロボット動作計画に関し、特に、ロボット等を駆動する動作計画を生成するために、プロセッサ回路を介して衝突検出を実行するシステムおよび方法に関する。
【背景技術】
【0002】
ロボット制御やロボット工学において、動作計画(又は、モーションプランニング/モーションプラン/運動計画/motion planning)は基本的な問題である。動作計画は、ロボットがスタート状態からゴール状態に追従できる経路を完全に指定する。通常、動作環境では障害物に衝突せず、動作環境では障害物に衝突する可能性が少なくなる。動作計画への挑戦は、環境の特性が変更しても、非常に速い速度で動作計画を実行する能力を含む。例えば、環境内の1つまたは複数の障害物の位置または形状などの特性は、経時的に変化することがある。また、例えば、ロボット自体の一部の位置又は形状のような特性は経時的に変化する場合があり、例えば、エンドエフェクタ又はアームツールのエンドは、ガスピング(又は、把持/gasping/grasping)構成及び把持構成を有することができる。課題は更に、比較的低コストの機器を使用し、比較的低エネルギー消費で、限られた量の記憶(例えば、メモリ回路、例えば、プロセッサチップ回路上)で動作計画を実行することを含む。
【発明の開示】
【発明が解決しようとする課題】
【0003】
動作計画の問題を解くために、多種多様なアルゴリズムが使用される。これらのアルゴリズムの各々は、典型的にはロボットの所与の姿勢または1つの姿勢から別の姿勢への運動がロボット自体または環境内の障害物のいずれかとの衝突をもたらすかどうかを決定することができる必要がある。
【課題を解決するための手段】
【0004】
本明細書で説明される衝突検出ハードウェア、ソフトウェア、および/またはファームウェアは単一のロボット姿勢、または1つの姿勢(例えば、開始姿勢)から別の姿勢(例えば、終了姿勢)へのロボットの動きによって、ロボットが、それ自体、またはロボットが動作する現在の環境内の任意の障害物と衝突するかどうかを判定または計算することができる。環境は衝突の危険性を示す物体(例えば、無生物の物体、人間および他の動物を含む生命の物体)である障害物を含むことができる。環境は1つ以上の目標物(又は、目標物体/対象物/ターゲットオブジェクト)、すなわち、ロボットが係合すべき物体を含んでも含まなくてもよい。障害物のいくつかについては、障害物によって占められるそれぞれの体積(又は、ボリューム/volume)が動作計画者のモデルまたは計算回路が構成される時間、構成時間として表記される時間、およびロボット動作を通じて固定されるかまたは変更されないままであると予想される時間、実行時(又は、ランタイム/run time)として表記される時間において既知である。これらの障害物は障害物が占める体積が構成時(又は、準備段階/configuration time)に既知であり、実行時間を通して固定されたままであるか、または変化しないままであることが予想されるので、持続的障害物と呼ばれる。他の障害物については、障害物が占めるそれぞれのボリュームが構成時には知られておらず、実行時にのみ決定される。これらの障害物は、構成時に障害物が占める体積が分からないため、過渡的障害物(又は、一時的障害物/過渡的障害物/transient obstacles)と呼ばれる。これらの過渡的障害物のうちの1つまたは複数によって占有されるそれぞれの容積は、時間の経過に伴って固定または非移動または非変化であってもよく、静的障害物と呼ばれてもよい。これらの過渡的障害物のうちの1つまたは複数によって占有されるそれぞれの体積は時間の経過とともに移動または変化し、動的障害物と呼ばれることがある。
【0005】
本明細書で説明される衝突検出ハードウェア、ソフトウェア、および/またはファームウェアは例えば、確率的ロードマップ(PRM)、迅速探索ランダムツリー(RRT)、RRT*、双方向RRTなどのアルゴリズムなど、様々な異なる動作計画アルゴリズムによって呼び出され、または呼び出され得るサブルーチンまたは関数として実装され得る。本明細書で説明する衝突検出ハードウェア、ソフトウェア、および/またはファームウェアは、多くの候補把持ポーズを迅速に評価することによって把持計画を加速するために使用することもできる。
【0006】
本明細書で説明される様々な実装形態は、典型的には2つまたは3つの構成時間入力、i)ロボットの動力学モデル(運動力学的モデル/kinetic model)、ii)構成時に環境内で占める既知の体積を有する環境内の持続的障害物の表現、および任意選択で、動作細分粒度値または仕様を使用する。ロボットの動力学モデルはロボットの多数の関節のいずれかに関する拘束(例えば、エルボー関節の最小および最大角度)、ロボットの各リンクからロボットのそれぞれの親リンクへの変換、ロボットの各関節の軸、およびロボットの各リンクの幾何学の仕様を含む。
【0007】
本明細書で説明される様々な実装形態は、典型的には2つまたは3つの実行時入力、すなわちa)開始ポーズ、b)動作が評価されている場合に任意選択で終了ポーズ、および実行時に環境内で占有する既知の体積を有する環境内の過渡的障害物の表現、および構成時に環境内で占有する体積が未知である(又は、不知である)環境内の過渡的障害物の表現を使用する。過渡的障害物は静的(すなわち、固定されているか、移動していないか、または、関連する期間または実行期間中に形状を変化させない)または動的(すなわち、関連する期間または実行期間の少なくとも一部の間に形状を移動または変化させる)であってもよい。数Dの自由度を有するロボットの場合、ポーズ(又は、姿勢)はDタプル(又は、D-tuple)として指定されてもよく、タプルの各要素は、その自由度(関節)の位置または回転を指定する。
【0008】
衝突検出のための効率的なハードウェアの実装は、物体、ポーズ、および/または動作(又は、動き/motion)を表すためのデータ構造の選択に注意深く注意を払うことによって実現することができる。適切に選択されたデータ構造は、記憶に必要なメモリの量、衝突検出に必要なハードウェアの量、衝突検出を実行するための待ち時間、および電力消費を有利に低減することができる。当業者であれば、本明細書の教示に基づいて他の構造を使用することができることを理解するであろうが、適切であり得るいくつかの例示的なデータ構造が本明細書で説明される。様々なオプションがあり、各オプションは、衝突検出の待ち時間、データ構造を構築するための待ち時間、および表現されるオブジェクトの幾何学的形状に対するデータ構造の適合性の間のそれぞれのトレードオフに関連付けられる。
【0009】
ロボットの動作計画に有用なプロセッサベースのシステムの少なくとも1つのコンポーネントの動作方法はロボットの少なくとも第1の数のポーズの各々について、回路の少なくとも1つのセットによって、ロボットの任意の部分がロボットのデータ構造表現に少なくとも部分的に基づいてロボットの別の部分と衝突するかどうかを決定するステップと、ロボットの少なくとも第2の数のポーズの各々について、回路の少なくとも1つのセットによって、ロボットの任意の部分が環境内の持続的障害物のセットのデータ構造表現に少なくとも部分的に基づいてロボットが動作する環境内の任意の持続的障害物と衝突するかどうかを決定するステップであって、データ構造表現は第1の数の障害物の各々によって占められる環境内のそれぞれの体積が構成時に既知である第1の数の障害物の表現を含む、該ステップと、ロボットの少なくとも第3の数のポーズの各々について、
ロボットの任意の部分が環境内の過渡的な障害物のセットのデータ構造表現に少なくとも部分的に基づいて環境内の任意の過渡的な障害物と衝突するかどうかを決定するステップであって、データ構造表現は環境内の第2の数の障害物(存在する場合)の表現を含み、その表現について、第2の数の障害物のうちの障害物のそれぞれによって占有される環境内のそれぞれの体積が実行時間の少なくともいくつかの部分の間に知られており、障害物のそれぞれによって占有される環境内のそれぞれの体積が構成時に不知である、該ステップと、ポーズのうちの少なくとも1つについて衝突が検出されたかどうかを表す信号を提供するステップを含むものとして要約されてもよい。
【0010】
ロボットのデータ構造表現に少なくとも部分的に基づいて、ロボットの任意の部分がロボットの別の部分と衝突するか否かを判断するステップは、ロボット付属物の少なくとも一部が第1のポーズにおいて、ロボット付属物の別の部分と衝突するか否かを判断するステップを含み得る。ロボットのデータ構造表現に少なくとも部分的に基づいて、ロボットの任意の部分がロボットの別の部分と衝突するか否かを判断するステップは、ロボット付属物の少なくとも一部が第1のポーズと第2のポーズとの間を移動する際に、ロボット付属物の別の部分と衝突するか否かを判断するステップを含み得る。ロボットの任意の部分が環境内の持続的障害物のセットのデータ構造表現に少なくとも部分的に基づいて、ロボットが動作する環境内の任意の持続的障害物と衝突するかどうかを判断するステップは、ロボット付属物の少なくとも一部が第1のポーズ内の環境内の任意の持続的障害物と衝突するかどうかを判断するステップを含み得る。ロボットの任意の部分が環境内の持続的障害物のセットのデータ構造表現に少なくとも部分的に基づいて、ロボットが動作する環境内の任意の持続的障害物と衝突するかどうかを判断するステップは、ロボット付属物の少なくとも一部が第1のポーズと第2のポーズとの間を移動する際に環境内の任意の持続的障害物と衝突するかどうかを判断するステップを含み得る。環境内の過渡的障害物のセットのデータ構造表現に少なくとも部分的に基づいて、ロボットが動作する環境内の任意の過渡的障害物にロボットの任意の部分が衝突するかどうかを判断するステップは、ロボット付属物の少なくとも一部が第1のポーズ内の環境内の任意の過渡的障害物に衝突するかどうかを判断するステップを含み得る。環境内の過渡的障害物のセットのデータ構造表現に少なくとも部分的に基づいてロボットが動作する環境内の任意の過渡的障害物にロボットの任意の部分が衝突するかどうかを判断するステップは、第1のポーズと第2のポーズとの間を移動する際に環境内の任意の過渡的障害物にロボット付属物の少なくとも一部が衝突するかどうかを判断するステップを含み得る。
【0011】
本方法は構成時間中に、動力学モデルによって表されるロボットについて、ロボットのデータ構造表現を生成するステップと、環境について、環境における持続的障害物の設定のデータ構造表現を生成するステップであって、データ構造表現が、構成時に第1の数の障害物の各々によって占められる環境内のそれぞれの体積が既知である障害物の第1の数の表現を含む、該ステップとをさらに含むことができる。環境における持続的障害の集合のデータ構造表現を生成するステップは、境界体積の階層を生成するステップを含むことができる。境界体積の階層を生成するステップは、三角メッシュをリーフノードとする境界ボックスの階層を生成するステップを含むことができる。境界体積の階層を生成するステップは、球体(又は、球)の階層を生成するステップを含み得る。境界体積の階層を生成するステップは、k-ary(又は、k進/k値)球ツリーを生成するステップを含むことができる。境界体積の階層を生成するステップは、軸整列境界ボックスの階層を生成するステップを含むことができる。境界体積の階層を生成するステップは、指向性境界ボックスの階層を生成するステップを含むことができる。環境内の持続的障害物のセットのデータ構造表現を生成するステップは、環境内の持続的障害物のセットを表すボクセル占有情報を記憶する八分木を生成するステップを含むことができる。ロボットのデータ構造表現を生成するステップは、k-ary木を生成するステップを含み得る。ロボットのデータ構造表現を生成するステップは、ロボットの多数のリンクのそれぞれに対して含むことができ、それぞれのk-ary木を生成する。ロボットのデータ構造表現を生成するステップは、ロボットの多数のリンクのそれぞれに対して含むことができ、それぞれの8-aryツリーを生成する。ロボットのデータ構造表現を生成するステップは、ロボットの多数のリンクの各々について、4以上のツリー深さを有するそれぞれの8-aryツリーを生成するステップを含むことができる。ロボットのデータ構造表現を生成するステップはロボットの多数のリンクのそれぞれに対して含むことができ、それぞれのk-aryツリーを生成し、ここで、k-aryツリーの各ノードはそれぞれの球体のいずれかの部分が占有されている場合に占有されていると識別される球体である。
【0012】
本方法は実行時に、環境について、環境内の過渡的な障害物のセットのデータ構造表現を生成するステップであって、データ構造表現はもし存在するならば第2の数の障害物のそれぞれによって占有される環境内のそれぞれの体積が実行時の少なくとも一部の間に知られており、かつ、障害物のそれぞれによって占有される環境内のそれぞれの体積が構成時に不知である過渡的な障害物の表現である、該ステップをさらに含むことができ、ロボットの任意の部分がロボットの別の部分と衝突するかどうかを判定するステップと、ロボットの任意の部分が環境内の任意の持続的な障害物と衝突するかどうかを判定するステップと、ロボットの任意の部分が環境内の任意の過渡的な障害物と衝突するかどうかを判定するステップのすべてが実行時に発生し得る。
【0013】
本方法は環境内に過渡的障害物が存在する場合、それを表すセンサ情報を受信するステップと、センサ情報を占有情報に変換するステップをさらに含むことができ、環境内の過渡的障害物のセットのデータ構造表現を生成するステップは占有情報から環境内の過渡的障害物のセットのデータ構造表現を生成するステップを含むことができる。
【0014】
本方法はさらに、複数のリンクおよび複数の関節を有するロボット付属物の形態でロボットを表す動力学モデルを受信するステップと、リンクのそれぞれの対の間の関節を受信するステップと、環境内の持続的障害物のセットのそれぞれの位置を表す占有情報を受信するステップと、動作計画に使用される動作細分粒度を表す少なくとも1つの値を受信するステップを含むことができる。
【0015】
動力学モデルを受信するステップ、占有情報を受信するステップ、および運動細分性を表す少なくとも1つの値を受信するステップはすべて構成時間中に発生することができ、ロボットの動力学モデルに基づいて構成時間中にロボットのデータ構造表現を生成するステップ、および構成時間中に環境内の持続的障害物のセットのデータ構造表現を生成するステップをさらに含むことができ、データ構造表現は構成時間中に第1の数の障害物のそれぞれによって占有される環境内のそれぞれの体積が構成時間中に既知である第1の数の障害物の表現を含み得る。
【0016】
本方法は実行時に環境内の過渡的障害物のセットのデータ構造表現を生成するステップをさらに含むことができ、データ構造表現は存在する場合には、第2の数の障害物のそれぞれによって占有される環境内のそれぞれの体積が実行時の少なくとも一部の間に知られ、障害物のそれぞれによって占有される環境内のそれぞれの体積が、構成時に不知である過渡的障害物の表現を含み得る。
【0017】
ロボットはロボット付属物を含むことができ、ロボット付属物の第1のポーズとロボット付属物の第2のポーズとの間のロボット付属物の動作について、C空間内の連続的に隣接するポーズのいくつかの対の間の次元が動作細分粒度の受信値を満たすまで、ロボット付属物の複数の中間ポーズを計算するステップをさらに含むことができ、ロボット付属物のC空間内のロボット付属物の第1のポーズと第2のポーズとの間の複数の中間ポーズは、ロボット付属物のC空間内にある。ロボット付属物の複数の中間ポーズを計算するステップは、ロボット付属物の関節の各々について、n番目の中間ポーズを得るために第1および第2のポーズにおける関節についてのそれぞれの位置および向きの間を補間するステップと、終了条件に達するまで、それぞれのi番目の反復について、それぞれの最近傍ポーズのそれぞれの対における関節についてのそれぞれの位置および向きの間を反復的に補間するステップとを含むことができる。
【0018】
終了条件は、n番目の中間ポーズを得るために動作細分化粒度を満たす、連続的に隣接するポーズ間の距離であってもよく、終了条件に到達したかどうかを判定するステップを、反復の回数に対してさらに含んでもよい。
【0019】
本方法はさらに、複数のポーズのそれぞれに対して、運動学ロボットモデル上で前方運動学を実行して、ロボット付属物の各リンクの多数の変換を計算し、C空間から自由空間(例えば、3次元環境)へポーズまたはモーションをマッピングするステップを含んでもよい。
【0020】
ロボットの任意の部分がロボットの別の部分と衝突するかどうかを決定するステップ、ロボットの任意の部分が任意の持続的な障害物と衝突するかどうかを決定するステップ、またはロボットの任意の部分が任意の過渡的な障害物と衝突するかどうかを決定するステップのうちの任意の1つまたは複数は、階層表現またはユークリッド距離場表現に基づいてもよい。
【0021】
ロボット工学のための動作計画に有用な衝突評価を生成するシステムは少なくとも1つのプロセッサと、少なくとも1つのプロセッサによって実行されるときに、少なくとも1つのプロセッサに、ロボットの少なくとも第1の数のポーズのそれぞれについて、ロボットの任意の部分がロボットのデータ構造表現に少なくとも部分的に基づいてロボットの別の部分と衝突するかどうかを判定させるステップと、ロボットの少なくとも第2の数のポーズのそれぞれについて、ロボットの任意の部分が環境内の持続的障害物のセットのデータ構造表現に少なくとも部分的に基づいて動作する環境内の任意の持続的障害物と衝突するかどうかを判定するステップであって、データ構造表現は、第1の数の障害物のそれぞれの障害物のそれぞれによって占有される環境内のそれぞれの体積が構成時に既知である第1の数の障害物の表現を含む、該ステップと、ロボットの少なくとも第3の数のポーズの各々について、ロボットの任意の部分が環境内の過渡的な障害物のセットのデータ構造表現の少なくとも一部に基づいて、環境内の任意の過渡的な障害物と衝突するかどうかを判定するステップであって、データ構造表現は環境内の第2の数の障害物(存在する場合)の表現を含み、第2の数の障害物の各々によって占有される環境内のそれぞれの体積は実行時間の少なくとも一部の間に既知であり、障害物の各々によって占有される環境内のそれぞれの体積は構成時に不知である、該ステップと、ポーズの少なくとも1つについて衝突が検出されたかどうかを表す信号を提供するステップを実行させるプロセッサ実行可能命令またはデータのうちの少なくとも1つを記憶する少なくとも1つの非一時的プロセッサ可読媒体を含むものとして要約されてもよい。
【0022】
ロボットのデータ構造表現に少なくとも部分的に基づいて、ロボットの任意の部分がロボットの別の部分と衝突するかどうかを判定するために、少なくとも1つのプロセッサは、ロボット付属物の少なくとも一部が第1のポーズでロボット付属物の別の部分と衝突するかどうかを判定することができる。ロボットのデータ構造表現に少なくとも部分的に基づいて、ロボットの任意の部分がロボットの別の部分と衝突するかどうかを判定するために、少なくとも1つのプロセッサは、ロボット付属物の少なくとも一部が第1のポーズと第2のポーズとの間で移動する際にロボット付属物の別の部分と衝突するかどうかを判定することができる。ロボットの任意の部分がロボットが動作する環境内の任意の持続的障害物と衝突するかどうかを、環境内の持続的障害物のセットのデータ構造表現に少なくとも部分的に基づいて判定するために、少なくとも1つのプロセッサは、ロボット付属物の少なくとも一部が第1のポーズで環境内の任意の持続的障害物と衝突するかどうかを判定することができる。ロボットの任意の部分がロボットが動作する環境内の任意の持続的障害物と衝突するかどうかを、環境内の持続的障害物のセットのデータ構造表現に少なくとも部分的に基づいて判定するために、少なくとも1つのプロセッサは、ロボット付属物の少なくとも一部が第1のポーズと第2のポーズとの間で移動する際に環境内の任意の持続的障害物と衝突するかどうかを判定することができる。ロボットの任意の部分がロボットが動作する環境内の任意の過渡的障害物と衝突するかどうかを、環境内の過渡的障害物のセットのデータ構造表現に少なくとも部分的に基づいて判定するために、少なくとも1つのプロセッサは、ロボット付属物の少なくとも一部が第1のポーズで環境内の任意の過渡的障害物と衝突するかどうかを判定することができる。ロボットの任意の部分がロボットが動作する環境内の任意の過渡的障害物と衝突するかどうかを、環境内の過渡的障害物のセットのデータ構造表現に少なくとも部分的に基づいて判定するために、少なくとも1つのプロセッサは、ロボット付属物の少なくとも一部が第1のポーズと第2のポーズとの間を遷移する際に環境内の任意の過渡的障害物と衝突するかどうかを判定することができる。
【0023】
プロセッサ実行可能命令またはデータのうちの少なくとも1つの実行はさらに、少なくともプロセッサに、構成時間中に、動力学モデルによって表されるロボットのために、ロボットのデータ構造表現を生成させ、環境のために、環境内の持続的障害物のセットのデータ構造表現を生成させてもよく、データ構造表現は、第1の数の障害物のうちの第1の数の障害物のうちの障害物のそれぞれによって占有される環境内のそれぞれの体積が構成時に既知で第1の数の障害物の表現を含む。環境における持続的障害の集合のデータ構造表現を生成するために、少なくとも1つのプロセッサは、境界体積の階層を生成することができる。境界体積の階層を生成するために、少なくとも1つのプロセッサは、三角メッシュをリーフノードとする境界ボックスの階層を生成してもよい。境界体積の階層を生成するために、少なくとも1つのプロセッサは球の階層を生成してもよい。境界体積の階層を生成するために、少なくとも1つのプロセッサは、k-ary球ツリーを生成することができる。境界体積の階層を生成するために、少なくとも1つのプロセッサは、軸に整列された境界ボックスの階層を生成することができる。境界体積の階層を生成するために、少なくとも1つのプロセッサは、指向性境界ボックスの階層を生成することができる。環境内の持続的障害物のセットのデータ構造表現を生成するために、少なくとも1つのプロセッサは、環境内の持続的障害物のセットを表すボクセル占有情報を記憶する八分木を生成することができる。ロボットのデータ構造表現を生成するために、少なくとも1つのプロセッサは、k-aryツリーを生成することができる。ロボットのデータ構造表現を生成するために、少なくとも1つのプロセッサは、ロボットのいくつかのリンクのそれぞれについて、それぞれのk-aryツリーを生成することができる。ロボットのデータ構造表現を生成するために、少なくとも1つのプロセッサは、ロボットのいくつかのリンクのそれぞれについて、それぞれの8-aryツリーを生成することができる。ロボットのデータ構造表現を生成するために、少なくとも1つのプロセッサは、ロボットのいくつかのリンクのそれぞれについて、4以上のツリー深さを有するそれぞれの8-aryツリーを生成することができる。ロボットのデータ構造表現を生成するために、少なくとも1つのプロセッサはロボットのいくつかのリンクのそれぞれについてそれぞれのk-aryツリーを生成することができ、k-aryツリーの各ノードは、それぞれの球の任意の部分が占有されている場合に占有されていると識別される球である。
【0024】
プロセッサ実行可能命令またはデータのうちの少なくとも1つの実行は少なくともプロセッサに、実行時間中に、環境内の過渡的障害物のセットのデータ構造表現を生成させるステップであって、データ構造表現は第2の数の障害物のそれぞれによって占有される環境内のそれぞれの体積が実行時間の少なくとも一部分中に既知であり、各障害物によって占有される環境内のそれぞれの体積が構成時に不知である過渡的障害物の表現を含む該ステップをさらに含むことができ、ロボットのいずれかの部分がロボットの別の部分と衝突するかどうかの判定、ロボットのいずれかの部分が環境内のいずれかの持続的障害物と衝突するかどうかの判定、およびロボットのいずれかの部分が環境内のいずれかの過渡的障害物と衝突するかどうかの判定はすべて、実行時間中に行われ得る。
【0025】
プロセッサ実行可能命令またはデータのうちの少なくとも1つの実行は少なくとも1つのプロセッサに、環境内に過渡的障害物が存在する場合、それを表すセンサ情報を受信させ、センサ情報を占有情報に変換させ、環境内の過渡的障害物のセットのデータ構造表現を生成させることができ、少なくとも1つのプロセッサは、占有情報から環境内の過渡的障害物のセットのデータ構造表現を生成することができる。
【0026】
プロセッサ実行可能命令またはデータのうちの少なくとも1つの実行はさらに、少なくともプロセッサに、複数のリンクおよび複数の関節を有するロボット付属物の形態でロボットを表す動力学モデルを受信させるステップであって、関節はリンクのそれぞれの対の間の関節である該ステップと、環境内の持続的障害物のセットのそれぞれの場所を表す占有情報を受信し、動作計画で使用されるべき動作細分性を表す少なくとも1つの値を受信するステップを実行させることができる。
【0027】
動力学モデル、占有情報、および動作細分割粒度を表す少なくとも1つの値はすべて、構成時間中に受信されてもよく、プロセッサ実行可能命令またはデータのうちの少なくとも1つの実行は少なくともプロセッサに、ロボットの動力学モデルに基づいて、構成時間中にロボットのデータ構造表現を生成させ、構成時間中に環境内の持続的障害物のセットのデータ構造表現を生成させてもよく、データ構造表現は、第1の数の障害物のうちの障害物のそれぞれによって占有される環境内のそれぞれの体積が構成時間に既知である第1の数の障害物の表現を含み得る。
【0028】
プロセッサ実行可能命令またはデータのうちの少なくとも1つの実行は少なくともプロセッサにさらに、実行時に環境内の過渡的障害物のセットのデータ構造表現を生成させることができ、データ構造表現はそれ(下記の過渡的障害物)が存在するのであれば、第2の数の障害物のうちの障害物のそれぞれによって占有される環境内のそれぞれの体積が実行時の少なくとも一部で既知であり、障害物のそれぞれによって占有される環境内のそれぞれの体積が構成時に不知である過渡的障害物の表現を含み得る。
【0029】
ロボットはロボット付属物を含むことができ、プロセッサ実行可能命令またはデータのうちの少なくとも1つの実行は少なくともプロセッサに、ロボット付属物の第1のポーズとロボット付属物の第2のポーズとの間のロボット付属物の運動のために、ロボット付属物のC空間内のロボット付属物の第1のポーズと第2のポーズとの間の複数の中間ポーズを、C空間内の連続的に隣接するポーズのいくつかの対の間の次元が、動作細分粒度のための受信された値を満たすまで、計算させるステップをさらに引き起こすことができる。ロボット付属物の複数の中間ポーズを計算するために、少なくとも1つのプロセッサはロボット付属物の関節のそれぞれについて、第1および第2のポーズにおける関節のそれぞれの位置および向きの間を補間して、n番目の中間ポーズを取得することができ、ロボット付属物の関節のそれぞれについて、終了条件に達するまで、それぞれのi番目の反復について、最近傍ポーズのそれぞれの対における関節のそれぞれの位置および向きの間を反復的に補間することができる。
【0030】
終了条件は、n番目の中間ポーズを得るための動作細分性粒度を満たす、連続して隣接するポーズ間の距離であってもよく、プロセッサ実行可能命令またはデータのうちの少なくとも1つの実行は少なくともプロセッサに、いくつかの反復について、終了条件に達したかどうかをさらに判定させてもよい。
【0031】
プロセッサ実行可能命令またはデータのうちの少なくとも1つの実行はさらに、少なくともプロセッサに、いくつかのポーズのそれぞれについて、運動ロボットモデル上で順運動学を実行させて、C空間と自由空間との間のロボット付属物の各リンクのいくつかの変換を計算させてもよい。
【0032】
i)ロボットのいずれかの部分がロボットの他の部分と衝突するかどうか、ii)ロボットのいずれかの部分が何らかの持続的障害物と衝突するかどうか、またはiii)ロボットのいずれかの部分が何らかの過渡的障害物と衝突するかどうかの判定のうちの1つ以上は、階層的表現またはユークリッド距離場表現に基づくことができる。
【0033】
プロセッサ実行可能命令またはデータの少なくとも1つは、少なくとも1つのプロセッサによって実行されると、本明細書に記載する方法のいずれかを少なくとも1つのプロセッサにさらに実行させてもよい。
【図面の簡単な説明】
【0034】
図面において、同一の参照番号は、同様の要素または作用を示す。図面における要素のサイズおよび相対位置は、必ずしも一定の縮尺で描かれてはいない。例えば、さまざまな要素の形状および角度は一定の縮尺で描かれず、これらの要素のいくつかは、図面を見やすくするために、随時適当に拡大および配置されている。さらに、描かれた要素の特定の形状は、特定の要素の実際の形状に関するいかなる情報も伝えることを意図しておらず、図面における認識を容易にするために単に選択されたものである。
図1は、1つの例示としての実装に従った、ロボット、ドライバ、動作計画システム、及び衝突検出システムを含むロボット制御システム、並びに他の構成要素、ロボットが動作することができる環境におけるロボットの概略図であり、その環境はいくつかの障害物の一部が持続的であり、他の障害物が過渡的なものであり、オプションとして、多数の目標物(又は、ターゲットオブジェクト)を含む。
図2は、1つの例示としての実装による、
図1のロボット制御システムの機能ブロック図である。
図3は、1つの例示された実施形態による、
図1の衝突検出システムの機能ブロック図である。
図4は、
図1のロボットおよび環境の構成空間(C空間)の概略図であり、環境内の障害物の表現を有し、例示された一実施形態による、ロボットのポーズ間の衝突のない経路を表すエッジを有する計画グラフまたはロードマップを含む。
図5は、ロボット動力学モデルのデータ構造表現、環境内の持続的障害物および環境内の過渡的障害物を採用する衝突検出または予測を実行するための衝突検出システムにおける動作の高レベル方法を示すフロー図であり、1つの例示的実装によれば、動作計画システムを介して動作計画において採用可能な衝突検出を示す図である。
図6は、動力学モデルによって表されるロボットのデータ構造表現の生成を介して、動作計画および動作計画の生成を容易にするための衝突検出システムにおける動作方法を示す、低レベルフロー図である。
図7Aは、例示された一実施形態による、環境内の持続性オブジェクトを表すための境界体積の階層の生成を介して動作計画および動作計画の生成を容易にするための衝突検出システムにおける低レベルの動作方法を示す流れ図である。
図7Bは、例示された一実施形態による、環境内の持続性オブジェクトを表すためのリーフノードとして三角形メッシュを有する境界ボックスの階層の生成を介して、動作計画および動作計画の生成を容易にするための衝突検出システムにおける低レベルの動作方法を示すフロー図である。
図7Cは、例示された一実施形態による、環境内の持続性オブジェクトを表すための球体の階層の生成を介して、動作計画および動作計画の生成を容易にするための、衝突検出システムにおける低レベルの動作方法を示す流れ図である。
図7Dは、例示された一実施形態による、環境内の持続的オブジェクトを表すためのk-ary球ツリーの生成を介した、動作計画および動作計画の生成を容易にするための衝突検出システムにおける低レベルの動作方法を示す流れ図である。
図7Eは、例示された一実施形態による、環境内の持続性オブジェクトを表すための軸整列境界ボックスの階層の生成を介して、動作計画および動作計画の生成を容易にするための衝突検出システムにおける低レベルの動作方法を示すフロー図である。
図7Fは、例示された一実施形態による、環境内の持続性オブジェクトを表すための指向性境界ボックスの階層の生成を介して、動作計画および動作計画の生成を容易にするための衝突検出システムにおける低レベルの動作方法を示すフロー図である。
図7Gは、例示された一実施形態による、環境内の持続性オブジェクトを表すためにボクセル占有情報を記憶する八分木の生成を介して、動作計画および動作計画の生成を容易にするための衝突検出システムにおける低レベルの動作方法を示す流れ図である。
図8は1つの例示としての実施に従った、衝突検出システム200における動作の低レベル方法800を示すフロー図であり、環境のためのセンサデータを受信することにより、動作計画および動作計画の作成を容易にし、センサデータを、環境内の過渡オブジェクトの占有情報および生成データ構造表現に変換する。
図9は、例示された一実施形態による、ロボット付属物の動作の2つのポーズの間のロボット付属物の中間ポーズの計算を介して、動作計画および動作計画の作成を容易にするための、衝突検出システムにおける動作の低レベル方法900を示すフロー図である。
図10は、例示された一実施形態による、動作計画を容易にするための衝突検出システムにおける動作の低レベル方法1000と、中間ポーズを決定するための反復ループの実行を介した動作計画の生成とを示すフロー図である。
図11は、例示された一実施形態による、動作プランニングを容易にするための衝突検出システムにおける動作の低レベル方法1000、および、ロボットのための変換を計算するために前方運動学を採用する動作プランの生成を示すフロー図である。
図12は、例示された一実施形態による、ポーズにおけるロボットの一部分またはロボットの別の部分との自己衝突の評価を介して、動作計画および動作計画の生成を容易にするための、衝突検出システムにおける動作の低レベルの方法1000を示す流れ図である。
図13は、例示された一実施形態による、1つのポーズから別のポーズに移動するロボットの別の部分との一部またはロボットの自己衝突の評価を介して、動作計画の作成および動作計画の作成を容易にするための、衝突検出システムにおける動作の低レベルの方法1000を示す流れ図である。
図14Aは、例示された一実施形態による、三角形メッシュとして表されるロボット付属物の一部の等角図である。
図14B-14Eは
図14Aのロボット付属物の一部の等角図であり、図示された一実施形態による、深さ4の球ツリーの連続するレベルで表されるように描かれている。
図15Aは、例示された一実施形態による、複数の障害物(例えば、ポール(又は、極))を有するタスクを実行する、三角形メッシュによって表されるロボット付属物を有するロボットが実行する環境の等角図である。
図15Bは、1つの例示としての実施形態に従った、ロボット付属物の表現が球体ツリーに変換された、
図15Aの環境の等角図である。
【発明を実施するための形態】
【0035】
種々の実施態様が正しく理解されるように、開示内容の詳細を以下に説明する。但し、当業者ならば、これら特定の細部の1つまたは2つ以上を欠いても、または他の方法、他の構成部材、他の材料でも実施が可能であることは容易に理解するところであろう。他の例では、コンピュータシステム、アクチュエータシステム、および/または通信ネットワークに関連する周知の構造は実施形態の説明を不必要に曖昧にすることを避けるために、詳細には示されておらず、または説明されていない。他の例では実施形態の説明を不必要に曖昧にすることを回避するために、1つまたは複数の対象などの知覚データおよびボリュメトリック表現を生成するための周知のコンピュータビジョン方法および技法は詳細には説明されていない。
【0036】
本明細書及び特許請求の範囲において理由が必要ない限り、用語”を有する”及びその派生語は確定していない包括的な意味、即ち、”含む”であるとみなされるが、それに限定されるものではない
【0037】
この明細書全体を通して、実施態様に関連して記載された特定の特徴、構造または特徴が少なくとも1つの実施または少なくとも1つの実施態様に含まれることを手段して、「1つの実施」または「実施」または「1つの実施」または「実施形態」に言及することしたがって、この明細書全体にわたって、様々な箇所における「1つの実施」または「実施」または「1つの実施における」または「実施形態」の表現は、必ずしもすべてが同じ実施または実施形態を言及しているわけではない。さらに、特定の特徴、構造、または特性は、1つまたは複数の実装形態または実施形態において任意の適切な方法で組み合わせることができる。
【0038】
本明細書および添付の特許請求の範囲で使用されるように、単数形「a」、「an」、および「the」は内容が別段の明確な指示をしない限り、複数の指示対象を含む。また、用語「または」は内容が別段の明確な指示をしない限り、「および/または」を含む意味で一般に使用されることにも留意されたい。
【0039】
本明細書および添付の特許請求の範囲で使用されるように、用語は衝突が起こるか、または結果として起こるかのコンテキストで使用されるときに、いくつかの中間ポーズを介した2つのポーズ間の所与のポーズまたは移動がロボットの一部分と何らかの物体(例えば、ロボットの別の部分、持続的障害物、過渡的障害物、または現在目標とされている物体)との間の衝突をもたらすかどうかに関する評価または予測が行われることを決定し、決定し、決定することを意味する。
【0040】
冒頭の説明及び要約は便宜上のものであり、本発明の範囲を表すものではなく、又は実施形態を意味するものでもない。
【0041】
図1は、1つの例示としての実施形態に従った、ロボット102が動作し得る動作環境100を示す。簡潔にするために、本明細書では、動作環境100を環境100と呼ぶ。環境100は、ロボット102が動作して移動することができる二次元又は三次元空間を表す。環境100は、
図4を参照して以下に説明するロボットの「構成空間」または「C空間」とは異なることに留意されたい。
【0042】
環境100は、衝突の可能性のある領域を表す障害物106a~106n(まとめて106)を含むことができる。障害物(単数又は複数)106という用語は衝突の危険性を表す物体(例えば、無生物の物体、人間および他の動物を含む生物の物体)を示すために使用される。
【0043】
これらの障害物106a、106b、106cのいくつかは、静的な障害物または物体(すなわち、移動(すなわち、並進、回転)しない、または関連する期間または実行時間中に形状を変化させない障害物または物体、例えば、建物、木、岩、家具、台106a、106b、支柱106c、棚)の形態をとることができる。これらの障害物の中には、環境100において動的障害物または物体106d、106e、106f(すなわち、移動する障害物または物体(即ち、並進、回転))、または関連する期間または実行時の少なくとも一部の期間中に形状を変化させる物体、例えば、他のロボット、コンテナ106d、106e、車両106f、人、動物、移動物106gの形態の車両またはロボット)のような形態をとるものもある。例えば、ペデスタル(又は、台座/pedestal)106a、106bおよび支持ポスト106cのセットは固定されていてもよく、または関連する期間(例えば、実行時間)にわたって移動または形状変化しなくてもよく、したがって、静的障害物106と見なされる。また、例えば、一組のコンテナ106d、106e、および例えば車両の形態の別のロボット(例えば、車輪付き自走式駆動トロリ)106fは関連する期間(例えば、走行時間)の間に、形状(例えば、傾斜)を移動または変更することができ、したがって、動的障害物106とみなされる。
【0044】
障害物106a~106cのいくつかについては、障害物によって占められるそれぞれの体積がモデルまたは計算回路が構成される時間、構成時間として表記される時間、およびロボット動作を通じて固定されたままであるかまたは変化しないことが期待される時間、すなわち実行時間として表記される時間において既知である。これらの障害物106a~106cは障害物が占める体積が構成時間中にわかっており、実行時間を通して固定されたままであるか、または変更されないままであることが予想されるので、持続的障害物と呼ばれる。他の障害物106d~106fについては、障害物が占めるそれぞれの体積が構成時には知られておらず、実行時にのみ決定される。これらの障害物106d~106fは、構成時間中に障害物が占める体積が分からないため、過渡的障害物と呼ばれる。
【0045】
環境100は任意選択で、ロボット102が例えば、目標物108を把持し、目標物108を移動させ、さもなければ、目標物108に係合して、何らかの定義されたタスクまたは動作を実行することによって、相互作用することが意図される1つまたは複数の目標物108を含むことができる。目標物108は通常、障害物とは見なされないが、いくつかの実施形態では例えば、ロボットが連続的に係合する複数の目標物108が存在する場合、障害物を構成することができる。いくつかの実装形態はいかなる目標物も含まなくてもよく、ロボット102はいかなる物体とも相互作用することなく、またはいかなる物体とも係合することなく、様々なポーズ(又は、ポーズ)の間で移動される。
【0046】
図1は、限られた数の障害物106および目標物108を有する代表的な環境100を示す。典型的な環境は、他のロボットに対応する物体、および様々な他の自然または人工の静的および動的障害物106または目標物108を含む、多くの追加の障害物106および目標物108を含むことができる。環境によっては、目標物108を完全に省略したり、動的障害物106を省略したりする場合もある。本明細書で教示する概念は、図示したものよりも人口の多い環境で同様に使用することができる。
【0047】
ロボット102はデカルト、ロボットアセンブリ(SCARA)のための選択的に従順な(又は、従動する)アーム、円筒形、デルタ、極性、および垂直関節を含むが、これらに限定されない、任意のタイプのロボットであってもよい。また、ロボットは自律的に又は半自律的に(すなわち、少なくとも部分的には自律的に)作動し、環境100によって表される空間内を移動することができる自動車、飛行機、ドローン、又は任意の他の車両であってもよい。図示の実施形態ではロボット102がベース110と、一組のリンク112a、112b(2つだけ示す。まとめて112とする)と、一組の関節114(1つだけ示す)とを含み、関節114の各々はリンク112のそれぞれの対を物理的に結合する。ロボット102はまた、別のリンク112bに対して、又はベース110に対して1つのリンク112aの移動を駆動する1つ以上のアクチュエータ(例えば、電動モータ、ステッパモータ、ソレノイド、電磁石、油圧ピストン、空圧ピストン、油圧バルブ、空圧バルブ、真空システム用のポンプ又はコンプレッサ、油圧システム、空圧システム)116(1つだけ示す)を含むことができる。ロボット102はまた、エンドエフェクタまたはアームツール端部118、例えば、環境100内の目標物108に物理的に係合するための、対置可能な指、フック、または真空ポートを有する把持器を含み得る。
【0048】
環境100は、1つまたは複数の環境センサ122a、122b、122c(3つ示す/集合的に122)と、ハブまたは環境センサシステムコントローラ124とを含み得る環境センサシステム120を含んでもよい。
【0049】
環境センサ122は多種多様な形態またはタイプ、例えば、いくつか例を挙げると、1つ以上のデジタルカメラ122a、1つ以上の運動センサまたはレーダ122b、1つ以上のマイクロフォン122c、1つ以上の重量センサまたはロードセル(図示せず)、1つ以上の電気アイ(例えば、IR光源およびIRセンサ)(図示せず)、1つ以上のエンコーダ(例えば、ポジトンエンコーダ、ロータリエンコーダ、リードスイッチ)(図示せず)、1つ以上の温度センサ(図示せず)、湿度センサ(図示せず)、および/または1つ以上の圧力センサ(図示せず)のいずれかをとることができる。センサは障害物、目標物、ロボット、および/または環境内の他の物体の特性(例えば、位置、向き、形状、占有、移動、速度)を含む環境の特性を検出する。センサ122はハブ又は環境センサシステムコントローラ124に、有線、光学的、無線で信号を供給することができる。これらの信号のうちの少なくともいくつかは、任意選択で、知覚データを符号化するか、またはさもなければ表すことができる。
【0050】
ハブまたは環境センサシステムコントローラ124は回路、例えば、1つまたは複数のプロセッサおよび/または1つまたは複数の非一時的プロセッサ可読媒体(例えば、不揮発性メモリ、揮発性メモリ、回転記憶媒体)を含むことができ、例えば、非一時的プロセッサ可読媒体によって記憶されたプロセッサ実行可能命令の1つまたは複数のセットを実行することができる。ハブまたは環境センサシステムコントローラ124はセンサ122のうちの1つまたは複数に通信可能に結合(例えば、有線、光学的、無線)されて、感知された情報、例えば、知覚データを受信することができる。いくつかの実装形態では、1つまたは複数のプロセッサによるプロセッサ実行可能命令の実行がハブまたは環境センサシステムコントローラ124に、受信した感知情報の一部またはすべてを処理または前処理させることができる。
【0051】
ロボット制御システム126はハブまたは環境センサシステムコントローラ124に通信可能に結合(例えば、有線、光学的、無線で)されて、そこから情報を受信してもよい。情報は、環境100内の過渡的な障害物132の表現を含むことができる。ロボット制御システム126はコンピュータまたは端末134に通信可能に(例えば、有線で、光学的に、無線で)結合されて、動作細分粒度値(又は、運動細分粒度値/動作細分化の荒さの程度の値/motion subdivision granularity value)または仕様136の指示を受信することができる。
【0052】
ロボット制御システム126は典型的には別個であるが、いくつかの実装形態では共通の回路基板、プロセッサ、または他の回路に組み合わせることができる、いくつかの構成要素を含むことができる。例えば、一組のドライバ136はアクチュエータを駆動するためにアクチュエータ(複数可)116に通信可能に結合される回路を含み、ロボット102に定義されたポーズを採用させるかまたは移動させる。ドライバは例えば、電気モータ、ステッパモータ、ソレノイド、電磁石、油圧ピストン、空気圧ピストン、油圧弁、空気圧弁、真空システム用のポンプまたはコンプレッサ、油圧システム、空気圧システムのうちの任意の1つ以上を駆動するモータコントローラおよび同様の回路を含むことができる。
【0053】
ロボット制御システム126は、動作計画システム138を含んでもよい。動作計画システム138はロボット102とは別個の、ロボット102の一体部分であってもよく、または1つ以上の部分がロボットに搭載されてもよく、一方、1つ以上の他の部分がロボットとは別個(すなわち、オフボード)であってもよい。動作計画システム138は回路、例えば、1つ以上のプロセッサおよび/または1つ以上の非一時的プロセッサ可読媒体(例えば、不揮発性メモリ、揮発性メモリ、回転記憶媒体)を含んでもよく、例えば、非一時的プロセッサ可読媒体によって記憶された1つ以上のプロセッサ実行可能命令セットを実行してもよい。動作計画システム138はロボット102に特定のタスクを実行させるための動作計画を生成することができ、例えば、好ましくは障害物106との衝突なしに、一連の順次ポーズの間を遷移する。動作計画システム138は運転者136に通信可能に連結されて(例えば、ワイヤード、光学的、ワイヤレスで)、ロボットに動作計画に従わせる、または実行させる命令を提供することができる。
【0054】
ロボット制御システム126は、衝突検出システム140を含んでもよく、又は衝突検出システム140にアクセスし得る。衝突検出システム140は回路、例えば、1つまたは複数のプロセッサおよび/または1つまたは複数の非一時的プロセッサ可読媒体(例えば、不揮発性メモリ、揮発性メモリ、回転記憶媒体)を含むことができ、例えば、非一時的プロセッサ可読媒体によって記憶されたプロセッサ実行可能命令の1つまたは複数のセットを実行することができる。本明細書の他の箇所で図示および詳細に説明するように、衝突検出システム140は、ロボットの動力学モデル、環境内の持続的障害物、および環境内の過渡的障害物のデータ構造表現を有利に採用して、ロボットの障害物と環境100内の障害物106との衝突を種々のポーズで、またはポーズ間を移動(又は、遷移)して決定または検出する。データ構造は有利に階層構造(例えば、オクツリー、体積またはボックスのセット(例えば、軸に整合した境界ボックス(AABB)のツリー)、指向(軸に整合しない)境界ボックスのツリー、または球のツリー構造)、または、他のツリー構造、非階層的データ構造(例えば、ユークリデス距離フィールド)の形をとることができる。本明細書で説明するように、衝突検出システム140は衝突を判定または検出する際に、動作細分粒度値または仕様136を使用することができる。
【0055】
衝突検出システム140はロボット102の動力学モデル128の表現、環境100内の持続的障害物130の表現、および環境100内の過渡的障害物132の表現を受け取るために、ハブまたは環境センサシステムコントローラ124に通信可能に結合(例えば、有線、光学的、無線で)されてもよい。少なくともいくつかの実装形態では、衝突検出システム140が動力学モデル128、持続的障害物130の表現、および/または過渡的障害物132の表現のうちの1つ、複数、またはすべてを非階層フォーマットで受信する。これらの実装形態では、衝突検出システム140が場合によっては有利には動力学モデル128、持続的障害物130の表現、および/または過渡的障害物13の表現のうちの1つ、複数、またはすべてを、階層的フォーマットまたは階層的データ構造に変換することができる。いくつかの実装形態では、衝突検出システム140がいくつかの例では有利には動力学モデル128、持続的障害物130の表現、および/または過渡的障害物132の表現のうちの1つ、複数、またはすべてを、非階層フォーマットまたは階層データ構造、たとえばユークリッド距離場表現に変換することができる。他の実施態様では、衝突検出システム140が動力学モデル128、持続的障害物130の表現、および/または過渡的障害物132の表現のうちの1つ、複数、またはすべてを階層フォーマットで受信し、いかなる変換も実行しない。さらに他の実施態様では、衝突検出システム140が動力学モデル128、持続的障害物130の表現、および/または非階層フォーマットの過渡的障害物132の表現のうちの1つ、複数、またはすべてを受信し、変換を実行しない。さらに別の実施態様では、衝突検出システム140が1つ、複数、またはすべての動力学モデル128、持続的障害物130の表現、および/または過渡的障害物132の表現を階層フォーマットで受信し、そのようなものを非階層フォーマット(例えば、EDF)に変換する。
【0056】
衝突検出システム140はコンピュータまたは端末134に通信可能に(例えば、有線で、光学的に、無線で)結合されて、動作細分粒度値または仕様136を受信することができる。あるいは、動作細分粒度値または仕様136が衝突検出システム140によって前もって格納されてもよく、または何らかの他のソースから受信されてもよい。
【0057】
図示の実施において、目標物108は車両106fを介して環境100の一部を通って、例えば自律走行車輪付き又は追尾ロボット車両又はトロリー(例えば、KIVA(登録商標)ロボット)を介して輸送される。航空機搭載車両(例えば、回転型航空機またはクアッドコプター、航空機搭載ドローン)および/または水上搭載車両(例えば、船舶、潜水艦、水上ドローン)を含む他の車両を採用することができることに留意されたい。ロボット102は環境内の障害物106a~106fのいずれとも衝突することなく、車両106fから目標物108を取り出し、目標物108をコンテナ106d、106eの選択された1つに入れることを課される。あるいは、ロボット102が環境内の障害物106a~106fのいずれとも衝突することなく、コンテナ106d、106eのうちの選択された1つから目標物108を取り出し、目標物108を車両106f上に置くことを課されてもよい。タスクを実行することは動作計画を使用し、動作計画は衝突検出を使用する。
【0058】
動作計画についての課題は比較的低コストで、非常に速い速度で、環境またはロボットの特性が変化することにつれて頻繁に動作計画を実行する能力を含む。例えば、障害物は構成後に環境に入ることができ、または環境内で移動(例えば、並進、回転)することができ、または構成後に、または実行時間中のロボット102の動作または移動中でさえ、形状を変化させることができる。また、例えば、そのような特性はロボット102が様々なサイズの目標物108を保持しているとき、異なるエンドエフェクタ118に変更するとき、または異なるロボット付属物に変更するときに、ロボット102の一部(例えば、アーム端ツールまたはエンドエフェクタ108)によって占められると考えられる体積(又は、体積の変化)を含むことができるが、これらに限定されない。したがって、動作計画がタスクを実行するために、これらの変化を考慮することが有利である。これに関係する課題は障害物106によって、さらには環境100内のロボット102によって占有されていると考えられる空間を効率的に表現し、通信し、比較することである。したがって、本開示は、ロボット102が実世界環境でタスクを首尾よく実行することを可能にする、動作計画、特に衝突検出を容易にする技法を提供する。
【0059】
図2および以下の議論は、1つの例示としての実施に従って、様々な例示および説明された動作計画システムおよび方法が実施され得る、適切なロボット制御システム200の簡潔で、一般的な説明を提供する。
【0060】
必須ではないが、多くの実装はコンピュータまたはプロセッサ読み取り可能媒体上に記憶され、衝突評価および動作計画動作を実行することができる1つ以上のコンピュータまたはプロセッサによって実行されるプログラムアプリケーションモジュール、オブジェクト、またはマクロなど、コンピュータ実行可能命令の一般的なコンテキストで説明される。そのような動作計画動作は動力学モデル128(
図1)に基づくロボット幾何学の表現、持続的障害物130(
図1)の表現、および/または過渡的障害物132(
図1)の表現のうちの1つまたは複数を、データ構造フォーマット(例えば、階層フォーマット、非階層フォーマット)に生成または変換することを含むことができるが、これらに限定されない。そのような動作計画動作はロボットのデータ構造表現、環境内に存在する場合には持続的障害物のデータ構造表現、および/または環境内に存在する場合には過渡的障害物のデータ構造表現を使用して、ロボットの様々なポーズまたはロボットのポーズ間の運動の衝突を決定または検出または予測することを含むことができるが、これらに限定されない。これは、任意選択で、動作細分粒度値または仕様134に基づくことができる。いくつかの実装形態では動作計画動作が1つまたは複数の計画グラフ、動作計画、またはロードマップを決定すること、決定された計画グラフ、動作計画、またはロードマップを記憶すること、および/またはロボットの動作を制御するために計画グラフ、動作計画、またはロードマップを提供することを含むことができるが、これらに限定されない。
【0061】
前述のように、いくつかのセンサ282は、知覚データおよび/または他の感知された情報を、プロセッサ212aなどの1つまたは複数のプロセッサに提供することができる。知覚データはどのボクセルまたはサブ体積(例えば、ボックス)が現在の時間、例えば、事前構成時間(又は、構成前時間/pre-configuration time)、構成時間(又は、configuration time)、実行時間に環境内で占有されているかを表すストリームとして提供されてもよい。このデータは、占有グリッドの形で、プロセッサ212aなどの1つまたは複数のプロセッサに提供され得る。特に、環境100内のロボットまたは物体(例えば、障害物106、目標物108)のいずれかを表す場合、それらの表面をボクセル(3Dピクセル)または多角形のメッシュ(しばしば三角形)のいずれかとして表すことができる。空間の各離散化された領域は、「ボクセル」と呼ばれ、3D(ボリュメトリック/体積的/volumetric)ピクセルと等価である。場合によっては、代わりに物体をボックス(直角プリズム)として表すことが有利である。物体がランダムに成形されていないという事実のために、ボクセルがどのように編成されるかにはかなりの量の構造が存在し、物体内の多くのボクセルは3D空間内で互いにすぐ隣り合っていることがある。したがって、オブジェクトをボックスとして表すことは、はるかに少ないビットを必要とすることがある(すなわち、ボックスの2つの対向するコーナーについてx、y、zデカルト座標だけを必要とすることがある)。また、ボックスに対して交差テスト(intersection test)を行うことは、ボクセルに対して行うことに匹敵する複雑さである。
【0062】
少なくともいくつかの実装形態は複数のセンサの出力を組み合わせることができ、センサは、非常に細かい粒度のボクセル化を提供することができる。しかしながら、ロボット102が動作計画を効率的に実行するために、ロボット102のプロセッサ212aは様々なポーズまたは状態の間の遷移を行うときに、環境およびロボット102によって掃引される3D空間内の体積を表すために、より粗いボクセル(すなわち、「プロセッサボクセル」)を使用することができる。したがって、システム200は、それに応じてセンサ282の出力を変換することができる。例えば、センサ282のアウトプットは各軸上で10ビットの精度を使用することができ、したがって、センサ282から直接的に生じる各ボクセル(すなわち、「センサボクセル」)は30ビットのIDを有し、230のセンサボクセルがある。システム200は18ビットのプロセッサボクセルIDに対して、それぞれの軸上で6ビットの精度を(構成時および実行時に)使用することができ、218プロセッサボクセルが存在することになる。したがって、例えば、プロセッサボクセルごとに212のセンサボクセルを有することができる。実行時に、システム200が、プロセッサボクセル内のセンサボクセルのいずれかが占有されていると判定した場合、システム200はプロセッサボクセルが占有されていると見なし、それに応じて占有グリッドを生成する。
【0063】
一実施形態では、衝突評価が動作プレイシステム(motion playing system)138による関数呼び出しまたは同様のプロセスに応答して実行され、そこにブール値を返す。衝突検出システムは有利には1つまたは複数のフィールド・プログラマブル・ゲート・アレイ(FPGA)および/または1つまたは複数の特定用途向け集積回路(ASIC)を介して実装されて、低レイテンシ(又は、低遅延)、比較的低電力消費、低コスト(例えば、ダイナミック・ランダム・アクセス・メモリ(DRAM)の使用と比較して)、および処理可能な情報量の増加を達成しながら、衝突検出を実行することができる。
【0064】
様々な実施形態では、そのような動作が完全にハードウェア回路で、またはシステムメモリ214などのメモリストレージに格納されたソフトウェアとして実行され、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、グラフィックス処理ユニット(GPU)プロセッサ、プログラムドロジックコントローラ(PLC)、電気的プログラマブルリードオンリメモリ(EEPROM)などの1つまたは複数のハードウェアプロセッサ212aによって、またはメモリストレージに格納されたハードウェア回路およびソフトウェアの組合せとして実行され得る。
【0065】
また、知覚、計画グラフ構築、衝突検出、および経路探索の様々な態様の実施は2017年6月9日に出願された国際特許出願第PCT/US2017/036880号、発明の名称「自動車および再構成可能な移動処理装置のための移動計画」、2016年1月5日に出願された国際特許出願第WO 2016/122840号、発明の名称「特定のロボット移動ハードウェアおよびその製造方法および使用方法」、ならびに米国特許出願第平成30年1月12日に出願された「動的オブジェクトを有する環境における自動車の移動を容易にするための装置、方法及び物品」という名称の/616,783は図示された実施形態、並びに他の実施形態がロボット、ハンドヘルドデバイス、マイクロプロセッサベース又はプログラマブル家庭用電化製品、パーソナルコンピュータ(「PC」)、ネットワーク化されたPC、ミニコンピュータ、メインフレームコンピュータを含む、他のシステム構造及び構成及び/又は他のコンピューティングシステム構成及び構成で実施され得ることを理解されたい。等。(例えば、構成時および実行時に)実装または実施形態またはその一部は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクまたはモジュールが実行される分散コンピューティング環境で実施することができる。分散コンピューティング環境では、プログラムモジュールがローカルおよびリモートメモリ記憶装置またはメディアの両方に配置されてもよい。しかしながら、動作計画を改善するのを助けるためには、ある種の情報がどこにどのように記憶されるかが重要である。
【0066】
例えば、様々な動作計画の解決策はロードマップ(すなわち、計画グラフ)をプロセッサに「ベークイン(又は、焼き付け)」し、ロードマップ内の各エッジはプロセッサの再構成不可能なブール回路に対応し、計画グラフがプロセッサに「ベークイン」される設計は複数のまたは大きな計画グラフを格納するためのプロセッサ回路が限定されているという問題を提起し、一般に、異なるロボットで使用するために再構成可能ではない。
【0067】
1つの解決策は、計画グラフ情報をメモリ記憶装置に配置する再構成可能設計を提供する。このアプローチは回路にベーク(又は、焼き付け)される代わりに、メモリに情報を記憶する。別のアプローチはメモリの代わりに、テンプレートされた再構成可能な回路を使用した。
【0068】
上述したように、情報のいくつかは、構成時間中、すなわち実行時間の前に、取り込まれ、受信され、入力され、または提供されてもよい。実行時間中、センサ282は、知覚データをプロセッサ212aに送る。知覚データは現在の環境に存在し、オンチップ環境メモリ294に格納されているボクセルまたはボックスのストリームであってもよい。次いで、ロボットの任意の部分がロボットの別の部分と衝突するか、またはロボットの別の部分と衝突することが予測されるかどうか、環境内の持続的障害物と衝突するか、または環境内の過渡的障害物と衝突するかどうかをポーズ間の任意のポーズまたは移動について判定することを含む、環境全体について衝突検出を実行することができる。衝突検出は有利には衝突検出分析を実行するためにデータ構造表現を使用し、典型的には、単純なブール値を出力として返す。
【0069】
図2は、プロセッサ212aによって表される1つまたは複数のプロセッサと、システムメモリ214、衝突検出システム284、およびディスクドライブ224に関連するコンピュータ可読媒体226などの1つまたは複数の関連する非一時的機械可読記憶媒体とを備える、ロボット102用のものなどのロボット制御システム200を示す。システムメモリ214、衝突検出システム284のメモリまたはレジスタ、およびディスクドライブ224に関連するコンピュータ可読媒体226を含む、関連する一時的でないコンピュータまたはプロセッサ可読記憶媒体は、システムバス216などの1つ以上の通信チャネルを介してプロセッサ212aに通信可能に結合される。システムバス216は、メモリ・コントローラを備えたメモリ・バス、周辺バス、および/またはローカルバスを含む、任意の既知のバス構造またはアーキテクチャを採用することができる。1つまたは複数のセンサ282およびアクチュエータシステム266も、システムバス216を介してプロセッサ212aに通信可能に結合される。このような構成要素の一つ以上は例えば、1つ以上のパラレルケーブル、シリアルケーブル、または高速通信が可能なワイヤレスネットワークチャネル、例えば、ユニバーサルシリアルバス3.0、PCIe(Peripheral Component Interconnect Express)またはThunderbolt(登録商標)を介して、1つ以上の他の通信チャネルを介して互いに通信することも可能である。
【0070】
ロボット制御システム200はまた、ネットワークインターフェース260を介してロボット制御システム200の様々な構成要素に直接通信可能に結合または間接通信可能に結合される、例えば、デスクトップコンピュータ、ラップトップコンピュータ、ウルトラポータブルコンピュータ、タブレットコンピュータ、スマートフォン、ウェアラブルコンピュータ(集合的に134(
図1))などの遠隔システムに通信可能に結合されてもよい。そのような遠隔システムはロボット制御システム200およびロボット制御システム200内の様々な構成要素とプログラムし、構成し、制御し、またはさもなければインターフェースし、またはそれらにデータを入力するために使用されてもよい。このような接続はインターネットプロトコルを使用する1つ以上の通信チャネル、例えば、インターネットを介して、1つ以上のワイドエリアネットワーク(WAN)を介してもよい。上述のように、実行時前計算(例えば、計画グラフのファミリの生成)はロボット102または他のロボットとは別個のシステムによって実行されてもよく、一方、実行時計算はロボット102上にあるプロセッサ212上で実行されてもよい。
【0071】
図2に示される様々なブロックの構成および動作は2017年6月9日に出願された国際特許出願第PCT/US2017/036880号、名称「自動車および再構成可能な移動プランニングプロセッサのための移動プランニング」、2016年1月5日に出願された国際特許出願第WO2016/122840号、名称「製造および使用の方法の特殊化されたロボット移動プランニング」、および/または2018年1月12日に出願された米国特許出願第62/616,783号、名称「動的物体を有する環境における自動車の移動プランニングを容易にするための装置、方法および物品」に記載されている。その結果、そのようなブロックは参照により本明細書に組み込まれる参考文献を考慮して、関連技術の当業者によって理解されるように、さらに詳細に説明される必要はない。
【0072】
ロボット制御システム200は、1つまたは複数の処理ユニット212、システムメモリ214、衝突検出システム284、および種々のシステム構成要素を結合するシステムバス216を含んでもよい。いくつかの実装形態では、衝突検出システム284が1つまたは複数の別個のプロセッサ、例えば、1つまたは複数のFPGAまたはASICの形態をとることができる。プロセッサ212aは、1つまたは複数の中央処理装置(CPU)212a、デジタル信号プロセッサ(DSP)212b、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)などの任意の論理処理ユニットとすることができる。システムメモリ214は読み出し専用メモリ218およびランダムアクセスメモリ220を含むことができ、ROM218の一部を形成することができる基本入出力システム222は、起動中など、ロボット制御システム200内の要素間で情報を転送するのを助ける基本ルーチンを含む。
【0073】
ロボット制御システム200は例えば、ハードディスクから読み書きするためのハードディスクドライブ、リムーバブルフラッシュメモリデバイスから読み書きするためのフラッシュメモリドライブ、リムーバブル光ディスクから読み書きするための光ディスクドライブ、または磁気ディスクから読み書きするための磁気ディスクドライブとすることができるディスクドライブ224を含むことができる。ロボット制御システム200はまた、様々な異なる実施形態において、そのようなディスクドライブの任意の組み合わせを含んでもよい。ディスクドライブ224は、システムバス216を介して処理ユニット212と通信することができる。ディスクドライブ224は当業者に知られているように、そのようなドライブとシステムバス216との間に結合されたインターフェースまたはコントローラ(図示せず)を含むことができる。ディスクドライブ224およびその関連するコンピュータ可読媒体226は、コンピュータ可読命令、データ構造、プログラムモジュール、およびロボット制御システム200のための他のデータの不揮発性記憶装置を提供する。当業者は、WORMドライブ、RAIDドライブ、磁気カセット、デジタルビデオディスク(「DVD」)、ベルヌーイカートリッジ、RAM、ROM、スマートカードなど、コンピュータによってアクセス可能なデータを記憶することができる他のタイプのコンピュータ可読媒体を使用することができることを理解するであろう。
【0074】
プログラムモジュールは、オペレーティングシステム236、1つ以上のアプリケーションプログラム238、他のプログラムまたはモジュール240、プログラムデータ242などのシステムメモリ214に記憶することができる。アプリケーションプログラム238は(1つまたは複数の)プロセッサ212に、環境100内の障害物106および/または目標物108を含む、ロボットが動作する環境100の離散化された表現を生成すること、衝突評価の呼び出しまたは他の方法でその結果を取得することを含む、計画グラフ、動作計画、またはロードマップを生成すること、および/または決定された複数の計画グラフ、動作計画、またはロードマップを記憶することのうちの1つまたは複数を実行させる命令を含むことができる。アプリケーションプログラム238は本明細書および参照により本明細書に組み込まれる参考文献に記載されるように、プロセッサ212に(センサ282を介して)知覚、計画グラフ構築、衝突検出、および経路探索の他の動作を実行させる、1つまたは複数の機械可読命令セットをさらに含むことができる。
【0075】
「環境」という用語は本例では障害物を含むロボットの現在の作業空間を指すために使用される。用語「タスク」が本例ではロボット102がその環境内の障害物と衝突することなく、ポーズAからポーズB(たぶん、アイテムを把持し、把持解除し、落下させ、取り上げ、又は、置く)に到達しなければならないロボットタスクを指すために使用される。用語「シナリオ」は本例では環境/タスク対のクラスを指すために使用される。例えば、シナリオは「三脚テーブルを有し、所与の範囲内のサイズおよび形状を有するx障害物とy障害物との間の環境内のピック・アンド・プレースタスク」とすることができる。このような基準に適合する多くの異なるタスク/環境対が、目標の位置、障害物のサイズおよび形状に応じて存在し得る。システム200は、ネットワークインターフェース260を介して通信ネットワークを介してリンクされる1つ以上の遠隔処理装置を含んでもよい。そのような1つまたは複数のリモート処理デバイスはシステム200に、ロボット102が様々な異なるシナリオのタスクおよび環境の対に対して動作する環境100の表現のそれぞれの離散化を生成させる、1つまたは複数の機械可読命令セットを実行することができる。例示的な実施形態では、それぞれの離散化のうちの少なくとも2つはボクセルのそれぞれのセットを含む。それぞれの離散化のボクセルは、それぞれの離散化内のサイズおよび形状のうちの少なくとも1つにおいて非均質であってもよい。また、それぞれの離散化のボクセルの不均一性のそれぞれの分布は、互いに異なっていてもよい。具体的には離散化がそれぞれのボクセルのセットを含むことができ、それぞれの離散化のうちの少なくとも2つのボクセルはそれぞれの離散化内のサイズおよび形状のうちの少なくとも1つにおいて不均質であり、それぞれの離散化のうちの少なくとも2つのボクセルの不均質性のそれぞれの分布は互いに異なる。アプリケーションプログラム238はプロセッサ212に、ロボットが動作する環境100の表現の生成されたそれぞれの離散化の有効性を評価させ、特定のシナリオに対して最も有効であると評価される生成されたそれぞれの離散化を記憶させる、1つまたは複数の機械可読命令セットを含むことができる。
【0076】
アプリケーションプログラム238は衝突検出システム284に、ロボットが動作する環境内の任意の障害物の衝突検査を実行させる1つまたは複数の機械可読命令セットをさらに含むことができる。衝突検出システム284は、本明細書の他の場所に記載される種々の構造および技術を使用して、そのような衝突検出を実行してもよい。
【0077】
アプリケーションプログラム238はプロセッサ212に、
図5~
図13に示す方法を含むがこれに限定されない、本明細書で説明する様々な他の方法を実行させる、1つまたは複数の機械可読命令セットをさらに含むことができる。
【0078】
様々な実施形態では上述の動作のうちの1つまたは複数がシステム200の1つまたは複数のリモート処理デバイスによって実行することができ、これらのデバイスはネットワークインターフェース260を介して通信ネットワークを介して、または1つまたは複数のプロセッサ212または衝突検出システム284によってリンクされる。
【0079】
図2にはシステムメモリ214に記憶されるように示されているが、オペレーティングシステム236、アプリケーションプログラム238、他のプログラムモジュール240、およびプログラムデータ242はディスクドライブ224の関連するコンピュータ読み取り可能媒体226上に記憶することができる。
【0080】
プロセッサ212および衝突検出システム284は、1つまたは複数の中央処理装置(CPU)、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)などの任意の論理処理ユニットとすることができる。市販のコンピュータシステムの非限定的な例としては米国Intel(登録商標)社が提供するマイクロプロセッサのCeleron、Core 2、Itanium、Xeonファミリー、米国Advanced Micro Devices、A.が提供するK8、K10、Bulldozer、およびBobcatシリーズマイクロプロセッサ、米国アップルコンピュータが提供するA5、A6、およびA7シリーズマイクロプロセッサ、米国Qualcomm、Incが提供するSnapdragonシリーズマイクロプロセッサ、米国Oracle Corpが提供するSPARCシリーズマイクロプロセッサが挙げられるが、これらに限定されない。
【0081】
図3は、本明細書で説明する様々な方法またはプロセスに従って衝突検出を実行する際に使用することができる、衝突検出システム300の様々なハードウェアモジュールまたはユニットの論理表現を示す。
【0082】
順方向動力学モジュール(又は、前方動力学モジュール/forward kinematics module)またはハードウェアユニット302はポーズ(構成空間またはC空間におけるDタプル)を入力として取り、自由空間におけるロボットの各リンクの対応する並進および回転を出力として提供する。
【0083】
イプシロンエッジ(epsilon edge)モジュールまたはハードウェアユニット304は入力として2つのポーズを受け取り、これら2つのポーズの間で再帰的細分割を実行して、以前のポーズ対の間のいくつかの(例えば、複数の)中間ポーズを見つけるか、または計算する。中間ポーズの再分割(又は、細分割)および生成は、隣接するポーズ間の距離が定義されたイプシロン許容値未満になるまで継続する。イプシロンエッジモジュールまたはユニットの使用は例えば、2つのポーズ間の動きが評価されない場合、任意であってもよい。
【0084】
補間モジュールまたはハードウェアユニット306は入力として2つのポーズを受け取り、2つのポーズの間の新しいポーズを計算する。補間モジュールまたはユニット306は、イプシロンエッジモジュールまたはハードウェアユニット304の一部であってもよい。
【0085】
ロボット自己衝突検出モジュールまたはハードウェアユニット308はロボット内の異なるリンク間の衝突を検出する(隣接するリンク間の衝突が可能でないことに留意されたい)。このハードウェアは、ロボットの2つのリンクのそれぞれを表す2つの球ツリーがオーバーラップするかどうかを判定するために最適化されることが有利である。
【0086】
持続的環境衝突検出モジュールまたはハードウェアユニット310は、ロボットの任意の部分と、ロボットが動作する環境内の持続的物体または障害物との間の衝突を検出する。このハードウェアは、ロボットのリンクを表す球ツリーが環境内の持続性オブジェクトを表すユークリッド距離フィールドと衝突するかどうかを判定するために有利に最適化することができる。
【0087】
過渡的環境衝突検出モジュールまたはハードウェアユニット312は、ロボットの任意の部分と、ロボットが動作する環境内の過渡的物体または障害物との間の衝突を検出する。このハードウェアは、有利にはロボットのリンクを表す球ツリーが環境内の持続性オブジェクトを表す軸整列境界ボックスのセットとオーバーラップするかどうかを決定するために最適化され得る。
【0088】
衝突検出モジュールまたはハードウェアユニット308、310、312のいずれか1つ、または好ましくはすべては、計算効率および電力効率を高めることができる固定小数点ハードウェア(すなわち、回路)を使用することができる。モジュールまたはユニットの1つのセットとして示されているが、動作システムは有利には並列に動作することができる前述のモジュールまたはハードウェアユニットのそれぞれの複数のコピーまたはインスタンスを備えることができる。たとえば、補間ユニットが新しいポーズを生成するとすぐに、そのポーズは、パーシスタントオブジェクトとトランジェントオブジェクトの両方との自己衝突や衝突がないかどうかを、並行してチェックできる。さらに、衝突チェックは、多くの衝突検出ユニットにわたって有利に並列化することができる。
【0089】
図4は、ロボットの「構成空間」または「C空間」400と、ロボットの動作計画グラフまたはロードマップ402とを示す。構成空間400は典型的には多次元(すなわち、3次元より大きい)である。種々の障害物404a、404b、404c(4つが示されており、3つだけが集合的に404と呼ばれている)が示されている。
【0090】
計画グラフまたはロードマップ402はロボットのそれぞれの状態、ロボットの特定の構成(ロボットの関節位置の特定のセットの完全な仕様である)、ロボットのポーズ、速度、および方位を含むことができるが、これらに限定されない状態を表す、いくつかのノード406a、406b、406c、406d、...、406n(11個が示され、5個に符号が付されている/まとめて406)を含む。状態の1つは、例えば、開始状態406aであるかもしれないし、開始状態406aを表すかもしれない。状態のうちの1つは、例えば、終了または目標状態(又は、ゴール状態)406nであり得るか、またはそれを表し得る。計画グラフまたはロードマップ402は、いくつかのエッジ408a、408b、408c、408d、...、408nを含む(11個が示され、5個のみに符号が付されている。集合的に408)。計画グラフまたはロードマップ402の各エッジ408は、ロボットの1つの状態から別の状態への遷移を表す。動作計画およびロードマップ402の生成に適したいくつかの構造および方法は、2017年6月9日に出願された「自動車車両および再構成可能な移動計画処理装置のための動作計画」と題する共通譲渡された国際特許出願第PCT/US2017/036880号、および2016年1月5日に出願された「SPECIALIZED ROBOT motion planning HARDWARE and methods OF MAKING and USING methods」と題する共通譲渡された国際特許出願公開第WO 2016/122840号に記載されている。
【0091】
動作計画問題を解くために、多種多様なアルゴリズムが使用される。これらのアルゴリズムの各々は、所与のポーズまたは1つのポーズから別のポーズへの動きが衝突をもたらすかどうかを決定することができる必要がある。
【0092】
本明細書で説明される衝突検出ハードウェア、ソフトウェア、および/またはファームウェアは単一のロボットのポーズ、または1つのポーズ(例えば、開始ポーズ)から別のポーズ(例えば、終了ポーズ)へのロボットの動きによって、ロボットの一部が、ロボットの別の部分、またはロボットが動作する現在の環境内の任意の物体と衝突するかどうかを判定または計算することができる。環境は通常、障害物を含み、ロボットが意図的にタスク(例えば、目標物を把持し、移動させる)を実行するに際して関与(又は、係合)する1つまたは複数の目標物を含んでも含まなくてもよい。前述したように、障害物のいくつかについては、障害物によって占められるそれぞれの体積がモデルまたは計算回路が構成される時間(構成時間として示される時間)において既知であり、ロボット動作全体(実行時間として示される時間)を通して変化せず、とどまることが期待される。これらの障害物はオブジェクトが占める体積が構成時間中に既知であり、実行時間を通して不変のままであることが予想されるので、持続的障害物と呼ばれる。他の障害物については、障害物が占めるそれぞれの体積が構成時には知られておらず、実行時にのみ決定される。これらの障害物は、構成時間中に障害物が占める体積が分からないため、過渡的障害物と呼ばれる。これらの過渡的障害物のうちの1つまたは複数によって占有されるそれぞれの容積は、時間の経過に伴って固定されているか、移動していないか、または変化しておらず、静的障害物と呼ばれることがある。これらの一時的オブジェクトのうちの1つまたは複数によって占有されるそれぞれの体積は時間の経過とともに移動または変化し、動的障害物と呼ばれることがある。
【0093】
本明細書で説明される衝突検出ハードウェア、ソフトウェア、および/またはファームウェアは例えば、確率的ロードマップ(PRM)、高速探索ランダムツリー(RRT)、RRT*、双方向RRTなどのアルゴリズムなどの様々な動作計画アルゴリズムによって示すか、または示すサブルーチンまたは関数として実装され得る。本明細書で説明する衝突検出ハードウェア、ソフトウェア、および/またはファームウェアは、多くの候補把持ポーズを迅速に評価することによって把持計画を加速するために使用することもできる。
【0094】
本明細書で説明される様々な実装形態は典型的には2つまたは3つの構成時間入力、すなわち、i)ロボットの動力学モデル、ii)環境内の持続的な障害物または物体の表現、および任意選択的に、動作細分粒度値または仕様を使用する。ロボットの動力学モデルはロボットの多数の関節のいずれかに関する拘束(例えば、エルボー関節の最小および最大角度)、ロボットの各リンクからロボットのそれぞれの親リンクへの変換、ロボットの各関節の軸、およびロボットの各リンクの幾何学の仕様を含む。
【0095】
本明細書で説明される様々な実装形態は典型的には2つまたは3つの実行時入力、すなわち、a)開始ポーズ、b)動作が評価されている場合の任意選択的な終了ポーズ、およびc)実行時に知られているが構成時に不知である、環境内の過渡的な障害物またはオブジェクトの表現を使用する。過渡的な障害物または物体は静的(すなわち、関連または実行期間中に固定されているか、移動していないか、または、形状を変化させない)または動的(すなわち、関連または実行期間の少なくとも一部の間に移動または形状を変化させる)であってもよい。数Dの自由度を有するロボットの場合、ポーズはDタプル(又は、D-tuple)として指定されてもよく、タプル(tuple)の各要素は、その自由度(ジョイント)の位置または回転を指定する。
【0096】
前述のように、衝突検出のための効率的なハードウェアの実装は、オブジェクト、ポーズ、および/または動きを表すためのデータ構造の選択に注意深く注意を払うことによって実現することができる。適切に選択されたデータ構造は、記憶に必要なメモリの量、衝突検出に必要なハードウェアの量、衝突検出を実行するための待ち時間、および電力消費を有利に低減することができる。本明細書で提供される説明は適切であり得るいくつかの例示的なデータ構造を提供するが、当業者は本明細書の教示に基づいて他の構造が使用され得ることを認識するであろう。様々なオプションがあり、各オプションは、待ち時間と精度との間のそれぞれのトレードオフに関連する。
【0097】
衝突検出システムの多数のプロセスまたは動作方法が、
図5~
図13に示され、後述される。
【0098】
図5は1つの例示としての実施形態に従った、動作計画および動作計画の作成において有用な衝突検出または評価または予測を実行するための、プロセッサベースのシステム(例えば、ロボット制御システム126、衝突検出システム140、200)における動作の高レベル方法500を示すフロー図である。動作計画はロボット、例えば、各々が1つ以上のリンク、一対のリンク間の関節、および1つ以上のアクチュエータを備える1つ以上のロボット付属物を有するロボットによって実行可能であってもよい。方法500は有利なことに、環境において発生する変化(例えば、障害物の導入、障害物の除去、障害物の位置、向き、または形状の変化)が、実行時間中に考慮されることを可能にする。
【0099】
方法500は例えば、呼び出しルーチンまたはモジュールを介した呼び出しに応答して、または信号の受信または衝突検出システム200への電力の印加の検出に応答して、502で開始する。
【0100】
504において、プロセッサベースのシステムの少なくとも1つのコンポーネント(例えば、衝突検出システム140、200)はロボットを表す動力学モデル、例えば、複数のリンクおよび複数の関節(リンクのそれぞれの対の間の関節)を有するロボット付属物(又は、付属肢/appendage)を表す動力学モデルを受信する。動力学モデルは、任意の公知のまたは開発されるフォーマットであり得る。
【0101】
506において、プロセッサベースのシステムの少なくとも1つのコンポーネント(例えば、衝突検出システム140、200)は、環境内の持続的障害物のセットを表す占有情報を受信する。占有情報は例えば、環境内の持続的障害物のセットの各持続的障害物によって占有されるそれぞれの体積を表すことができる。占有情報は、任意の既知のフォーマットであってもよく、または開発されるフォーマットであってもよい。占有情報は、1つまたは複数のセンサによって生成されてもよく、またはコンピュータを介して、または人間によっても定義または指定されてもよい。占有情報は、通常、コンフィギュレーション時間の前または間に受信される。
【0102】
任意選択的に、508において、プロセッサベースのシステムの少なくとも1つのコンポーネント(例えば、衝突検出システム140、200)は、動作計画に使用される動作細分化粒度を表す少なくとも1つの値または仕様を受信する。動作細分割粒度は、特定の問題に対して許容可能な最大間隔を定義する。動作細分割粒度は例えば、問題のタイプ、シナリオのタイプ、ロボットのタイプ、および/または特定のロボットに基づいて、事前に定義または指定することができる。代替的に、動作細分割粒度は任意の共通の入力デバイス(例えば、キーボード、キーパッド、コンピュータマウス、タッチスクリーンディスプレイ、マイクロフォン)を介してユーザによって提供または指定されてもよい。
【0103】
少なくとも510において、プロセッサベースのシステムの少なくとも1つのコンポーネント(例えば、衝突検出システム140、200)は少なくとも部分的に、ロボットの動力学モデルに基づいて、ロボットのデータ構造表現を生成する。データ構造表現は、いくつかのリンクおよびジョイントの表現を含む。様々な適切なデータ構造および技術、例えば、様々な階層データ構造(例えば、ツリーデータ構造)または非階層データ構造(例えば、EDFデータ構造)については、本明細書の他の箇所で説明する。
【0104】
512において、プロセッサベースのシステムの少なくとも1つのコンポーネント(例えば、衝突検出システム200)は、ロボットが動作する環境内の持続性オブジェクトのセットのデータ構造表現を生成する。データ構造表現は構成時に、環境内で既知の固定位置および向きを有し、したがって、これらのオブジェクトが構成時から実行時まで既知の位置および向きで環境内に存続すると仮定されるという点で持続的と呼ばれる、いくつかの障害物の表現を含む。様々な適切なデータ構造、例えば、様々な階層データ構造(例えば、ツリーデータ構造)または非階層データ構造(例えば、EDFデータ構造)および技法について、本明細書の他の箇所で説明する。
【0105】
514において、プロセッサベースのシステムの少なくとも1つのコンポーネント(例えば、衝突検出システム200)は、環境内の過渡的障害物のセットのそれぞれの位置を表す占有情報を受信する。占有情報は、典型的にはロボットが動作または動作する環境を感知するように配置および配向された1つまたは複数のセンサによって生成される。占有情報は、任意の既知のフォーマットであってもよく、または開発されるフォーマットであってもよい。占有情報は、典型的には構成時間に続いて、実行時に受信される。
【0106】
516において、プロセッサベースのシステムの少なくとも1つのコンポーネント(例えば、衝突検出システム140、200)は、ロボットが動作する環境内の過渡的物体(又は、過渡的障害物)のセットのデータ構造表現を生成する。データ構造表現は実行時間の少なくとも一部の間に環境内で既知の位置および向きを有し、構成時に環境内で既知の固定位置または向きを有さなかった、いくつかの過渡的障害物(存在する場合)の表現を含む。以下に記載されるように、環境内の過渡的物体のセットのデータ構造表現は、実行時または実行中に環境の物理的特性を感知するように配置および向きを定められた1つ以上のセンサによって生成されたセンサデータに基づいて生成されてもよい。様々な適切なデータ構造、例えば、様々な階層データ構造(例えば、ツリーデータ構造)または非階層データ構造(例えば、EDFデータ構造)および技法について、本明細書の他の箇所で説明する。
【0107】
518において、ロボットの少なくとも第1の数のポーズの各々について、プロセッサベースのシステムの少なくとも1つのコンポーネント(例えば、衝突検出システム140、200)は、ロボットのデータ構造表現に少なくとも部分的に基づいて、ロボットの任意の部分がロボットの別の部分と衝突するかどうかを決定または評価または予測する。衝突が結果として生じるかどうかを判定するための特定の技法は使用されるデータ構造のタイプに少なくとも部分的に依存し、かつ/またはロボットを表すために使用される特定のタイプの形状または形状に部分的に基づいてもよい。衝突が結果として生じるかどうかを決定するための様々な技法は本明細書の他の場所、例えば、様々な他の方法および以下に記載される例の議論において説明される。
【0108】
少なくとも520はロボットの少なくとも第2の数のポーズのそれぞれについて、プロセッサベースのシステムの少なくとも1つのコンポーネント(例えば、衝突検出システム140、200)は、ロボットの任意の部分が環境内の持続的障害物のセットのデータ構造表現に少なくとも一部は基づいて、ロボットが動作する環境内の任意の持続的障害物と衝突するか否かを判断または予測する。上述したように、持続的障害物のデータ構造表現は構成時に、タスク(例えば、実行時)を実行する際のロボットの動作中に後続の期間を通して移動または変化することが予想されないそれぞれの体積を占有することが知られている、いくつかの障害物の表現を含む。衝突が生じるかどうかを判定するための特定の技法は使用されるデータ構造のタイプに少なくとも部分的に依存し、かつ/または持続的障害物およびロボットを表すために使用される特定のタイプの幾何学的形状または幾何学的形状に部分的に基づいてもよい。衝突が結果として生じるかどうかを決定するための様々な技法は本明細書の他の場所、例えば、様々な他の方法および以下に記載される例の議論において説明される。
【0109】
522において、ロボットの少なくとも第3の数のポーズの各々について、プロセッサベースのシステムの少なくとも1つのコンポーネント(例えば、衝突検出システム140、200)は、環境内の過渡的物体のセットのデータ構造表現に少なくとも部分的に基づいて、ロボットの任意の部分が環境内の任意の過渡的障害物と衝突するかどうかを決定または評価または予測する。上述のように、過渡的障害物のデータ構造表現は実行時間の少なくとも一部の間に環境内の既知の体積(例えば、位置、向き、形状、およびサイズ)を占有し、構成時に過渡的障害物が環境内で占有する既知の体積を有さなかった、環境内のいくつかの障害物(存在する場合)の表現を含む。衝突が生じるかどうかを判定するための特定の技法は使用されるデータ構造のタイプに少なくとも部分的に依存し、かつ/または過渡的障害物およびロボットを表すために使用される特定のタイプの幾何学的形状または幾何学的形状に部分的に基づいてもよい。衝突が結果として生じるかどうかを決定するための様々な技法は本明細書の他の場所、例えば、様々な他の方法および以下に記載される例の議論において説明される。
【0110】
524において、プロセッサベースのシステムの少なくとも1つのコンポーネント(例えば、衝突検出システム140、200)は、ポーズのうちの少なくとも1つについて衝突が検出されたかどうかを表す信号を提供する。信号はブール値(例えば、0、1;True、False;Yes、No)を表すことが好ましい。したがって、方法500は、例えば定義されたアプリケーション・プログラミング・インタフェース(API)に従った呼び出しを介して、別のルーチンまたは呼び出し元関数によって示すサブルーチンまたは関数として機能することができる。
【0111】
方法500は例えば、再度呼び出されるか、または引用されるまで、526で終了してもよい。あるいは方法500が連続的に、または例えば、マルチスレッドプロセッサ上の複数のスレッドとして実行されてもよい。
【0112】
図6は1つの例示としての実施形態に従った、動作計画および動作計画の作成において有用な衝突検出または評価または予測を実行するための、プロセッサベースのシステム(例えば、ロボット制御システム126、衝突検出システム140、200)における動作の低レベル方法600を示すフロー図である。方法600は方法500(
図5)を実行する際に実行されてもよく、例えば、ロボット510を表す動力学モデル(
図5)に少なくとも部分的に基づいて、ロボットの表現を生成する際に実行されてもよい。
【0113】
602において、プロセッサベースのシステムの少なくとも1つのコンポーネント(例えば、衝突検出システム140、200)は、動力学モデルによって表されるロボットのデータ構造表現を生成する。例えば、ロボットの各リンクについて、衝突検出システム200はロボットの階層表現として、例えば、4以上のツリー深さ(例えば、8-aryツリー)を有するそれぞれのツリーを生成する。また、例えば、ロボットの各リンクについて、衝突検出システム200はそれぞれのk-aryツリーを生成することができ、k-aryツリーの各ノードは球であり、それぞれの球の任意の部分が占有されている場合、各ノードは占有されていると識別される。
【0114】
図7Aは1つの例示としての実施形態に従った、動作計画および動作計画の作成において有用な衝突検出または評価または予測を実行するための、プロセッサベースのシステム(例えば、ロボット制御システム126、衝突検出システム140、200)における動作の低レベル方法700aを示すフロー図である。方法700aは方法500(
図5)を実行する際に実行されてもよく、例えば、ロボットが動作する環境512(
図5)内の持続的障害物のセットのデータ構造表現を生成する際に実行されてもよい。
【0115】
702において、プロセッサベースのシステムの少なくとも1つのコンポーネント(例えば、衝突検出システム140、200)は、環境内の持続的障害物を表すために境界体積の階層を生成する。例えば、衝突検出システム200は、軸整列境界ボックス(AABB)のツリー、方向付けられた(軸整列されていない)境界ボックスのツリー、または球体のツリーを生成する。特に、これらのツリー型データ構造のいずれかのリーフはデータ構造の他のノードとは異なる形状とすることができ、例えば、全てのノードは、三角形メッシュの形態をとることができるルートノードを除いてAABBである。
【0116】
図7Bは1つの例示としての実施形態に従った、動作計画および動作計画の作成において有用な衝突検出または評価または予測を実行するための、プロセッサベースのシステム(例えば、ロボット制御システム126、衝突検出システム140、200)における動作の低レベル方法700bを示すフロー図である。方法700bは方法700a(
図7)を実行する際に、例えば、ロボットが動作する環境702(
図7)内の持続的障害物を表す境界体積の階層を生成する際に実行することができる。
【0117】
704において、プロセッサベースのシステムの少なくとも1つのコンポーネント(例えば、衝突検出システム140、200)は、環境内の持続的障害物を表すリーフノードとして三角形メッシュを有する境界ボックスの階層を生成する。上述したように、ツリー型データ構造のリーフはデータ構造の他のノードとは異なる形状とすることができ、例えば、全てのノードは、三角メッシュの形態をとることができるルートノードを除いてAABBである。
【0118】
図7Cは1つの例示としての実施形態に従った、動作計画および動作計画の作成において有用な衝突検出または評価または予測を実行するための、プロセッサベースのシステム(例えば、ロボット制御システム126、衝突検出システム140、200)における動作の低レベル方法700cを示すフロー図である。方法700cは方法700a(
図7)を実行する際に、例えば、ロボットが動作する環境702(
図7)内の持続的障害物を表す境界体積の階層を生成する際に実行することができる。
【0119】
706において、プロセッサベースのシステムの少なくとも1つのコンポーネント(例えば、衝突検出システム140、200)は、環境内の持続的障害物を表す球体の階層を生成する。境界体積として球を使用することは、迅速な比較を容易にする(すなわち、球が互いに重なり合うかどうかを決定することは計算的に容易である)。
【0120】
図7Dは1つの例示としての実施形態に従った、動作計画および動作計画の作成において有用な衝突検出または評価または予測を実行するための、プロセッサベースのシステム(例えば、ロボット制御システム126、衝突検出システム140、200)における動作の低レベル方法700dを示すフロー図である。方法700dは方法700a(
図7)を実行する際に、例えば、ロボットが動作する環境702(
図7)内の持続的障害物を表す境界体積の階層を生成する際に実行することができる。
【0121】
708において、プロセッサベースのシステムの少なくとも1つのコンポーネント(例えば、衝突検出システム140、200)は、環境内の持続的障害物を表すk-ary球ツリーを生成する。上述のように、境界体積として球体を使用することは、高速比較を容易にする(すなわち、球体が互いに重なり合うかどうかを決定することは計算上容易である)。
【0122】
図7Eは1つの例示としての実施形態に従った、動作計画および動作計画の作成において有用な衝突検出または評価または予測を実行するための、プロセッサベースのシステム(例えば、ロボット制御システム126、衝突検出システム140、200)における動作の低レベル方法700eを示すフロー図である。方法700eは方法700a(
図7)を実行する際に、例えば、ロボットが動作する環境702(
図7)内の持続的障害物のセットを表す境界体積の階層を生成する際に実行することができる。
【0123】
710において、プロセッサベースのシステムの少なくとも1つのコンポーネント(例えば、衝突検出システム140、200)は、環境内の持続的障害物を表す軸整列境界ボックス(AABB)の階層を生成する。
【0124】
図7Fは1つの例示としての実施形態に従った、動作計画および動作計画の作成において有用な衝突検出または評価または予測を実行するための、プロセッサベースのシステム(例えば、ロボット制御システム126、衝突検出システム140、200)における動作の低レベル方法700fを示すフロー図である。方法700fは方法700a(
図7)を実行する際に、例えば、ロボットが動作する環境702(
図7)内の持続的障害物を表す境界体積の階層を生成する際に実行することができる。
【0125】
712において、プロセッサベースのシステムの少なくとも1つのコンポーネント(例えば、衝突検出システム140、200)は、環境内の持続的障害物を表す指向性境界ボックスの階層を生成する。
【0126】
図7Gは1つの例示としての実施形態に従った、動作計画および動作計画の作成において有用な衝突検出または評価または予測を実行するための、プロセッサベースのシステム(例えば、ロボット制御システム126、衝突検出システム140、200)における動作の低レベル方法700gを示すフロー図である。方法700gは方法500(
図5)を実行する際に実行されてもよく、例えば、ロボットが動作する環境512(
図5)内の持続的障害物のセットのデータ構造表現を生成する際に実行されてもよい。
【0127】
714において、プロセッサベースのシステムの少なくとも1つのコンポーネント(例えば、衝突検出システム140、200)は、環境内の持続的障害物を表すボクセル占有情報を記憶するオクツリーを生成する。
【0128】
図8は1つの例示としての実施形態に従った、動作計画および動作計画の作成において有用な衝突検出または評価または予測を実行するための、プロセッサベースのシステム(例えば、ロボット制御システム126、衝突検出システム140、200)における動作の低レベル方法800を示すフロー図である。方法800は方法500(
図5)を実行する際に実行されてもよく、例えば、ロボットが動作する環境516(
図5)内の過渡的障害物のセットのデータ構造表現を生成する際に実行されてもよい。
【0129】
802において、プロセッサベースのシステムの少なくとも1つのコンポーネント(例えば、衝突検出システム140、200)またはハブまたは環境センサシステムコントローラ124(
図1)は、環境中の過渡的障害物を表すセンサ導出情報(又は、センサ由来情報)を受信する。センサデータはハブまたは環境センサシステムコントローラ124(
図1)を介して衝突検出システム200にルーティングされるが、1つまたは複数のセンサから直接受信されてもよい。センサ情報の一部または全部は生のまたは前処理されたデータの形態をとることができ、任意の既存のまたは後に作成されたフォーマットまたはスキーマにフォーマットすることができる。
【0130】
804において、プロセッサベースのシステムの少なくとも1つのコンポーネント(例えば、衝突検出システム140、200)またはハブまたは環境センサシステムコントローラ124(
図1)は、センサ情報を占有情報に変換する。占有情報は、既存または後に再作成された任意のフォーマットまたはスキーマでフォーマットすることができる。
【0131】
806において、プロセッサベースのシステムの少なくとも1つのコンポーネント(例えば、衝突検出システム140、200)は、占有情報から環境内の過渡的障害物のデータ構造表現を生成する。本明細書で論じるように、様々なツリー構造を含む、いくつかの階層表現タイプのうちの任意のものを使用することができる。あるいは、例えばユークリッド距離場(EDF)表現など、様々な非階層表現を使用することができる。持続的障害物の階層的および/または非階層的表現を生成するために使用される、
図7A~7Gを参照して説明される様々な動作ならびにそれぞれの階層的および/または非階層的表現は、過渡的障害物の階層的および/または非階層的表現を生成するために使用され得る。このことは、簡潔にするためにここでは繰り返さない。
【0132】
図9は1つの例示としての実施形態に従った、動作計画および動作計画の作成において有用な衝突検出または評価または予測を実行するための、プロセッサベースのシステム(例えば、ロボット制御システム126、衝突検出システム140、200)における動作の低レベル方法900を示すフロー図である。方法900は方法500(
図5)を実行する際に、例えば、ロボットの任意の部分がロボット518の別の部分と衝突するかどうかを判定する際に、ロボットの任意の部分が任意の持続的障害物520と衝突するかどうかを判定する際に、またはロボットの任意の部分が任意の過渡的障害物522(
図5)と衝突するかどうかを判定する際に実行され得る。
【0133】
902において、第1のポーズと第2のポーズとの間のロボット付属物の運動について、プロセッサベースのシステムの少なくとも1つのコンポーネント(例えば、衝突検出システム140、200)は、ロボット付属物のいくつかの中間ポーズを計算する。例えば、衝突検出システム200は、連続的に隣接するポーズの対の間の次元(又は、距離/寸法/dimension)が動作細分化粒度についての受信値を満足するまで、ロボットのC空間内のロボット付属物の第1のポーズと第2のポーズとの間の複数の中間ポーズを計算してもよい。
【0134】
図10は1つの例示としての実施形態に従った、動作計画および動作計画の作成において有用な衝突検出または評価または予測を実行するための、プロセッサベースのシステム(例えば、ロボット制御システム126、衝突検出システム140、200)における動作の低レベル方法1000を示すフロー図である。方法1000は方法500(
図5)を実行する際に、例えば、ロボット付属物のいくつかの中間ポーズを計算する際902(
図9)に実行することができる。
【0135】
方法1000は1002で、例えば、呼び出しルーチンまたはモジュールを介した呼び出しに応答して、またはプロセッサベースのシステムの少なくとも1つのコンポーネント(例えば、衝突検出システム140、200)への信号の受信または電力の印加の検出に応答して開始することができる。
【0136】
1004において、プロセッサベースのシステムの少なくとも1つのコンポーネント(例えば、衝突検出システム140、200)は、ロボット付属物の関節の各々について反復ループを実行する。
【0137】
反復ループでは、1006において、プロセッサベースのシステムの少なくとも1つのコンポーネント(例えば、衝突検出システム140、200)が第1のポーズおよび第2のポーズにおける関節のそれぞれの位置の間を補間して、n番目の中間ポーズを得る。
【0138】
1008において、プロセッサベースのシステムの少なくとも1つのコンポーネント(例えば、衝突検出システム140、200)はそれぞれの反復について、最近傍ポーズのそれぞれの対における関節のそれぞれの位置の間で(又は、関節のそれぞれの位置の間を)反復的に補間する。
【0139】
1010において、プロセッサベースのシステムの少なくとも1つのコンポーネント(例えば、衝突検出システム140、200)は、終了条件に達したかどうかを判定する。終了条件は例えば、連続的に隣接するポーズ間の距離が、指定された動作細分粒度値または指定を満たすことであってもよい。終了条件は例えば、追加的に又は代替的に、完了することができる反復の最大数を含むことができる。終了条件が満たされたという決定に応答して、制御は1012に移る。さもなければ、制御は1008に戻る。
【0140】
方法1000は例えば、再び呼び出されるが、または引用されるまで、1012で終了してもよい。あるいは方法1000が連続的に、または例えば、マルチスレッドプロセッサ上の複数のスレッドとして実行してもよい。
【0141】
言い換えれば、アルゴリズムは最初の一対のポーズ(例えば、ポーズAおよびポーズZ)から開始する。第1の中間ポーズ(例えば、ポーズM)はポーズの最初の対(例えば、ポーズAおよびポーズZ)の間で見つけられる。続いて、第2の中間ポーズ(例えば、ポーズF)が初期ポーズ対の1つのポーズ(例えば、ポーズA)と第1の中間ポーズ(例えば、ポーズM)との間で見つけられる。任意選択的に、第3の中間ポーズ(例えば、ポーズV)が初期ポーズ対の他方のポーズ(例えば、ポーズZ)と第1の中間ポーズ(例えば、ポーズM)との間で見つけられる。次いで、アルゴリズムは反復的に繰り返すことができ、連続的に見つけられたポーズに基づいて、最も近い隣接ポーズの対の間のポーズを見つけることができる。
【0142】
図11は1つの例示としての実施形態に従った、動作計画および動作計画の作成において有用な衝突検出または評価または予測を実行するための、プロセッサベースのシステム(例えば、ロボット制御システム126、衝突検出システム140、200)における動作の低レベル方法1100を示すフロー図である。方法1100は方法500(
図5)を実行する際に、例えば、ロボット付属物のいくつかの中間ポーズを計算する際902(
図9)に実行することができる。
【0143】
1102において、複数のポーズの各々について、プロセッサベースのシステムの少なくとも1つのコンポーネント(例えば、衝突検出システム140、200)は、運動ロボットモデルに対して順方向動力学を実行して、ロボット付属物の各リンクのC空間から自由空間への多数の変換(又は、変形)を計算する。
【0144】
図12は1つの例示としての実施形態に従った、動作計画および動作計画の作成において有用な衝突検出または評価または予測を実行するための、プロセッサベースのシステム(例えば、ロボット制御システム126、衝突検出システム140、200)における動作の低レベル方法1200を示すフロー図である。方法1200は方法500(
図5)を実行する際に、例えば、ロボット付属物のいくつかの中間ポーズを計算する際902(
図9)に実行することができる。
【0145】
1202において、プロセッサベースのシステムの少なくとも1つのコンポーネント(例えば、衝突検出システム140、200)は、ロボット付属物の少なくとも一部が1つのポーズでロボット付属物の別の部分と衝突するかどうかを決定する。ロボット付属物の少なくとも一部が1つのポーズでロボット付属物の別の部分と衝突するかどうかを決定するための様々な技法およびアルゴリズムを使用することができ、これには本明細書で説明するものが含まれるが、これに限定されない。
【0146】
1204において、プロセッサベースのシステムの少なくとも1つのコンポーネント(例えば、衝突検出システム140、200)は、1つのポーズでロボット付属物の少なくとも一部が環境内の任意の持続的障害物と衝突するかどうかを決定する。第1のポーズでロボット付属物の少なくとも一部が1つの環境内の任意の持続的障害物と衝突するかどうかを決定するための様々な技法およびアルゴリズムを使用することができ、これには本明細書で説明するものが含まれるが、これに限定されない。
【0147】
1206において、プロセッサベースのシステムの少なくとも1つのコンポーネント(例えば、衝突検出システム140、200)は、1つのポーズでロボット付属物の少なくとも一部が環境内の任意の過渡的障害物と衝突するかどうかを決定する。1つの第1のポーズでロボット付属物の少なくとも一部が環境内の任意の過渡的障害物と衝突するかどうかを決定するための様々な技法およびアルゴリズムを使用することができ、これには本明細書で説明するものが含まれるが、これに限定されない。
【0148】
図13は1つの例示としての実施形態に従った、動作計画および動作計画の作成において有用な衝突検出または評価または予測を実行するための、プロセッサベースのシステム(例えば、ロボット制御システム126、衝突検出システム140、200)における動作の低レベル方法1300を示すフロー図である。方法1300は方法500(
図5)を実行する際に、例えば、ロボット付属物のいくつかの中間ポーズを計算する際902(
図9)に実行することができる。
【0149】
少なくとも1302において、プロセッサベースのシステムの少なくとも1つのコンポーネント(例えば、衝突検出システム140、200)はロボット付属物の少なくとも一部がロボット付属物の別の部分と、ロボット付属物が一方のポーズから他方のポーズへ移動する際に通過する複数の中間ポーズを介して、1つのポーズ(例えば、第1のポーズ)と別のポーズ(例えば、第2のポーズ)との間を移動する際に衝突するかどうかを判断する。
【0150】
1304において、プロセッサベースのシステムの少なくとも1つのコンポーネント(例えば、衝突検出システム140、200)はロボット付属物が一方のポーズから他方のポーズへ移動する際に通過する複数の中間ポーズを介して、ロボット付属物の少なくとも一部が1つのポーズ(例えば、第1のポーズ)と別のポーズ(例えば、第2のポーズ)との間を移動する際に環境内の任意の持続的障害物と衝突するかどうかを決定する。
【0151】
1306において、プロセッサベースのシステムの少なくとも1つのコンポーネント(例えば、衝突検出システム140、200)はロボット付属物が一方のポーズから他方のポーズへ移動する際に通過する複数の中間ポーズを介して、ロボット付属物の少なくとも一部が1つのポーズ(例えば、第1のポーズ)と他のポーズ(例えば、第2のポーズ)との間を移動する際に環境内の任意の過渡的障害物に衝突するかどうかを判断する。
【0152】
例
様々な形状は例えば、オクツリー(又は、オクトツリー/八分木)、ボックスのセット、またはユークリッド距離フィールド(EDF)のいずれかで効率的に表すことができる。
【0153】
オクツリーは、ボクセル占有データを記憶するための階層データ構造である。ツリー構造は、衝突検出が必要に応じてツリー構造の固有の階層まで降下することを可能にし、衝突検出プロセスの計算効率を向上させる。オクツリーの1つの利点は、固有の階層である。もちろん、階層的であり、適切であり得る他のデータ構造が存在する。
【0154】
ボックスのセットは例えば、軸整列境界ボックス(AABB)のツリー、方向付けられた(軸整列されていない)境界ボックスのツリー、または球体のツリーなど、様々な形態をとることができる。特に、これらのツリー型データ構造のいずれかのリーフはデータ構造の他のノードとは異なる形状とすることができ、例えば、全てのノードは、三角形メッシュの形態をとることができるルートノードを除いてAABBである。境界体積表現の選択は、対応するデータ構造を構築するために必要な待ち時間と、例えば衝突検出が完了する前にどれだけのツリーを横断する必要があるかを含むコンピューティング衝突(又は、衝突計算)の待ち時間との間のトレードオフを伴う。例えば、境界体積として球を使用することは、高速比較を容易にする(すなわち、球が互いにオーバーラップするかどうかを決定することは計算的に容易である)。例えば、本明細書の他の箇所で論じるように、ロボットの各リンクを表すためにk-ary球ツリーを使用することが好ましい場合がある。実装によっては、環境を表現するボクセルをAABBの集合にまとめることができる。これはボクセル・データを十分に単純化することができ、ある状況ではオクツリーを使用するよりも計算的に高速であり、よりメモリ効率がよい。
【0155】
EDFは作業空間をボクセルの3Dグリッドに離散化し、各ボクセルの値は、その作業空間内の最も近い障害物までの距離を符号化する。作業空間には、ロボットがロボットのあらゆるポーズで到達する可能性のあるすべての空間が含まれる。
【0156】
典型的な問題では、i)ロボット、ii)持続的障害物、およびiii)過渡的障害物の3つのタイプのアイテムが表される。上述の幾何学的形状のいずれかを選択して、これらの項目のいずれかを表すことができる。
【0157】
ロボット
【0158】
ロボットは、関節によって接続されたリンクのツリーとしてモデル化することができる。単一のロボット付属物またはアームの場合、この「ツリー」はしばしば単項であるが、例えば、2つ以上の子リンクを有するリンクを用いて、より一般的であり得る。
【0159】
ロボットを効率的に表現し、計算的に簡単な衝突検出を容易にするために、ロボットのリンクの各々をそれぞれのk-ary球ツリーで表現することが有利であり得る。例えば、各リンクは、深さ4のそれぞれの8-aryツリーで表され、合計585個の球で表される。
【0160】
k-aryツリーは、各親がk個の子を有するツリーである。例えば、k-aryツリーは、k-ary球体ツリーの各ノードがその球の任意の部分が占有されている場合に占有されていると見なされる球体であるk-ary球体ツリーの形態をとることができる。三角形メッシュによって表されるロボットリンクを考える。ツリーのルートは、リンク全体を囲む球である。k個の子はリンクジオメトリの構成三角形のすべてを一緒にカバーする球体であり、球体であるため、必然的に互いに重なり合う。これらの子は、それぞれk個の子などを持つ。深さ4の8-aryツリーを使用する実装では、以下に説明する
図14A~
図14Eに示すように、リンクを表すために585個の球につながる:ルートについて1、ルートの子について8、次のレベルにおいて64、およびリーフレベルにおいて512。
【0161】
図14Aは、例示される一実施形態による、三角形メッシュ1400として表されるロボット付属物の一部を示す。
【0162】
この例では、
図14B、
図14C、
図14D、および
図14Eのシーケンスを介して示されるように、ロボット付属物をほぼ表すために、深さ4の球ツリーの形態のデータ構造が使用される。
【0163】
特に、
図14B、
図14C、
図14Dおよび
図14Eは、それぞれ、球ツリーの4つの連続するレベルを示す。
図14Bに示す第1のレベルでは、単一の球1402がロボット付属物1400全体を包含する。
図14Cに示される第2のレベルでは、8つの球1404(個別には符号が付されていない)がロボット付属物1400全体を包含する。
図14Dに示される第3のレベルでは、64個の球体1406(個別には符号がふされていない)がロボット付属物1400全体を包含する。
図14Dに示す第3のレベルでは、512個の球1406(個別には呼び出されていない)がロボット付属物1400全体を包含する。
【0164】
障害物
実行時間中に環境内で一貫したまたは不変の体積を占有し、その占有体積が構成時に既知である障害物の場合、これらの持続的障害物をユークリッド距離フィールドで表すことが好ましい場合がある。
【0165】
実行時に環境内で一貫性のないまたは変化する体積を占有する、または実行時の存在または不在が構成時に不知である障害物の場合、占有体積(例えば、位置、サイズ)を特徴付ける特定の情報(存在する場合)は、1つまたは複数のセンサによって捕捉され、その捕捉情報から識別される。ほとんどの状況で採用される特定のセンサ技術は問題ではないかもしれないが、センサデータは何らかの定義されたフォーマット(例えば、点群)で提供されるであろう。プロセッサベースのシステムは、受信したセンサデータまたは情報を占有グリッドに変換することができる。例えば、リストまたはツリー構造、またはオクツリーにおいて、障害物を表すために、軸整列された境界ボックスを使用することが好ましい場合がある。
【0166】
図15Aはロボット付属物1504を有するロボット1502が1つの図示された実施形態に従って、多数の障害物1506a、1506b、1506c(例えば、極)を有するタスクを実行する環境1500を示し、ロボット付属物1504の幾何学的形状は、三角形メッシュによって表される。
【0167】
図15Bは、1つの例示としての実施形態に従った、ロボット付属物1504の幾何学的形状の表現が球形木に変換された、
図15Aの環境1500を示す。
【0168】
注目すべきは、ロボット付属物の幾何学的形状が球体ツリーに変換され、シーンがEDFに変換されると、シナリオは
図15Bに示されるように見えることである。距離フィールドは、距離がゼロであるあらゆる位置においてボクセルでレンダリングされることに留意されたい。
【0169】
プロセス
動作(例えば、2つのポーズ間の動作)に関連する衝突チェックに使用するための例示的なプロセスを以下に示す。
【0170】
プロセッサベースのシステム(例えば、衝突検出システム140、200)は第1のポーズ(例えば、開始)と第2のポーズ(例えば、終了ポーズ)との間の複数のポーズを計算する。これは、たとえば、ジョイント間またはジョイントの位置間を補間することによって行うことができる。たとえば、2つのジョイントを持つロボットの開始ポーズはジョイント位置(30、60)に、終了ポーズはジョイント位置(40、80)にある場合がある。中間ポーズは、開始ポーズと終了ポーズとの間の中間のジョイント位置(35、70)で生成されてもよい。中間ポーズの生成は、反復的に行われてもよい。例えば、この中間ポーズと開始ポーズの間の1つ以上のポーズが生成され、終了ポーズは例えば、ジョイントポジション(32.5,65)及びジョイントポジション(37.5,75)で生成される。この補間は、終了条件に到達するまで、例えば開始ポーズと終了ポーズとの間に十分な数のポーズが存在する条件まで、反復的に続行することができる。終了条件は、動作細分粒度の入力を使用して定義することができる。例えば、ポーズ間の距離が動作細分割粒度値よりも小さい場合、終了条件が満たされ、反復は停止する。さらに、例えば待ち時間制約を強制するために、最大反復回数を終了条件として定義することができる。
【0171】
ポーズの各々に対して、プロセッサベースのシステム(例えば、衝突検出システム140、200)はロボットモデル上で順方向動力学を実行し、ロボットリンクの各々のC空間から自由空間への変換を計算する。
【0172】
各ポーズについて、プロセッサベースのシステム(例えば、衝突検出システム140、200)は、ポーズが自己衝突または環境内の障害物との衝突をもたらすかどうかを計算する。モーション内の任意のポーズ(例えば、開始ポーズ、終了ポーズ、中間ポーズ)が衝突をもたらす場合、モーションは衝突条件をもたらし、衝突検出システムは適切なブール値(例えば、COLLISION)を返す。モーション内のポーズ(例えば、開始ポーズ、終了ポーズ、中間ポーズ)が衝突をもたらさない場合、モーションは衝突条件をもたらし、衝突検出システムは適切なブール値(例えば、NO COLLISION)を返す。
【0173】
これらの操作は、ある程度までオーバーラップ(パイプライン化)することができる。通常、既に生成されたポーズを衝突検査する前に、すべてのポーズが生成されるのを待つ必要はない。また、ポーズが衝突をもたらすと決定された場合、特定のモーションの結果を変更しないので、モーション内の他のポーズをチェックし続ける必要はない。
【0174】
衝突検出
ツリー構造においてさえ、衝突検出は最終的に、2つの形状が交差するかどうかを決定することに発展する。ツリーは、交差をチェックするために形状のセットを維持する特に便利な方法である。衝突検出はツリー構造のルートから開始し、下に(すなわち、リーフノードに向かって)進むことができる。いずれかのレベルに交差点がない場合、ロボットと障害物が交差せず、プロセスが終了する。非リーフノードレベルに交差がある場合、衝突評価プロセスは、ツリー構造の次のレベルに進む。リーフレベルに交差点がある場合、ロボットと障害物が交差する。
【0175】
2つの球の衝突試験
【0176】
直下に提供される例示的な擬似コードは、2つの球体間に衝突があるかどうかを決定するための試験動作を示す。
【0177】
衝突試験球と軸アラインメント結合ボックス(AABB)
直下に提供される例示的な擬似コードは、球体と軸整列境界ボックスとの間に衝突があるかどうかを決定するための試験動作を示す。
AABBエクステントフィールドは、各軸に沿ったボックスの半次元の3ベクトル表現である。Clamp()関数は、第1の引数を第2の引数と第3の引数との間に制約する。
【0178】
2つのスフィアツリーの衝突テスト
ツリーとして表される物体(例えば、ロボット、障害物)が衝突するかどうかの決定は、データ構造の固有の階層的性質のために高速であり得る。直下に提供される例示的な擬似コードは、2つの球ツリー間に衝突があるかどうかを決定するためのテスト動作のための再帰的アルゴリズムを示す。
関数DescendTreeAはこの反復でツリーAまたはツリーBをさらに探索すべきかどうかを決定するために、降下規則を符号化する。
【0179】
球ツリーとユークリッド距離場の衝突試験
球ツリーと距離フィールドとの間の衝突チェックは、2つの球ツリーの場合と同様である。再び、球ツリーの固有の階層的性質はツリーが十分な解像度まで評価されるとすぐに、エグジットするために利用される。直下に提供される例示的な擬似コードは、球ツリーと距離フィールドとの間に衝突があるかどうかを決定するためのテスト動作を示す。
【0180】
上記の詳細説明においては、ブロック図、模式図及び実施例を用いて、多様な装置及び/又は方法の実施形態について記載している。これらのブロックダイヤグラム、概略図及び実施例は1つまたは2つ以上の機能及び/または動作を含んでいるが、当業者には明らかなように、これらのブロックダイヤグラム、流れ図及び実施例におけるそれぞれの機能及び/または動作は個々に及び/または一括して、多様なハードウェア、ソフトウェア、ファームウェア、または事実上任意のこれらの組み合わせによって実装することができる。一実施形態では、本主題がブール回路、特定用途向け集積回路(ASIC)および/またはFPGAを介して実装され得る。しかしながら、本明細書に開示された実施形態は全体的にまたは部分的に、標準的な集積回路における様々な異なる実装において、1つまたは複数のコンピュータ上で実行される1つまたは複数のコンピュータプログラムとして(例えば、1つまたは複数のコンピュータシステム上で実行される1つまたは複数のプログラムとして)、1つまたは複数のプロセッサ(例えば、マイクロプロセッサ)上で実行される1つまたは複数のプログラムとして、ファームウェアとして、またはそれらの事実上任意の組合せとして実装することができ、回路を設計すること、および/またはソフトウェアおよび/またはファームウェアのためのコードを書き込むことは、本開示に照らして当業者の技術の範囲内で十分にあることを、当業者は認識するであろう。
【0181】
当業者は本明細書に記載された方法またはアルゴリズムの多くが、追加の動作を使用し、いくつかの動作を省略し、および/または指定された順序とは異なる順序で動作を実行し得ることを認識するであろう。
【0182】
さらに、当業者は、本明細書で教示されるメカニズムがハードウェア、例えば、1つまたは複数のFPGAまたはASICにおいて実装されることが可能であることを理解するであろう。
【0183】
上記の種々の実施形態は、更なる実施形態を提供するように組み合わされることが可能である。「自動運転車と再構成可能な動作計画プロセッサの動作計画」と題された2017年6月9日に出願された国際出願PCT/US2017/036880、2016年1月5日に出願された「特殊なロボット動作計画ハードウェアおよびそれを作成および使用する方法」と題された国際特許出願公開第WO2016/122840号、2018年1月12日出願の「動的物体を有する自動車の移動を容易にする装置、方法及び物品」と題する米国特許出願第62/616,783号、2018年2月6日出願の「離散化された環境を1つ又は複数のプロセッサに記憶し、その動作を改善するロボットの移動計画」と題する米国特許出願第62/626,939号、及び2018年8月23日出願の「ロボット工学の動作計画に役立つ衝突検出」と題する米国特許出願第62/722,067号を含むがこれらに限定されない本明細書で言及され、又は、添付のアプリケーションデータシートに記載された本出願人に譲渡された米国特許出願公開、米国特許出願、外国特許、および外国特許出願はその全体が参照により本明細書に組み込まれる。上記の詳細説明に照らして、上記の及び他の変形がそれらの実施形態に対して行われることが可能である。一般に、以下の特許請求の範囲において、使用される用語は特許請求の範囲を、明細書および特許請求の範囲に開示される特定の実施形態に限定するように解釈されるべきではなく、そのような特許請求の範囲が権利を有する均等物の全範囲とともに、すべての可能な実施形態を含むように解釈されるべきである。したがって、特許請求の範囲は、本開示によって限定されない。
下記は、本願の出願当初に記載の発明である。
<請求項1>
ロボットの動作計画に有用なプロセッサベースのシステムの少なくとも1つのコンポーネントの動作方法であって、
ロボットの少なくとも第1の数のポーズの各々について、回路の少なくとも1つのセットによって、前記ロボットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットの他の部分と衝突するかどうかを決定するステップと、
前記ロボットの少なくとも第2の数のポーズの各々について、回路の少なくとも1つのセットによって、環境内の持続的障害物のセットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットが動作する前記環境内の任意の持続的障害物と衝突するかどうかを決定するステップであって、前記データ構造表現は前記第1の数の障害物の各々の前記障害物によって占められる前記環境内のそれぞれの体積が構成時に既知である前記第1の数の障害物の表現を含む、該ステップと、
前記ロボットの少なくとも第3の数のポーズの各々について、回路の少なくとも1つのセットによって、前記環境内の過渡的障害物のセットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記環境内の任意の過渡的障害物と衝突するかどうかを決定するステップであって、前記データ構造表現は、もし存在するのであれば前記第2の数の障害物の各々の前記障害物によって占有される前記環境内のそれぞれの体積が実行時の少なくとも一部で既知であり、前記障害物の各々によって占有される前記環境内のそれぞれの体積が構成時に不知である前記環境内の第2の数の障害物の表現を含む、該ステップと、
前記ポーズのうちの少なくとも1つについて衝突が検出されたかどうかを表す信号を提供するステップ
を有する方法。
<請求項2>
前記ロボットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットの他の部分と衝突するかどうかを決定するステップは、ロボット付属物の少なくとも一部が第1のポーズで前記ロボット付属物の他の部分と衝突するかどうかを決定するステップを含む、請求項1に記載の方法。
<請求項3>
前記ロボットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットの他の部分と衝突するかどうかを決定するステップは、ロボット付属物の少なくとも一部が第1のポーズと第2のポーズとの間で移動する際に前記ロボット付属物の他の部分と衝突するかどうかを決定するステップを含む、請求項1に記載の方法。
<請求項4>
前記環境内の持続的障害物のセットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットが動作する前記環境内の任意の持続的障害物と衝突するかどうかを決定するステップは、ロボット付属物の少なくとも一部が第1のポーズで前記環境内の任意の持続的障害物と衝突するか否かを決定するステップを含む、請求項1に記載の方法。
<請求項5>
前記環境内の持続的障害物のセットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットが動作する前記環境内の任意の持続的障害物と衝突するかどうかを決定するステップは、第1のポーズと第2のポーズの間を移動する際にロボット付属物の少なくとも一部が前記環境内の任意の持続的障害物と衝突するか否かを決定するステップを含む、請求項1に記載の方法。
<請求項6>
前記環境内の持続的障害物のセットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットが動作する前記環境内の任意の持続的障害物と衝突するかどうかを決定するステップは、ロボット付属物の少なくとも一部が第1のポーズで前記環境内の任意の過渡的障害物と衝突するか否かを決定するステップを含む、請求項1に記載の方法。
<請求項7>
前記環境内の過渡的障害物のセットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットが動作する前記環境内の任意の過渡的障害物と衝突するかどうかを決定するステップは、第1のポーズと第2のポーズとの間を移動する際にロボット付属物の少なくとも一部が前記環境内の任意の過渡的障害物に衝突するか否かを決定するステップを含む、請求項1に記載の方法。
<請求項8>
構成時に、
動力学モデルによって表されるロボットについて、前記ロボットの前記データ構造表現を生成するステップと、
前記環境について、前記環境内の前記持続的障害物のセットの前記データ構造表現を生成するステップをさらに有し、
前記データ構造表現が、前記第1の数の障害物の各々の障害物によって占められる前記環境内のそれぞれの体積が構成時に既知である前記第1の数の障害物の表現を含む、請求項1記載の方法。
<請求項9>
前記環境内の前記持続的障害物のセットの前記データ構造表現を生成するステップは、境界体積の階層を生成するステップを含む、請求項8に記載の方法。
<請求項10>
境界体積の階層を生成するステップは、リーフノードとして三角形メッシュを有する境界ボックスの階層を生成するステップを含む、請求項9に記載の方法。
<請求項11>
境界体積の階層を生成するステップは、球体の階層を生成するステップを含む、請求項9に記載の方法。
<請求項12>
境界体積の階層を生成するステップは、k-ary球ツリーを生成するステップを含む、請求項9に記載の方法。
<請求項13>
境界体積の階層を生成するステップは、軸整列境界ボックスの階層を生成するステップを含む、請求項9に記載の方法。
<請求項14>
境界体積の階層を生成するステップは、指向性境界ボックスの階層を生成するステップを含む、請求項9に記載の方法。
<請求項15>
前記環境内の前記持続的障害物のセットの前記データ構造表現を生成するステップは、前記環境内の前記持続的障害物のセットを表すボクセル占有情報を記録するオクツリーを生成するステップを含む、請求項8に記載の方法。
<請求項16>
前記ロボットの前記データ構造表現を生成するステップは、k-aryツリーを生成するステップを含む、請求項8に記載の方法。
<請求項17>
前記ロボットの前記データ構造表現を生成するステップは、前記ロボットの複数のリンクのそれぞれについて、それぞれのk-aryツリーを生成するステップを含む、請求項8に記載の方法。
<請求項18>
前記ロボットの前記データ構造表現を生成するステップは、前記ロボットの複数のリンクのそれぞれについて、それぞれの8-aryツリーを生成するステップを含む、請求項8に記載の方法。
<請求項19>
前記ロボットの前記データ構造表現を生成するステップは、前記ロボットの複数のリンクのそれぞれについて、4以上のツリー深さを有するそれぞれの8-aryツリーを生成するステップを含む、請求項8に記載の方法。
<請求項20>
前記ロボットの前記データ構造表現を生成するステップは、前記ロボットの複数のリンクのそれぞれについて、それぞれのk-aryツリーを生成するステップを含み、前記k-aryツリーの各ノードは前記それぞれの球体の任意の部分が占有されている場合に占有されていると識別される球体である、請求項8に記載の方法。
<請求項21>
実行時に、前記環境内の過渡的障害物のセットの前記データ構造表現を生成するステップであって、前記データ構造表現はもし存在するのであれば前記第2の数の障害物の各々によって占有される前記環境内のそれぞれの体積が前記実行時の少なくとも一部で既知であり、前記障害物の各々によって占有される前記環境内のそれぞれの体積が前記構成時に不知である前記過渡的障害物の表現を含む、該ステップをさらに含み、
前記ロボットの任意の部分が前記ロボットの他の部分と衝突するかどうかを決定するステップ、前記ロボットの任意の部分が環境内の任意の持続的障害物と衝突するかどうかを決定するステップ及び前記ロボットの任意の部分が前記環境内の任意の過渡的障害物と衝突するかどうかを決定するステップがすべて前記実行時に行われる、請求項1記載の方法。
<請求項22>
もし存在するのであれば前記環境内の前記過渡的障害物を表すセンサ情報を受信するステップと、
前記センサ情報を占有情報に変換するステップをさらに有し、
前記環境内の前記過渡的障害物のセットの前記データ構造表現を生成するステップは、前記占有情報から前記環境内の前記過渡的障害物のセットの前記データ構造表現を生成するステップを含む、請求項21記載の方法。
<請求項23>
複数のリンクと、前記リンクのそれぞれの対の間の複数の関節を有するロボット付属物の形態で前記ロボットを表す動力学モデルを受信するステップと、
前記環境内の前記持続的障害物のセットのそれぞれの位置を表す占有情報を受信するステップと、
動作計画に使用される動作細分化粒度を表す少なくとも1つの値を受信するステップをさらに有する、請求項1に記載の方法。
<請求項24>
動力学モデルを受信するステップと、占有情報を受信するステップと、動作細分化粒度を表す少なくとも1つの値を受信するステップがすべて前記構成時に発生し、
前記ロボットの前記動力学モデルに基づいて、前記構成時に前記ロボットの前記データ構造表現を生成するステップと、
前記構成時に前記環境内の前記持続的障害物のセットの前記データ構造表現を生成するステップをさらに含み、
前記データ構造表現は、前記第1の数の障害物の前記障害物の各々が占める前記環境内の各体積が前記構成時に既知である前記第1の数の障害物の表現を含む、請求項23に記載の方法。
<請求項25>
実行時に、前記環境内の過渡的障害物のセットの前記データ構造表現を生成するステップであって、前記データ構造表現はもし存在するのであれば前記第2の数の障害物の各々によって占有される前記環境内のそれぞれの体積が前記実行時の少なくとも一部で既知であり、前記障害物の各々によって占有される前記環境内のそれぞれの体積が前記構成時に不知である前記過渡的障害物の表現を含む、該ステップをさらに含む、請求項24に記載の方法。
<請求項26>
前記ロボットが、ロボット付属物を含み、
前記ロボット付属物の第1のポーズと前記ロボット付属物の第2のポーズの間の前記ロボット付属物の動作について、前記ロボット付属物のC空間における前記ロボット付属物の前記第1のポーズと前記第2のポーズの間の複数の中間ポーズを、前記C空間において連続的に隣接するポーズの複数の対の間の距離が前記動作細分割粒度についての受信値を満たすまで計算するステップをさらに有する、請求項1に記載の方法。
<請求項27>
前記ロボット付属物の複数の中間ポーズを計算するステップは、
前記ロボット付属物の関節のそれぞれについて、前記第1および前記第2のポーズにおける前記関節のそれぞれの位置および向きの間を補間してn番目の中間ポーズを取得するステップと、
前記ロボット付属物の関節のそれぞれについて、終了条件に達するまで、それぞれのi番目の反復についてのそれぞれの最近傍ポーズの対における前記関節のそれぞれの位置および向きの間を反復的に補間するステップをさらに有する、請求項26に記載の方法。
<請求項28>
前記終了条件はn番目の中間ポーズを得るように動作細分化粒度を満たす連続的に隣接するポーズ間の距離であり、
複数の前記反復に対して、前記終了条件に達したかどうかを決定するステップをさらに有する、請求項27に記載の方法。
<請求項29>
複数の前記ポーズの各々について、動力学ロボットモデル上で順方向動力学計算を実行して、前記ロボット付属物の各リンクの複数の変換を計算するステップをさらに含む、請求項26に記載の方法。
<請求項30>
前記ロボットの任意の部分が前記ロボットの他の部分と衝突するかどうかを決定するステップ、前記ロボットの任意の部分が任意の持続的障害物と衝突するかどうかを決定するステップ、又は、前記ロボットの任意の部分が任意の過渡的障害物と衝突するかどうかを決定するステップの少なくとも1つが、階層表現またはユークリッド距離場表現のうちの少なくとも1つに基づいて決定するステップを含む、請求項1~29のいずれかに記載の方法。
<請求項31>
ロボットの動作計画に有用な衝突評価を生成するシステムであって、
前記システムは、
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサに実行させるプロセッサ実行可能命令またはデータのうちの少なくとも1つを記憶する少なくとも1つの非一時的プロセッサ可読媒体であって、
少なくとも1つのプロセッサによって実行されたときに、前記少なくとも1つのプロセッサに、
ロボットの少なくとも第1の数のポーズの各々について、前記ロボットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットの他の部分と衝突するかどうかを決定するステップと、
前記ロボットの少なくとも第2の数のポーズの各々について、環境内の持続的障害物のセットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットが動作する前記環境内の任意の持続的障害物と衝突するかどうかを決定するステップであって、前記データ構造表現は前記第1の数の障害物の各々の前記障害物によって占められる前記環境内のそれぞれの体積が構成時に既知である前記第1の数の障害物の表現を含む、該ステップと、
前記ロボットの少なくとも第3の数のポーズの各々について、前記環境内の過渡的障害物のセットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記環境内の任意の過渡的障害物と衝突するかどうかを決定するステップであって、前記データ構造表現は、もし存在するのであれば前記第2の数の障害物の各々の前記障害物によって占有される前記環境内のそれぞれの体積が実行時の少なくとも一部で既知であり、前記障害物の各々によって占有される前記環境内のそれぞれの体積が構成時に不知である前記環境内の第2の数の障害物の表現を含む、該ステップと、
前記ポーズのうちの少なくとも1つについて衝突が検出されたかどうかを表す信号を提供するステップを実行させる非一時的プロセッサ可読媒体を有する、システム。
<請求項32>
前記ロボットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットの他の部分と衝突するかどうかを決定するために、前記少なくとも1つのプロセッサは、ロボット付属物の少なくとも一部が第1のポーズで前記ロボット付属物の他の部分と衝突するかどうかを決定する、請求項31に記載のシステム。
<請求項33>
前記ロボットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットの他の部分と衝突するかどうかを決定するために、前記少なくとも1つのプロセッサは、ロボット付属物の少なくとも一部が第1のポーズと第2のポーズとの間で移動する際に前記ロボット付属物の他の部分と衝突するかどうかを決定する、請求項31に記載のシステム。
<請求項34>
前記環境内の持続的障害物のセットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットが動作する前記環境内の任意の持続的障害物と衝突するかどうかを決定するために、前記少なくとも1つのプロセッサは、ロボット付属物の少なくとも一部が第1のポーズで前記環境内の任意の持続的障害物と衝突するか否かを決定する、請求項31に記載のシステム。
<請求項35>
前記環境内の持続的障害物のセットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットが動作する前記環境内の任意の持続的障害物と衝突するかどうかを決定するために、前記少なくとも1つのプロセッサは、第1のポーズと第2のポーズの間を移動する際にロボット付属物の少なくとも一部が前記環境内の任意の持続的障害物と衝突するか否かを決定する、請求項31に記載のシステム。
<請求項36>
前記環境内の過渡的障害物のセットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットが動作する前記環境内の任意の過渡的障害物と衝突するかどうかを決定するために、前記少なくとも1つのプロセッサは、ロボット付属物の少なくとも一部が第1のポーズで前記環境内の任意の過渡的障害物と衝突するか否かを決定する、請求項31に記載のシステム。
<請求項37>
前記環境内の過渡的障害物のセットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットが動作する前記環境内の任意の過渡的障害物と衝突するかどうかを決定するために、前記少なくとも1つのプロセッサは、第1のポーズと第2のポーズとの間を移動する際にロボット付属物の少なくとも一部が前記環境内の任意の過渡的障害物に衝突するか否かを決定する、請求項31に記載のシステム。
<請求項38>
前記少なくとも1つのプロセッサ実行可能命令またはデータの実行はさらに、前記少なくとも1つのプロセッサに、
構成時に、
動力学モデルによって表されるロボットについて、前記ロボットの前記データ構造表現を生成するステップと、
前記環境について、前記環境内の前記持続的障害物のセットの前記データ構造表現を生成するステップをさらに実行させ、
前記データ構造表現が、前記第1の数の障害物の各々の障害物によって占められる前記環境内のそれぞれの体積が構成時に既知である前記第1の数の障害物の表現を含む、請求項31に記載のシステム。
<請求項39>
前記少なくとも1つのプロセッサは、前記環境内の前記持続的障害物のセットの前記データ構造表現を生成するために、境界体積の階層を生成する、請求項38に記載のシステム。
<請求項40>
前記少なくとも1つのプロセッサは、境界体積の階層を生成するために、リーフノードとして三角形メッシュを有する境界ボックスの階層を生成する、請求項39に記載のシステム。
<請求項41>
前記少なくとも1つのプロセッサは、境界体積の階層を生成するために、球体の階層を生成する、請求項39に記載のシステム。
<請求項42>
前記少なくとも1つのプロセッサは、境界体積の階層を生成するために、k-ary球ツリーを生成する、請求項39に記載のシステム。
<請求項43>
前記少なくとも1つのプロセッサは、境界体積の階層を生成するために、軸整列境界ボックスの階層を生成する、請求項39に記載のシステム。
<請求項44>
前記少なくとも1つのプロセッサは、境界体積の階層を生成するために、指向性境界ボックスの階層を生成する、請求項39に記載のシステム。
<請求項45>
前記少なくとも1つのプロセッサは、前記環境内の前記持続的障害物のセットの前記データ構造表現を生成するために、前記環境内の前記持続的障害物のセットを表すボクセル占有情報を記憶するオクツリーを生成する、請求項38に記載のシステム。
<請求項46>
前記少なくとも1つのプロセッサは、前記ロボットの前記データ構造表現を生成するために、k-aryツリーを生成する、請求項38に記載のシステム。
<請求項47>
前記少なくとも1つのプロセッサは、前記ロボットの前記データ構造表現を生成するために、前記ロボットの複数のリンクのそれぞれについて、それぞれのk-aryツリーを生成する、請求項38に記載のシステム。
<請求項48>
前記少なくとも1つのプロセッサは、前記ロボットの前記データ構造表現を生成するために、前記ロボットの複数のリンクのそれぞれについて、それぞれの8-aryツリーを生成する、請求項38に記載のシステム。
<請求項49>
前記少なくとも1つのプロセッサは、前記ロボットの前記データ構造表現を生成するために、前記ロボットの複数のリンクのそれぞれについて、4以上のツリー深さを有するそれぞれの8-aryツリーを生成する、請求項38に記載のシステム。
<請求項50>
前記少なくとも1つのプロセッサは、前記ロボットの前記データ構造表現を生成するために、前記ロボットの複数のリンクのそれぞれについて、それぞれのk-aryツリーを生成し、前記k-aryツリーの各ノードは前記それぞれの球体の任意の部分が占有されている場合に占有されていると識別される球体である、請求項38に記載のシステム。
<請求項51>
前記少なくとも1つのプロセッサ実行可能命令またはデータの実行はさらに、前記少なくとも1つのプロセッサに、
実行時に、前記環境内の過渡的障害物のセットの前記データ構造表現を生成するステップであって、前記データ構造表現はもし存在するのであれば前記第2の数の障害物の各々によって占有される前記環境内のそれぞれの体積が前記実行時の少なくとも一部で既知であり、前記障害物の各々によって占有される前記環境内のそれぞれの体積が前記構成時に不知である前記過渡的障害物の表現を含む、該ステップをさらに実行させ、
前記ロボットの任意の部分が前記ロボットの他の部分と衝突するかどうかを決定するステップ、前記ロボットの任意の部分が環境内の任意の持続的障害物と衝突するかどうかを決定するステップ及び前記ロボットの任意の部分が前記環境内の任意の過渡的障害物と衝突するかどうかを決定するステップがすべて前記実行時に行われる、請求項31に記載のシステム。
<請求項52>
前記少なくとも1つのプロセッサ実行可能命令またはデータの実行はさらに、前記少なくとも1つのプロセッサに、
もし存在するのであれば前記環境内の前記過渡的障害物を表すセンサ情報を受信するステップと、
前記センサ情報を占有情報に変換するステップをさらに実行させ、
前記環境内の前記過渡的障害物のセットの前記データ構造表現を生成するために、前記少なくとも1つのプロセッサは、前記占有情報から前記環境内の前記過渡的障害物のセットの前記データ構造表現を生成する、請求項51に記載のシステム。
<請求項53>
前記少なくとも1つのプロセッサ実行可能命令またはデータの実行はさらに、前記少なくとも1つのプロセッサに、
複数のリンクと、前記リンクのそれぞれの対の間の複数の関節を有するロボット付属物の形態で前記ロボットを表す動力学モデルを受信するステップと、
前記環境内の前記持続的障害物のセットのそれぞれの位置を表す占有情報を受信するステップと、
動作計画に使用される動作細分化粒度を表す少なくとも1つの値を受信するステップを実行させる、請求項31に記載のシステム。
<請求項54>
前記動力学モデル、前記占有情報、動作細分化粒度を表す前記少なくとも1つの値がすべて前記構成時に受信され、
前記少なくとも1つのプロセッサ実行可能命令またはデータの実行はさらに、前記少なくとも1つのプロセッサに、
前記ロボットの前記動力学モデルに基づいて、前記構成時に前記ロボットの前記データ構造表現を生成するステップと、
前記構成時に前記環境内の前記持続的障害物のセットの前記データ構造表現を生成するステップをさら実行させ、
前記データ構造表現は、前記第1の数の障害物の前記障害物の各々が占める前記環境内の各体積が前記構成時に既知である前記第1の数の障害物の表現を含む、請求項53に記載のシステム。
<請求項55>
前記少なくとも1つのプロセッサ実行可能命令またはデータの実行は、前記少なくとも1つのプロセッサに、
実行時に、前記環境内の過渡的障害物のセットの前記データ構造表現を生成するステップであって、前記データ構造表現はもし存在するのであれば前記第2の数の障害物の各々によって占有される前記環境内のそれぞれの体積が前記実行時の少なくとも一部で既知であり、前記障害物の各々によって占有される前記環境内のそれぞれの体積が前記構成時に不知である前記過渡的障害物の表現を含む、該ステップをさらに実行させる、請求項54に記載のシステム。
<請求項56>
前記ロボットが、ロボット付属物を含み、
前記少なくとも1つのプロセッサ実行可能命令またはデータの実行は、前記少なくとも1つのプロセッサに、
前記ロボット付属物の第1のポーズと前記ロボット付属物の第2のポーズの間の前記ロボット付属物の動作について、前記ロボット付属物のC空間における前記ロボット付属物の前記第1のポーズと前記第2のポーズの間の複数の中間ポーズを、前記C空間において連続的に隣接するポーズの複数の対の間の距離が前記動作細分割粒度についての受信値を満たすまで計算するステップをさらに実行させる、請求項31に記載のシステム。
<請求項57>
前記ロボット付属物の複数の中間ポーズを計算するために、前記少なくとも1つのプロセッサは、
前記ロボット付属物の関節のそれぞれについて、前記第1および前記第2のポーズにおける前記関節のそれぞれの位置および向きの間を補間してn番目の中間ポーズを取得するステップと、
前記ロボット付属物の関節のそれぞれについて、終了条件に達するまで、それぞれのi番目の反復についてのそれぞれの最近傍ポーズの対における前記関節のそれぞれの位置および向きの間を反復的に補間するステップを実行する、請求項56に記載のシステム。
<請求項58>
前記終了条件はn番目の中間ポーズを得るように動作細分化粒度を満たす連続的に隣接するポーズ間の距離であり、
前記プロセッサ実行可能命令またはデータのうちの前記少なくとも1つの実行は、前記少なくとも1つのプロセッサに、複数の前記反復に対して、前記終了条件に達したかどうかを決定するステップをさらに実行させる、請求項57に記載のシステム。
<請求項59>
前記少なくとも1つのプロセッサ実行可能命令またはデータの実行はさらに、前記少なくとも1つのプロセッサに、
複数の前記ポーズの各々について、動力学ロボットモデル上で順方向動力学計算を実行して、前記ロボット付属物の各リンクの複数の変換を計算するステップをさらに実行させる、請求項56に記載のシステム。
<請求項60>
前記ロボットの任意の部分が前記ロボットの他の部分と衝突するかどうかの決定、前記ロボットの任意の部分が任意の持続的障害物と衝突するかどうかの決定、又は、前記ロボットの任意の部分が任意の過渡的障害物と衝突するかどうかの決定の少なくとも1つが、階層表現またはユークリッド距離場表現のうちの少なくとも1つに基づく決定を含む、請求項31~59のいずれかに記載のシステム。