(57)【要約】【課題】自律型車両用の専用ロボット動作計画ハードウェアを提供する。【解決手段】自律型車両用の動作計画のためのシステムは、複数のセンサと、その複数のセンサと電気的に通信する複数の検出器と、その複数の検出器および自律型車両の計算システムと電気的に通信する動作計画モジュールとを含むことができる。動作計画モジュールは、自律型車両の状態、動作環境、または自律型車両の状態と動作環境の両方を画定する時間および変数を明示的にまたは暗示的に表す各ノードを有する計画グラフを保存する。再構成可能プロセッサは、衝突検出モジュールと、任意に最短経路モジュールとを含むことができる。論理／物理ノードマッピングを反映する事前計算された衝突データおよび計画グラフデータは、プログラミングフェーズ中にプロセッサに伝達され、実行時に使用される。【選択図】図３
2019517702.tif 000002
【特許請求の範囲】
【請求項１】
自律型車両用の動作計画のためのシステムであって、
複数のセンサと、
前記複数のセンサと電気的に通信する複数の検出器と、
前記の検出器と電気通信し、かつ自律型車両の計算システムと電気的に通信する動作計画モジュールと、を含み、
前記動作計画モジュールは、エッジで接続された複数のノードを含む計画グラフを保存し、
各ノードは、前記自律型車両の状態、動作環境、又は前記自律型車両の状態と前記動作環境との両方を画定する時間及び変数を暗示的又は明示的に表す、システム。
【請求項２】
前記動作計画モジュールは、前記複数の検出器から知覚データ及びサンプル軌道を受信し、前記サンプル軌道の理由説明となる前記知覚データ内で障害物と衝突する前記計画グラフ内の各エッジに沿った衝突確率を調整し、コスト及び衝突確率を考慮して経路を特定し、前記経路を前記計算システムに出力する、請求項１に記載のシステム。
【請求項３】
前記複数の検出器は、前記動作環境内の動的オブジェクトを識別するオブジェクト追跡器を含み、前記動的オブジェクトについての将来軌道の確率分布を前記動作計画モジュールによるサンプリング用に出力する、請求項２に記載のシステム。
【請求項４】
前記複数の検出器は、前記動作環境内で識別済みオブジェクトを表す障害物のボクセルを含む知覚データを生成するオブジェクト検出器を含む、請求項２に記載のシステム。
【請求項５】
前記オブジェクト検出器から前記障害物のボクセルを受信し、各ボクセルにコスト修正子を割り当て、前記ボクセル及び割り当てられたコスト修正子を前記動作計画モジュールに出力するコストグリッドをさらに含む、請求項４に記載のシステム。
【請求項６】
前記動作計画モジュールは、ハードウェアプロセッサ、記憶装置、及び前記計画グラフのエッジを表現する衝突検出ユニットを含む、請求項１に記載のシステム。
【請求項７】
前記動作計画モジュールは、再構築可能なアーキテクチャを含む、請求項１に記載のシステム。
【請求項８】
前記動作計画モジュールは、
ハードウェアプロセッサと、
前記計画グラフが保存される記憶装置と、
前記記憶装置に保存される事前計算済み衝突データであって、実行時、知覚データが受信されると、前記知覚データが、前記ハードウェアプロセッサによって、前記記憶装置に保存されている前記事前計算済み衝突データと比較されて衝突が判定される、衝突データと、
を含む、請求項１〜５のいずれか１項に記載のシステム。
【請求項９】
前記事前計算済み衝突データは、新たな車両又はシナリオに対しては新たな事前計算済み衝突データに更新される、請求項８に記載のシステム。
【請求項１０】
ハードウェアプロセッサと、
記憶装置と、
前記記憶装置に保存され、エッジによって接続された複数のノードを含む計画グラフと、
を含み、
各ノードは、ロボットの状態、動作環境、又は前記ロボットの状態と前記動作環境との両方を画定する時間及び変数を暗示的又は明示的に表す、動作計画装置。
【請求項１１】
前記計画グラフは、前記エッジに関連付けて保存された少なくとも１つのチャネルを含む、請求項１０に記載の動作計画装置。
【請求項１２】
前記少なくとも１つのチャネルは、コストを含む、請求項１０に記載の動作計画装置。
【請求項１３】
前記少なくとも１つのチャネルは、リスクを含む、請求項１０〜１２のいずれか１項に記載の動作計画装置。
【請求項１４】
前記ハードウェアプロセッサは、ある環境の識別済みオブジェクトを表す障害物のボクセルと、前記環境の識別済み動的オブジェクトを表す障害物のサンプル軌道を受信し、コストを含む、請求項１０に記載の動作計画装置。
【請求項１５】
前記障害物のボクセルと前記計画グラフの前記エッジとの間の衝突を識別する衝突検出ユニットをさらに含む、請求項１４に記載の動作計画装置。
【請求項１６】
自律型車両用の動作計画を実施する方法であって、
環境の識別済みオブジェクトを表す障害物ボクセルを受信することと、
前記環境の識別済み動的オブジェクトを表す障害物の軌道をサンプリングすることと、
前記サンプリングされた軌道の理由説明となる障害物ボクセルとの衝突となる計画グラフ内の各エッジに沿った衝突確率を調整することであって、前記計画グラフは、エッジによって接続された複数のノードを含み、各ノードは、ロボットの状態、動作環境、又は前記ロボットの状態と前記動作環境との両方を画定する時間及び変数を暗示的又は明示的に表す調整と、
コスト及び／又はリスクを考慮して経路を特定することと、を含む方法。
【請求項１７】
前記環境の識別済みオブジェクトを表す障害物のボクセルそれぞれと共に割り当てられたコスト値として受信することと、
前記割り当てられたコスト値の理由説明となる前記識別済みオブジェクトを表す障害物のボクセルとの衝突となる前記計画グラフ内の各エッジに沿ったコスト値を調整することと、
をさらに含む、請求項１６に記載の方法。
【請求項１８】
前記経路を特定することが、識別済み動的オブジェクトに対する衝突確率と識別済みオブジェクトに対する衝突のコスト値との間の有効コストを特定することを含む、
請求項１７に記載の方法。
【請求項１９】
前記経路を特定することが、前記衝突のコスト値を用いて動作計画を計算することを含み、前記経路が、その経路に対する衝突確率に関してリスク限定がかけられるコストが最低である経路を識別することを含む、請求項１７に記載の方法。
【請求項２０】
前記方法が前記自律型車両の各動作後に反復される、請求項１６〜１９のいずれか１項に記載の方法。
【請求項２１】
ハードウェアプロセッサと、
記憶装置と、
前記記憶装置に保存される事前計算済み衝突データであって、実行時、知覚データが受信されると、前記知覚データが、前記ハードウェアプロセッサによって、前記記憶装置に保存されている前記事前計算済み衝突データと比較されて衝突が判定される、衝突データと、
を含む、動作計画モジュール。
【請求項２２】
前記記憶装置に保存される計画グラフであって、前記計画グラフが特定のロボット及び任意で特定のシナリオに対して実行前に生成され、前記事前計算済み衝突データが前記計画グラフのエッジに関連付けられている計画グラフをさらに含む、請求項２１に記載の動作計画モジュール。
【請求項２３】
最短経路モジュールをさらに備え、
前記最短経路モジュールは、
最短経路アルゴリズムを実装する平行ハードウェアユニットと、
受信した計画グラフに基づいて前記平行ハードウェアユニットの物理的トポロジに論理的トポロジをマッピングするプログラマブル回路と、を有し、
前記最短経路モジュールは、特定済み衝突を実行時に受信して、計画を出力する請求項２１又は２２に記載の動作計画モジュール。
【請求項２４】
第１のプログラミングフェーズを実行して、特定ロボット及び任意に特定シナリオ用の動作計画モジュールを構成することであって、
第１の計画グラフを受信し、前記第１の計画グラフの各エッジについて、そのエッジに対する、任意にコストを関連付けた事前計算済み衝突データを受信することと、
前記第１の計画グラフ及び前記事前計算済み衝突データを前記動作計画モジュールの記憶装置に保存することと、を含む第１のプログラミングフェーズの実行と、
前記特定ロボット及び任意に前記特定シナリオ用の前記動作計画モジュールを用いて、リアルタイム動作計画を実施することと、
第２のプログラミングフェーズを実行して、新たな特定ロボット、新たな特定シナリオ、又は新たな特定ロボットと新たな特定シナリオとの両方用に前記動作計画モジュールを構成することであって、
第２の計画グラフを受信し、前記第２の計画グラフの各エッジについて、そのエッジに対する、任意にコストを関連付けた事前計算済み衝突データを受信することと、
前記第２の計画グラフ及び前記事前計算済み衝突データを前記動作計画モジュールの前記記憶装置に保存することと、を含む第２のプログラミングフェーズの実行と、
を含む、再構成可能な動作計画モジュールを操作する方法。
【請求項２５】
前記特定のロボット及び任意に前記特定のシナリオように構成される前記動作計画モジュールを用いて、リアルタイムな動作計画を実施することが、
知覚データを受信することと、
前記知覚データを前記記憶装置に保存されている前記事前計算済み衝突データと比較して衝突を特定することと、
任意にコストを考慮して、最短経路を特定することと、
を含む、請求項２４に記載の方法。
【請求項２６】
前記第１のプログラミングフェーズがさらに、
前記受信した計画グラフに基づいて、最短経路アルゴリズムを実装する平行ハードウェアユニットとの物理的トポロジに論理的トポロジをマッピングする回路をプログラミングすることをさらに含む、請求項２４に記載の方法。
【請求項２７】
最短経路アルゴリズムを実装する平行ハードウェアユニットと、
前記平行ハードウェアユニットの物理的トポロジに論理的トポロジをマッピングする再構成可能回路と、
を含むグラフ用に最短経路を見つけるハードウェアモジュール。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、自律型車両用動作計画及び再構成可能な動作計画プロセッサに関する。
【背景技術】
【０００２】
動作計画は、ロボットが現実世界でどのように動くべきかを決定するプロセスである。これは、ロボットの開始位置からゴール状態までの衝突のない経路を見つけるプロセスである。例えば、ロボットは、それ自体又は他のオブジェクトと衝突することなく、腕を動かして所望のオブジェクトに到達することを望む場合がある。動作計画を実行して、移動しつつオブジェクトを操縦する能力は、細かく制御又は設計されていない自然環境を扱う上で非常に重要である。ロボットが最初に周囲の物理的な世界に関する情報を認識すると、次に、コンピュータは、この認識した環境内をロボットが移動できるよう、いかにこの物理的なロボットを制御したらよいかを決定する。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
高速かつ低電力での動作計画は、自律型車両を含む多くの技術にとって重要かつ困難な課題である。自律型車両の課題には、静的障害物（道路に残っているブームや物など）と動的障害物（自転車、歩行者、その他の車の障害物）との衝突を避ける能力、高い頻度で計画し直す能力、及び動的障害物がどのように動き得るかについての不確実性に対処する能力が挙げられる。
【０００４】
多くの状況において、自律型車両を含むロボットにとって主な制約となっているのは、障害のある環境でリアルタイムの動作計画を実行する能力である。動作計画アルゴリズムは、計算集約的という傾向があり、各動作に対して膨大な数の衝突チェックを必要とする。
【０００５】
自律型車両用の専用ロボット動作計画ハードウェアを提供する。自律型車両や他のロボット用の動作計画用のためのシステム及び装置に加えて、自律型車両及び他のロボット用の様々な専用のロボット動作計画ハードウェアを実装することができる再構成可能なプロセッサを記載する。この再構成可能プロセッサは、特定のロボット及び／又は特定のシナリオ用の動作計画を実行したら、別のロボット及び／又はシナリオ用の動作計画を解決するために再構成することができる。ここに記載の特殊なロボット動作計画ハードウェアは、衝突検出の解決する動作計画操作及び／又は最短経路の発見する動作計画操作を、ハードウェア回路内全体で、又はハードウェアプロセッサによって実行されるソフトウェアとして、又はハードウェアプロセッサによって実行されるハードウェア回路とソフトウェアの組み合わせとして実行することができる。このハードウェア及び／又はソフトウェアの機能が「動作計画モジュール」により具体化されると考えることができる。
【０００６】
自律型車両用動作計画システムは、複数のセンサと、その複数のセンサと電気的に通信する複数の検出器と、その複数の検出器及び自律型車両の計算システムと電気的に通信する動作計画モジュールとを含むことができる。この動作計画モジュールは、自律型車両の状態、動作環境、又は自律型車両の状態と動作環境との両方を画定する時間及び変数を暗示的又は明示的に表す各ノードを有する計画グラフを保存する。この動作計画モジュールは、複数の検出器から知覚データ及びサンプル軌道を受信し、サンプル軌道を考慮して前記知覚データ内で障害物と衝突する前記計画グラフ内の各エッジに沿った衝突確率を調整し、コスト及び衝突確率を考慮して経路を特定し、その経路を計算システムに出力する。複数の検出器は、オブジェクト検出器及び障害物追跡器を含むことができる。ボクセルのストリームによって与えられるオブジェクト検出器からの障害物位置を受信し、各ボクセルにコスト修正子を割り当て、これを動作計画モジュールに送信するコストグリッドを含めることができる。
【０００７】
動作計画モジュールは、ハードウェアプロセッサ及び記憶装置を含むことができる。この記憶装置は、リアルタイムの動作計画に先立ってオフラインで生成された格子又は他の確率ロードマップなどの計画グラフを保存することができる。場合によっては、この動作計画モジュールは、平行衝突検出を実行するハードウェア衝突検出ユニットを含む。場合によっては、この動作計画モジュールは、再構成可能な衝突検出加速を含む。事前計算済み衝突データは、動作計画の間に知覚データが受信されると、衝突を判定するために、その知覚データが動作計画モジュールのハードウェアプロセッサによって記憶装置に格納されている事前計算済み衝突データと比較されるように、動作計画モジュールの記憶装置に保存されることができる。
【０００８】
実行時の操作中、計画グラフのエッジに１つ又は複数の変数の情報を割り当てることができる。１つ目の変数をコストとし、２つ目の変数をリスクとすることができる。このコスト情報は、環境内のオブジェクト検出（計算可能な軌道を有する静的オブジェクト、及び任意で、移動するオブジェクト）に関連するコストグリッドから得ることができる。リスク情報は、オブジェクト追跡器の出力をサンプリングすることによって得ることができる。その後、動作計画モジュールは、合法的な動作計画を表すコストとリスクを考慮した経路を生成し、ロボットがその動作計画に従って動作を行うことができるように動作計画を出力する。
【０００９】
この動作計画モジュールは、広範囲のロボット及び予想される作業シナリオに対してプログラムすることが可能である。この動作計画モジュールを、異なるロボット（すなわち、再構成可能）に対して再使用又は再プログラムすることが可能であり、別法として、この動作計画モジュールを、特定ロボット用に設計することができる。ロボットの１種類として自律型車両が挙げられる。
【課題を解決するための手段】
【００１０】
この概要は、以下の「詳細な説明」でさらに説明する概念を選択して簡略化した形で紹介するものである。この概要は、請求する主題の重要な特徴又は本質的な特徴を識別することを意図するものではなく、請求する主題の範囲を限定するために用いることを意図するものでもない。
【図面の簡単な説明】
【００１１】
【図１】一般的に静的な環境における動作計画の問題の例を示す図。
【図２】自律型車両の動作計画用のリアルタイムシステムの一例を示す図。
【図３】本発明の特定の実施形態による動作計画モジュールの例示的なアーキテクチャを示す図。
【図４】単一動作用の再構成可能な衝突検出アーキテクチャの例を示す図。
【図５】ボクセルの代わりにボックスを使用した戦略用の衝突検出アーキテクチャの例を示す図。
【図６Ａ】ＰＲＭ変化における単一動作に対する掃引量の表現が、表現戦略によってどのように変化するかを示す図であり。実際の掃引量を示す図。
【図６Ｂ】その動作のすべての個々のボクセルを含む図。
【図６Ｃ】個々のボクセルの代わりに８７ボックスを使用して記述した同じ掃引ボリュームを示す図。
【図６Ｄ】１０％の容積増加が許容される場合、わずか３８ボックスでカバーされる容積を示す図。
【図７】一実施例の実装に関するルマンフォード計算ユニットの基本的マイクロアーキテクチャのレイアウトを示す図。
【図８】一実装例に関するオンチップネットワーク用のルータマイクロアーキテクチャの例を示す図。
【図９】一実施例の実装に関する相互接続ネットワークの平面図。
【図１０】５，０００を超えるサンプリングされた環境でシミュレートされた、２つのサイズのロードマップについて様々な時点で完了する確率を示す図。
【図１１Ａ】ロードマップ内のエッジの数に対する数衝突チェックレイテンシ(number collision checking latency)のプロットを示す図。
【図１１Ｂ】ロードマップ内のエッジの数に対する最短経路探索レイテンシのプロットを示す図。
【図１２】ハードウェア予算と表現量の増加との間のトレードオフを視覚化した図。
【発明を実施するための形態】
【００１２】
自律型車両専用のロボット動作計画ハードウェアを提供する。この自律型車両用のロボット動作計画ハードウェアは、リスクを認識するロボット動作計画を含む。自律型車両や他のロボット用の動作計画用のシステムと装置に加えて、自律型車両や他のロボット用の様々な専用のロボット動作計画ハードウェアを実装することができる再構成可能なプロセッサを記載する。この再構成可能なプロセッサは、特定のロボット及び／又はシナリオ用の動作計画を実行し、次いで、別のロボット及び／又はシナリオ用の動作計画を解決するように再構成可能である。
【００１３】
本明細書で使用される「シナリオ」は、「オブジェクトを有する机」又は「オブジェクトを有する本棚」などの環境の種類をいう。シナリオには、障害物の数とその位置、サイズ、形状の分布が含まれる。シナリオには、様々なロボット部品の位置を伴う、ロボットの開始ポーズと目標姿勢の分布も含む。ある時点で、あるシナリオから描かれた１つのタスクに対して、ロボットは動作計画を実行する必要がある。たとえば、シナリオが「オブジェクトを有する３フィートの背の高い机」であり、障害物の数、障害物の位置、障害物のサイズ／形状、及びロボットの開始及び目標のポーズの所与の分布が与えられている場合、ロボットはテーブルの下で腕を動かす必要がないと予想される。別の例として、多くのシナリオでは、ロボットが自体の背後で腕を動かす必要があるとは考えにくい。このシナリオの先験的知識は、予想される動作計画の問題を解決するためにリソースを保存する（そして、より多くのハードウェアを用いる）。特定の環境で複数のシナリオが可能である場合、事実上シナリオの結合体である複合シナリオが利用される、又はシナリオが変更されたときにロボット動作計画ハードウェアが再構成される。
【００１４】
本明細書で使用する「車両」とは、地上、水上又は水中、空気中、又はそれらの任意の組み合わせの中を移動することができる任意の移動機械をいう。陸上車両の例には、列車、バス、自動車、トラック、オートバイ、モペットが挙げられる。水用車両の例には、潜水艦、ボート、レクリエーション用の船舶が含まれる。空用車両の例としては、無人機、飛行機、ヘリコプター、四輪車などが挙げられる。地上車両、水用車両、及び空用車両はすべて、その車両に動力を与えられ、かつ自律的に制御できる限り、「車両」の範囲内にあるとみなす。自律型車両は、「ロボット」の特殊ケースであり得るため、「ロボット」に関して本明細書に記載の態様は、アプリケーションに応じて自律型車両用に実装することができる。「自律型」への言及は完全な自律性を必要とせず、半自律型の車両を含み得ることを理解されたい。
【００１５】
本明細書で使用する「リスクを意識した」とは、その車両又は他のロボットの動作環境において不確実性を伴って現れ得る動的障害物の将来軌道の確率的推定値を含んでいることをいう。
【００１６】
ボクセルは、障害物（ボクセルの集合であってもよい）の一表現である。いくつかの実装では、ボクセルは、空間（ｘ、ｙ、ｚ）内の点として定義され、ｘ、ｙ、ｚを空間上の点を画定する座標として、任意に、ｔは、その空間に障害物がある時間を暗黙的又は明示的に表す値である。暗黙の時間とは、時間を反映するパラメータを指すが、時間を直接示す必要はない。暗黙の時間の一例が、開始点からのホップ数である。明示的な時間とは、時間を直接的に示す値（実際の時間に拘束されるか、又は開始時間から例えば秒単位で増分されるかを示す）を指す。したがって、静的障害物は、［０、Ｈ］内のすべてのｔについて（ｘ、ｙ、ｚ）点が同じである障害物である。場合によっては、（ｘ、ｙ、ｚ、及びｔの値と一緒に、又はいずれか又はすべてを置き換えて）１つ又は複数の追加変数をボクセルに含めることができる。これらの変数には、ロボット／車両の状態及び／又はその環境に関するあらゆる適切な情報が含まれる。例には、湿度、雨、傾斜、速度、加速度、方位角、及び角度が含まれるが、これらに限定されるものではない。
【００１７】
いくつかの実装では、ボクセルの代わりに、任意のタイプのポリゴン、例えば、各頂点がその３Ｄ座標で記述される三角形から作られるメッシュモデルによって障害物を表すことができる。
【００１８】
ここに記載の特殊ロボット動作計画ハードウェアは、衝突検出を解決する動作計画操作及び／又は最短経路を見つける動作計画操作を完全に、ハードウェア回路内で、又は記憶装置に記憶され、ハードウェアプロセッサによって実行されるソフトウェアとして、又はハードウェア回路と、記憶装置に保存され、ハードウェアプロセッサによって実行されるソフトウェアとの組み合わせとして実行することができる。このハードウェア及び／又はソフトウェア機能が、「動作計画モジュール」を具現化すると考えることができる。
【００１９】
背景技術で述べたように、動作計画とは、ロボットが所望の位置に到達するまで、ロボットがある位置から別の位置に移動するために受ける動作を識別するために使用されるプロセスを指す。ジョイントによって連結された一組の剛体で形成された多関節ロボットの場合、動作計画は、目標姿勢が達成されるまで、ある姿勢から別の姿勢への動きを決定する。複数の寸法及び操作の自由を有する又は有することのできない車両の場合、動作計画は、ロボットの構成スペースの一部として、位置が増減しながらも多関節ロボットの一部として割り当てられる多関節ロボットと同様に、１つの位置又は姿勢から別の位置又は姿勢への移動を決定する。
【００２０】
例えば、多関節ロボットの姿勢は、その関節のすべてに位置を割り当てることによって記述することができる。このようなジョイント位置のすべての空間は、ロボットの構成空間、つまり「Ｃ空間」と呼ばれてＱと表示される。Ｑのうち、（ジョイント位置の）いくつかの構成は、ロボットの環境内の障害物やロボット自体の身体と衝突することになるが、Ｑの残りは「空きスペース」と呼ばれる。したがって、ロボットの動作計画上の問題は、ある開始構成ｑ０から目標構成のセットＧ内の任意の構成ｇまで、自由空間を通る衝突のない経路を見つけることを必要となると考えられる。
【００２１】
図１は、一般的に静的な環境における動作計画の問題例を示している。図１を参照すると、Ｃ空間（ロボットの構成空間）１００は、障害物衝突領域１０２、１０４及び自由空間１１０を含むことができる。経路１２０を、開始構成１２２（ｑ０）から目標構成１２４（ｇ∈Ｇ）の組内の一構成まで、自由空間１１０を介して見出すことができる。
【００２２】
この車両の実施形態では、障害物衝突領域１０２、１０４を形成し得る静的障害物に加えて、他の障害物、特に動的障害物が関連している。その例として、既知の／特定の軌道内で動くオブジェクトに代表される物（例えば、落下する煉瓦、転がる缶）、及び意識者（例えば、自転車ドライバー、歩行者、鳥）によって制御されるオブジェクトを表す物を挙げられる。自律型車両の場合、これらの動的障害物により難しくなっている動作計画には、非常に高速な動作計画を実行する能力と、動的オブジェクトの動きの不確実性を分析する能力とが必要となる。自律型車両を取り巻く環境は急速に変化する可能性があり、車両の動作計画を実行する能力はこれらの変化に対応しなければなりない。
【００２３】
典型的には、知覚、計画グラフ構築、衝突検出、及び経路探索の４つの主要な構成要素が、動作計画の作成に関与する。
【００２４】
知覚構成要素は、センサと処理の組み合わせを使用して環境のモデルを生成することを含む。知覚は、任意の適切なコンピュータビジョン及びセンシングアーキテクチャによって実行することができる。一般に、この環境モデルは、環境の離散化図(discretized view)内でスペースのどの領域が障害物を含むかを表すデータ構造である占有グリッドの形態であると考えることができる。
【００２５】
計画グラフ作成コンポーネントには、ロボットの構成空間内での姿勢と動作のグラフの作成が含まれる。場合によっては、このグラフ内の各ノードは、特定の姿勢でのロボットの状態を完全に画定し、各エッジは、その姿勢間の動作を画定する。自律型車両の実施形態に有用であるなど、いくつかの場合では、計画グラフ構成要素は、暗黙的又は明示的に時間と組み合わされた車両挙動に関連する一組の変数を含む。すなわち、１つの実装では、暗黙的又は明示的な時間とともに、多関節ロボットの実施形態と同様のパラメータ（例えば、空間座標ｘ、ｙ、及び任意にｚ）がノードを画定することができる。他の実装では、空間パラメータの１つ以上の代わりに、又はそれに加えて、角度（シータ）、速度、加速度、又は他の対象パラメータを含めることができる。
計画グラフ構築は、オフラインで（即ち、リアルタイムの作動計画の前に）実行される。
【００２６】
衝突検出コンポーネントは、ロボットの動作がそれ自体又はその環境と衝突しているかどうかを判定することを含む。衝突検出の一部はオフラインで実行される。この部分は、事前計算済み衝突データを含むことができる。計画グラフ構成の一部として生成されたグラフは、衝突検出のオフライン部分で修正され、結果として計画グラフが出力される。計画グラフは、確率的ロードマップ（ＰＲＭ）、ＰＲＭ＊、迅速に探索するランダムツリーグラフ（ＲＲＴ）、ＲＲＴ＊、又は格子であり得るが、これらに限定されない。
【００２７】
経路探索コンポーネントは、開始位置から目標までの経路が存在するかどうかをチェックし、１つ以上の最適経路又は他の望ましい経路を識別するために計画グラフを走査することを含むことができる。
【００２８】
計画グラフ構成、衝突検出、及び経路探索は、本明細書に記載の技術によって加速され、いくつかの実施形態では、再構成可能な方法で実装される。
【００２９】
図２は、自律型車両の運行計画用のリアルタイムシステムの一例を示す。図２を参照すると、システム２００は、センサ２０１、オブジェクト検出器２０２、オブジェクト追跡器２０３、コストグリッド２０４、及び動作計画モジュール２０５を含む。
【００３０】
センサ２０１は、ロボット用の任意の適切なセンサとすることができる。センサの例には、光／写真（ＩＲを含む）、音声（例えば反射ベース）、化学的、指向性、及び位置（例えば、全地球測位システム）が含まれる。ロボットによって捕捉され分析される環境は、必ずしもロボットの現在位置と目標位置との間の直接経路内の環境である必要はないことを理解されたい。ロボットは、迂回経路でのみ有効な経路を持つ場合がある（その経路は、目標の姿勢又は状態の全視線内にない場合さえある）。このロボットは、その環境を検出して分析することができる様々なセンサシステムのいずれかを含む、又はそれと通信することができる。例えば、ロボットは、赤、緑、青、及び奥行き情報を（例えば、赤外線を介して）受信することができる１つ以上のカメラセンサを有することができる。別の例として、カメラ（又は他のセンサ）は、環境内の壁、天井、床及び／又はオブジェクト（例えば、テーブル、ボックスなど）上などの環境及び／又は空間（例えば、衛星、無人機など）内の１つ又は複数の位置に配置可能である。環境内のセンサ（単数又は複数）から捕捉された環境情報は、有線又は無線手段を介してロボット（及び／又はオブジェクト検出器２０２及び／又はオブジェクト追跡器２０３）に送信することができる。
【００３１】
オブジェクト検出器２０２は、１つ以上のセンサ２０１からの入力を使用してオブジェクト情報を決定する。オブジェクト検出器２０２を使用して、センサデータから障害物があるかどうかを判定することができる。オブジェクト検出器２０２を、静的オブジェクトの識別に使用可能であり、オブジェクト検出器２０２は、特定の／計算可能な経路（例えば、落下するレンガ）を有する移動オブジェクトを検出する機能（ハードウェア又はソフトウェアを介する）を含むこともできる。道路を使用する車両の場合、オブジェクト検出器２０２は、道路上の既知の静的障害物（これはロードマップに関して車両の位置から識別されるオブジェクトを含み得る）の位置を識別する道路検出器とすることができる。
【００３２】
オブジェクト追跡器２０３は、１つ又は複数のセンサ２０１からの入力を使用して、動的オブジェクトを識別し、識別した各オブジェクトについての将来軌道の確率分布を経時的に出力する。オブジェクト追跡器２０３は、不確実な動きの障害物を検出して追跡するために使用される。例えば、オブジェクト追跡器２０３は、センサ２０１の１つ以上からのデータから、道路上に別のかごがあること（識別された動的オブジェクト）を識別することができる。自動車に対するオブジェクト追跡器２０３の出力は、１つ又は複数の関連軌道上にて所与の時間に、自律型車両の前でその動的オブジェクトが外れる可能性が１０％であり、その動的オブジェクトが（例えば、次の停止標識のために）減速する可能性は９０％であることを示すことができる。
【００３３】
センサ２０１、オブジェクト検出器２０２、場合によってはオブジェクト追跡器２０３の態様を、動作計画のための知覚要素の一部と見なすことができる。
【００３４】
コストグリッド２０４（又は「コストマップ」）は、障害物を表すために使用可能なデータ構造を含む。コストグリッド２０４は、特定の活動及び／又は場所の嗜好に関する情報を含み、環境内の特定のオブジェクトを識別するために使用することができる。コストグリッド２０４によるオブジェクト表現の形式の例として、ボクセルの値、三角形から作られたメッシュモデルを挙げることができ、この三角形の各頂点は、３Ｄ座標、確率的占有グリッド、又はオクタマップで記述される。
【００３５】
自律型車両の実装例では、コストグリッド２０４は、車両周囲の特徴（「道路特有のコストマップ」）からコストマップを生成することができる。例えば、車の場合、車線の中央に留まること、反対方向への通行車線に移動しないこと、車線変更を増やすのではなく減らすことなどが好まれる可能性ある。さらに、カーブや窪みなどの道路の特徴を考慮に入れることができる。したがって、コストグリッド２０４は、車の周りの道路特徴からコストマップを生成する。これは占有グリッドに類似しているが、各ボクセルがコスト修正子(cost modifier)を伴っている。例として、道路が直接前方にある場合、右側には緊急レーンがあり、左側には別方向のレーンがある場合、グリッドには低コスト（又は負のコスト）のストライプが含まれ、高いコストボクセルのストライプが右側に、非常に高いコストボクセルのストライプがその左側にくる。同様に、道路にカーブが存在する場合、道路外の領域のコスト修正子は、車が道路を外れるのを最小限に抑えるために、より高いコストとして示される。レーン変更を最小限に抑えるためにコスト修正子を割り当てることもできる。道路のコストグリッド２０４の各ボクセルは、ｘ座標及びｙ座標を含むことができるが、値として時間を必要としない。ボクセルには、速度制限に関する嗜好表現をサポートするため、速度などの情報を含めることができる。もちろん、他のパラメータを所望に応じて使用してもよい。
【００３６】
動作計画モジュール２０５は、識別された動的オブジェクトのオブジェクト追跡器２０３から出力された推定値から検出されるオブジェクト及びサンプル軌道に対応するコストグリッド２０４からボクセル及び割り当てられたコストを受け取り、この車両用又は他のロボット用動作計画を生成する（自律型車両の適切なハードウェアによって実行可能）。使用されるメモリのタイプは、ダイナミックランダムアクセスメモリ、フラッシュメモリ、光磁気メモリ、磁気抵抗メモリ、光ベースメモリなどの任意の適切な記憶媒体とすることができる。
【００３７】
計画グラフがこの記憶装置に記憶される。上述したように、計画グラフは、格子、ＰＲＭ、ＰＲＭ＊、又は他の適切なグラフでよい。動作計画モジュール２０５のハードウェアプロセッサは、オブジェクト追跡器２０３で出力された軌道をサンプリングして、コスト／リスクを調整する。言い換えれば、動作計画モジュール２０５は、サンプル軌道を考慮して、グラフの各エッジに沿って、コスト値及び／又はリスク値を含む可能性のある衝突確率を調整する。このサンプル軌道は、ボクセル（又は障害物の他の表現）にマッピングされ、衝突検出の実行に使用可能である。したがって、この動作計画ハードウェアは、リスクを認識した動作計画ハードウェアである。
【００３８】
一例では、動作計画モジュール２０５は、各動的障害物の将来軌道の確率的推定からその軌道をサンプリングし、各サンプルに対する衝突検出を実行する。衝突におけるエッジは、衝突する可能性のある推定確率を増加させる可能性がある。２００個のサンプルがある場合、各軌道上の衝突は、１エッジの確率衝突に１／２００を加える。この値は、計画グラフのエッジの一部として保存され、最短経路アルゴリズムの実装中に使用される（例えば、再構成可能かつハードウェアで実装された最短経路モジュールのアルゴリズムについては、ベルマンフォード法使用に関する記載を参照）。この値は、計画グラフのエッジに関連付けられて動作計画モジュール２０５に保存することができる。
【００３９】
衝突検出は、場合によっては、これに限定されるものではないが２０１６年１月５日に出願されたＰＣＴ／ＵＳ２０１６／０１２２０４号「特定のロボット動作計画ハードウェア及びその製造方法及び使用方法」に記載されている方法を使用することを含む。その全体を参照により本明細書に組み込む。
【００４０】
動作計画モジュールが実行する処理の一例を以下に示す。
【００４１】
動作計画モジュール２０５は、計画グラフ内のすべてのエッジについてのリスクを計算し、次に割り当てることによって、目標位置に到達する効率と他の障害物への衝突のリスクとをバランスさせる動作計画を生成する。動作計画モジュール２０５に保存されている確実性と衝突する計画グラフのエッジ（例えば、これらの静的障害物）は、除去されるか、又はリスクに割り当てられる。自律型車両の多くの実際的なアプリケーションでは、エッジは残るが、リスクが割り当てられる（非常に小さい／無視できる割り当て値、又は非常に大きい／最大の割り当て値）。エッジに割り当てられたリスクは、静的オブジェクト（例えば、１００％）に対する所定のリスク値に基づくことができる。不確実な障害物との衝突がないという高い確率を確実にするため、動作計画モジュール２０５は、確率的推定から軌道分布全体をサンプリングし、計画グラフの各エッジとの衝突確率を計算することができる。
【００４２】
動作計画モジュール２０５が軌道をサンプリングし、（エッジに割り当てられたリスクに基づいて）エッジに対する衝突確率を決定した後、動作計画モジュールは、コストと衝突の可能性とを考慮して目標位置への「最短」経路を決定する。例えば、ゴール位置に到達する最速の方法は、自転車運転手を直進させることであるが、そのような経路では自転車運転手が引き倒される可能性（衝突の推定値など）が２％あり、これは高コスト（やや悪い／悪い決定）である。他の経路オプションには、自転車の運転手の周囲を回ることも含まれる。別の例として、ゴミ箱に当たる確率が大きい場合であっても、ゴミ箱にぶつかることは、犬にぶつかるよりもコストは小さい。したがって、ゴミ箱にぶつかる有効コストは、犬にぶつかるよりもはるかに小さい。衝突の確率が１００％である場合、その有効コストは最大である。別例では、リスク限定を用いるケースでは、衝突の確率が軌道当たり５％未満である必要がある場合、衝突の可能性が５％未満という限定で最小経路コストを求める探索を行うことができる。リスクと効率を交換するコスト関数が望ましい場合、動作計画モジュールは、２つの用語を使用して修正コストを計算し、最短経路アルゴリズムを実装することができる。この経路は、動作計画モジュール２０５から出力され、それに応じて移動するためにロボットに送られる。
【００４３】
一般に、移動するロボットでは、すべての経路がある程度衝突する確率を有する可能性があり、そうでなければ車両は静止したままであるべきである。しかし、静止していることは、一般的には車両にとって妥当な選択肢ではない。ほとんどの運転者は、効率とのバランスがとれている場合、例えば衝突のリスクとして０．１％の閾値を適切に十分な値として採用することができる。ロボットは、又はこの場合は自律型車両、設計者は特定のトレードオフを選択できる。動作計画モジュール２０５は、そのトレードオフを知りつつ、最短経路を計算することができる。
【００４４】
リスク対効率のバランスをとる、又は少なくとも考慮することによって、動作計画モジュール２０５はリスク認識動作計画を提供する。一実施形態では、時間Ｈにおける所望の目標位置の一組（又は、時間Ｈにおける位置に対する嗜好）が与えられると、動作計画モジュール２０５は、（ａ）可能性のある衝突に基づくエッジの除去、又は各エッジにコスト又はリスクの追加、（ｂ）道路のレイアウトに基く各エッジの削除又は追加、及び／又は（ｃ）最小コストと場合によってはリスク限定とを用いた計画の計算を含むことができる。
【００４５】
実行時には、コストとコストの発生確率が変化する。したがって、動作計画モジュール２０５によって実行される動作計画は、本質的に反復的であり得る。すなわち、再計画は、計画を作成し、単一の動作を行い、その後、動作計画プロセスを再び繰り返すステップを含むことができる。この場合、車両の原点にある格子（又は他の計画グラフ）を一貫性維持のために定着させることが非常に有用である（また、車両が障害物に近づいているために計画の解決策を減らすことができる）。
【００４６】
ここに記載のシステム２００は、車両システム（例えば、ブレーキ、エンジン、ステアリング等）に対する調整を実装することができる、オンボードコンピュータプロセッサ及び電気的及び／又は機械的に接続された作動システムを含む車両の一部として実装することができる。様々な構成要素に電力を供給するために、ストレージシステム、ならびに電源及び／又は接続を含めることができる。センサ２０１は、環境を検出し分析することができるセンサシステムの一部であってもよい。センサシステムの例として、ビデオカメラ、イメージセンサ、赤外線センサ、超音波トランシーバ、マイクロホン、力センサ、容量センサ、加速度計、ジャイロスコープ、及び温度センサの形態の光学センサ、マイクロ波センサ、音響センサ及び他のセンサが含まれるが、これに限定するものではない。センサシステムは、車両に局所的であり得る構成要素及び車両から離れ得る構成要素を含むことができる。例えば、場合によっては、センサシステムは、環境内に配置可能なセンサを含むことができ、その出力は、車両でローカルに分析される、又はロボットから遠隔にて分析され、（利用可能な他のアプリケーションの中で）動作計画において使用するようにロボットに伝達される。
【００４７】
オンボードコンピュータプロセッサは、動作計画モジュール２０５に使用されるプロセッサのいずれかとは別又は同じプロセッサすなわち処理システム、及び／又はオブジェクト検出器２０２及びオブジェクト追跡器２０３によって使用されるプロセッサのいずれかであってもよい。処理システムは、車両の記憶システム及び／又は動作計画モジュール２０５（及び／又はシステム２００の他のコンポーネント）に保存されたソフトウェアの命令に従ってデータを変換又は操作する１つ又は複数のプロセッサを含むことができる。処理システムのプロセッサの例には、汎用中央処理装置、特定アプリケーション向けプロセッサ、論理装置、及びグラフィック処理装置（ＧＰＵ）、ならびに任意の他のタイプの処理装置、組合せ、又はそれらの変形が含まれる。処理システムは、ネットワーク接続構成要素、ビデオ表示構成要素などの１つ以上の他の構成要素を伴うシステムオンチップ（ＳｏＣ）であっても、これに含まれていてもよい。さらに、衝突検出及び／又は最短経路決定を含む動作計画モジュール２０５の態様は、（再構成可能性をサポートすることができる）ハードウェアで実装することができる。
【００４８】
ストレージシステムは、物理的記憶装置の形態の記憶媒体を含む。「記憶媒体」という用語は、一時的信号又は伝搬信号として定義されるべきではない。この車両の記憶システムは、処理システムと通信することができるコントローラなどの追加要素を含むことができる。
【００４９】
単純（すなわち、リスク認識を含まない）又はリスクを認識することのできる動作計画モジュールは、広範囲のロボット及び動作計画アプリケーションに対して再構成可能であり、又はロボット及びシナリオ固有であり得る。
【００５０】
ロボット記述（例えば、ロボットの衝突形状、ロボットの各関節の自由度、ロボットの関節限界）及びシナリオ記述を使用してＰＲＭ（又は他の計画グラフ）を生成し、次いで、障害物（既知の障害物及びロボット自体の部品）の各部分と衝突する可能性のあるＰＲＭ内のエッジをすべて識別することによって、動作計画モジュールの衝突検出部を生成できることが分かる。ハードウェアにより実現されるソリューションには、論理回路を生成することができる。たとえば、エッジが衝突する可能性のある障害の部分をＯＲで表現する各エッジのＯＲ回路が生成される。再構成可能な解決策では、論理回路は、再構成可能なアーキテクチャ（例えば、ＦＰＧＡ）に実装される、又は動作計画モジュールのハードウェアプロセッサによって適用されるソフトウェア表現として保存され得る。あるいは、エッジのリストを保存し、動作計画モジュールのハードウェアプロセッサによって探索することができる。
【００５１】
動作計画モジュールは、いったんハードウェアにより実現又は動作計画モジュールに保存されると、リアルタイムの動作計画を実行するためにロボットにより使用となる。
【００５２】
図３は、本発明の特定の実施形態による動作計画モジュールの例示的なアーキテクチャを示す。図３を参照すると、動作計画モジュール３００は、衝突検出モジュール３１０と最短経路モジュール３２０とを含むことができる。衝突検出モジュール３１０又は最短経路モジュール３２０の一方又は両方は、再構成可能であり得る。
【００５３】
動作計画モジュール３００のいくつかの実装は、最短経路加速のためのハードウェアアーキテクチャなしでソフトウェアベースの最短経路アルゴリズムを使用することができる。プログラミングフェーズでは、ユーザが関心のある問題の装置を構成及び再構成することができる。関与する特定のロボット及び計画グラフの事前計算済み衝突データは、チップの動作計画モジュール３００に送られる（点線の矢印はプログラミングフェーズで発生する通信を示し、実線はその実行フェーズで発生する通信を示している）。
【００５４】
最短経路モジュール３２０がハードウェアで実装されると、計画グラフのトポロジも、ハードウェアユニットの再構成可能なファブリックにマップされ、最短経路の迅速な決定が可能となる。このマッピングステップは、各物理ノードを、その論理的な隣接物のアドレス及びエッジ重みでプログラミングすることを含む。これにより、アーキテクチャをさまざまな計画グラフのトポロジに再構成することができる。
【００５５】
有利にも、本明細書で説明する最短経路ハードウェアは、動作計画以外の用途で利用することができる。したがって、最短経路モジュールは他の用途にも適用可能であると考えられる。
【００５６】
図３に戻ると、実行フェーズ中に、ホスト（例えば、ロボットシステム）は、知覚データを動作計画モジュール３００に送信する。知覚データは、現在の環境においてボクセルが存在するストリームである。衝突検出モジュール３１０は、どの動作が安全であるかを計算し、それが完了したら、結果を最短経路モジュール３２０に送る（それ以上のホスト装置通信なしで）。衝突検出モジュール３１０は、衝突のエッジを除去することによって、それに応じて計画グラフを修正する。次に、最短経路モジュール３２０は経路Ｐを実行してホストに返す。
【００５７】
ユーザは、異なるロボット／計画グラフの組み合わせに関連する様々な構成ファイルを保存することができる。新しい組み合わせに切り替えると、装置は、例えば、事前計算済み衝突データと、及び任意に計画グラフデータと、最短経路モジュール３２０の再構成可能な実装への論理／物理ノードマッピングとを衝突検出モジュール３１０の再構成可能な実装に提供することによって再プログラムされる。
【００５８】
衝突検出モジュール３１０は、ハードウェアプロセッサ、記憶装置、及び事前計算済み衝突データを含むことができる。動作計画中、知覚データが受信されると、その知覚データは、ハードウェアプロセッサによって、記憶装置に保存された事前計算済み衝突データと比較されて、衝突が判定されるように、事前計算済み衝突データが記憶装置に保存される。
【００５９】
最短経路モジュール３２０は、最短経路アルゴリズムを実装する並列ハードウェアユニット（例えば、図７に示す例を参照）と、論理的ネイバーを識別するために、論理的トポロジを並列ハードウェアユニットの物理的トポロジにマッピングする回路（例えば、図８及び図９を参照）とを含むことができる。動作計画に対して、最短経路モジュール３２０は決定された衝突を受信して計画を出力する。
【００６０】
再構成可能な動作計画モジュールを動作させる例示的な方法は、第１のプログラミングフェーズを実行して、特定のロボット及び特定のシナリオのためにモジュールをプログラムすることと、プログラムされた動作計画モジュールを使用して動作計画を実行することと、第２のプログラミングフェーズを実行することによって動作計画モジュールを再構成して新たな特定のロボット及び／又は新たな特定のシナリオのためにモジュールをプログラムすることとを含むことができる。次いで、その再構成されたモジュールを動作計画に使用することができる。
【００６１】
ロボット動作計画加速のための再構成可能なアーキテクチャの例
【００６２】
このアーキテクチャは、自律型車両又は任意の一般的なロボットの実施形態に適用することができる。尚、ＰＲＭすなわちロードマップを具体的に説明するが、他の計画グラフを使用してもよい。衝突検出のワークフローには４つの段階がある。第１に、十分な堅牢性を有するＰＲＭがプログラミングフェーズで構築される。次に、このＰＲＭを、環境の離散化図で徹底的に衝突チェックする。動作計画モジュールのプログラミングフェーズ中、事前計算データは衝突検出モジュール（例えば、衝突検出モジュール３１０）に送られ、容易にアクセス可能な方法で保存される。リアルタイム（すなわち、ライブ）中に、衝突検出モジュールは障害物情報を流し、衝突しているエッジにフラグを立てる。上記は一般的なアーキテクチャの記載であり、図３に例示している。
【００６３】
ＰＲＭは、可変的な障害物を含まない空間内に構築される。シナリオに関する先験的知識はいずれも、壁やテーブルなどの固定されたオブジェクトを含めることで活用できるが、障害のない環境でＰＲＭの構築が行われる。ＰＲＭは、予想される障害に対して堅牢になるように十分に大きくされている。このアーキテクチャについて、ＰＲＭが構築される方法はいずれでもよい。この実施形態では、対象シナリオのパラメータ化された表現から無作為に生成された数千のサンプル環境に対して、（エッジが数十万のオーダーの）大きなグラフをテストする。有用かつ重要なエッジが保持され、解であまり使用されないエッジは除かれる。このヒューリスティックプロセスは、各ステップでＰＲＭが高い成功率を保持し、経路品質劣化を起こさないことを保証するように数回繰り返される。これは、１つの環境用にＰＲＭを構築するよりはるかに時間がかかる作業であるが、この工程は一度だけの実行でよい。
【００６４】
いくつかの量の衝突検出は、事前プログラミングフェーズの間に実行することができる。この段階で実行時に時間を節約するために、ジオメトリテストを実行することができる。下の例は、障害物を表すためにボクセルを使用した衝突検出を示す。他の障害表現が使用されてもよいことを理解されたい。この環境はボクセルの３Ｄ領域に離散化することができる。次に、ＰＲＭの各動作の掃引容積と離散化された空間内のボクセルとの間で可能性のあるすべての衝突が事前に計算される。
【００６５】
このステップの後、各動作には衝突するボクセルの対応組ができる。こうなると知覚システムは、離散環境における空間のどの領域が障害物によって占有されているかを表す占有グリッド（例えば、自律型車両の実施形態ではコストグリッド）を生成し、次いで各動作について、障害物ボクセルのどれが衝突ボクセルの組に入っているのかをチェックするだけでよい。これが起こる全ての動作について、対応エッジを、環境が変化するまでＰＲＭから一時的に除去しなければならない。事前計算した衝突データ及びＰＲＭは、所与のロボット及びユースケースに固有であることに留意されたい。ロボットが変化したりシナリオが大幅に変化したりした場合は、ＰＲＭ、したがって衝突データを再計算する必要がある。これらの構造は設定ファイルに保存される。さまざまなロボット／計画グラフの組み合わせに関連するさまざまな構成ファイルが保存可能である。新しい組み合わせに切り替えると、デバイスを再プログラムすることができる。同じユースケースに対するクエリの間（例えば、障害物やゴールポジションだけがある場合など）、再プログラミングの必要はない。ソフトリセットにより、インコリジョン(in-collision)としてフラグが立てられたエッジが復元され、次のクエリがすぐに開始される。同じシナリオでは、環境に若干の変更があっても再プログラミングの必要はない。
【００６６】
上記のボークセットセットが論理的に作成されると、実行時にセットを迅速に照会できるアーキテクチャが作成される。再構成可能性機能の一部として、プログラミングフェーズの間に、ユーザは計画グラフ（例えば、ＰＲＭ）及び事前計算済み衝突データを衝突検出モジュール３１０に送る。ＰＲＭ内の各動作は、基本的に「テンプレート化」された積和であるエッジモジュールに割り当てられる。個々のエッジモジュールは、ハードコードされた論理機能ではなく、あらゆるセットのチェックを可能にする記憶機構（例えば、ラッチ、コンデンサ、磁気トンネル接合装置など）を含む。並列性を達成し、エッジの数に依存しない衝突チェックレイテンシを実現するために、これらのプログラム化可能なエッジモジュールが大量に存在し、ＰＲＭの各動作に対して１つずつある。
【００６７】
このプログラミングフェーズの間、各動作が衝突する各ボクセルは、動作計画モジュールハードウェアに送られ、そのボクセルは適切なエッジモジュールに保存される。
【００６８】
図４は、単一動作に対する再構成可能な衝突検出アーキテクチャの例を示している。このアーキテクチャは単一のエッジを実装する。図４を参照すると、単一動作用の再構成可能検出アーキテクチャ４００は、制御ロジック４１０、記憶メカニズム（４２１−１、．．．、４２１−ｎ）及び比較器（４２２−１、．．．、４２２−ｎ）の平行な「エッジモジュール」、平行ラインの出力をＯＲして衝突結果を出力するＮＯＲ論理ゲート４３０とを備えている。
【００６９】
上述したように、個々のエッジモジュールの格納機構としてラッチを示しているが、任意の適切な格納機構を使用することができる。
【００７０】
実行段階の間に、衝突検出モジュール（例えば、図４のエッジモジュールを使用して実装された衝突検出モジュール３１０）がボクセルＩＤで流れ、それらをすべての個々のエッジモジュールに分配する。各エッジモジュールはそのボクセルＩＤとその保存されているすべてのデータとを比較し、一致するものがあれば真を出力する。つまり、特定のエッジが衝突していることを示す。衝突検出器モジュールは、エッジモジュールからの結果を集約し、衝突中の現在プログラムされているＰＲＭ内の動作を表すビットベクトルを出力する。
【００７１】
再構成可能性の結果、いくつかの課題が生じる可能性がある。それぞれの動作は、異なる容量の空間で、したがって異なる数のボクセルに衝突する。これは、モジュールをさまざまなサイズのエッジに対応できる大きさにする必要があるため、プログラマブル回路を実装する際に問題になりかねない。ハードウェアの効率は、それらが衝突するボクセルの数に基づいて可変サイズのプログラマブル衝突検出回路を作成することによって達成することができる。これに続くプログラミングフェーズで、衝突するボクセルの数に基づいて適切な衝突検出回路にＰＲＭ内のエッジを戦略的にマッピングする。
【００７２】
発生し得るもう１つの課題は、大量のハードウェアが必要となることである。主に２つの要因によって、この再構成の戦略には、ハードコードされた設計よりも多くのハードウェアリソースが必要となる。衝突データを保存する（そして再構成を実現する）ために必要な状態が重要である。ある動作が１，０００ボクセルに衝突し、各ボクセルが１５ビットで表される場合、その単一エッジは１５，０００ビットの状態を消費する。これは、単純なラッチを記憶メカニズムとして使用する場合でも非常に大きなコストとなりかねない。第２の要因は、ハードコードした論理式で作業するときに実行できるように、回路のサイズを減らすためにロジックミニマイザを使用できないことである。個々のエッジ内と重なる掃引容積を持つエッジ間との両方で、その式にかなりの冗長性がある。特殊な回路を構築する場合、この冗長性を活用して、論理式の複雑さを大幅に軽減し、実装に必要なハードウェアリソースを削減することができる。この節約分は、再構成可能なケースでは冗長性がまだ存在していても失われる。
【００７３】
このボクセルラッチ戦略により、ボクセルの任意の組み合わせからエッジの掃引容積を形成することができる。実際には、掃引容積のボクセルは接続され、連続状の容積を形成する。掃引容積の記述には順序があるという事実は、つまりデータを圧縮する方法が必要であることである。 掃引容積に含まれる個々のボクセルの表現を明示的に保存する代わりに、連続したボクセルの表現を格納することもできる。矩形のプリズム（便宜上「ボックス」と称する）は、ボックスの一対の対向角部の座標のみで表すことができる。これは、ボックスを保存するために必要な状態が、２つのボールを格納するのに必要な状態と同等であるため、大きな節約となる。各ボックスは、状態を減らすために元のボクセルの３つ以上をカバーしなくてはならない。
【００７４】
個々のボクセルの代わりにボックスベースの表現を使用するには、元のボクセルのすべてを含むボックスの集合を見つける必要がある。これは、集合被覆の最適化問題と同様に考えることができる。集合被覆の問題では、「ユニバース」と呼ばれる要素のセットと、ユニバースのサブセットの集合が存在する。この問題の最適化バージョンには、そのユニオンがユニバースと等しいサブセットの最小数を見つけることが含まれる。この適用例では、掃引容積がユニバースであり、サブセットの集合は、この掃引容積と重なるすべての可能な直角プリズムを含む。設計に必要な状態を減らすために掃引ボリュームを被覆するために必要なボックスの最小数を見つける必要があった。集合被覆の最適化問題はＮＰ困難であるため、近似解を計算しなくてはならない。まず、無関係な(extraneous)ボクセルを含まずに、掃引容積の離散化されたバージョン内のボクセルの最大数を被覆するボックスを選択する。セルはユニバースから取り除き（ボックスは重なり合うので、被覆されたボクセルはその後の反復で「気にならない」状態となる）。元のセットからのボクセルがすべて被覆されるまで再帰する。実験的な例として、この戦略を５０，０００のエッジを有するＰＲＭ上に実装した。１５ビット分解能の場合、各掃引容積は平均２，０００ボクセルと衝突することが分かった。このバージョンの集合被覆問題のおおよその解は、掃引容積を完全にカバーするために平均１２７個のボックス（余分なボリュームは含まず）が必要であった。
【００７５】
興味深いことに、完璧な被覆要件が緩和され、元の掃引容積に存在しなかったいくつかのボクセルをボックス表現に含めることが許容される場合、必要なボックス数が大幅に減少する可能性がある。この問題は今では複数の軸で考慮されるようになっている。ハードな制約として、少なくとも元の掃引容積を被覆しなくてはならない。この制約下では、追加被覆数をバランスさせながらこの被覆を達成するために必要なボックスの数が最小限に抑えられる。この最適化を組み込むためにこのアルゴリズムに別のステップが実装される。上記の集合被覆の後、その結果が一連のマージによって実行される。各反復にて、このアルゴリズムは２つのボックスを選択し、これらのボックスはマージされると、この集合に追加される最小の追加容積となる。このアルゴリズムの効果については、以下でより詳細に説明する。個々のボックスと対向してボックスの表現を保存できることは、ボックス内の構成数(membership)をチェックするハードウェアがこの変更を正当化するのに十分単純である場合にのみ有用である。論理的には、ボクセルがボックス内にあるかどうかをチェックするには、６つの比較がある。原点に最も近いボックスの頂点を（ｘ１；ｙ１；ｚ１）とし、原点から最も遠いボックスの頂点を（ｘ２；ｙ２；ｚ２）とすると、（ＶＸ；ＶＹ；ＶＺ）に位置するボクセルがボックス内にあるかどうかのチェックは、次の不等式が成立していることのチェックとなる。
【００７６】
ｘ１≦ｖＸ≦ｘ２；ｙ１≦ｖＹ≦ｙ２；ｚ１≦ｖＺ≦ｚ２．
【００７７】
この作業は、６つのコンパレータを平行に１サイクルで実行することができる。又は、少ない領域を使用するためにより少ないコンパレータを多重化することができる。
【００７８】
図５は、ボクセルの代わりにボックスを使用した戦略の衝突検出アーキテクチャの例を示している。ここでは、単一のボックスが例示されている。図５を参照すると、再構成可能検出アーキテクチャ５００は、制御ロジック５１０、記憶機構（５２１−１、．．．  ５２１−ｎ）及び比較器（５２２−１、．．．、５２２−ｎ）の並列モジュール、及びＡＮＤ論理ゲート５３０を含み、並列モジュールの出力を論理積して衝突結果を出力する。図４に示す例のように、ボックス戦略アプローチは、（図ではラッチは示されているが）任意の適切な記憶機構を使用することができる。
【００７９】
各動作のモジュールは、そのようなボックスの多くの論理和である。図５では、ボクセルではなくボックスを使用したデザインの単純さを見ることができる。プログラミング中、対向する角の座標がラッチされる。実行時に、入ってくるボクセルはボックスの角を表す保存された値と比較され、そのボクセルがボックス内にあるかどうかが確認される（たとえば、入ってくるボクセルを保存された値と比較して、その結果をＡＮＤ処理する）。
【００８０】
図６Ａ〜図６Ｄは、ＰＲＭ内の単一の動作に対する掃引容積の表現が、表現戦略によってどのように変化するかを示している。図６Ａは、実際の掃引容積を示す。図６Ｂは、動作用の個別ボクセルをすべて含む。 この掃引容積専用にハードコードされた回路が構築されている場合、この動作は約１０，０００トランジスタを消費する。上記のように各ボクセルを明示的に表すプログラマブル回路を設計する場合は、６６０，０００を超えるトランジスタが必要であり、６５ｘ以上の増加となる。図６Ｃは、個々のボクセルの代わりに８７ボックスを使用して記載した同じ掃引容積を示す。この戦略に必要な構造の場合、わずか６２００，０００個以下のトランジスタの消費ですむ。その結果、ハードコーディングされた回路に比べて４倍以下の増加になる。
【００８１】
エッジモジュールの集計結果の出力を使用して、コストを割り当てる、又はＰＲＭからエッジを除去することができる。衝突検出（及びＰＲＭのエッジへのコストの除去又は割り当て）が完了すると、ＰＲＭ上でグラフ探索が実行され、接続性が決定され、経路が構築される。グラフ探索は、従来の動作計画アルゴリズムではボトルネックではないが、衝突検出が加速される場合は制約要因になり得る。グラフ処理を高速化するプログラマブルアーキテクチャを設計する上での課題は、合理的なリソース要件がありながらも、予想されるグラフトポロジすべてを処理できる設計を実現することである。有利には、ここに記載のＰＲＭは、その最大度、最大エッジ重み、最大経路コストなどの特定の特性を保証することができるように、事前に静的に構築される。これらの数量(quantities)をまとめることにより、任意グラフが許可された場合よりもはるかにコンパクトで効率的な記憶構造及びデータ経路の設計が可能になる。図示した例では、データフローアーキテクチャはベルマンフォード法を実行するように設計されている。しかし、他の最短経路アルゴリズムは、回路が物理的ネイバーではないにもかかわらず論理的ネイバーを識別するためのサポートを含むハードウェアにおいて具現化されるように変更することができる。
【００８２】
図７は、一実装例によるベルマンフォード計算ユニットの基本的なマイクロアーキテクチャレイアウトを示す。包括的なアーキテクチャには、ベルマンフォード計算ユニット（ＢＦＣＵ）で構成され、かつ再構成可能なトポロジを実現するために使用される低コストの相互接続ネットワークを介して接続された一連のノードが含まれる。図８は、例示的実装用オンチップネットワークのための例示的なルータマイクロアーキテクチャを示す図である。図９は、相互接続ネットワークの平面図を示す。経路探索アーキテクチャの動作は３つのフェーズに分かれる。前処理フェーズでは、論理グラフから物理ハードウェアリソースへのマッピングを作成する。プログラミングフェーズでは、アーキテクチャのデータ構造を、手元のグラフに関する必要な情報で構成する。実行フェーズでは、分散版ベルフォード法が実行され、最短経路が計算される。
【００８３】
ベルフォード法は単一ソースの最短経路アルゴリズムである。まず、ソースを除くすべてのノードが無限大のコストに初期化される。各反復において、各ノードは、隣接ノードの現コストを隣接ノードのエッジ重みに加算することによって、各隣接ノードをより良い最短経路かどうかチェックする。このアルゴリズムは、ルーティングインフォーメーションプロトコルを実装するために分散式に一般に使用されるが、隣接コストだけでなく、ルーティングテーブル全体が通信されるという違いがある。
【００８４】
コストのかかるメモリアクセスを避けるため、ベルマンフォード法を実装するデータフローアーキテクチャが望ましい。このアーキテクチャは、特定のグラフ（又は自律型車両の実施形態では格子）用に設計するのには単純であろうが、再プログラム化可能とする必要性があると複雑になっていく。
【００８５】
グラフ内のすべての論理ノードは、静的に、動作計画ハードウェアモジュール上の物理ＢＦＣＵに割り当てられる。プログラミングフェーズでは、ＢＦＣＵ内のいくつかのテーブルに値が設定される。ノードの論理的ネイバーそれぞれの物理アドレスはテーブルに保存される。これらネイバー各々へのエッジ重みは別のテーブルに保存される。これらのテーブルは一度埋めなければならないが、別のグラフに切り替えるまで再利用できる。
【００８６】
各ＢＦＣＵには、宛先への現在の最良コストを格納するレジスタもある（このアプリケーションでは、ベルマンフォードは単一のソースアルゴリズムではなく単一の宛先として扱われる）。これらのレジスタは無限大を表す最大値にすべて初期化される。最短経路探索を開始するために、宛先ノードがマップされたＢＦＣＵがゼロコストに更新される。次に、宛先ノードはその近隣テーブルを反復し、その近隣のエッジ重みにコスト（ゼロ）を加えたメッセージを各隣接ノードに送信する。ネイバーはこのメッセージを受信すると、この新コストと現コストとを比較する。新コストが現コストよりも低い場合、いくつかのことが起こる。第１に、ノードは、その最良のコストレジスタと次のホップポインタとを更新する。第２に、それ自身のネイバーテーブル上で反復を開始して、そのネイバーの物理アドレスを見つけ出し、そのそれぞれにそのネイバーのエッジ重みにコストを追加したメッセージを送信する。
【００８７】
プレ加算(pre-addition)の代わりにポスト加算(post-addition)の値を送信するという決定は、偶然に見えるかもしれないが重要である。ポスト加算値を受信すると、ノードは、隣接ウェイトのあるテーブルにアクセスするためのサイクルを待ち、加算を行い、次に比較することのではなく（テーブルルックアップ中に届くメッセージを保存する必要がある）、単一サイクルでそのメッセージを処理するか廃棄するかを評価することができる。新しい最善のコストを処理し、ネイバーテーブルを反復することは数サイクルかかるが、各ＢＦＣＵは各サイクルで１つのメッセージのスループットを維持することができる。新コスト更新メッセージを受信したときに、更新を送信するためにＢＦＣＵがテーブルウォークをしているプロセス中であると、２つの可能性がある。その新コストが改善の場合、このテーブルウォーク上のまだ送信されていないメッセージは失効しているため、その反復を中断して新コストで再起動することができる。新しいコストが改善でない場合、メッセージは破棄される。各サイクルでメッセージを処理する中断のない機能により、計算ノードに入力バッファの必要がなくなり、クロックサイクルごとに各ノードでメッセージを取り出せることにネットワークが頼ることができることになる。これは、相互接続ネットワークを議論する際に重要になる。
【００８８】
コスト更新メッセージとは別に、ＢＦＣＵは２つの他のタイプのメッセージも処理する。ＢＦＣＵが次のホップクエリを受信すると、ＢＦＣＵは、最良コストを受信したネイバーのアドレスで応答する。このクラスのメッセージは、経路自体が抽出されることを可能にする。ＢＦＣＵは、最良のコストクエリを受信することもできる。このクエリには、最善のコストレジスタの現在の値で応答する。
【００８９】
ＢＦＣＵの動作は単純であるが、ＢＦＣＵのサイズを十分に小さくして、アーキテクチャが大きなグラフサイズに拡大できるように、いくつかのデザインを選択する必要がある。各ノードが無限の数の論理的ネイバーを持つことが許可されている場合、例えば、そのネイバーアドレステーブルは大きくなければならない。この戦略では、計画グラフを事前計算する必要があるため、計画グラフの品質に影響を与えることなく、各ノードに最大で４つの隣接ノードがあることが保証され得る。この制限は、必要に応じて、あまりにも多くの隣接ノードを論理的にゼロのエッジ重みで接続された複数のノードに論理分割することによって克服することができる。同様の決定は、経路とエッジのコストを最大限にして行う必要がある。
【００９０】
分散版ベルマンフォード法は、ネットワークが失敗したリンクをより効果的に処理できるように、スプリットホライズン広告ポリシー(split-horizon advertisement policy)を実装することがよくある。現在のアーキテクチャでは、グラフ探索が始まる前に衝突（計画グラフの事実上失敗したリンク）が伝達され、その理由でスプリットホライズンを維持する必要性がなくなる。より費用のかかるルートをノードの次のホップに広告することは、依然として不必要にネットワーク帯域幅を占有する。ただし、シミュレーションでは、これらの冗長なメッセージが性能にほとんど影響しない（経路探索完了時間の増加が１％未満）ことが示されている。スプリットホライズンを実装しないことで、複雑さが抑えられる。
【００９１】
これらの決定はすべて、各ＢＦＣＵの設置面積をきわめて小さく保つのに役立つ。各ノードには約６，０００個のトランジスタが必要である。このうち、７０％はプログラム可能状態で構成され、残りは組み合わせ論理である。この適度なサイズにより、難しい課題を解決するために必要な計算ノード数の実装が可能となる。
【００９２】
ベルマンフォード実装を実現するために、各ＢＦＣＵは、その論理的ネイバーと通信できる必要がある。しかし、設計は再構成可能でなければならないため、物理的ＢＦＣＵの海が所望のグラフトポロジの動作をエミュレートできるように、この通信はネットワーク上で行わなければならない。このネットワークにより、物理的に隣接していなくても、ＢＦＣＵは通信問題を抽象化し、物理的に隣接しているかのように実際に接続されているかのように動作することができる。
【００９３】
有用な設計には何千ものノードがあるため、このネットワークは空間と動力の両方で効率的でなければならない。提案されたマイクロアーキテクチャは、第一級の制約として、大規模なネットワーク規模へのスケーリングを可能にする単純さを重視している。ネットワークを単純化又は最適化するには、いくつかの方法がある。第１の点は、ＢＦＣＵ間のメッセージが非常に小さいため、各メッセージを単一のフリットとして構成できることである。各メッセージが単一フリットであるため、複数フリットはめったに連続して移動しない。これにより、クレジットリターンレイテンシをカバーする必要がないため、各ポートで１つのバッファエントリのみで性能を維持することができる。ルータの各出力方向には、１つの関連クレジットがある。このクレジットは１から始まり、その方向にメッセージを送信するとデクリメントされる。そのメッセージがネイバーのバッファエントリを空にした場合、このクレジットは隣接ルータから直接帯域から戻される。この単一のバッファエントリスキームを実装することにより、面積が４０％削減される。
【００９４】
さらに検討すると、中間回転バッファ(intermediate turning buffer)も十分に活用されていないように思われた。東西方向のリソースを解放することによってスループットを助ける代わりに、それは単純に恩恵なしに回転ペナルティを導入していた。旋回バッファを完全に取り外しても、性能はほとんど変化なかった。これは、部分的には、分散型ベルマンフォード法が生成するトラフィックが少ないことと、ＢＦＣＵはサイクル毎にメッセージを処理できるので、取り出されるのを待つ入力バッファ内に停止することがほぼない（２つのメッセージが同じ同時にノードに届いた場合のみ）ことによる。この最適化により、イースト／ウェスト入力バッファをノース／サウス／エジェクションマルチプレクサ(North/South/Ejection muxes)に直接接続することで、ルータのサイズをさらに縮小することができた。
【００９５】
さらに、我々の分散版ベルマンフォード法の特性は、このルータで通常要件であるように、スターベーション回避プロトコル(starvation avoidance protocol)の実装を避ける。このネットワーク内の新メッセージは、アルゴリズムの進行に伴い（より良いコストが受け取られると）生成されるだけなので、ネットワーク内の任意の場所での停止(stall)がアルゴリズム的に保証され、最終的に残りのネットワークが静止する。この休止状態は、メッセージを継続するために必要なリソースいずれをも解放する。シミュレーションは、これらの停止が極めてまれであることを示している。図８に示すルータアーキテクチャの設計では７，５００個のトランジスタを消費する。これの約６５％は４つのシングルエントリー入力バッファであり、これは個々のルータのバッファ要求を減らす重要性を示している。
【００９６】
再構成可能なネットワークの提案された設計の１つの目標は、多種多様なネットワークで良好な性能を実現する能力である。これを達成するには、論理的計画グラフ構成を物理的ＢＦＣＵにスマートマッピングする必要がある。通信レイテンシを最小限に抑えるには、理想的には論理的ネイバーを物理的に隣接するＢＦＣＵにマッピングするが、これは計画グラフのトポロジによって常に可能とは限らない。ＢＦＣＵの物理的ネットワークは２Ｄメッシュであるが、論理的計画グラフはロボットの高次元構成空間で作成されているため、平面図ではあり得ない。
【００９７】
前処理フェーズの間にこのマッピング問題に対する許容可能な解を得るため、シミュレーテッドアニーリング手法を使用した。シミュレーテッドアニーリングは、複雑な状態空間の最適性を探索するための古典的な手法である。まず、論理ノードを物理メッシュ上の位置にランダムに割り当てる。このシステムは、特定の「温度」及び冷却速度で初期化される。各反復にて、このシステムは隣接状態に移行しようとする。隣接状態は、ノード（ノードＡ）をランダムに選択することによって生成される。ノードＡの論理的ネイバー（ノードＢ）の１つが選択され、１つの物理的位置がノードＢのネイバー近傍でランダムに選択される。このネイバー状態は、このロケーションに現在マップされているどの論理ノードでもノードＡとスワップすることによって構築される。この新しい状態がシステムのエネルギ（本出願では、論理的ネイバー間の平均物理的距離として定義される）を減少させる場合、それは受け入れられる。システムのエネルギを増加させる場合には、システムの現在の温度に依存する確率で受け入れられる。温度が高いほど、システムはより高いエネルギのネイバー状態を受け入れる可能性が高い。より高いエネルギ状態を受け入れることにより、アルゴリズムは局所的な最小値からその道を見つけることができる。各反復において、その温度は冷却速度で指数関数的に減少する。
【００９８】
最短経路アーキテクチャと衝突検出アーキテクチャとの間のインターフェースは、相互接続ネットワーク上のポイントで発生する。これらの点は、「制御ノード」と呼ばれることがある。図９は、相互接続ネットワークの周辺に位置する制御ノードを示す。衝突検出モジュールは、どの動作（グラフエッジ）が制御ノードに衝突しているかを表すビットベクトルを送信する。衝突における各動作について、制御ノードは、ＢＦＣＵが次のクエリにそのエッジを使用すべきでないことを示すメッセージを、エッジの両側のノードに割り当てられたＢＦＣＵに送信する。制御ノードはまた、完了時に経路自体を収集する役割を担う。この目的のために、制御ノードに最短経路探索の状態をどのように評価するかを指示するパラメータが（プログラミングフェーズ中に）設定される。これには、ソースノードの最高コストを調べ始めるまでに待機するサイクル数と、完了を示す条件が含まれる。これらの条件は、後述するように、静的解析によって決定することができる。制御ノードのサイズは、関連する構成の物理アドレスにエッジＩＤのマッピングを保持するのに必要なストレージによって支配される。このマッピングにより、制御ノードは衝突検出結果をネットワーク上の適切な場所に転送することができる。１２８×１２８メッシュが実装されている場合、各制御ノードはほぼ１９０，０００個のトランジスタを消費し、そのほとんどはマッピングテーブルである。
【００９９】
この実装例では、ロボットではどこにでも存在するため、ピックアンドプレースを評価する。ＰＲＭを、Ｋｉｎｏｖａ製６自由度のＪａｃｏＩＩロボットアーム用に様々なサイズで生成した。実験は、無作為に配置され、かつサイズが設定された障害物と様々なソース／宛先の対からなるサンプリングした環境で実行された。４，０００から２５６，０００のエッジに及ぶＰＲＭの問題を解決するシステムの動作をテストしたが、その面積とタイミングの数値は、１６，０００ノード及び３２，０００エッジＰＲＭの問題を解決する１２８ｘ１２８の実装に焦点を当てる。このサイズであれば、このロボット空間における難しい問題を解決するのに十分である。
【０１００】
シノプシス（Ｓｙｎｏｐｓｙｓ）社のツールチェーンとＮａｎＧａｔｅオープンセルライブラリ１５ｎｍ（Ｏｐｅｎ  Ｃｅｌｌ  Ｌｉｂｒａｒｙ）を使用して設計を組み合わせ、性能、面積、消費電力の見積もりを出した。以下の数字は、１６，３８４ノード（１２８ｘ１２８）で実装した場合の数値である。面積はトランジスタ数で与えられ、これはテクノロジ・ノードから独立していなければならないが、レイテンシと電力の推定はこの積極的な特徴サイズ(aggressive feature size)に依存する。
【０１０１】
衝突検出アーキテクチャは、使用される計画グラフのエッジと完全に平行であるため、そのレイテンシ時間は処理する必要のある障害物の数にのみ左右される。この実験でサンプリングしたランダムなピックアンドプレース環境では、平均７５０個の障害ボクセルがあった。つまり、各ボクセルは処理に１サイクルしか必要ないため、衝突チェックに平均７５０サイクルかかることを意味する。
【０１０２】
提案された最短経路アーキテクチャの有効性をテストするため、サイクル精度のシミュレータを、相互接続ネットワークと関連ＢＦＣＵ用に記述した。この設計にはＶｅｒｉｌｏｇを使用し、小規模な実装では機能の正確性のテストにＲＴＬシミュレータを使用したが、ＲＴＬシミュレータで１６，３８４ノードの実装に数千回のタイミング実験を実行する時間は限定的である。このシミュレータは、マイクロアーキテクチャの開発と最終結果の効率的なプロファイリングを行う設計スペースの迅速な探索である。
【０１０３】
１６，０００ノードのグラフでは、完了までの平均時間は３６０サイクルである。グラフ探索速度自体に加えて、評価すべき設計の一態様は、探索完了を検出する方法である。図１０は、５，０００を超えるサンプリングをした環境でシミュレートされた、２つのサイズのロードマップについて様々な時点で完了する確率を示している。データの静的解析を使用してパラメータを選択し、プログラミングフェーズ中に経路抽出モジュールを構成して完了を識別した。１６，０００ノードのグラフでは、この戦略で９９％以上の完了を正しく識別する。これは、２７０の余分なサイクルの平均オーバーヘッドになる。
【０１０４】
この方法は、経路探索時に経路探索が完了していることが厳密に保証されていないものの、無効経路を返すことはなく、準最適経路であるだけであるため許容範囲内である。ほとんど起こらないが、パラメータが適切に選択され、かつこれが特定のアプリケーションに適切でない場合、このアルゴリズムはグラフ内のノード数で制限された速度で確実に静止し、より控えめな(conservative)パラメータ設定を使用することができる。
【０１０５】
完全な経路探索と高精度検出の両方に時間を集約すると、平均６３０サイクルが得られる。しかし、ハードウェア設計では一般的であるように、データの移動は計算と同じくらい時間がかかる。衝突をＢＦＣＵに伝え、実際に経路を抽出するには、９５０サイクルの追加のオーバーヘッドがある。衝突検出の実行時間を含めて、障害物のボクセルが到着してから経路が出力可能になるまでの総平均レイテンシは２，３３０サイクルである。シノプシス社の合成では、この設計が１ＧＨｚで容易にクロックされることが示されており、これは２．３マイクロ秒のレイテンシに相当する。このレイテンシは、従来のサンプリングベースのプランナよりも約５桁速く、以前から提案されているアクセレータよりも２桁も高速である。
【０１０６】
合計で１６，３８４ノードの設計では、約２３億個のトランジスタが消費される。大部分のスペースは、単純化されたボックス表現であっても、衝突検出モジュールで埋められる。次に大きなコンポーネントはネットワークノードであり、４つのシングルエントリバッファ(single-entry buffers)によって支配される。シノプシス社は、設計の消費電力を３５ワットと推定している。面積数と同様に、これは大部分が衝突検知モジュールからのものであり、残りはネットワークからのものである。
【０１０７】
図１１Ａは、ロードマップ内のエッジ数に対する衝突チェックのレイテンシのプロットを示す。図１１Ｂは、ロードマップのエッジ数に対する最短経路探索のレイテンシのプロットを示す。性能のスケールが問題サイズに比例してどのように拡大するかを検討することも重要である。図１１Ａは、各エッジに専用のハードウェアが存在するため、衝突検出の実行時間がＰＲＭのエッジ数に依存しないことを示している。１６，３８４ノードの実装では最大３２，７６８のエッジを処理できるが、この設計はより大きな実装へと容易に拡張できる。図１１Ａはまた、ＣＰＵ及びＧＰＵ上に実装された同じ事前計算を利用する戦略を示すことによって、専用ハードウェアと比較して積極的な事前計算からどのような利益が得られるかを解明するのに役立つ。ＣＰＵバージョンは、８ＧＢのＲＡＭを搭載した４コアのＨａｓｗｅｌｌｉ７上で実行される高度に最適化されたＣプログラムであり、すべてのハードウェアスレッドを利用するＯｐｅｎＭＰディレクティブを備えている。ＧＰＵバージョンは、ＴｅｓｌａＫ８０で動作するうまくチューニングされたＣＵＤＡカーネルである。これらの戦略はどちらも、実行時に従来のサンプリングベースのプランナを実行する場合に比べて約１０倍のスピードアップを実現するが、ここに提案の解決策よりもはるかに低速である。
【０１０８】
図１１Ｂは、提案の再構成可能なベルマンフォードハードウェアベースの最短経路アルゴリズムのスケーリング動作を示し、このカスタムハードウェアソリューションの必要性を示している。各ノードに専用のハードウェアを持たせることで、グラフの平均ホップ数で線形にスケーラビリティを向上させることができる。提案のカスタムハードウェアソリューションに加えて、ＣＰＵ及びＧＰＵ上の最短経路探索のパフォーマンスも示されている。ＣＰＵは、最適化されたロボットソフトウェアパッケージであるＫｌａｍｐｔで最短経路実装を実行する４コアのＨａｓｗｅｌｌ  ｉ７である。ＧＰＵは、Ｔｅｓｌａ  Ｋ８０のｎｖＧｒａｐｈグラフ分析ＡＰＩを使用して、最短経路で動作している。提案のアーキテクチャでは、最短経路と衝突検出とを緊密に結合させる必要があるため、ＧＰＵはＰＣＩ−ｅを介した通信を含んでいるが、どちらの実装でも適正にすべきデータ移動オーバーヘッドは含まれていなかった（この数値は計算時間に厳密に関係している）。それでも、ＧＰＵの計算時間は実際には小さなグラフサイズのＣＰＵよりも遅く、約３２，０００のエッジを横断し、ここに提示する提案解決策よりも数桁遅いままである。これは、最短経路のレイテンシを加速衝突検出と同じオーダーの大きさにするために、カスタムハードウェアソリューションが必要であることを示している。
【０１０９】
評価すべき衝突検出を実行するためのボックス化戦略にはいくつかの側面がある。第１は、ハードウェアコスト削減の追求する上で、掃引容積表現におけるボックスの数を積極的に減らす技術である。ボックス化した衝突検出用の上述アルゴリズムを使用して、５０，０００のエッジロードマップ上のパラメータ空間の掃引を実施し、ハードウェア予算と表現量の増加との間のトレードオフを評価した。
【０１１０】
図１２は、ハードウェア予算と表現量の増加との間のトレードオフの視覚化したものである。オリジナルのボクセル化容積を正確に表す平均ボクセル数は１２７である。しかし、上述のアルゴリズムを使用すると、わずか６４のボックス予算で、各表現の平均容積がちょうど１１％増加する。この最適化が安全であることに十分留意されたい。なぜなら、容積が追加されるだけで削除されることはなく、現状のまま衝突動作に誤ってフラグが立てられることはないからである。各ボックス表現のサイズが２つのボクセルに等しいことを考えると、ボクセルで容積を表現する方がボクセルよりもはるかに効率的である。もう１つの問題は、このより粗い表現が、アーキテクチャが最適経路を見つける能力を低下させる頻度である。５０，０００のエッジＰＲＭを、個別のボクセル表示と１０％量を増加させたボクセル化戦略との両方を使用して、５，０００のサンプリングされた場所のピックアンドプレース環境に対してテストした。容積を１０％増加させた場合、失敗率はわずか０．１３％の増加であった。残りの経路のうち、平均経路長は０．５９％増加した。この小さなマイナス要素は、ボックスを使用した完璧なカバーと比較して、ハードウェアコストが５０％減少していることによって十分に相殺される。これらの結果から、ボックス表現による衝突検出を実行する戦略が、必要なハードウェアリソースを効果的に削減し、経路品質も維持することがわかる。
【図１】
2019517702.tif 000003
【図２】
2019517702.tif 000004
【図３】
2019517702.tif 000005
【図４】
2019517702.tif 000006
【図５】
2019517702.tif 000007
【図６Ａ】
2019517702.tif 000008
【図６Ｂ】
2019517702.tif 000009
【図６Ｃ】
2019517702.tif 000010
【図６Ｄ】
2019517702.tif 000011
【図７】
2019517702.tif 000012
【図８】
2019517702.tif 000013
【図９】
2019517702.tif 000014
【図１０】
2019517702.tif 000015
【図１１Ａ】
2019517702.tif 000016
【図１１Ｂ】
2019517702.tif 000017
【図１２】
2019517702.tif 000018
【手続補正書】
【提出日】平成30年12月18日(2018.12.18)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
自律型車両用の動作計画のためのシステムであって、
複数のセンサと、
前記複数のセンサと電気的に通信する複数の検出器と、
前記の検出器と電気通信し、かつ自律型車両の計算システムと電気的に通信する動作計画モジュールと、を含み、
前記動作計画モジュールは、エッジで接続された複数のノードを含む計画グラフを保存し、
各ノードは、前記自律型車両の状態、動作環境、又は前記自律型車両の状態と前記動作環境との両方を画定する時間及び変数を暗示的又は明示的に表し、
前記動作計画モジュールは、前記複数の検出器から知覚データ及びサンプル軌道を受信し、前記サンプル軌道を考慮して前記知覚データ内で障害物と衝突する前記計画グラフ内の各エッジに沿った衝突確率を調整し、コスト及び衝突確率を考慮して経路を特定し、前記経路を前記計算システムに出力する、システム。
【請求項２】
前記複数の検出器は、前記動作環境内の動的オブジェクトを識別するオブジェクト追跡器を含み、前記動的オブジェクトについての将来軌道の確率分布を前記動作計画モジュールによるサンプリング用に出力する、請求項１に記載のシステム。
【請求項３】
前記複数の検出器は、前記動作環境内で識別済みオブジェクトを表す障害物の表現を含む知覚データを生成するオブジェクト検出器を含む、請求項１に記載のシステム。
【請求項４】
前記動作計画モジュールは、ハードウェアプロセッサ、記憶装置、及び各々が前記計画グラフの複数のエッジの各１つを表現する複数の衝突検出ユニットを含む、請求項１に記載のシステム。
【請求項５】
前記動作計画モジュールは、再構築可能なアーキテクチャを含む、請求項１に記載のシステム。
【請求項６】
前記動作計画モジュールは、
ハードウェアプロセッサと、
前記計画グラフが保存される記憶装置と、
前記記憶装置に保存される事前計算済み衝突データであって、実行時、知覚データが受信されると、前記知覚データが、前記ハードウェアプロセッサによって、前記記憶装置に保存されている前記事前計算済み衝突データと比較されて衝突が判定される、衝突データと、
を含む、請求項１〜３のいずれか１項に記載のシステム。
【請求項７】
前記事前計算済み衝突データは、新たな自律型車両又はシナリオに対しては新たな事前計算済み衝突データに更新される、請求項６に記載のシステム。
【請求項８】
ハードウェアプロセッサと、
記憶装置と、
前記記憶装置に保存され、エッジによって接続された複数のノードを含む計画グラフと、
を含み、
各ノードは、自律型車両の状態、動作環境、又は前記自律型車両の状態と前記動作環境との両方を画定する時間及び変数を暗示的又は明示的に表し、
前記ハードウェアプロセッサは、
ある環境の識別済みオブジェクトを表す障害物の表現と、前記環境の識別済み動的オブジェクトを表す障害物のサンプル軌道を受信し、
障害物表現と衝突することになる計画グラフ内の各エッジに沿った衝突可能性の確率表現を調整することでサンプル軌道を調整し、
コストと衝突可能性を考慮した通路を決定する、動作計画装置。
【請求項９】
前記計画グラフは、前記エッジに関連付けて保存された少なくとも１つのチャネルを含む、請求項８に記載の動作計画装置。
【請求項１０】
前記少なくとも１つのチャネルは、コストを含む、請求項９に記載の動作計画装置。
【請求項１１】
前記少なくとも１つのチャネルは、リスクを含む、請求項９〜１０のいずれか１項に記載の動作計画装置。
【請求項１２】
複数の衝突検出ユニットをさらに備え、前記複数の検出ユニットの各々は、前記障害物と前記計画グラフの前記複数エッジの各１つとの間の衝突を識別する、請求項８に記載の動作計画装置。
【請求項１３】
自律型車両用の動作計画を実施する方法であって、
環境の識別済みオブジェクトを表す障害物表現を受信することと、
前記環境の識別済み動的オブジェクトを表す障害物の軌道をサンプリングすることと、
障害物表現との衝突となる計画グラフ内の各エッジについて、前記サンプリングされた軌道に基づいた衝突可能性を考慮しながら各コスト値を調整することであって、前記計画グラフは、エッジによって接続された複数のノードを含み、各ノードは、自律型車両の状態、動作環境、又は前記自律型車両の状態と前記動作環境との両方を画定する時間及び変数を暗示的又は明示的に表す調整と、
コスト及び／又はリスクを考慮して経路を特定することと、を含む方法。
【請求項１４】
割り当てられたコスト値を受信することと、
障害物表現との衝突となる前記計画グラフ内の各エッジについて、識別済みオブジェクトの割り当てられた衝突コスト値を考慮しながらコスト値を調整することと、
をさらに含む、請求項１３に記載の方法。
【請求項１５】
前記経路を特定することが、識別済み動的オブジェクトに対する衝突確率と識別済みオブジェクトに対する衝突の割り当てられたコスト値との間の有効コストを特定することを含む、
請求項１４に記載の方法。
【請求項１６】
前記経路を特定することが、前記衝突の割り当てられたコスト値を用いて動作計画を計算することを含み、前記経路が、その経路に対する衝突確率に関してリスク限定がかけられるコストが最低である経路を識別することを含む、請求項１４に記載の方法。
【請求項１７】
前記方法が前記自律型車両の各動作後に反復される、請求項１３〜１６のいずれか１項に記載の方法。
【請求項１８】
ハードウェアプロセッサと、
記憶装置と、
前記記憶装置に保存される事前計算済み衝突データであって、実行時、知覚データが受信されると、前記知覚データが、前記ハードウェアプロセッサによって、前記記憶装置に保存されている前記事前計算済み衝突データと比較されて衝突が判定される、衝突データと、
を含み、
前記ハードウェアプロセッサは、請求項２１〜２３のいずれか１つに記載の方法を実行するように構成されている、
動作計画モジュール。
【請求項１９】
前記記憶装置に保存される計画グラフであって、前記計画グラフが特定の自律型車両及び任意で特定のシナリオに対して実行前に生成され、前記事前計算済み衝突データが前記計画グラフのエッジに関連付けられている計画グラフをさらに含む、請求項１８に記載の動作計画モジュール。
【請求項２０】
最短経路モジュールをさらに備え、
前記最短経路モジュールは、
最短経路アルゴリズムを実装する平行ハードウェアユニットと、
受信した計画グラフに基づいて前記平行ハードウェアユニットの物理的トポロジに論理的トポロジをマッピングするプログラマブル回路と、を有し、
前記最短経路モジュールは、特定済み衝突を実行時に受信して、計画を出力する、請求項１８又は１９に記載の動作計画モジュール。
【請求項２１】
第１のプログラミングフェーズを実行して、特定自律型車両及び任意に特定シナリオ用の動作計画モジュールを構成することであって、
第１の計画グラフを受信し、前記第１の計画グラフの各エッジについて、そのエッジに対する、任意にコストを関連付けた事前計算済み衝突データを受信することと、
前記第１の計画グラフ及び前記事前計算済み衝突データを前記動作計画モジュールの記憶装置に保存することと、を含む第１のプログラミングフェーズの実行と、
前記特定自律型車両及び任意に前記特定シナリオ用の前記動作計画モジュールを用いて、リアルタイム動作計画を実施することと、
第２のプログラミングフェーズを実行して、新たな特定自律型車両、新たな特定シナリオ、又は新たな特定自律型車両と新たな特定シナリオとの両方用に前記動作計画モジュールを構成することであって、
第２の計画グラフを受信し、前記第２の計画グラフの各エッジについて、そのエッジに対する、任意にコストを関連付けた事前計算済み衝突データを受信することと、
前記第２の計画グラフ及び前記事前計算済み衝突データを前記動作計画モジュールの前記記憶装置に保存することと、を含む第２のプログラミングフェーズの実行と、
を含む、再構成可能な動作計画モジュールを操作する方法。
【請求項２２】
前記特定の自律型車両及び任意に前記特定のシナリオように構成される前記動作計画モジュールを用いて、リアルタイムな動作計画を実施することが、
知覚データを受信することと、
前記知覚データを前記記憶装置に保存されている前記事前計算済み衝突データと比較して衝突を特定することと、
任意にコストを考慮して、最短経路を特定することと、
を含む、請求項２１に記載の方法。
【請求項２３】
前記第１のプログラミングフェーズがさらに、
前記受信した計画グラフに基づいて、最短経路アルゴリズムを実装する平行ハードウェアユニットとの物理的トポロジに論理的トポロジをマッピングする回路をプログラミングすることをさらに含む、請求項２１に記載の方法。
【請求項２４】
最短経路アルゴリズムを実装する平行ハードウェアユニットと、
前記平行ハードウェアユニットの物理的トポロジに論理的トポロジをマッピングする再構成可能回路と、
を含むグラフ用に最短経路を見つけるハードウェアモジュール。
【国際調査報告】
2019517702.tif 000019
2019517702.tif 000020
2019517702.tif 000021