(57)【要約】  ロボット工学のための動作計画において有用な衝突検出は、ロボットが動作する環境において、ロボット、持続的障害物および過渡的障害物のデータ構造表現を有利に採用する。データ構造は階層的データ構造（例えば、オクツリー、体積またはボックスのセット（例えば、軸に整列された境界ボックスのツリー（ＡＡＢＢ）、配向された（軸に整列されていない）境界ボックスのツリー、または球のツリー））または非階層的データ構造（例えば、ユークリッド距離フィールド）の形態をとることができ、そのようなステップは、計算効率をもたらし、メモリ要件を低減し、低消費電力をもたらし得る。衝突検出はスタンドアロン関数としての形態をとることができ、様々な異なる動作計画アルゴリズムのいずれかを実行する際に使用することができるブール結果を提供する。【選択図】  図
2021534985.tif 000002
【特許請求の範囲】
【請求項１】
ロボットの動作計画に有用なプロセッサベースのシステムの少なくとも１つのコンポーネントの動作方法であって、
ロボットの少なくとも第１の数のポーズの各々について、回路の少なくとも１つのセットによって、前記ロボットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットの他の部分と衝突するかどうかを決定するステップと、
前記ロボットの少なくとも第２の数のポーズの各々について、回路の少なくとも１つのセットによって、環境内の持続的障害物のセットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットが動作する前記環境内の任意の持続的障害物と衝突するかどうかを決定するステップであって、前記データ構造表現は前記第１の数の障害物の各々の前記障害物によって占められる前記環境内のそれぞれの体積が構成時に既知である前記第１の数の障害物の表現を含む、該ステップと、
前記ロボットの少なくとも第３の数のポーズの各々について、回路の少なくとも１つのセットによって、前記環境内の過渡的障害物のセットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記環境内の任意の過渡的障害物と衝突するかどうかを決定するステップであって、前記データ構造表現は、もし存在するのであれば前記第２の数の障害物の各々の前記障害物によって占有される前記環境内のそれぞれの体積が実行時の少なくとも一部で既知であり、前記障害物の各々によって占有される前記環境内のそれぞれの体積が構成時に不知である前記環境内の第２の数の障害物の表現を含む、該ステップと、
前記ポーズのうちの少なくとも１つについて衝突が検出されたかどうかを表す信号を提供するステップ
を有する方法。
【請求項２】
前記ロボットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットの他の部分と衝突するかどうかを決定するステップは、ロボット付属物の少なくとも一部が第１のポーズで前記ロボット付属物の他の部分と衝突するかどうかを決定するステップを含む、請求項１に記載の方法。
【請求項３】
前記ロボットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットの他の部分と衝突するかどうかを決定するステップは、ロボット付属物の少なくとも一部が第１のポーズと第２のポーズとの間で移動する際に前記ロボット付属物の他の部分と衝突するかどうかを決定するステップを含む、請求項１に記載の方法。
【請求項４】
前記環境内の持続的障害物のセットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットが動作する前記環境内の任意の持続的障害物と衝突するかどうかを決定するステップは、ロボット付属物の少なくとも一部が第１のポーズで前記環境内の任意の持続的障害物と衝突するか否かを決定するステップを含む、請求項１に記載の方法。
【請求項５】
前記環境内の持続的障害物のセットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットが動作する前記環境内の任意の持続的障害物と衝突するかどうかを決定するステップは、第１のポーズと第２のポーズの間を移動する際にロボット付属物の少なくとも一部が前記環境内の任意の持続的障害物と衝突するか否かを決定するステップを含む、請求項１に記載の方法。
【請求項６】
前記環境内の持続的障害物のセットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットが動作する前記環境内の任意の持続的障害物と衝突するかどうかを決定するステップは、ロボット付属物の少なくとも一部が第１のポーズで前記環境内の任意の過渡的障害物と衝突するか否かを決定するステップを含む、請求項１に記載の方法。
【請求項７】
前記環境内の過渡的障害物のセットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットが動作する前記環境内の任意の過渡的障害物と衝突するかどうかを決定するステップは、第１のポーズと第２のポーズとの間を移動する際にロボット付属物の少なくとも一部が前記環境内の任意の過渡的障害物に衝突するか否かを決定するステップを含む、請求項１に記載の方法。
【請求項８】
構成時に、
動力学モデルによって表されるロボットについて、前記ロボットの前記データ構造表現を生成するステップと、
前記環境について、前記環境内の前記持続的障害物のセットの前記データ構造表現を生成するステップをさらに有し、
前記データ構造表現が、前記第１の数の障害物の各々の障害物によって占められる前記環境内のそれぞれの体積が構成時に既知である前記第１の数の障害物の表現を含む、請求項１記載の方法。
【請求項９】
前記環境内の前記持続的障害物のセットの前記データ構造表現を生成するステップは、境界体積の階層を生成するステップを含む、請求項８に記載の方法。
【請求項１０】
境界体積の階層を生成するステップは、リーフノードとして三角形メッシュを有する境界ボックスの階層を生成するステップを含む、請求項９に記載の方法。
【請求項１１】
境界体積の階層を生成するステップは、球体の階層を生成するステップを含む、請求項９に記載の方法。
【請求項１２】
境界体積の階層を生成するステップは、ｋ−ａｒｙ球ツリーを生成するステップを含む、請求項９に記載の方法。
【請求項１３】
境界体積の階層を生成するステップは、軸整列境界ボックスの階層を生成するステップを含む、請求項９に記載の方法。
【請求項１４】
境界体積の階層を生成するステップは、指向性境界ボックスの階層を生成するステップを含む、請求項９に記載の方法。
【請求項１５】
前記環境内の前記持続的障害物のセットの前記データ構造表現を生成するステップは、前記環境内の前記持続的障害物のセットを表すボクセル占有情報を記録するオクツリーを生成するステップを含む、請求項８に記載の方法。
【請求項１６】
前記ロボットの前記データ構造表現を生成するステップは、ｋ−ａｒｙツリーを生成するステップを含む、請求項８に記載の方法。
【請求項１７】
前記ロボットの前記データ構造表現を生成するステップは、前記ロボットの複数のリンクのそれぞれについて、それぞれのｋ−ａｒｙツリーを生成するステップを含む、請求項８に記載の方法。
【請求項１８】
前記ロボットの前記データ構造表現を生成するステップは、前記ロボットの複数のリンクのそれぞれについて、それぞれの８−ａｒｙツリーを生成するステップを含む、請求項８に記載の方法。
【請求項１９】
前記ロボットの前記データ構造表現を生成するステップは、前記ロボットの複数のリンクのそれぞれについて、４以上のツリー深さを有するそれぞれの８−ａｒｙツリーを生成するステップを含む、請求項８に記載の方法。
【請求項２０】
前記ロボットの前記データ構造表現を生成するステップは、前記ロボットの複数のリンクのそれぞれについて、それぞれのｋ−ａｒｙツリーを生成するステップを含み、前記ｋ−ａｒｙツリーの各ノードは前記それぞれの球体の任意の部分が占有されている場合に占有されていると識別される球体である、請求項８に記載の方法。
【請求項２１】
実行時に、前記環境内の過渡的障害物のセットの前記データ構造表現を生成するステップであって、前記データ構造表現はもし存在するのであれば前記第２の数の障害物の各々によって占有される前記環境内のそれぞれの体積が前記実行時の少なくとも一部で既知であり、前記障害物の各々によって占有される前記環境内のそれぞれの体積が前記構成時に不知である前記過渡的障害物の表現を含む、該ステップをさらに含み、
前記ロボットの任意の部分が前記ロボットの他の部分と衝突するかどうかを決定するステップ、前記ロボットの任意の部分が環境内の任意の持続的障害物と衝突するかどうかを決定するステップ及び前記ロボットの任意の部分が前記環境内の任意の過渡的障害物と衝突するかどうかを決定するステップがすべて前記実行時に行われる、請求項１記載の方法。
【請求項２２】
もし存在するのであれば前記環境内の前記過渡的障害物を表すセンサ情報を受信するステップと、
前記センサ情報を占有情報に変換するステップをさらに有し、
前記環境内の前記過渡的障害物のセットの前記データ構造表現を生成するステップは、前記占有情報から前記環境内の前記過渡的障害物のセットの前記データ構造表現を生成するステップを含む、請求項２１記載の方法。
【請求項２３】
複数のリンクと、前記リンクのそれぞれの対の間の複数の関節を有するロボット付属物の形態で前記ロボットを表す動力学モデルを受信するステップと、
前記環境内の前記持続的障害物のセットのそれぞれの位置を表す占有情報を受信するステップと、
動作計画に使用される動作細分化粒度を表す少なくとも１つの値を受信するステップをさらに有する、請求項１に記載の方法。
【請求項２４】
動力学モデルを受信するステップと、占有情報を受信するステップと、動作細分化粒度を表す少なくとも１つの値を受信するステップがすべて前記構成時に発生し、
前記ロボットの前記動力学モデルに基づいて、前記構成時に前記ロボットの前記データ構造表現を生成するステップと、
前記構成時に前記環境内の前記持続的障害物のセットの前記データ構造表現を生成するステップをさらに含み、
前記データ構造表現は、前記第１の数の障害物の前記障害物の各々が占める前記環境内の各体積が前記構成時に既知である前記第１の数の障害物の表現を含む、請求項２３に記載の方法。
【請求項２５】
実行時に、前記環境内の過渡的障害物のセットの前記データ構造表現を生成するステップであって、前記データ構造表現はもし存在するのであれば前記第２の数の障害物の各々によって占有される前記環境内のそれぞれの体積が前記実行時の少なくとも一部で既知であり、前記障害物の各々によって占有される前記環境内のそれぞれの体積が前記構成時に不知である前記過渡的障害物の表現を含む、該ステップをさらに含む、請求項２４に記載の方法。
【請求項２６】
前記ロボットが、ロボット付属物を含み、
前記ロボット付属物の第１のポーズと前記ロボット付属物の第２のポーズの間の前記ロボット付属物の動作について、前記ロボット付属物のＣ空間における前記ロボット付属物の前記第１のポーズと前記第２のポーズの間の複数の中間ポーズを、前記Ｃ空間において連続的に隣接するポーズの複数の対の間の距離が前記動作細分割粒度についての受信値を満たすまで計算するステップをさらに有する、請求項１に記載の方法。
【請求項２７】
前記ロボット付属物の複数の中間ポーズを計算するステップは、
前記ロボット付属物の関節のそれぞれについて、前記第１および前記第２のポーズにおける前記関節のそれぞれの位置および向きの間を補間してｎ番目の中間ポーズを取得するステップと、
前記ロボット付属物の関節のそれぞれについて、終了条件に達するまで、それぞれのｉ番目の反復についてのそれぞれの最近傍ポーズの対における前記関節のそれぞれの位置および向きの間を反復的に補間するステップをさらに有する、請求項２６に記載の方法。
【請求項２８】
前記終了条件はｎ番目の中間ポーズを得るように動作細分化粒度を満たす連続的に隣接するポーズ間の距離であり、
複数の前記反復に対して、前記終了条件に達したかどうかを決定するステップをさらに有する、請求項２７に記載の方法。
【請求項２９】
複数の前記ポーズの各々について、動力学ロボットモデル上で順方向動力学計算を実行して、前記ロボット付属物の各リンクの複数の変換を計算するステップをさらに含む、請求項２６に記載の方法。
【請求項３０】
前記ロボットの任意の部分が前記ロボットの他の部分と衝突するかどうかを決定するステップ、前記ロボットの任意の部分が任意の持続的障害物と衝突するかどうかを決定するステップ、又は、前記ロボットの任意の部分が任意の過渡的障害物と衝突するかどうかを決定するステップの少なくとも１つが、階層表現またはユークリッド距離場表現のうちの少なくとも１つに基づいて決定するステップを含む、請求項１〜２９のいずれかに記載の方法。
【請求項３１】
ロボットの動作計画に有用な衝突評価を生成するシステムであって、
前記システムは、
少なくとも１つのプロセッサと、
前記少なくとも１つのプロセッサに実行させるプロセッサ実行可能命令またはデータのうちの少なくとも１つを記憶する少なくとも１つの非一時的プロセッサ可読媒体であって、
少なくとも１つのプロセッサによって実行されたときに、前記少なくとも１つのプロセッサに、
ロボットの少なくとも第１の数のポーズの各々について、前記ロボットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットの他の部分と衝突するかどうかを決定するステップと、
前記ロボットの少なくとも第２の数のポーズの各々について、環境内の持続的障害物のセットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットが動作する前記環境内の任意の持続的障害物と衝突するかどうかを決定するステップであって、前記データ構造表現は前記第１の数の障害物の各々の前記障害物によって占められる前記環境内のそれぞれの体積が構成時に既知である前記第１の数の障害物の表現を含む、該ステップと、
前記ロボットの少なくとも第３の数のポーズの各々について、前記環境内の過渡的障害物のセットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記環境内の任意の過渡的障害物と衝突するかどうかを決定するステップであって、前記データ構造表現は、もし存在するのであれば前記第２の数の障害物の各々の前記障害物によって占有される前記環境内のそれぞれの体積が実行時の少なくとも一部で既知であり、前記障害物の各々によって占有される前記環境内のそれぞれの体積が構成時に不知である前記環境内の第２の数の障害物の表現を含む、該ステップと、
前記ポーズのうちの少なくとも１つについて衝突が検出されたかどうかを表す信号を提供するステップを実行させる非一時的プロセッサ可読媒体を有する、システム。
【請求項３２】
前記ロボットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットの他の部分と衝突するかどうかを決定するために、前記少なくとも１つのプロセッサは、ロボット付属物の少なくとも一部が第１のポーズで前記ロボット付属物の他の部分と衝突するかどうかを決定する、請求項３１に記載のシステム。
【請求項３３】
前記ロボットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットの他の部分と衝突するかどうかを決定するために、前記少なくとも１つのプロセッサは、ロボット付属物の少なくとも一部が第１のポーズと第２のポーズとの間で移動する際に前記ロボット付属物の他の部分と衝突するかどうかを決定する、請求項３１に記載のシステム。
【請求項３４】
前記環境内の持続的障害物のセットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットが動作する前記環境内の任意の持続的障害物と衝突するかどうかを決定するために、前記少なくとも１つのプロセッサは、ロボット付属物の少なくとも一部が第１のポーズで前記環境内の任意の持続的障害物と衝突するか否かを決定する、請求項３１に記載のシステム。
【請求項３５】
前記環境内の持続的障害物のセットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットが動作する前記環境内の任意の持続的障害物と衝突するかどうかを決定するために、前記少なくとも１つのプロセッサは、第１のポーズと第２のポーズの間を移動する際にロボット付属物の少なくとも一部が前記環境内の任意の持続的障害物と衝突するか否かを決定する、請求項３１に記載のシステム。
【請求項３６】
前記環境内の過渡的障害物のセットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットが動作する前記環境内の任意の過渡的障害物と衝突するかどうかを決定するために、前記少なくとも１つのプロセッサは、ロボット付属物の少なくとも一部が第１のポーズで前記環境内の任意の過渡的障害物と衝突するか否かを決定する、請求項３１に記載のシステム。
【請求項３７】
前記環境内の過渡的障害物のセットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットが動作する前記環境内の任意の過渡的障害物と衝突するかどうかを決定するために、前記少なくとも１つのプロセッサは、第１のポーズと第２のポーズとの間を移動する際にロボット付属物の少なくとも一部が前記環境内の任意の過渡的障害物に衝突するか否かを決定する、請求項３１に記載のシステム。
【請求項３８】
前記少なくとも１つのプロセッサ実行可能命令またはデータの実行はさらに、前記少なくとも１つのプロセッサに、
構成時に、
動力学モデルによって表されるロボットについて、前記ロボットの前記データ構造表現を生成するステップと、
前記環境について、前記環境内の前記持続的障害物のセットの前記データ構造表現を生成するステップをさらに実行させ、
前記データ構造表現が、前記第１の数の障害物の各々の障害物によって占められる前記環境内のそれぞれの体積が構成時に既知である前記第１の数の障害物の表現を含む、請求項３１に記載のシステム。
【請求項３９】
前記少なくとも１つのプロセッサは、前記環境内の前記持続的障害物のセットの前記データ構造表現を生成するために、境界体積の階層を生成する、請求項３８に記載のシステム。
【請求項４０】
前記少なくとも１つのプロセッサは、境界体積の階層を生成するために、リーフノードとして三角形メッシュを有する境界ボックスの階層を生成する、請求項３９に記載のシステム。
【請求項４１】
前記少なくとも１つのプロセッサは、境界体積の階層を生成するために、球体の階層を生成する、請求項３９に記載のシステム。
【請求項４２】
前記少なくとも１つのプロセッサは、境界体積の階層を生成するために、ｋ−ａｒｙ球ツリーを生成する、請求項３９に記載のシステム。
【請求項４３】
前記少なくとも１つのプロセッサは、境界体積の階層を生成するために、軸整列境界ボックスの階層を生成する、請求項３９に記載のシステム。
【請求項４４】
前記少なくとも１つのプロセッサは、境界体積の階層を生成するために、指向性境界ボックスの階層を生成する、請求項３９に記載のシステム。
【請求項４５】
前記少なくとも１つのプロセッサは、前記環境内の前記持続的障害物のセットの前記データ構造表現を生成するために、前記環境内の前記持続的障害物のセットを表すボクセル占有情報を記憶するオクツリーを生成する、請求項３８に記載のシステム。
【請求項４６】
前記少なくとも１つのプロセッサは、前記ロボットの前記データ構造表現を生成するために、ｋ−ａｒｙツリーを生成する、請求項３８に記載のシステム。
【請求項４７】
前記少なくとも１つのプロセッサは、前記ロボットの前記データ構造表現を生成するために、前記ロボットの複数のリンクのそれぞれについて、それぞれのｋ−ａｒｙツリーを生成する、請求項３８に記載のシステム。
【請求項４８】
前記少なくとも１つのプロセッサは、前記ロボットの前記データ構造表現を生成するために、前記ロボットの複数のリンクのそれぞれについて、それぞれの８−ａｒｙツリーを生成する、請求項３８に記載のシステム。
【請求項４９】
前記少なくとも１つのプロセッサは、前記ロボットの前記データ構造表現を生成するために、前記ロボットの複数のリンクのそれぞれについて、４以上のツリー深さを有するそれぞれの８−ａｒｙツリーを生成する、請求項３８に記載のシステム。
【請求項５０】
前記少なくとも１つのプロセッサは、前記ロボットの前記データ構造表現を生成するために、前記ロボットの複数のリンクのそれぞれについて、それぞれのｋ−ａｒｙツリーを生成し、前記ｋ−ａｒｙツリーの各ノードは前記それぞれの球体の任意の部分が占有されている場合に占有されていると識別される球体である、請求項３８に記載のシステム。
【請求項５１】
前記少なくとも１つのプロセッサ実行可能命令またはデータの実行はさらに、前記少なくとも１つのプロセッサに、
実行時に、前記環境内の過渡的障害物のセットの前記データ構造表現を生成するステップであって、前記データ構造表現はもし存在するのであれば前記第２の数の障害物の各々によって占有される前記環境内のそれぞれの体積が前記実行時の少なくとも一部で既知であり、前記障害物の各々によって占有される前記環境内のそれぞれの体積が前記構成時に不知である前記過渡的障害物の表現を含む、該ステップをさらに実行させ、
前記ロボットの任意の部分が前記ロボットの他の部分と衝突するかどうかを決定するステップ、前記ロボットの任意の部分が環境内の任意の持続的障害物と衝突するかどうかを決定するステップ及び前記ロボットの任意の部分が前記環境内の任意の過渡的障害物と衝突するかどうかを決定するステップがすべて前記実行時に行われる、請求項３１に記載のシステム。
【請求項５２】
前記少なくとも１つのプロセッサ実行可能命令またはデータの実行はさらに、前記少なくとも１つのプロセッサに、
もし存在するのであれば前記環境内の前記過渡的障害物を表すセンサ情報を受信するステップと、
前記センサ情報を占有情報に変換するステップをさらに実行させ、
前記環境内の前記過渡的障害物のセットの前記データ構造表現を生成するために、前記少なくとも１つのプロセッサは、前記占有情報から前記環境内の前記過渡的障害物のセットの前記データ構造表現を生成する、請求項５１に記載のシステム。
【請求項５３】
前記少なくとも１つのプロセッサ実行可能命令またはデータの実行はさらに、前記少なくとも１つのプロセッサに、
複数のリンクと、前記リンクのそれぞれの対の間の複数の関節を有するロボット付属物の形態で前記ロボットを表す動力学モデルを受信するステップと、
前記環境内の前記持続的障害物のセットのそれぞれの位置を表す占有情報を受信するステップと、
動作計画に使用される動作細分化粒度を表す少なくとも１つの値を受信するステップを実行させる、請求項３１に記載のシステム。
【請求項５４】
前記動力学モデル、前記占有情報、動作細分化粒度を表す前記少なくとも１つの値がすべて前記構成時に受信され、
前記少なくとも１つのプロセッサ実行可能命令またはデータの実行はさらに、前記少なくとも１つのプロセッサに、
前記ロボットの前記動力学モデルに基づいて、前記構成時に前記ロボットの前記データ構造表現を生成するステップと、
前記構成時に前記環境内の前記持続的障害物のセットの前記データ構造表現を生成するステップをさら実行させ、
前記データ構造表現は、前記第１の数の障害物の前記障害物の各々が占める前記環境内の各体積が前記構成時に既知である前記第１の数の障害物の表現を含む、請求項５３に記載のシステム。
【請求項５５】
前記少なくとも１つのプロセッサ実行可能命令またはデータの実行は、前記少なくとも１つのプロセッサに、
実行時に、前記環境内の過渡的障害物のセットの前記データ構造表現を生成するステップであって、前記データ構造表現はもし存在するのであれば前記第２の数の障害物の各々によって占有される前記環境内のそれぞれの体積が前記実行時の少なくとも一部で既知であり、前記障害物の各々によって占有される前記環境内のそれぞれの体積が前記構成時に不知である前記過渡的障害物の表現を含む、該ステップをさらに実行させる、請求項５４に記載のシステム。
【請求項５６】
前記ロボットが、ロボット付属物を含み、
前記少なくとも１つのプロセッサ実行可能命令またはデータの実行は、前記少なくとも１つのプロセッサに、
前記ロボット付属物の第１のポーズと前記ロボット付属物の第２のポーズの間の前記ロボット付属物の動作について、前記ロボット付属物のＣ空間における前記ロボット付属物の前記第１のポーズと前記第２のポーズの間の複数の中間ポーズを、前記Ｃ空間において連続的に隣接するポーズの複数の対の間の距離が前記動作細分割粒度についての受信値を満たすまで計算するステップをさらに実行させる、請求項３１に記載のシステム。
【請求項５７】
前記ロボット付属物の複数の中間ポーズを計算するために、前記少なくとも１つのプロセッサは、
前記ロボット付属物の関節のそれぞれについて、前記第１および前記第２のポーズにおける前記関節のそれぞれの位置および向きの間を補間してｎ番目の中間ポーズを取得するステップと、
前記ロボット付属物の関節のそれぞれについて、終了条件に達するまで、それぞれのｉ番目の反復についてのそれぞれの最近傍ポーズの対における前記関節のそれぞれの位置および向きの間を反復的に補間するステップを実行する、請求項５６に記載のシステム。
【請求項５８】
前記終了条件はｎ番目の中間ポーズを得るように動作細分化粒度を満たす連続的に隣接するポーズ間の距離であり、
前記プロセッサ実行可能命令またはデータのうちの前記少なくとも１つの実行は、前記少なくとも１つのプロセッサに、複数の前記反復に対して、前記終了条件に達したかどうかを決定するステップをさらに実行させる、請求項５７に記載のシステム。
【請求項５９】
前記少なくとも１つのプロセッサ実行可能命令またはデータの実行はさらに、前記少なくとも１つのプロセッサに、
複数の前記ポーズの各々について、動力学ロボットモデル上で順方向動力学計算を実行して、前記ロボット付属物の各リンクの複数の変換を計算するステップをさらに実行させる、請求項５６に記載のシステム。
【請求項６０】
前記ロボットの任意の部分が前記ロボットの他の部分と衝突するかどうかの決定、前記ロボットの任意の部分が任意の持続的障害物と衝突するかどうかの決定、又は、前記ロボットの任意の部分が任意の過渡的障害物と衝突するかどうかの決定の少なくとも１つが、階層表現またはユークリッド距離場表現のうちの少なくとも１つに基づく決定を含む、請求項３１〜５９のいずれかに記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は一般に、ロボット動作計画に関し、特に、ロボット等を駆動する動作計画を生成するために、プロセッサ回路を介して衝突検出を実行するシステムおよび方法に関する。
【背景技術】
【０００２】
ロボット制御やロボット工学において、動作計画（又は、モーションプランニング／モーションプラン／運動計画／motion planning）は基本的な問題である。動作計画は、ロボットがスタート状態からゴール状態に追従できる経路を完全に指定する。通常、動作環境では障害物に衝突せず、動作環境では障害物に衝突する可能性が少なくなる。動作計画への挑戦は、環境の特性が変更しても、非常に速い速度で動作計画を実行する能力を含む。例えば、環境内の１つまたは複数の障害物の位置または形状などの特性は、経時的に変化することがある。また、例えば、ロボット自体の一部の位置又は形状のような特性は経時的に変化する場合があり、例えば、エンドエフェクタ又はアームツールのエンドは、ガスピング（又は、把持／gasping／grasping）構成及び把持構成を有することができる。課題は更に、比較的低コストの機器を使用し、比較的低エネルギー消費で、限られた量の記憶（例えば、メモリ回路、例えば、プロセッサチップ回路上）で動作計画を実行することを含む。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
動作計画の問題を解くために、多種多様なアルゴリズムが使用される。これらのアルゴリズムの各々は、典型的にはロボットの所与の姿勢または１つの姿勢から別の姿勢への運動がロボット自体または環境内の障害物のいずれかとの衝突をもたらすかどうかを決定することができる必要がある。
【課題を解決するための手段】
【０００４】
本明細書で説明される衝突検出ハードウェア、ソフトウェア、および／またはファームウェアは単一のロボット姿勢、または１つの姿勢（例えば、開始姿勢）から別の姿勢（例えば、終了姿勢）へのロボットの動きによって、ロボットが、それ自体、またはロボットが動作する現在の環境内の任意の障害物と衝突するかどうかを判定または計算することができる。環境は衝突の危険性を示す物体（例えば、無生物の物体、人間および他の動物を含む生命の物体）である障害物を含むことができる。環境は１つ以上の目標物（又は、目標物体／対象物／ターゲットオブジェクト）、すなわち、ロボットが係合すべき物体を含んでも含まなくてもよい。障害物のいくつかについては、障害物によって占められるそれぞれの体積（又は、ボリューム／volume）が動作計画者のモデルまたは計算回路が構成される時間、構成時間として表記される時間、およびロボット動作を通じて固定されるかまたは変更されないままであると予想される時間、実行時（又は、ランタイム／run time）として表記される時間において既知である。これらの障害物は障害物が占める体積が構成時（又は、準備段階／configuration time）に既知であり、実行時間を通して固定されたままであるか、または変化しないままであることが予想されるので、持続的障害物と呼ばれる。他の障害物については、障害物が占めるそれぞれのボリュームが構成時には知られておらず、実行時にのみ決定される。これらの障害物は、構成時に障害物が占める体積が分からないため、過渡的障害物（又は、一時的障害物／過渡的障害物／transient obstacles）と呼ばれる。これらの過渡的障害物のうちの１つまたは複数によって占有されるそれぞれの容積は、時間の経過に伴って固定または非移動または非変化であってもよく、静的障害物と呼ばれてもよい。これらの過渡的障害物のうちの１つまたは複数によって占有されるそれぞれの体積は時間の経過とともに移動または変化し、動的障害物と呼ばれることがある。
【０００５】
本明細書で説明される衝突検出ハードウェア、ソフトウェア、および／またはファームウェアは例えば、確率的ロードマップ（ＰＲＭ）、迅速探索ランダムツリー（ＲＲＴ）、ＲＲＴ＊、双方向ＲＲＴなどのアルゴリズムなど、様々な異なる動作計画アルゴリズムによって呼び出され、または呼び出され得るサブルーチンまたは関数として実装され得る。本明細書で説明する衝突検出ハードウェア、ソフトウェア、および／またはファームウェアは、多くの候補把持ポーズを迅速に評価することによって把持計画を加速するために使用することもできる。
【０００６】
本明細書で説明される様々な実装形態は、典型的には２つまたは３つの構成時間入力、ｉ）ロボットの動力学モデル（運動力学的モデル／kinetic model）、ｉｉ）構成時に環境内で占める既知の体積を有する環境内の持続的障害物の表現、および任意選択で、動作細分粒度値または仕様を使用する。ロボットの動力学モデルはロボットの多数の関節のいずれかに関する拘束（例えば、エルボー関節の最小および最大角度）、ロボットの各リンクからロボットのそれぞれの親リンクへの変換、ロボットの各関節の軸、およびロボットの各リンクの幾何学の仕様を含む。
【０００７】
本明細書で説明される様々な実装形態は、典型的には２つまたは３つの実行時入力、すなわちａ）開始ポーズ、ｂ）動作が評価されている場合に任意選択で終了ポーズ、および実行時に環境内で占有する既知の体積を有する環境内の過渡的障害物の表現、および構成時に環境内で占有する体積が未知である（又は、不知である）環境内の過渡的障害物の表現を使用する。過渡的障害物は静的（すなわち、固定されているか、移動していないか、または、関連する期間または実行期間中に形状を変化させない）または動的（すなわち、関連する期間または実行期間の少なくとも一部の間に形状を移動または変化させる）であってもよい。数Ｄの自由度を有するロボットの場合、ポーズ（又は、姿勢）はＤタプル（又は、Ｄ−ｔｕｐｌｅ）として指定されてもよく、タプルの各要素は、その自由度（関節）の位置または回転を指定する。
【０００８】
衝突検出のための効率的なハードウェアの実装は、物体、ポーズ、および／または動作（又は、動き／motion）を表すためのデータ構造の選択に注意深く注意を払うことによって実現することができる。適切に選択されたデータ構造は、記憶に必要なメモリの量、衝突検出に必要なハードウェアの量、衝突検出を実行するための待ち時間、および電力消費を有利に低減することができる。当業者であれば、本明細書の教示に基づいて他の構造を使用することができることを理解するであろうが、適切であり得るいくつかの例示的なデータ構造が本明細書で説明される。様々なオプションがあり、各オプションは、衝突検出の待ち時間、データ構造を構築するための待ち時間、および表現されるオブジェクトの幾何学的形状に対するデータ構造の適合性の間のそれぞれのトレードオフに関連付けられる。
【０００９】
ロボットの動作計画に有用なプロセッサベースのシステムの少なくとも１つのコンポーネントの動作方法はロボットの少なくとも第１の数のポーズの各々について、回路の少なくとも１つのセットによって、ロボットの任意の部分がロボットのデータ構造表現に少なくとも部分的に基づいてロボットの別の部分と衝突するかどうかを決定するステップと、ロボットの少なくとも第２の数のポーズの各々について、回路の少なくとも１つのセットによって、ロボットの任意の部分が環境内の持続的障害物のセットのデータ構造表現に少なくとも部分的に基づいてロボットが動作する環境内の任意の持続的障害物と衝突するかどうかを決定するステップであって、データ構造表現は第１の数の障害物の各々によって占められる環境内のそれぞれの体積が構成時に既知である第１の数の障害物の表現を含む、該ステップと、ロボットの少なくとも第３の数のポーズの各々について、
ロボットの任意の部分が環境内の過渡的な障害物のセットのデータ構造表現に少なくとも部分的に基づいて環境内の任意の過渡的な障害物と衝突するかどうかを決定するステップであって、データ構造表現は環境内の第２の数の障害物（存在する場合）の表現を含み、その表現について、第２の数の障害物のうちの障害物のそれぞれによって占有される環境内のそれぞれの体積が実行時間の少なくともいくつかの部分の間に知られており、障害物のそれぞれによって占有される環境内のそれぞれの体積が構成時に不知である、該ステップと、ポーズのうちの少なくとも１つについて衝突が検出されたかどうかを表す信号を提供するステップを含むものとして要約されてもよい。
【００１０】
ロボットのデータ構造表現に少なくとも部分的に基づいて、ロボットの任意の部分がロボットの別の部分と衝突するか否かを判断するステップは、ロボット付属物の少なくとも一部が第１のポーズにおいて、ロボット付属物の別の部分と衝突するか否かを判断するステップを含み得る。ロボットのデータ構造表現に少なくとも部分的に基づいて、ロボットの任意の部分がロボットの別の部分と衝突するか否かを判断するステップは、ロボット付属物の少なくとも一部が第１のポーズと第２のポーズとの間を移動する際に、ロボット付属物の別の部分と衝突するか否かを判断するステップを含み得る。ロボットの任意の部分が環境内の持続的障害物のセットのデータ構造表現に少なくとも部分的に基づいて、ロボットが動作する環境内の任意の持続的障害物と衝突するかどうかを判断するステップは、ロボット付属物の少なくとも一部が第１のポーズ内の環境内の任意の持続的障害物と衝突するかどうかを判断するステップを含み得る。ロボットの任意の部分が環境内の持続的障害物のセットのデータ構造表現に少なくとも部分的に基づいて、ロボットが動作する環境内の任意の持続的障害物と衝突するかどうかを判断するステップは、ロボット付属物の少なくとも一部が第１のポーズと第２のポーズとの間を移動する際に環境内の任意の持続的障害物と衝突するかどうかを判断するステップを含み得る。環境内の過渡的障害物のセットのデータ構造表現に少なくとも部分的に基づいて、ロボットが動作する環境内の任意の過渡的障害物にロボットの任意の部分が衝突するかどうかを判断するステップは、ロボット付属物の少なくとも一部が第１のポーズ内の環境内の任意の過渡的障害物に衝突するかどうかを判断するステップを含み得る。環境内の過渡的障害物のセットのデータ構造表現に少なくとも部分的に基づいてロボットが動作する環境内の任意の過渡的障害物にロボットの任意の部分が衝突するかどうかを判断するステップは、第１のポーズと第２のポーズとの間を移動する際に環境内の任意の過渡的障害物にロボット付属物の少なくとも一部が衝突するかどうかを判断するステップを含み得る。
【００１１】
本方法は構成時間中に、動力学モデルによって表されるロボットについて、ロボットのデータ構造表現を生成するステップと、環境について、環境における持続的障害物の設定のデータ構造表現を生成するステップであって、データ構造表現が、構成時に第１の数の障害物の各々によって占められる環境内のそれぞれの体積が既知である障害物の第１の数の表現を含む、該ステップとをさらに含むことができる。環境における持続的障害の集合のデータ構造表現を生成するステップは、境界体積の階層を生成するステップを含むことができる。境界体積の階層を生成するステップは、三角メッシュをリーフノードとする境界ボックスの階層を生成するステップを含むことができる。境界体積の階層を生成するステップは、球体（又は、球）の階層を生成するステップを含み得る。境界体積の階層を生成するステップは、ｋ−ａｒｙ（又は、ｋ進／ｋ値）球ツリーを生成するステップを含むことができる。境界体積の階層を生成するステップは、軸整列境界ボックスの階層を生成するステップを含むことができる。境界体積の階層を生成するステップは、指向性境界ボックスの階層を生成するステップを含むことができる。環境内の持続的障害物のセットのデータ構造表現を生成するステップは、環境内の持続的障害物のセットを表すボクセル占有情報を記憶する八分木を生成するステップを含むことができる。ロボットのデータ構造表現を生成するステップは、ｋ−ａｒｙ木を生成するステップを含み得る。ロボットのデータ構造表現を生成するステップは、ロボットの多数のリンクのそれぞれに対して含むことができ、それぞれのｋ−ａｒｙ木を生成する。ロボットのデータ構造表現を生成するステップは、ロボットの多数のリンクのそれぞれに対して含むことができ、それぞれの８−ａｒｙツリーを生成する。ロボットのデータ構造表現を生成するステップは、ロボットの多数のリンクの各々について、４以上のツリー深さを有するそれぞれの８−ａｒｙツリーを生成するステップを含むことができる。ロボットのデータ構造表現を生成するステップはロボットの多数のリンクのそれぞれに対して含むことができ、それぞれのｋ−ａｒｙツリーを生成し、ここで、ｋ−ａｒｙツリーの各ノードはそれぞれの球体のいずれかの部分が占有されている場合に占有されていると識別される球体である。
【００１２】
本方法は実行時に、環境について、環境内の過渡的な障害物のセットのデータ構造表現を生成するステップであって、データ構造表現はもし存在するならば第２の数の障害物のそれぞれによって占有される環境内のそれぞれの体積が実行時の少なくとも一部の間に知られており、かつ、障害物のそれぞれによって占有される環境内のそれぞれの体積が構成時に不知である過渡的な障害物の表現である、該ステップをさらに含むことができ、ロボットの任意の部分がロボットの別の部分と衝突するかどうかを判定するステップと、ロボットの任意の部分が環境内の任意の持続的な障害物と衝突するかどうかを判定するステップと、ロボットの任意の部分が環境内の任意の過渡的な障害物と衝突するかどうかを判定するステップのすべてが実行時に発生し得る。
【００１３】
本方法は環境内に過渡的障害物が存在する場合、それを表すセンサ情報を受信するステップと、センサ情報を占有情報に変換するステップをさらに含むことができ、環境内の過渡的障害物のセットのデータ構造表現を生成するステップは占有情報から環境内の過渡的障害物のセットのデータ構造表現を生成するステップを含むことができる。
【００１４】
本方法はさらに、複数のリンクおよび複数の関節を有するロボット付属物の形態でロボットを表す動力学モデルを受信するステップと、リンクのそれぞれの対の間の関節を受信するステップと、環境内の持続的障害物のセットのそれぞれの位置を表す占有情報を受信するステップと、動作計画に使用される動作細分粒度を表す少なくとも１つの値を受信するステップを含むことができる。
【００１５】
動力学モデルを受信するステップ、占有情報を受信するステップ、および運動細分性を表す少なくとも１つの値を受信するステップはすべて構成時間中に発生することができ、ロボットの動力学モデルに基づいて構成時間中にロボットのデータ構造表現を生成するステップ、および構成時間中に環境内の持続的障害物のセットのデータ構造表現を生成するステップをさらに含むことができ、データ構造表現は構成時間中に第１の数の障害物のそれぞれによって占有される環境内のそれぞれの体積が構成時間中に既知である第１の数の障害物の表現を含み得る。
【００１６】
本方法は実行時に環境内の過渡的障害物のセットのデータ構造表現を生成するステップをさらに含むことができ、データ構造表現は存在する場合には、第２の数の障害物のそれぞれによって占有される環境内のそれぞれの体積が実行時の少なくとも一部の間に知られ、障害物のそれぞれによって占有される環境内のそれぞれの体積が、構成時に不知である過渡的障害物の表現を含み得る。
【００１７】
ロボットはロボット付属物を含むことができ、ロボット付属物の第１のポーズとロボット付属物の第２のポーズとの間のロボット付属物の動作について、Ｃ空間内の連続的に隣接するポーズのいくつかの対の間の次元が動作細分粒度の受信値を満たすまで、ロボット付属物の複数の中間ポーズを計算するステップをさらに含むことができ、ロボット付属物のＣ空間内のロボット付属物の第１のポーズと第２のポーズとの間の複数の中間ポーズは、ロボット付属物のＣ空間内にある。ロボット付属物の複数の中間ポーズを計算するステップは、ロボット付属物の関節の各々について、ｎ番目の中間ポーズを得るために第１および第２のポーズにおける関節についてのそれぞれの位置および向きの間を補間するステップと、終了条件に達するまで、それぞれのｉ番目の反復について、それぞれの最近傍ポーズのそれぞれの対における関節についてのそれぞれの位置および向きの間を反復的に補間するステップとを含むことができる。
【００１８】
終了条件は、ｎ番目の中間ポーズを得るために動作細分化粒度を満たす、連続的に隣接するポーズ間の距離であってもよく、終了条件に到達したかどうかを判定するステップを、反復の回数に対してさらに含んでもよい。
【００１９】
本方法はさらに、複数のポーズのそれぞれに対して、運動学ロボットモデル上で前方運動学を実行して、ロボット付属物の各リンクの多数の変換を計算し、Ｃ空間から自由空間（例えば、３次元環境）へポーズまたはモーションをマッピングするステップを含んでもよい。
【００２０】
ロボットの任意の部分がロボットの別の部分と衝突するかどうかを決定するステップ、ロボットの任意の部分が任意の持続的な障害物と衝突するかどうかを決定するステップ、またはロボットの任意の部分が任意の過渡的な障害物と衝突するかどうかを決定するステップのうちの任意の１つまたは複数は、階層表現またはユークリッド距離場表現に基づいてもよい。
【００２１】
ロボット工学のための動作計画に有用な衝突評価を生成するシステムは少なくとも１つのプロセッサと、少なくとも１つのプロセッサによって実行されるときに、少なくとも１つのプロセッサに、ロボットの少なくとも第１の数のポーズのそれぞれについて、ロボットの任意の部分がロボットのデータ構造表現に少なくとも部分的に基づいてロボットの別の部分と衝突するかどうかを判定させるステップと、ロボットの少なくとも第２の数のポーズのそれぞれについて、ロボットの任意の部分が環境内の持続的障害物のセットのデータ構造表現に少なくとも部分的に基づいて動作する環境内の任意の持続的障害物と衝突するかどうかを判定するステップであって、データ構造表現は、第１の数の障害物のそれぞれの障害物のそれぞれによって占有される環境内のそれぞれの体積が構成時に既知である第１の数の障害物の表現を含む、該ステップと、ロボットの少なくとも第３の数のポーズの各々について、ロボットの任意の部分が環境内の過渡的な障害物のセットのデータ構造表現の少なくとも一部に基づいて、環境内の任意の過渡的な障害物と衝突するかどうかを判定するステップであって、データ構造表現は環境内の第２の数の障害物（存在する場合）の表現を含み、第２の数の障害物の各々によって占有される環境内のそれぞれの体積は実行時間の少なくとも一部の間に既知であり、障害物の各々によって占有される環境内のそれぞれの体積は構成時に不知である、該ステップと、ポーズの少なくとも１つについて衝突が検出されたかどうかを表す信号を提供するステップを実行させるプロセッサ実行可能命令またはデータのうちの少なくとも１つを記憶する少なくとも１つの非一時的プロセッサ可読媒体を含むものとして要約されてもよい。
【００２２】
ロボットのデータ構造表現に少なくとも部分的に基づいて、ロボットの任意の部分がロボットの別の部分と衝突するかどうかを判定するために、少なくとも１つのプロセッサは、ロボット付属物の少なくとも一部が第１のポーズでロボット付属物の別の部分と衝突するかどうかを判定することができる。ロボットのデータ構造表現に少なくとも部分的に基づいて、ロボットの任意の部分がロボットの別の部分と衝突するかどうかを判定するために、少なくとも１つのプロセッサは、ロボット付属物の少なくとも一部が第１のポーズと第２のポーズとの間で移動する際にロボット付属物の別の部分と衝突するかどうかを判定することができる。ロボットの任意の部分がロボットが動作する環境内の任意の持続的障害物と衝突するかどうかを、環境内の持続的障害物のセットのデータ構造表現に少なくとも部分的に基づいて判定するために、少なくとも１つのプロセッサは、ロボット付属物の少なくとも一部が第１のポーズで環境内の任意の持続的障害物と衝突するかどうかを判定することができる。ロボットの任意の部分がロボットが動作する環境内の任意の持続的障害物と衝突するかどうかを、環境内の持続的障害物のセットのデータ構造表現に少なくとも部分的に基づいて判定するために、少なくとも１つのプロセッサは、ロボット付属物の少なくとも一部が第１のポーズと第２のポーズとの間で移動する際に環境内の任意の持続的障害物と衝突するかどうかを判定することができる。ロボットの任意の部分がロボットが動作する環境内の任意の過渡的障害物と衝突するかどうかを、環境内の過渡的障害物のセットのデータ構造表現に少なくとも部分的に基づいて判定するために、少なくとも１つのプロセッサは、ロボット付属物の少なくとも一部が第１のポーズで環境内の任意の過渡的障害物と衝突するかどうかを判定することができる。ロボットの任意の部分がロボットが動作する環境内の任意の過渡的障害物と衝突するかどうかを、環境内の過渡的障害物のセットのデータ構造表現に少なくとも部分的に基づいて判定するために、少なくとも１つのプロセッサは、ロボット付属物の少なくとも一部が第１のポーズと第２のポーズとの間を遷移する際に環境内の任意の過渡的障害物と衝突するかどうかを判定することができる。
【００２３】
プロセッサ実行可能命令またはデータのうちの少なくとも１つの実行はさらに、少なくともプロセッサに、構成時間中に、動力学モデルによって表されるロボットのために、ロボットのデータ構造表現を生成させ、環境のために、環境内の持続的障害物のセットのデータ構造表現を生成させてもよく、データ構造表現は、第１の数の障害物のうちの第１の数の障害物のうちの障害物のそれぞれによって占有される環境内のそれぞれの体積が構成時に既知で第１の数の障害物の表現を含む。環境における持続的障害の集合のデータ構造表現を生成するために、少なくとも１つのプロセッサは、境界体積の階層を生成することができる。境界体積の階層を生成するために、少なくとも１つのプロセッサは、三角メッシュをリーフノードとする境界ボックスの階層を生成してもよい。境界体積の階層を生成するために、少なくとも１つのプロセッサは球の階層を生成してもよい。境界体積の階層を生成するために、少なくとも１つのプロセッサは、ｋ−ａｒｙ球ツリーを生成することができる。境界体積の階層を生成するために、少なくとも１つのプロセッサは、軸に整列された境界ボックスの階層を生成することができる。境界体積の階層を生成するために、少なくとも１つのプロセッサは、指向性境界ボックスの階層を生成することができる。環境内の持続的障害物のセットのデータ構造表現を生成するために、少なくとも１つのプロセッサは、環境内の持続的障害物のセットを表すボクセル占有情報を記憶する八分木を生成することができる。ロボットのデータ構造表現を生成するために、少なくとも１つのプロセッサは、ｋ−ａｒｙツリーを生成することができる。ロボットのデータ構造表現を生成するために、少なくとも１つのプロセッサは、ロボットのいくつかのリンクのそれぞれについて、それぞれのｋ−ａｒｙツリーを生成することができる。ロボットのデータ構造表現を生成するために、少なくとも１つのプロセッサは、ロボットのいくつかのリンクのそれぞれについて、それぞれの８−ａｒｙツリーを生成することができる。ロボットのデータ構造表現を生成するために、少なくとも１つのプロセッサは、ロボットのいくつかのリンクのそれぞれについて、４以上のツリー深さを有するそれぞれの８−ａｒｙツリーを生成することができる。ロボットのデータ構造表現を生成するために、少なくとも１つのプロセッサはロボットのいくつかのリンクのそれぞれについてそれぞれのｋ−ａｒｙツリーを生成することができ、ｋ−ａｒｙツリーの各ノードは、それぞれの球の任意の部分が占有されている場合に占有されていると識別される球である。
【００２４】
プロセッサ実行可能命令またはデータのうちの少なくとも１つの実行は少なくともプロセッサに、実行時間中に、環境内の過渡的障害物のセットのデータ構造表現を生成させるステップであって、データ構造表現は第２の数の障害物のそれぞれによって占有される環境内のそれぞれの体積が実行時間の少なくとも一部分中に既知であり、各障害物によって占有される環境内のそれぞれの体積が構成時に不知である過渡的障害物の表現を含む該ステップをさらに含むことができ、ロボットのいずれかの部分がロボットの別の部分と衝突するかどうかの判定、ロボットのいずれかの部分が環境内のいずれかの持続的障害物と衝突するかどうかの判定、およびロボットのいずれかの部分が環境内のいずれかの過渡的障害物と衝突するかどうかの判定はすべて、実行時間中に行われ得る。
【００２５】
プロセッサ実行可能命令またはデータのうちの少なくとも１つの実行は少なくとも１つのプロセッサに、環境内に過渡的障害物が存在する場合、それを表すセンサ情報を受信させ、センサ情報を占有情報に変換させ、環境内の過渡的障害物のセットのデータ構造表現を生成させることができ、少なくとも１つのプロセッサは、占有情報から環境内の過渡的障害物のセットのデータ構造表現を生成することができる。
【００２６】
プロセッサ実行可能命令またはデータのうちの少なくとも１つの実行はさらに、少なくともプロセッサに、複数のリンクおよび複数の関節を有するロボット付属物の形態でロボットを表す動力学モデルを受信させるステップであって、関節はリンクのそれぞれの対の間の関節である該ステップと、環境内の持続的障害物のセットのそれぞれの場所を表す占有情報を受信し、動作計画で使用されるべき動作細分性を表す少なくとも１つの値を受信するステップを実行させることができる。
【００２７】
動力学モデル、占有情報、および動作細分割粒度を表す少なくとも１つの値はすべて、構成時間中に受信されてもよく、プロセッサ実行可能命令またはデータのうちの少なくとも１つの実行は少なくともプロセッサに、ロボットの動力学モデルに基づいて、構成時間中にロボットのデータ構造表現を生成させ、構成時間中に環境内の持続的障害物のセットのデータ構造表現を生成させてもよく、データ構造表現は、第１の数の障害物のうちの障害物のそれぞれによって占有される環境内のそれぞれの体積が構成時間に既知である第１の数の障害物の表現を含み得る。
【００２８】
プロセッサ実行可能命令またはデータのうちの少なくとも１つの実行は少なくともプロセッサにさらに、実行時に環境内の過渡的障害物のセットのデータ構造表現を生成させることができ、データ構造表現はそれ（下記の過渡的障害物）が存在するのであれば、第２の数の障害物のうちの障害物のそれぞれによって占有される環境内のそれぞれの体積が実行時の少なくとも一部で既知であり、障害物のそれぞれによって占有される環境内のそれぞれの体積が構成時に不知である過渡的障害物の表現を含み得る。
【００２９】
ロボットはロボット付属物を含むことができ、プロセッサ実行可能命令またはデータのうちの少なくとも１つの実行は少なくともプロセッサに、ロボット付属物の第１のポーズとロボット付属物の第２のポーズとの間のロボット付属物の運動のために、ロボット付属物のＣ空間内のロボット付属物の第１のポーズと第２のポーズとの間の複数の中間ポーズを、Ｃ空間内の連続的に隣接するポーズのいくつかの対の間の次元が、動作細分粒度のための受信された値を満たすまで、計算させるステップをさらに引き起こすことができる。ロボット付属物の複数の中間ポーズを計算するために、少なくとも１つのプロセッサはロボット付属物の関節のそれぞれについて、第１および第２のポーズにおける関節のそれぞれの位置および向きの間を補間して、ｎ番目の中間ポーズを取得することができ、ロボット付属物の関節のそれぞれについて、終了条件に達するまで、それぞれのｉ番目の反復について、最近傍ポーズのそれぞれの対における関節のそれぞれの位置および向きの間を反復的に補間することができる。
【００３０】
終了条件は、ｎ番目の中間ポーズを得るための動作細分性粒度を満たす、連続して隣接するポーズ間の距離であってもよく、プロセッサ実行可能命令またはデータのうちの少なくとも１つの実行は少なくともプロセッサに、いくつかの反復について、終了条件に達したかどうかをさらに判定させてもよい。
【００３１】
プロセッサ実行可能命令またはデータのうちの少なくとも１つの実行はさらに、少なくともプロセッサに、いくつかのポーズのそれぞれについて、運動ロボットモデル上で順運動学を実行させて、Ｃ空間と自由空間との間のロボット付属物の各リンクのいくつかの変換を計算させてもよい。
【００３２】
ｉ）ロボットのいずれかの部分がロボットの他の部分と衝突するかどうか、ｉｉ）ロボットのいずれかの部分が何らかの持続的障害物と衝突するかどうか、またはｉｉｉ）ロボットのいずれかの部分が何らかの過渡的障害物と衝突するかどうかの判定のうちの１つ以上は、階層的表現またはユークリッド距離場表現に基づくことができる。
【００３３】
プロセッサ実行可能命令またはデータの少なくとも１つは、少なくとも１つのプロセッサによって実行されると、本明細書に記載する方法のいずれかを少なくとも１つのプロセッサにさらに実行させてもよい。
【図面の簡単な説明】
【００３４】
図面において、同一の参照番号は、同様の要素または作用を示す。図面における要素のサイズおよび相対位置は、必ずしも一定の縮尺で描かれてはいない。例えば、さまざまな要素の形状および角度は一定の縮尺で描かれず、これらの要素のいくつかは、図面を見やすくするために、随時適当に拡大および配置されている。さらに、描かれた要素の特定の形状は、特定の要素の実際の形状に関するいかなる情報も伝えることを意図しておらず、図面における認識を容易にするために単に選択されたものである。
図１は、１つの例示としての実装に従った、ロボット、ドライバ、動作計画システム、及び衝突検出システムを含むロボット制御システム、並びに他の構成要素、ロボットが動作することができる環境におけるロボットの概略図であり、その環境はいくつかの障害物の一部が持続的であり、他の障害物が過渡的なものであり、オプションとして、多数の目標物（又は、ターゲットオブジェクト）を含む。
図２は、１つの例示としての実装による、図１のロボット制御システムの機能ブロック図である。
図３は、１つの例示された実施形態による、図１の衝突検出システムの機能ブロック図である。
図４は、図１のロボットおよび環境の構成空間（Ｃ空間）の概略図であり、環境内の障害物の表現を有し、例示された一実施形態による、ロボットのポーズ間の衝突のない経路を表すエッジを有する計画グラフまたはロードマップを含む。
図５は、ロボット動力学モデルのデータ構造表現、環境内の持続的障害物および環境内の過渡的障害物を採用する衝突検出または予測を実行するための衝突検出システムにおける動作の高レベル方法を示すフロー図であり、１つの例示的実装によれば、動作計画システムを介して動作計画において採用可能な衝突検出を示す図である。
図６は、動力学モデルによって表されるロボットのデータ構造表現の生成を介して、動作計画および動作計画の生成を容易にするための衝突検出システムにおける動作方法を示す、低レベルフロー図である。
図７Ａは、例示された一実施形態による、環境内の持続性オブジェクトを表すための境界体積の階層の生成を介して動作計画および動作計画の生成を容易にするための衝突検出システムにおける低レベルの動作方法を示す流れ図である。
図７Ｂは、例示された一実施形態による、環境内の持続性オブジェクトを表すためのリーフノードとして三角形メッシュを有する境界ボックスの階層の生成を介して、動作計画および動作計画の生成を容易にするための衝突検出システムにおける低レベルの動作方法を示すフロー図である。
図７Ｃは、例示された一実施形態による、環境内の持続性オブジェクトを表すための球体の階層の生成を介して、動作計画および動作計画の生成を容易にするための、衝突検出システムにおける低レベルの動作方法を示す流れ図である。
図７Ｄは、例示された一実施形態による、環境内の持続的オブジェクトを表すためのｋ−ａｒｙ球ツリーの生成を介した、動作計画および動作計画の生成を容易にするための衝突検出システムにおける低レベルの動作方法を示す流れ図である。
図７Ｅは、例示された一実施形態による、環境内の持続性オブジェクトを表すための軸整列境界ボックスの階層の生成を介して、動作計画および動作計画の生成を容易にするための衝突検出システムにおける低レベルの動作方法を示すフロー図である。
図７Ｆは、例示された一実施形態による、環境内の持続性オブジェクトを表すための指向性境界ボックスの階層の生成を介して、動作計画および動作計画の生成を容易にするための衝突検出システムにおける低レベルの動作方法を示すフロー図である。
図７Ｇは、例示された一実施形態による、環境内の持続性オブジェクトを表すためにボクセル占有情報を記憶する八分木の生成を介して、動作計画および動作計画の生成を容易にするための衝突検出システムにおける低レベルの動作方法を示す流れ図である。
図８は１つの例示としての実施に従った、衝突検出システム２００における動作の低レベル方法８００を示すフロー図であり、環境のためのセンサデータを受信することにより、動作計画および動作計画の作成を容易にし、センサデータを、環境内の過渡オブジェクトの占有情報および生成データ構造表現に変換する。
図９は、例示された一実施形態による、ロボット付属物の動作の２つのポーズの間のロボット付属物の中間ポーズの計算を介して、動作計画および動作計画の作成を容易にするための、衝突検出システムにおける動作の低レベル方法９００を示すフロー図である。
図１０は、例示された一実施形態による、動作計画を容易にするための衝突検出システムにおける動作の低レベル方法１０００と、中間ポーズを決定するための反復ループの実行を介した動作計画の生成とを示すフロー図である。
図１１は、例示された一実施形態による、動作プランニングを容易にするための衝突検出システムにおける動作の低レベル方法１０００、および、ロボットのための変換を計算するために前方運動学を採用する動作プランの生成を示すフロー図である。
図１２は、例示された一実施形態による、ポーズにおけるロボットの一部分またはロボットの別の部分との自己衝突の評価を介して、動作計画および動作計画の生成を容易にするための、衝突検出システムにおける動作の低レベルの方法１０００を示す流れ図である。
図１３は、例示された一実施形態による、１つのポーズから別のポーズに移動するロボットの別の部分との一部またはロボットの自己衝突の評価を介して、動作計画の作成および動作計画の作成を容易にするための、衝突検出システムにおける動作の低レベルの方法１０００を示す流れ図である。
図１４Ａは、例示された一実施形態による、三角形メッシュとして表されるロボット付属物の一部の等角図である。
図１４Ｂ−１４Ｅは図１４Ａのロボット付属物の一部の等角図であり、図示された一実施形態による、深さ４の球ツリーの連続するレベルで表されるように描かれている。
図１５Ａは、例示された一実施形態による、複数の障害物（例えば、ポール（又は、極））を有するタスクを実行する、三角形メッシュによって表されるロボット付属物を有するロボットが実行する環境の等角図である。
図１５Ｂは、１つの例示としての実施形態に従った、ロボット付属物の表現が球体ツリーに変換された、図１５Ａの環境の等角図である。
【発明を実施するための形態】
【００３５】
種々の実施態様が正しく理解されるように、開示内容の詳細を以下に説明する。但し、当業者ならば、これら特定の細部の１つまたは２つ以上を欠いても、または他の方法、他の構成部材、他の材料でも実施が可能であることは容易に理解するところであろう。他の例では、コンピュータシステム、アクチュエータシステム、および／または通信ネットワークに関連する周知の構造は実施形態の説明を不必要に曖昧にすることを避けるために、詳細には示されておらず、または説明されていない。他の例では実施形態の説明を不必要に曖昧にすることを回避するために、１つまたは複数の対象などの知覚データおよびボリュメトリック表現を生成するための周知のコンピュータビジョン方法および技法は詳細には説明されていない。
【００３６】
本明細書及び特許請求の範囲において理由が必要ない限り、用語”を有する”及びその派生語は確定していない包括的な意味、即ち、”含む”であるとみなされるが、それに限定されるものではない
【００３７】
この明細書全体を通して、実施態様に関連して記載された特定の特徴、構造または特徴が少なくとも１つの実施または少なくとも１つの実施態様に含まれることを手段して、「１つの実施」または「実施」または「１つの実施」または「実施形態」に言及することしたがって、この明細書全体にわたって、様々な箇所における「１つの実施」または「実施」または「１つの実施における」または「実施形態」の表現は、必ずしもすべてが同じ実施または実施形態を言及しているわけではない。さらに、特定の特徴、構造、または特性は、１つまたは複数の実装形態または実施形態において任意の適切な方法で組み合わせることができる。
【００３８】
本明細書および添付の特許請求の範囲で使用されるように、単数形「ａ」、「ａｎ」、および「ｔｈｅ」は内容が別段の明確な指示をしない限り、複数の指示対象を含む。また、用語「または」は内容が別段の明確な指示をしない限り、「および／または」を含む意味で一般に使用されることにも留意されたい。
【００３９】
本明細書および添付の特許請求の範囲で使用されるように、用語は衝突が起こるか、または結果として起こるかのコンテキストで使用されるときに、いくつかの中間ポーズを介した２つのポーズ間の所与のポーズまたは移動がロボットの一部分と何らかの物体（例えば、ロボットの別の部分、持続的障害物、過渡的障害物、または現在目標とされている物体）との間の衝突をもたらすかどうかに関する評価または予測が行われることを決定し、決定し、決定することを意味する。
【００４０】
冒頭の説明及び要約は便宜上のものであり、本発明の範囲を表すものではなく、又は実施形態を意味するものでもない。
【００４１】
図１は、１つの例示としての実施形態に従った、ロボット１０２が動作し得る動作環境１００を示す。簡潔にするために、本明細書では、動作環境１００を環境１００と呼ぶ。環境１００は、ロボット１０２が動作して移動することができる二次元又は三次元空間を表す。環境１００は、図４を参照して以下に説明するロボットの「構成空間」または「Ｃ空間」とは異なることに留意されたい。
【００４２】
環境１００は、衝突の可能性のある領域を表す障害物１０６ａ〜１０６ｎ（まとめて１０６）を含むことができる。障害物（単数又は複数）１０６という用語は衝突の危険性を表す物体（例えば、無生物の物体、人間および他の動物を含む生物の物体）を示すために使用される。
【００４３】
これらの障害物１０６ａ、１０６ｂ、１０６ｃのいくつかは、静的な障害物または物体（すなわち、移動（すなわち、並進、回転）しない、または関連する期間または実行時間中に形状を変化させない障害物または物体、例えば、建物、木、岩、家具、台１０６ａ、１０６ｂ、支柱１０６ｃ、棚）の形態をとることができる。これらの障害物の中には、環境１００において動的障害物または物体１０６ｄ、１０６ｅ、１０６ｆ（すなわち、移動する障害物または物体（即ち、並進、回転））、または関連する期間または実行時の少なくとも一部の期間中に形状を変化させる物体、例えば、他のロボット、コンテナ１０６ｄ、１０６ｅ、車両１０６ｆ、人、動物、移動物１０６ｇの形態の車両またはロボット）のような形態をとるものもある。例えば、ペデスタル（又は、台座／pedestal）１０６ａ、１０６ｂおよび支持ポスト１０６ｃのセットは固定されていてもよく、または関連する期間（例えば、実行時間）にわたって移動または形状変化しなくてもよく、したがって、静的障害物１０６と見なされる。また、例えば、一組のコンテナ１０６ｄ、１０６ｅ、および例えば車両の形態の別のロボット（例えば、車輪付き自走式駆動トロリ）１０６ｆは関連する期間（例えば、走行時間）の間に、形状（例えば、傾斜）を移動または変更することができ、したがって、動的障害物１０６とみなされる。
【００４４】
障害物１０６ａ〜１０６ｃのいくつかについては、障害物によって占められるそれぞれの体積がモデルまたは計算回路が構成される時間、構成時間として表記される時間、およびロボット動作を通じて固定されたままであるかまたは変化しないことが期待される時間、すなわち実行時間として表記される時間において既知である。これらの障害物１０６ａ〜１０６ｃは障害物が占める体積が構成時間中にわかっており、実行時間を通して固定されたままであるか、または変更されないままであることが予想されるので、持続的障害物と呼ばれる。他の障害物１０６ｄ〜１０６ｆについては、障害物が占めるそれぞれの体積が構成時には知られておらず、実行時にのみ決定される。これらの障害物１０６ｄ〜１０６ｆは、構成時間中に障害物が占める体積が分からないため、過渡的障害物と呼ばれる。
【００４５】
環境１００は任意選択で、ロボット１０２が例えば、目標物１０８を把持し、目標物１０８を移動させ、さもなければ、目標物１０８に係合して、何らかの定義されたタスクまたは動作を実行することによって、相互作用することが意図される１つまたは複数の目標物１０８を含むことができる。目標物１０８は通常、障害物とは見なされないが、いくつかの実施形態では例えば、ロボットが連続的に係合する複数の目標物１０８が存在する場合、障害物を構成することができる。いくつかの実装形態はいかなる目標物も含まなくてもよく、ロボット１０２はいかなる物体とも相互作用することなく、またはいかなる物体とも係合することなく、様々なポーズ（又は、ポーズ）の間で移動される。
【００４６】
図１は、限られた数の障害物１０６および目標物１０８を有する代表的な環境１００を示す。典型的な環境は、他のロボットに対応する物体、および様々な他の自然または人工の静的および動的障害物１０６または目標物１０８を含む、多くの追加の障害物１０６および目標物１０８を含むことができる。環境によっては、目標物１０８を完全に省略したり、動的障害物１０６を省略したりする場合もある。本明細書で教示する概念は、図示したものよりも人口の多い環境で同様に使用することができる。
【００４７】
ロボット１０２はデカルト、ロボットアセンブリ（ＳＣＡＲＡ）のための選択的に従順な（又は、従動する）アーム、円筒形、デルタ、極性、および垂直関節を含むが、これらに限定されない、任意のタイプのロボットであってもよい。また、ロボットは自律的に又は半自律的に（すなわち、少なくとも部分的には自律的に）作動し、環境１００によって表される空間内を移動することができる自動車、飛行機、ドローン、又は任意の他の車両であってもよい。図示の実施形態ではロボット１０２がベース１１０と、一組のリンク１１２ａ、１１２ｂ（２つだけ示す。まとめて１１２とする）と、一組の関節１１４（１つだけ示す）とを含み、関節１１４の各々はリンク１１２のそれぞれの対を物理的に結合する。ロボット１０２はまた、別のリンク１１２ｂに対して、又はベース１１０に対して１つのリンク１１２ａの移動を駆動する１つ以上のアクチュエータ（例えば、電動モータ、ステッパモータ、ソレノイド、電磁石、油圧ピストン、空圧ピストン、油圧バルブ、空圧バルブ、真空システム用のポンプ又はコンプレッサ、油圧システム、空圧システム）１１６（１つだけ示す）を含むことができる。ロボット１０２はまた、エンドエフェクタまたはアームツール端部１１８、例えば、環境１００内の目標物１０８に物理的に係合するための、対置可能な指、フック、または真空ポートを有する把持器を含み得る。
【００４８】
環境１００は、１つまたは複数の環境センサ１２２ａ、１２２ｂ、１２２ｃ（３つ示す／集合的に１２２）と、ハブまたは環境センサシステムコントローラ１２４とを含み得る環境センサシステム１２０を含んでもよい。
【００４９】
環境センサ１２２は多種多様な形態またはタイプ、例えば、いくつか例を挙げると、１つ以上のデジタルカメラ１２２ａ、１つ以上の運動センサまたはレーダ１２２ｂ、１つ以上のマイクロフォン１２２ｃ、１つ以上の重量センサまたはロードセル（図示せず）、１つ以上の電気アイ（例えば、ＩＲ光源およびＩＲセンサ）（図示せず）、１つ以上のエンコーダ（例えば、ポジトンエンコーダ、ロータリエンコーダ、リードスイッチ）（図示せず）、１つ以上の温度センサ（図示せず）、湿度センサ（図示せず）、および／または１つ以上の圧力センサ（図示せず）のいずれかをとることができる。センサは障害物、目標物、ロボット、および／または環境内の他の物体の特性（例えば、位置、向き、形状、占有、移動、速度）を含む環境の特性を検出する。センサ１２２はハブ又は環境センサシステムコントローラ１２４に、有線、光学的、無線で信号を供給することができる。これらの信号のうちの少なくともいくつかは、任意選択で、知覚データを符号化するか、またはさもなければ表すことができる。
【００５０】
ハブまたは環境センサシステムコントローラ１２４は回路、例えば、１つまたは複数のプロセッサおよび／または１つまたは複数の非一時的プロセッサ可読媒体（例えば、不揮発性メモリ、揮発性メモリ、回転記憶媒体）を含むことができ、例えば、非一時的プロセッサ可読媒体によって記憶されたプロセッサ実行可能命令の１つまたは複数のセットを実行することができる。ハブまたは環境センサシステムコントローラ１２４はセンサ１２２のうちの１つまたは複数に通信可能に結合（例えば、有線、光学的、無線）されて、感知された情報、例えば、知覚データを受信することができる。いくつかの実装形態では、１つまたは複数のプロセッサによるプロセッサ実行可能命令の実行がハブまたは環境センサシステムコントローラ１２４に、受信した感知情報の一部またはすべてを処理または前処理させることができる。
【００５１】
ロボット制御システム１２６はハブまたは環境センサシステムコントローラ１２４に通信可能に結合（例えば、有線、光学的、無線で）されて、そこから情報を受信してもよい。情報は、環境１００内の過渡的な障害物１３２の表現を含むことができる。ロボット制御システム１２６はコンピュータまたは端末１３４に通信可能に（例えば、有線で、光学的に、無線で）結合されて、動作細分粒度値（又は、運動細分粒度値／動作細分化の荒さの程度の値／motion subdivision granularity value）または仕様１３６の指示を受信することができる。
【００５２】
ロボット制御システム１２６は典型的には別個であるが、いくつかの実装形態では共通の回路基板、プロセッサ、または他の回路に組み合わせることができる、いくつかの構成要素を含むことができる。例えば、一組のドライバ１３６はアクチュエータを駆動するためにアクチュエータ（複数可）１１６に通信可能に結合される回路を含み、ロボット１０２に定義されたポーズを採用させるかまたは移動させる。ドライバは例えば、電気モータ、ステッパモータ、ソレノイド、電磁石、油圧ピストン、空気圧ピストン、油圧弁、空気圧弁、真空システム用のポンプまたはコンプレッサ、油圧システム、空気圧システムのうちの任意の１つ以上を駆動するモータコントローラおよび同様の回路を含むことができる。
【００５３】
ロボット制御システム１２６は、動作計画システム１３８を含んでもよい。動作計画システム１３８はロボット１０２とは別個の、ロボット１０２の一体部分であってもよく、または１つ以上の部分がロボットに搭載されてもよく、一方、１つ以上の他の部分がロボットとは別個（すなわち、オフボード）であってもよい。動作計画システム１３８は回路、例えば、１つ以上のプロセッサおよび／または１つ以上の非一時的プロセッサ可読媒体（例えば、不揮発性メモリ、揮発性メモリ、回転記憶媒体）を含んでもよく、例えば、非一時的プロセッサ可読媒体によって記憶された１つ以上のプロセッサ実行可能命令セットを実行してもよい。動作計画システム１３８はロボット１０２に特定のタスクを実行させるための動作計画を生成することができ、例えば、好ましくは障害物１０６との衝突なしに、一連の順次ポーズの間を遷移する。動作計画システム１３８は運転者１３６に通信可能に連結されて（例えば、ワイヤード、光学的、ワイヤレスで）、ロボットに動作計画に従わせる、または実行させる命令を提供することができる。
【００５４】
ロボット制御システム１２６は、衝突検出システム１４０を含んでもよく、又は衝突検出システム１４０にアクセスし得る。衝突検出システム１４０は回路、例えば、１つまたは複数のプロセッサおよび／または１つまたは複数の非一時的プロセッサ可読媒体（例えば、不揮発性メモリ、揮発性メモリ、回転記憶媒体）を含むことができ、例えば、非一時的プロセッサ可読媒体によって記憶されたプロセッサ実行可能命令の１つまたは複数のセットを実行することができる。本明細書の他の箇所で図示および詳細に説明するように、衝突検出システム１４０は、ロボットの動力学モデル、環境内の持続的障害物、および環境内の過渡的障害物のデータ構造表現を有利に採用して、ロボットの障害物と環境１００内の障害物１０６との衝突を種々のポーズで、またはポーズ間を移動（又は、遷移）して決定または検出する。データ構造は有利に階層構造（例えば、オクツリー、体積またはボックスのセット（例えば、軸に整合した境界ボックス（ＡＡＢＢ）のツリー）、指向（軸に整合しない）境界ボックスのツリー、または球のツリー構造）、または、他のツリー構造、非階層的データ構造（例えば、ユークリデス距離フィールド）の形をとることができる。本明細書で説明するように、衝突検出システム１４０は衝突を判定または検出する際に、動作細分粒度値または仕様１３６を使用することができる。
【００５５】
衝突検出システム１４０はロボット１０２の動力学モデル１２８の表現、環境１００内の持続的障害物１３０の表現、および環境１００内の過渡的障害物１３２の表現を受け取るために、ハブまたは環境センサシステムコントローラ１２４に通信可能に結合（例えば、有線、光学的、無線で）されてもよい。少なくともいくつかの実装形態では、衝突検出システム１４０が動力学モデル１２８、持続的障害物１３０の表現、および／または過渡的障害物１３２の表現のうちの１つ、複数、またはすべてを非階層フォーマットで受信する。これらの実装形態では、衝突検出システム１４０が場合によっては有利には動力学モデル１２８、持続的障害物１３０の表現、および／または過渡的障害物１３の表現のうちの１つ、複数、またはすべてを、階層的フォーマットまたは階層的データ構造に変換することができる。いくつかの実装形態では、衝突検出システム１４０がいくつかの例では有利には動力学モデル１２８、持続的障害物１３０の表現、および／または過渡的障害物１３２の表現のうちの１つ、複数、またはすべてを、非階層フォーマットまたは階層データ構造、たとえばユークリッド距離場表現に変換することができる。他の実施態様では、衝突検出システム１４０が動力学モデル１２８、持続的障害物１３０の表現、および／または過渡的障害物１３２の表現のうちの１つ、複数、またはすべてを階層フォーマットで受信し、いかなる変換も実行しない。さらに他の実施態様では、衝突検出システム１４０が動力学モデル１２８、持続的障害物１３０の表現、および／または非階層フォーマットの過渡的障害物１３２の表現のうちの１つ、複数、またはすべてを受信し、変換を実行しない。さらに別の実施態様では、衝突検出システム１４０が１つ、複数、またはすべての動力学モデル１２８、持続的障害物１３０の表現、および／または過渡的障害物１３２の表現を階層フォーマットで受信し、そのようなものを非階層フォーマット（例えば、ＥＤＦ）に変換する。
【００５６】
衝突検出システム１４０はコンピュータまたは端末１３４に通信可能に（例えば、有線で、光学的に、無線で）結合されて、動作細分粒度値または仕様１３６を受信することができる。あるいは、動作細分粒度値または仕様１３６が衝突検出システム１４０によって前もって格納されてもよく、または何らかの他のソースから受信されてもよい。
【００５７】
図示の実施において、目標物１０８は車両１０６ｆを介して環境１００の一部を通って、例えば自律走行車輪付き又は追尾ロボット車両又はトロリー（例えば、ＫＩＶＡ（登録商標）ロボット）を介して輸送される。航空機搭載車両（例えば、回転型航空機またはクアッドコプター、航空機搭載ドローン）および／または水上搭載車両（例えば、船舶、潜水艦、水上ドローン）を含む他の車両を採用することができることに留意されたい。ロボット１０２は環境内の障害物１０６ａ〜１０６ｆのいずれとも衝突することなく、車両１０６ｆから目標物１０８を取り出し、目標物１０８をコンテナ１０６ｄ、１０６ｅの選択された１つに入れることを課される。あるいは、ロボット１０２が環境内の障害物１０６ａ〜１０６ｆのいずれとも衝突することなく、コンテナ１０６ｄ、１０６ｅのうちの選択された１つから目標物１０８を取り出し、目標物１０８を車両１０６ｆ上に置くことを課されてもよい。タスクを実行することは動作計画を使用し、動作計画は衝突検出を使用する。
【００５８】
動作計画についての課題は比較的低コストで、非常に速い速度で、環境またはロボットの特性が変化することにつれて頻繁に動作計画を実行する能力を含む。例えば、障害物は構成後に環境に入ることができ、または環境内で移動（例えば、並進、回転）することができ、または構成後に、または実行時間中のロボット１０２の動作または移動中でさえ、形状を変化させることができる。また、例えば、そのような特性はロボット１０２が様々なサイズの目標物１０８を保持しているとき、異なるエンドエフェクタ１１８に変更するとき、または異なるロボット付属物に変更するときに、ロボット１０２の一部（例えば、アーム端ツールまたはエンドエフェクタ１０８）によって占められると考えられる体積（又は、体積の変化）を含むことができるが、これらに限定されない。したがって、動作計画がタスクを実行するために、これらの変化を考慮することが有利である。これに関係する課題は障害物１０６によって、さらには環境１００内のロボット１０２によって占有されていると考えられる空間を効率的に表現し、通信し、比較することである。したがって、本開示は、ロボット１０２が実世界環境でタスクを首尾よく実行することを可能にする、動作計画、特に衝突検出を容易にする技法を提供する。
【００５９】
図２および以下の議論は、１つの例示としての実施に従って、様々な例示および説明された動作計画システムおよび方法が実施され得る、適切なロボット制御システム２００の簡潔で、一般的な説明を提供する。
【００６０】
必須ではないが、多くの実装はコンピュータまたはプロセッサ読み取り可能媒体上に記憶され、衝突評価および動作計画動作を実行することができる１つ以上のコンピュータまたはプロセッサによって実行されるプログラムアプリケーションモジュール、オブジェクト、またはマクロなど、コンピュータ実行可能命令の一般的なコンテキストで説明される。そのような動作計画動作は動力学モデル１２８（図１）に基づくロボット幾何学の表現、持続的障害物１３０（図１）の表現、および／または過渡的障害物１３２（図１）の表現のうちの１つまたは複数を、データ構造フォーマット（例えば、階層フォーマット、非階層フォーマット）に生成または変換することを含むことができるが、これらに限定されない。そのような動作計画動作はロボットのデータ構造表現、環境内に存在する場合には持続的障害物のデータ構造表現、および／または環境内に存在する場合には過渡的障害物のデータ構造表現を使用して、ロボットの様々なポーズまたはロボットのポーズ間の運動の衝突を決定または検出または予測することを含むことができるが、これらに限定されない。これは、任意選択で、動作細分粒度値または仕様１３４に基づくことができる。いくつかの実装形態では動作計画動作が１つまたは複数の計画グラフ、動作計画、またはロードマップを決定すること、決定された計画グラフ、動作計画、またはロードマップを記憶すること、および／またはロボットの動作を制御するために計画グラフ、動作計画、またはロードマップを提供することを含むことができるが、これらに限定されない。
【００６１】
前述のように、いくつかのセンサ２８２は、知覚データおよび／または他の感知された情報を、プロセッサ２１２ａなどの１つまたは複数のプロセッサに提供することができる。知覚データはどのボクセルまたはサブ体積（例えば、ボックス）が現在の時間、例えば、事前構成時間（又は、構成前時間／pre-configuration time）、構成時間（又は、configuration time）、実行時間に環境内で占有されているかを表すストリームとして提供されてもよい。このデータは、占有グリッドの形で、プロセッサ２１２ａなどの１つまたは複数のプロセッサに提供され得る。特に、環境１００内のロボットまたは物体（例えば、障害物１０６、目標物１０８）のいずれかを表す場合、それらの表面をボクセル（３Ｄピクセル）または多角形のメッシュ（しばしば三角形）のいずれかとして表すことができる。空間の各離散化された領域は、「ボクセル」と呼ばれ、３Ｄ（ボリュメトリック／体積的／volumetric）ピクセルと等価である。場合によっては、代わりに物体をボックス（直角プリズム）として表すことが有利である。物体がランダムに成形されていないという事実のために、ボクセルがどのように編成されるかにはかなりの量の構造が存在し、物体内の多くのボクセルは３Ｄ空間内で互いにすぐ隣り合っていることがある。したがって、オブジェクトをボックスとして表すことは、はるかに少ないビットを必要とすることがある（すなわち、ボックスの２つの対向するコーナーについてｘ、ｙ、ｚデカルト座標だけを必要とすることがある）。また、ボックスに対して交差テスト（intersection test）を行うことは、ボクセルに対して行うことに匹敵する複雑さである。
【００６２】
少なくともいくつかの実装形態は複数のセンサの出力を組み合わせることができ、センサは、非常に細かい粒度のボクセル化を提供することができる。しかしながら、ロボット１０２が動作計画を効率的に実行するために、ロボット１０２のプロセッサ２１２ａは様々なポーズまたは状態の間の遷移を行うときに、環境およびロボット１０２によって掃引される３Ｄ空間内の体積を表すために、より粗いボクセル（すなわち、「プロセッサボクセル」）を使用することができる。したがって、システム２００は、それに応じてセンサ２８２の出力を変換することができる。例えば、センサ２８２のアウトプットは各軸上で１０ビットの精度を使用することができ、したがって、センサ２８２から直接的に生じる各ボクセル（すなわち、「センサボクセル」）は３０ビットのＩＤを有し、２３０のセンサボクセルがある。システム２００は１８ビットのプロセッサボクセルＩＤに対して、それぞれの軸上で６ビットの精度を（構成時および実行時に）使用することができ、２１８プロセッサボクセルが存在することになる。したがって、例えば、プロセッサボクセルごとに２１２のセンサボクセルを有することができる。実行時に、システム２００が、プロセッサボクセル内のセンサボクセルのいずれかが占有されていると判定した場合、システム２００はプロセッサボクセルが占有されていると見なし、それに応じて占有グリッドを生成する。
【００６３】
一実施形態では、衝突評価が動作プレイシステム（motion playing system）１３８による関数呼び出しまたは同様のプロセスに応答して実行され、そこにブール値を返す。衝突検出システムは有利には１つまたは複数のフィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）および／または１つまたは複数の特定用途向け集積回路（ＡＳＩＣ）を介して実装されて、低レイテンシ（又は、低遅延）、比較的低電力消費、低コスト（例えば、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）の使用と比較して）、および処理可能な情報量の増加を達成しながら、衝突検出を実行することができる。
【００６４】
様々な実施形態では、そのような動作が完全にハードウェア回路で、またはシステムメモリ２１４などのメモリストレージに格納されたソフトウェアとして実行され、１つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）、グラフィックス処理ユニット（ＧＰＵ）プロセッサ、プログラムドロジックコントローラ（ＰＬＣ）、電気的プログラマブルリードオンリメモリ（ＥＥＰＲＯＭ）などの１つまたは複数のハードウェアプロセッサ２１２ａによって、またはメモリストレージに格納されたハードウェア回路およびソフトウェアの組合せとして実行され得る。
【００６５】
また、知覚、計画グラフ構築、衝突検出、および経路探索の様々な態様の実施は２０１７年６月９日に出願された国際特許出願第ＰＣＴ／ＵＳ２０１７／０３６８８０号、発明の名称「自動車および再構成可能な移動処理装置のための移動計画」、２０１６年１月５日に出願された国際特許出願第ＷＯ  ２０１６／１２２８４０号、発明の名称「特定のロボット移動ハードウェアおよびその製造方法および使用方法」、ならびに米国特許出願第平成３０年１月１２日に出願された「動的オブジェクトを有する環境における自動車の移動を容易にするための装置、方法及び物品」という名称の／６１６，７８３は図示された実施形態、並びに他の実施形態がロボット、ハンドヘルドデバイス、マイクロプロセッサベース又はプログラマブル家庭用電化製品、パーソナルコンピュータ（「ＰＣ」）、ネットワーク化されたＰＣ、ミニコンピュータ、メインフレームコンピュータを含む、他のシステム構造及び構成及び／又は他のコンピューティングシステム構成及び構成で実施され得ることを理解されたい。等。（例えば、構成時および実行時に）実装または実施形態またはその一部は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクまたはモジュールが実行される分散コンピューティング環境で実施することができる。分散コンピューティング環境では、プログラムモジュールがローカルおよびリモートメモリ記憶装置またはメディアの両方に配置されてもよい。しかしながら、動作計画を改善するのを助けるためには、ある種の情報がどこにどのように記憶されるかが重要である。
【００６６】
例えば、様々な動作計画の解決策はロードマップ（すなわち、計画グラフ）をプロセッサに「ベークイン（又は、焼き付け）」し、ロードマップ内の各エッジはプロセッサの再構成不可能なブール回路に対応し、計画グラフがプロセッサに「ベークイン」される設計は複数のまたは大きな計画グラフを格納するためのプロセッサ回路が限定されているという問題を提起し、一般に、異なるロボットで使用するために再構成可能ではない。
【００６７】
１つの解決策は、計画グラフ情報をメモリ記憶装置に配置する再構成可能設計を提供する。このアプローチは回路にベーク（又は、焼き付け）される代わりに、メモリに情報を記憶する。別のアプローチはメモリの代わりに、テンプレートされた再構成可能な回路を使用した。
【００６８】
上述したように、情報のいくつかは、構成時間中、すなわち実行時間の前に、取り込まれ、受信され、入力され、または提供されてもよい。実行時間中、センサ２８２は、知覚データをプロセッサ２１２ａに送る。知覚データは現在の環境に存在し、オンチップ環境メモリ２９４に格納されているボクセルまたはボックスのストリームであってもよい。次いで、ロボットの任意の部分がロボットの別の部分と衝突するか、またはロボットの別の部分と衝突することが予測されるかどうか、環境内の持続的障害物と衝突するか、または環境内の過渡的障害物と衝突するかどうかをポーズ間の任意のポーズまたは移動について判定することを含む、環境全体について衝突検出を実行することができる。衝突検出は有利には衝突検出分析を実行するためにデータ構造表現を使用し、典型的には、単純なブール値を出力として返す。
【００６９】
図２は、プロセッサ２１２ａによって表される１つまたは複数のプロセッサと、システムメモリ２１４、衝突検出システム２８４、およびディスクドライブ２２４に関連するコンピュータ可読媒体２２６などの１つまたは複数の関連する非一時的機械可読記憶媒体とを備える、ロボット１０２用のものなどのロボット制御システム２００を示す。システムメモリ２１４、衝突検出システム２８４のメモリまたはレジスタ、およびディスクドライブ２２４に関連するコンピュータ可読媒体２２６を含む、関連する一時的でないコンピュータまたはプロセッサ可読記憶媒体は、システムバス２１６などの１つ以上の通信チャネルを介してプロセッサ２１２ａに通信可能に結合される。システムバス２１６は、メモリ・コントローラを備えたメモリ・バス、周辺バス、および／またはローカルバスを含む、任意の既知のバス構造またはアーキテクチャを採用することができる。１つまたは複数のセンサ２８２およびアクチュエータシステム２６６も、システムバス２１６を介してプロセッサ２１２ａに通信可能に結合される。このような構成要素の一つ以上は例えば、１つ以上のパラレルケーブル、シリアルケーブル、または高速通信が可能なワイヤレスネットワークチャネル、例えば、ユニバーサルシリアルバス３．０、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ）またはＴｈｕｎｄｅｒｂｏｌｔ（登録商標）を介して、１つ以上の他の通信チャネルを介して互いに通信することも可能である。
【００７０】
ロボット制御システム２００はまた、ネットワークインターフェース２６０を介してロボット制御システム２００の様々な構成要素に直接通信可能に結合または間接通信可能に結合される、例えば、デスクトップコンピュータ、ラップトップコンピュータ、ウルトラポータブルコンピュータ、タブレットコンピュータ、スマートフォン、ウェアラブルコンピュータ（集合的に１３４（図１））などの遠隔システムに通信可能に結合されてもよい。そのような遠隔システムはロボット制御システム２００およびロボット制御システム２００内の様々な構成要素とプログラムし、構成し、制御し、またはさもなければインターフェースし、またはそれらにデータを入力するために使用されてもよい。このような接続はインターネットプロトコルを使用する１つ以上の通信チャネル、例えば、インターネットを介して、１つ以上のワイドエリアネットワーク（ＷＡＮ）を介してもよい。上述のように、実行時前計算（例えば、計画グラフのファミリの生成）はロボット１０２または他のロボットとは別個のシステムによって実行されてもよく、一方、実行時計算はロボット１０２上にあるプロセッサ２１２上で実行されてもよい。
【００７１】
図２に示される様々なブロックの構成および動作は２０１７年６月９日に出願された国際特許出願第ＰＣＴ／ＵＳ２０１７／０３６８８０号、名称「自動車および再構成可能な移動プランニングプロセッサのための移動プランニング」、２０１６年１月５日に出願された国際特許出願第ＷＯ２０１６／１２２８４０号、名称「製造および使用の方法の特殊化されたロボット移動プランニング」、および／または２０１８年１月１２日に出願された米国特許出願第６２／６１６，７８３号、名称「動的物体を有する環境における自動車の移動プランニングを容易にするための装置、方法および物品」に記載されている。その結果、そのようなブロックは参照により本明細書に組み込まれる参考文献を考慮して、関連技術の当業者によって理解されるように、さらに詳細に説明される必要はない。
【００７２】
ロボット制御システム２００は、１つまたは複数の処理ユニット２１２、システムメモリ２１４、衝突検出システム２８４、および種々のシステム構成要素を結合するシステムバス２１６を含んでもよい。いくつかの実装形態では、衝突検出システム２８４が１つまたは複数の別個のプロセッサ、例えば、１つまたは複数のＦＰＧＡまたはＡＳＩＣの形態をとることができる。プロセッサ２１２ａは、１つまたは複数の中央処理装置（ＣＰＵ）２１２ａ、デジタル信号プロセッサ（ＤＳＰ）２１２ｂ、特定用途向け集積回路（ＡＳＩＣ）、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）などの任意の論理処理ユニットとすることができる。システムメモリ２１４は読み出し専用メモリ２１８およびランダムアクセスメモリ２２０を含むことができ、ＲＯＭ２１８の一部を形成することができる基本入出力システム２２２は、起動中など、ロボット制御システム２００内の要素間で情報を転送するのを助ける基本ルーチンを含む。
【００７３】
ロボット制御システム２００は例えば、ハードディスクから読み書きするためのハードディスクドライブ、リムーバブルフラッシュメモリデバイスから読み書きするためのフラッシュメモリドライブ、リムーバブル光ディスクから読み書きするための光ディスクドライブ、または磁気ディスクから読み書きするための磁気ディスクドライブとすることができるディスクドライブ２２４を含むことができる。ロボット制御システム２００はまた、様々な異なる実施形態において、そのようなディスクドライブの任意の組み合わせを含んでもよい。ディスクドライブ２２４は、システムバス２１６を介して処理ユニット２１２と通信することができる。ディスクドライブ２２４は当業者に知られているように、そのようなドライブとシステムバス２１６との間に結合されたインターフェースまたはコントローラ（図示せず）を含むことができる。ディスクドライブ２２４およびその関連するコンピュータ可読媒体２２６は、コンピュータ可読命令、データ構造、プログラムモジュール、およびロボット制御システム２００のための他のデータの不揮発性記憶装置を提供する。当業者は、ＷＯＲＭドライブ、ＲＡＩＤドライブ、磁気カセット、デジタルビデオディスク（「ＤＶＤ」）、ベルヌーイカートリッジ、ＲＡＭ、ＲＯＭ、スマートカードなど、コンピュータによってアクセス可能なデータを記憶することができる他のタイプのコンピュータ可読媒体を使用することができることを理解するであろう。
【００７４】
プログラムモジュールは、オペレーティングシステム２３６、１つ以上のアプリケーションプログラム２３８、他のプログラムまたはモジュール２４０、プログラムデータ２４２などのシステムメモリ２１４に記憶することができる。アプリケーションプログラム２３８は（１つまたは複数の）プロセッサ２１２に、環境１００内の障害物１０６および／または目標物１０８を含む、ロボットが動作する環境１００の離散化された表現を生成すること、衝突評価の呼び出しまたは他の方法でその結果を取得することを含む、計画グラフ、動作計画、またはロードマップを生成すること、および／または決定された複数の計画グラフ、動作計画、またはロードマップを記憶することのうちの１つまたは複数を実行させる命令を含むことができる。アプリケーションプログラム２３８は本明細書および参照により本明細書に組み込まれる参考文献に記載されるように、プロセッサ２１２に（センサ２８２を介して）知覚、計画グラフ構築、衝突検出、および経路探索の他の動作を実行させる、１つまたは複数の機械可読命令セットをさらに含むことができる。
【００７５】
「環境」という用語は本例では障害物を含むロボットの現在の作業空間を指すために使用される。用語「タスク」が本例ではロボット１０２がその環境内の障害物と衝突することなく、ポーズＡからポーズＢ（たぶん、アイテムを把持し、把持解除し、落下させ、取り上げ、又は、置く）に到達しなければならないロボットタスクを指すために使用される。用語「シナリオ」は本例では環境／タスク対のクラスを指すために使用される。例えば、シナリオは「三脚テーブルを有し、所与の範囲内のサイズおよび形状を有するｘ障害物とｙ障害物との間の環境内のピック・アンド・プレースタスク」とすることができる。このような基準に適合する多くの異なるタスク／環境対が、目標の位置、障害物のサイズおよび形状に応じて存在し得る。システム２００は、ネットワークインターフェース２６０を介して通信ネットワークを介してリンクされる１つ以上の遠隔処理装置を含んでもよい。そのような１つまたは複数のリモート処理デバイスはシステム２００に、ロボット１０２が様々な異なるシナリオのタスクおよび環境の対に対して動作する環境１００の表現のそれぞれの離散化を生成させる、１つまたは複数の機械可読命令セットを実行することができる。例示的な実施形態では、それぞれの離散化のうちの少なくとも２つはボクセルのそれぞれのセットを含む。それぞれの離散化のボクセルは、それぞれの離散化内のサイズおよび形状のうちの少なくとも１つにおいて非均質であってもよい。また、それぞれの離散化のボクセルの不均一性のそれぞれの分布は、互いに異なっていてもよい。具体的には離散化がそれぞれのボクセルのセットを含むことができ、それぞれの離散化のうちの少なくとも２つのボクセルはそれぞれの離散化内のサイズおよび形状のうちの少なくとも１つにおいて不均質であり、それぞれの離散化のうちの少なくとも２つのボクセルの不均質性のそれぞれの分布は互いに異なる。アプリケーションプログラム２３８はプロセッサ２１２に、ロボットが動作する環境１００の表現の生成されたそれぞれの離散化の有効性を評価させ、特定のシナリオに対して最も有効であると評価される生成されたそれぞれの離散化を記憶させる、１つまたは複数の機械可読命令セットを含むことができる。
【００７６】
アプリケーションプログラム２３８は衝突検出システム２８４に、ロボットが動作する環境内の任意の障害物の衝突検査を実行させる１つまたは複数の機械可読命令セットをさらに含むことができる。衝突検出システム２８４は、本明細書の他の場所に記載される種々の構造および技術を使用して、そのような衝突検出を実行してもよい。
【００７７】
アプリケーションプログラム２３８はプロセッサ２１２に、図５〜図１３に示す方法を含むがこれに限定されない、本明細書で説明する様々な他の方法を実行させる、１つまたは複数の機械可読命令セットをさらに含むことができる。
【００７８】
様々な実施形態では上述の動作のうちの１つまたは複数がシステム２００の１つまたは複数のリモート処理デバイスによって実行することができ、これらのデバイスはネットワークインターフェース２６０を介して通信ネットワークを介して、または１つまたは複数のプロセッサ２１２または衝突検出システム２８４によってリンクされる。
【００７９】
図２にはシステムメモリ２１４に記憶されるように示されているが、オペレーティングシステム２３６、アプリケーションプログラム２３８、他のプログラムモジュール２４０、およびプログラムデータ２４２はディスクドライブ２２４の関連するコンピュータ読み取り可能媒体２２６上に記憶することができる。
【００８０】
プロセッサ２１２および衝突検出システム２８４は、１つまたは複数の中央処理装置（ＣＰＵ）、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）などの任意の論理処理ユニットとすることができる。市販のコンピュータシステムの非限定的な例としては米国Ｉｎｔｅｌ（登録商標）社が提供するマイクロプロセッサのＣｅｌｅｒｏｎ、Ｃｏｒｅ  ２、Ｉｔａｎｉｕｍ、Ｘｅｏｎファミリー、米国Ａｄｖａｎｃｅｄ  Ｍｉｃｒｏ  Ｄｅｖｉｃｅｓ、Ａ．が提供するＫ８、Ｋ１０、Ｂｕｌｌｄｏｚｅｒ、およびＢｏｂｃａｔシリーズマイクロプロセッサ、米国アップルコンピュータが提供するＡ５、Ａ６、およびＡ７シリーズマイクロプロセッサ、米国Ｑｕａｌｃｏｍｍ、Ｉｎｃが提供するＳｎａｐｄｒａｇｏｎシリーズマイクロプロセッサ、米国Ｏｒａｃｌｅ  Ｃｏｒｐが提供するＳＰＡＲＣシリーズマイクロプロセッサが挙げられるが、これらに限定されない。
【００８１】
図３は、本明細書で説明する様々な方法またはプロセスに従って衝突検出を実行する際に使用することができる、衝突検出システム３００の様々なハードウェアモジュールまたはユニットの論理表現を示す。
【００８２】
順方向動力学モジュール（又は、前方動力学モジュール／forward kinematics module）またはハードウェアユニット３０２はポーズ（構成空間またはＣ空間におけるＤタプル）を入力として取り、自由空間におけるロボットの各リンクの対応する並進および回転を出力として提供する。
【００８３】
イプシロンエッジ（epsilon edge）モジュールまたはハードウェアユニット３０４は入力として２つのポーズを受け取り、これら２つのポーズの間で再帰的細分割を実行して、以前のポーズ対の間のいくつかの（例えば、複数の）中間ポーズを見つけるか、または計算する。中間ポーズの再分割（又は、細分割）および生成は、隣接するポーズ間の距離が定義されたイプシロン許容値未満になるまで継続する。イプシロンエッジモジュールまたはユニットの使用は例えば、２つのポーズ間の動きが評価されない場合、任意であってもよい。
【００８４】
補間モジュールまたはハードウェアユニット３０６は入力として２つのポーズを受け取り、２つのポーズの間の新しいポーズを計算する。補間モジュールまたはユニット３０６は、イプシロンエッジモジュールまたはハードウェアユニット３０４の一部であってもよい。
【００８５】
ロボット自己衝突検出モジュールまたはハードウェアユニット３０８はロボット内の異なるリンク間の衝突を検出する（隣接するリンク間の衝突が可能でないことに留意されたい）。このハードウェアは、ロボットの２つのリンクのそれぞれを表す２つの球ツリーがオーバーラップするかどうかを判定するために最適化されることが有利である。
【００８６】
持続的環境衝突検出モジュールまたはハードウェアユニット３１０は、ロボットの任意の部分と、ロボットが動作する環境内の持続的物体または障害物との間の衝突を検出する。このハードウェアは、ロボットのリンクを表す球ツリーが環境内の持続性オブジェクトを表すユークリッド距離フィールドと衝突するかどうかを判定するために有利に最適化することができる。
【００８７】
過渡的環境衝突検出モジュールまたはハードウェアユニット３１２は、ロボットの任意の部分と、ロボットが動作する環境内の過渡的物体または障害物との間の衝突を検出する。このハードウェアは、有利にはロボットのリンクを表す球ツリーが環境内の持続性オブジェクトを表す軸整列境界ボックスのセットとオーバーラップするかどうかを決定するために最適化され得る。
【００８８】
衝突検出モジュールまたはハードウェアユニット３０８、３１０、３１２のいずれか１つ、または好ましくはすべては、計算効率および電力効率を高めることができる固定小数点ハードウェア（すなわち、回路）を使用することができる。モジュールまたはユニットの１つのセットとして示されているが、動作システムは有利には並列に動作することができる前述のモジュールまたはハードウェアユニットのそれぞれの複数のコピーまたはインスタンスを備えることができる。たとえば、補間ユニットが新しいポーズを生成するとすぐに、そのポーズは、パーシスタントオブジェクトとトランジェントオブジェクトの両方との自己衝突や衝突がないかどうかを、並行してチェックできる。さらに、衝突チェックは、多くの衝突検出ユニットにわたって有利に並列化することができる。
【００８９】
図４は、ロボットの「構成空間」または「Ｃ空間」４００と、ロボットの動作計画グラフまたはロードマップ４０２とを示す。構成空間４００は典型的には多次元（すなわち、３次元より大きい）である。種々の障害物４０４ａ、４０４ｂ、４０４ｃ（４つが示されており、３つだけが集合的に４０４と呼ばれている）が示されている。
【００９０】
計画グラフまたはロードマップ４０２はロボットのそれぞれの状態、ロボットの特定の構成（ロボットの関節位置の特定のセットの完全な仕様である）、ロボットのポーズ、速度、および方位を含むことができるが、これらに限定されない状態を表す、いくつかのノード４０６ａ、４０６ｂ、４０６ｃ、４０６ｄ、．．．、４０６ｎ（１１個が示され、５個に符号が付されている／まとめて４０６）を含む。状態の１つは、例えば、開始状態４０６ａであるかもしれないし、開始状態４０６ａを表すかもしれない。状態のうちの１つは、例えば、終了または目標状態（又は、ゴール状態）４０６ｎであり得るか、またはそれを表し得る。計画グラフまたはロードマップ４０２は、いくつかのエッジ４０８ａ、４０８ｂ、４０８ｃ、４０８ｄ、．．．、４０８ｎを含む（１１個が示され、５個のみに符号が付されている。集合的に４０８）。計画グラフまたはロードマップ４０２の各エッジ４０８は、ロボットの１つの状態から別の状態への遷移を表す。動作計画およびロードマップ４０２の生成に適したいくつかの構造および方法は、２０１７年６月９日に出願された「自動車車両および再構成可能な移動計画処理装置のための動作計画」と題する共通譲渡された国際特許出願第ＰＣＴ／ＵＳ２０１７／０３６８８０号、および２０１６年１月５日に出願された「ＳＰＥＣＩＡＬＩＺＥＤ  ＲＯＢＯＴ  ｍｏｔｉｏｎ  ｐｌａｎｎｉｎｇ  ＨＡＲＤＷＡＲＥ  ａｎｄ  ｍｅｔｈｏｄｓ  ＯＦ  ＭＡＫＩＮＧ  ａｎｄ  ＵＳＩＮＧ  ｍｅｔｈｏｄｓ」と題する共通譲渡された国際特許出願公開第ＷＯ  ２０１６／１２２８４０号に記載されている。
【００９１】
動作計画問題を解くために、多種多様なアルゴリズムが使用される。これらのアルゴリズムの各々は、所与のポーズまたは１つのポーズから別のポーズへの動きが衝突をもたらすかどうかを決定することができる必要がある。
【００９２】
本明細書で説明される衝突検出ハードウェア、ソフトウェア、および／またはファームウェアは単一のロボットのポーズ、または１つのポーズ（例えば、開始ポーズ）から別のポーズ（例えば、終了ポーズ）へのロボットの動きによって、ロボットの一部が、ロボットの別の部分、またはロボットが動作する現在の環境内の任意の物体と衝突するかどうかを判定または計算することができる。環境は通常、障害物を含み、ロボットが意図的にタスク（例えば、目標物を把持し、移動させる）を実行するに際して関与（又は、係合）する１つまたは複数の目標物を含んでも含まなくてもよい。前述したように、障害物のいくつかについては、障害物によって占められるそれぞれの体積がモデルまたは計算回路が構成される時間（構成時間として示される時間）において既知であり、ロボット動作全体（実行時間として示される時間）を通して変化せず、とどまることが期待される。これらの障害物はオブジェクトが占める体積が構成時間中に既知であり、実行時間を通して不変のままであることが予想されるので、持続的障害物と呼ばれる。他の障害物については、障害物が占めるそれぞれの体積が構成時には知られておらず、実行時にのみ決定される。これらの障害物は、構成時間中に障害物が占める体積が分からないため、過渡的障害物と呼ばれる。これらの過渡的障害物のうちの１つまたは複数によって占有されるそれぞれの容積は、時間の経過に伴って固定されているか、移動していないか、または変化しておらず、静的障害物と呼ばれることがある。これらの一時的オブジェクトのうちの１つまたは複数によって占有されるそれぞれの体積は時間の経過とともに移動または変化し、動的障害物と呼ばれることがある。
【００９３】
本明細書で説明される衝突検出ハードウェア、ソフトウェア、および／またはファームウェアは例えば、確率的ロードマップ（ＰＲＭ）、高速探索ランダムツリー（ＲＲＴ）、ＲＲＴ＊、双方向ＲＲＴなどのアルゴリズムなどの様々な動作計画アルゴリズムによって示すか、または示すサブルーチンまたは関数として実装され得る。本明細書で説明する衝突検出ハードウェア、ソフトウェア、および／またはファームウェアは、多くの候補把持ポーズを迅速に評価することによって把持計画を加速するために使用することもできる。
【００９４】
本明細書で説明される様々な実装形態は典型的には２つまたは３つの構成時間入力、すなわち、ｉ）ロボットの動力学モデル、ｉｉ）環境内の持続的な障害物または物体の表現、および任意選択的に、動作細分粒度値または仕様を使用する。ロボットの動力学モデルはロボットの多数の関節のいずれかに関する拘束（例えば、エルボー関節の最小および最大角度）、ロボットの各リンクからロボットのそれぞれの親リンクへの変換、ロボットの各関節の軸、およびロボットの各リンクの幾何学の仕様を含む。
【００９５】
本明細書で説明される様々な実装形態は典型的には２つまたは３つの実行時入力、すなわち、ａ）開始ポーズ、ｂ）動作が評価されている場合の任意選択的な終了ポーズ、およびｃ）実行時に知られているが構成時に不知である、環境内の過渡的な障害物またはオブジェクトの表現を使用する。過渡的な障害物または物体は静的（すなわち、関連または実行期間中に固定されているか、移動していないか、または、形状を変化させない）または動的（すなわち、関連または実行期間の少なくとも一部の間に移動または形状を変化させる）であってもよい。数Ｄの自由度を有するロボットの場合、ポーズはＤタプル（又は、D-tuple）として指定されてもよく、タプル（tuple）の各要素は、その自由度（ジョイント）の位置または回転を指定する。
【００９６】
前述のように、衝突検出のための効率的なハードウェアの実装は、オブジェクト、ポーズ、および／または動きを表すためのデータ構造の選択に注意深く注意を払うことによって実現することができる。適切に選択されたデータ構造は、記憶に必要なメモリの量、衝突検出に必要なハードウェアの量、衝突検出を実行するための待ち時間、および電力消費を有利に低減することができる。本明細書で提供される説明は適切であり得るいくつかの例示的なデータ構造を提供するが、当業者は本明細書の教示に基づいて他の構造が使用され得ることを認識するであろう。様々なオプションがあり、各オプションは、待ち時間と精度との間のそれぞれのトレードオフに関連する。
【００９７】
衝突検出システムの多数のプロセスまたは動作方法が、図５〜図１３に示され、後述される。
【００９８】
図５は１つの例示としての実施形態に従った、動作計画および動作計画の作成において有用な衝突検出または評価または予測を実行するための、プロセッサベースのシステム（例えば、ロボット制御システム１２６、衝突検出システム１４０、２００）における動作の高レベル方法５００を示すフロー図である。動作計画はロボット、例えば、各々が１つ以上のリンク、一対のリンク間の関節、および１つ以上のアクチュエータを備える１つ以上のロボット付属物を有するロボットによって実行可能であってもよい。方法５００は有利なことに、環境において発生する変化（例えば、障害物の導入、障害物の除去、障害物の位置、向き、または形状の変化）が、実行時間中に考慮されることを可能にする。
【００９９】
方法５００は例えば、呼び出しルーチンまたはモジュールを介した呼び出しに応答して、または信号の受信または衝突検出システム２００への電力の印加の検出に応答して、５０２で開始する。
【０１００】
５０４において、プロセッサベースのシステムの少なくとも１つのコンポーネント（例えば、衝突検出システム１４０、２００）はロボットを表す動力学モデル、例えば、複数のリンクおよび複数の関節（リンクのそれぞれの対の間の関節）を有するロボット付属物（又は、付属肢／appendage）を表す動力学モデルを受信する。動力学モデルは、任意の公知のまたは開発されるフォーマットであり得る。
【０１０１】
５０６において、プロセッサベースのシステムの少なくとも１つのコンポーネント（例えば、衝突検出システム１４０、２００）は、環境内の持続的障害物のセットを表す占有情報を受信する。占有情報は例えば、環境内の持続的障害物のセットの各持続的障害物によって占有されるそれぞれの体積を表すことができる。占有情報は、任意の既知のフォーマットであってもよく、または開発されるフォーマットであってもよい。占有情報は、１つまたは複数のセンサによって生成されてもよく、またはコンピュータを介して、または人間によっても定義または指定されてもよい。占有情報は、通常、コンフィギュレーション時間の前または間に受信される。
【０１０２】
任意選択的に、５０８において、プロセッサベースのシステムの少なくとも１つのコンポーネント（例えば、衝突検出システム１４０、２００）は、動作計画に使用される動作細分化粒度を表す少なくとも１つの値または仕様を受信する。動作細分割粒度は、特定の問題に対して許容可能な最大間隔を定義する。動作細分割粒度は例えば、問題のタイプ、シナリオのタイプ、ロボットのタイプ、および／または特定のロボットに基づいて、事前に定義または指定することができる。代替的に、動作細分割粒度は任意の共通の入力デバイス（例えば、キーボード、キーパッド、コンピュータマウス、タッチスクリーンディスプレイ、マイクロフォン）を介してユーザによって提供または指定されてもよい。
【０１０３】
少なくとも５１０において、プロセッサベースのシステムの少なくとも１つのコンポーネント（例えば、衝突検出システム１４０、２００）は少なくとも部分的に、ロボットの動力学モデルに基づいて、ロボットのデータ構造表現を生成する。データ構造表現は、いくつかのリンクおよびジョイントの表現を含む。様々な適切なデータ構造および技術、例えば、様々な階層データ構造（例えば、ツリーデータ構造）または非階層データ構造（例えば、ＥＤＦデータ構造）については、本明細書の他の箇所で説明する。
【０１０４】
５１２において、プロセッサベースのシステムの少なくとも１つのコンポーネント（例えば、衝突検出システム２００）は、ロボットが動作する環境内の持続性オブジェクトのセットのデータ構造表現を生成する。データ構造表現は構成時に、環境内で既知の固定位置および向きを有し、したがって、これらのオブジェクトが構成時から実行時まで既知の位置および向きで環境内に存続すると仮定されるという点で持続的と呼ばれる、いくつかの障害物の表現を含む。様々な適切なデータ構造、例えば、様々な階層データ構造（例えば、ツリーデータ構造）または非階層データ構造（例えば、ＥＤＦデータ構造）および技法について、本明細書の他の箇所で説明する。
【０１０５】
５１４において、プロセッサベースのシステムの少なくとも１つのコンポーネント（例えば、衝突検出システム２００）は、環境内の過渡的障害物のセットのそれぞれの位置を表す占有情報を受信する。占有情報は、典型的にはロボットが動作または動作する環境を感知するように配置および配向された１つまたは複数のセンサによって生成される。占有情報は、任意の既知のフォーマットであってもよく、または開発されるフォーマットであってもよい。占有情報は、典型的には構成時間に続いて、実行時に受信される。
【０１０６】
５１６において、プロセッサベースのシステムの少なくとも１つのコンポーネント（例えば、衝突検出システム１４０、２００）は、ロボットが動作する環境内の過渡的物体（又は、過渡的障害物）のセットのデータ構造表現を生成する。データ構造表現は実行時間の少なくとも一部の間に環境内で既知の位置および向きを有し、構成時に環境内で既知の固定位置または向きを有さなかった、いくつかの過渡的障害物（存在する場合）の表現を含む。以下に記載されるように、環境内の過渡的物体のセットのデータ構造表現は、実行時または実行中に環境の物理的特性を感知するように配置および向きを定められた１つ以上のセンサによって生成されたセンサデータに基づいて生成されてもよい。様々な適切なデータ構造、例えば、様々な階層データ構造（例えば、ツリーデータ構造）または非階層データ構造（例えば、ＥＤＦデータ構造）および技法について、本明細書の他の箇所で説明する。
【０１０７】
５１８において、ロボットの少なくとも第１の数のポーズの各々について、プロセッサベースのシステムの少なくとも１つのコンポーネント（例えば、衝突検出システム１４０、２００）は、ロボットのデータ構造表現に少なくとも部分的に基づいて、ロボットの任意の部分がロボットの別の部分と衝突するかどうかを決定または評価または予測する。衝突が結果として生じるかどうかを判定するための特定の技法は使用されるデータ構造のタイプに少なくとも部分的に依存し、かつ／またはロボットを表すために使用される特定のタイプの形状または形状に部分的に基づいてもよい。衝突が結果として生じるかどうかを決定するための様々な技法は本明細書の他の場所、例えば、様々な他の方法および以下に記載される例の議論において説明される。
【０１０８】
少なくとも５２０はロボットの少なくとも第２の数のポーズのそれぞれについて、プロセッサベースのシステムの少なくとも１つのコンポーネント（例えば、衝突検出システム１４０、２００）は、ロボットの任意の部分が環境内の持続的障害物のセットのデータ構造表現に少なくとも一部は基づいて、ロボットが動作する環境内の任意の持続的障害物と衝突するか否かを判断または予測する。上述したように、持続的障害物のデータ構造表現は構成時に、タスク（例えば、実行時）を実行する際のロボットの動作中に後続の期間を通して移動または変化することが予想されないそれぞれの体積を占有することが知られている、いくつかの障害物の表現を含む。衝突が生じるかどうかを判定するための特定の技法は使用されるデータ構造のタイプに少なくとも部分的に依存し、かつ／または持続的障害物およびロボットを表すために使用される特定のタイプの幾何学的形状または幾何学的形状に部分的に基づいてもよい。衝突が結果として生じるかどうかを決定するための様々な技法は本明細書の他の場所、例えば、様々な他の方法および以下に記載される例の議論において説明される。
【０１０９】
５２２において、ロボットの少なくとも第３の数のポーズの各々について、プロセッサベースのシステムの少なくとも１つのコンポーネント（例えば、衝突検出システム１４０、２００）は、環境内の過渡的物体のセットのデータ構造表現に少なくとも部分的に基づいて、ロボットの任意の部分が環境内の任意の過渡的障害物と衝突するかどうかを決定または評価または予測する。上述のように、過渡的障害物のデータ構造表現は実行時間の少なくとも一部の間に環境内の既知の体積（例えば、位置、向き、形状、およびサイズ）を占有し、構成時に過渡的障害物が環境内で占有する既知の体積を有さなかった、環境内のいくつかの障害物（存在する場合）の表現を含む。衝突が生じるかどうかを判定するための特定の技法は使用されるデータ構造のタイプに少なくとも部分的に依存し、かつ／または過渡的障害物およびロボットを表すために使用される特定のタイプの幾何学的形状または幾何学的形状に部分的に基づいてもよい。衝突が結果として生じるかどうかを決定するための様々な技法は本明細書の他の場所、例えば、様々な他の方法および以下に記載される例の議論において説明される。
【０１１０】
５２４において、プロセッサベースのシステムの少なくとも１つのコンポーネント（例えば、衝突検出システム１４０、２００）は、ポーズのうちの少なくとも１つについて衝突が検出されたかどうかを表す信号を提供する。信号はブール値（例えば、０、１；Ｔｒｕｅ、Ｆａｌｓｅ；Ｙｅｓ、Ｎｏ）を表すことが好ましい。したがって、方法５００は、例えば定義されたアプリケーション・プログラミング・インタフェース（ＡＰＩ）に従った呼び出しを介して、別のルーチンまたは呼び出し元関数によって示すサブルーチンまたは関数として機能することができる。
【０１１１】
方法５００は例えば、再度呼び出されるか、または引用されるまで、５２６で終了してもよい。あるいは方法５００が連続的に、または例えば、マルチスレッドプロセッサ上の複数のスレッドとして実行されてもよい。
【０１１２】
図６は１つの例示としての実施形態に従った、動作計画および動作計画の作成において有用な衝突検出または評価または予測を実行するための、プロセッサベースのシステム（例えば、ロボット制御システム１２６、衝突検出システム１４０、２００）における動作の低レベル方法６００を示すフロー図である。方法６００は方法５００（図５）を実行する際に実行されてもよく、例えば、ロボット５１０を表す動力学モデル（図５）に少なくとも部分的に基づいて、ロボットの表現を生成する際に実行されてもよい。
【０１１３】
６０２において、プロセッサベースのシステムの少なくとも１つのコンポーネント（例えば、衝突検出システム１４０、２００）は、動力学モデルによって表されるロボットのデータ構造表現を生成する。例えば、ロボットの各リンクについて、衝突検出システム２００はロボットの階層表現として、例えば、４以上のツリー深さ（例えば、８−ａｒｙツリー）を有するそれぞれのツリーを生成する。また、例えば、ロボットの各リンクについて、衝突検出システム２００はそれぞれのｋ−ａｒｙツリーを生成することができ、ｋ−ａｒｙツリーの各ノードは球であり、それぞれの球の任意の部分が占有されている場合、各ノードは占有されていると識別される。
【０１１４】
図７Ａは１つの例示としての実施形態に従った、動作計画および動作計画の作成において有用な衝突検出または評価または予測を実行するための、プロセッサベースのシステム（例えば、ロボット制御システム１２６、衝突検出システム１４０、２００）における動作の低レベル方法７００ａを示すフロー図である。方法７００ａは方法５００（図５）を実行する際に実行されてもよく、例えば、ロボットが動作する環境５１２（図５）内の持続的障害物のセットのデータ構造表現を生成する際に実行されてもよい。
【０１１５】
７０２において、プロセッサベースのシステムの少なくとも１つのコンポーネント（例えば、衝突検出システム１４０、２００）は、環境内の持続的障害物を表すために境界体積の階層を生成する。例えば、衝突検出システム２００は、軸整列境界ボックス（ＡＡＢＢ）のツリー、方向付けられた（軸整列されていない）境界ボックスのツリー、または球体のツリーを生成する。特に、これらのツリー型データ構造のいずれかのリーフはデータ構造の他のノードとは異なる形状とすることができ、例えば、全てのノードは、三角形メッシュの形態をとることができるルートノードを除いてＡＡＢＢである。
【０１１６】
図７Ｂは１つの例示としての実施形態に従った、動作計画および動作計画の作成において有用な衝突検出または評価または予測を実行するための、プロセッサベースのシステム（例えば、ロボット制御システム１２６、衝突検出システム１４０、２００）における動作の低レベル方法７００ｂを示すフロー図である。方法７００ｂは方法７００ａ（図７）を実行する際に、例えば、ロボットが動作する環境７０２（図７）内の持続的障害物を表す境界体積の階層を生成する際に実行することができる。
【０１１７】
７０４において、プロセッサベースのシステムの少なくとも１つのコンポーネント（例えば、衝突検出システム１４０、２００）は、環境内の持続的障害物を表すリーフノードとして三角形メッシュを有する境界ボックスの階層を生成する。上述したように、ツリー型データ構造のリーフはデータ構造の他のノードとは異なる形状とすることができ、例えば、全てのノードは、三角メッシュの形態をとることができるルートノードを除いてＡＡＢＢである。
【０１１８】
図７Ｃは１つの例示としての実施形態に従った、動作計画および動作計画の作成において有用な衝突検出または評価または予測を実行するための、プロセッサベースのシステム（例えば、ロボット制御システム１２６、衝突検出システム１４０、２００）における動作の低レベル方法７００ｃを示すフロー図である。方法７００ｃは方法７００ａ（図７）を実行する際に、例えば、ロボットが動作する環境７０２（図７）内の持続的障害物を表す境界体積の階層を生成する際に実行することができる。
【０１１９】
７０６において、プロセッサベースのシステムの少なくとも１つのコンポーネント（例えば、衝突検出システム１４０、２００）は、環境内の持続的障害物を表す球体の階層を生成する。境界体積として球を使用することは、迅速な比較を容易にする（すなわち、球が互いに重なり合うかどうかを決定することは計算的に容易である）。
【０１２０】
図７Ｄは１つの例示としての実施形態に従った、動作計画および動作計画の作成において有用な衝突検出または評価または予測を実行するための、プロセッサベースのシステム（例えば、ロボット制御システム１２６、衝突検出システム１４０、２００）における動作の低レベル方法７００ｄを示すフロー図である。方法７００ｄは方法７００ａ（図７）を実行する際に、例えば、ロボットが動作する環境７０２（図７）内の持続的障害物を表す境界体積の階層を生成する際に実行することができる。
【０１２１】
７０８において、プロセッサベースのシステムの少なくとも１つのコンポーネント（例えば、衝突検出システム１４０、２００）は、環境内の持続的障害物を表すｋ−ａｒｙ球ツリーを生成する。上述のように、境界体積として球体を使用することは、高速比較を容易にする（すなわち、球体が互いに重なり合うかどうかを決定することは計算上容易である）。
【０１２２】
図７Ｅは１つの例示としての実施形態に従った、動作計画および動作計画の作成において有用な衝突検出または評価または予測を実行するための、プロセッサベースのシステム（例えば、ロボット制御システム１２６、衝突検出システム１４０、２００）における動作の低レベル方法７００ｅを示すフロー図である。方法７００ｅは方法７００ａ（図７）を実行する際に、例えば、ロボットが動作する環境７０２（図７）内の持続的障害物のセットを表す境界体積の階層を生成する際に実行することができる。
【０１２３】
７１０において、プロセッサベースのシステムの少なくとも１つのコンポーネント（例えば、衝突検出システム１４０、２００）は、環境内の持続的障害物を表す軸整列境界ボックス（ＡＡＢＢ）の階層を生成する。
【０１２４】
図７Ｆは１つの例示としての実施形態に従った、動作計画および動作計画の作成において有用な衝突検出または評価または予測を実行するための、プロセッサベースのシステム（例えば、ロボット制御システム１２６、衝突検出システム１４０、２００）における動作の低レベル方法７００ｆを示すフロー図である。方法７００ｆは方法７００ａ（図７）を実行する際に、例えば、ロボットが動作する環境７０２（図７）内の持続的障害物を表す境界体積の階層を生成する際に実行することができる。
【０１２５】
７１２において、プロセッサベースのシステムの少なくとも１つのコンポーネント（例えば、衝突検出システム１４０、２００）は、環境内の持続的障害物を表す指向性境界ボックスの階層を生成する。
【０１２６】
図７Ｇは１つの例示としての実施形態に従った、動作計画および動作計画の作成において有用な衝突検出または評価または予測を実行するための、プロセッサベースのシステム（例えば、ロボット制御システム１２６、衝突検出システム１４０、２００）における動作の低レベル方法７００ｇを示すフロー図である。方法７００ｇは方法５００（図５）を実行する際に実行されてもよく、例えば、ロボットが動作する環境５１２（図５）内の持続的障害物のセットのデータ構造表現を生成する際に実行されてもよい。
【０１２７】
７１４において、プロセッサベースのシステムの少なくとも１つのコンポーネント（例えば、衝突検出システム１４０、２００）は、環境内の持続的障害物を表すボクセル占有情報を記憶するオクツリーを生成する。
【０１２８】
図８は１つの例示としての実施形態に従った、動作計画および動作計画の作成において有用な衝突検出または評価または予測を実行するための、プロセッサベースのシステム（例えば、ロボット制御システム１２６、衝突検出システム１４０、２００）における動作の低レベル方法８００を示すフロー図である。方法８００は方法５００（図５）を実行する際に実行されてもよく、例えば、ロボットが動作する環境５１６（図５）内の過渡的障害物のセットのデータ構造表現を生成する際に実行されてもよい。
【０１２９】
８０２において、プロセッサベースのシステムの少なくとも１つのコンポーネント（例えば、衝突検出システム１４０、２００）またはハブまたは環境センサシステムコントローラ１２４（図１）は、環境中の過渡的障害物を表すセンサ導出情報（又は、センサ由来情報）を受信する。センサデータはハブまたは環境センサシステムコントローラ１２４（図１）を介して衝突検出システム２００にルーティングされるが、１つまたは複数のセンサから直接受信されてもよい。センサ情報の一部または全部は生のまたは前処理されたデータの形態をとることができ、任意の既存のまたは後に作成されたフォーマットまたはスキーマにフォーマットすることができる。
【０１３０】
８０４において、プロセッサベースのシステムの少なくとも１つのコンポーネント（例えば、衝突検出システム１４０、２００）またはハブまたは環境センサシステムコントローラ１２４（図１）は、センサ情報を占有情報に変換する。占有情報は、既存または後に再作成された任意のフォーマットまたはスキーマでフォーマットすることができる。
【０１３１】
８０６において、プロセッサベースのシステムの少なくとも１つのコンポーネント（例えば、衝突検出システム１４０、２００）は、占有情報から環境内の過渡的障害物のデータ構造表現を生成する。本明細書で論じるように、様々なツリー構造を含む、いくつかの階層表現タイプのうちの任意のものを使用することができる。あるいは、例えばユークリッド距離場（ＥＤＦ）表現など、様々な非階層表現を使用することができる。持続的障害物の階層的および／または非階層的表現を生成するために使用される、図７Ａ〜７Ｇを参照して説明される様々な動作ならびにそれぞれの階層的および／または非階層的表現は、過渡的障害物の階層的および／または非階層的表現を生成するために使用され得る。このことは、簡潔にするためにここでは繰り返さない。
【０１３２】
図９は１つの例示としての実施形態に従った、動作計画および動作計画の作成において有用な衝突検出または評価または予測を実行するための、プロセッサベースのシステム（例えば、ロボット制御システム１２６、衝突検出システム１４０、２００）における動作の低レベル方法９００を示すフロー図である。方法９００は方法５００（図５）を実行する際に、例えば、ロボットの任意の部分がロボット５１８の別の部分と衝突するかどうかを判定する際に、ロボットの任意の部分が任意の持続的障害物５２０と衝突するかどうかを判定する際に、またはロボットの任意の部分が任意の過渡的障害物５２２（図５）と衝突するかどうかを判定する際に実行され得る。
【０１３３】
９０２において、第１のポーズと第２のポーズとの間のロボット付属物の運動について、プロセッサベースのシステムの少なくとも１つのコンポーネント（例えば、衝突検出システム１４０、２００）は、ロボット付属物のいくつかの中間ポーズを計算する。例えば、衝突検出システム２００は、連続的に隣接するポーズの対の間の次元（又は、距離／寸法／dimension）が動作細分化粒度についての受信値を満足するまで、ロボットのＣ空間内のロボット付属物の第１のポーズと第２のポーズとの間の複数の中間ポーズを計算してもよい。
【０１３４】
図１０は１つの例示としての実施形態に従った、動作計画および動作計画の作成において有用な衝突検出または評価または予測を実行するための、プロセッサベースのシステム（例えば、ロボット制御システム１２６、衝突検出システム１４０、２００）における動作の低レベル方法１０００を示すフロー図である。方法１０００は方法５００（図５）を実行する際に、例えば、ロボット付属物のいくつかの中間ポーズを計算する際９０２（図９）に実行することができる。
【０１３５】
方法１０００は１００２で、例えば、呼び出しルーチンまたはモジュールを介した呼び出しに応答して、またはプロセッサベースのシステムの少なくとも１つのコンポーネント（例えば、衝突検出システム１４０、２００）への信号の受信または電力の印加の検出に応答して開始することができる。
【０１３６】
１００４において、プロセッサベースのシステムの少なくとも１つのコンポーネント（例えば、衝突検出システム１４０、２００）は、ロボット付属物の関節の各々について反復ループを実行する。
【０１３７】
反復ループでは、１００６において、プロセッサベースのシステムの少なくとも１つのコンポーネント（例えば、衝突検出システム１４０、２００）が第１のポーズおよび第２のポーズにおける関節のそれぞれの位置の間を補間して、ｎ番目の中間ポーズを得る。
【０１３８】
１００８において、プロセッサベースのシステムの少なくとも１つのコンポーネント（例えば、衝突検出システム１４０、２００）はそれぞれの反復について、最近傍ポーズのそれぞれの対における関節のそれぞれの位置の間で（又は、関節のそれぞれの位置の間を）反復的に補間する。
【０１３９】
１０１０において、プロセッサベースのシステムの少なくとも１つのコンポーネント（例えば、衝突検出システム１４０、２００）は、終了条件に達したかどうかを判定する。終了条件は例えば、連続的に隣接するポーズ間の距離が、指定された動作細分粒度値または指定を満たすことであってもよい。終了条件は例えば、追加的に又は代替的に、完了することができる反復の最大数を含むことができる。終了条件が満たされたという決定に応答して、制御は１０１２に移る。さもなければ、制御は１００８に戻る。
【０１４０】
方法１０００は例えば、再び呼び出されるが、または引用されるまで、１０１２で終了してもよい。あるいは方法１０００が連続的に、または例えば、マルチスレッドプロセッサ上の複数のスレッドとして実行してもよい。
【０１４１】
言い換えれば、アルゴリズムは最初の一対のポーズ（例えば、ポーズＡおよびポーズＺ）から開始する。第１の中間ポーズ（例えば、ポーズＭ）はポーズの最初の対（例えば、ポーズＡおよびポーズＺ）の間で見つけられる。続いて、第２の中間ポーズ（例えば、ポーズＦ）が初期ポーズ対の１つのポーズ（例えば、ポーズＡ）と第１の中間ポーズ（例えば、ポーズＭ）との間で見つけられる。任意選択的に、第３の中間ポーズ（例えば、ポーズＶ）が初期ポーズ対の他方のポーズ（例えば、ポーズＺ）と第１の中間ポーズ（例えば、ポーズＭ）との間で見つけられる。次いで、アルゴリズムは反復的に繰り返すことができ、連続的に見つけられたポーズに基づいて、最も近い隣接ポーズの対の間のポーズを見つけることができる。
【０１４２】
図１１は１つの例示としての実施形態に従った、動作計画および動作計画の作成において有用な衝突検出または評価または予測を実行するための、プロセッサベースのシステム（例えば、ロボット制御システム１２６、衝突検出システム１４０、２００）における動作の低レベル方法１１００を示すフロー図である。方法１１００は方法５００（図５）を実行する際に、例えば、ロボット付属物のいくつかの中間ポーズを計算する際９０２（図９）に実行することができる。
【０１４３】
１１０２において、複数のポーズの各々について、プロセッサベースのシステムの少なくとも１つのコンポーネント（例えば、衝突検出システム１４０、２００）は、運動ロボットモデルに対して順方向動力学を実行して、ロボット付属物の各リンクのＣ空間から自由空間への多数の変換（又は、変形）を計算する。
【０１４４】
図１２は１つの例示としての実施形態に従った、動作計画および動作計画の作成において有用な衝突検出または評価または予測を実行するための、プロセッサベースのシステム（例えば、ロボット制御システム１２６、衝突検出システム１４０、２００）における動作の低レベル方法１２００を示すフロー図である。方法１２００は方法５００（図５）を実行する際に、例えば、ロボット付属物のいくつかの中間ポーズを計算する際９０２（図９）に実行することができる。
【０１４５】
１２０２において、プロセッサベースのシステムの少なくとも１つのコンポーネント（例えば、衝突検出システム１４０、２００）は、ロボット付属物の少なくとも一部が１つのポーズでロボット付属物の別の部分と衝突するかどうかを決定する。ロボット付属物の少なくとも一部が１つのポーズでロボット付属物の別の部分と衝突するかどうかを決定するための様々な技法およびアルゴリズムを使用することができ、これには本明細書で説明するものが含まれるが、これに限定されない。
【０１４６】
１２０４において、プロセッサベースのシステムの少なくとも１つのコンポーネント（例えば、衝突検出システム１４０、２００）は、１つのポーズでロボット付属物の少なくとも一部が環境内の任意の持続的障害物と衝突するかどうかを決定する。第１のポーズでロボット付属物の少なくとも一部が１つの環境内の任意の持続的障害物と衝突するかどうかを決定するための様々な技法およびアルゴリズムを使用することができ、これには本明細書で説明するものが含まれるが、これに限定されない。
【０１４７】
１２０６において、プロセッサベースのシステムの少なくとも１つのコンポーネント（例えば、衝突検出システム１４０、２００）は、１つのポーズでロボット付属物の少なくとも一部が環境内の任意の過渡的障害物と衝突するかどうかを決定する。１つの第１のポーズでロボット付属物の少なくとも一部が環境内の任意の過渡的障害物と衝突するかどうかを決定するための様々な技法およびアルゴリズムを使用することができ、これには本明細書で説明するものが含まれるが、これに限定されない。
【０１４８】
図１３は１つの例示としての実施形態に従った、動作計画および動作計画の作成において有用な衝突検出または評価または予測を実行するための、プロセッサベースのシステム（例えば、ロボット制御システム１２６、衝突検出システム１４０、２００）における動作の低レベル方法１３００を示すフロー図である。方法１３００は方法５００（図５）を実行する際に、例えば、ロボット付属物のいくつかの中間ポーズを計算する際９０２（図９）に実行することができる。
【０１４９】
少なくとも１３０２において、プロセッサベースのシステムの少なくとも１つのコンポーネント（例えば、衝突検出システム１４０、２００）はロボット付属物の少なくとも一部がロボット付属物の別の部分と、ロボット付属物が一方のポーズから他方のポーズへ移動する際に通過する複数の中間ポーズを介して、１つのポーズ（例えば、第１のポーズ）と別のポーズ（例えば、第２のポーズ）との間を移動する際に衝突するかどうかを判断する。
【０１５０】
１３０４において、プロセッサベースのシステムの少なくとも１つのコンポーネント（例えば、衝突検出システム１４０、２００）はロボット付属物が一方のポーズから他方のポーズへ移動する際に通過する複数の中間ポーズを介して、ロボット付属物の少なくとも一部が１つのポーズ（例えば、第１のポーズ）と別のポーズ（例えば、第２のポーズ）との間を移動する際に環境内の任意の持続的障害物と衝突するかどうかを決定する。
【０１５１】
１３０６において、プロセッサベースのシステムの少なくとも１つのコンポーネント（例えば、衝突検出システム１４０、２００）はロボット付属物が一方のポーズから他方のポーズへ移動する際に通過する複数の中間ポーズを介して、ロボット付属物の少なくとも一部が１つのポーズ（例えば、第１のポーズ）と他のポーズ（例えば、第２のポーズ）との間を移動する際に環境内の任意の過渡的障害物に衝突するかどうかを判断する。
【０１５２】
例
様々な形状は例えば、オクツリー（又は、オクトツリー／八分木）、ボックスのセット、またはユークリッド距離フィールド（ＥＤＦ）のいずれかで効率的に表すことができる。
【０１５３】
オクツリーは、ボクセル占有データを記憶するための階層データ構造である。ツリー構造は、衝突検出が必要に応じてツリー構造の固有の階層まで降下することを可能にし、衝突検出プロセスの計算効率を向上させる。オクツリーの１つの利点は、固有の階層である。もちろん、階層的であり、適切であり得る他のデータ構造が存在する。
【０１５４】
ボックスのセットは例えば、軸整列境界ボックス（ＡＡＢＢ）のツリー、方向付けられた（軸整列されていない）境界ボックスのツリー、または球体のツリーなど、様々な形態をとることができる。特に、これらのツリー型データ構造のいずれかのリーフはデータ構造の他のノードとは異なる形状とすることができ、例えば、全てのノードは、三角形メッシュの形態をとることができるルートノードを除いてＡＡＢＢである。境界体積表現の選択は、対応するデータ構造を構築するために必要な待ち時間と、例えば衝突検出が完了する前にどれだけのツリーを横断する必要があるかを含むコンピューティング衝突（又は、衝突計算）の待ち時間との間のトレードオフを伴う。例えば、境界体積として球を使用することは、高速比較を容易にする（すなわち、球が互いにオーバーラップするかどうかを決定することは計算的に容易である）。例えば、本明細書の他の箇所で論じるように、ロボットの各リンクを表すためにｋ−ａｒｙ球ツリーを使用することが好ましい場合がある。実装によっては、環境を表現するボクセルをＡＡＢＢの集合にまとめることができる。これはボクセル・データを十分に単純化することができ、ある状況ではオクツリーを使用するよりも計算的に高速であり、よりメモリ効率がよい。
【０１５５】
ＥＤＦは作業空間をボクセルの３Ｄグリッドに離散化し、各ボクセルの値は、その作業空間内の最も近い障害物までの距離を符号化する。作業空間には、ロボットがロボットのあらゆるポーズで到達する可能性のあるすべての空間が含まれる。
【０１５６】
典型的な問題では、ｉ）ロボット、ｉｉ）持続的障害物、およびｉｉｉ）過渡的障害物の３つのタイプのアイテムが表される。上述の幾何学的形状のいずれかを選択して、これらの項目のいずれかを表すことができる。
【０１５７】
ロボット
【０１５８】
ロボットは、関節によって接続されたリンクのツリーとしてモデル化することができる。単一のロボット付属物またはアームの場合、この「ツリー」はしばしば単項であるが、例えば、２つ以上の子リンクを有するリンクを用いて、より一般的であり得る。
【０１５９】
ロボットを効率的に表現し、計算的に簡単な衝突検出を容易にするために、ロボットのリンクの各々をそれぞれのｋ−ａｒｙ球ツリーで表現することが有利であり得る。例えば、各リンクは、深さ４のそれぞれの８−ａｒｙツリーで表され、合計５８５個の球で表される。
【０１６０】
ｋ−ａｒｙツリーは、各親がｋ個の子を有するツリーである。例えば、ｋ−ａｒｙツリーは、ｋ−ａｒｙ球体ツリーの各ノードがその球の任意の部分が占有されている場合に占有されていると見なされる球体であるｋ−ａｒｙ球体ツリーの形態をとることができる。三角形メッシュによって表されるロボットリンクを考える。ツリーのルートは、リンク全体を囲む球である。ｋ個の子はリンクジオメトリの構成三角形のすべてを一緒にカバーする球体であり、球体であるため、必然的に互いに重なり合う。これらの子は、それぞれｋ個の子などを持つ。深さ４の８−ａｒｙツリーを使用する実装では、以下に説明する図１４Ａ〜図１４Ｅに示すように、リンクを表すために５８５個の球につながる：ルートについて１、ルートの子について８、次のレベルにおいて６４、およびリーフレベルにおいて５１２。
【０１６１】
図１４Ａは、例示される一実施形態による、三角形メッシュ１４００として表されるロボット付属物の一部を示す。
【０１６２】
この例では、図１４Ｂ、図１４Ｃ、図１４Ｄ、および図１４Ｅのシーケンスを介して示されるように、ロボット付属物をほぼ表すために、深さ４の球ツリーの形態のデータ構造が使用される。
【０１６３】
特に、図１４Ｂ、図１４Ｃ、図１４Ｄおよび図１４Ｅは、それぞれ、球ツリーの４つの連続するレベルを示す。図１４Ｂに示す第１のレベルでは、単一の球１４０２がロボット付属物１４００全体を包含する。図１４Ｃに示される第２のレベルでは、８つの球１４０４（個別には符号が付されていない）がロボット付属物１４００全体を包含する。図１４Ｄに示される第３のレベルでは、６４個の球体１４０６（個別には符号がふされていない）がロボット付属物１４００全体を包含する。図１４Ｄに示す第３のレベルでは、５１２個の球１４０６（個別には呼び出されていない）がロボット付属物１４００全体を包含する。
【０１６４】
障害物
実行時間中に環境内で一貫したまたは不変の体積を占有し、その占有体積が構成時に既知である障害物の場合、これらの持続的障害物をユークリッド距離フィールドで表すことが好ましい場合がある。
【０１６５】
実行時に環境内で一貫性のないまたは変化する体積を占有する、または実行時の存在または不在が構成時に不知である障害物の場合、占有体積（例えば、位置、サイズ）を特徴付ける特定の情報（存在する場合）は、１つまたは複数のセンサによって捕捉され、その捕捉情報から識別される。ほとんどの状況で採用される特定のセンサ技術は問題ではないかもしれないが、センサデータは何らかの定義されたフォーマット（例えば、点群）で提供されるであろう。プロセッサベースのシステムは、受信したセンサデータまたは情報を占有グリッドに変換することができる。例えば、リストまたはツリー構造、またはオクツリーにおいて、障害物を表すために、軸整列された境界ボックスを使用することが好ましい場合がある。
【０１６６】
図１５Ａはロボット付属物１５０４を有するロボット１５０２が１つの図示された実施形態に従って、多数の障害物１５０６ａ、１５０６ｂ、１５０６ｃ（例えば、極）を有するタスクを実行する環境１５００を示し、ロボット付属物１５０４の幾何学的形状は、三角形メッシュによって表される。
【０１６７】
図１５Ｂは、１つの例示としての実施形態に従った、ロボット付属物１５０４の幾何学的形状の表現が球形木に変換された、図１５Ａの環境１５００を示す。
【０１６８】
注目すべきは、ロボット付属物の幾何学的形状が球体ツリーに変換され、シーンがＥＤＦに変換されると、シナリオは図１５Ｂに示されるように見えることである。距離フィールドは、距離がゼロであるあらゆる位置においてボクセルでレンダリングされることに留意されたい。
【０１６９】
プロセス
動作（例えば、２つのポーズ間の動作）に関連する衝突チェックに使用するための例示的なプロセスを以下に示す。
【０１７０】
プロセッサベースのシステム（例えば、衝突検出システム１４０、２００）は第１のポーズ（例えば、開始）と第２のポーズ（例えば、終了ポーズ）との間の複数のポーズを計算する。これは、たとえば、ジョイント間またはジョイントの位置間を補間することによって行うことができる。たとえば、２つのジョイントを持つロボットの開始ポーズはジョイント位置（３０、６０）に、終了ポーズはジョイント位置（４０、８０）にある場合がある。中間ポーズは、開始ポーズと終了ポーズとの間の中間のジョイント位置（３５、７０）で生成されてもよい。中間ポーズの生成は、反復的に行われてもよい。例えば、この中間ポーズと開始ポーズの間の１つ以上のポーズが生成され、終了ポーズは例えば、ジョイントポジション（３２．５，６５）及びジョイントポジション（３７．５，７５）で生成される。この補間は、終了条件に到達するまで、例えば開始ポーズと終了ポーズとの間に十分な数のポーズが存在する条件まで、反復的に続行することができる。終了条件は、動作細分粒度の入力を使用して定義することができる。例えば、ポーズ間の距離が動作細分割粒度値よりも小さい場合、終了条件が満たされ、反復は停止する。さらに、例えば待ち時間制約を強制するために、最大反復回数を終了条件として定義することができる。
【０１７１】
ポーズの各々に対して、プロセッサベースのシステム（例えば、衝突検出システム１４０、２００）はロボットモデル上で順方向動力学を実行し、ロボットリンクの各々のＣ空間から自由空間への変換を計算する。
【０１７２】
各ポーズについて、プロセッサベースのシステム（例えば、衝突検出システム１４０、２００）は、ポーズが自己衝突または環境内の障害物との衝突をもたらすかどうかを計算する。モーション内の任意のポーズ（例えば、開始ポーズ、終了ポーズ、中間ポーズ）が衝突をもたらす場合、モーションは衝突条件をもたらし、衝突検出システムは適切なブール値（例えば、ＣＯＬＬＩＳＩＯＮ）を返す。モーション内のポーズ（例えば、開始ポーズ、終了ポーズ、中間ポーズ）が衝突をもたらさない場合、モーションは衝突条件をもたらし、衝突検出システムは適切なブール値（例えば、ＮＯ  ＣＯＬＬＩＳＩＯＮ）を返す。
【０１７３】
これらの操作は、ある程度までオーバーラップ（パイプライン化）することができる。通常、既に生成されたポーズを衝突検査する前に、すべてのポーズが生成されるのを待つ必要はない。また、ポーズが衝突をもたらすと決定された場合、特定のモーションの結果を変更しないので、モーション内の他のポーズをチェックし続ける必要はない。
【０１７４】
衝突検出
ツリー構造においてさえ、衝突検出は最終的に、２つの形状が交差するかどうかを決定することに発展する。ツリーは、交差をチェックするために形状のセットを維持する特に便利な方法である。衝突検出はツリー構造のルートから開始し、下に（すなわち、リーフノードに向かって）進むことができる。いずれかのレベルに交差点がない場合、ロボットと障害物が交差せず、プロセスが終了する。非リーフノードレベルに交差がある場合、衝突評価プロセスは、ツリー構造の次のレベルに進む。リーフレベルに交差点がある場合、ロボットと障害物が交差する。
【０１７５】
２つの球の衝突試験
【０１７６】
直下に提供される例示的な擬似コードは、２つの球体間に衝突があるかどうかを決定するための試験動作を示す。
2021534985.tif 000003
【０１７７】
衝突試験球と軸アラインメント結合ボックス（ＡＡＢＢ）
直下に提供される例示的な擬似コードは、球体と軸整列境界ボックスとの間に衝突があるかどうかを決定するための試験動作を示す。
2021534985.tif 000004
ＡＡＢＢエクステントフィールドは、各軸に沿ったボックスの半次元の３ベクトル表現である。Ｃｌａｍｐ（）関数は、第１の引数を第２の引数と第３の引数との間に制約する。
【０１７８】
２つのスフィアツリーの衝突テスト
ツリーとして表される物体（例えば、ロボット、障害物）が衝突するかどうかの決定は、データ構造の固有の階層的性質のために高速であり得る。直下に提供される例示的な擬似コードは、２つの球ツリー間に衝突があるかどうかを決定するためのテスト動作のための再帰的アルゴリズムを示す。
2021534985.tif 000005
関数ＤｅｓｃｅｎｄＴｒｅｅＡはこの反復でツリーＡまたはツリーＢをさらに探索すべきかどうかを決定するために、降下規則を符号化する。
【０１７９】
球ツリーとユークリッド距離場の衝突試験
球ツリーと距離フィールドとの間の衝突チェックは、２つの球ツリーの場合と同様である。再び、球ツリーの固有の階層的性質はツリーが十分な解像度まで評価されるとすぐに、エグジットするために利用される。直下に提供される例示的な擬似コードは、球ツリーと距離フィールドとの間に衝突があるかどうかを決定するためのテスト動作を示す。
2021534985.tif 000006
【０１８０】
上記の詳細説明においては、ブロック図、模式図及び実施例を用いて、多様な装置及び／又は方法の実施形態について記載している。これらのブロックダイヤグラム、概略図及び実施例は１つまたは２つ以上の機能及び／または動作を含んでいるが、当業者には明らかなように、これらのブロックダイヤグラム、流れ図及び実施例におけるそれぞれの機能及び／または動作は個々に及び／または一括して、多様なハードウェア、ソフトウェア、ファームウェア、または事実上任意のこれらの組み合わせによって実装することができる。一実施形態では、本主題がブール回路、特定用途向け集積回路（ＡＳＩＣ）および／またはＦＰＧＡを介して実装され得る。しかしながら、本明細書に開示された実施形態は全体的にまたは部分的に、標準的な集積回路における様々な異なる実装において、１つまたは複数のコンピュータ上で実行される１つまたは複数のコンピュータプログラムとして（例えば、１つまたは複数のコンピュータシステム上で実行される１つまたは複数のプログラムとして）、１つまたは複数のプロセッサ（例えば、マイクロプロセッサ）上で実行される１つまたは複数のプログラムとして、ファームウェアとして、またはそれらの事実上任意の組合せとして実装することができ、回路を設計すること、および／またはソフトウェアおよび／またはファームウェアのためのコードを書き込むことは、本開示に照らして当業者の技術の範囲内で十分にあることを、当業者は認識するであろう。
【０１８１】
当業者は本明細書に記載された方法またはアルゴリズムの多くが、追加の動作を使用し、いくつかの動作を省略し、および／または指定された順序とは異なる順序で動作を実行し得ることを認識するであろう。
【０１８２】
さらに、当業者は、本明細書で教示されるメカニズムがハードウェア、例えば、１つまたは複数のＦＰＧＡまたはＡＳＩＣにおいて実装されることが可能であることを理解するであろう。
【０１８３】
上記の種々の実施形態は、更なる実施形態を提供するように組み合わされることが可能である。「自動運転車と再構成可能な動作計画プロセッサの動作計画」と題された２０１７年６月９日に出願された国際出願ＰＣＴ／ＵＳ２０１７／０３６８８０、２０１６年１月５日に出願された「特殊なロボット動作計画ハードウェアおよびそれを作成および使用する方法」と題された国際特許出願公開第ＷＯ２０１６／１２２８４０号、２０１８年１月１２日出願の「動的物体を有する自動車の移動を容易にする装置、方法及び物品」と題する米国特許出願第６２／６１６，７８３号、２０１８年２月６日出願の「離散化された環境を１つ又は複数のプロセッサに記憶し、その動作を改善するロボットの移動計画」と題する米国特許出願第６２／６２６，９３９号、及び２０１８年８月２３日出願の「ロボット工学の動作計画に役立つ衝突検出」と題する米国特許出願第６２／７２２，０６７号を含むがこれらに限定されない本明細書で言及され、又は、添付のアプリケーションデータシートに記載された本出願人に譲渡された米国特許出願公開、米国特許出願、外国特許、および外国特許出願はその全体が参照により本明細書に組み込まれる。上記の詳細説明に照らして、上記の及び他の変形がそれらの実施形態に対して行われることが可能である。一般に、以下の特許請求の範囲において、使用される用語は特許請求の範囲を、明細書および特許請求の範囲に開示される特定の実施形態に限定するように解釈されるべきではなく、そのような特許請求の範囲が権利を有する均等物の全範囲とともに、すべての可能な実施形態を含むように解釈されるべきである。したがって、特許請求の範囲は、本開示によって限定されない。
【図１】
2021534985.tif 000007
【図２】
2021534985.tif 000008
【図３】
2021534985.tif 000009
【図４】
2021534985.tif 000010
【図５】
2021534985.tif 000011
【図６】
2021534985.tif 000012
【図７Ａ−７Ｄ】
2021534985.tif 000013
【図７Ｅ−７Ｇ】
2021534985.tif 000014
【図８】
2021534985.tif 000015
【図９】
2021534985.tif 000016
【図１０】
2021534985.tif 000017
【図１１】
2021534985.tif 000018
【図１２】
2021534985.tif 000019
【図１３】
2021534985.tif 000020
【図１４Ａ】
2021534985.tif 000021
【図１４Ｂ】
2021534985.tif 000022
【図１４Ｃ】
2021534985.tif 000023
【図１４Ｄ】
2021534985.tif 000024
【図１４Ｅ】
2021534985.tif 000025
【図１５Ａ】
2021534985.tif 000026
【図１５Ｂ】
2021534985.tif 000027
【手続補正書】
【提出日】令和3年2月18日(2021.2.18)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ロボットの動作計画に有用なプロセッサベースのシステムの少なくとも１つのコンポーネントの動作方法であって、
構成時における、
動力学モデルによって表されるロボットについて、前記ロボットの前記データ構造表現を生成するステップと、
前記環境について、前記環境内の前記持続的障害物のセットの前記データ構造表現を生成するステップであって、前記データ構造表現は前記第１の数の障害物の各々の前記障害物によって占められる前記環境内のそれぞれの体積が前記構成時に既知である前記第１の数の障害物の表現を含む、該ステップと、
実行時における、
ロボットの少なくとも第１の数のポーズの各々について、回路の少なくとも１つのセットによって、前記ロボットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットの他の部分と衝突するかどうかを決定するステップと、
前記ロボットの少なくとも第２の数のポーズの各々について、回路の少なくとも１つのセットによって、前記環境内の持続的障害物のセットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットが動作する前記環境内の任意の持続的障害物と衝突するかどうかを決定するステップであって、前記データ構造表現は前記第１の数の障害物の各々の前記障害物によって占められる前記環境内のそれぞれの体積が前記構成時に既知である前記第１の数の障害物の表現を含む、該ステップと、
前記ロボットの少なくとも第３の数のポーズの各々について、回路の少なくとも１つのセットによって、前記環境内の過渡的障害物のセットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記環境内の任意の過渡的障害物と衝突するかどうかを決定するステップであって、前記データ構造表現は、もし存在するのであれば前記第２の数の障害物の各々の前記障害物によって占有される前記環境内のそれぞれの体積が前記実行時の少なくとも一部で既知であり、前記障害物の各々によって占有される前記環境内のそれぞれの体積が前記構成時に不知である前記環境内の第２の数の障害物の表現を含む、該ステップと、
前記ポーズのうちの少なくとも１つについて衝突が検出されたかどうかを表す信号を提供するステップ
を有する方法。
【請求項２】
前記環境内の前記持続的障害物のセットの前記データ構造表現を生成するステップは、境界体積の階層を生成するステップを含む、請求項１に記載の方法。
【請求項３】
境界体積の階層を生成するステップは、リーフノードとして三角形メッシュを有する境界ボックスの階層を生成するステップを含む、請求項２に記載の方法。
【請求項４】
境界体積の階層を生成するステップは、球体の階層を生成するステップを含む、請求項２に記載の方法。
【請求項５】
境界体積の階層を生成するステップは、ｋ−ａｒｙ球ツリーを生成するステップを含む、請求項２に記載の方法。
【請求項６】
境界体積の階層を生成するステップは、軸整列境界ボックスの階層又は境界体積の階層を生成するステップを含む、請求項２に記載の方法。
【請求項７】
前記環境内の前記持続的障害物のセットの前記データ構造表現を生成するステップは、前記環境内の前記持続的障害物のセットを表すボクセル占有情報を記録するオクツリーを生成するステップを含む、請求項１に記載の方法。
【請求項８】
前記ロボットの前記データ構造表現を生成するステップは、ｋ−ａｒｙツリーを生成するステップを含む、請求項１に記載の方法。
【請求項９】
前記ロボットの前記データ構造表現を生成するステップは、前記ロボットの複数のリンクのそれぞれについて、それぞれのｋ−ａｒｙツリーを生成するステップを含む、請求項１に記載の方法。
【請求項１０】
前記ロボットの前記データ構造表現を生成するステップは、前記ロボットの複数のリンクのそれぞれについて、４以上のツリー深さを有するそれぞれの８−ａｒｙツリーを生成するステップを含む、請求項１に記載の方法。
【請求項１１】
前記ロボットの前記データ構造表現を生成するステップは、前記ロボットの複数のリンクのそれぞれについて、それぞれのｋ−ａｒｙツリーを生成するステップを含み、前記ｋ−ａｒｙツリーの各ノードは前記それぞれの球体の任意の部分が占有されている場合に占有されていると識別される球体である、請求項１に記載の方法。
【請求項１２】
前記ロボットが、ロボット付属物を含み、
前記ロボット付属物の第１のポーズと前記ロボット付属物の第２のポーズの間の前記ロボット付属物の動作について、前記ロボット付属物のＣ空間における前記ロボット付属物の前記第１のポーズと前記第２のポーズの間の複数の中間ポーズを、前記Ｃ空間において連続的に隣接するポーズの複数の対の間の距離が動作細分割粒度についての受信値を満たすまで計算するステップをさらに有する、請求項１に記載の方法。
【請求項１３】
前記ロボット付属物の複数の中間ポーズを計算するステップは、
前記ロボット付属物の関節のそれぞれについて、前記第１および前記第２のポーズにおける前記関節のそれぞれの位置および向きの間を補間してｎ番目の中間ポーズを取得するステップと、
前記ロボット付属物の関節のそれぞれについて、終了条件に達するまで、それぞれのｉ番目の反復についてのそれぞれの最近傍ポーズの対における前記関節のそれぞれの位置および向きの間を反復的に補間するステップをさらに有する、請求項１２に記載の方法。
【請求項１４】
前記終了条件はｎ番目の中間ポーズを得るように動作細分化粒度を満たす連続的に隣接するポーズ間の距離であり、
複数の前記反復に対して、前記終了条件に達したかどうかを決定するステップをさらに有する、請求項１３に記載の方法。
【請求項１５】
複数の前記ポーズの各々について、動力学ロボットモデル上で順方向動力学計算を実行して、前記ロボット付属物の各リンクの複数の変換を計算するステップをさらに含む、請求項１２に記載の方法。
【請求項１６】
前記ロボットの任意の部分が前記ロボットの他の部分と衝突するかどうかを決定するステップ、前記ロボットの任意の部分が任意の持続的障害物と衝突するかどうかを決定するステップ、又は、前記ロボットの任意の部分が任意の過渡的障害物と衝突するかどうかを決定するステップの少なくとも１つが、階層表現またはユークリッド距離場表現のうちの少なくとも１つに基づいて決定するステップを含む、請求項１に記載の方法。
【請求項１７】
ロボットの動作計画に有用な衝突評価を生成するシステムであって、
前記システムは、
少なくとも１つのプロセッサと、
前記少なくとも１つのプロセッサに実行させるプロセッサ実行可能命令またはデータのうちの少なくとも１つを記憶する少なくとも１つの非一時的プロセッサ可読媒体であって、
少なくとも１つのプロセッサによって実行されたときに、前記少なくとも１つのプロセッサに、
構成時に、
動力学モデルによって表されるロボットについて、前記ロボットの前記データ構造表現を生成するステップと、
前記環境について、前記環境内の前記持続的障害物のセットの前記データ構造表現を生成するステップであって、前記データ構造表現は前記第１の数の障害物の各々の前記障害物によって占められる前記環境内のそれぞれの体積が前記構成時に既知である前記第１の数の障害物の表現を含む、該ステップと、
実行時に、
ロボットの少なくとも第１の数のポーズの各々について、前記ロボットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットの他の部分と衝突するかどうかを決定するステップと、
前記ロボットの少なくとも第２の数のポーズの各々について、環境内の持続的障害物のセットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットが動作する前記環境内の任意の持続的障害物と衝突するかどうかを決定するステップであって、前記データ構造表現は前記第１の数の障害物の各々の前記障害物によって占められる前記環境内のそれぞれの体積が構成時に既知である前記第１の数の障害物の表現を含む、該ステップと、
前記ロボットの少なくとも第３の数のポーズの各々について、前記環境内の過渡的障害物のセットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記環境内の任意の過渡的障害物と衝突するかどうかを決定するステップであって、前記データ構造表現は、もし存在するのであれば前記第２の数の障害物の各々の前記障害物によって占有される前記環境内のそれぞれの体積が実行時の少なくとも一部で既知であり、前記障害物の各々によって占有される前記環境内のそれぞれの体積が前記構成時に不知である前記環境内の第２の数の障害物の表現を含む、該ステップと、
前記ポーズのうちの少なくとも１つについて衝突が検出されたかどうかを表す信号を提供するステップを実行させる非一時的プロセッサ可読媒体を有する、システム。
【請求項１８】
前記少なくとも１つのプロセッサは、前記環境内の前記持続的障害物のセットの前記データ構造表現を生成するために、境界体積の階層を生成する、請求項１７に記載のシステム。
【請求項１９】
前記少なくとも１つのプロセッサは、境界体積の階層を生成するために、リーフノードとして三角形メッシュを有する境界ボックスの階層を生成する、請求項１８に記載のシステム。
【請求項２０】
前記少なくとも１つのプロセッサは、境界体積の階層を生成するために、球体の階層を生成する、請求項１８に記載のシステム。
【請求項２１】
前記少なくとも１つのプロセッサは、境界体積の階層を生成するために、ｋ−ａｒｙ球ツリーを生成する、請求項１８に記載のシステム。
【請求項２２】
前記少なくとも１つのプロセッサは、境界体積の階層を生成するために、軸整列境界ボックスの階層を生成する、請求項１８に記載のシステム。
【請求項２３】
前記少なくとも１つのプロセッサは、境界体積の階層を生成するために、指向性境界ボックスの階層を生成する、請求項１８に記載のシステム。
【請求項２４】
前記少なくとも１つのプロセッサは、前記環境内の前記持続的障害物のセットの前記データ構造表現を生成するために、前記環境内の前記持続的障害物のセットを表すボクセル占有情報を記憶するオクツリーを生成する、請求項１７に記載のシステム。
【請求項２５】
前記少なくとも１つのプロセッサは、前記ロボットの前記データ構造表現を生成するために、ｋ−ａｒｙツリーを生成する、請求項１７に記載のシステム。
【請求項２６】
前記少なくとも１つのプロセッサは、前記ロボットの前記データ構造表現を生成するために、前記ロボットの複数のリンクのそれぞれについて、それぞれのｋ−ａｒｙツリーを生成する、請求項１７に記載のシステム。
【請求項２７】
前記少なくとも１つのプロセッサは、前記ロボットの前記データ構造表現を生成するために、前記ロボットの複数のリンクのそれぞれについて、それぞれの８−ａｒｙツリーを生成する、請求項１７に記載のシステム。
【請求項２８】
前記少なくとも１つのプロセッサは、前記ロボットの前記データ構造表現を生成するために、前記ロボットの複数のリンクのそれぞれについて、４以上のツリー深さを有するそれぞれの８−ａｒｙツリーを生成する、請求項１７に記載のシステム。
【請求項２９】
前記少なくとも１つのプロセッサは、前記ロボットの前記データ構造表現を生成するために、前記ロボットの複数のリンクのそれぞれについて、それぞれのｋ−ａｒｙツリーを生成し、前記ｋ−ａｒｙツリーの各ノードは前記それぞれの球体の任意の部分が占有されている場合に占有されていると識別される球体である、請求項１７に記載のシステム。
【請求項３０】
前記ロボットが、ロボット付属物を含み、
前記少なくとも１つのプロセッサ実行可能命令またはデータの実行は、前記少なくとも１つのプロセッサに、
前記ロボット付属物の第１のポーズと前記ロボット付属物の第２のポーズの間の前記ロボット付属物の動作について、前記ロボット付属物のＣ空間における前記ロボット付属物の前記第１のポーズと前記第２のポーズの間の複数の中間ポーズを、前記Ｃ空間において連続的に隣接するポーズの複数の対の間の距離が前記動作細分割粒度についての受信値を満たすまで計算するステップをさらに実行させる、請求項１７に記載のシステム。
【請求項３１】
前記ロボット付属物の複数の中間ポーズを計算するために、前記少なくとも１つのプロセッサは、
前記ロボット付属物の関節のそれぞれについて、前記第１および前記第２のポーズにおける前記関節のそれぞれの位置および向きの間を補間してｎ番目の中間ポーズを取得するステップと、
前記ロボット付属物の関節のそれぞれについて、終了条件に達するまで、それぞれのｉ番目の反復についてのそれぞれの最近傍ポーズの対における前記関節のそれぞれの位置および向きの間を反復的に補間するステップを実行する、請求項３０に記載のシステム。
【請求項３２】
前記終了条件はｎ番目の中間ポーズを得るように動作細分化粒度を満たす連続的に隣接するポーズ間の距離であり、
前記プロセッサ実行可能命令またはデータのうちの前記少なくとも１つの実行は、前記少なくとも１つのプロセッサに、複数の前記反復に対して、前記終了条件に達したかどうかを決定するステップをさらに実行させる、請求項３１に記載のシステム。
【請求項３３】
前記少なくとも１つのプロセッサ実行可能命令またはデータの実行はさらに、前記少なくとも１つのプロセッサに、
複数の前記ポーズの各々について、動力学ロボットモデル上で順方向動力学計算を実行して、前記ロボット付属物の各リンクの複数の変換を計算するステップをさらに実行させる、請求項３０に記載のシステム。
【請求項３４】
前記ロボットの任意の部分が前記ロボットの他の部分と衝突するかどうかの決定、前記ロボットの任意の部分が任意の持続的障害物と衝突するかどうかの決定、又は、前記ロボットの任意の部分が任意の過渡的障害物と衝突するかどうかの決定の少なくとも１つが、階層表現またはユークリッド距離場表現のうちの少なくとも１つに基づく決定を含む、請求項１７に記載のシステム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０１８３
【補正方法】変更
【補正の内容】
【０１８３】
上記の種々の実施形態は、更なる実施形態を提供するように組み合わされることが可能である。「自動運転車と再構成可能な動作計画プロセッサの動作計画」と題された２０１７年６月９日に出願された国際出願ＰＣＴ／ＵＳ２０１７／０３６８８０、２０１６年１月５日に出願された「特殊なロボット動作計画ハードウェアおよびそれを作成および使用する方法」と題された国際特許出願公開第ＷＯ２０１６／１２２８４０号、２０１８年１月１２日出願の「動的物体を有する自動車の移動を容易にする装置、方法及び物品」と題する米国特許出願第６２／６１６，７８３号、２０１８年２月６日出願の「離散化された環境を１つ又は複数のプロセッサに記憶し、その動作を改善するロボットの移動計画」と題する米国特許出願第６２／６２６，９３９号、及び２０１８年８月２３日出願の「ロボット工学の動作計画に役立つ衝突検出」と題する米国特許出願第６２／７２２，０６７号を含むがこれらに限定されない本明細書で言及され、又は、添付のアプリケーションデータシートに記載された本出願人に譲渡された米国特許出願公開、米国特許出願、外国特許、および外国特許出願はその全体が参照により本明細書に組み込まれる。上記の詳細説明に照らして、上記の及び他の変形がそれらの実施形態に対して行われることが可能である。一般に、以下の特許請求の範囲において、使用される用語は特許請求の範囲を、明細書および特許請求の範囲に開示される特定の実施形態に限定するように解釈されるべきではなく、そのような特許請求の範囲が権利を有する均等物の全範囲とともに、すべての可能な実施形態を含むように解釈されるべきである。したがって、特許請求の範囲は、本開示によって限定されない。
下記は、本願の出願当初に記載の発明である。
＜請求項１＞
ロボットの動作計画に有用なプロセッサベースのシステムの少なくとも１つのコンポーネントの動作方法であって、
ロボットの少なくとも第１の数のポーズの各々について、回路の少なくとも１つのセットによって、前記ロボットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットの他の部分と衝突するかどうかを決定するステップと、
前記ロボットの少なくとも第２の数のポーズの各々について、回路の少なくとも１つのセットによって、環境内の持続的障害物のセットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットが動作する前記環境内の任意の持続的障害物と衝突するかどうかを決定するステップであって、前記データ構造表現は前記第１の数の障害物の各々の前記障害物によって占められる前記環境内のそれぞれの体積が構成時に既知である前記第１の数の障害物の表現を含む、該ステップと、
前記ロボットの少なくとも第３の数のポーズの各々について、回路の少なくとも１つのセットによって、前記環境内の過渡的障害物のセットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記環境内の任意の過渡的障害物と衝突するかどうかを決定するステップであって、前記データ構造表現は、もし存在するのであれば前記第２の数の障害物の各々の前記障害物によって占有される前記環境内のそれぞれの体積が実行時の少なくとも一部で既知であり、前記障害物の各々によって占有される前記環境内のそれぞれの体積が構成時に不知である前記環境内の第２の数の障害物の表現を含む、該ステップと、
前記ポーズのうちの少なくとも１つについて衝突が検出されたかどうかを表す信号を提供するステップ
を有する方法。
＜請求項２＞
前記ロボットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットの他の部分と衝突するかどうかを決定するステップは、ロボット付属物の少なくとも一部が第１のポーズで前記ロボット付属物の他の部分と衝突するかどうかを決定するステップを含む、請求項１に記載の方法。
＜請求項３＞
前記ロボットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットの他の部分と衝突するかどうかを決定するステップは、ロボット付属物の少なくとも一部が第１のポーズと第２のポーズとの間で移動する際に前記ロボット付属物の他の部分と衝突するかどうかを決定するステップを含む、請求項１に記載の方法。
＜請求項４＞
前記環境内の持続的障害物のセットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットが動作する前記環境内の任意の持続的障害物と衝突するかどうかを決定するステップは、ロボット付属物の少なくとも一部が第１のポーズで前記環境内の任意の持続的障害物と衝突するか否かを決定するステップを含む、請求項１に記載の方法。
＜請求項５＞
前記環境内の持続的障害物のセットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットが動作する前記環境内の任意の持続的障害物と衝突するかどうかを決定するステップは、第１のポーズと第２のポーズの間を移動する際にロボット付属物の少なくとも一部が前記環境内の任意の持続的障害物と衝突するか否かを決定するステップを含む、請求項１に記載の方法。
＜請求項６＞
前記環境内の持続的障害物のセットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットが動作する前記環境内の任意の持続的障害物と衝突するかどうかを決定するステップは、ロボット付属物の少なくとも一部が第１のポーズで前記環境内の任意の過渡的障害物と衝突するか否かを決定するステップを含む、請求項１に記載の方法。
＜請求項７＞
前記環境内の過渡的障害物のセットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットが動作する前記環境内の任意の過渡的障害物と衝突するかどうかを決定するステップは、第１のポーズと第２のポーズとの間を移動する際にロボット付属物の少なくとも一部が前記環境内の任意の過渡的障害物に衝突するか否かを決定するステップを含む、請求項１に記載の方法。
＜請求項８＞
構成時に、
動力学モデルによって表されるロボットについて、前記ロボットの前記データ構造表現を生成するステップと、
前記環境について、前記環境内の前記持続的障害物のセットの前記データ構造表現を生成するステップをさらに有し、
前記データ構造表現が、前記第１の数の障害物の各々の障害物によって占められる前記環境内のそれぞれの体積が構成時に既知である前記第１の数の障害物の表現を含む、請求項１記載の方法。
＜請求項９＞
前記環境内の前記持続的障害物のセットの前記データ構造表現を生成するステップは、境界体積の階層を生成するステップを含む、請求項８に記載の方法。
＜請求項１０＞
境界体積の階層を生成するステップは、リーフノードとして三角形メッシュを有する境界ボックスの階層を生成するステップを含む、請求項９に記載の方法。
＜請求項１１＞
境界体積の階層を生成するステップは、球体の階層を生成するステップを含む、請求項９に記載の方法。
＜請求項１２＞
境界体積の階層を生成するステップは、ｋ−ａｒｙ球ツリーを生成するステップを含む、請求項９に記載の方法。
＜請求項１３＞
境界体積の階層を生成するステップは、軸整列境界ボックスの階層を生成するステップを含む、請求項９に記載の方法。
＜請求項１４＞
境界体積の階層を生成するステップは、指向性境界ボックスの階層を生成するステップを含む、請求項９に記載の方法。
＜請求項１５＞
前記環境内の前記持続的障害物のセットの前記データ構造表現を生成するステップは、前記環境内の前記持続的障害物のセットを表すボクセル占有情報を記録するオクツリーを生成するステップを含む、請求項８に記載の方法。
＜請求項１６＞
前記ロボットの前記データ構造表現を生成するステップは、ｋ−ａｒｙツリーを生成するステップを含む、請求項８に記載の方法。
＜請求項１７＞
前記ロボットの前記データ構造表現を生成するステップは、前記ロボットの複数のリンクのそれぞれについて、それぞれのｋ−ａｒｙツリーを生成するステップを含む、請求項８に記載の方法。
＜請求項１８＞
前記ロボットの前記データ構造表現を生成するステップは、前記ロボットの複数のリンクのそれぞれについて、それぞれの８−ａｒｙツリーを生成するステップを含む、請求項８に記載の方法。
＜請求項１９＞
前記ロボットの前記データ構造表現を生成するステップは、前記ロボットの複数のリンクのそれぞれについて、４以上のツリー深さを有するそれぞれの８−ａｒｙツリーを生成するステップを含む、請求項８に記載の方法。
＜請求項２０＞
前記ロボットの前記データ構造表現を生成するステップは、前記ロボットの複数のリンクのそれぞれについて、それぞれのｋ−ａｒｙツリーを生成するステップを含み、前記ｋ−ａｒｙツリーの各ノードは前記それぞれの球体の任意の部分が占有されている場合に占有されていると識別される球体である、請求項８に記載の方法。
＜請求項２１＞
実行時に、前記環境内の過渡的障害物のセットの前記データ構造表現を生成するステップであって、前記データ構造表現はもし存在するのであれば前記第２の数の障害物の各々によって占有される前記環境内のそれぞれの体積が前記実行時の少なくとも一部で既知であり、前記障害物の各々によって占有される前記環境内のそれぞれの体積が前記構成時に不知である前記過渡的障害物の表現を含む、該ステップをさらに含み、
前記ロボットの任意の部分が前記ロボットの他の部分と衝突するかどうかを決定するステップ、前記ロボットの任意の部分が環境内の任意の持続的障害物と衝突するかどうかを決定するステップ及び前記ロボットの任意の部分が前記環境内の任意の過渡的障害物と衝突するかどうかを決定するステップがすべて前記実行時に行われる、請求項１記載の方法。
＜請求項２２＞
もし存在するのであれば前記環境内の前記過渡的障害物を表すセンサ情報を受信するステップと、
前記センサ情報を占有情報に変換するステップをさらに有し、
前記環境内の前記過渡的障害物のセットの前記データ構造表現を生成するステップは、前記占有情報から前記環境内の前記過渡的障害物のセットの前記データ構造表現を生成するステップを含む、請求項２１記載の方法。
＜請求項２３＞
複数のリンクと、前記リンクのそれぞれの対の間の複数の関節を有するロボット付属物の形態で前記ロボットを表す動力学モデルを受信するステップと、
前記環境内の前記持続的障害物のセットのそれぞれの位置を表す占有情報を受信するステップと、
動作計画に使用される動作細分化粒度を表す少なくとも１つの値を受信するステップをさらに有する、請求項１に記載の方法。
＜請求項２４＞
動力学モデルを受信するステップと、占有情報を受信するステップと、動作細分化粒度を表す少なくとも１つの値を受信するステップがすべて前記構成時に発生し、
前記ロボットの前記動力学モデルに基づいて、前記構成時に前記ロボットの前記データ構造表現を生成するステップと、
前記構成時に前記環境内の前記持続的障害物のセットの前記データ構造表現を生成するステップをさらに含み、
前記データ構造表現は、前記第１の数の障害物の前記障害物の各々が占める前記環境内の各体積が前記構成時に既知である前記第１の数の障害物の表現を含む、請求項２３に記載の方法。
＜請求項２５＞
実行時に、前記環境内の過渡的障害物のセットの前記データ構造表現を生成するステップであって、前記データ構造表現はもし存在するのであれば前記第２の数の障害物の各々によって占有される前記環境内のそれぞれの体積が前記実行時の少なくとも一部で既知であり、前記障害物の各々によって占有される前記環境内のそれぞれの体積が前記構成時に不知である前記過渡的障害物の表現を含む、該ステップをさらに含む、請求項２４に記載の方法。
＜請求項２６＞
前記ロボットが、ロボット付属物を含み、
前記ロボット付属物の第１のポーズと前記ロボット付属物の第２のポーズの間の前記ロボット付属物の動作について、前記ロボット付属物のＣ空間における前記ロボット付属物の前記第１のポーズと前記第２のポーズの間の複数の中間ポーズを、前記Ｃ空間において連続的に隣接するポーズの複数の対の間の距離が前記動作細分割粒度についての受信値を満たすまで計算するステップをさらに有する、請求項１に記載の方法。
＜請求項２７＞
前記ロボット付属物の複数の中間ポーズを計算するステップは、
前記ロボット付属物の関節のそれぞれについて、前記第１および前記第２のポーズにおける前記関節のそれぞれの位置および向きの間を補間してｎ番目の中間ポーズを取得するステップと、
前記ロボット付属物の関節のそれぞれについて、終了条件に達するまで、それぞれのｉ番目の反復についてのそれぞれの最近傍ポーズの対における前記関節のそれぞれの位置および向きの間を反復的に補間するステップをさらに有する、請求項２６に記載の方法。
＜請求項２８＞
前記終了条件はｎ番目の中間ポーズを得るように動作細分化粒度を満たす連続的に隣接するポーズ間の距離であり、
複数の前記反復に対して、前記終了条件に達したかどうかを決定するステップをさらに有する、請求項２７に記載の方法。
＜請求項２９＞
複数の前記ポーズの各々について、動力学ロボットモデル上で順方向動力学計算を実行して、前記ロボット付属物の各リンクの複数の変換を計算するステップをさらに含む、請求項２６に記載の方法。
＜請求項３０＞
前記ロボットの任意の部分が前記ロボットの他の部分と衝突するかどうかを決定するステップ、前記ロボットの任意の部分が任意の持続的障害物と衝突するかどうかを決定するステップ、又は、前記ロボットの任意の部分が任意の過渡的障害物と衝突するかどうかを決定するステップの少なくとも１つが、階層表現またはユークリッド距離場表現のうちの少なくとも１つに基づいて決定するステップを含む、請求項１〜２９のいずれかに記載の方法。
＜請求項３１＞
ロボットの動作計画に有用な衝突評価を生成するシステムであって、
前記システムは、
少なくとも１つのプロセッサと、
前記少なくとも１つのプロセッサに実行させるプロセッサ実行可能命令またはデータのうちの少なくとも１つを記憶する少なくとも１つの非一時的プロセッサ可読媒体であって、
少なくとも１つのプロセッサによって実行されたときに、前記少なくとも１つのプロセッサに、
ロボットの少なくとも第１の数のポーズの各々について、前記ロボットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットの他の部分と衝突するかどうかを決定するステップと、
前記ロボットの少なくとも第２の数のポーズの各々について、環境内の持続的障害物のセットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットが動作する前記環境内の任意の持続的障害物と衝突するかどうかを決定するステップであって、前記データ構造表現は前記第１の数の障害物の各々の前記障害物によって占められる前記環境内のそれぞれの体積が構成時に既知である前記第１の数の障害物の表現を含む、該ステップと、
前記ロボットの少なくとも第３の数のポーズの各々について、前記環境内の過渡的障害物のセットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記環境内の任意の過渡的障害物と衝突するかどうかを決定するステップであって、前記データ構造表現は、もし存在するのであれば前記第２の数の障害物の各々の前記障害物によって占有される前記環境内のそれぞれの体積が実行時の少なくとも一部で既知であり、前記障害物の各々によって占有される前記環境内のそれぞれの体積が構成時に不知である前記環境内の第２の数の障害物の表現を含む、該ステップと、
前記ポーズのうちの少なくとも１つについて衝突が検出されたかどうかを表す信号を提供するステップを実行させる非一時的プロセッサ可読媒体を有する、システム。
＜請求項３２＞
前記ロボットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットの他の部分と衝突するかどうかを決定するために、前記少なくとも１つのプロセッサは、ロボット付属物の少なくとも一部が第１のポーズで前記ロボット付属物の他の部分と衝突するかどうかを決定する、請求項３１に記載のシステム。
＜請求項３３＞
前記ロボットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットの他の部分と衝突するかどうかを決定するために、前記少なくとも１つのプロセッサは、ロボット付属物の少なくとも一部が第１のポーズと第２のポーズとの間で移動する際に前記ロボット付属物の他の部分と衝突するかどうかを決定する、請求項３１に記載のシステム。
＜請求項３４＞
前記環境内の持続的障害物のセットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットが動作する前記環境内の任意の持続的障害物と衝突するかどうかを決定するために、前記少なくとも１つのプロセッサは、ロボット付属物の少なくとも一部が第１のポーズで前記環境内の任意の持続的障害物と衝突するか否かを決定する、請求項３１に記載のシステム。
＜請求項３５＞
前記環境内の持続的障害物のセットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットが動作する前記環境内の任意の持続的障害物と衝突するかどうかを決定するために、前記少なくとも１つのプロセッサは、第１のポーズと第２のポーズの間を移動する際にロボット付属物の少なくとも一部が前記環境内の任意の持続的障害物と衝突するか否かを決定する、請求項３１に記載のシステム。
＜請求項３６＞
前記環境内の過渡的障害物のセットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットが動作する前記環境内の任意の過渡的障害物と衝突するかどうかを決定するために、前記少なくとも１つのプロセッサは、ロボット付属物の少なくとも一部が第１のポーズで前記環境内の任意の過渡的障害物と衝突するか否かを決定する、請求項３１に記載のシステム。
＜請求項３７＞
前記環境内の過渡的障害物のセットのデータ構造表現に少なくとも部分的に基づいて、前記ロボットの任意の部分が前記ロボットが動作する前記環境内の任意の過渡的障害物と衝突するかどうかを決定するために、前記少なくとも１つのプロセッサは、第１のポーズと第２のポーズとの間を移動する際にロボット付属物の少なくとも一部が前記環境内の任意の過渡的障害物に衝突するか否かを決定する、請求項３１に記載のシステム。
＜請求項３８＞
前記少なくとも１つのプロセッサ実行可能命令またはデータの実行はさらに、前記少なくとも１つのプロセッサに、
構成時に、
動力学モデルによって表されるロボットについて、前記ロボットの前記データ構造表現を生成するステップと、
前記環境について、前記環境内の前記持続的障害物のセットの前記データ構造表現を生成するステップをさらに実行させ、
前記データ構造表現が、前記第１の数の障害物の各々の障害物によって占められる前記環境内のそれぞれの体積が構成時に既知である前記第１の数の障害物の表現を含む、請求項３１に記載のシステム。
＜請求項３９＞
前記少なくとも１つのプロセッサは、前記環境内の前記持続的障害物のセットの前記データ構造表現を生成するために、境界体積の階層を生成する、請求項３８に記載のシステム。
＜請求項４０＞
前記少なくとも１つのプロセッサは、境界体積の階層を生成するために、リーフノードとして三角形メッシュを有する境界ボックスの階層を生成する、請求項３９に記載のシステム。
＜請求項４１＞
前記少なくとも１つのプロセッサは、境界体積の階層を生成するために、球体の階層を生成する、請求項３９に記載のシステム。
＜請求項４２＞
前記少なくとも１つのプロセッサは、境界体積の階層を生成するために、ｋ−ａｒｙ球ツリーを生成する、請求項３９に記載のシステム。
＜請求項４３＞
前記少なくとも１つのプロセッサは、境界体積の階層を生成するために、軸整列境界ボックスの階層を生成する、請求項３９に記載のシステム。
＜請求項４４＞
前記少なくとも１つのプロセッサは、境界体積の階層を生成するために、指向性境界ボックスの階層を生成する、請求項３９に記載のシステム。
＜請求項４５＞
前記少なくとも１つのプロセッサは、前記環境内の前記持続的障害物のセットの前記データ構造表現を生成するために、前記環境内の前記持続的障害物のセットを表すボクセル占有情報を記憶するオクツリーを生成する、請求項３８に記載のシステム。
＜請求項４６＞
前記少なくとも１つのプロセッサは、前記ロボットの前記データ構造表現を生成するために、ｋ−ａｒｙツリーを生成する、請求項３８に記載のシステム。
＜請求項４７＞
前記少なくとも１つのプロセッサは、前記ロボットの前記データ構造表現を生成するために、前記ロボットの複数のリンクのそれぞれについて、それぞれのｋ−ａｒｙツリーを生成する、請求項３８に記載のシステム。
＜請求項４８＞
前記少なくとも１つのプロセッサは、前記ロボットの前記データ構造表現を生成するために、前記ロボットの複数のリンクのそれぞれについて、それぞれの８−ａｒｙツリーを生成する、請求項３８に記載のシステム。
＜請求項４９＞
前記少なくとも１つのプロセッサは、前記ロボットの前記データ構造表現を生成するために、前記ロボットの複数のリンクのそれぞれについて、４以上のツリー深さを有するそれぞれの８−ａｒｙツリーを生成する、請求項３８に記載のシステム。
＜請求項５０＞
前記少なくとも１つのプロセッサは、前記ロボットの前記データ構造表現を生成するために、前記ロボットの複数のリンクのそれぞれについて、それぞれのｋ−ａｒｙツリーを生成し、前記ｋ−ａｒｙツリーの各ノードは前記それぞれの球体の任意の部分が占有されている場合に占有されていると識別される球体である、請求項３８に記載のシステム。
＜請求項５１＞
前記少なくとも１つのプロセッサ実行可能命令またはデータの実行はさらに、前記少なくとも１つのプロセッサに、
実行時に、前記環境内の過渡的障害物のセットの前記データ構造表現を生成するステップであって、前記データ構造表現はもし存在するのであれば前記第２の数の障害物の各々によって占有される前記環境内のそれぞれの体積が前記実行時の少なくとも一部で既知であり、前記障害物の各々によって占有される前記環境内のそれぞれの体積が前記構成時に不知である前記過渡的障害物の表現を含む、該ステップをさらに実行させ、
前記ロボットの任意の部分が前記ロボットの他の部分と衝突するかどうかを決定するステップ、前記ロボットの任意の部分が環境内の任意の持続的障害物と衝突するかどうかを決定するステップ及び前記ロボットの任意の部分が前記環境内の任意の過渡的障害物と衝突するかどうかを決定するステップがすべて前記実行時に行われる、請求項３１に記載のシステム。
＜請求項５２＞
前記少なくとも１つのプロセッサ実行可能命令またはデータの実行はさらに、前記少なくとも１つのプロセッサに、
もし存在するのであれば前記環境内の前記過渡的障害物を表すセンサ情報を受信するステップと、
前記センサ情報を占有情報に変換するステップをさらに実行させ、
前記環境内の前記過渡的障害物のセットの前記データ構造表現を生成するために、前記少なくとも１つのプロセッサは、前記占有情報から前記環境内の前記過渡的障害物のセットの前記データ構造表現を生成する、請求項５１に記載のシステム。
＜請求項５３＞
前記少なくとも１つのプロセッサ実行可能命令またはデータの実行はさらに、前記少なくとも１つのプロセッサに、
複数のリンクと、前記リンクのそれぞれの対の間の複数の関節を有するロボット付属物の形態で前記ロボットを表す動力学モデルを受信するステップと、
前記環境内の前記持続的障害物のセットのそれぞれの位置を表す占有情報を受信するステップと、
動作計画に使用される動作細分化粒度を表す少なくとも１つの値を受信するステップを実行させる、請求項３１に記載のシステム。
＜請求項５４＞
前記動力学モデル、前記占有情報、動作細分化粒度を表す前記少なくとも１つの値がすべて前記構成時に受信され、
前記少なくとも１つのプロセッサ実行可能命令またはデータの実行はさらに、前記少なくとも１つのプロセッサに、
前記ロボットの前記動力学モデルに基づいて、前記構成時に前記ロボットの前記データ構造表現を生成するステップと、
前記構成時に前記環境内の前記持続的障害物のセットの前記データ構造表現を生成するステップをさら実行させ、
前記データ構造表現は、前記第１の数の障害物の前記障害物の各々が占める前記環境内の各体積が前記構成時に既知である前記第１の数の障害物の表現を含む、請求項５３に記載のシステム。
＜請求項５５＞
前記少なくとも１つのプロセッサ実行可能命令またはデータの実行は、前記少なくとも１つのプロセッサに、
実行時に、前記環境内の過渡的障害物のセットの前記データ構造表現を生成するステップであって、前記データ構造表現はもし存在するのであれば前記第２の数の障害物の各々によって占有される前記環境内のそれぞれの体積が前記実行時の少なくとも一部で既知であり、前記障害物の各々によって占有される前記環境内のそれぞれの体積が前記構成時に不知である前記過渡的障害物の表現を含む、該ステップをさらに実行させる、請求項５４に記載のシステム。
＜請求項５６＞
前記ロボットが、ロボット付属物を含み、
前記少なくとも１つのプロセッサ実行可能命令またはデータの実行は、前記少なくとも１つのプロセッサに、
前記ロボット付属物の第１のポーズと前記ロボット付属物の第２のポーズの間の前記ロボット付属物の動作について、前記ロボット付属物のＣ空間における前記ロボット付属物の前記第１のポーズと前記第２のポーズの間の複数の中間ポーズを、前記Ｃ空間において連続的に隣接するポーズの複数の対の間の距離が前記動作細分割粒度についての受信値を満たすまで計算するステップをさらに実行させる、請求項３１に記載のシステム。
＜請求項５７＞
前記ロボット付属物の複数の中間ポーズを計算するために、前記少なくとも１つのプロセッサは、
前記ロボット付属物の関節のそれぞれについて、前記第１および前記第２のポーズにおける前記関節のそれぞれの位置および向きの間を補間してｎ番目の中間ポーズを取得するステップと、
前記ロボット付属物の関節のそれぞれについて、終了条件に達するまで、それぞれのｉ番目の反復についてのそれぞれの最近傍ポーズの対における前記関節のそれぞれの位置および向きの間を反復的に補間するステップを実行する、請求項５６に記載のシステム。
＜請求項５８＞
前記終了条件はｎ番目の中間ポーズを得るように動作細分化粒度を満たす連続的に隣接するポーズ間の距離であり、
前記プロセッサ実行可能命令またはデータのうちの前記少なくとも１つの実行は、前記少なくとも１つのプロセッサに、複数の前記反復に対して、前記終了条件に達したかどうかを決定するステップをさらに実行させる、請求項５７に記載のシステム。
＜請求項５９＞
前記少なくとも１つのプロセッサ実行可能命令またはデータの実行はさらに、前記少なくとも１つのプロセッサに、
複数の前記ポーズの各々について、動力学ロボットモデル上で順方向動力学計算を実行して、前記ロボット付属物の各リンクの複数の変換を計算するステップをさらに実行させる、請求項５６に記載のシステム。
＜請求項６０＞
前記ロボットの任意の部分が前記ロボットの他の部分と衝突するかどうかの決定、前記ロボットの任意の部分が任意の持続的障害物と衝突するかどうかの決定、又は、前記ロボットの任意の部分が任意の過渡的障害物と衝突するかどうかの決定の少なくとも１つが、階層表現またはユークリッド距離場表現のうちの少なくとも１つに基づく決定を含む、請求項３１〜５９のいずれかに記載のシステム。
【国際調査報告】
2021534985.tif 000028
2021534985.tif 000029