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

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

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

特許7394853動的物体を有する環境における運動計画を促進する装置、方法及び物品
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-30
(45)【発行日】2023-12-08
(54)【発明の名称】動的物体を有する環境における運動計画を促進する装置、方法及び物品
(51)【国際特許分類】
   G08G 1/16 20060101AFI20231201BHJP
   G05D 1/02 20200101ALI20231201BHJP
【FI】
G08G1/16 C
G05D1/02 H
【請求項の数】 38
(21)【出願番号】P 2021531792
(86)(22)【出願日】2019-12-04
(65)【公表番号】
(43)【公表日】2022-03-15
(86)【国際出願番号】 US2019064511
(87)【国際公開番号】W WO2020117958
(87)【国際公開日】2020-06-11
【審査請求日】2021-11-10
(31)【優先権主張番号】62/775,257
(32)【優先日】2018-12-04
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】503164937
【氏名又は名称】デューク・ユニバーシティ
【氏名又は名称原語表記】DUKE UNIVERSITY
(73)【特許権者】
【識別番号】518223753
【氏名又は名称】ブラウン ユニバーシティ
(74)【代理人】
【識別番号】100169904
【弁理士】
【氏名又は名称】村井 康司
(74)【代理人】
【識別番号】100221372
【弁理士】
【氏名又は名称】岡崎 信治
(72)【発明者】
【氏名】ダニエル ソリン
(72)【発明者】
【氏名】ウィリアム フロイド-ジョーンズ
(72)【発明者】
【氏名】ショーン マリー
(72)【発明者】
【氏名】ジョージ コニダリス
(72)【発明者】
【氏名】ウィリアム ウォーカー
【審査官】佐々木 佳祐
(56)【参考文献】
【文献】米国特許出願公開第2018/0074505(US,A1)
【文献】特表2018-505788(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G08G 1/00-99/00
G05D 1/02
(57)【特許請求の範囲】
【請求項1】
計画グラフを介して運動計画を実行するプロセッサベースのシステムにおける動作の運動計画方法であって、各計画グラフは、複数のノード及びエッジをそれぞれ含み、各ノードは、時間と、一次エージェントの状態を特徴付ける変数とを暗黙的又は明示的に表し、前記一次エージェントは、1つ又は複数の他のエージェントを含む環境中で動作し、各エッジは、前記ノードのそれぞれの対の間の遷移を表し、前記方法は、
第1の計画グラフ中の現在のノードについて、
前記1つ又は複数の他のエージェントの少なくとも1つの実際の又は将来の軌道をそれぞれ表す軌道の集合中の各軌道について、
前記エッジの何れかが前記軌道と衝突する場合、前記第1の計画グラフの何れのエッジが前記軌道と衝突するかを特定することと、
コスト関数を前記エッジの1つ又は複数に適用して、特定された衝突又は衝突の不在の少なくとも一方を反映することと、
前記第1の計画グラフ中の現在のノードに前記第1の計画グラフの単一のエッジにより直接結合された前記第1の計画グラフ中の任意のノードである前記第1の計画グラフ中の複数の候補ノードのそれぞれについて、前記第1の計画グラフ内の現在のノードから直接候補ノードを通過し、その後前記第1の計画グラフ内のゴールノードに至る前記現在のノードから前記第1の計画グラフ中のゴールノードへの最小コストパスを、対応するパスに沿った前記候補ノードと前記ゴールノードとの間の複数の介在ノードを有するか有しない状態で、見つけることと、
前記軌道の集合の前記軌道に関して、前記候補ノードのそれぞれの前記最小コストパスを見つけた後、
前記候補ノードのそれぞれについて、全ての前記軌道にわたる前記候補ノードに対して各最小コストパスに関連付けられたコストの少なくとも一部に基づいて値を計算することと、
計算された値の少なくとも一部に基づいて、前記候補ノードの1つを選択することと、
を含む、運動計画方法。
【請求項2】
コスト関数を前記エッジの1つ又は複数に適用して、特定された衝突又は衝突の不在の少なくとも一方を反映することは、
少なくとも1つの軌道と衝突すると特定された前記エッジについて、当該エッジのコストを相対的に高い大きさに増大させて、特定された衝突を反映させることを含み、
前記相対的に高い大きさは、少なくとも1つの他のエッジについて衝突の不在を反映する相対的に低い大きさよりも相対的に高い、請求項1に記載の運動計画方法。
【請求項3】
コスト関数を前記エッジの1つ又は複数に適用して、特定された衝突又は衝突の不在の少なくとも一方を反映することは、
少なくとも1つの軌道と衝突しないと特定された前記エッジについて、当該エッジのコストを相対的に高い大きさに増大させて、特定された衝突の不在を反映させることを含み、
前記相対的に高い大きさは、少なくとも1つの他のエッジについて衝突を反映する相対的に低い大きさよりも相対的に高い、請求項1に記載の運動計画方法。
【請求項4】
前記環境中の他のエージェントの少なくとも1つについて、前記他のエージェントの将来の軌道を特定することと、
前記他のエージェントの特定された実際の又は将来の軌道から前記軌道の集合を形成することと、
を更に含む、請求項1に記載の運動計画方法。
【請求項5】
前記第1の計画グラフの単一のエッジにより前記第1の計画グラフ中の前記現在のノードに直接結合される前記第1の計画グラフ中の任意のノードである前記候補ノードに基づいて、前記第1の計画グラフの前記他のノードから前記第1の計画グラフ中の前記候補ノードを選択することを更に含む、請求項1に記載の運動計画方法。
【請求項6】
前記候補ノードのそれぞれについて、全ての前記軌道にわたる候補ノードに対して各最小コストパスに関連付けられたコストの少なくとも一部に基づいて値を計算することは、
前記現在のノードから、前記候補ノードと、存在する場合には前記介在ノードの全てを経由して前記ゴールノードまで延びる各最小コストパスに関連づけられたコストの平均値を計算することを含む、請求項1に記載の運動計画方法。
【請求項7】
前記計算された値の少なくとも一部に基づいて、前記候補ノードの1つを選択することは、前記計算された値の全てのうちで最小の値を有する1つの候補ノードを選択することを含む、請求項1に記載の運動計画方法。
【請求項8】
選択された1つの前記候補ノードに基づいて、前記一次エージェントの軌道を更新することを更に含む、請求項1に記載の運動計画方法。
【請求項9】
前記コスト関数を前記エッジに適用して特定された衝突を反映する前に、前記第1の計画グラフを初期化することを更に含む、請求項1に記載の方法。
【請求項10】
前記第1の計画グラフを初期化することは、
前記第1の計画グラフ中の各エッジについて、前記環境中の複数の静的物体のそれぞれに対する前記エッジの衝突評価を実行して、存在する場合に、前記エッジと前記静的物体との間の衝突を識別することを含む、請求項9に記載の方法。
【請求項11】
前記第1の計画グラフを初期化することは、
前記静的物体の少なくとも1つと衝突すると評価される各エッジについて、コスト関数を当該エッジに適用して評価された衝突を反映するか、又は、前記第1の計画グラフから当該エッジを削除すること、
を更に含む、請求項10に記載の方法。
【請求項12】
前記第1の計画グラフを初期化することは、
前記第1の計画グラフ中の各ノードについて、前記ノードから前記ゴールノードへのコストを計算することと、
前記計算されたコストを当該ノードに論理的に関連付けることと、
を更に含む、請求項9~11の何れか一項に記載の方法。
【請求項13】
前記候補ノードの選択された1つを前記第1の計画グラフ中の新しい現在のノードとして割り当てることと、
第1の計画グラフ中の前記新しい現在のノードについて、
1つ又は複数の他のエージェントの少なくとも1つの実際の又は将来の軌道を表す軌道の集合中の各軌道について、
前記エッジの何れかが前記軌道と衝突する場合、前記第1の計画グラフの何れのエッジが前記軌道と衝突するかを特定することと、
コスト関数を前記エッジの1つ又は複数に適用して、特定された衝突又は衝突の不在の少なくとも一方を反映することと、
前記第1の計画グラフ中の前記新しい現在のノードに前記第1の計画グラフの単一のエッジにより直接結合された前記第1の計画グラフ中の任意のノードである前記第1の計画グラフ中の複数の新しい候補ノードのそれぞれについて、前記第1の計画グラフ内の前記新しい現在のノードから直接前記新しい候補ノードを通過し、その後前記第1の計画グラフ内のゴールノードに至る前記新しい現在のノードから前記ゴールノードへの最小コストパスを、対応するパスに沿った前記新しい候補ノードと前記ゴールノードとの間の複数の介在ノードを有するか有しない状態で、見つけることと、
前記軌道の集合の前記軌道に関して、前記新しい候補ノードのそれぞれの前記最小コストパスを見つけた後、
前記新しい候補ノードのそれぞれについて、全ての前記軌道にわたる新しい候補ノードに対して各最小コストパスに関連付けられたコストの少なくとも一部に基づいて値を計算することと、
前記計算された値の少なくとも一部に基づいて、前記新しい候補ノードの1つを選択することと、
を更に含む、請求項1~11の何れか一項に記載の方法。
【請求項14】
計画グラフを介して運動計画を実行するプロセッサベースのシステムであって、各計画グラフは、複数のノード及びエッジを含み、各ノードは、時間と、一次エージェントの状態を特徴付ける変数とを暗黙的又は明示的に表し、前記一次エージェントは、1つ又は複数の他のエージェントを含む環境中で動作し、各エッジは、前記ノードのそれぞれの対間の遷移を表し、前記システムは、
少なくとも1つのプロセッサと、
プロセッサが実行可能な命令又はデータの少なくとも1つを記憶する少なくとも1つの非一時的プロセッサ可読媒体と、
を含み、前記プロセッサが実行可能な命令又はデータの少なくとも1つは、前記少なくとも1つのプロセッサによって実行されると、前記少なくとも1つのプロセッサに、請求項1~13のいずれかに記載の方法を実行させる、
プロセッサベースのシステム。
【請求項15】
状態を表すノードと、状態間の遷移を表すエッジと、を有するグラフを利用する運動計画システムにおける動作方法であって、
少なくとも1つのプロセッサが、第1のグラフ中の現在のノードに対して利用可能な次のノードのそれぞれについて、前記現在のノードから前記次のノードを経由してゴールノードに到達するための代表コストを算出することと、
少なくとも1つのプロセッサが、前記次のノードのそれぞれについて計算された代表コストに基づいて、次のノードを選択することと、
少なくとも1つのプロセッサが、選択された次のノードの少なくとも一部に基づいて、移動の命令をすることと、を含み、
前記代表コストは、環境中の1つ又は複数のエージェントのそれぞれの非決定的挙動に基づいて評価された前記環境中の前記1つ又は複数のエージェントとの衝突の確率に鑑みて、前記次のノードを経由した前記現在のノードから前記ゴールノードまでの利用可能なパスのそれぞれに関連付けられた代表コストを反映しており、
前記エージェントは、位置、速度、軌道、又は形状のうちの1つ又は複数を経時変化させることができる、
方法。
【請求項16】
前記次のノードを経由して前記現在のノードからゴールノードに到達するための代表コストを計算することは、
前記次のノードを経由した前記現在のノードと前記ゴールノードとの間の将来のパスについて、
前記将来のパスに沿った前記現在のノードと前記ゴールノードとの間の各エッジについて、
代表コストを特定することと、
各エッジに対して特定した代表コストを、前記将来のパスに沿った前記現在のノードと前記ゴールノードとの間の各エッジに割り当てることと、
割り当てられ特定された代表コストの少なくとも一部に基づいて、前記次のノードを経由した前記現在のノードと前記ゴールノードとの間の前記将来のパスからの前記次のノードのための最小コストパスを特定することと、
特定された最小コストパスを表す値を前記次のノードに割り当てることと
を含む、請求項15に記載の方法。
【請求項17】
割り当てられ特定された代表コストの一部に基づいて、前記次のノードを経由した前記現在のノードと前記ゴールノードとの間の前記将来のパスからの前記次のノードの最小コストパスを特定することは、
前記現在のノードから前記次のノードに移動するコストを含む最小コストパスを特定することを含む、請求項16に記載の方法。
【請求項18】
前記将来のパスに沿った前記現在のノードと前記ゴールノードとの間の各エッジについて代表コストを特定することは、
前記将来のパスに沿った前記現在のノードと前記ゴールノードとの間の各エッジについて、
前記環境中の1つ又は複数のエージェントのそれぞれの前記非決定的挙動を表す1つ又は複数の確率関数に基づいて、前記環境中の前記1つ又は複数のエージェントとの衝突のリスクを評価することを含む、請求項17に記載の方法。
【請求項19】
前記環境中の1つ又は複数のエージェントのそれぞれの前記非決定的挙動を表す1つ又は複数の確率関数に基づいて、前記環境中の前記1つ又は複数のエージェントとの衝突のリスクを評価することは、
前記将来のパスに沿った前記次のノードと各後続ノードとの間の各エッジによって表される一連の行動に鑑みて、前記環境中の前記1つ又は複数のエージェントのそれぞれの前記非決定的挙動を表す前記確率関数を取得することを含む、請求項18に記載の方法。
【請求項20】
前記環境中の1つ又は複数のエージェントのそれぞれの前記非決定的挙動を表す1つ又は複数の確率関数に基づいて、前記環境中の前記1つ又は複数のエージェントとの衝突のリスクを評価することは、
現在のノードへの前記将来のパスに沿った前記次のノードと各後続ノードとの間の各エッジによって表される一連の行動に鑑みて、前記環境中の前記1つ又は複数のエージェントのそれぞれの前記非決定的挙動を表す前記確率関数を取得することを含み、
前記現在のノードは、前記衝突のリスクの評価中に到達される前記将来のパスに沿った更なるノードである、請求項18に記載の方法。
【請求項21】
前記環境中の1つ又は複数のエージェントのそれぞれの前記非決定的挙動を表す1つ又は複数の確率関数に基づいて、前記環境中の前記1つ又は複数のエージェントとの衝突のリスクを評価することは、
前記エージェントのそれぞれについて、前記エージェントの前記非決定的挙動を表す前記確率関数を繰り返し取得することを含む、請求項18に記載の方法。
【請求項22】
前記それぞれのエージェントの前記非決定的挙動を表す前記確率関数を繰り返し取得することは、複数の繰り返しについて前記確率関数を繰り返し取得することを含み、
前記繰り返しの総数は、前記命令を発生させなくてはならなくなる前に利用可能な時間量の少なくとも一部に基づいている、請求項21に記載の方法。
【請求項23】
前記環境中の1つ又は複数のエージェントのそれぞれの前記非決定的挙動を表す1つ又は複数の確率関数に基づいて、前記環境中の前記1つ又は複数のエージェントとの衝突のリスクを評価することは、
前記エージェントのそれぞれについて、前記将来のパスに沿った前記次のノードと各後続ノードとの間の各エッジによって表される一連の行動に鑑みて、前記環境中の前記1つ又は複数のエージェントのそれぞれの前記非決定的挙動を表す前記確率関数を繰り返し取得することを含む、請求項18に記載の方法。
【請求項24】
前記環境中の1つ又は複数のエージェントのそれぞれの前記非決定的挙動を表す1つ又は複数の確率関数に基づいて、前記環境中の前記1つ又は複数のエージェントとの衝突のリスクを評価することは、
前記エージェントのそれぞれについて、現在のノードへの前記将来のパスに沿った前記次のノードと各後続ノードとの間の各エッジによって表される一連の行動に鑑みて、前記環境中の前記1つ又は複数のエージェントのそれぞれの前記非決定的挙動を表す前記確率関数を繰り返し取得することを含み、
前記現在のノードは、前記衝突のリスクの評価中に到達される、前記将来のパスに沿った更なるノードである、請求項18に記載の方法。
【請求項25】
前記衝突のリスクを評価することは、前記将来のパスの移動のシミュレーションを含む、請求項18に記載の方法。
【請求項26】
前記環境中の1つ又は複数のエージェントのそれぞれの前記非決定的挙動を表す1つ又は複数の確率関数に基づいて、前記環境中の前記1つ又は複数のエージェントとの衝突のリスクを評価することは、
専用リスク評価ハードウェアが、少なくとも前記環境中の前記1つ又は複数のエージェントのそれぞれの確率的に特定された軌道に基づいて、衝突のリスクを評価することを含み、
前記代表コストは、評価された衝突のリスクの少なくとも一部に基づいている、請求項18に記載の方法。
【請求項27】
前記環境中の1つ又は複数のエージェントのそれぞれの前記非決定的挙動を表す1つ又は複数の確率関数に基づいて、前記環境中の前記1つ又は複数のエージェントとの衝突のリスクを評価することは、前記環境中のエージェントの少なくとも二次エージェントの前記非決定的挙動を表す1つ又は複数の確率関数に基づいて、前記環境中の前記1つ又は複数のエージェントとの衝突のリスクを評価することを含み、
前記エージェントの一次エージェントは、運動計画が実行されているエージェントである、請求項18に記載の方法。
【請求項28】
前記次のノードを経由して前記現在のノードからゴールノードに到達するための代表コストを計算する前に前記第1のグラフを初期化することを更に含む、請求項15に記載の方法。
【請求項29】
前記第1のグラフを初期化することは、
静的衝突評価を実行して、前記環境中の1つ又は複数の静的物体との衝突を識別することと、
前記第1のグラフ中の各ノードについて、各ノードからゴールノードに到達するためのコストを計算することと、
前記第1のグラフ中の各ノードについて、ゴールノードに到達するための計算されたコストを各ノードに論理的に関連付けることと、
を含む、請求項28に記載の方法。
【請求項30】
状態を表すノードと状態間の遷移を表すエッジとを有するグラフを利用する運動計画を実行するプロセッサベースのシステムであって、
少なくとも1つのプロセッサと、
プロセッサが実行可能な命令又はデータの少なくとも1つを記憶する少なくとも1つの非一時的プロセッサ可読媒体と、
を含み、前記プロセッサが実行可能な命令又はデータの少なくとも1つは、前記少なくとも1つのプロセッサによって実行されると、前記少なくとも1つのプロセッサに、請求項15~29のいずれかに記載の方法を実行させる、
プロセッサベースのシステム。
【請求項31】
状態を表すノードと、状態間の遷移を表すエッジとを有するグラフを利用して、一次エージェントの運動計画を生成する運動計画システムにおける動作の方法であって、
ステップカウンタTを開始値に初期化する(T=0)ことと、
第1のグラフを初期化することと、
シミュレーションを実行することと、
を含み、前記シミュレーションは、
前記第1のグラフ中の現在のノードNにおいて開始して、且つ前記第1のグラフ中のゴールノードではない間、
1つ又は複数の取得の繰り返しについて、
環境中の1つ又は複数の二次エージェントの各二次エージェントについて、前記ステップカウンタがインクリメントしたとき(T+1、すなわち、次のステップ)に前記二次エージェントがとる行動を、前記ステップカウンタの前記開始値から現在値までに前記一次エージェント及び前記1つ又は複数の二次エージェントによってとられた行動を表す確率関数から取得することと、
前記次の行動と衝突する前記第1のグラフのエッジを特定することと、
前記次の行動と衝突するエッジについて、コスト関数を前記エッジに適用して、衝突条件の存在を反映することと、
前記現在のノードに直接接続されるノードの集合のうちの前記第1のグラフ中の各ノードについて、前記現在のノードに直接接続される前記ノードを経由し、1つ又は複数の将来のパスを経由して前記現在のノードから前記ゴールノードまで1つ又は複数のパスを移動するための最小コストパスを表す値を計算することと、
別の取得の繰り返しを実行するか否かを決定することと、
別の取得の繰り返しを実行しないと決定した場合、
前記現在のノードに直接接続される前記ノードの集合から、最小コストを有する、前記ノードの集合の前記ノードの1つを選択することと、
前記ステップカウンタをインクリメントする(T=T+1)ことと、
シミュレーションが前記ゴールノードにおけるものであるか否かを決定することと、
前記シミュレーションが前記ゴールノードにおけるものではない場合、前記一次エージェントに命令することなく、選択されたノードを新しい現在のノードとして設定し、シミュレーションを継続することと、
前記シミュレーションが前記ゴールノードにおけるものである場合、
前記現在のノードに直接接続される前記ノードの集合から、最小コストを有するノードを選択することと、
前記最小コストを有する選択されたノードの識別情報を提供して、前記一次エージェントの移動を命令することと、
を含む、方法。
【請求項32】
前記ステップカウンタがインクリメントしたときに前記二次エージェントがとる行動を、前記ステップカウンタの前記開始値から現在値までに前記一次エージェント及び前記1つ又は複数の二次エージェントによってとられた行動を表す確率関数から取得することは、前記ゴールノードへのルートに沿った、前記現在のノードに直接接続された前記ノードと各後続ノードとの間の各エッジによって表される前記一次エージェントによってとられる一連の行動に鑑みて、前記環境中の前記1つ又は複数の二次エージェントのそれぞれの非決定的挙動を表す前記確率関数を取得することを含む、請求項31に記載の方法。
【請求項33】
各エッジによって表される一連の行動に鑑みて、前記環境中の前記1つ又は複数のエージェントのそれぞれの非決定的挙動を表す前記確率関数を取得することは、前記エージェントのそれぞれについて、前記エージェントの非決定的挙動を表す前記確率関数を繰り返し取得することを含む、請求項31に記載の方法。
【請求項34】
前記一次エージェントは、自律車両であり、
前記方法は、
前記自律車両が動作する前記環境を表す知覚情報を受信することと、
前記自律車両により生成された運動計画を実施することと、
を更に含む、請求項31に記載の方法。
【請求項35】
知覚情報を受信することは、前記環境中の少なくとも1つの動的物体の位置及び軌道を表す知覚情報を受信することを含む、請求項34に記載の方法。
【請求項36】
知覚情報を受信することは、運動プランナにおいて知覚情報を受信することを含み、前記知覚情報は、前記自律車両によって搬送される1つ又は複数のセンサを介して収集され、前記環境中の少なくとも1つの他の車両の位置又は軌道を表す、請求項34に記載の方法。
【請求項37】
物体検出器により、前記1つ又は複数のセンサを介して収集された前記知覚情報から、少なくとも前記環境中の第1の動的物体を識別することを更に含む、請求項36に記載の方法。
【請求項38】
状態を表すノードと、状態間の遷移を表すエッジとを有するグラフを利用して、一次エージェントの運動計画を生成する運動計画システムであって、
少なくとも1つのプロセッサと、
プロセッサにより実行可能な命令を記憶する少なくとも1つの非一時的プロセッサ可読媒体と、
を含み、前記プロセッサにより実行可能な命令は、前記少なくとも1つのプロセッサによって実行されると、前記少なくとも1つのプロセッサに、請求項31~37のいずれかに記載の方法を実行させる、
運動計画システム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、概して、運動計画に関し、特にエージェント、例えば動的物体を有する環境における自律車両又は他のロボットエージェントの運動計画を促進するシステム及び方法に関する。
【背景技術】
【0002】
運動計画は、ロボット工学における基本的な問題である。運動計画は、自律車両の運動の制御又は他のタイプのロボット若しくはロボットの部分(例えば、付属物)の運動の制御に利用できる。例えば、運動計画は、自律車両又はロボット若しくはその部分が第1の構成状態(例えば、開始姿勢)からゴール状態(例えば、終了姿勢)まで、典型的には、動作環境中の障害物とも衝突することなく、又は、動作環境中の物体と衝突する確率が低い状態で辿ることができるパスを特定する。しかしながら、幾つかの場合、物体の検査、物体からの情報収集、物体との情報交換、又は、例えばゲーム等での物体との衝突等の、動作環境中の物体との相互作用が望まれ得る。通常、運動計画の作成に関わる4つの主成分がある。その4つの主成分は、知覚、ロードマップ(本明細書では運動計画グラフとも呼ばれる)構築、衝突検出、及び、経路検索(path search)である。それぞれは、静的物体及び特に環境内を移動する動的物体を含む、自律車両又はロボットを取り巻く環境内で解決すべき問題を呈する。動的障害物の将来の移動が未知又は不確かであることもあり得る。そのような動的物体は、自律車両又は他のタイプのロボットのゴールとは反対に移動中であり得る。したがって、自律車両又は他のタイプのロボットにとって、ゴール状態に到達するようこのような物体との衝突や妨害を回避するために、それらの変化にリアルタイムに追いつくよう運動計画を実行することは有利である。
【発明の概要】
【課題を解決するための手段】
【0003】
運動計画システムは、一次エージェント(例えば、自律車両、他のタイプのロボット)が動作する環境を表す知覚情報を受信する。運動計画システムは、他のエージェントが、一次エージェントがとる行動に対して及び互いに対してどのように反応し得るかを含め、環境中の他のエージェントによる行動を考慮に入れて、運動計画の実行に先立ち、一次エージェントの計画グラフの衝突評価を実行する。
【0004】
計画グラフの各エッジは、一次エージェントの構成空間におけるある状態から別の状態への一次エージェントの遷移を表し、それに関連付けられた固有の又は動作コストを有する。固有の又は動作コストは、例えば、燃料、エネルギー使用及び/又は時間等の一次エージェントとの種々の動作パラメータを反映し得る。各エッジは、それぞれの固有の又は動作コストに対応する初期重みを有する。
【0005】
一次エージェントの状態遷移を表す計画グラフ上のエッジについて、システムは、衝突評価の少なくとも一部に基づいて、環境中の動的物体との衝突確率を特定し、次に動的物体との衝突確率に基づいてエッジの初期重みを変更又は調整する。例えば、システムは、コスト関数を各エッジに適用して、そのエッジの初期重み(すなわち固有のコストに対応する重み)に基づいて数学的演算を実行して、変更後重みを取得する。これは、確率衝突に基づいて割り当てられた初期重みに追加の重みを追加するか、衝突確率係数で割り当てられた初期重みを乗算するか、又は衝突確率及び固有のコストに対応する初期重みが関わる何らかの他の関数若しくは公式を適用することにより行われる。本明細書に記載されるように、衝突評価は、有利には、一次エージェントの行動に対する環境中の他のエージェントの反応及び互いに対する反応を考慮に入れる。衝突確率に加えて、システムは、物体の相対重要度を反映したコスト等、衝突確率から独立した物体固有のコストを割り当ててもよい。例えば、人間との衝突するコストには、木と衝突するコストよりもはるかに高い値を割り当ててもよい。
【0006】
例えば、一次エージェントのゴールが環境中の動的物体との衝突回避である場合、システムは、エッジが1つ又は複数の動的物体との比較的高い衝突確率を有するとき、比較的大きい正の値を有する重みを計画グラフの当該エッジに割り当てる。システムは、エッジが環境中の1つ又は複数の動的物体との比較的低い衝突確率を有する場合、比較的小さい正の値を有する重みを計画グラフの当該エッジに割り当てる。システムは、次に、一次エージェントが動作する環境中の1つ又は複数の動的物体との衝突確率が比較的低い、結果として生成された計画グラフ中のパスを識別する最適化を実行する。システムは、次に、任意に、この最適化の少なくとも一部に基づいて、一次エージェントのアクチュエータシステムに、そのような動的物体との衝突確率が比較的低い運動計画を実施させる。
【0007】
また、例えば、一次エージェントのゴールが環境中の動的物体との衝突である場合、システムは、エッジが1つ又は複数の動的物体との比較的高い衝突確率を有するとき、比較的低い正の値を有する重みを計画グラフの当該エッジに割り当てる一方、エッジが環境中の1つ又は複数の動的物体との比較的低い衝突確率を有するとき、比較的高い正の値を有する重みを計画グラフの当該エッジに割り当てる。システムは、次に、一次エージェントが動作する環境中の1つ又は複数の動的物体と衝突する可能性が比較的高い、結果として生成された計画グラフ中のパスを識別する最適化を実行する。システムは、次に、任意に、この最適化の少なくとも一部に基づいて、一次エージェントのアクチュエータシステムに、そのような動的物体と衝突する可能性が比較的高い運動計画を実施させる。
【0008】
開示される実装形態では、格子中の各エッジが「衝突なし」と初期化される計算戦略がある。他のエージェント、例えば動的物体の意図がサンプリングされる。例えば、エージェントの意図を、単純な軌道ではなく、潜在ポリシー又はゴールのモデリングとして扱う各エージェントの挙動モデルを作成する。潜在ポリシー又はゴールは、エージェントが他のエージェントの軌道に対してどのように反応するかを決定するためにサンプリングすることができる形態であってもよい。各エージェントの意図は、軌道tを提供し、軌道の集合Sを生成する。S中の各サンプル特徴軌道tについて、tと衝突する格子中のエッジが特定され(これは、並列に行われてもよい)、エッジのコストは、衝突確率を反映するように増分される(例えば、軌道の10%がエッジEと衝突する場合、Eの衝突確率は、10%である)。(確率的衝突のコスト項を含む1つ又は複数のコスト関数の適用後に)最小コスト経路検索が実行されて、計画を見つける。エッジのコストは、エッジの衝突確率の線形関数である必要はない。
【0009】
一次エージェントのゴールが特定の動的物体との衝突回避である場合、運動プランナは、一次エージェントが動作する環境中のそのような動的物体と衝突する可能性が比較的低い一次エージェントの運動計画(例えば、移動ルート)を提供する、結果として生成された計画グラフ中のパスを識別する最適化を実行する。システムは、次に、この最適化の少なくとも一部に基づいて、一次エージェント(例えば、自律車両)のアクチュエータシステムに、1つ又は複数の物体と衝突する可能性が比較的低い運動計画を実施させる。
【0010】
一次エージェントのゴールが動的物体との衝突である場合、運動プランナは、一次エージェントが動作する環境中のそのような動的物体と衝突する可能性が比較的高い一次エージェントの運動計画(例えば、移動ルート)を提供する、結果として生成された計画グラフ中のパスを識別する最適化を実行する。システムは、次に、この最適化の少なくとも一部に基づいて、一次エージェント(例えば、自律車両)のアクチュエータシステムに、1つ又は複数の物体と衝突する可能性が比較的低い運動計画を実施させる。
【0011】
計画グラフを介して運動計画を実行するプロセッサベースのシステムにおける動作の運動計画方法が記載され、各計画グラフは、複数のノード及びエッジをそれぞれ含み、各ノードは、時間と、一次エージェントの状態を特徴付ける変数とを暗黙的又は明示的に表し、一次エージェントは、1つ又は複数の他のエージェントを含む環境中で動作し、各エッジは、ノード対間の遷移を表す。本方法は、第1の計画グラフ中の現在のノードについて、1つ又は複数の他のエージェントの少なくとも1つの実際の又は将来の軌道をそれぞれ表す軌道の集合中の各軌道について、エッジの何れかが軌道と衝突する場合、第1の計画グラフの何れのエッジ軌道と衝突するかを特定することと、コスト関数をエッジの1つ又は複数に適用して、特定された衝突又は衝突の不在の少なくとも一方を反映することと、第1の計画グラフ中の現在のノードに第1の計画グラフの単一のエッジにより直接結合される第1の計画グラフ中の任意のノードである幾つかの候補ノードのそれぞれについて、現在のノードから直接候補ノードを通過し、その後、第1の計画グラフ内のゴールノードに至る現在のノードから第1の計画グラフ中のゴールノードへの最小コストパスを、対応するパスに沿った候補ノードとゴールノードとの間の幾つかの介在ノードを有するか有しない状態で見つけることと、軌道の集合の軌道に関して、候補ノードのそれぞれの最小コストパスを見つけた後、候補ノードのそれぞれについて、全ての軌道にわたる候補ノードに対して各最小コストパスに関連付けられた最小コストの少なくとも一部に基づいて値を計算することと、計算された値の少なくとも一部に基づいて、候補ノードの1つを選択することと、を含むものとして要約できる。
【0012】
コスト関数をエッジの1つ又は複数に適用して、特定された衝突又は衝突の不在の少なくとも一方を反映することは、少なくとも1つの軌道と衝突すると特定されたエッジについて、当該エッジのコストを比較的高い大きさに増大させて、特定された衝突を反映させることを含み、比較的高い大きさは、少なくとも1つの他のエッジについて衝突の不在を反映する比較的低い大きさよりも比較的高くできる。
【0013】
コスト関数をエッジの1つ又は複数に適用して、特定された衝突又は衝突の不在の少なくとも一方を反映することは、少なくとも1つの軌道と衝突しないと特定されたエッジについて、当該エッジのコストを比較的高い大きさに増大させて、特定された衝突の不在を反映させることを含み、比較的高い大きさは、少なくとも1つの他のエッジについて衝突を反映する比較的低い大きさよりも比較的高くできる。
【0014】
本方法は、環境中の他のエージェントの少なくとも1つについて、サンプリングして他のエージェントの将来の軌道を特定することと、他のエージェントの特定された実際の又は将来の軌道から軌道の集合を形成することと、を更に含むことができる。
【0015】
本方法は、第1の計画グラフの単一のエッジにより第1の計画グラフ中の現在のノードに直接結合される第1の計画グラフ中の任意のノードである候補ノードに基づいて、第1の計画グラフの他のノードから第1の計画グラフ中の候補ノードを選択することを更に含み得る。
【0016】
候補ノードのそれぞれについて、全ての軌道にわたる候補ノードに対して各最小コストパスに関連付けられたコストの少なくとも一部に基づいて値を計算することは、現在のノードから、候補ノードと、存在する場合には介在ノードの全てを経由して前記ゴールノードまで延びる各最小コストパスに関連づけられたコストの平均値を計算することを含むことができる。
【0017】
計算された値の少なくとも一部に基づいて候補ノードの1つを選択することは、計算された値の全てのうちで最小の値を有する候補ノードの1つを選択することを含むことができる。
【0018】
本方法は、選択された1つの候補ノードに基づいて、一次エージェントの軌道を更新することを更に含むことができる。
【0019】
本方法は、コスト関数をエッジに適用して特定された衝突を反映する前に、第1の計画グラフを初期化することを更に含むことができる。第1の計画グラフを初期化することは、第1の計画グラフ中の各エッジについて、環境中の幾つかの静的物体のそれぞれに対するエッジの衝突評価を実行して、存在する場合に、エッジと静的物体との間の衝突を識別することを含むことができる。第1の計画グラフを初期化することは、静的物体の少なくとも1つと衝突すると評価される各エッジについて、コスト関数を当該エッジに適用して評価された衝突を反映するか、又は、第1の計画グラフから当該エッジを削除することを含むことができる。第1の計画グラフを初期化することは、第1の計画グラフ中の各ノードについて、ノードからゴールノードへのコストを計算することと、計算されたコストをそれぞれのノードに論理的に関連付けることと、を含むことができる。
【0020】
本方法は、候補ノードの選択された1つを第1の計画グラフ中の新しい現在のノードとして割り当てることと、第1の計画グラフ中の新しい現在のノードについて、1つ又は複数の他のエージェントの少なくとも1つの実際の又は将来の軌道を表す軌道の集合中の各軌道について、エッジの何れかが軌道と衝突する場合、第1の計画グラフの何れのエッジが軌道と衝突するかを特定することと、コスト関数をエッジの1つ又は複数に適用して、特定された衝突又は衝突の不在の少なくとも一方を反映することと、第1の計画グラフ中の新しい現在のノードに第1の計画グラフの単一のエッジにより直接結合された第1の計画グラフ中の任意のノードである第1の計画グラフ中の幾つかの新しい候補ノードのそれぞれについて、第1の計画グラフ内の新しい現在のノードから直接新しい候補ノードを通過し、その後、第1の計画グラフ内のゴールノードに至る新しい現在のノードからゴールノードへの最小コストパスを、対応するパスに沿った新しい候補ノードとゴールノードとの間の幾つかの介在ノードを有するか有しない状態で見つけることと、軌道の集合の軌道に関して、新しい候補ノードのそれぞれの最小コストパスを見つけた後、新しい候補ノードのそれぞれについて、全ての軌道にわたる新しい候補ノードに対して各最小コストパスに関連付けられたコストの少なくとも一部に基づいて値を計算することと、計算された値の少なくとも一部に基づいて、新しい候補ノードの1つを選択することと、を含むことができる。
【0021】
計画グラフを介して運動計画を実行するプロセッサベースのシステムが記載され、各計画グラフは、複数のノード及びエッジを含み、各ノードは、時間と、一次エージェントの状態を特徴付ける変数とを暗黙的又は明示的に表し、一次エージェントは、1つ又は複数の他のエージェントを含む環境中で動作し、各エッジは、ノードのそれぞれの対間の遷移を表す。本システムは、少なくとも1つのプロセッサと、プロセッサが実行可能な命令又はデータの少なくとも1つを記憶する少なくとも1つの非一時的プロセッサ可読媒体と、を含むものとして要約でき、プロセッサが実行可能な命令又はデータの少なくとも1つは、少なくとも1つのプロセッサによって実行されると、少なくとも1つのプロセッサに、先に要約された方法の何れかを実行させる。
【0022】
状態を表すノードと、状態間の遷移を表すエッジと、を有するグラフを利用する運動計画システムにおける動作の方法が記載される。本方法は、少なくとも1つのプロセッサが、第1のグラフ中の現在のノードに対して利用可能な次のノードのそれぞれについて、現在のノードから次のノードを経由してゴールノードに到達するための代表コストを算出することと、少なくとも1つのプロセッサが、次のノードのそれぞれについて計算された代表コストに基づいて、次のノードを選択することと、少なくとも1つのプロセッサが、選択された次のノードの少なくとも一部に基づいて、移動の命令をすることと、を含み、代表コストが、環境中の1つ又は複数のエージェントのそれぞれの非決定的挙動に基づいて評価された環境中の1つ又は複数のエージェントとの衝突の確率に鑑みて、次のノードを経由した現在のノードからゴールノードまでの利用可能なパスのそれぞれに関連付けられた代表コストを反映しており、エージェントが、位置、速度、軌道、移動パス、又は形状のうちの1つ又は複数を経時変化させることができるものとして要約できる。
【0023】
次のノードを経由して現在のノードからゴールノードに到達するための代表コストを計算することは、次のノードを経由した現在のノードとゴールノードとの間の将来のパスについて、将来のパスに沿った現在のノードとゴールノードとの間の各エッジについて、代表コストを特定することと、各エッジに対して特定した代表コストを、将来のパスに沿った現在のノードとゴールノードとの間の各エッジに割り当てることと、割り当てられ特定された代表コストの少なくとも一部に基づいて、次のノードを経由した現在のノードとゴールノードとの間の将来のパスからの次のノードのための最小コストパスを特定することと、特定された最小コストパスを表す値を次のノードに割り当てることと、を含むことができる。
【0024】
割り当てられ特定された代表コストの一部に基づいて、次のノードを経由した現在のノードとゴールノードとの間の将来のパスからの次のノードの最小コストパスを特定することは、現在のノードから次のノードに移動するコストを含む最小コストパスを特定することを含むことができる。
【0025】
将来のパスに沿った現在のノードとゴールノードとの間の各エッジについて代表コストを特定することは、将来のパスに沿った現在のノードとゴールノードとの間の各エッジについて、環境中の1つ又は複数のエージェントのそれぞれの非決定的挙動を表す1つ又は複数の確率関数に基づいて、環境中の1つ又は複数のエージェントとの衝突のリスクを評価することを含むことができる。
【0026】
環境中の1つ又は複数のエージェントのそれぞれの非決定的挙動を表す1つ又は複数の確率関数に基づいて、環境中の前記1つ又は複数のエージェントとの衝突のリスクを評価することは、将来のパスに沿った次のノードと各後続ノードとの間の各エッジによって表される一連の行動に鑑みて、環境中の1つ又は複数のエージェントのそれぞれの非決定的挙動を表す確率関数をサンプリングすることを含むことができる。
【0027】
環境中の1つ又は複数のエージェントのそれぞれの非決定的挙動を表す1つ又は複数の確率関数に基づいて、環境中の1つ又は複数のエージェントとの衝突のリスクを評価することは、現在のノードへの将来のパスに沿った次のノードと各後続ノードとの間の各エッジによって表される一連の行動に鑑みて、環境中の1つ又は複数のエージェントのそれぞれの非決定的挙動を表す確率関数をサンプリングすることを含むことができ、現在のノードは、衝突のリスクの評価中に到達される将来のパスに沿った更なるノードである。
【0028】
環境中の1つ又は複数のエージェントのそれぞれの非決定的挙動を表す1つ又は複数の確率関数に基づいて、環境中の前記1つ又は複数のエージェントとの衝突のリスクを評価することは、エージェントのそれぞれについて、エージェントの非決定的挙動を表す確率関数を繰り返しサンプリングすることを含むことができる。それぞれのエージェントの非決定的挙動を表す確率関数を繰り返しサンプリングすることは、複数の繰り返しについて確率関数を繰り返しサンプリングすることを含むことができ、繰り返しの総数は、命令を発生させなくてはならなくなる前に利用可能な時間量の少なくとも一部に基づいている。
【0029】
環境中の1つ又は複数のエージェントのそれぞれの非決定的挙動を表す1つ又は複数の確率関数に基づいて、環境中の1つ又は複数のエージェントとの衝突のリスクを評価することは、エージェントのそれぞれについて、将来のパスに沿った次のノードと各後続ノードとの間の各エッジによって表される一連の行動に鑑みて、環境中の1つ又は複数のエージェントのそれぞれの非決定的挙動を表す確率関数を繰り返しサンプリングすることを含むことができる。
【0030】
環境中の1つ又は複数のエージェントのそれぞれの非決定的挙動を表す1つ又は複数の確率関数に基づいて、環境中の1つ又は複数のエージェントとの衝突のリスクを評価することは、エージェントのそれぞれについて、現在のノードへの将来のパスに沿った次のノードと各後続ノードとの間の各エッジによって表される一連の行動に鑑みて、環境中の1つ又は複数のエージェントのそれぞれの非決定的挙動を表す確率関数を繰り返しサンプリングすることを含むことができ、現在のノードは、衝突のリスクの評価中に到達される、将来のパスに沿った更なるノードである。衝突のリスクを評価することは、将来のパスの移動のシミュレーションを含むことができる。
【0031】
環境中の1つ又は複数のエージェントのそれぞれの非決定的挙動を表す1つ又は複数の確率関数に基づいて、環境中の1つ又は複数のエージェントとの衝突のリスクを評価することは、専用リスク評価ハードウェアが、少なくとも環境中の1つ又は複数のエージェントのそれぞれの確率的に特定された軌道に基づいて、衝突のリスクを評価することを含むことができ、代表コストは、評価された衝突のリスクの少なくとも一部に基づいている。
【0032】
環境中の1つ又は複数のエージェントのそれぞれの非決定的挙動を表す1つ又は複数の確率関数に基づいて、環境中の1つ又は複数のエージェントとの衝突のリスクを評価することは、環境中のエージェントの少なくとも二次エージェントの非決定的挙動を表す1つ又は複数の確率関数に基づいて、環境中の1つ又は複数のエージェントとの衝突のリスクを評価することを含むことができ、エージェントの一次エージェントは、運動計画が実行されているエージェントである。
【0033】
本方法は、次のノードを経由して現在のノードからゴールノードに到達するための代表コストを計算する前に第1のグラフを初期化することを更に含むことができる。第1のグラフを初期化することは、静的衝突評価を実行して、環境中の1つ又は複数の静的物体との衝突を識別することと、第1のグラフ中の各ノードについて、各ノードからゴールノードに到達するためのコストを計算することと、第1のグラフ中の各ノードについて、ゴールノードに到達するための計算されたコストを各ノードに論理的に関連付けることと、を含むことができる。
【0034】
状態を表すノードと状態間の遷移を表すエッジとを有するグラフを利用する運動計画を実行するプロセッサベースのシステムが記載される。本システムは、少なくとも1つのプロセッサと、プロセッサが実行可能な命令又はデータの少なくとも1つを記憶する少なくとも1つの非一時的プロセッサ可読媒体とを含むものとして要約でき、プロセッサが実行可能な命令又はデータの少なくとも1つは、少なくとも1つのプロセッサによって実行されると、少なくとも1つのプロセッサに、上記方法の何れかを実行させる。
【0035】
状態を表すノードと、状態間の遷移を表すエッジとを有するグラフを利用して、一次エージェントの運動計画を生成する運動計画システムにおける動作の方法が記載される。本方法は、ステップカウンタTを開始値に初期化する(T=0)ことと、第1のグラフを初期化することと、シミュレーションを実行することとを含むものとして要約でき、シミュレーションは、第1のグラフ中の現在のノードNにおいて開始して、且つ第1のグラフ中のゴールノードGではない間、1つ又は複数のサンプリングの繰り返しについて、環境中の1つ又は複数の二次エージェントの各二次エージェントについて、ステップカウンタがインクリメントしたとき(T+1、すなわち、次のステップ)に前記二次エージェントがとる行動を、前記ステップカウンタの開始値から現在値までに一次エージェント及び1つ又は複数の二次エージェントによってとられた行動を表す確率関数からサンプリングすることと、次の行動と衝突する第1のグラフのエッジを特定することと、次の行動と衝突するエッジについて、コスト関数をエッジに適用して、衝突条件の存在を反映することと、現在のノードに直接接続されるノードの集合のうちの第1のグラフ中の各ノードについて、現在のノードに直接接続されるノードを経由し、1つ又は複数の将来のパスを経由して現在のノードからゴールノードまで1つ又は複数のパスを移動するための最小コストパスを表す値を計算することと、別のサンプリングの繰り返しを実行するか否かを決定することと、別のサンプリングの繰り返しを実行しないと決定した場合、現在のノードに直接接続されるノードの集合から、最小コストを有する、ノードの集合のノードの1つを選択することと、ステップカウンタをインクリメントする(T=T+1)ことと、シミュレーションがゴールノードにおけるものであるか否かを決定することと、シミュレーションがゴールノードにおけるものではない場合、一次エージェントに命令することなく、選択されたノードを新しい現在のノードとして設定し、シミュレーションを継続することと、シミュレーションがゴールノードにおけるものである場合、現在のノードに直接接続されるノードの集合から、最小コストを有するノードを選択することと、最小コストを有する選択されたノードの識別情報を提供して、一次エージェントの移動を命令することとを含む。
【0036】
前記ステップカウンタがインクリメントしたときに前記二次エージェントがとる行動を、前記ステップカウンタの前記開始値から現在値までに前記一次エージェント及び前記1つ又は複数の二次エージェントによってとられた行動を表す確率関数からサンプリングすることは、ゴールノードへのルートに沿った、現在のノードに直接接続されたノードと各後続ノードとの間の各エッジによって表される一次エージェントによってとられる一連の行動に鑑みて、環境中の1つ又は複数の二次エージェントのそれぞれの非決定的挙動を表す確率関数をサンプリングすることを含み得る。
【0037】
各エッジによって表される一連の行動に鑑みて、環境中の1つ又は複数のエージェントのそれぞれの非決定的挙動を表す確率関数をサンプリングすることは、エージェントのそれぞれについて、エージェントの非決定的挙動を表す確率関数を繰り返しサンプリングすることを含むことができる。
【0038】
一次エージェントは、一次自律車両とできる。本方法は、一次自律車両が動作する環境を表す知覚情報を受信することと、一次自律車両により生成された運動計画を実施することと、を更に含むことができる。知覚情報を受信することは、環境中の少なくとも1つの動的物体の位置及び軌道を表す知覚情報を受信することを含むことができる。知覚情報を受信することは、運動プランナにおいて知覚情報を受信することを含むことができ、知覚情報は、一次自律車両によって搬送される1つ又は複数のセンサを介して収集され、環境中の少なくとも1つの他の車両の位置又は軌道を表す。
【0039】
本方法は、物体検出器により、1つ又は複数のセンサを介して収集された知覚情報から、少なくとも環境中の第1の動的物体を識別することを更に含むことができる。
【0040】
状態を表すノードと、状態間の遷移を表すエッジとを有するグラフを利用して、一次エージェントの運動計画を生成する運動計画システムが記載される。本運動計画システムは、少なくとも1つのプロセッサと、プロセッサにより実行可能な命令を記憶する少なくとも1つの非一時的プロセッサ可読媒体とを含むものとして要約でき、プロセッサにより実行可能な命令は、少なくとも1つのプロセッサによって実行されると、少なくとも1つのプロセッサに、上記方法の何れかを実行させる。
【0041】
図面中、同一の参照番号は、同様の要素又は動作を識別する。図面中の要素のサイズ及び相対位置は、必ずしも一定の縮尺で描かれているわけではない。例えば、種々の要素の形状及び角度は、一定の縮尺で描かれておらず、これらの要素の幾つかは、任意に拡大され、図面の見やすさを改善するように位置決めされる。更に、描かれる要素の特定の形状は、特定の要素の実際の形状に関するいかなる情報も伝達することを意図せず、単に図面にける認識のし易さのために選ばれている。
【図面の簡単な説明】
【0042】
図1】一実施形態により一次エージェント(例えば、自律車両、付属物あり又はなしのロボット等)が動作する環境の概略図である。
図2】一実施形態による、図1の環境で動作する一次エージェント(例えば、自律車両、可動付属物あり又はなしのロボット等)に関連するコンピュータシステムの機能ブロック図である。
図3】一実施形態による図2のコンピュータシステムにおける種々の構成要素間のデータフロー例を示すブロック図である。
図4A】一実施形態による、一次エージェントのゴールが、一次エージェントから逃れようとしている可能性がある図1の動的物体と衝突する場合の、図1の一次エージェントの運動計画グラフの一例である。
図4B】一実施形態による、一次エージェントのゴールが、一次エージェントから逃れようとしている可能性がある図1の動的物体と衝突する場合の、図1の一次エージェントの運動計画グラフの一例及び動的物体と衝突する、一次エージェントの計画グラフにおいて識別されたパスの一例である。
図5A】一実施形態による、一次エージェントのゴールが、一次エージェントに近づきつつある図1の動的物体との衝突回避である場合の、図1の一次エージェントの運動計画グラフの一例である。
図5B】一実施形態による、一次エージェントのゴールが、一次エージェントに近づきつつある図1の動的物体との衝突回避である場合の、図1の一次エージェントの運動計画グラフの一例及び動的物体との衝突を回避する、一次エージェントの計画グラフにおいて識別されたパスの一例である。
図6】一次エージェント(例えば、自律車両、付属物あり又はなしのロボット等)が動作でき、他のエージェントが既知の軌道を有する環境の概略図である。
図7】一実施形態による、他のエージェントの既知の軌道に基づいて特定されたコストを有する2つの候補ノードのそれぞれを通る最小コストパスの一例を示す、図6の一次エージェントの運動計画グラフの一例である。
図8A】一実施形態による、計画グラフを介して一次エージェントのパスを識別する方法を示す流れ図であり、パスは、他のエージェントの既知の軌道を考慮に入れた最小平均コストを有する候補ノードを通る。
図8B】一実施形態による、図8Aの方法における既知の軌道の集合にわたる平均が計算された各候補ノードのコストを計算するのに有用な方法を示す流れ図である。
図9】一実施形態による、一次エージェント(例えば、自律車両、付属物あり又はなしのロボット等)が動作でき、一次エージェント及び他のエージェントが独立した軌道を有する環境の概略図である。
図10】一実施形態による、現在のノードから候補ノードへの第1の最小コストパスに沿った一次エージェントの計画された移動後の、確率的モデルから計算された他のエージェントの軌道に基づいて特定された第1の最小コストパス及び第2の最小コストパスの一例を示す、図9の一次エージェントの運動計画グラフの一例である。
図11A】示される一実施形態による、ゴールへの一次エージェントの計画パス及び確率的モデルを使用して特定された他のエージェントのパスを考慮に入れた最小平均コストを有する候補ノードを通る計画グラフを介した一次エージェントのパスを識別する方法を示す流れ図である。
図11B】一実施形態による、ゴールへの一次エージェントの計画パス及び確率的モデルを使用して特定された他のエージェントのパスに基づいて各候補ノードの値を計算する、図11Aの方法において有用な方法を示す流れ図である。
図11C】一実施形態による、確率的モデルに基づいて他のエージェントのサンプリングされた次のステップからのエッジ衝突コストに基づいて、次の時間ステップにおける各候補ノードの値を特定する、図11Bの方法において有用な方法を示す流れ図である。
【発明を実施するための形態】
【0043】
以下の説明では、種々の開示される実施形態の詳細な理解を提供するために、特定の具体的な詳細が記載される。しかしながら、1又は複数のこれらの具体的な詳細がなくとも、他の方法、構成要素、材料等を用いて実施形態が実施可能であることを当業者は認識するであろう。他の場合、コンピュータシステム、アクチュエータシステム及び/又は通信ネットワークに関連する周知の構造については、実施形態の説明を不必要に曖昧にしないように詳細に示されていないか又は説明されていない。他の場合、知覚データ及び1つ又は複数の物体の立体表現の生成並びに占有グリッドの構築等の周知のコンピュータビジョンの方法及び技法について、実施形態の説明を不必要に曖昧にしないように詳細に説明されていない。
【0044】
文脈により別段のことが求められる場合を除き、本明細書及びそれに続く特許請求の範囲全体を通して、「含む(comprise)」及び「含む(comprises)」及び「含んでいる」等のその変形は、「含むが、限定されない」としてオープンで包含的な意味で解釈されるべきである。
【0045】
本明細書全体を通した「一実装形態」、「実装形態」、「一実施形態」又は「実施形態」への言及は、その実施形態と併せて説明された特定の特徴、構造又は特性が少なくとも1つの実装形態又は少なくとも1つの実施形態に含まれることを意味する。したがって、本明細書全体を通した種々の箇所における語句「一実装形態」、「実装形態」、「一実施形態において」又は「実施形態において」の出現は、必ずしも全て同じ実装形態又は同じ実施形態を指すわけではない。更に、特定の特徴、構造又は特性は、1つ又は複数の実装形態又は実施形態において任意の適した様式で組み合わせることができる。
【0046】
本明細書及び添付の特許請求の範囲で使用される場合、単数形「1つの(a)」、「1つの(an)」及び「その」は、文脈により別段のことが明らかに示される場合を除き、複数形を含む。用語「又は」は、一般に、文脈により別段のことが明らかに示される場合を除き、「及び/又は」を含む意味で利用されることにも留意すべきである。
【0047】
本明細書全体を通した「一次エージェント」又は「1つの一次エージェント」へ言及は、各運動計画が作成又は生成中であるエージェント(例えば、半又は全自律車両、可動付属物あり又はなしのロボット)を意味する。本明細書全体を通した「他のエージェント」、「別のエージェント」、「二次エージェント」又は「1つの二次エージェント」への言及は、各運動計画が作成又は生成中である一次エージェント以外のエージェント(例えば、半又は全自律車両、可動付属物あり又はなしのロボット)を意味する。幾つかの場合、運動計画の他のインスタンスがこれらの他の又は二次エージェントに対して実行されうるが、それらの運動計画は、一次エージェントのものではない。
【0048】
本明細書に提供される本開示の見出し及び要約書は、便宜上のものに過ぎず、実施形態の範囲又は意味を説明するものではない。
【0049】
図1は、一実施形態により一次エージェント(例えば、自律車両、可動付属物あり又はなしのロボット等)102が動作する動的動作環境100を示す。簡潔にするために、動的動作環境100は、本明細書では環境と呼ばれる。自律車両に関して一般に説明されるが、本明細書に記載される種々の実装形態は、ロボット又はその部分、例えば環境をナビゲートするように動作可能なロボット及び/又は1つ若しくは複数の可動付属物を有するロボットに適用可能である。
【0050】
環境は、一次エージェント(例えば、自律車両)102が動作し移動する二次元又は三次元空間を表す。一次エージェント102は、自律的若しくは半自律的(すなわち少なくとも部分的に自律的)に動作し、環境100により表される空間をルート若しくはパスに沿って移動することができる自動車、航空機、船、ドローン若しくは任意の他の車両であるか、又は、別のタイプのロボットである。環境100は、車両が動作する二次元又は三次元空間であり、図4A図5Bの運動計画グラフに関して以下で参照され、「MOTION PLANNING FOR AUTONOMOUS VEHICLES AND RECONFIGURABLE MOTION PLANNING PROCESSORS」という名称で2017年6月9日付けにて出願された国際特許出願番号PCT/US2017/036880、及び、「SPECIALIZED ROBOT MOTION PLANNING HARDWARE AND MWETHODS OF MAKING AND USING SAME」という名称で2016年1月5日付けにて出願された国際特許出願公開WO2016/122840(これらは、全体的に参照により本明細書に援用される)に記載されるような車両の「構成空間」(「C空間」と呼ばれることが多い)と異なる。構成空間は、通常、多次元(すなわち4次元以上)である。図1を参照すると、環境100は、障害物衝突領域を含むことができる。これらの障害物衝突領域は、静的物体(例えば、建物、木々、石等)又は動的物体(例えば、他の航空若しくは地上ベースの車両、人々、動物、転がっている石、鳥等)に起因し、これらは、まとめて環境100における「エージェント」又は「他のエージェント」と呼ばれる。例えば、静的物体C108は、環境100において移動しない物体を表し、環境100内の同じ空間を同時に占有しようとする場合、車両102が静的物体C108に衝突する可能性があるような衝突領域を環境100にもたらす。種々の実施形態では、図1に示されるよりも少数又は追加の静的物体が存在しうる。
【0051】
静的物体に加えて、既知/特定の軌道を移動する物体(例えば、落下するブロック、転がっている缶)、意識体(例えば、自転車運転者、歩行者、運転者、パイロット、鳥等)によりコントロールされるもの、及び、他の自律車両又はロボットの場合等の他の自律システムにより制御されるものを表すものなどの、動的物体が存在しうる。これらの動的物体に起因した運動計画についての課題は、非常に高速に運動計画を実行する能力、及び、動的物体がどのように移動するかについての不確さを分析する能力を伴う。車両102を取り巻く環境100は、高速に変化する可能性があり、車両102がそれらの変化に追いつくように運動計画を実行することが有利である。例えば、図1に示されるように、エージェント、例えば動的物体A104は、現在、車両102から離れて軌道110に沿って移動中である。しかしながら、車両102は、動的物体A104の検査、動的物体A104からの情報収集、動的物体A104との情報交換又はゲームでの動的物体A104との衝突等のために、動的物体A104の後を辿るか又は妨害することが望ましい場合がある。
【0052】
逆に、図1に示されるように、動的物体B112は、現在、車両102に向かって軌道106に沿って移動中である。車両102は、衝突することなくゴールに辿り着くか、そのような衝突による破損を回避するか、又は例えばゲームで動的物体B112との接触から逃れる等のために、動的物体B112との衝突を回避するか又は動的物体B112に近づくのを回避することが望ましい場合がある。一実施形態では、車両102のゴールは、例えば、動的物体B112が車両102と衝突する前に燃料切れになるように、動的物体B112と衝突しない時間を最大にすることである。一実施形態の例での車両102のゴールは、現在の時間と、所望の行き先に車両102が到達するか若しくは特定のゴールを達成する時間との間、又は、現在の時間と、動的物体B112が燃料切れになるまでの間に、動的物体B112と衝突する確率を最小にすることである。環境100には、図1に示されるよりも少数又は追加の動的物体が存在しうる。また、環境は、幾つかの場合、車両102の範囲に対応する境界を有することがあり、境界は、少なくとも部分的に、現在の燃料又は車両102が利用可能なエネルギーに依存しうる。
【0053】
図1は、代表的な環境100を示すが、典型的な環境は、他の有人車両及び自律車両に対応する物体並びに種々の他の天然又は人工の静的及び動的物体及び障害物を含め、多くの追加のエージェントを含みうる。本明細書で教示される概念は、示されるよりもエージェントが多い環境でも同様に利用できる。
【0054】
図2及び以下の記載は、種々の運動計画システム及び方法を実現しうるコンピュータシステム200の形態の適したコントローラの概説を提供する。
【0055】
必須ではないが、実施形態の多くは、コンピュータ又はプロセッサ可読媒体に記憶され、コンピュータ又はプロセッサによって実行されるプログラムアプリケーションモジュール、オブジェクト又はマクロ等のコンピュータにより実行可能な命令、並びに、衝突評価及び運動計画動作を実行できる専用車両運動計画ハードウェアに一般的に関連して説明される。そのような運動計画動作は、計画グラフのエッジに対して衝突評価を実行すること、衝突確率を特定し設定すること、最適化を実行して計画グラフ内の最小コストパスを見つけることにより、環境中の物体との衝突を回避又は衝突させる計画グラフ中のパスを識別し、そのような運動パスを実現することを含む。
【0056】
運動プランナによる運動計画は、通常、衝突検出と最小コストパスの発見とを含む。衝突検出と最小コストパスの発見のいずれか又は両方は、例えば、1つ又は複数のフィールドプログラマブルゲートアレイ(FPGA)に実装することができ、有利には容易な再構成可能性を可能にする。衝突検出と最小コストパスの発見のいずれか又は両方は、例えば、1つ又は複数の特定用途向け集積回路(ASIC)に実装することができ、有利にはいくらかの再構成可能性を可能にしながら高速処理を可能にする。
【0057】
車両(例えば、自動車両若しくはロボット)又は環境中の物体(例えば、静的若しくは動的障害物)の何れであれ、エージェントを表す場合、エージェントの表面は、ボクセル(3Dピクセル)又はポリゴン(多くの場合、三角形)のメッシュとして表すことができる。空間の各離散化領域は、3D(立体)ピクセルと同等の「ボクセル」と呼ばれる。幾つかの場合、物体を代わりにボックス(矩形プリズム)として表すことが有利である。物体はランダムな形状を有しないため、ボクセルがどのように編集されるかに相当量の構造があり、物体中の多くのボクセルは、3D空間において互いに直接隣にある。したがって、物体をボックスとして表すのに必要なのは、はるかに少数のビットのみとできる(すなわち、ボックスの2つの対向する隅のx、y、z座標のみとできる)。また、ボックスの交点テストを行うことは、ボクセルに対して交点テストを行うことと複雑性の点では同等である。物体の3D表面を表すために、種々の他のデータ構造、例えばユークリッド距離場、バイナリ空間パーテーションツリー等が使用可能である。
【0058】
一実施形態では、衝突評価は、まず、動的物体ボクセル(又はボックス)の全てをプロセッサ(例えば、FPGA、ASIC)にストリーミングすることにより実行される。次に、車両102のロードマップの各エッジのエッジ情報がロードマップ専用のメモリからストリーミングされる。各エッジは、ある状態から、そのエッジによって表される別の状態へのロードマップにおける遷移を行う際、車両102により掃引される3D空間中の容積に対応する幾つかの数のボクセル(又はボックス)を有する。ある状態から、そのエッジによって表される別の状態へのロードマップにおける遷移を行う際、車両102により掃引されるボクセル又はボックスは、ロードマップの各エッジについてメモリに記憶される。各エッジボクセル(又はボックス)について、エッジの掃引容積からストリーミングされる場合、障害ボクセル(又はボックス)の何れかと衝突するとき、システム200は、ロードマップにおいてそのエッジとの衝突を特定する。例えば、エッジボクセルがロードマップのエッジxの掃引容積からストリーミングされる場合、障害ボクセル(又はボックス)の何れかと衝突するとき、システムは、エッジxとの衝突を書き留める。この方法は、衝突評価が計画グラフの全てのエッジに対して並列で実行される他の設計と比較して、衝突評価にはるかに多数のロードマップを使用できるようにするため、衝突評価技術を改良する。特に、これは、チップ回路に記憶することができる限られた量のロードマップに関する他の設計の欠点を解消するのに役立つ。しかしながら、本明細書に記載される衝突評価法を使用する場合、オンチップ記憶は、多くの場合、全ての障害物ボックスを記憶するのに十分過ぎるほどである(しかし、ボクセルを使用する場合に十分さの程度が低くなりうる)。これは、大きいロードマップ及び/又は多数のロードマップをより安価なオフチップ記憶装置、例えばダイナミックランダムアクセスメモリ(DRAM)に記憶する能力を提供する。
【0059】
種々の実装形態では、このような動作は、全体的に、ハードウェア回路で実行できるか、又はシステムメモリ214等のメモリ記憶装置に記憶され、1つ又は複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、グラフィックス処理ユニット(GPU)プロセッサ、プログラムドロジックコントローラ(PLC)、電気的に消去可能な読み取り専用メモリ(EEPROM)又はハードウェア回路と、メモリ記憶装置に記憶されるソフトウェアとの組合せ等の1つ又は複数のハードウェアプロセッサ212aにより実行されるソフトウェアとして実行できる。例えば、最適化を実行して、計画グラフ内の最小コストパスを見つけることにより、環境中の物体との衝突を回避するか又は衝突させる計画グラフ中のパスを識別することは、最適化部292により実行できる。一実施形態の例では、パス最適化部292がハードウェアを用いて実現される場合、計画グラフのトポロジは、ハードウェアユニットの再構成可能ファブリックにマッピングされて、最小コストパスを高速に特定することを可能にする。このマッピングは、論理近傍のアドレス及びエッジ重みを有する各物理ノードをプログラムすることを含む。これにより、アーキテクチャを異なる計画グラフトポロジに再構成可能とできる。他の実装形態は、FPGAに実装されるミニプロセッサを使用できる。
【0060】
代替の実施形態では、衝突評価は、再構成可能な衝突検出アーキテクチャ並びに「MOTION PLANNING FOR AUTONOMOUS VEHICLES AND RECONFIGURABLE MOTION PLANNING PROCESSORS」という名称で2017年6月9日付けにて出願された国際特許出願PCT/US2017/036880、及び、「SPECIALIZED ROBOT MOTION PLANNING HARDWARE AND MWETHODS OF MAKING AND USING SAME」という名称で2016年1月5日付けにて出願された国際特許出願公開WO2016/122840に記載される他の実施形態等の専用運動計画ハードウェアにより、車両102に生成された計画グラフの各エッジに対して並列で実行できる。例えば、そのような専用運動計画ハードウェアの全て又は部分は、運動プランナ280及び衝突評価器288に組み込むことができるか、又はそれらの一部を形成できる。また、知覚、計画グラフ構築、衝突検出及びパスサーチの種々の関連する態様の実現も、「MOTION PLANNING FOR AUTONOMOUS VEHICLES AND RECONFIGURABLE MOTION PLANNING PROCESSORS」という名称で2017年6月9日付けにて出願された国際特許出願PCT/US2017/036880、及び、「SPECIALIZED ROBOT MOTION PLANNING HARDWARE AND MWETHODS OF MAKING AND USING SAME」という名称で2016年1月5日付けにて出願された国際特許出願公開WO2016/122840に記載されている。図示の実施形態及び他の実装形態は、ロボット、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベース又はプログラマブルコンシューマ電子機器、パーソナルコンピュータ(PC)、ネットワーク化されたPC、ミニコンピュータ、メインフレームコンピュータ等を含め、他のシステム構成及び/又は他の計算システム構成を用いて実現することも可能であることを当業者であれば理解するであろう。実装形態又はその一部(例えば、設計時、構成時、事前実行時)は、タスク又はモジュールが、通信ネットワークを通してリンクされたリモート処理デバイスにより実行される分散計算環境で実現することができる。分散計算環境では、プログラムモジュールは、ローカル及びリモートメモリ記憶装置の両方又は媒体に配置できる。しかしながら、車両102に効率的な計算能力を持たせることは、変化する環境に車両がリアルタイムに応答できるようにするために重要である。この問題に対して一般的に展開される解決策は、性能及び電力の点の両方で失敗している。この問題に対して一般的に展開される解決策は、高い自由度の車両及びロボットが環境にリアルタイムに応答できるようにするには遅すぎ、幾つかのCPU又はGPUへの給電でシステムに負担を掛ける。この問題を解決するために、図2の実装形態の例に示されるコンピュータシステム200は、FPGA290等の完全にゴール再設定可能な衝突検出マイクロアーキテクチャを使用する車両102に搭載された衝突評価器288を有する運動プランナ280を含む。しかしながら、種々の代替の実施形態では、ASICアーキテクチャ等のプログラマブル論理ブロックのアレイ及び再構成可能な相互接続の階層を含む他のプログラマブル衝突検出マイクロアーキテクチャを使用することもできる。プログラミングフェーズを通して、衝突検出マイクロアーキテクチャは、任意の車両計画問題に適用できる。衝突評価器288は、特定の物体との衝突回避を達成し、及び/又は、他の物体との衝突を探し求めるものであってもよい。衝突評価器288としての再構成可能プロセッサの使用は、効果的に、設計が1つの車両/ロードマップ対に専用であるという制限をなくす。最小コストパスモジュールは、例えば、分散ベルマン-フォードストラテジを使用して最小コストパスの高速計算を可能にする。
【0061】
上述したように、幾つかの事前処理はランタイムの前に実行でき、したがって、幾つかの実施形態では、これらの動作は、通信ネットワークを通し、ネットワークインターフェース260を介して車両200にリンクされるリモート処理デバイスにより実行できる。例えば、プログラミングフェーズでは、関心のある問題に向けてプロセッサを構成できるようにする。そのような実施形態では、広範な事前処理がランタイム計算を避けるために利用される。ロードマップ中のエッジにより表されるある状態から別の状態へのロードマップにおける遷移を行う際、車両102により掃引される3D空間中のボリュームに関する予め計算されたデータは、運動プランナ280の衝突評価器288に送信される。ロードマップのトポロジは、FPGA290等の計算ユニットの再構成可能ファブリックにマッピングされて、最小コストパスの高速な特定を可能にすることもできる。マッピングステップは、論理近傍のアドレス及びエッジ重みを有する計算ユニットの再構成可能ファブリックの各物理ノードをプログラムすることを含む。これにより、アーキテクチャを異なるロードマップトポロジに向けることができる。実行時フェーズ中、センサ282は、知覚データを運動プランナ280に送信する。知覚データは、現在の環境に存在するボクセル又はボックスのストリームである(より詳細に後述する)。衝突評価器288は、何れの運動が衝突を含む可能性が高く、何れの運動が衝突を含む可能性が低いかを計算し、完了すると、結果は、最小コストパスを特定するためにプラン最適化部292により使用される。これは、有利には、センサ282又は他の外部構成要素とそれ以上通信せずに行うことができる。運動プランナ280は、環境中の特定の物体との衝突回避又は衝突探求という車両102のゴールに応じて、ランタイム中、環境に基づいて環境に従ってロードマップに関連するコストを変更する。次に、運動プランナ280が実行され、生成されたパスをアクチュエータシステム266に返す。図2は、運動プランナ280と、システムメモリ214及びディスクドライブ224に関連するコンピュータ可読媒体226等の1つ又は複数の関連する非一時的機械可読記憶媒体とを含む、自動車両102向け等のコンピュータシステム200を示す。関連する非一時的コンピュータ又はプロセッサ可読記憶媒体は、システムメモリ214及びディスクドライブ224に関連するコンピュータ可読媒体226を含み、システムバス216等の1つ又は複数の通信チャネルを介して運動プランナ280に通信可能に接続される。システムバス216は、メモリコントローラを有するメモリバス、周辺機器バス及び/又はローカルバスを含み、任意の既知のバス構造又はアーキテクチャを利用することができる。1つ又は複数のセンサ282、物体検出器284、物体挙動予測器、286及びアクチュエータシステム266もシステムバス216を介して運動プランナ280に通信可能に接続される。そのような構成要素の1つ又は複数は、追加又は代替として、1つ又は複数の他の通信チャネル、例えば1つ又は複数の並列ケーブル、直列ケーブル又は高速通信可能な無線ネットワークチャネル、例えばユニバーサルシリアルバス(「USB」)3.0、PCIエクスプレス(PCIe)又はThunderbolt(登録商標)を介して互いに通信し得る。
【0062】
コンピュータシステム200は、ネットワークインターフェース260を介してコンピュータシステム200の種々の構成要素に直接通信可能に接続されるか又間接的に通信可能に接続されるリモートシステム(図示せず)、例えばデスクトップコンピュータ、ラップトップコンピュータ、ウルトラポータブルコンピュータ、タブレットコンピュータ、スマートフォン、ウェアラブルコンピュータに通信可能に接続することもできる。実装形態では、コンピュータシステム200自体又はその一部は、リモートであってもよい。そのようなリモートシステムは、コンピュータシステム200及びコンピュータシステム200内の種々の構成要素のプログラム、構成、制御又は他の方法でのインターフェース又はデータ入力を行うために使用できる。このような接続は、例えば1つ又は複数の広域ネットワーク(WAN)(例えば、インターネット)といった、インターネットプロトコルを使用した1つ又は複数の通信チャネルを通じたものとできる。上述したように、事前ランタイム計算(例えば、初期ロードマップ生成)は、車両102とは別個のシステム又は他のタイプのロボットにより実行できる一方、変化する動作環境100にリアルタイム又は準リアルタイム(マイクロ秒)に反応するようシステムが車両の速度を更新又は変更できることが重要であるため、ランタイム計算は、車両102で実行される。
【0063】
図2に示される種々のブロックの構造及び動作の幾つかの態様は、「MOTION PLANNING FOR AUTONOMOUS VEHICLES AND RECONFIGURABLE MOTION PLANNING PROCESSORS」という名称で2017年6月9日付けにて出願された国際特許出願PCT/US2017/036880、及び、「SPECIALIZED ROBOT MOTION PLANNING HARDWARE AND MWETHODS OF MAKING AND USING SAME」という名称で2016年1月5日付けにて出願された国際特許出願公開WO2016/122840に記載されている。その結果、そのようなブロックは、本明細書に参照により援用される引用文献に鑑みて当業者により理解されるため、これ以上詳述する必要はない。
【0064】
コンピュータシステム200は、1つ又は複数の処理ユニット212a、212b(まとめて212)、システムメモリ214及びシステムメモリ214を含む種々のシステム構成要素を処理ユニット212に結合するシステムバス216を含む。処理ユニット212は、1つ又は複数の中央演算処理装置(CPU)212a、デジタル信号プロセッサ(DSP)212b、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)等の任意の論理ユニットとできる。そのようなASIC及びFPGAは、衝突評価器288のFPGA290への代替又は追加として、車両102の計画グラフのエッジに対して衝突評価を実行するために使用できる。システムメモリ214は、読み取り専用メモリ(「ROM」)218、及び、ランダムアクセスメモリ(「RAM」)220を含む。基本入出力システム(BIOS)222は、ROM218の一部を形成でき、スタートアップ中などに、コンピュータシステム200内の要素間での情報転送を補助する基本ルーチンを含む。
【0065】
コンピュータシステム200は、ディスクドライブ224を含み、ディスクドライブ224は、例えば、ハードディスクへの読み書きを行うハードディスクドライブ、フラッシュメモリデバイスへの読み書きを行うフラッシュメモリドライブ、リムーバブル光ディスクへの読み書きを行う光ディスクドライブ又は磁気ディスクへの読み書きを行う磁気ディスクドライブとできる。コンピュータシステム200は、種々の異なる実施形態では、そのようなディスクドライブの任意の組合せを含むこともできる。ディスクドライブ224は、システムバス216を介して処理ユニット212と通信できる。ディスクドライブ224は、当業者に既知のように、そのようなドライブとシステムバス216との間に接続されるインターフェース又はコントローラ(図示せず)を含む。ディスクドライブ224及びそれに関連するコンピュータ可読媒体226は、コンピュータ可読命令、データ構造、プログラムモジュール及びコンピュータシステム200の他のデータの不揮発性記憶を提供する。WORMドライブ、RAIDドライブ、磁気カセット、デジタルビデオディスク(DVD)、ベルヌーイカートリッジ、RAM、ROM、スマートカード等、コンピュータがアクセス可能なデータを記憶することができる他のタイプのコンピュータ可読媒体を利用することも可能であることを当業者であれば理解するであろう。
【0066】
オペレーティングシステム236、1つ又は複数のアプリケーションプログラム238、他のプログラム又はモジュール240及びプログラムデータ242等のプログラムモジュールは、システムメモリ214に記憶できる。アプリケーションプログラム238は、プロセッサ212に、環境100に対応する計画グラフのエッジに対する衝突評価を実行させ、計画グラフの各エッジの衝突確率を特定し設定させ、最適化を実行させて、環境100中のエージェント(例えば、動的物体B112)との衝突を回避させるか又は衝突させる計画グラフ中のパスを識別させる命令を含む。計画グラフ中のパスを識別する最適化は、計画グラフ内の最小コストパスを見つけることを含む。アプリケーションプログラム238は、プロセッサ212に、本明細書に記載されるように運動計画に従って車両102を移動させる信号をアクチュエータシステム266に送信させる命令を含む。アプリケーションプログラム238は、プロセッサ212に、本明細書及び参照により本明細書に援用される引用文献に記載される知覚の他の動作(センサ282を介する)、計画グラフ構築、衝突検出及び経路検索を実行させる1つ又は複数の機械により可読な命令を更に含む。
【0067】
アプリケーションプログラム238は、プロセッサ212に、車両102が動作する環境100を表す知覚情報をセンサ282から受信させ、運動プランナ280に、衝突評価器288の再構成可能な衝突検出アーキテクチャハードウェアを使用させて、車両102の生成された計画グラフのエッジの2つ以上のそれぞれに対して衝突評価を実行させ、生成された計画グラフの2つ以上のエッジのそれぞれについて、衝突評価に少なくとも一部に基づいて衝突確率を設定させ、最適化を実行させて、車両102が動作する環境100中の1つ又は複数の他のエージェント(例えば、動的物体A104)と衝突する可能性が比較的高い、生成された計画グラフ中のパスを識別させ、アクチュエータシステム266に、最適化の少なくとも一部に基づいて、車両102が動作する環境100中の1つ又は複数の他のエージェント(例えば、動的物体A104)と衝突する可能性が比較的高い運動計画を実施させる1つ又は複数の機械により可読な命令を更に含む。再構成可能な衝突検出アーキテクチャハードウェアは、例えば、FPGA290である。しかしながら、種々の代替の実施形態では、ASICアーキテクチャ等のプログラマブル論理ブロックのアレイ及び再構成可能な相互接続の階層を含む他のプログラマブル衝突検出マイクロアーキテクチャを使用できる。
【0068】
アプリケーションプログラム238は、プロセッサ212に、計画グラフについて、車両102が動作する環境100中の1つ又は複数の動的物体(104、112)との衝突確率の評価の少なくとも一部に基づいて、各エッジが環境100中の1つ又は複数の動的物体(104、112)との比較的低い衝突確率をそれぞれ有する場合、ゼロ以上の値を有する重みを計画グラフの各エッジに割り当てさせ、各エッジが環境100中の1つ又は複数の動的物体(104、112)との比較的高い衝突確率をそれぞれ有する場合、ゼロ未満の値を有する重みを計画グラフの各エッジに割り当てさせ、最適化を実行させて、車両102が動作する環境100中の1つ又は複数のエージェント、例えば動的物体(104、112)と衝突する可能性が比較的高い、生成された計画グラフ中のパスを識別させる1つ又は複数の機械により可読な命令を更に含む。
【0069】
アプリケーションプログラム238は、プロセッサ212に、センサ282を介して、車両102が動作する環境100を表す知覚情報を受信させ、運動プランナ280に、衝突評価器288の再構成可能な衝突検出アーキテクチャハードウェアを使用させて、計画グラフのエッジの1つ又は複数のそれぞれに対して衝突評価を実行させ、計画グラフの2つ以上のエッジのそれぞれについて、衝突評価の少なくとも一部に基づいて衝突確率を設定させ、最適化を実行させて、車両102が動作する環境100中の1つ又は複数の動的物体(例えば、動的物体B112)と衝突する可能性が比較的低いパスにより指定される、二次元又は三次元空間中の車両102の走行の最長ルートを提供する、生成された計画グラフ中のパスを識別させ、最適化の少なくとも一部に基づいて、車両102が動作する環境100中の1つ又は複数の動的物体(例えば、動的物体B112)と衝突する可能性が比較的低い運動計画を実施させる1つ又は複数の機械により可読な命令を更に含む。
【0070】
アプリケーションプログラム238は、プロセッサ212に、限定ではなく、図6図13に示されるものを含め、本明細書に記載される種々の他の方法を実行させる1つ又は複数の機械により可読な命令を更に含む。
【0071】
図2では、オペレーティングシステム236、アプリケーションプログラム238、他のプログラム/モジュール240及びプログラムデータ242は、システムメモリ214に記憶されているものとして示されているが、ディスクドライブ224の関連するコンピュータ可読媒体226に記憶することもできる。
【0072】
プロセッサ212は、1つ又は複数の中央演算処理装置(CPU)、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)等の任意の論理処理ユニットである。市販のコンピュータシステムの非限定的な例には、限定ではなく、米国Intel(登録商標)Corporationにより提供されるCeleron(登録商標)、Core、Core 2、Itanium(登録商標)及びXeonファミリのマイクロプロセッサ;米国Advanced Micro Devicesにより提供されるK8、K10、Bulldozer及びBobcatシリーズのマイクロプロセッサ:米国Apple Computer(登録商標)により提供されるA5、A6及びA7シリーズのマイクロプロセッサ;米国Qualcomm(登録商標),Inc.により提供されるSnapdragon(登録商標)シリーズのマイクロプロセッサ:並びに米国Oracle(登録商標) Corp.により提供されるSPARC(登録商標)シリーズのマイクロプロセッサがある。別記されない限り、図2に示される種々のブロックの構築及び動作は、従来の設計のものである。その結果、そのようなブロックは、当業者により理解されるため、本明細書でこれ以上詳述する必要はない。運動プランナ280の衝突評価器288の再構成可能な衝突検出アーキテクチャハードウェアは、例えば、各エッジについて、記憶機構と、論理ゲートに並列接続されて、並列線の出力の「OR」演算を実行して、衝突結果を生成する比較器とを有する「エッジモジュール」のアレイを提供するアーキテクチャ等、MOTION PLANNING FOR AUTONOMOUS VEHICLES AND RECONFIGURABLE MOTION PLANNING PROCESSORS」という名称で2017年6月9日付けにて出願された国際特許出願PCT/US2017/036880に記載されているようなアーキテクチャの1つであり得る。
【0073】
図3は、一実施形態による、図2のコンピュータシステム中の種々の構成要素間の一例のデータフロー300を示すブロック図である。一次エージェント102内に組み込まれるか、又は一次エージェント102と動作可能に通信する、カメラ、レーザセンサ機器、オーディオセンサ等の1つ又は複数のセンサ282は、知覚情報302を収集し、環境100のモデルを生成する物体検出器284にこれを送信する。物体検出器284は、環境100中の動的物体A104及び動的物体B112等のエージェントの検出された移動に関する軌道情報を抽出し、当該軌道情報308を物体挙動予測器286に送信する。軌道情報308により示される環境100中の動的物体(104、112)の現在の検出軌道に少なくとも一部に基づいて、物体挙動予測器286は、動的物体(104、112)の1つ又は複数の予測軌道を生成し、予測軌道情報306の一部としてこの情報を運動プランナ280に送信する。例えば、軌道情報308により、動的物体A104が、現在、特定の方向に向かう軌道上にあることが示される場合、物体挙動予測器286は、動的物体A104がその現在の軌道を続ける確率40%、何らかの他のことを行う確率60%と予測できる。
【0074】
種々の要因が、物体挙動予測器286による環境100中の動的物体(104、112)の予測軌道の特定に影響しうる。例えば、幾つかの実装形態では、動的物体(104、112)が環境100内の将来の移動に影響するゴールを有すると示されるか又は決定される。一例として、現在、一次エージェント102から直接離れる軌道にあることが検出された動的物体A104は、一次エージェント102から離れる(且つ離れたままである)というゴールを有すると示されるか又は決定される。したがって、物体挙動予測器286は、動的物体A104の移動を予測する際、これを考慮に入れる。他方、現在、一次エージェント102に直接向かう軌道にあることが検出された動的物体B112は、一次エージェント102と衝突するというゴールを有すると示されるか又は決定される。したがって、物体挙動予測器286は、動的物体B112の移動を予測する際、これを考慮に入れる。
【0075】
更に、他のエージェント、例えば動的物体(104、112)の移動は、一次エージェント102の軌道変更による影響を受ける。したがって、物体挙動予測器286は、動的物体(104、112)の予測軌道を特定する際、一次エージェント102の現在の軌道の、計画されたが、依然として実施又は実行されていない変更を考慮に入れ、運動プランナ280に提供される予測軌道情報306にそのような情報を含める。例えば、現在、一次エージェント102に直接向かう軌道にあることが検出された動的物体B112が、一次エージェント102と衝突するというゴールを有すると示されるか又は決定される場合、一次エージェント102が軌道を変更するとき、動的物体B112は、一次エージェント102を追いかけるような対応する変更を動的物体B112の軌道に行う可能性があることが予測される。したがって、一次エージェント102が、(一次エージェント102と衝突しようとしている)動的物体B112と衝突せずに環境100内の行き先に到達するというゴールを有する場合、運動プランナ280は、一次エージェント102が行き先に到達するように軌道を変更した場合、動的物体B112が一次エージェント102を追いかけるような対応する変更をその軌道に行う可能性があることを考慮に入れて、動的物体B112との衝突を回避する行先へのパスを計画することが可能である。
【0076】
全体的に、システムは、センサ282と、物体検出器284及び物体挙動予測器286により実行される処理との組合せを使用することにより、予測を実行して、環境100のモデルを生成する。一実装形態では、センサ282は、占有グリッドを生成する。占有グリッドとは、環境100等の環境の離散化ビューにおいて空間の何れの領域がいつ障害物を含むかを表すデータ構造である。空間の各離散化領域は、3D(立体)ピクセルと同等の「ボクセル」と呼ばれる。幾つかの場合、代わりに物体をボックス(矩形プリズム)として表すことが有利である。動的物体A104、動的物体B112及び静的物体C108を含む環境中の物体により画定される空間の領域は、そのような立体表現により表される。1つ又は複数の動的物体(例えば、動的物体A104及び動的物体B112)の立体表現及び関連する静的物体の立体表現は、物体検出器284から運動プランナ280に送信される。占有グリッドの構築については、入手可能な膨大な公開文献に記載されており、コンピュータビジョン及び検知の技術分野の当業者に既知である。
【0077】
運動プランナ280は、動的物体及び静的物体の立体表現を含む知覚データを物体検出器284から受信し、予測軌道情報を物体挙動予測器から受信する。次に、運動プランナ280は、予測軌道を考慮して予測データにおいて障害物と衝突することになる計画グラフ中の各エッジに沿った衝突確率を調整し、コスト及び衝突確率を考慮してパスを決定し、そのパスを計算システムに出力する。
【0078】
運動プランナは、運動プランナ280内の衝突評価器288の一部としてハードウェアプロセッサ及びメモリ記憶装置を含むことができる。例えば、FPGA290又はプログラマブル論理ブロックの他のアレイは、本明細書では「ロードマップ」とも呼ばれる計画グラフ(例えば、図4A図5Bを参照されたい)を記憶することができる。幾つかの実装形態では、運動プランナ280は、衝突検出を実行するFPGA290等のハードウェア衝突検出回路を含む。幾つかの実装形態では、運動プランナ280は、再構成可能な衝突検出加速を含む。ロードマップ中のエッジにより表されるある状態から別の状態へのロードマップにおける遷移を行う際、一次エージェント102により掃引される2D又は3D空間における容積に関するデータは、運動プランナ280の衝突評価器288のメモリ記憶装置に記憶することができ、それにより、運動計画中、予測軌道情報を含む知覚データが受信されると、知覚データは、衝突評価器288のハードウェアプロセッサにより、衝突評価器288のメモリ記憶装置(又はコンピュータシステム200のローカルシステムメモリ214)に記憶されたデータと比較されて、衝突を特定する。ランタイム動作中、計画グラフのエッジに、1つ又は複数の変数に基づいて情報を割り当てることができる。例えば、一次エージェント102のゴールが動的物体A104との衝突である場合、予測軌道情報306による、動的物体A104がどこに向かっているかの予測に基づいて、運動プランナ280は、動的物体A104と衝突する一次エージェント102の運動計画を生成する。これを行うために、衝突評価器288は、動的物体A104との衝突確率について計画グラフ中の全てのエッジを評価する。なお、環境100は、一次エージェント102が動作する二次元又は三次元の空間であり、図4A図5Bに表される運動計画グラフに関して以下で参照する一次エージェントの「構成空間」と異なることに留意されたい。一次エージェントの構成空間は、一次エージェントの状態を特徴付ける一次エージェント102の全ての構成の空間であり、通常、例えば4つ以上の次元を有する多次元空間である。図4A図5Bに表される計画グラフ400及び500中のエッジは、一次エージェント102の構成間の遷移を表す。計画グラフ400のエッジは、必ずしもデカルト座標における実際の移動を表す必要はないが、幾つかの実施形態では、デカルト座標における実際の移動を表すこともある。計画グラフ400のエッジは、速度変更等を含むこともできる。
【0079】
計画グラフ400及び500の各エッジは、ある状態から別の状態への一次エージェントの遷移を表し、関連する固有の又は動作のコストを有する。例えば、固有の又は動作のコストは、燃料使用、関連する行動を実行する時間、行動に関連する摩損及び/又は他の要因に関連する。各エッジには、固有の又は動作のコストに対応する初期重みが割り当てられる。
【0080】
システムは、ランタイム中、衝突評価の少なくとも一部に基づいて、環境中の動的物体(104、112)との衝突確率を表すようにエッジのコストを調整する。システムは、衝突確率に基づいて各エッジの割り当てられた初期重みを変更することにより、コストの調整を実行できる。例えば、システムは、コスト関数を各エッジに適用して、そのエッジの初期重み(すなわち固有のコストに対応する重み)に基づいて数学的演算を実行して、変更された重みを取得できる。これは、衝突確率に基づいて、割り当てられた初期重みに追加の重みを追加することにより、衝突確率係数で、割り当てられた初期重みを乗算することにより、又は衝突確率及び固有のコストに対応する初期重みを含む何らかの他の関数若しくは公式を適用することにより行われる。
【0081】
エッジに割り当てられた固有の又は動作のコストは、物体との衝突回避又は物体との衝突達成の相対的な重要度及び/又は深刻度を表す物体固有のコストを反映するようにランタイム中に調整することもできる。これらの物体特有のコストは、固有の又は動作のコストから独立しており、且つ衝突確率から独立している。例えば、人間との衝突に関連する物体特有のコストは、無生物物体との衝突に関連する物体特有のコストよりもはるかに高く設定される。
【0082】
図4A図5Bにおける説明を簡潔にするために、各エッジの固有のコストに対応する全ての初期重みは、ゼロに設定されており、衝突確率を示す追加コストを追加することにより調整されている。したがって、一次エージェント102のゴールが、環境中の動的物体(動的物体A104等)との衝突である一実装形態では、衝突確率ゼロと組み合わせた初期重み0は、エッジ重み0をもたらす一方、衝突確率が大きいほど、大きい負の値(すなわちより大きい絶対値を有する負の数)のエッジ重みになる。一次エージェント102のゴールが、環境中の動的物体(動的物体B112等)との衝突回避である別の実装形態では、衝突の確率が大きいほど、調整されたエッジ重みは、大きい正の値を有する。
【0083】
計画グラフの全てのエッジ重みが調整されると、パス最適化部292は、計画グラフに示される一次エージェント102の現在の位置から、一次エージェント102が燃料/電力切れを起こす全ての可能な最終点まで最小コストパスアルゴリズムを実行する。次に、計画グラフ中の最小(最も負の)パスが運動プランナ280により選択される。
【0084】
パス最適化部292が計画グラフ内のパスを識別すると、運動プランナは、この識別されたパス310を一次エージェント102のアクチュエータシステム266にリアルタイムに即座に送信して、一次エージェント102の種々のモータ又は移動システムへの、一次エージェント102の物理的移動を生じさせて運動計画を実施させる対応する信号を生成する。
【0085】
図4Aは、一実施形態による、一次エージェント102のゴールが、一次エージェント102を避けようとしている可能性がある図1の動的物体A104と衝突することである場合の、図1の一次エージェント102の一例の運動計画グラフ400である。計画グラフ400は、エッジにより結ばれた複数のノードを含む。例えば、ノード408b及び408cは、エッジ410aにより結ばれている。各ノードは、暗黙的又は明示的に、一次エージェントの座標空間における一次エージェント102の状態を特徴付ける時間及び変数を表す。一次エージェントの構成空間(C空間と呼ばれることが多い)は、本例では、一次エージェントの状態を特徴付ける、計画グラフ400において表される一次エージェントの構成の空間である。計画グラフ400におけるエッジは、一次エージェント102のこれらの構成間の遷移を表す。計画グラフ400のエッジは、デカルト座標における実際の移動を表さない。例えば、各ノードは、限定ではなく、一次エージェント102の現在の位置、姿勢、速度及び進行方向を含む一次エージェントの構成を表す。幾つかの実施形態では、一次エージェント102の加速度も計画グラフ400中のノードによって表される。
【0086】
計画グラフ400中の各エッジは、各ノード対間の物体102の遷移を表す。例えば、エッジ410aは、2つのノード間の一次エージェント102等の物体の遷移を表す。特に、エッジ410aは、ノード408bに関連する特定の構成における一次エージェント102の状態と、ノード408cに関連する一次エージェント102の状態との間の遷移を表す。例えば、一次エージェント102は、現在、ノード408aに関連する特定の構成とできる。ノードを互いから種々の距離を有するものとして示しているが、これは、単に例示のためであり、物理的距離に関連はなく、計画グラフ400におけるノード数に制限はない。しかしながら、計画グラフ400で使用されるノードが多くなるほど、最小コストパスを選択する際、多くのパス候補があるため、運動プランナ280は、より正確且つ精密に一次エージェント102のゴールに従って最適パスを決定することが可能である。
【0087】
一次エージェント102は、動的物体A104の検査、動的物体A104からの情報収集、動的物体A104との情報交換又はゲームでの動的物体A104との衝突等のために、動的物体A104の後を辿るか又は妨害することが望ましい場合がある。図4Aは、一次エージェント102のゴールが動的物体A104との衝突である場合、一次エージェント102のパスを識別するために、運動プランナ280により計画グラフがどのように使用されるかを示す。この時点で、運動プランナ280は、一次エージェント102が動作する環境100を表す知覚情報を受信している。上述したように、衝突検出は、ボクセル又はボックスを使用して、一次エージェント102及び動的物体A104を含む環境中の物体を運動プランナ280に対して表すことができる。しかしながら、他の物体表現を使用できることを理解されたい。
【0088】
一実装形態では、環境は、ボクセル又はボックスの3D領域に離散化される。次に、環境100中の一次エージェント102によるあらゆる運動の掃引体積と、離散化空間中のボクセル又はボックスとの間で起こりうる全ての衝突が予め計算される。そのような衝突評価の例は、「MOTION PLANNING FOR AUTONOMOUS VEHICLES AND RECONFIGURABLE MOTION PLANNING PROCESSORS」という名称で2017年6月9日付けにて出願された国際特許出願PCT/US2017/036880、及び、「SPECIALIZED ROBOT MOTION PLANNING HARDWARE AND MWETHODS OF MAKING AND USING SAME」という名称で2016年1月5日付けにて出願された国際特許出願公開WO2016/122840に記載されている。
【0089】
動的物体A104が環境100中で移動していることに起因して、運動プランナ280は、動的物体A104がどこに向かっているかの予測に基づいて、計画グラフ400中の2つ以上のエッジについての動的物体A104との一次エージェント102の衝突評価も決定する。計画グラフ400のこれらのエッジのそれぞれについて、運動プランナ280は、衝突評価の少なくとも一部に基づいて、特定の将来の時間における動的物体A104との一次エージェント102の衝突確率を設定する。例えば、知覚情報に従い、動的物体A104は、環境100中の特定の位置に存在することが検出される。動的物体A104の現在の軌道110に基づいて、運動プランナ280は、動的物体A104が、将来、環境100中の特定の位置に存在するであろうと決定する。ノード間の直接移動が動的物体A104との衝突を生じさせることになる確率がある計画グラフ400中のノードについて、運動プランナは、動的物体A104との衝突の確率を示す重みをそれらのノード間を遷移する計画グラフ400のエッジ(エッジ410b、410c、410d、410e、410f、410g、410h、410i、410j、410k)に割り当てる。図4Aに示される例では、これは、グラフ部分414として示されるが、物理的エリアに対応しない。
【0090】
例えば、運動プランナ280は、定義された衝突確率閾値を下回る動的物体A104との衝突確率をそれぞれ有する計画グラフ400の幾つかのエッジのそれぞれに対して、ゼロ以上の値を有する重みを割り当てる。本例では、運動プランナ280は、動的物体A104の現在の軌道によれば、動的物体A104とのいかなる衝突確率もない(又はあったとしてもごく僅かである)計画グラフ400中のエッジに重みゼロを割り当てた。例えば、計画グラフ400に示されるように、運動プランナ280は、重みゼロをエッジ410aに割り当てており、その理由は、動的物体A104の現在の軌道110によれば、エッジ410aにおいて動的物体A104と衝突する確率がゼロ(又はあったとしてもごく僅か)であるためである。次に、運動プランナ280は、定義された衝突確率閾値を上回る環境100中の動的物体A104との衝突確率をそれぞれ有する計画グラフ400の幾つかのエッジのそれぞれに対して、ゼロ未満の値を有する重みを割り当てる。本例では、運動プランナ280は、動的物体A104の現在の軌道によれば、動的物体A104との衝突確率がより高い計画グラフ400中のエッジに対してゼロ未満の重みを割り当てた。衝突確率に使用される特定の閾値は、変更できる。例えば、閾値は、40%、50%、60%又はより高い若しくはより低い衝突確率であってもよい。また、ゼロ未満の値を有する重みを割り当てる運動プランナ280は、各衝突確率と対応する大きさを有する負の重みを割り当てることを含む。例えば、計画グラフ400に示されるように、運動プランナは、エッジ410b、410c、410d及び410eに重み-3を割り当てているが、エッジ410fにより低い大きさ-2を有する負の重みを割り当てており、エッジ410gにより大きい大きさ-5を有する重みを割り当てている。割り当てられる重みは、整数である必要はない。
【0091】
図4Bは、一実施形態による、一次エージェント102のゴールが、一次エージェント102を避けようとしている可能性がある図1の動的物体A104と衝突することである場合の、図1の一次エージェント102の一例の運動計画グラフ400及び動的物体A104と衝突する一次エージェント102の計画グラフ400において識別された一例のパス412(ノード408aを408dに結ぶグラフ400の太字エッジを含む)である。運動プランナ280は、衝突評価の少なくとも一部に基づいて動的物体A104との一次エージェント102の衝突確率を設定した後、最適化を実行して、動的物体A104と衝突する可能性が比較的高い、生成された計画グラフ400中のパス412を識別する。
【0092】
例えば、計画グラフ400の全てのエッジ重みが図4A及び図4Bに示されるように割り当てられると、運動プランナ280は、計画グラフ400中の一次エージェント102の現在の状態から、一次エージェント102が燃料切れになる全ての可能な最終点までに最小コストパスアルゴリズムを実行する。次に、計画グラフ400中の最小(最も負の)パスが運動プランナ280により選択される。本例では、計画グラフ中の一次エージェント102の現在の状態は、ノード408aにあり、この最小(最も負のパス)は、計画グラフ400におけるパス412として示されている。多くの急なターンを有するパスが計画グラフ400に示されているが、そのようなターンは、ルートにおける対応する物理的ターンを表しておらず、一次エージェント102の状態間の論理的な遷移を表している。例えば、識別されたパス412中の各ノードは、環境100における一次エージェント102の物理的構成に関する状態変更を表すが、必ずしも図4Bに示されるパス412の角度に対応する一次エージェント102の進行方向変更を表しているわけではない。
【0093】
ベルマン-フォードアルゴリズムを実施するものを含め、最小コストパスを決定する種々のプロセスが使用可能であるが、それに限られず、構成エッジの重みの和が最小になるような最小コストパスが計画グラフ400中の2つのノード間のパスとして決定される任意のプロセスを含む他のプロセスを使用できる。このプロセスは、計画グラフ及び衝突検出を使用して、所望の物体と衝突する最良のルートを見つけるための効率及び応答時間を改善することにより、動的物体(104、112)との衝突に向けた一次エージェント、例えば自律車両の運動計画の技術を改善する。更に、幾つかの実装形態は、一次エージェント102が動作する環境中の1つ又は複数の静的物体と衝突する可能性が比較的高い一次エージェント102のパスを識別するために同じプロセスを使用する。そのような静的物体との衝突が探求される場合、運動プランナ280は、環境100中の静的物体との各衝突確率を有する計画グラフ400のエッジに対して、大きい負の値を有する重みを割り当てる。このようにして、運動プランナが最適化中に最小コストパスを選択する場合、そのようなパスが選択される可能性がより高くなる。しかしながら、そのような実装形態では、考慮に入れる必要がある静的物体の速度、軌道又は加速度はない。
【0094】
幾つかの実装形態では、一次エージェント102が動的物体A104と衝突しようとしている間、衝突を回避すべき静的物体が環境に存在しうる。そのような場合、衝突評価に基づいて計画グラフ400のエッジの衝突確率を設定することは、それに従ってそのような静的物体との衝突を回避するように(例えば、初期重みを変更/調整することにより)重みを割り当てることを含む。例えば、運動プランナ280は、環境100における静的物体との各衝突確率を有する計画グラフ400の幾つかのエッジのそれぞれに対して、無限大の値を有する重みを割り当てる。このようにして、運動プランナが最適化中に最小コストパスを選択する場合、無限大に設定されたエッジ重みを有するそのようなパスは、移動した場合、静的物体との衝突に繋がることになるため、回避されることになる。
【0095】
運動プランナ280は、最適化を実行して、一次エージェント102のルート全体のうち、動的物体A104と衝突する可能性が最も高い生成された計画グラフ400中のパスを識別する。幾つかの実装形態では、ルートの長さは、少なくとも部分的に、一次エージェント102が燃料/電力切れになるときまで定義される。一次エージェント102の「残燃料」を示す変数がコンピュータシステム200により記憶されてもよい。幾つかの実装形態では、運動プランナ280は、最適化を実行して、一次エージェント102が動作する環境中の1つ又は複数の物体と最短の相対時間量で衝突する可能性が比較的高い生成された計画グラフ400中のパスを識別する。代替的には、幾つかの実装形態では、運動プランナ280は、最適化を実行して、最長の走行時間を有する生成された計画グラフ400中のパスを、動的物体A104と衝突する可能性が比較的高いパスにより特定されるものとして識別してもよい。
【0096】
計画グラフ400中のパスは、動的物体Aの軌道110の変更又は予測される変更に基づいて識別することもできる。動的物体A104の軌道110の各変更又は予測される変更時、衝突評価及び最適化プロセスを再びリアルタイム又は準リアルタイムで実行できる。また、生成された計画グラフ400は、一次エージェント102及び/又は動的物体A(104、112)の物理的制約又は性能制約、一次エージェント102及び幾つかの実装形態では動的物体A104の加速度、ピッチ、ロール及びヨーを表す関連データを有するか又は記憶する。次に、そのような変数に基づいて、パスを識別する最適化を実行する。例えば、一次エージェント動的物体A104のピッチ、ロール及び/又はヨーが変化する場合、これは、動的物体A104の軌道の変更を示す(又は予測される変更に繋がる)。
【0097】
図5Aは、一実施形態による、一次エージェント102のゴールが、一次エージェント102に近づきつつある図1の動的物体B112との衝突回避である場合の、図1の一次エージェント102の一例の運動計画グラフ500である。計画グラフ400と同様に、計画グラフ500は、それぞれエッジにより結ばれた複数のノードを含む。各ノードは、暗黙的又は明示的に、一次エージェント102の状態を特徴付ける時間及び変数を表す。例えば、各ノードは、一次エージェントの構成を表し、構成は、一次エージェント102の現在の位置、姿勢、速度及び進行方向を含むが、これに限定されない。幾つかの実施形態では、一次エージェント102の加速度も計画グラフ500中のノードによって表される。
【0098】
一次エージェント102は、動的物体B112との衝突回避等のために、動的物体B112を回避することが望ましい場合がある。図5Aは、一次エージェント102のゴールが動的物体B112との衝突を回避すること又は動的物体B112から逃れることであり、動的物体B112がゲーム等において一次エージェント102と衝突しようとしている場合、一次エージェント102のパスを識別するために、運動プランナ280により計画グラフがどのように使用されるかを示す。この時点で、運動プランナ280は、一次エージェント102が動作する環境100を表す知覚情報を受信している。上述したように、衝突検出は、ボクセル又はボックスを使用して、一次エージェント102及び動的物体B112を含む環境中の物体を表す。しかしながら、他の物体表現を使用できることを理解されたい。一実装形態では、環境は、ボクセル又はボックスの3D領域に離散化される。次に、環境100中の一次エージェント102による計画グラフ500におけるあらゆる運動の掃引容積と、離散化空間中のボクセル又はボックスとの間で起こり得る全ての衝突が予め計算される。
【0099】
動的物体B112が環境100中で移動していることに起因して、運動プランナ280は、動的物体B112が進行している場所の予測に基づいて、計画グラフ500中の2つ以上のエッジについての動的物体B112との一次エージェント102の衝突評価も決定する。計画グラフ50のこれらのエッジのそれぞれについて、運動プランナ280は、衝突評価の少なくとも一部に基づいて、特定の将来の時間における動的物体B112との一次エージェント102の衝突確率を設定する。例えば、知覚情報に従い、動的物体B112は、環境100中の特定の位置にあることが検出される。動的物体B112の現在の軌道106に基づいて、運動プランナ280は、将来、動的物体B112が環境100中の特定の位置に存在するであろうと決定する。ノード間の直接移動が動的物体B112との衝突を生じさせることになる確率がある計画グラフ500中のノードについて、運動プランナは、動的物体B112との衝突の確率を示す重みをそれらのノード間を遷移する計画グラフ500のエッジ(エッジ510a、510b、510c、510d、510e、510f、510g、510h、510i、510j、510k、510l、510m、510n、510o及び510p)に割り当てる。図5Aに示される例では、これは、グラフ部分514として示されるが、物理的エリアに対応しない。
【0100】
例えば、運動プランナ280は、定義された衝突確率閾値を上回る動的物体B112との衝突確率を有する計画グラフ500の幾つかのエッジのそれぞれに対して、ゼロを超える値を有する重みを割り当てる。本例では、運動プランナ280は、動的物体B112の現在の軌道によれば、動的物体B112とのいかなる衝突確率もない(又はあったとしてもごく僅かである)計画グラフ500中のエッジに重みゼロを割り当てた。次に、運動プランナ280は、定義された衝突確率閾値を上回る環境100中の動的物体B112との衝突確率を有する計画グラフ500の幾つかのエッジのそれぞれに対して、ゼロを超える値を有する重みを割り当てる。本例では、運動プランナ280は、動的物体B112の現在の軌道によれば、動的物体B112との衝突確率がより高い計画グラフ500中のエッジに対してゼロを超える重みを割り当てた。衝突確率に使用される特定の閾値は、変更さできる。例えば、閾値は、40%、50%、60%又はより低い若しくはより高い衝突確率であってもよい。また、ゼロを超える値を有する重みを割り当てる運動プランナ280は、各衝突確率と対応する、ゼロを超える大きさを有する重みを割り当てることを含む。例えば、計画グラフ500に示されるように、運動プランナは、より高い衝突確率を有するエッジ510f及び510iに対して重み5を割り当てたが、運動プランナ280がはるかに低い衝突確率を有すると決定したエッジ510p及び510gに対してはより低い大きさ1を有する重みを割り当てた。
【0101】
図5Bは、一実施形態による、一次エージェント102のゴールが、一次エージェント102に近づきつつある図1の動的物体B112との衝突を回避することである場合の、図1の一次エージェント102の一例の運動計画グラフ500及び動的物体B112との衝突を回避する一次エージェント102の計画グラフ500において識別された一例のパス512(ノード508aを508bに結ぶグラフ500の太字エッジを含む)である。運動プランナ280は、衝突評価の少なくとも一部に基づいて動的物体B112との一次エージェント102の衝突確率を設定した後、最適化を実行して、動的物体B112と衝突する可能性が比較的低い、生成された計画グラフ500中のパスにより指定される、一次エージェント102の走行の最長ルートを提供する、生成された計画グラフ500中のパス512を識別する。
【0102】
一実装形態では、計画グラフ500の全てのエッジ重みが図5A及び図5Bに示されるように割り当てられると、運動プランナ280は、計算を実行して、一次エージェント102と衝突する前に動的物体B112が燃料切れになるような走行の最長ルートを決定する。例えば、計画グラフ500の全てのエッジ重みが図5A及び図5Bに示されるように割り当てられると、運動プランナ280は、計画グラフ500中の一次エージェント102の現在の状態から、一次エージェント102が燃料/電力切れになる全ての可能な最終点まで最小コストパスアルゴリズムを実行する。次に、計画グラフ500中の最小コスト(ゼロに最も近い)パスを有する(例えば、時間又は距離において)最長となるルートが運動プランナ280により選択される。しかしながら、計画グラフ500中の最長ルートであり、且つ、最小コスト(ゼロに最も近い)であるパスは、多くの場合、競合する。最長ルートが望ましい場合、計画グラフ500において最小コストパスを見つけることは、最小の衝突確率を有するパスを選択することほど高い優先度を有さない。本例では、計画グラフ中の一次エージェント102の現在の状態は、ノード508aにあり、このパスは、計画グラフ500中のパス512として示される。
【0103】
幾つかの実装形態では、(動的物体B112との衝突を回避しながら)特定の行先に辿り着く一次エージェント102の二次ゴールが存在しうる。この場合、最適化は、最小コストパスアルゴリズムを計画グラフ500中の一次エージェント102の現在の状態から所望の行先まで実行することを含む。一実施形態では、一次エージェント102のゴールは、例えば、動的物体B112が一次エージェント102と衝突する前に燃料切れになるように、動的物体B112と衝突しない時間を最大にすることである。一実施形態例における一次エージェント102のゴールは、現在の時刻から所望の行先への一次エージェント102の到着時刻若しくは特定のゴールを達成するまでの間又は現在の時刻から動的物体B112が燃料切れになるまでの間、動的物体B112との衝突確率を最小にすることである。このプロセスは、計画グラフ及び衝突検出を使用して、自律一次エージェントとの衝突を探求している動的物体(104、112)との衝突を回避する最良のルートを見つけることの効率及び応答時間を改善することにより、動的物体(104、112)との衝突を回避することについて運動計画の技術を改善する。更に、幾つかの実装形態は、一次エージェント102が動作する環境中の1つ又は複数の静的物体と衝突する可能性がゼロである一次エージェント102のパスを識別するために同じプロセスを使用する。そのような静的物体との衝突を回避すべき場合、運動プランナ280は、環境100中の静的物体との各衝突確率を有する計画グラフ500の幾つかのエッジのそれぞれに対して、重みに無限大の値を割り当てる。このようにして、運動プランナが最適化中に最小コストパスを選択する場合、無限大に設定されたエッジ重みを有するそのようなパスは、エッジが横切られる場合、静的物体と衝突することになる不確かさがあるため、避けられる。そのような実装形態では、静的物体の速度又は軌道は、考慮に入れられない。
【0104】
幾つかの実装形態では、複数の他のエージェント、例えば動的物体(104、112)が存在し、一次エージェント102は、そのうちの幾つかを回避し、他は妨害又は衝突するというゴールを有する。そのような実装形態では、一次エージェント102が動的物体(104、112)と衝突するための本明細書に記載されるプロセス、及び、一次エージェント102が動的物体(104、112)との衝突を回避するための本明細書に記載されるプロセスは、同時に、同じときに又は他の方法で互いと併せて実行できる。例えば、物体によっては、衝突するものとして識別されるものもあれば、衝突を回避する物体として識別されるものもある。次に、運動プランナ280は、それに従い、動的物体及び静的物体に対応する軌道及び知覚情報並びにそのような物体と衝突すべきか又は回避すべきかを考慮に入れて、本明細書に記載されるように最適化を実行する。そのような場合、衝突評価に基づいて計画グラフのエッジの衝突確率を設定することは、それに従って衝突又は衝突回避するための重みを割り当てる(例えば、初期重みを変更/調整することにより)ことを含む。
【0105】
運動プランナ280は、最適化を実行して、一次エージェント102のルート全体に沿った動的物体B112との最小の衝突確率を有する、生成された計画グラフ500中のパスを識別する。幾つかの実装形態では、ルートの長さは、少なくとも部分的に、一次エージェント102が燃料/電力切れになるときまで定義される。一次エージェント102の残燃料又は残電力を示す変数がコンピュータシステム200により記憶されてもよい。幾つかの実装形態では、運動プランナ280は、最適化を実行して、動的物体B112と衝突する可能性が比較的低いパスにより指定される最長持続時間の走行を有する、生成された計画グラフ500中のパスを識別する。パスを、動的物体B112の軌道106の変更又は予測される変更に基づいて識別することもできる。動的物体B112の軌道106の各変更又は予測される変更時、衝突評価及び最適化プロセスを再びリアルタイム又は準リアルタイムで実行できる。また、生成された計画グラフ500は、一次エージェント及び/又は動的物体の物理的制約又は性能制約、一次エージェント102及び幾つかの実装形態では動的物体B112の加速度、ピッチ、ロール及びヨーを表す関連データを有してもよい。次に、そのような変数に基づいて、パスを識別する最適化を実行できる。例えば、動的物体B112のピッチ、ロール及び/又はヨーが変化する場合、これは、動的物体B112の軌道の変更を示す(又は予測される変更に繋がる)。
【0106】
運動プランナ280は、多様な自律車両及びロボット(付属物あり又はなし)並びに予期されるタスクシナリオのためにプログラムすることができる。運動プランナ280は、異なる車両若しくはロボットのために再使用若しくは再プログラムすることができるか、又は運動プランナ280は、特定の車両若しくはロボットのために設計することができる。一つのタイプのロボットは、本明細書に記載される自律車両等の自律車両である。
【0107】
図6は、一実施形態による、一次エージェント102(例えば、自律車両、付属物あり又はなしのロボット等)が動作でき、他のエージェント、例えば動的物体A104及び動的物体B112が既知の軌道(例えば、それぞれt110及びt106)を有する環境100の概略図である。この状況では、一次エージェント102の軌道は、単に他のエージェントの現在の軌道を考慮に入れるだけではなく、環境100における他のエージェントの意図、すなわち時間の関数としての他のエージェントの軌道を考慮に入れて計画することができる。また、これにより、他のエージェント、例えば動的物体A104及び動的物体B112の変化する軌道に応答して、一次エージェント102の側での条件付きの行動が可能になる。例えば、人が一次エージェント102の環境100において道路に走り込む場合、一次エージェント102の軌道に関してとるべき行動は、その人が走り続けるか、それとも止まるかに依存することになる。換言すれば、エージェント(例えば、この例では人)の軌道を知ることで、環境100中の他のエージェントが行う可能性があることとは無関係に格子を通して完全なパスを計画するのではなく、変化する状況を考慮に入れた解決策が可能になる。加えて、この手法は、パスが計画される前に軌道の集合全体が運動グラフのエッジに適用される場合などに生じ得る衝突の二重カウントを回避する。
【0108】
図7は、図6の一次エージェント102の一例の運動計画グラフ700である。実施形態では、格子中の各ノード(例えば、n、n、n、・・・)は、そのノードと一次エージェント102のゴール(すなわち最終状態)との間の格子のエッジ(例えば、c0,4、c0,5等)に関連するコストに基づく関連する値(すなわちコスト)を有する。
【0109】
格子は、静的バックグラウンド衝突検出を実行して、静的物体(例えば、静的物体C108)と衝突するエッジを見つけることにより初期化される。そのような場合、コストは、静的物体と衝突することになり(例えば、n14とn15との間のエッジ)、比較的高いコストになると特定されるエッジに割り当てられる(又はコスト関数を適用する)。例えば、コストは、無限大に設定され、それにより、効果的に、一次エージェント102の軌道が静的物体と衝突すると識別されたエッジを含まないようにする。格子の初期化の第2の態様では、例えば、対象のノードからゴールノード(例えば、n15)への最小コストパスに基づいて、各ノードでのゴールへのコストが特定される。例えば、ノードn13のコストは、n13とn16との間のエッジのコスト(c13,16)及びn16とn15との間のコスト(c16,15)によって決定される。
【0110】
図7に示されるグラフ700を使用した一次エージェント102の運動計画は、nと示されたノード(例えば、n)において時間T=iから始まって実行される。先に説明したように、運動計画は、一次エージェント102の環境100中の他のエージェント、例えば動的物体(104、112)の意図を考慮に入れる。意図は、例えば、確率的関数に基づく挙動モデルを使用してサンプリングされて、各エージェントAの軌道tを生成し、結果として軌道の集合Sを生成する。以下に更に詳細に説明するように、各軌道tがグラフ700に個々に適用されて最小コストパスが決定され、次にコストの平均計算が実行される。これは、最小コストパスが決定される前に軌道の集合全体が運動計画グラフに適用される手法とは対照的である。
【0111】
S中の各軌道tについて、運動計画グラフ700中のエッジが軌道と衝突する場合、何れのエッジが軌道と衝突するか、すなわち何れのエッジが一次エージェント102を軌道tに対応する別のエージェントと衝突させることになるかを決定する。これらのエッジのコスト値は、例えば、衝突するエッジに高い値が割り当てられることになる関数等の衝突に関連するコストを決定するコスト関数を適用することにより変更される。
【0112】
グラフ700のエッジのコストが軌道tに基づいて変更された後、候補ノードn’、すなわち現在のノードn(例えば、n)から1つの時間ステップで(すなわち時間T=i+1において)到達可能な各ノードのコストが計算される。候補ノードn’(例えば、n、n、n及びn)のコストは、現在のノードn(例えば、n)から候補ノードn’を通過してゴール(例えば、n15)までの最小コストパスを見つけることにより計算される。図7は、ノードnからゴール(ノードn15)までの候補ノードnを通過する第1の最小コストパス710及びノードnからゴールまでの候補ノードnを通過する第2の最小コストパス720の一例を示す。これらの例では、軌道tでのノードnのコストは、第1のパスに沿ったエッジの和(例えば、c0,4、c4,9、c9,13、c13,16、c16,15)であろう。
【0113】
候補ノードn’のコストは、軌道の集合S中の各軌道(t、t,...、t)について上記のように計算され、各軌道は、エージェントA(j=1~m)に対応し、ここで、mは、他のエージェントの数である。コストは、軌道の集合Sにわたる平均が計算されて、各候補ノードn’の平均コストを提供する。最小平均コストを有する候補ノードn’が一次エージェントの次のノードとして選択される。したがって、時間T=i+1において、最小平均コストを有する候補ノードn’は、次の時間ステップT=i+2の現在のノードnになる。これは、一次エージェント102がゴールノード(例えば、n15)に到達するまで、すなわちゴールノードにより表される状態を達成するまで続けられる。
【0114】
図8Aは、示される一実施形態による、計画グラフを介して一次エージェントのパスを識別する方法800を示す流れ図であり、パスは、他のエージェントの既知の軌道を考慮に入れて最小平均コストを有する候補ノードを通る。805において、システムは、静的バックグラウンド衝突検出を実行する。810において、各ノードのゴールまでのコストが計算される。図7に関して上述したように、格子中の各ノード(例えば、n、n、n、・・・)は、そのノードと一次エージェント102のゴール(すなわち最終状態)との間の格子のエッジに関連するコスト(例えば、c0,4、c0,5等)に基づく関連する値(すなわちコスト)を有する。格子のエッジに関連するコストは、特に対象のエッジに沿った2つのノード間の移動に関連する固有のコスト(例えば、燃料及び/又はエネルギーコスト)に基づいて決定される。実装形態では、各ノードでのゴールまでのコストは、対象のノードからゴールノード(例えば、n15)までの最小コストパスに基づいて決定される。815において、システムは、一次エージェントの環境100中の他のエージェントAの軌道tを決定する。820において、現在のノードn、すなわち運動計画グラフ700中の一次エージェントの現在の位置について、システムは、図8Bに更に詳細に説明され、その対応する説明が以下に説明されるように、軌道の集合Sにわたる各候補ノードn’の平均コストを計算する。825において、運動計画グラフ700における一次エージェント102の状態(例えば、姿勢)は、ノードnから、最小平均コストを有する候補ノードn’に移る。830において、時間がインクリメントされ、方法800は、次の時間ステップに対して繰り返される。
【0115】
図8Bは、示される一実施形態による、図8Aの方法(ブロック820を参照されたい)における既知の軌道の集合にわたる平均が計算された各候補ノードのコストを計算するのに有用な方法850を示す流れ図である。855において、軌道の集合S中の各軌道tを考慮してループが開始され、ここで、t=1~mであり、mは、軌道の数である。860において、システムは、軌道tと衝突する運動計画グラフ700のエッジがある場合、それが何れのエッジであるかを特定する。865において、システムは、軌道tと衝突すると特定されたエッジがある場合、そのエッジの値にコスト関数を適用する。870において、システムは、ノードnからゴールまでの各候補ノードn’を通る最小コストパスに基づいて、各候補ノードn’のコストを決定する。875において、軌道を識別するインデックスtは、インクリメントされ、方法850は、全ての軌道が処理されるまで繰り返される。
【0116】
図9は、一実施形態による、一次エージェント102(例えば、自律車両、付属物あり又はなしのロボット等)が動作でき、一次エージェント102及び他のエージェント(例えば、動的物体A104及び動的物体B112)が独立した軌道を有する環境100の概略図である。動的物体(104、112)の軌道は、確率的にモデリングできる(例えば、X及びX)。開示される実施形態では、動的物体A104及び動的物体B112は、一次エージェント102及び環境中の他の全てのエージェント(互いを含む)の両方の移動に反応することができる。したがって、単純な軌道ではなく、潜在ポリシー又はゴールのモデリングとしてエージェントの意図を扱う各エージェントの挙動モデルが作成される。潜在ポリシー又はゴールは、エージェントが他のエージェントの軌道にどのように反応するかを決定するためにサンプリングできる形態を有する。一次エージェント102が現在の時間Tにおいてノードnにある場合、システムは、他のエージェントが将来どこに存在するかを特定しようとする。他のエージェントのポリシーは、まず、開始ノードからノードnまでの一次エージェントのパスに基づいて、一次エージェントの行動及び全ての二次エージェントの行動への二次エージェントの確率的反応を考慮に入れて、現在の時間Tまで順方向にシミュレートされる。したがって、所与の二次エージェントの確率的関数は、現在の時間までの一次エージェント及び二次エージェントの行動の少なくとも幾つかを表す。これは、現在の時間Tにおいて他のエージェントが占有する空間を示す結果を生成する。現在の時間Tにおける別のノードの場所は、現在の時間Tまで他の全てのエージェント及び一次エージェント102が辿った軌道に依存するため、これが該当する。
【0117】
図10は、第1の最小コストパス1010及び第2の最小コストパス1020の一例を示す、図9の一次エージェント102の一例の運動計画グラフ1000である。第2の最小コストパス1020は、一実施形態により、現在のノード(例えば、n)から候補ノード(例えば、n)への第1の最小コストパス1010に沿った一次エージェント102の計画された移動後に計算される他のエージェントの確率的に特定された軌道に基づいて決定される。
【0118】
実施形態では、格子中の各ノード(例えば、n、n、n、・・・)は、そのノードと一次エージェント102のゴールとの間の格子のエッジに関連するコストに基づく関連する値(すなわちコスト)を有する。格子は、静的バックグラウンド衝突検出を実行して、静的物体(例えば、静的物体C108)と衝突するエッジを見つけることにより初期化される。そのような場合、コストは、静的物体と衝突することになり(例えば、n14とn15との間のエッジ)、比較的高いコストになると決定されるエッジに割り当てられる(又はコスト関数を適用する)。例えば、コストは、無限大に設定され、それにより、効果的に、一次エージェント102の軌道が静的物体と衝突すると識別されたエッジを含まないようにする。格子の初期化の第2の態様では、例えば、対象のノードからゴールノード(例えば、n15)への最小コストパスに基づいて、各ノードでのゴールへのコストが決定される。
【0119】
実施形態では、他のエージェントAは、それぞれが自身の確率的挙動モデルを有するようにモデリングされる。あらゆるエージェントAについて、次の運動計画ステップは、他の全てのエージェント及び一次エージェント102により時間T=0からとられた行動の確率関数Xにより与えられる。確率関数Xは、例えば、標準偏差、分散及び処理コスト/時間のような要因に基づいてk回サンプリングされる。
【0120】
図10に示されるグラフ100を使用した一次エージェント102の運動計画は、nと示されたノード(例えば、n)において時間T=0から始まって実行される。各エージェントAについて、システムは、格子エッジが、一次エージェントが時間T=1に存在することになるノードに移動するにあたり各エージェントと衝突する場合、何れの格子エッジがそうなるかを決定する。衝突エッジの値は、予測される実際の衝突のコストを測定し、衝突するエッジに高い値を割り当てるコスト関数を使用して変更される。変更されたエッジのコストに基づいて、各候補ノードn’(例えば、n、n、n及びn)の値が計算される。現在のノード(例えば、n)からゴール(例えば、n15)までの最小コストパスは、各候補ノードn’を通して特定される。
【0121】
計画のために、一次エージェント102が最小値の候補ノードn’に移動すると仮定され、これは、図10に示される例ではノードnである。ノードnを通る最小コストパス1010は、例えば、ノードn、n、n12、n16を通り、ノードn15(すなわちゴール)で終わるパスである。以下に更に詳細に説明するように、これは、運動計画グラフ1000中の一次エージェント102の実際のパスではなく、単に計画されたパスである。換言すれば、この計画された移動により、運動計画システムにより運動命令が一次エージェント102に送信されることにはならない。
【0122】
ノードnへの一次エージェント102の計画された、すなわち仮説の移動は、確率的モデルにより決定される他のエージェントのパスに影響する。これは、一次エージェント102がノードnにある状態で時間T=0において特定された最小コストパス1010が時間T=1でもはや最小コストパスではないことがあることを意味する。上述した計算は、ノードnが一次エージェント102の現在のノードであり、ノードnからの新しい最小コストパス1020、例えばノードn、n13、n16を通り、ゴールであるノードn15で終わるパスが特定されるとの仮定下で繰り返される。計算は、一次エージェント102の計画ルートがゴール、例えばノードn15に到達するまで繰り返される。
【0123】
一次エージェント102の計画された移動がこのようにマッピングされた後、運動計画グラフ1000は、一次エージェントの環境中の他のエージェントのモデリングに使用された確率関数に基づく計画ルートに基づいてコストが計算されたエッジを有することになる。最小の値(すなわちコスト)を有する候補ノードn’が決定され、一次エージェント102は、現在のノードnから候補ノードn’(例えば、n、n、n及びn)に移動する。運動計画グラフ1000における一次エージェント102のこの実際の移動に続き、上述したプロセスは、次の時間ステップT=T+1における新しい現在のノードn(例えば、n、n、n及びn)から繰り返される。
【0124】
図11Aは、一実施形態による、計画グラフを介した一次エージェント102のパスを識別する方法1100を示す流れ図であり、パスは、ゴールへの一次エージェント102の計画パス及び確率的モデルを使用して決定された他のエージェントのパスを考慮に入れた最小平均コストを有する候補ノードを通る。1105において、システムは、上述したように、静的バックグラウンド衝突検出を実行する。1110において、運動計画グラフ1000の各ノードのゴールへのコストが計算される。1115において、システムは、各エージェントAの次のステップXの確率モデルを決定して、モデルの集合Sを生成する。1120において、システムは、図11Bに更に説明され、対応する説明で以下に説明されるように、現在のノードnからゴールまでの一次エージェント102の計画パス及び他のエージェントの確率的に決定されたパスに基づいて、各候補ノードn’の値を計算する。1125において、一次エージェント102は、現在のノードnから、最小の値(すなわちコスト)を有する候補ノードn’に移動する。1130において、方法1100は、次の時間ステップT=T+1に対して繰り返される。
【0125】
図11Bは、一実施形態による、ゴールへの一次エージェント102の計画パス及び確率モデルを使用して決定された他のエージェントのパスに基づいて各候補ノードの値を計算する、図11Aの方法1100(ブロック1120)において有用な方法1135を示す流れ図である。1140において、システムは、図11Cに更に説明され、対応する説明で以下に説明されるように、モデルの集合Sに基づいて他のエージェントAのサンプリングされた次のステップXに基づいて、各候補ノードn’の値を決定する。1142において、システムは、現在のノードnから、時間T+1において最小値を有する候補ノードn’までの移動に基づいて、一次エージェント102の次の計画された位置を指定する。1144において、一次エージェント102が依然としてゴールノードにない場合、時間は、(1146において)インクリメントされ、方法1135は、次の時間ステップに対して繰り返される。一次エージェント102がゴールノードにある場合、処理は、方法1100に戻る(ブロック1120に続く)。
【0126】
図11Cは、示される一実施形態による、確率モデルの集合Sに基づいて他のエージェントAのサンプリングされた次のステップXからのエッジ衝突コストに基づいて次の時間ステップT+1における各候補ノードn’の値を決定する、図11Bの方法1135(ブロック1140)において有用な方法1150を示す流れ図である。1155において、1エージェント当たりのサンプル数pに基づいて反復ループが開始される。1160において、反復ループが、他のエージェントの数jに基づいて開始される。1165において、システムは、モデルの集合Sに基づいてエージェントAの確率的な次のステップXの第k番目のサンプルを決定する。1170において、システムは、時間T+1においてエージェントAの決定された確率的な次のステップXと衝突する運動計画グラフ1000のエッジがあれば、何れのエッジであるかを特定する。1175において、システムは、時間T+1においてエージェントAの決定された確率的な次のステップXと衝突すると特定されたエッジがあれば、そのエッジの値にコスト関数を適用する。1180において、他のエージェントの反復ループは、他の全てのエージェントが処理されるまで繰り返される。1185において、他のエージェントの反復ループがj回完了した後、サンプルの反復ループは、全てのサンプルが完了するまで、すなわちk回完了するまで繰り返される。
【0127】
先に説明したように、実装形態では、エージェントAの確率的挙動モデルは、各エージェントAの軌道が他の全てのエージェント及び一次エージェントの軌道に依存する点で相互依存する。したがって、全てのエージェントA及び一次エージェントの現在及び過去の位置は、確率的挙動モデルに入力として提供されて、各エージェントAの予測される次のステップXを決定する。そうするにあたり、通常、窓、履歴又はルックバックに何らかの制限がある。したがって、(図11Cに示される)プロセスの最も内側のループは、サンプリングが繰り返される前、全てのエージェントAの予測される次のステップXを特定するためのループである。このようにして、全てのサンプルは、全てのエージェントA及び一次エージェントの同じ現在の位置に基づいて実行される。
【0128】
上記の詳細な説明は、ブロック図、図式及び例を使用してデバイス及び/又はプロセスの種々の実施形態を記載した。そのようなブロック図、図式及び例が1つ又は複数の機能及び/又は動作を含む限り、そのようなブロック図、フローチャート又は例内の各機能及び/又は動作は、多様なハードウェア、ソフトウェア、ファームウェア又はそれらの実質的にあらゆる組合せにより、個々に及び/又は集合的に実施できることが当業者に理解されるであろう。一実施形態では、本趣旨は、特定用途向け集積回路(ASIC)及び/又はFPGAを介して実装さできる。しかしながら、本明細書に開示された実施形態は、全体的又は部分的に、1つ又は複数のコンピュータで実行される1つ又は複数のコンピュータプログラムとして(例えば、1つ又は複数のコンピュータシステムで実行される1つ又は複数のプログラムとして)、1つ又は複数のコントローラ(例えば、マイクロコントローラ)で実行される1つ又は複数のプログラムとして、1つ又は複数のプロセッサ(例えば、マイクロプロセッサ)で実行される1つ又は複数のプログラムとして、ファームウェアとして又はそれらの実質的にあらゆる組合せとして、標準集積回路において種々の異なる実装形態で実装することができ、回路を設計すること並びに/又はソフトウェア及び若しくはファームウェアのコードを記述することが十分に本開示に鑑みて当業者の技能内であることを当業者であれば認識するであろう。
【0129】
本明細書に記載された方法又はアルゴリズムの多くが追加の動作を利用でき、幾つかの動作を省くことができ、及び/又は、指定されたものと異なる順序で動作を実行できることを当業者であれば認識するであろう。
【0130】
加えて、本明細書に教示されるメカニズムは、様々な形態のプログラム製品として配布することが可能であり、例示的な実施形態は、配布を実際に実行するのに使用される信号記録媒体の特定のタイプに関係なく等しく適用されることを当業者であれば理解するであろう。信号記録媒体の例には、限定はされないが、ハードディスクドライブ等の記録可能なタイプの媒体、CD-ROM及びコンピュータメモリがある。
【0131】
上述した種々の実施形態は、組み合わされて更なる実施形態を提供することができる。「APPARATUS,METHOD,AND ARTICLE TO FACILITATE MOTION PLANNING IN AN ENVIRONMENT HAVING DYNAMIC OBJECTS」という名称で2018年12月4日付けにて出願された米国特許出願第62/775,257、「APPARATUS,METHOD,AND ARTICLE TO FACILITATE MOTION PLANNING OF AN AUTONOMOUS VEHICLE IN AN ENVIRONMENT HAVING DYNAMIC OBJECTS」という名称で2018年1月12日付けにて出願された米国特許出願第62/616,783、「MOTION PLANNING FOR AUTONOMOUS VEHICLES AND RECONFIGURABLE MOTION PLANNING PROCESSORS」という名称で2017年6月9日付けにて出願された国際特許出願PCT/US2017/036880、及び、「SPECIALIZED ROBOT MOTION PLANNING HARDWARE AND MWETHODS OF MAKING AND USING SAME」という名称で2016年1月5日付けにて出願された国際特許出願公開WO2016/122840を含め、本明細書で引用され、及び/又は、出願データシートに列記される本願の譲受人に譲渡された米国出願公開、米国特許出願、外国特許及び外国特許出願の全ては、全体的に参照により本明細書に援用される。詳細に上述された説明に鑑みて、実施形態に対するこれら及び他の変更形態がなされうる。一般に、以下の特許請求の範囲では、使用される用語は、特許制球の範囲を、本明細書及び特許請求の範囲で開示される特定の実施形態に限定するものとして解釈されるべきではなく、そのような特許請求の範囲が権利を有する全範囲の均等物と共に可能な全ての実施形態を包含するものとして解釈されるべきである。
図1
図2
図3
図4A
図4B
図5A
図5B
図6
図7
図8A
図8B
図9
図10
図11A
図11B
図11C