IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ デューク・ユニバーシティの特許一覧 ▶ ブラウン ユニバーシティの特許一覧

特許7181092自律型車両用動作計画及び再構成可能な動作計画プロセッサ
<>
  • 特許-自律型車両用動作計画及び再構成可能な動作計画プロセッサ 図1
  • 特許-自律型車両用動作計画及び再構成可能な動作計画プロセッサ 図2
  • 特許-自律型車両用動作計画及び再構成可能な動作計画プロセッサ 図3
  • 特許-自律型車両用動作計画及び再構成可能な動作計画プロセッサ 図4
  • 特許-自律型車両用動作計画及び再構成可能な動作計画プロセッサ 図5
  • 特許-自律型車両用動作計画及び再構成可能な動作計画プロセッサ 図6A
  • 特許-自律型車両用動作計画及び再構成可能な動作計画プロセッサ 図6B
  • 特許-自律型車両用動作計画及び再構成可能な動作計画プロセッサ 図6C
  • 特許-自律型車両用動作計画及び再構成可能な動作計画プロセッサ 図6D
  • 特許-自律型車両用動作計画及び再構成可能な動作計画プロセッサ 図7
  • 特許-自律型車両用動作計画及び再構成可能な動作計画プロセッサ 図8
  • 特許-自律型車両用動作計画及び再構成可能な動作計画プロセッサ 図9
  • 特許-自律型車両用動作計画及び再構成可能な動作計画プロセッサ 図10
  • 特許-自律型車両用動作計画及び再構成可能な動作計画プロセッサ 図11A
  • 特許-自律型車両用動作計画及び再構成可能な動作計画プロセッサ 図11B
  • 特許-自律型車両用動作計画及び再構成可能な動作計画プロセッサ 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-11-21
(45)【発行日】2022-11-30
(54)【発明の名称】自律型車両用動作計画及び再構成可能な動作計画プロセッサ
(51)【国際特許分類】
   G05D 1/02 20200101AFI20221122BHJP
【FI】
G05D1/02 J
【請求項の数】 11
(21)【出願番号】P 2018564836
(86)(22)【出願日】2017-06-09
(65)【公表番号】
(43)【公表日】2019-06-24
(86)【国際出願番号】 US2017036880
(87)【国際公開番号】W WO2017214581
(87)【国際公開日】2017-12-14
【審査請求日】2018-12-18
【審判番号】
【審判請求日】2021-03-03
(31)【優先権主張番号】62/348,230
(32)【優先日】2016-06-10
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】62/451,816
(32)【優先日】2017-01-30
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】503164937
【氏名又は名称】デューク・ユニバーシティ
【氏名又は名称原語表記】DUKE UNIVERSITY
(73)【特許権者】
【識別番号】518223753
【氏名又は名称】ブラウン ユニバーシティ
(74)【代理人】
【識別番号】100169904
【弁理士】
【氏名又は名称】村井 康司
(74)【代理人】
【識別番号】100221372
【弁理士】
【氏名又は名称】岡崎 信治
(72)【発明者】
【氏名】ダニエル ジェイ. ソリン
(72)【発明者】
【氏名】ジョージ ディー. コニダリス
(72)【発明者】
【氏名】ウィリアム フロイド-ジョーンズ
(72)【発明者】
【氏名】ショーン マリー
【合議体】
【審判長】見目 省二
【審判官】刈間 宏信
【審判官】田々井 正吾
(56)【参考文献】
【文献】特表2007-531110(JP,A)
【文献】特開2012-190405(JP,A)
【文献】特開2011-75382(JP,A)
【文献】特開2010-61293(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G05D 1/02
(57)【特許請求の範囲】
【請求項1】
自律型車両用の動作計画のためのシステムであって、
動作環境の環境情報を取得する複数のセンサと、
前記複数のセンサと電気的に通信する複数の検出器と、
前記複数のセンサと電気的に通信することで前記環境情報を受信して前記動作環境内の動的オブジェクトを識別し、当該動的オブジェクトについての将来軌道の確率分布を出力するオブジェクト追跡器と、
前記動作環境内の静的オブジェクト又は動的オブジェクトであるオブジェクトを表す複数のボクセルのそれぞれについて、衝突のコストとボクセルとを関連付けるコストグリッドと、
前記の検出器と電気通信し、前記オブジェクト追跡器と電気通信して前記動的オブジェクトの将来軌道の確率分布を取得し、かつ自律型車両の計算システムと電気的に通信する動作計画モジュールと、を含み、
前記動作計画モジュールは、エッジで接続された複数のノードを含む計画グラフを保存し、
各ノードは、前記自律型車両の状態、動作環境、又は前記自律型車両の状態と前記動作環境との両方を画定する時間及び変数を暗示的又は明示的に表し、
前記動作計画モジュールは、前記複数の検出器と前記オブジェクト追跡器から知覚データ及び前記動作環境の識別済み動的オブジェクトを表す障害物のサンプル軌道を受信し、前記コストグリッドから前記ボクセルに関連付けられた前記衝突のコストを受け取り、前記サンプル軌道を考慮して前記知覚データ内で障害物と衝突する前記計画グラフ内の各エッジに沿った可能性のある衝突確率及び前記衝突のコストを調整し、前記衝突のコスト及び衝突確率を考慮して経路を特定し、前記経路を前記計算システムに出力し、
前記衝突のコストは、前記動作環境内の前記オブジェクトの特徴に基づいて決定される、
システム。
【請求項2】
前記複数の検出器は、前記動作環境内で識別済み静的オブジェクト又は識別済み動的オブジェクトである識別済みオブジェクトを表す障害物の表現を含む知覚データを生成するオブジェクト検出器を含む、請求項1に記載のシステム。
【請求項3】
前記動作計画モジュールは、ハードウェアプロセッサ、記憶装置、及び各々が前記計画グラフの複数のエッジの各1つを表現する複数の衝突検出ユニットを含む、請求項1に記載のシステム。
【請求項4】
前記動作計画モジュールは、再構成可能なアーキテクチャを含む、請求項1に記載のシステム。
【請求項5】
前記動作計画モジュールは、
ハードウェアプロセッサと、
前記計画グラフが保存される記憶装置と、
前記記憶装置に保存される事前計算済み衝突データであって、実行時、知覚データが受信されると、前記知覚データが、前記ハードウェアプロセッサによって、前記記憶装置に保存されている前記事前計算済み衝突データと比較されて衝突が判定される、衝突データと、
を含む、請求項1又は2に記載のシステム。
【請求項6】
前記事前計算済み衝突データは、新たな自律型車両又はシナリオに対しては新たな事前計算済み衝突データに更新される、請求項5に記載のシステム。
【請求項7】
自律型車両用の動作計画を実施する方法であって、
環境の識別済み静的オブジェクト又は識別済み動的オブジェクトである識別済みオブジェクトを表す障害物表現を受信することと、
前記環境の識別済み動的オブジェクトを表す障害物の軌道をサンプリングすることと、
サンプリングされた軌道に基づいて各エッジの衝突確率を調整することと、
障害物表現との衝突となる計画グラフ内の各エッジについて、前記サンプリングされた軌道に基づいた衝突確率を考慮しながら各衝突のコストを調整することであって、前記計画グラフは、エッジによって接続された複数のノードを含み、各ノードは、自律型車両の状態、動作環境、又は前記自律型車両の状態と前記動作環境との両方を画定する時間及び変数を暗示的又は明示的に表す調整と、
衝突のコストと前記計画グラフの各エッジの衝突確率とを両方考慮して経路を特定することと、
を含み、
前記衝突のコストは、前記障害物の特徴に基づいて決定される、
方法。
【請求項8】
割り当てられた衝突のコストを受信することと、
障害物表現との衝突となる前記計画グラフ内の各エッジについて、識別済みオブジェクトの割り当てられた衝突のコストを考慮しながら衝突のコストを調整することと、
をさらに含む、請求項に記載の方法。
【請求項9】
前記経路を特定することが、識別済み動的オブジェクトに対する衝突確率と識別済みオブジェクトに対する衝突の割り当てられた衝突のコストとの間の有効な衝突のコストを特定することを含む、請求項に記載の方法。
【請求項10】
前記経路を特定することが、割り当てられた衝突のコストを用いて動作計画を計算することを含み、前記経路が、その経路に対する衝突確率に関してリスク限定がかけられる衝突のコストが最低である経路を識別することを含む、請求項に記載の方法。
【請求項11】
前記方法が前記自律型車両の各動作後に反復される、請求項7~10のいずれか1項に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、自律型車両用動作計画及び再構成可能な動作計画プロセッサに関する。
【背景技術】
【0002】
動作計画は、ロボットが現実世界でどのように動くべきかを決定するプロセスである。これは、ロボットの開始位置からゴール状態までの衝突のない経路を見つけるプロセスである。例えば、ロボットは、それ自体又は他のオブジェクトと衝突することなく、腕を動かして所望のオブジェクトに到達することを望む場合がある。動作計画を実行して、移動しつつオブジェクトを操縦する能力は、細かく制御又は設計されていない自然環境を扱う上で非常に重要である。ロボットが最初に周囲の物理的な世界に関する情報を認識すると、次に、コンピュータは、この認識した環境内をロボットが移動できるよう、いかにこの物理的なロボットを制御したらよいかを決定する。
【発明の概要】
【発明が解決しようとする課題】
【0003】
高速かつ低電力での動作計画は、自律型車両を含む多くの技術にとって重要かつ困難な課題である。自律型車両の課題には、静的障害物(道路に残っているブームや物など)と動的障害物(自転車、歩行者、その他の車の障害物)との衝突を避ける能力、高い頻度で計画し直す能力、及び動的障害物がどのように動き得るかについての不確実性に対処する能力が挙げられる。
【0004】
多くの状況において、自律型車両を含むロボットにとって主な制約となっているのは、障害のある環境でリアルタイムの動作計画を実行する能力である。動作計画アルゴリズムは、計算集約的という傾向があり、各動作に対して膨大な数の衝突チェックを必要とする。
【0005】
自律型車両用の専用ロボット動作計画ハードウェアを提供する。自律型車両や他のロボット用の動作計画用のためのシステム及び装置に加えて、自律型車両及び他のロボット用の様々な専用のロボット動作計画ハードウェアを実装することができる再構成可能なプロセッサを記載する。この再構成可能プロセッサは、特定のロボット及び/又は特定のシナリオ用の動作計画を実行したら、別のロボット及び/又はシナリオ用の動作計画を解決するために再構成することができる。ここに記載の特殊なロボット動作計画ハードウェアは、衝突検出の解決する動作計画操作及び/又は最短経路の発見する動作計画操作を、ハードウェア回路内全体で、又はハードウェアプロセッサによって実行されるソフトウェアとして、又はハードウェアプロセッサによって実行されるハードウェア回路とソフトウェアの組み合わせとして実行することができる。このハードウェア及び/又はソフトウェアの機能が「動作計画モジュール」により具体化されると考えることができる。
【0006】
自律型車両用動作計画システムは、複数のセンサと、その複数のセンサと電気的に通信する複数の検出器と、その複数の検出器及び自律型車両の計算システムと電気的に通信する動作計画モジュールとを含むことができる。この動作計画モジュールは、自律型車両の状態、動作環境、又は自律型車両の状態と動作環境との両方を画定する時間及び変数を暗示的又は明示的に表す各ノードを有する計画グラフを保存する。この動作計画モジュールは、複数の検出器から知覚データ及びサンプル軌道を受信し、サンプル軌道を考慮して前記知覚データ内で障害物と衝突する前記計画グラフ内の各エッジに沿った衝突確率を調整し、コスト及び衝突確率を考慮して経路を特定し、その経路を計算システムに出力する。複数の検出器は、オブジェクト検出器及び障害物追跡器を含むことができる。ボクセルのストリームによって与えられるオブジェクト検出器からの障害物位置を受信し、各ボクセルにコスト修正子を割り当て、これを動作計画モジュールに送信するコストグリッドを含めることができる。
【0007】
動作計画モジュールは、ハードウェアプロセッサ及び記憶装置を含むことができる。この記憶装置は、リアルタイムの動作計画に先立ってオフラインで生成された格子又は他の確率ロードマップなどの計画グラフを保存することができる。場合によっては、この動作計画モジュールは、平行衝突検出を実行するハードウェア衝突検出ユニットを含む。場合によっては、この動作計画モジュールは、再構成可能な衝突検出加速を含む。事前計算済み衝突データは、動作計画の間に知覚データが受信されると、衝突を判定するために、その知覚データが動作計画モジュールのハードウェアプロセッサによって記憶装置に格納されている事前計算済み衝突データと比較されるように、動作計画モジュールの記憶装置に保存されることができる。
【0008】
実行時の操作中、計画グラフのエッジに1つ又は複数の変数の情報を割り当てることができる。1つ目の変数をコストとし、2つ目の変数をリスクとすることができる。このコスト情報は、環境内のオブジェクト検出(計算可能な軌道を有する静的オブジェクト、及び任意で、移動するオブジェクト)に関連するコストグリッドから得ることができる。リスク情報は、オブジェクト追跡器の出力をサンプリングすることによって得ることができる。その後、動作計画モジュールは、合法的な動作計画を表すコストとリスクを考慮した経路を生成し、ロボットがその動作計画に従って動作を行うことができるように動作計画を出力する。
【0009】
この動作計画モジュールは、広範囲のロボット及び予想される作業シナリオに対してプログラムすることが可能である。この動作計画モジュールを、異なるロボット(すなわち、再構成可能)に対して再使用又は再プログラムすることが可能であり、別法として、この動作計画モジュールを、特定ロボット用に設計することができる。ロボットの1種類として自律型車両が挙げられる。
【課題を解決するための手段】
【0010】
この概要は、以下の「詳細な説明」でさらに説明する概念を選択して簡略化した形で紹介するものである。この概要は、請求する主題の重要な特徴又は本質的な特徴を識別することを意図するものではなく、請求する主題の範囲を限定するために用いることを意図するものでもない。
【図面の簡単な説明】
【0011】
図1】一般的に静的な環境における動作計画の問題の例を示す図。
図2】自律型車両の動作計画用のリアルタイムシステムの一例を示す図。
図3】本発明の特定の実施形態による動作計画モジュールの例示的なアーキテクチャを示す図。
図4】単一動作用の再構成可能な衝突検出アーキテクチャの例を示す図。
図5】ボクセルの代わりにボックスを使用した戦略用の衝突検出アーキテクチャの例を示す図。
図6A】PRM変化における単一動作に対する掃引量の表現が、表現戦略によってどのように変化するかを示す図であり。実際の掃引量を示す図。
図6B】その動作のすべての個々のボクセルを含む図。
図6C】個々のボクセルの代わりに87ボックスを使用して記述した同じ掃引ボリュームを示す図。
図6D】10%の容積増加が許容される場合、わずか38ボックスでカバーされる容積を示す図。
図7】一実施例の実装に関するルマンフォード計算ユニットの基本的マイクロアーキテクチャのレイアウトを示す図。
図8】一実装例に関するオンチップネットワーク用のルータマイクロアーキテクチャの例を示す図。
図9】一実施例の実装に関する相互接続ネットワークの平面図。
図10】5,000を超えるサンプリングされた環境でシミュレートされた、2つのサイズのロードマップについて様々な時点で完了する確率を示す図。
図11A】ロードマップ内のエッジの数に対する数衝突チェックレイテンシ(number collision checking latency)のプロットを示す図。
図11B】ロードマップ内のエッジの数に対する最短経路探索レイテンシのプロットを示す図。
図12】ハードウェア予算と表現量の増加との間のトレードオフを視覚化した図。
【発明を実施するための形態】
【0012】
自律型車両専用のロボット動作計画ハードウェアを提供する。この自律型車両用のロボット動作計画ハードウェアは、リスクを認識するロボット動作計画を含む。自律型車両や他のロボット用の動作計画用のシステムと装置に加えて、自律型車両や他のロボット用の様々な専用のロボット動作計画ハードウェアを実装することができる再構成可能なプロセッサを記載する。この再構成可能なプロセッサは、特定のロボット及び/又はシナリオ用の動作計画を実行し、次いで、別のロボット及び/又はシナリオ用の動作計画を解決するように再構成可能である。
【0013】
本明細書で使用される「シナリオ」は、「オブジェクトを有する机」又は「オブジェクトを有する本棚」などの環境の種類をいう。シナリオには、障害物の数とその位置、サイズ、形状の分布が含まれる。シナリオには、様々なロボット部品の位置を伴う、ロボットの開始ポーズと目標姿勢の分布も含む。ある時点で、あるシナリオから描かれた1つのタスクに対して、ロボットは動作計画を実行する必要がある。たとえば、シナリオが「オブジェクトを有する3フィートの背の高い机」であり、障害物の数、障害物の位置、障害物のサイズ/形状、及びロボットの開始及び目標のポーズの所与の分布が与えられている場合、ロボットはテーブルの下で腕を動かす必要がないと予想される。別の例として、多くのシナリオでは、ロボットが自体の背後で腕を動かす必要があるとは考えにくい。このシナリオの先験的知識は、予想される動作計画の問題を解決するためにリソースを保存する(そして、より多くのハードウェアを用いる)。特定の環境で複数のシナリオが可能である場合、事実上シナリオの結合体である複合シナリオが利用される、又はシナリオが変更されたときにロボット動作計画ハードウェアが再構成される。
【0014】
本明細書で使用する「車両」とは、地上、水上又は水中、空気中、又はそれらの任意の組み合わせの中を移動することができる任意の移動機械をいう。陸上車両の例には、列車、バス、自動車、トラック、オートバイ、モペットが挙げられる。水用車両の例には、潜水艦、ボート、レクリエーション用の船舶が含まれる。空用車両の例としては、無人機、飛行機、ヘリコプター、四輪車などが挙げられる。地上車両、水用車両、及び空用車両はすべて、その車両に動力を与えられ、かつ自律的に制御できる限り、「車両」の範囲内にあるとみなす。自律型車両は、「ロボット」の特殊ケースであり得るため、「ロボット」に関して本明細書に記載の態様は、アプリケーションに応じて自律型車両用に実装することができる。「自律型」への言及は完全な自律性を必要とせず、半自律型の車両を含み得ることを理解されたい。
【0015】
本明細書で使用する「リスクを意識した」とは、その車両又は他のロボットの動作環境において不確実性を伴って現れ得る動的障害物の将来軌道の確率的推定値を含んでいることをいう。
【0016】
ボクセルは、障害物(ボクセルの集合であってもよい)の一表現である。いくつかの実装では、ボクセルは、空間(x、y、z)内の点として定義され、x、y、zを空間上の点を画定する座標として、任意に、tは、その空間に障害物がある時間を暗黙的又は明示的に表す値である。暗黙の時間とは、時間を反映するパラメータを指すが、時間を直接示す必要はない。暗黙の時間の一例が、開始点からのホップ数である。明示的な時間とは、時間を直接的に示す値(実際の時間に拘束されるか、又は開始時間から例えば秒単位で増分されるかを示す)を指す。したがって、静的障害物は、[0、H]内のすべてのtについて(x、y、z)点が同じである障害物である。場合によっては、(x、y、z、及びtの値と一緒に、又はいずれか又はすべてを置き換えて)1つ又は複数の追加変数をボクセルに含めることができる。これらの変数には、ロボット/車両の状態及び/又はその環境に関するあらゆる適切な情報が含まれる。例には、湿度、雨、傾斜、速度、加速度、方位角、及び角度が含まれるが、これらに限定されるものではない。
【0017】
いくつかの実装では、ボクセルの代わりに、任意のタイプのポリゴン、例えば、各頂点がその3D座標で記述される三角形から作られるメッシュモデルによって障害物を表すことができる。
【0018】
ここに記載の特殊ロボット動作計画ハードウェアは、衝突検出を解決する動作計画操作及び/又は最短経路を見つける動作計画操作を完全に、ハードウェア回路内で、又は記憶装置に記憶され、ハードウェアプロセッサによって実行されるソフトウェアとして、又はハードウェア回路と、記憶装置に保存され、ハードウェアプロセッサによって実行されるソフトウェアとの組み合わせとして実行することができる。このハードウェア及び/又はソフトウェア機能が、「動作計画モジュール」を具現化すると考えることができる。
【0019】
背景技術で述べたように、動作計画とは、ロボットが所望の位置に到達するまで、ロボットがある位置から別の位置に移動するために受ける動作を識別するために使用されるプロセスを指す。ジョイントによって連結された一組の剛体で形成された多関節ロボットの場合、動作計画は、目標姿勢が達成されるまで、ある姿勢から別の姿勢への動きを決定する。複数の寸法及び操作の自由を有する又は有することのできない車両の場合、動作計画は、ロボットの構成スペースの一部として、位置が増減しながらも多関節ロボットの一部として割り当てられる多関節ロボットと同様に、1つの位置又は姿勢から別の位置又は姿勢への移動を決定する。
【0020】
例えば、多関節ロボットの姿勢は、その関節のすべてに位置を割り当てることによって記述することができる。このようなジョイント位置のすべての空間は、ロボットの構成空間、つまり「C空間」と呼ばれてQと表示される。Qのうち、(ジョイント位置の)いくつかの構成は、ロボットの環境内の障害物やロボット自体の身体と衝突することになるが、Qの残りは「空きスペース」と呼ばれる。したがって、ロボットの動作計画上の問題は、ある開始構成q0から目標構成のセットG内の任意の構成gまで、自由空間を通る衝突のない経路を見つけることを必要となると考えられる。
【0021】
図1は、一般的に静的な環境における動作計画の問題例を示している。図1を参照すると、C空間(ロボットの構成空間)100は、障害物衝突領域102、104及び自由空間110を含むことができる。経路120を、開始構成122(q0)から目標構成124(g∈G)の組内の一構成まで、自由空間110を介して見出すことができる。
【0022】
この車両の実施形態では、障害物衝突領域102、104を形成し得る静的障害物に加えて、他の障害物、特に動的障害物が関連している。その例として、既知の/特定の軌道内で動くオブジェクトに代表される物(例えば、落下する煉瓦、転がる缶)、及び意識者(例えば、自転車ドライバー、歩行者、鳥)によって制御されるオブジェクトを表す物を挙げられる。自律型車両の場合、これらの動的障害物により難しくなっている動作計画には、非常に高速な動作計画を実行する能力と、動的オブジェクトの動きの不確実性を分析する能力とが必要となる。自律型車両を取り巻く環境は急速に変化する可能性があり、車両の動作計画を実行する能力はこれらの変化に対応しなければなりない。
【0023】
典型的には、知覚、計画グラフ構築、衝突検出、及び経路探索の4つの主要な構成要素が、動作計画の作成に関与する。
【0024】
知覚構成要素は、センサと処理の組み合わせを使用して環境のモデルを生成することを含む。知覚は、任意の適切なコンピュータビジョン及びセンシングアーキテクチャによって実行することができる。一般に、この環境モデルは、環境の離散化図(discretized view)内でスペースのどの領域が障害物を含むかを表すデータ構造である占有グリッドの形態であると考えることができる。
【0025】
計画グラフ作成コンポーネントには、ロボットの構成空間内での姿勢と動作のグラフの作成が含まれる。場合によっては、このグラフ内の各ノードは、特定の姿勢でのロボットの状態を完全に画定し、各エッジは、その姿勢間の動作を画定する。自律型車両の実施形態に有用であるなど、いくつかの場合では、計画グラフ構成要素は、暗黙的又は明示的に時間と組み合わされた車両挙動に関連する一組の変数を含む。すなわち、1つの実装では、暗黙的又は明示的な時間とともに、多関節ロボットの実施形態と同様のパラメータ(例えば、空間座標x、y、及び任意にz)がノードを画定することができる。他の実装では、空間パラメータの1つ以上の代わりに、又はそれに加えて、角度(シータ)、速度、加速度、又は他の対象パラメータを含めることができる。
計画グラフ構築は、オフラインで(即ち、リアルタイムの作動計画の前に)実行される。
【0026】
衝突検出コンポーネントは、ロボットの動作がそれ自体又はその環境と衝突しているかどうかを判定することを含む。衝突検出の一部はオフラインで実行される。この部分は、事前計算済み衝突データを含むことができる。計画グラフ構成の一部として生成されたグラフは、衝突検出のオフライン部分で修正され、結果として計画グラフが出力される。計画グラフは、確率的ロードマップ(PRM)、PRM*、迅速に探索するランダムツリーグラフ(RRT)、RRT*、又は格子であり得るが、これらに限定されない。
【0027】
経路探索コンポーネントは、開始位置から目標までの経路が存在するかどうかをチェックし、1つ以上の最適経路又は他の望ましい経路を識別するために計画グラフを走査することを含むことができる。
【0028】
計画グラフ構成、衝突検出、及び経路探索は、本明細書に記載の技術によって加速され、いくつかの実施形態では、再構成可能な方法で実装される。
【0029】
図2は、自律型車両の運行計画用のリアルタイムシステムの一例を示す。図2を参照すると、システム200は、センサ201、オブジェクト検出器202、オブジェクト追跡器203、コストグリッド204、及び動作計画モジュール205を含む。
【0030】
センサ201は、ロボット用の任意の適切なセンサとすることができる。センサの例には、光/写真(IRを含む)、音声(例えば反射ベース)、化学的、指向性、及び位置(例えば、全地球測位システム)が含まれる。ロボットによって捕捉され分析される環境は、必ずしもロボットの現在位置と目標位置との間の直接経路内の環境である必要はないことを理解されたい。ロボットは、迂回経路でのみ有効な経路を持つ場合がある(その経路は、目標の姿勢又は状態の全視線内にない場合さえある)。このロボットは、その環境を検出して分析することができる様々なセンサシステムのいずれかを含む、又はそれと通信することができる。例えば、ロボットは、赤、緑、青、及び奥行き情報を(例えば、赤外線を介して)受信することができる1つ以上のカメラセンサを有することができる。別の例として、カメラ(又は他のセンサ)は、環境内の壁、天井、床及び/又はオブジェクト(例えば、テーブル、ボックスなど)上などの環境及び/又は空間(例えば、衛星、無人機など)内の1つ又は複数の位置に配置可能である。環境内のセンサ(単数又は複数)から捕捉された環境情報は、有線又は無線手段を介してロボット(及び/又はオブジェクト検出器202及び/又はオブジェクト追跡器203)に送信することができる。
【0031】
オブジェクト検出器202は、1つ以上のセンサ201からの入力を使用してオブジェクト情報を決定する。オブジェクト検出器202を使用して、センサデータから障害物があるかどうかを判定することができる。オブジェクト検出器202を、静的オブジェクトの識別に使用可能であり、オブジェクト検出器202は、特定の/計算可能な経路(例えば、落下するレンガ)を有する移動オブジェクトを検出する機能(ハードウェア又はソフトウェアを介する)を含むこともできる。道路を使用する車両の場合、オブジェクト検出器202は、道路上の既知の静的障害物(これはロードマップに関して車両の位置から識別されるオブジェクトを含み得る)の位置を識別する道路検出器とすることができる。
【0032】
オブジェクト追跡器203は、1つ又は複数のセンサ201からの入力を使用して、動的オブジェクトを識別し、識別した各オブジェクトについての将来軌道の確率分布を経時的に出力する。オブジェクト追跡器203は、不確実な動きの障害物を検出して追跡するために使用される。例えば、オブジェクト追跡器203は、センサ201の1つ以上からのデータから、道路上に別のかごがあること(識別された動的オブジェクト)を識別することができる。自動車に対するオブジェクト追跡器203の出力は、1つ又は複数の関連軌道上にて所与の時間に、自律型車両の前でその動的オブジェクトが外れる可能性が10%であり、その動的オブジェクトが(例えば、次の停止標識のために)減速する可能性は90%であることを示すことができる。
【0033】
センサ201、オブジェクト検出器202、場合によってはオブジェクト追跡器203の態様を、動作計画のための知覚要素の一部と見なすことができる。
【0034】
コストグリッド204(又は「コストマップ」)は、障害物を表すために使用可能なデータ構造を含む。コストグリッド204は、特定の活動及び/又は場所の嗜好に関する情報を含み、環境内の特定のオブジェクトを識別するために使用することができる。コストグリッド204によるオブジェクト表現の形式の例として、ボクセルの値、三角形から作られたメッシュモデルを挙げることができ、この三角形の各頂点は、3D座標、確率的占有グリッド、又はオクタマップで記述される。
【0035】
自律型車両の実装例では、コストグリッド204は、車両周囲の特徴(「道路特有のコストマップ」)からコストマップを生成することができる。例えば、車の場合、車線の中央に留まること、反対方向への通行車線に移動しないこと、車線変更を増やすのではなく減らすことなどが好まれる可能性ある。さらに、カーブや窪みなどの道路の特徴を考慮に入れることができる。したがって、コストグリッド204は、車の周りの道路特徴からコストマップを生成する。これは占有グリッドに類似しているが、各ボクセルがコスト修正子(cost modifier)を伴っている。例として、道路が直接前方にある場合、右側には緊急レーンがあり、左側には別方向のレーンがある場合、グリッドには低コスト(又は負のコスト)のストライプが含まれ、高いコストボクセルのストライプが右側に、非常に高いコストボクセルのストライプがその左側にくる。同様に、道路にカーブが存在する場合、道路外の領域のコスト修正子は、車が道路を外れるのを最小限に抑えるために、より高いコストとして示される。レーン変更を最小限に抑えるためにコスト修正子を割り当てることもできる。道路のコストグリッド204の各ボクセルは、x座標及びy座標を含むことができるが、値として時間を必要としない。ボクセルには、速度制限に関する嗜好表現をサポートするため、速度などの情報を含めることができる。もちろん、他のパラメータを所望に応じて使用してもよい。
【0036】
動作計画モジュール205は、識別された動的オブジェクトのオブジェクト追跡器203から出力された推定値から検出されるオブジェクト及びサンプル軌道に対応するコストグリッド204からボクセル及び割り当てられたコストを受け取り、この車両用又は他のロボット用動作計画を生成する(自律型車両の適切なハードウェアによって実行可能)。使用されるメモリのタイプは、ダイナミックランダムアクセスメモリ、フラッシュメモリ、光磁気メモリ、磁気抵抗メモリ、光ベースメモリなどの任意の適切な記憶媒体とすることができる。
【0037】
計画グラフがこの記憶装置に記憶される。上述したように、計画グラフは、格子、PRM、PRM*、又は他の適切なグラフでよい。動作計画モジュール205のハードウェアプロセッサは、オブジェクト追跡器203で出力された軌道をサンプリングして、コスト/リスクを調整する。言い換えれば、動作計画モジュール205は、サンプル軌道を考慮して、グラフの各エッジに沿って、コスト値及び/又はリスク値を含む可能性のある衝突確率を調整する。このサンプル軌道は、ボクセル(又は障害物の他の表現)にマッピングされ、衝突検出の実行に使用可能である。したがって、この動作計画ハードウェアは、リスクを認識した動作計画ハードウェアである。
【0038】
一例では、動作計画モジュール205は、各動的障害物の将来軌道の確率的推定からその軌道をサンプリングし、各サンプルに対する衝突検出を実行する。衝突におけるエッジは、衝突する可能性のある推定確率を増加させる可能性がある。200個のサンプルがある場合、各軌道上の衝突は、1エッジの確率衝突に1/200を加える。この値は、計画グラフのエッジの一部として保存され、最短経路アルゴリズムの実装中に使用される(例えば、再構成可能かつハードウェアで実装された最短経路モジュールのアルゴリズムについては、ベルマンフォード法使用に関する記載を参照)。この値は、計画グラフのエッジに関連付けられて動作計画モジュール205に保存することができる。
【0039】
衝突検出は、場合によっては、これに限定されるものではないが2016年1月5日に出願されたPCT/US2016/012204号「特定のロボット動作計画ハードウェア及びその製造方法及び使用方法」に記載されている方法を使用することを含む。その全体を参照により本明細書に組み込む。
【0040】
動作計画モジュールが実行する処理の一例を以下に示す。
【0041】
動作計画モジュール205は、計画グラフ内のすべてのエッジについてのリスクを計算し、次に割り当てることによって、目標位置に到達する効率と他の障害物への衝突のリスクとをバランスさせる動作計画を生成する。動作計画モジュール205に保存されている確実性と衝突する計画グラフのエッジ(例えば、これらの静的障害物)は、除去されるか、又はリスクに割り当てられる。自律型車両の多くの実際的なアプリケーションでは、エッジは残るが、リスクが割り当てられる(非常に小さい/無視できる割り当て値、又は非常に大きい/最大の割り当て値)。エッジに割り当てられたリスクは、静的オブジェクト(例えば、100%)に対する所定のリスク値に基づくことができる。不確実な障害物との衝突がないという高い確率を確実にするため、動作計画モジュール205は、確率的推定から軌道分布全体をサンプリングし、計画グラフの各エッジとの衝突確率を計算することができる。
【0042】
動作計画モジュール205が軌道をサンプリングし、(エッジに割り当てられたリスクに基づいて)エッジに対する衝突確率を決定した後、動作計画モジュールは、コストと衝突の可能性とを考慮して目標位置への「最短」経路を決定する。例えば、ゴール位置に到達する最速の方法は、自転車運転手を直進させることであるが、そのような経路では自転車運転手が引き倒される可能性(衝突の推定値など)が2%あり、これは高コスト(やや悪い/悪い決定)である。他の経路オプションには、自転車の運転手の周囲を回ることも含まれる。別の例として、ゴミ箱に当たる確率が大きい場合であっても、ゴミ箱にぶつかることは、犬にぶつかるよりもコストは小さい。したがって、ゴミ箱にぶつかる有効コストは、犬にぶつかるよりもはるかに小さい。衝突の確率が100%である場合、その有効コストは最大である。別例では、リスク限定を用いるケースでは、衝突の確率が軌道当たり5%未満である必要がある場合、衝突の可能性が5%未満という限定で最小経路コストを求める探索を行うことができる。リスクと効率を交換するコスト関数が望ましい場合、動作計画モジュールは、2つの用語を使用して修正コストを計算し、最短経路アルゴリズムを実装することができる。この経路は、動作計画モジュール205から出力され、それに応じて移動するためにロボットに送られる。
【0043】
一般に、移動するロボットでは、すべての経路がある程度衝突する確率を有する可能性があり、そうでなければ車両は静止したままであるべきである。しかし、静止していることは、一般的には車両にとって妥当な選択肢ではない。ほとんどの運転者は、効率とのバランスがとれている場合、例えば衝突のリスクとして0.1%の閾値を適切に十分な値として採用することができる。ロボットは、又はこの場合は自律型車両、設計者は特定のトレードオフを選択できる。動作計画モジュール205は、そのトレードオフを知りつつ、最短経路を計算することができる。
【0044】
リスク対効率のバランスをとる、又は少なくとも考慮することによって、動作計画モジュール205はリスク認識動作計画を提供する。一実施形態では、時間Hにおける所望の目標位置の一組(又は、時間Hにおける位置に対する嗜好)が与えられると、動作計画モジュール205は、(a)可能性のある衝突に基づくエッジの除去、又は各エッジにコスト又はリスクの追加、(b)道路のレイアウトに基く各エッジの削除又は追加、及び/又は(c)最小コストと場合によってはリスク限定とを用いた計画の計算を含むことができる。
【0045】
実行時には、コストとコストの発生確率が変化する。したがって、動作計画モジュール205によって実行される動作計画は、本質的に反復的であり得る。すなわち、再計画は、計画を作成し、単一の動作を行い、その後、動作計画プロセスを再び繰り返すステップを含むことができる。この場合、車両の原点にある格子(又は他の計画グラフ)を一貫性維持のために定着させることが非常に有用である(また、車両が障害物に近づいているために計画の解決策を減らすことができる)。
【0046】
ここに記載のシステム200は、車両システム(例えば、ブレーキ、エンジン、ステアリング等)に対する調整を実装することができる、オンボードコンピュータプロセッサ及び電気的及び/又は機械的に接続された作動システムを含む車両の一部として実装することができる。様々な構成要素に電力を供給するために、ストレージシステム、ならびに電源及び/又は接続を含めることができる。センサ201は、環境を検出し分析することができるセンサシステムの一部であってもよい。センサシステムの例として、ビデオカメラ、イメージセンサ、赤外線センサ、超音波トランシーバ、マイクロホン、力センサ、容量センサ、加速度計、ジャイロスコープ、及び温度センサの形態の光学センサ、マイクロ波センサ、音響センサ及び他のセンサが含まれるが、これに限定するものではない。センサシステムは、車両に局所的であり得る構成要素及び車両から離れ得る構成要素を含むことができる。例えば、場合によっては、センサシステムは、環境内に配置可能なセンサを含むことができ、その出力は、車両でローカルに分析される、又はロボットから遠隔にて分析され、(利用可能な他のアプリケーションの中で)動作計画において使用するようにロボットに伝達される。
【0047】
オンボードコンピュータプロセッサは、動作計画モジュール205に使用されるプロセッサのいずれかとは別又は同じプロセッサすなわち処理システム、及び/又はオブジェクト検出器202及びオブジェクト追跡器203によって使用されるプロセッサのいずれかであってもよい。処理システムは、車両の記憶システム及び/又は動作計画モジュール205(及び/又はシステム200の他のコンポーネント)に保存されたソフトウェアの命令に従ってデータを変換又は操作する1つ又は複数のプロセッサを含むことができる。処理システムのプロセッサの例には、汎用中央処理装置、特定アプリケーション向けプロセッサ、論理装置、及びグラフィック処理装置(GPU)、ならびに任意の他のタイプの処理装置、組合せ、又はそれらの変形が含まれる。処理システムは、ネットワーク接続構成要素、ビデオ表示構成要素などの1つ以上の他の構成要素を伴うシステムオンチップ(SoC)であっても、これに含まれていてもよい。さらに、衝突検出及び/又は最短経路決定を含む動作計画モジュール205の態様は、(再構成可能性をサポートすることができる)ハードウェアで実装することができる。
【0048】
ストレージシステムは、物理的記憶装置の形態の記憶媒体を含む。「記憶媒体」という用語は、一時的信号又は伝搬信号として定義されるべきではない。この車両の記憶システムは、処理システムと通信することができるコントローラなどの追加要素を含むことができる。
【0049】
単純(すなわち、リスク認識を含まない)又はリスクを認識することのできる動作計画モジュールは、広範囲のロボット及び動作計画アプリケーションに対して再構成可能であり、又はロボット及びシナリオ固有であり得る。
【0050】
ロボット記述(例えば、ロボットの衝突形状、ロボットの各関節の自由度、ロボットの関節限界)及びシナリオ記述を使用してPRM(又は他の計画グラフ)を生成し、次いで、障害物(既知の障害物及びロボット自体の部品)の各部分と衝突する可能性のあるPRM内のエッジをすべて識別することによって、動作計画モジュールの衝突検出部を生成できることが分かる。ハードウェアにより実現されるソリューションには、論理回路を生成することができる。たとえば、エッジが衝突する可能性のある障害の部分をORで表現する各エッジのOR回路が生成される。再構成可能な解決策では、論理回路は、再構成可能なアーキテクチャ(例えば、FPGA)に実装される、又は動作計画モジュールのハードウェアプロセッサによって適用されるソフトウェア表現として保存され得る。あるいは、エッジのリストを保存し、動作計画モジュールのハードウェアプロセッサによって探索することができる。
【0051】
動作計画モジュールは、いったんハードウェアにより実現又は動作計画モジュールに保存されると、リアルタイムの動作計画を実行するためにロボットにより使用となる。
【0052】
図3は、本発明の特定の実施形態による動作計画モジュールの例示的なアーキテクチャを示す。図3を参照すると、動作計画モジュール300は、衝突検出モジュール310と最短経路モジュール320とを含むことができる。衝突検出モジュール310又は最短経路モジュール320の一方又は両方は、再構成可能であり得る。
【0053】
動作計画モジュール300のいくつかの実装は、最短経路加速のためのハードウェアアーキテクチャなしでソフトウェアベースの最短経路アルゴリズムを使用することができる。プログラミングフェーズでは、ユーザが関心のある問題の装置を構成及び再構成することができる。関与する特定のロボット及び計画グラフの事前計算済み衝突データは、チップの動作計画モジュール300に送られる(点線の矢印はプログラミングフェーズで発生する通信を示し、実線はその実行フェーズで発生する通信を示している)。
【0054】
最短経路モジュール320がハードウェアで実装されると、計画グラフのトポロジも、ハードウェアユニットの再構成可能なファブリックにマップされ、最短経路の迅速な決定が可能となる。このマッピングステップは、各物理ノードを、その論理的な隣接物のアドレス及びエッジ重みでプログラミングすることを含む。これにより、アーキテクチャをさまざまな計画グラフのトポロジに再構成することができる。
【0055】
有利にも、本明細書で説明する最短経路ハードウェアは、動作計画以外の用途で利用することができる。したがって、最短経路モジュールは他の用途にも適用可能であると考えられる。
【0056】
図3に戻ると、実行フェーズ中に、ホスト(例えば、ロボットシステム)は、知覚データを動作計画モジュール300に送信する。知覚データは、現在の環境においてボクセルが存在するストリームである。衝突検出モジュール310は、どの動作が安全であるかを計算し、それが完了したら、結果を最短経路モジュール320に送る(それ以上のホスト装置通信なしで)。衝突検出モジュール310は、衝突のエッジを除去することによって、それに応じて計画グラフを修正する。次に、最短経路モジュール320は経路Pを実行してホストに返す。
【0057】
ユーザは、異なるロボット/計画グラフの組み合わせに関連する様々な構成ファイルを保存することができる。新しい組み合わせに切り替えると、装置は、例えば、事前計算済み衝突データと、及び任意に計画グラフデータと、最短経路モジュール320の再構成可能な実装への論理/物理ノードマッピングとを衝突検出モジュール310の再構成可能な実装に提供することによって再プログラムされる。
【0058】
衝突検出モジュール310は、ハードウェアプロセッサ、記憶装置、及び事前計算済み衝突データを含むことができる。動作計画中、知覚データが受信されると、その知覚データは、ハードウェアプロセッサによって、記憶装置に保存された事前計算済み衝突データと比較されて、衝突が判定されるように、事前計算済み衝突データが記憶装置に保存される。
【0059】
最短経路モジュール320は、最短経路アルゴリズムを実装する並列ハードウェアユニット(例えば、図7に示す例を参照)と、論理的ネイバーを識別するために、論理的トポロジを並列ハードウェアユニットの物理的トポロジにマッピングする回路(例えば、図8及び図9を参照)とを含むことができる。動作計画に対して、最短経路モジュール320は決定された衝突を受信して計画を出力する。
【0060】
再構成可能な動作計画モジュールを動作させる例示的な方法は、第1のプログラミングフェーズを実行して、特定のロボット及び特定のシナリオのためにモジュールをプログラムすることと、プログラムされた動作計画モジュールを使用して動作計画を実行することと、第2のプログラミングフェーズを実行することによって動作計画モジュールを再構成して新たな特定のロボット及び/又は新たな特定のシナリオのためにモジュールをプログラムすることとを含むことができる。次いで、その再構成されたモジュールを動作計画に使用することができる。
【0061】
ロボット動作計画加速のための再構成可能なアーキテクチャの例
【0062】
このアーキテクチャは、自律型車両又は任意の一般的なロボットの実施形態に適用することができる。尚、PRMすなわちロードマップを具体的に説明するが、他の計画グラフを使用してもよい。衝突検出のワークフローには4つの段階がある。第1に、十分な堅牢性を有するPRMがプログラミングフェーズで構築される。次に、このPRMを、環境の離散化図で徹底的に衝突チェックする。動作計画モジュールのプログラミングフェーズ中、事前計算データは衝突検出モジュール(例えば、衝突検出モジュール310)に送られ、容易にアクセス可能な方法で保存される。リアルタイム(すなわち、ライブ)中に、衝突検出モジュールは障害物情報を流し、衝突しているエッジにフラグを立てる。上記は一般的なアーキテクチャの記載であり、図3に例示している。
【0063】
PRMは、可変的な障害物を含まない空間内に構築される。シナリオに関する先験的知識はいずれも、壁やテーブルなどの固定されたオブジェクトを含めることで活用できるが、障害のない環境でPRMの構築が行われる。PRMは、予想される障害に対して堅牢になるように十分に大きくされている。このアーキテクチャについて、PRMが構築される方法はいずれでもよい。この実施形態では、対象シナリオのパラメータ化された表現から無作為に生成された数千のサンプル環境に対して、(エッジが数十万のオーダーの)大きなグラフをテストする。有用かつ重要なエッジが保持され、解であまり使用されないエッジは除かれる。このヒューリスティックプロセスは、各ステップでPRMが高い成功率を保持し、経路品質劣化を起こさないことを保証するように数回繰り返される。これは、1つの環境用にPRMを構築するよりはるかに時間がかかる作業であるが、この工程は一度だけの実行でよい。
【0064】
いくつかの量の衝突検出は、事前プログラミングフェーズの間に実行することができる。この段階で実行時に時間を節約するために、ジオメトリテストを実行することができる。下の例は、障害物を表すためにボクセルを使用した衝突検出を示す。他の障害表現が使用されてもよいことを理解されたい。この環境はボクセルの3D領域に離散化することができる。次に、PRMの各動作の掃引容積と離散化された空間内のボクセルとの間で可能性のあるすべての衝突が事前に計算される。
【0065】
このステップの後、各動作には衝突するボクセルの対応組ができる。こうなると知覚システムは、離散環境における空間のどの領域が障害物によって占有されているかを表す占有グリッド(例えば、自律型車両の実施形態ではコストグリッド)を生成し、次いで各動作について、障害物ボクセルのどれが衝突ボクセルの組に入っているのかをチェックするだけでよい。これが起こる全ての動作について、対応エッジを、環境が変化するまでPRMから一時的に除去しなければならない。事前計算した衝突データ及びPRMは、所与のロボット及びユースケースに固有であることに留意されたい。ロボットが変化したりシナリオが大幅に変化したりした場合は、PRM、したがって衝突データを再計算する必要がある。これらの構造は設定ファイルに保存される。さまざまなロボット/計画グラフの組み合わせに関連するさまざまな構成ファイルが保存可能である。新しい組み合わせに切り替えると、デバイスを再プログラムすることができる。同じユースケースに対するクエリの間(例えば、障害物やゴールポジションだけがある場合など)、再プログラミングの必要はない。ソフトリセットにより、インコリジョン(in-collision)としてフラグが立てられたエッジが復元され、次のクエリがすぐに開始される。同じシナリオでは、環境に若干の変更があっても再プログラミングの必要はない。
【0066】
上記のボークセットセットが論理的に作成されると、実行時にセットを迅速に照会できるアーキテクチャが作成される。再構成可能性機能の一部として、プログラミングフェーズの間に、ユーザは計画グラフ(例えば、PRM)及び事前計算済み衝突データを衝突検出モジュール310に送る。PRM内の各動作は、基本的に「テンプレート化」された積和であるエッジモジュールに割り当てられる。個々のエッジモジュールは、ハードコードされた論理機能ではなく、あらゆるセットのチェックを可能にする記憶機構(例えば、ラッチ、コンデンサ、磁気トンネル接合装置など)を含む。並列性を達成し、エッジの数に依存しない衝突チェックレイテンシを実現するために、これらのプログラム化可能なエッジモジュールが大量に存在し、PRMの各動作に対して1つずつある。
【0067】
このプログラミングフェーズの間、各動作が衝突する各ボクセルは、動作計画モジュールハードウェアに送られ、そのボクセルは適切なエッジモジュールに保存される。
【0068】
図4は、単一動作に対する再構成可能な衝突検出アーキテクチャの例を示している。このアーキテクチャは単一のエッジを実装する。図4を参照すると、単一動作用の再構成可能検出アーキテクチャ400は、制御ロジック410、記憶メカニズム(421-1、...、421-n)及び比較器(422-1、...、422-n)の平行な「エッジモジュール」、平行ラインの出力をORして衝突結果を出力するNOR論理ゲート430とを備えている。
【0069】
上述したように、個々のエッジモジュールの格納機構としてラッチを示しているが、任意の適切な格納機構を使用することができる。
【0070】
実行段階の間に、衝突検出モジュール(例えば、図4のエッジモジュールを使用して実装された衝突検出モジュール310)がボクセルIDで流れ、それらをすべての個々のエッジモジュールに分配する。各エッジモジュールはそのボクセルIDとその保存されているすべてのデータとを比較し、一致するものがあれば真を出力する。つまり、特定のエッジが衝突していることを示す。衝突検出器モジュールは、エッジモジュールからの結果を集約し、衝突中の現在プログラムされているPRM内の動作を表すビットベクトルを出力する。
【0071】
再構成可能性の結果、いくつかの課題が生じる可能性がある。それぞれの動作は、異なる容量の空間で、したがって異なる数のボクセルに衝突する。これは、モジュールをさまざまなサイズのエッジに対応できる大きさにする必要があるため、プログラマブル回路を実装する際に問題になりかねない。ハードウェアの効率は、それらが衝突するボクセルの数に基づいて可変サイズのプログラマブル衝突検出回路を作成することによって達成することができる。これに続くプログラミングフェーズで、衝突するボクセルの数に基づいて適切な衝突検出回路にPRM内のエッジを戦略的にマッピングする。
【0072】
発生し得るもう1つの課題は、大量のハードウェアが必要となることである。主に2つの要因によって、この再構成の戦略には、ハードコードされた設計よりも多くのハードウェアリソースが必要となる。衝突データを保存する(そして再構成を実現する)ために必要な状態が重要である。ある動作が1,000ボクセルに衝突し、各ボクセルが15ビットで表される場合、その単一エッジは15,000ビットの状態を消費する。これは、単純なラッチを記憶メカニズムとして使用する場合でも非常に大きなコストとなりかねない。第2の要因は、ハードコードした論理式で作業するときに実行できるように、回路のサイズを減らすためにロジックミニマイザを使用できないことである。個々のエッジ内と重なる掃引容積を持つエッジ間との両方で、その式にかなりの冗長性がある。特殊な回路を構築する場合、この冗長性を活用して、論理式の複雑さを大幅に軽減し、実装に必要なハードウェアリソースを削減することができる。この節約分は、再構成可能なケースでは冗長性がまだ存在していても失われる。
【0073】
このボクセルラッチ戦略により、ボクセルの任意の組み合わせからエッジの掃引容積を形成することができる。実際には、掃引容積のボクセルは接続され、連続状の容積を形成する。掃引容積の記述には順序があるという事実は、つまりデータを圧縮する方法が必要であることである。 掃引容積に含まれる個々のボクセルの表現を明示的に保存する代わりに、連続したボクセルの表現を格納することもできる。矩形のプリズム(便宜上「ボックス」と称する)は、ボックスの一対の対向角部の座標のみで表すことができる。これは、ボックスを保存するために必要な状態が、2つのボールを格納するのに必要な状態と同等であるため、大きな節約となる。各ボックスは、状態を減らすために元のボクセルの3つ以上をカバーしなくてはならない。
【0074】
個々のボクセルの代わりにボックスベースの表現を使用するには、元のボクセルのすべてを含むボックスの集合を見つける必要がある。これは、集合被覆の最適化問題と同様に考えることができる。集合被覆の問題では、「ユニバース」と呼ばれる要素のセットと、ユニバースのサブセットの集合が存在する。この問題の最適化バージョンには、そのユニオンがユニバースと等しいサブセットの最小数を見つけることが含まれる。この適用例では、掃引容積がユニバースであり、サブセットの集合は、この掃引容積と重なるすべての可能な直角プリズムを含む。設計に必要な状態を減らすために掃引ボリュームを被覆するために必要なボックスの最小数を見つける必要があった。集合被覆の最適化問題はNP困難であるため、近似解を計算しなくてはならない。まず、無関係な(extraneous)ボクセルを含まずに、掃引容積の離散化されたバージョン内のボクセルの最大数を被覆するボックスを選択する。セルはユニバースから取り除き(ボックスは重なり合うので、被覆されたボクセルはその後の反復で「気にならない」状態となる)。元のセットからのボクセルがすべて被覆されるまで再帰する。実験的な例として、この戦略を50,000のエッジを有するPRM上に実装した。15ビット分解能の場合、各掃引容積は平均2,000ボクセルと衝突することが分かった。このバージョンの集合被覆問題のおおよその解は、掃引容積を完全にカバーするために平均127個のボックス(余分なボリュームは含まず)が必要であった。
【0075】
興味深いことに、完璧な被覆要件が緩和され、元の掃引容積に存在しなかったいくつかのボクセルをボックス表現に含めることが許容される場合、必要なボックス数が大幅に減少する可能性がある。この問題は今では複数の軸で考慮されるようになっている。ハードな制約として、少なくとも元の掃引容積を被覆しなくてはならない。この制約下では、追加被覆数をバランスさせながらこの被覆を達成するために必要なボックスの数が最小限に抑えられる。この最適化を組み込むためにこのアルゴリズムに別のステップが実装される。上記の集合被覆の後、その結果が一連のマージによって実行される。各反復にて、このアルゴリズムは2つのボックスを選択し、これらのボックスはマージされると、この集合に追加される最小の追加容積となる。このアルゴリズムの効果については、以下でより詳細に説明する。個々のボックスと対向してボックスの表現を保存できることは、ボックス内の構成数(membership)をチェックするハードウェアがこの変更を正当化するのに十分単純である場合にのみ有用である。論理的には、ボクセルがボックス内にあるかどうかをチェックするには、6つの比較がある。原点に最も近いボックスの頂点を(x;y;z)とし、原点から最も遠いボックスの頂点を(x;y;z)とすると、(V;V;V)に位置するボクセルがボックス内にあるかどうかのチェックは、次の不等式が成立していることのチェックとなる。
【0076】
≦v≦x;y≦v≦y;z≦v≦z
【0077】
この作業は、6つのコンパレータを平行に1サイクルで実行することができる。又は、少ない領域を使用するためにより少ないコンパレータを多重化することができる。
【0078】
図5は、ボクセルの代わりにボックスを使用した戦略の衝突検出アーキテクチャの例を示している。ここでは、単一のボックスが例示されている。図5を参照すると、再構成可能検出アーキテクチャ500は、制御ロジック510、記憶機構(521-1、... 521-n)及び比較器(522-1、...、522-n)の並列モジュール、及びAND論理ゲート530を含み、並列モジュールの出力を論理積して衝突結果を出力する。図4に示す例のように、ボックス戦略アプローチは、(図ではラッチは示されているが)任意の適切な記憶機構を使用することができる。
【0079】
各動作のモジュールは、そのようなボックスの多くの論理和である。図5では、ボクセルではなくボックスを使用したデザインの単純さを見ることができる。プログラミング中、対向する角の座標がラッチされる。実行時に、入ってくるボクセルはボックスの角を表す保存された値と比較され、そのボクセルがボックス内にあるかどうかが確認される(たとえば、入ってくるボクセルを保存された値と比較して、その結果をAND処理する)。
【0080】
図6A図6Dは、PRM内の単一の動作に対する掃引容積の表現が、表現戦略によってどのように変化するかを示している。図6Aは、実際の掃引容積を示す。図6Bは、動作用の個別ボクセルをすべて含む。 この掃引容積専用にハードコードされた回路が構築されている場合、この動作は約10,000トランジスタを消費する。上記のように各ボクセルを明示的に表すプログラマブル回路を設計する場合は、660,000を超えるトランジスタが必要であり、65x以上の増加となる。図6Cは、個々のボクセルの代わりに87ボックスを使用して記載した同じ掃引容積を示す。この戦略に必要な構造の場合、わずか6200,000個以下のトランジスタの消費ですむ。その結果、ハードコーディングされた回路に比べて4倍以下の増加になる。
【0081】
エッジモジュールの集計結果の出力を使用して、コストを割り当てる、又はPRMからエッジを除去することができる。衝突検出(及びPRMのエッジへのコストの除去又は割り当て)が完了すると、PRM上でグラフ探索が実行され、接続性が決定され、経路が構築される。グラフ探索は、従来の動作計画アルゴリズムではボトルネックではないが、衝突検出が加速される場合は制約要因になり得る。グラフ処理を高速化するプログラマブルアーキテクチャを設計する上での課題は、合理的なリソース要件がありながらも、予想されるグラフトポロジすべてを処理できる設計を実現することである。有利には、ここに記載のPRMは、その最大度、最大エッジ重み、最大経路コストなどの特定の特性を保証することができるように、事前に静的に構築される。これらの数量(quantities)をまとめることにより、任意グラフが許可された場合よりもはるかにコンパクトで効率的な記憶構造及びデータ経路の設計が可能になる。図示した例では、データフローアーキテクチャはベルマンフォード法を実行するように設計されている。しかし、他の最短経路アルゴリズムは、回路が物理的ネイバーではないにもかかわらず論理的ネイバーを識別するためのサポートを含むハードウェアにおいて具現化されるように変更することができる。
【0082】
図7は、一実装例によるベルマンフォード計算ユニットの基本的なマイクロアーキテクチャレイアウトを示す。包括的なアーキテクチャには、ベルマンフォード計算ユニット(BFCU)で構成され、かつ再構成可能なトポロジを実現するために使用される低コストの相互接続ネットワークを介して接続された一連のノードが含まれる。図8は、例示的実装用オンチップネットワークのための例示的なルータマイクロアーキテクチャを示す図である。図9は、相互接続ネットワークの平面図を示す。経路探索アーキテクチャの動作は3つのフェーズに分かれる。前処理フェーズでは、論理グラフから物理ハードウェアリソースへのマッピングを作成する。プログラミングフェーズでは、アーキテクチャのデータ構造を、手元のグラフに関する必要な情報で構成する。実行フェーズでは、分散版ベルフォード法が実行され、最短経路が計算される。
【0083】
ベルフォード法は単一ソースの最短経路アルゴリズムである。まず、ソースを除くすべてのノードが無限大のコストに初期化される。各反復において、各ノードは、隣接ノードの現コストを隣接ノードのエッジ重みに加算することによって、各隣接ノードをより良い最短経路かどうかチェックする。このアルゴリズムは、ルーティングインフォーメーションプロトコルを実装するために分散式に一般に使用されるが、隣接コストだけでなく、ルーティングテーブル全体が通信されるという違いがある。
【0084】
コストのかかるメモリアクセスを避けるため、ベルマンフォード法を実装するデータフローアーキテクチャが望ましい。このアーキテクチャは、特定のグラフ(又は自律型車両の実施形態では格子)用に設計するのには単純であろうが、再プログラム化可能とする必要性があると複雑になっていく。
【0085】
グラフ内のすべての論理ノードは、静的に、動作計画ハードウェアモジュール上の物理BFCUに割り当てられる。プログラミングフェーズでは、BFCU内のいくつかのテーブルに値が設定される。ノードの論理的ネイバーそれぞれの物理アドレスはテーブルに保存される。これらネイバー各々へのエッジ重みは別のテーブルに保存される。これらのテーブルは一度埋めなければならないが、別のグラフに切り替えるまで再利用できる。
【0086】
各BFCUには、宛先への現在の最良コストを格納するレジスタもある(このアプリケーションでは、ベルマンフォードは単一のソースアルゴリズムではなく単一の宛先として扱われる)。これらのレジスタは無限大を表す最大値にすべて初期化される。最短経路探索を開始するために、宛先ノードがマップされたBFCUがゼロコストに更新される。次に、宛先ノードはその近隣テーブルを反復し、その近隣のエッジ重みにコスト(ゼロ)を加えたメッセージを各隣接ノードに送信する。ネイバーはこのメッセージを受信すると、この新コストと現コストとを比較する。新コストが現コストよりも低い場合、いくつかのことが起こる。第1に、ノードは、その最良のコストレジスタと次のホップポインタとを更新する。第2に、それ自身のネイバーテーブル上で反復を開始して、そのネイバーの物理アドレスを見つけ出し、そのそれぞれにそのネイバーのエッジ重みにコストを追加したメッセージを送信する。
【0087】
プレ加算(pre-addition)の代わりにポスト加算(post-addition)の値を送信するという決定は、偶然に見えるかもしれないが重要である。ポスト加算値を受信すると、ノードは、隣接ウェイトのあるテーブルにアクセスするためのサイクルを待ち、加算を行い、次に比較することのではなく(テーブルルックアップ中に届くメッセージを保存する必要がある)、単一サイクルでそのメッセージを処理するか廃棄するかを評価することができる。新しい最善のコストを処理し、ネイバーテーブルを反復することは数サイクルかかるが、各BFCUは各サイクルで1つのメッセージのスループットを維持することができる。新コスト更新メッセージを受信したときに、更新を送信するためにBFCUがテーブルウォークをしているプロセス中であると、2つの可能性がある。その新コストが改善の場合、このテーブルウォーク上のまだ送信されていないメッセージは失効しているため、その反復を中断して新コストで再起動することができる。新しいコストが改善でない場合、メッセージは破棄される。各サイクルでメッセージを処理する中断のない機能により、計算ノードに入力バッファの必要がなくなり、クロックサイクルごとに各ノードでメッセージを取り出せることにネットワークが頼ることができることになる。これは、相互接続ネットワークを議論する際に重要になる。
【0088】
コスト更新メッセージとは別に、BFCUは2つの他のタイプのメッセージも処理する。BFCUが次のホップクエリを受信すると、BFCUは、最良コストを受信したネイバーのアドレスで応答する。このクラスのメッセージは、経路自体が抽出されることを可能にする。BFCUは、最良のコストクエリを受信することもできる。このクエリには、最善のコストレジスタの現在の値で応答する。
【0089】
BFCUの動作は単純であるが、BFCUのサイズを十分に小さくして、アーキテクチャが大きなグラフサイズに拡大できるように、いくつかのデザインを選択する必要がある。各ノードが無限の数の論理的ネイバーを持つことが許可されている場合、例えば、そのネイバーアドレステーブルは大きくなければならない。この戦略では、計画グラフを事前計算する必要があるため、計画グラフの品質に影響を与えることなく、各ノードに最大で4つの隣接ノードがあることが保証され得る。この制限は、必要に応じて、あまりにも多くの隣接ノードを論理的にゼロのエッジ重みで接続された複数のノードに論理分割することによって克服することができる。同様の決定は、経路とエッジのコストを最大限にして行う必要がある。
【0090】
分散版ベルマンフォード法は、ネットワークが失敗したリンクをより効果的に処理できるように、スプリットホライズン広告ポリシー(split-horizon advertisement policy)を実装することがよくある。現在のアーキテクチャでは、グラフ探索が始まる前に衝突(計画グラフの事実上失敗したリンク)が伝達され、その理由でスプリットホライズンを維持する必要性がなくなる。より費用のかかるルートをノードの次のホップに広告することは、依然として不必要にネットワーク帯域幅を占有する。ただし、シミュレーションでは、これらの冗長なメッセージが性能にほとんど影響しない(経路探索完了時間の増加が1%未満)ことが示されている。スプリットホライズンを実装しないことで、複雑さが抑えられる。
【0091】
これらの決定はすべて、各BFCUの設置面積をきわめて小さく保つのに役立つ。各ノードには約6,000個のトランジスタが必要である。このうち、70%はプログラム可能状態で構成され、残りは組み合わせ論理である。この適度なサイズにより、難しい課題を解決するために必要な計算ノード数の実装が可能となる。
【0092】
ベルマンフォード実装を実現するために、各BFCUは、その論理的ネイバーと通信できる必要がある。しかし、設計は再構成可能でなければならないため、物理的BFCUの海が所望のグラフトポロジの動作をエミュレートできるように、この通信はネットワーク上で行わなければならない。このネットワークにより、物理的に隣接していなくても、BFCUは通信問題を抽象化し、物理的に隣接しているかのように実際に接続されているかのように動作することができる。
【0093】
有用な設計には何千ものノードがあるため、このネットワークは空間と動力の両方で効率的でなければならない。提案されたマイクロアーキテクチャは、第一級の制約として、大規模なネットワーク規模へのスケーリングを可能にする単純さを重視している。ネットワークを単純化又は最適化するには、いくつかの方法がある。第1の点は、BFCU間のメッセージが非常に小さいため、各メッセージを単一のフリットとして構成できることである。各メッセージが単一フリットであるため、複数フリットはめったに連続して移動しない。これにより、クレジットリターンレイテンシをカバーする必要がないため、各ポートで1つのバッファエントリのみで性能を維持することができる。ルータの各出力方向には、1つの関連クレジットがある。このクレジットは1から始まり、その方向にメッセージを送信するとデクリメントされる。そのメッセージがネイバーのバッファエントリを空にした場合、このクレジットは隣接ルータから直接帯域から戻される。この単一のバッファエントリスキームを実装することにより、面積が40%削減される。
【0094】
さらに検討すると、中間回転バッファ(intermediate turning buffer)も十分に活用されていないように思われた。東西方向のリソースを解放することによってスループットを助ける代わりに、それは単純に恩恵なしに回転ペナルティを導入していた。旋回バッファを完全に取り外しても、性能はほとんど変化なかった。これは、部分的には、分散型ベルマンフォード法が生成するトラフィックが少ないことと、BFCUはサイクル毎にメッセージを処理できるので、取り出されるのを待つ入力バッファ内に停止することがほぼない(2つのメッセージが同じ同時にノードに届いた場合のみ)ことによる。この最適化により、イースト/ウェスト入力バッファをノース/サウス/エジェクションマルチプレクサ(North/South/Ejection muxes)に直接接続することで、ルータのサイズをさらに縮小することができた。
【0095】
さらに、我々の分散版ベルマンフォード法の特性は、このルータで通常要件であるように、スターベーション回避プロトコル(starvation avoidance protocol)の実装を避ける。このネットワーク内の新メッセージは、アルゴリズムの進行に伴い(より良いコストが受け取られると)生成されるだけなので、ネットワーク内の任意の場所での停止(stall)がアルゴリズム的に保証され、最終的に残りのネットワークが静止する。この休止状態は、メッセージを継続するために必要なリソースいずれをも解放する。シミュレーションは、これらの停止が極めてまれであることを示している。図8に示すルータアーキテクチャの設計では7,500個のトランジスタを消費する。これの約65%は4つのシングルエントリー入力バッファであり、これは個々のルータのバッファ要求を減らす重要性を示している。
【0096】
再構成可能なネットワークの提案された設計の1つの目標は、多種多様なネットワークで良好な性能を実現する能力である。これを達成するには、論理的計画グラフ構成を物理的BFCUにスマートマッピングする必要がある。通信レイテンシを最小限に抑えるには、理想的には論理的ネイバーを物理的に隣接するBFCUにマッピングするが、これは計画グラフのトポロジによって常に可能とは限らない。BFCUの物理的ネットワークは2Dメッシュであるが、論理的計画グラフはロボットの高次元構成空間で作成されているため、平面図ではあり得ない。
【0097】
前処理フェーズの間にこのマッピング問題に対する許容可能な解を得るため、シミュレーテッドアニーリング手法を使用した。シミュレーテッドアニーリングは、複雑な状態空間の最適性を探索するための古典的な手法である。まず、論理ノードを物理メッシュ上の位置にランダムに割り当てる。このシステムは、特定の「温度」及び冷却速度で初期化される。各反復にて、このシステムは隣接状態に移行しようとする。隣接状態は、ノード(ノードA)をランダムに選択することによって生成される。ノードAの論理的ネイバー(ノードB)の1つが選択され、1つの物理的位置がノードBのネイバー近傍でランダムに選択される。このネイバー状態は、このロケーションに現在マップされているどの論理ノードでもノードAとスワップすることによって構築される。この新しい状態がシステムのエネルギ(本出願では、論理的ネイバー間の平均物理的距離として定義される)を減少させる場合、それは受け入れられる。システムのエネルギを増加させる場合には、システムの現在の温度に依存する確率で受け入れられる。温度が高いほど、システムはより高いエネルギのネイバー状態を受け入れる可能性が高い。より高いエネルギ状態を受け入れることにより、アルゴリズムは局所的な最小値からその道を見つけることができる。各反復において、その温度は冷却速度で指数関数的に減少する。
【0098】
最短経路アーキテクチャと衝突検出アーキテクチャとの間のインターフェースは、相互接続ネットワーク上のポイントで発生する。これらの点は、「制御ノード」と呼ばれることがある。図9は、相互接続ネットワークの周辺に位置する制御ノードを示す。衝突検出モジュールは、どの動作(グラフエッジ)が制御ノードに衝突しているかを表すビットベクトルを送信する。衝突における各動作について、制御ノードは、BFCUが次のクエリにそのエッジを使用すべきでないことを示すメッセージを、エッジの両側のノードに割り当てられたBFCUに送信する。制御ノードはまた、完了時に経路自体を収集する役割を担う。この目的のために、制御ノードに最短経路探索の状態をどのように評価するかを指示するパラメータが(プログラミングフェーズ中に)設定される。これには、ソースノードの最高コストを調べ始めるまでに待機するサイクル数と、完了を示す条件が含まれる。これらの条件は、後述するように、静的解析によって決定することができる。制御ノードのサイズは、関連する構成の物理アドレスにエッジIDのマッピングを保持するのに必要なストレージによって支配される。このマッピングにより、制御ノードは衝突検出結果をネットワーク上の適切な場所に転送することができる。128×128メッシュが実装されている場合、各制御ノードはほぼ190,000個のトランジスタを消費し、そのほとんどはマッピングテーブルである。
【0099】
この実装例では、ロボットではどこにでも存在するため、ピックアンドプレースを評価する。PRMを、Kinova製6自由度のJacoIIロボットアーム用に様々なサイズで生成した。実験は、無作為に配置され、かつサイズが設定された障害物と様々なソース/宛先の対からなるサンプリングした環境で実行された。4,000から256,000のエッジに及ぶPRMの問題を解決するシステムの動作をテストしたが、その面積とタイミングの数値は、16,000ノード及び32,000エッジPRMの問題を解決する128x128の実装に焦点を当てる。このサイズであれば、このロボット空間における難しい問題を解決するのに十分である。
【0100】
シノプシス(Synopsys)社のツールチェーンとNanGateオープンセルライブラリ15nm(Open Cell Library)を使用して設計を組み合わせ、性能、面積、消費電力の見積もりを出した。以下の数字は、16,384ノード(128x128)で実装した場合の数値である。面積はトランジスタ数で与えられ、これはテクノロジ・ノードから独立していなければならないが、レイテンシと電力の推定はこの積極的な特徴サイズ(aggressive feature size)に依存する。
【0101】
衝突検出アーキテクチャは、使用される計画グラフのエッジと完全に平行であるため、そのレイテンシ時間は処理する必要のある障害物の数にのみ左右される。この実験でサンプリングしたランダムなピックアンドプレース環境では、平均750個の障害ボクセルがあった。つまり、各ボクセルは処理に1サイクルしか必要ないため、衝突チェックに平均750サイクルかかることを意味する。
【0102】
提案された最短経路アーキテクチャの有効性をテストするため、サイクル精度のシミュレータを、相互接続ネットワークと関連BFCU用に記述した。この設計にはVerilogを使用し、小規模な実装では機能の正確性のテストにRTLシミュレータを使用したが、RTLシミュレータで16,384ノードの実装に数千回のタイミング実験を実行する時間は限定的である。このシミュレータは、マイクロアーキテクチャの開発と最終結果の効率的なプロファイリングを行う設計スペースの迅速な探索である。
【0103】
16,000ノードのグラフでは、完了までの平均時間は360サイクルである。グラフ探索速度自体に加えて、評価すべき設計の一態様は、探索完了を検出する方法である。図10は、5,000を超えるサンプリングをした環境でシミュレートされた、2つのサイズのロードマップについて様々な時点で完了する確率を示している。データの静的解析を使用してパラメータを選択し、プログラミングフェーズ中に経路抽出モジュールを構成して完了を識別した。16,000ノードのグラフでは、この戦略で99%以上の完了を正しく識別する。これは、270の余分なサイクルの平均オーバーヘッドになる。
【0104】
この方法は、経路探索時に経路探索が完了していることが厳密に保証されていないものの、無効経路を返すことはなく、準最適経路であるだけであるため許容範囲内である。ほとんど起こらないが、パラメータが適切に選択され、かつこれが特定のアプリケーションに適切でない場合、このアルゴリズムはグラフ内のノード数で制限された速度で確実に静止し、より控えめな(conservative)パラメータ設定を使用することができる。
【0105】
完全な経路探索と高精度検出の両方に時間を集約すると、平均630サイクルが得られる。しかし、ハードウェア設計では一般的であるように、データの移動は計算と同じくらい時間がかかる。衝突をBFCUに伝え、実際に経路を抽出するには、950サイクルの追加のオーバーヘッドがある。衝突検出の実行時間を含めて、障害物のボクセルが到着してから経路が出力可能になるまでの総平均レイテンシは2,330サイクルである。シノプシス社の合成では、この設計が1GHzで容易にクロックされることが示されており、これは2.3マイクロ秒のレイテンシに相当する。このレイテンシは、従来のサンプリングベースのプランナよりも約5桁速く、以前から提案されているアクセレータよりも2桁も高速である。
【0106】
合計で16,384ノードの設計では、約23億個のトランジスタが消費される。大部分のスペースは、単純化されたボックス表現であっても、衝突検出モジュールで埋められる。次に大きなコンポーネントはネットワークノードであり、4つのシングルエントリバッファ(single-entry buffers)によって支配される。シノプシス社は、設計の消費電力を35ワットと推定している。面積数と同様に、これは大部分が衝突検知モジュールからのものであり、残りはネットワークからのものである。
【0107】
図11Aは、ロードマップ内のエッジ数に対する衝突チェックのレイテンシのプロットを示す。図11Bは、ロードマップのエッジ数に対する最短経路探索のレイテンシのプロットを示す。性能のスケールが問題サイズに比例してどのように拡大するかを検討することも重要である。図11Aは、各エッジに専用のハードウェアが存在するため、衝突検出の実行時間がPRMのエッジ数に依存しないことを示している。16,384ノードの実装では最大32,768のエッジを処理できるが、この設計はより大きな実装へと容易に拡張できる。図11Aはまた、CPU及びGPU上に実装された同じ事前計算を利用する戦略を示すことによって、専用ハードウェアと比較して積極的な事前計算からどのような利益が得られるかを解明するのに役立つ。CPUバージョンは、8GBのRAMを搭載した4コアのHaswelli7上で実行される高度に最適化されたCプログラムであり、すべてのハードウェアスレッドを利用するOpenMPディレクティブを備えている。GPUバージョンは、TeslaK80で動作するうまくチューニングされたCUDAカーネルである。これらの戦略はどちらも、実行時に従来のサンプリングベースのプランナを実行する場合に比べて約10倍のスピードアップを実現するが、ここに提案の解決策よりもはるかに低速である。
【0108】
図11Bは、提案の再構成可能なベルマンフォードハードウェアベースの最短経路アルゴリズムのスケーリング動作を示し、このカスタムハードウェアソリューションの必要性を示している。各ノードに専用のハードウェアを持たせることで、グラフの平均ホップ数で線形にスケーラビリティを向上させることができる。提案のカスタムハードウェアソリューションに加えて、CPU及びGPU上の最短経路探索のパフォーマンスも示されている。CPUは、最適化されたロボットソフトウェアパッケージであるKlamptで最短経路実装を実行する4コアのHaswell i7である。GPUは、Tesla K80のnvGraphグラフ分析APIを使用して、最短経路で動作している。提案のアーキテクチャでは、最短経路と衝突検出とを緊密に結合させる必要があるため、GPUはPCI-eを介した通信を含んでいるが、どちらの実装でも適正にすべきデータ移動オーバーヘッドは含まれていなかった(この数値は計算時間に厳密に関係している)。それでも、GPUの計算時間は実際には小さなグラフサイズのCPUよりも遅く、約32,000のエッジを横断し、ここに提示する提案解決策よりも数桁遅いままである。これは、最短経路のレイテンシを加速衝突検出と同じオーダーの大きさにするために、カスタムハードウェアソリューションが必要であることを示している。
【0109】
評価すべき衝突検出を実行するためのボックス化戦略にはいくつかの側面がある。第1は、ハードウェアコスト削減の追求する上で、掃引容積表現におけるボックスの数を積極的に減らす技術である。ボックス化した衝突検出用の上述アルゴリズムを使用して、50,000のエッジロードマップ上のパラメータ空間の掃引を実施し、ハードウェア予算と表現量の増加との間のトレードオフを評価した。
【0110】
図12は、ハードウェア予算と表現量の増加との間のトレードオフの視覚化したものである。オリジナルのボクセル化容積を正確に表す平均ボクセル数は127である。しかし、上述のアルゴリズムを使用すると、わずか64のボックス予算で、各表現の平均容積がちょうど11%増加する。この最適化が安全であることに十分留意されたい。なぜなら、容積が追加されるだけで削除されることはなく、現状のまま衝突動作に誤ってフラグが立てられることはないからである。各ボックス表現のサイズが2つのボクセルに等しいことを考えると、ボクセルで容積を表現する方がボクセルよりもはるかに効率的である。もう1つの問題は、このより粗い表現が、アーキテクチャが最適経路を見つける能力を低下させる頻度である。50,000のエッジPRMを、個別のボクセル表示と10%量を増加させたボクセル化戦略との両方を使用して、5,000のサンプリングされた場所のピックアンドプレース環境に対してテストした。容積を10%増加させた場合、失敗率はわずか0.13%の増加であった。残りの経路のうち、平均経路長は0.59%増加した。この小さなマイナス要素は、ボックスを使用した完璧なカバーと比較して、ハードウェアコストが50%減少していることによって十分に相殺される。これらの結果から、ボックス表現による衝突検出を実行する戦略が、必要なハードウェアリソースを効果的に削減し、経路品質も維持することがわかる。
図1
図2
図3
図4
図5
図6A
図6B
図6C
図6D
図7
図8
図9
図10
図11A
図11B
図12