(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-06-10
(45)【発行日】2024-06-18
(54)【発明の名称】中間ウェイポイント生成器
(51)【国際特許分類】
G05D 1/43 20240101AFI20240611BHJP
G01C 21/34 20060101ALI20240611BHJP
【FI】
G05D1/43
G01C21/34
(21)【出願番号】P 2022502242
(86)(22)【出願日】2019-09-13
(86)【国際出願番号】 US2019051092
(87)【国際公開番号】W WO2021025707
(87)【国際公開日】2021-02-11
【審査請求日】2022-03-11
(32)【優先日】2019-09-13
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2019-08-06
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】518096722
【氏名又は名称】ボストン ダイナミクス,インコーポレイテッド
(74)【代理人】
【識別番号】100079108
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【氏名又は名称】内藤 和彦
(72)【発明者】
【氏名】フェイ,ジーナ,クリスティーン
(72)【発明者】
【氏名】リッツィ,アルフレッド
【審査官】大古 健一
(56)【参考文献】
【文献】特開2017-182502(JP,A)
【文献】特表2019-500691(JP,A)
【文献】特開2016-081404(JP,A)
【文献】特開2006-239844(JP,A)
【文献】特開2019-021197(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G05D 1/00 - 1/87
G01C 21/34
(57)【特許請求の範囲】
【請求項1】
ロボット(10)のデータ処理ハードウェア(36)において、ナビゲーションルート(112)を受信することであって、前記ナビゲーションルート(112)は、前記ロボット(10)の環境(8)内の出発地(113)から目的地(114)まで走行するための第一のウェイポイント(210)及び第二のウェイポイント(210)を含む、前記ナビゲーションルート(112)を受信することと、
前記データ処理ハードウェア(36)において、前記環境(8)内の1つ又は複数の障害物を示す胴部障害物マップ(412)を受信することと、
前記データ処理ハードウェア(36)により、前記胴部障害物マップ(412)及び前記ナビゲーションルート(112)に基づいて第一のグラフ(416S)を生成することであって、前記第一のグラフ(416S)は、第一のノード(812)、第二のノード(812)、及び、前記第一のノード(812)と前記第二のノード(812)を接続する一つ又は複数のエッジ(810)を含む、前記第一のグラフ(416S)を生成することと、
前記データ処理ハードウェア(36)により、前記
第一のノード(812)から前記第二のノード(812)までの経路(1310)を計画することと、
前記データ処理ハードウェア(36)により、前記ロボット(10)のイメージセンサ(31)の視線が前記1つ又は複数の障害物のうちの障害物と交差する前記経路(1310)の点(1530)を特定することと、
前記データ処理ハードウェア(36)により、前記点(1530)を特定することに基づいて、前記点(1530)において中間ウェイポイント(310)を生成することと、
前記データ処理ハードウェア(36)により、前記第一のウェイポイント(210)と前記第二のウェイポイント(210)との間の前記ナビゲーションルート(112)に前記中間ウェイポイント(310)を追加することと、
前記データ処理ハードウェア(36)により、前記第一のウェイポイント(210)、前記中間ウェイポイント(310)、及び前記第二のウェイポイント(210)を介した前記出発地(113)から前記目的地(114)までの前記ロボット(10)の走行を命令することと、を含む方法(1600)。
【請求項2】
前記第一のウェイポイント(210)、前記第二のウェイポイント(210)、及び前記中間ウェイポイント(310)の各々は、平面内の位置を示す1つ又は複数のそれぞれの座標、ヨー値、及び時刻値に関連付けられ、前記時刻値は、前記ロボット(10)がそれぞれの前記ウェイポイント(210、310)へと走行するための推定時間量を示す、請求項1に記載の方法(1600)。
【請求項3】
前記データ処理ハードウェア(36)により、前記ナビゲーションルート(112)内に前記第一のウェイポイント(210)及び前記第二のウェイポイント(210)を保持することをさらに含む、請求項1又は2に記載の方法(1600)。
【請求項4】
前記第一のグラフ(416S)を生成することは、
前記胴部障害物マップ(412)に基づいてマップ(414)を生成することであって、前記マップ(414)は、複数のエレメント(510)からなる第一の二次元グリッドを含み、前記複数のエレメント(510)からなる前記第一の二次元グリッドの各エレメント(510)は、前記ロボット(10)のそれぞれのヨーコンフィギュレーションセット(512)に関連付けられる、前記マップ(414)を生成することと、
前記マップ(414)から圧縮マップ(500)を生成することであって、前記圧縮マップ(500)は、複数のエレメント(510)からなる第二の二次元グリッドを含む、前記圧縮マップ(500)を生成することと、
前記圧縮マップ(500)から前記第一のグラフ(416S)を生成することと、
を含む、請求項1~3の何れか1項に記載の方法(1600)。
【請求項5】
前記第一のノード(812)から前記第二のノード(812)までの前記経路(1310)を計画することは、
前記圧縮マップ(500)から第二のグラフ(416D)を生成することであって、前記第二のグラフ(416D)は、ヨー自由ゾーン(510CZ)に分類される前記複数のエレメント(510)からなる前記第二の二次元グリッドのうちの一つ又は複数のエレメント(510)を含む、前記第二のグラフ(416D)を生成することと、
前記第一のグラフ(416S)からの一つ又は複数のエッジ(810)を前記一つ又は複数のエレメント(510)に関係付けることと、
を含む、請求項4に記載の方法(1600)。
【請求項6】
前記一つ又は複数のエッジ(810)を前記一つ又は複数のエレメント(510)に関係付けることは、
前記第一のグラフ(416S)と前記第二のグラフ(416D)を複合させて第三のグラフ(416F)を生成することと、
前記第三のグラフ(416F)について探索アルゴリズムを実行することと、
を含む、請求項5に記載の方法(1600)。
【請求項7】
前記第一のグラフ(416S)を生成することは、複数のセル(610)を前記圧縮マップ(500)の上に重ねることをさらに含む、請求項4に記載の方法(1600)。
【請求項8】
前記第一のグラフ(416S)を生成することは、前記複数のセル(610)のうちの各セル(610)をエッジ(810)又はノード(812)の何れかに分類することをさらに含む、請求項7に記載の方法(1600)。
【請求項9】
各セル(610)を分類することは、フラッドフィルアルゴリズムを実行することを含む、請求項8に記載の方法(1600)。
【請求項10】
前記第一のノード(812)から前記第二のノード(812)までの前記経路(1310)を計画することは、一つ又は複数のエッジ(810)を枝切りすることを含む、請求項4に記載の方法(1600)。
【請求項11】
前記点(1530)を特定することは、
前記経路(1310)に関連付けられた最小ヨー及び最大ヨー(1550)を特定することと、
前記最小ヨーと前記最大ヨー(1550)に基づいて包絡線(1560)を特定することと、
前記点(1530)におけるヨーが前記包絡線(1560)の外にあることを特定することと、
を含む、請求項1に記載の方法(1600)。
【請求項12】
前記データ処理ハードウェア(36)により、前記ナビゲーションルート(112)を下位経路生成器(130)に送信することをさらに含む、請求項1~11の何れか1項に記載の方法(1600)。
【請求項13】
前記データ処理ハードウェア(36)により、前記中間ウェイポイント(310)を前記ナビゲーションルート(112)に追加すべきか否かを特定することと、
前記中間ウェイポイント(310)を前記ナビゲーションルート(112)に追加すると特定したことに応答して、前記データ処理ハードウェア(36)により、変更されたナビゲーションルート(112)を前記下位経路生成器(130)へと伝えることと、
をさらに含む、請求項12に記載の方法(1600)。
【請求項14】
ロボット(10)において、
胴部(11)と、
前記胴部(11)に連結され、前記ロボット(10)を環境(8)内で操縦するように構成された脚(12)と、
前記脚(12)と通信するデータ処理ハードウェア(36)と、
前記データ処理ハードウェア(36)と通信するメモリハードウェア(38)であって、前記データ処理ハードウェア(36)上で実行されると、前記データ処理ハードウェア(36)に、
ナビゲーションルート(112)を受信することであって、前記ナビゲーションルート(112)は、前記ロボット(10)の環境(8)内の出発地(113)から目的地(114)まで走行するための第一のウェイポイント(210)及び第二のウェイポイント(210)を含む、前記ナビゲーションルート(112)を受信することと、
前記環境(8)内の1つ又は複数の障害物を示す胴部障害物マップ(412)を受信することと、
前記胴部障害物マップ(412)及び前記ナビゲーションルート(112)に基づいて第一のグラフ(416S)を生成することであって、前記第一のグラフ(416S)は、第一のノード(812)、第二のノード(812)、及び、前記第一のノード(812)と前記第二のノード(812)を接続する一つ又は複数のエッジ(810)を含む、前記第一のグラフ(416S)を生成することと、
前記
第一のノード(812)から前記第二のノード(812)までの経路(1310)を計画することと、
前記ロボット(10)のイメージセンサ(31)の視線が前記1つ又は複数の障害物のうちの障害物と交差する前記経路(1310)の点(1530)を特定することと、
前記点(1530)を特定することに基づいて、前記点(1530)において中間ウェイポイント(310)を生成することと、
前記中間ウェイポイント(310)を、前記第一のウェイポイント(210)と前記第二のウェイポイント(210)との間の前記ナビゲーションルート(112)に追加することと、
前記第一のウェイポイント(210)、前記中間ウェイポイント(310)、及び前記第二のウェイポイント(210)を介した前記出発地(113)から前記目的地(114)までの前記ロボット(10)の走行を命令することと、
を含む動作を実行させる命令を記憶するメモリハードウェア(38)と、
を含むロボット(10)。
【請求項15】
前記第一のウェイポイント(210)、前記第二のウェイポイント(210)、及び前記中間ウェイポイント(310)の各々は、平面内の位置を示す1つ又は複数のそれぞれの座標、ヨー値、及び時刻値に関連付けられ、前記時刻値は、前記ロボット(10)がそれぞれの前記ウェイポイント(210、310)へと走行するための推定時間量を示す、請求項14に記載のロボット(10)。
【請求項16】
前記ナビゲーションルート(112)内に前記第一のウェイポイント(210)及び前記第二のウェイポイント(210)を保持することをさらに含む、請求項14又は15に記載のロボット(10)。
【請求項17】
前記第一のグラフ(416S)を生成することは、
前記胴部障害物マップ(412)に基づいてマップ(414)を生成することであって、前記マップ(414)は複数のエレメント(510)からなる第一の二次元グリッドを含み、前記複数のエレメント(510)からなる前記第一の二次元グリッドの各エレメント(510)は前記ロボット(10)のそれぞれのヨーコンフィギュレーションセット(512)に関連付けられる、前記マップ(414)を生成することと、
前記マップ(414)から圧縮マップ(500)を生成することであって、前記圧縮マップ(500)は、複数のエレメント(510)からなる第二の二次元グリッドを含む、前記圧縮マップ(500)を生成することと、
前記圧縮マップ(500)から前記第一のグラフ(416S)を生成することと、
を含む、請求項14~16の何れか1項に記載のロボット(10)。
【請求項18】
前記第一のノード(812)から前記第二のノード(812)までの前記経路(1310)を計画することは、
前記圧縮マップ(500)から第二のグラフ(416D)を生成することであって、前記第二のグラフ(416D)は、ヨー自由ゾーン(510CZ)に分類される前記複数のエレメント(510)からなる前記第二の二次元グリッドのうちの一つ又は複数のエレメント(510)を含む、前記第二のグラフ(416D)を生成することと、
前記第一のグラフ(416S)からの一つ又は複数のエッジ(810)を前記一つ又は複数のエレメント(510)に関係付けることと、
を含む、請求項17に記載のロボット(10)。
【請求項19】
前記一つ又は複数のエッジ(810)を前記一つ又は複数のエレメント(510)に関係付けることは、
前記第一のグラフ(416S)と前記第二のグラフ(416D)を複合させて第三のグラフ(416F)を生成することと、
前記第三のグラフ(416F)について探索アルゴリズムを実行することと、
を含む、請求項18に記載のロボット(10)。
【請求項20】
前記第一のグラフ(416S)を生成することは、複数のセル(610)を前記圧縮マップ(500)の上に重ねることをさらに含む、請求項17に記載のロボット(10)。
【請求項21】
前記第一のグラフ(416S)を生成することは、前記複数のセル(610)のうちの各セル(610)をエッジ(810)又はノード(812)の何れかに分類することをさらに含む、請求項20に記載のロボット(10)。
【請求項22】
各セル(610)を分類することは、フラッドフィルアルゴリズムを実行することを含む、請求項21に記載のロボット(10)。
【請求項23】
前記第一のノード(812)から前記第二のノード(812)までの前記経路(1310)を計画することは、一つ又は複数のエッジ(810)を枝切りすることを含む、請求項17に記載のロボット(10)。
【請求項24】
前記点(1530)を特定することは、
前記経路(1310)に関連付けられた最小ヨー及び最大ヨー(1550)を特定することと、
前記最小ヨーと前記最大ヨー(1550)に基づいて包絡線(1560)を特定することと、
前記点(1530)におけるヨーが前記包絡線(1560)の外にあることを特定することと、
を含む、請求項14に記載のロボット(10)。
【請求項25】
前記ナビゲーションルート(112)を下位経路生成器(130)に送信することをさらに含む、請求項14~24の何れか1項に記載のロボット(10)。
【請求項26】
前記中間ウェイポイント(310)を前記ナビゲーションルート(112)に追加すべきか否かを特定することと、
前記中間ウェイポイント(310)を前記ナビゲーションルート(112)に追加すると特定したことに応答して、変更されたナビゲーションルート(112)を前記下位経路生成器(130)へと伝えることと、
をさらに含む、請求項25に記載のロボット(10)。
【発明の詳細な説明】
【技術分野】
【0001】
技術分野
[0001] 本開示は、制約、特に地形により加えられる制約の存在時に中間ウェイポイントを生成することに関する。
【背景技術】
【0002】
背景
[0002] ロボット機器は、制約された環境内を走行して様々な作業や機能を果たすためにますます利用されている。これらのロボット機器は多くの場合、このような制約された環境内で障害物と接触しないように、又は閊えたり、引っ掛かったりしないように走行する必要がある。こうしたロボット機器がさらに普及する中で、目的地までうまく走行しながら、障害物との接触を回避するリアルタイムでのナビゲーションとルート計画が求められている。
【発明の概要】
【課題を解決するための手段】
【0003】
概要
[0003] 本開示の1つの態様は、ロボットのナビゲーションシステムのための中間ウェイポイントを生成する方法を提供する。方法は、ロボットのデータ処理ハードウェアにおいて、ナビゲーションルートを受信することを含む。ナビゲーションルートは、出発地から始まって目的地で終わり、上位ナビゲーションデータに基づく一連の上位ウェイポイントを含む。上位ナビゲーションデータは、ロボットが走行する領域内の静止障害物の場所を表す。方法はまた、データ処理ハードウェアにおいて、イメージセンサからのロボットの周囲の環境の画像データを受信することも含む。方法はまた、データ処理ハードウェアにより、少なくとも1つの中間ウェイポイントを画像データに基づいて生成することも含む。方法はまた、データ処理ハードウェアにより、ナビゲーションルートの一連の上位ウェイポイントに少なくとも1つの中間ウェイポイントを追加することと、データ処理ハードウェアにより、ロボットを出発地から一連の上位ウェイポイント及び少なくとも1つの中間ウェイポイントに沿って目的地に向かってナビゲートすることも含む。
【0004】
[0004] 本開示の実施例は、以下の任意選択的特徴の1つ又は複数を含み得る。幾つかの実施例において、各上位ウェイポイントと各中間ウェイポイントは、平面内の位置を示す2つの座標、ヨー値、及び時刻値を含む。時刻値は、ロボットがそれぞれのウェイポイントへと走行する推定時間量を示す。幾つかの例において、方法は、データ処理ハードウェアにより、一連の上位ウェイポイントの各々をナビゲーションルート上に保持することをさらに含む。方法はまた、データ処理ハードウェアにおいて、胴部障害物マップを受信することも含み得る。胴部障害物マップは、ロボットの胴部が通過できない障害物のマップを含む。それに加えて、少なくとも1つの中間ウェイポイントを生成することは胴部障害物マップに基づく疎グラフを生成することも含み得る。疎グラフは、ノード及びエッジのリストを含む。ノード及びエッジは、ロボットが環境中で移動し得る経路を表す。方法はまた、ノードのリストのうちの第一のノードからノードのリストのうちの第二のノードまでの概略経路を計画することも含み得る。第一のノードと第二のノードは各々、環境内のある空間を表す。方法はまた、概略経路に沿った、イメージセンサの視線が失われる点を特定することと、少なくとも1つの中間ウェイポイントの1つを視線が失われる点において生じさせることと、も含み得る。
【0005】
[0005] 幾つかの実施例において、疎グラフを生成することは、胴部障害物マップに基づいてコンフィギュレーション空間全体マップを生成することを含む。コンフィギュレーション空間全体マップはエレメントの二次元グリッドを含み、グリッドの各エレメントは環境のある空間を表し、コンフィギュレーション空間全体マップの各エレメントはそれぞれのヨーコンフィギュレーションセットを含み得る。各ヨーコンフィギュレーションは有効か無効かに分類され得、有効ヨーコンフィギュレーションはロボットの、それぞれのエレメントに関連付けられた空間における障害物との接触の点で安全なヨーコンフィギュレーションを表し、無効ヨーコンフィギュレーションはロボットの、それぞれのエレメントに関連付けられた空間における障害物との接触の点で安全でないヨーコンフィギュレーションを表す。方法はまた、コンフィギュレーション空間全体マップからコンフィギュレーション空間圧縮マップを生成することも含み得る。コンフィギュレーション空間圧縮マップは、エレメントの第二の二次元グリッドを含み、第二のグリッドの各エレメントは環境のある空間を表す。第二のグリッドの各エレメントはまた、(i)ヨー衝突ゾーン、(ii)ヨー自由ゾーン、又は(iii)ヨー制約ゾーンのうちの1つに分類される。方法は、幾つかの例において、コンフィギュレーション空間圧縮マップから疎グラフを生成することを含む。
【0006】
[0006] 任意選択により、第一のノードから第二のノードまでの概略経路を計画することは、コンフィギュレーション空間圧縮マップから密グラフを生成することを含む。密グラフは、ヨー自由ゾーンに分類されるエレメントを含む。方法はまた、疎グラフからのエッジを密グラフからのエレメントに関係付けることも含み得る。エッジを密グラフのエレメントに関係付けることは、幾つかの実施例において、疎グラフと密グラフを複合させて最終グラフを生成することを含む。幾つかの例において、方法はまた、最終グラフについてA*探索アルゴリズムを実行することも含む。
【0007】
[0007] 幾つかの例において、疎グラフを生成することは、複数のボロノイセルをコンフィギュレーション空間圧縮マップの上に重ねることをさらに含み、各ボロノイセルは、疎グラフ上でヨー制約ゾーンに分類される。各ボロノイセルは、ヨー衝突ゾーンに分類される少なくとも2つのエレメントから等距離にある。任意選択により、疎グラフを生成することは、各ボロノイセルをエッジ又はノードの何れかに分類することをさらに含む。各ボロノイセルを分類することは、フラッドフィルアルゴリズムを実行することを含み得る。
【0008】
[0008] 幾つかの実施例において、第一のノードから第二のノードへの概略経路を計画することは、エッジを枝切りすることを含み、枝切りされた各エッジは、閾値長さ未満であり、ヨー衝突ゾーン又はヨー制約ゾーンの何れかに分類されるエレメントを含む。概略経路に沿った、イメージセンサによる視線が失われる点を特定することは、計画された概略経路に沿った各エレメントにおける最小許容ヨー及び最大許容ヨーを特定することと、最小許容ヨーと最大許容ヨーに基づいて最小包絡線を特定することと、をさらに含み得る。方法はまた、概略経路上のある点における必要なヨーを最小包絡線の外にあることを特定することも含み得る。
【0009】
[0009] 幾つかの例において、方法は、データ処理ハードウェアにより、上位ウェイポイントと少なくとも1つの中間ウェイポイントを有するナビゲーションルートを下位経路生成器に送信することをさらに含む。方法はまた、データ処理ハードウェアにより、少なくとも1つの中間ウェイポイントをナビゲーションルートに追加すべきか否かを特定することと、少なくとも1つの中間ウェイポイントをナビゲーションルートに追加しないと特定したことに応答して、データ処理ハードウェアにより、ナビゲーションルートを変更せずに下位経路生成器へと伝えることも含み得る。
【0010】
[0010] 本開示の他の態様は、胴部と、胴部に連結され、環境内でロボットを操縦するように構成された脚と、を含むロボットを提供する。ロボットはまた、脚と通信するデータ処理ハードウェアと、データ処理ハードウェアと通信するメモリハードウェアも含む。メモリハードウェアは、データ処理ハードウェアにより実行されると、データ処理ハードウェアに動作を実行させる命令を記憶する。動作は、ナビゲーションルートを受信することを含む。ナビゲーションルートは、出発点から始まって目的地で終わる一連の上位ウェイポイントを含み、上位ナビゲーションデータに基づく。上位ナビゲーションデータは、ロボットが走行することになる領域内の静止障害物の場所を表す。動作はまた、イメージセンサからのロボットの周囲の環境の画像データを受信することも含む。動作はまた、画像データに基づいて少なくとも1つの中間ウェイポイントを生成することも含む。動作はまた、少なくとも1つの中間ウェイポイントをナビゲーションルートの一連の上位ウェイポイントに追加することと、ロボットを出発地から一連の上位ウェイポイントと少なくとも1つの中間ウェイポイントに沿って目的地に向かってナビゲートすること、も含む。
【0011】
[0011] この態様は、以下の任意選択的特徴の1つ又は複数を含み得る。幾つかの実施形態において、各上位ウェイポイントと各中間ウェイポイントは、平面上の位置を示す2つの座標、ヨー値、及び時刻値を含む。時刻値は、ロボットがそれぞれのウェイポイントまで走行する推定時間量を示す。幾つかの例において、動作は、一連の上位ウェイポイントの各々をナビゲーションルート上に保持することをさらに含む。動作はまた、胴部障害物マップを受信することも含み得る。胴部障害物マップは、ロボットの胴部が通過できない障害物のマップを含む。追加的に、少なくとも1つの中間ウェイポイントを生成することは、胴部障害物マップに基づいて疎グラフを生成することを含み得る。疎グラフは、ノード及びエッジのリストを含む。ノード及びエッジは、ロボットが環境中で移動し得る経路を表す。動作はまた、ノードのリストのうちの第一のノードからノードのリストのうちの第二のノードまでの概略経路を計画することも含み得る。第一のノードと第二のノードは各々、環境中のある空間を表す。動作はまた、概略経路に沿った、イメージセンサの視線が失われる点を特定することと、少なくとも1つの中間ウェイポイントのうちの1つを視線が失われるこの点において生成することも含み得る。
【0012】
[0012] 幾つかの実施例において、疎グラフを生成することは、胴部障害物マップに基づいてコンフィギュレーション空間全体マップを生成することを含む。コンフィギュレーション空間全体マップは、エレメントの二次元グリッドを含み得て、グリッドの各エレメントは環境のある空間を表し、コンフィギュレーション空間全体マップの各エレメントはそれぞれのヨーコンフィギュレーションセットを含む。各ヨーコンフィギュレーションは有効か無効かに分類され、有効ヨーコンフィギュレーションは、それぞれのエレメントに関連付けられる空間において障害物と接触しないという点で安全なロボットのヨーコンフィギュレーションを表し、無効ヨーコンフィギュレーションは、それぞれのエレメントに関連付けられる空間において障害物と接触するという点で安全でないロボットのヨーコンフィギュレーションを表す。動作はまた、コンフィギュレーション空間全体マップからコンフィギュレーション空間圧縮マップを生成することも含み得る。コンフィギュレーション空間圧縮マップは、エレメントの第二の二次元グリッドを含み、第二のグリッドの各エレメントは環境のある空間を表す。第二のグリッドの各エレメントはまた、(i)ヨー衝突ゾーン、(ii)ヨー自由ゾーン、又は(iii)ヨー制約ゾーンのうちの1つに分類される。動作は、幾つかの例において、コンフィギュレーション空間圧縮マップから疎グラフを生成することを含む。
【0013】
[0013] 任意選択的に、第一のノードから第二のノードまでの概略経路を計画することは、コンフィギュレーション空間圧縮マップから密グラフを生成することを含む。密グラフは、ヨー自由ゾーンに分類されるエレメントを含む。動作はまた、疎グラフからのエッジを密グラフからのエレメントに関係付けることも含み得る。エッジを密グラフからのエレメントに関係付けることは、幾つかの実施例において、疎グラフと密グラフを組み合わせて最終グラフを生成すること含む。幾つかの例において、動作はまた、最終グラフについてA*探索アルゴリズムを実行することも含む。
【0014】
[0014] 幾つかの例において、疎グラフを生成することは、複数のボロノイセルをコンフィギュレーション空間圧縮マップの上に重ねることをさらに含み、各ボロノイセルは、疎グラフ上のヨー制約ゾーンに分類される。各ボロノイセルは、ヨー衝突ゾーンに分類される少なくとも2つのエレメントから等距離にある。任意選択的に、疎グラフを生成することは、各ボロノイセルをエッジ又はノードの何れかに分類することを含む。各ボロノイセルを分類することは、フラッドフィルアルゴリズムを実行することを含み得る。
【0015】
[0015] 幾つかの実施形態において、第一のノードから第二のノードまでの概略経路を計画することは、エッジを枝切りすることを含み、枝切りされた各エッジは閾値長さ未満であり、ヨー衝突ゾーン又はヨー制約ゾーンの何れに分類されるエレメントを含む。概略経路に沿った、イメージセンサの視線が失われる点を特定することは、計画された概略経路に沿った各エレメントにおける最小許容ヨーと最大許容ヨーを特定することと、最小許容ヨーと最大許容ヨーに基づいて最小包絡線を特定することを含み得る。動作はまた、概略経路上のある点において必要なヨーが最小包絡線の外にあることを検出することも含み得る。
【0016】
[0016] 幾つかの例において、動作は、上位ウェイポイントと少なくとも1つの中間ウェイポイントを有するナビゲーションルートを下位経路生成器に送信することをさらに含む。動作はまた、少なくとも1つの中間ウェイポイントをナビゲーションルートに追加すべきか否かを特定することと、少なくとも1つの中間ウェイポイントをナビゲーションルートに追加しないことを特定したことに応答して、ナビゲーションルートを変更せずに下位経路生成器に伝えることも含み得る。
【0017】
[0017] 本開示の1つ又は複数の実施例の詳細は、添付の図面及び以下の説明の中に示されている。その他の態様、特徴、及び利点は図面の説明から、及び特許請求の範囲から明らかとなるであろう。
【図面の簡単な説明】
【0018】
図面の説明
【
図1】[0018]ロボットのためのナビゲーションシステムの、中間ウェイポイントを生成するシステムの例示的システムの概略図である。
【
図2A】[0019]上位ウェイポイントを使用するナビゲーションルートを走行するロボットの概略図である。
【
図2B】[0019]上位ウェイポイントを使用するナビゲーションルートを走行するロボットの概略図である。
【
図3】[0020]上位ウェイポイント及び中間ウェイポイントを使用する
図2A及び2Bのナビゲーションルートを走行するロボットの概略図である。
【
図4】[0021]
図1のナビゲーションシステムの例示的な中間ウェイポイント生成器の概略図である。
【
図5】[0022]コンフィギュレーション空間圧縮マップの概略図である。
【
図6】[0023]ボロノイセルを重ねた
図5のコンフィギュレーション空間マップの概略図である。
【
図7】[0024]エレメントとボロノイセルの最も近い障害物との間の距離を示す、
図6のボロノイセルの概略図である。
【
図8A】[0025]
図6のボロノイセルを塗りつぶすフラッドフィルアルゴリズムの概略図である。
【
図8B】[0025]
図6のボロノイセルを塗りつぶすフラッドフィルアルゴリズムの概略図である。
【
図8C】[0025]
図6のボロノイセルを塗りつぶすフラッドフィルアルゴリズムの概略図である。
【
図8D】[0025]
図6のボロノイセルを塗りつぶすフラッドフィルアルゴリズムの概略図である。
【
図8E】[0025]
図6のボロノイセルを塗りつぶすフラッドフィルアルゴリズムの概略図である。
【
図9】[0026]
図6のボロノイセルから得られたエッジとノードの概略図である。
【
図10】[0027]
図6のボロノイセルから枝切りされた得られたエッジとノードの概略図である。
【
図11A】[0028]二次元疎グラフの概略図である。
【
図11B】[0028]SE2疎グラフの概略図である。
【
図12A】[0029]ゴールの目的地のための追加ノードの概略図である。
【
図12B】[0029]ゴールの目的地のための追加ノードの概略図である。
【
図13】[0030]ヨー自由ゾーン及びヨー制約ゾーンを通る経路の概略図である。
【
図14】[0031]ヨー制約ゾーンを通る経路の概略図である。
【
図15A】[0032]視線が失われる場所に設置された中間ウェイポイントを含むロボットのためのナビゲーションルートの概略図である。
【
図15B】[0032]視線が失われる場所に設置された中間ウェイポイントを含むロボットのためのナビゲーションルートの概略図である。
【
図16】[0033]ロボットのナビゲーションシステムのための中間ウェイポイントを生成する例示的な方法のフローチャートである。
【
図17】[0034]本明細書に記載のシステム及び方法を実施するために使用され得る例示的なコンピューティングデバイスの概略図である。
【発明を実施するための形態】
【0019】
[0035] 各種の図面中の同様の参照記号は同様の要素を示す。
【0020】
[0036] 脚式ロボット装置(「ロボット」とも呼ぶ)が主流となりつつあるのに伴い、ロボットを様々な制約のある環境中で自発的にナビゲートする必要性が増している。ロボットは大型及び/又は静止物体(例えば、壁、ドア等)に関する情報を記憶する上位マップデータに依拠することが多い。目的地のゴールが与えられると、ロボットは多くの場合、まず、この上位マップから経路又はコースをプロットして静止障害物を避けて走行し、その後、下位ナビゲーションデータを収集する認識システムに依拠して、移動中に遭遇する小型の動的物体を避けて走行する。この種の環境中を走行する場合、ロボットは、上位マップでは考慮されないが、下位システムでそれを避けるには大きすぎる障害物に頻繁に遭遇する。このような状況では、ロボットが閊えたり、引っ掛かったりすることは珍しくない。本願の実施例は、上位ルートに対する中間ウェイポイントをリアルタイムで生成し、それゆえ脚式ロボット機器がより大型の動的物体間を効率的に走行できるようにする中間ウェイポイント生成器のためのシステムと方法に関する。
【0021】
[0037]
図1を参照すると、ロボット又はロボット機器10は胴部11と2つ以上の脚12を含み、ロボット10が制約のある環境8中を走行できるようにするナビゲーションシステム100を実行する。各脚12は胴部11に連結され、脚ジョイント18により分離される上部分14と下部分16を有し得る。各脚12の下部分16は足19で終わる。各脚の足19は任意選択的であり、脚12のうちの1つ又は複数の下部分の終端は車輪に連結され得、又は各脚12の先端は地表面9に直接接触し得る。ロボット10は、重力方向に沿った垂直重力軸Vgと、質量中心CMを有し、これはロボット10の分散した質量の加重相対位置の合計がゼロになる点である。ロボット10は、ロボット10がとる特定の姿勢又はスタンスを定義するための、垂直重力軸Vg(すなわち、重力に関する固定参照フレーム)に関するCMに基づくポーズPをさらに有する。ロボット10の姿勢は、空間内のロボット10の姿勢角度又は角度位置により定義できる。脚12の胴部11に関する移動により、ロボット10のポーズP(すなわち、ロボットのCMの位置とロボット10の姿勢又は姿勢角度との組合せ)が変わる。
【0022】
[0038] 幾つかの実装形態において、ロボット10は1つ又は複数の付属物をさらに含み、これは例えば胴部11上に配置され、胴部11に関して移動するように構成された関節腕20である。関節腕20は、5又はそれ以上の自由度を有し得る。さらに、関節腕20は、マニピュレーションアーム又は単に付属物と互換的に呼ばれ得る。図の例において、関節腕20は、相互に関して、及び胴部11にも関して回転可能な2つの部分22、24を含むが、関節腕20はそれより多い、又は少ない部分を含んでもよく、これらも本開示の範囲から逸脱しない。第一の部分22は、第二の部分24から関節腕ジョイント26により分離され得る。エンドエフェクタ28は、マニピュレータヘッド28と互換的に呼ばれ得、関節腕20の第二の部分24の先端に連結され得、物体を握り/把持するための1つ又は複数のアクチュエータ29を含み得る。
【0023】
[0039] ロボット10はまた、少なくとも1つのイメージングセンサ又はカメラ31を備えるビジョンシステム30も含み、各センサ又はカメラ31はロボット10を取り巻く環境8の画像データ又はセンサデータ17を視野角32及び視野34で捕捉する。ビジョンシステム30は、視野角32を調整することによって、又は視野34を何れかの方向に移動させるために(ロボット10とは独立して、又はロボット10を介して)カメラ31をパンニング及び/又はチルティングすることによって、視野34を移動させるように構成され得る。代替的に、ビジョンシステム30は複数のセンサ又はカメラ31を含み得て、ビジョンシステム30はロボット10の周囲の概して360度の視野を捕捉する。
【0024】
[0040] ビジョンシステム30のカメラ31は、幾つかの実装形態において、1つ又は複数のステレオカメラ(例えば、1つ又は複数のRGBDステレオカメラ)を含む。他の例では、ビジョンシステム30は、走査型光検知測距(LIDAR)センサ若しくは走査型レーザ検出測距(LADAR)センサ等の1つ又は複数のレーダセンサ、光スキャナ、飛行時間センサ、又は他の3次元(3D)体積イメージセンサ(又はセンサのあらゆるこのような組合せ)を含む。幾つかの実施例において、ナビゲーションシステム100は認識システム102を含み、これはセンサデータ17を受信して処理し、処理されたセンサデータ17を中間ウェイポイント生成器120及び下位経路生成器130へと伝える。
【0025】
[0041] ビジョンシステム30は、カメラ又はセンサ31により捕捉された画像データから得られた画像データ又はセンサデータ17をロボット10のデータ処理ハードウェア36に提供する。データ処理ハードウェア36は、メモリハードウェア38とデジタル通信し、幾つかの実装形態において、リモートシステムであり得る。リモートシステムは、単一のコンピュータ、複数のコンピュータ、又はスケーラブル/エラスティックコンピューテングリソース及び/又は記憶リソースを有する分散システム(例えば、クラウド環境)であり得る。ロボット10のナビゲーションシステム100は、データ処理ハードウェア36上で実装される。
【0026】
[0042] 図の例において、ナビゲーションシステム100は上位ウェイポイント生成器110を含み、これはマップデータ50(すなわち、ロボット10が走行することになる領域内の静止障害物の場所を表す上位ナビゲーションデータ)を受信し、ナビゲーションルート112のための、ロボット10の現在場所からゴールの目的地までの大型及び/又は静止障害物を避ける概略経路をプロットする1つ又は複数の上位ウェイポイント210(
図2A及び2B)を生成する。例えば、上位ウェイポイント生成器110は、10メートルを超える範囲(例えば、ロボット10から10メートルを超える距離)にわたる概略経路を生成し得る。ナビゲーションシステム100はまた、中間ウェイポイント生成器120も含み、これはナビゲーションルート112と、ビジョンシステム30からの画像又はセンサデータ17を受信し、中間ウェイポイント生成器120を含む。センサデータ17に基づいて、中間ウェイポイント生成器120は、ロボット10が移動するための概略経路又は軌道を形成するナビゲーションルート112の上位ウェイポイント210(
図2A、2B、及び3)に、1つ又は複数の中間ウェイポイント310(
図3)を追加し得る。ナビゲーションルート112の上位ウェイポイント210及び追加された中間ウェイポイント310は下位経路生成器130へと伝えられ、これは、センサデータ17と組み合わせて、ロボット10の現在の場所から次のウェイポイント210、310まで走行するためのロボット10の個々のステップの各々をプロットするステップ計画142を生成する。ステップ計画142を使って、ロボット10は、ステップ計画142にしたがうことによって足19又は脚12の先端をステップ計画142により示される場所における地表面9に置いて、環境8中を進む。幾つかの実施例において、下位経路生成器130は、より下位の障害物回避を、ほぼ4メートル規模の障害物を回避するポテンシャル場方式を使用することにより提供する。ポテンシャル場方式は、ゴールに向かう速度と障害物回避速度の和を積分することにより、ロボット10を障害物から離れるように「押しやる」ことができる。
【0027】
[0043] 幾つかの実施例において、ナビゲーションシステム100の少なくとも一部は、ロボット10と通信するリモートデバイス上で実装される。例えば、上位ウェイポイント生成器110はリモートデバイス上で実装されて、上位ウェイポイント210の1つ又は複数を生成し得て、ロボット10上で実装される中間ウェイポイント生成器120は上位ウェイポイント210をリモートデバイスから受信し得る。任意選択的に、ナビゲーションシステム100の全体がリモートデバイス上で実装され得て、リモートデバイスはロボット10を制御し、及び/又はそれに命令して、ステップ計画142に基づいて環境8内を進行するようにし得る。
【0028】
[0044] 次に
図2A及び2Bを参照すると、下位経路生成器130は(例えば、ポテンシャル場方式を使用)、特定の形状及び/又は凸面の障害物間を走行する際に問題に遭遇し得る。例えば、下位経路生成器130は、対応するナビゲーションルート112の上位ウェイポイント210まで走行しようとしているときに、障害物又は表面220上を滑り落ちて、極小230に引っ掛かるかもしれない(
図2A)。他の例では、下位経路生成器130は、ロボット10を方向転換させることに関する、必要なコンテキスト又は意思決定能力を持たないかもしれない。すなわち、下位経路生成器130は、いつ「方向転換してから走行」すべきで、いつ「走行してから方向転換」すべきかを区別するのに苦慮し得る(
図2B)。
【0029】
[0045] 次に
図3を参照すると、追加のウェイポイント(すなわち、中間ウェイポイント310)をナビゲーションルート112に追加することが、下位経路生成器130が適正なトポロジ上の判断を下すのを助けるが、これは、追加のウェイポイント310によって、下位経路生成器130にとって軌道が凸状に見え、下位経路生成器が障害物220を回避してうまくナビゲートできるようにし得るからである。中間ウェイポイント生成器120は、ナビゲーションルート112に追加される何れの追加的中間ウェイポイント310もロボット10から、マップジッタの影響を最小化するのに十分な距離にあることを確実にし得る。さらに、中間ウェイポイント生成器120は何れの上位ウェイポイント210も除去又は削除しないようにし得、これは、上位ウェイポイント生成器110が中間ウェイポイント生成器120には利用できない追加のマップコンテキストを知っている可能性があり、上位ウェイポイント210を除去することで予想外の結果を招くかもしれないからである。
【0030】
[0046] 次に
図4を参照すると、幾つか実施例において、中間ウェイポイント生成器120は、疎グラフ生成器410、概略経路プランナ420、及びウェイポイントプレーサ430を含む。疎グラフ生成器410は、胴部障害物マップ412を例えば認識システム102から受信する。胴部障害物マップ412は、ロボット10に近接する(例えば、4メートル以内)障害物(例えば、ロボット10の胴部11が通過できない障害物)のマップである。胴部障害物マップ412から、疎グラフ生成器410は疎グラフ416Sを生成する。後でより詳しく述べるように、疎グラフ416Sは、ノード812(
図8A-8E)とエッジ810(
図8A-8E)との間の有効な相互接続リストを提供する。ノード812とエッジ810は、ロボット10の付近のヨー制約ゾーン(すなわち、操縦が困難か、又は厳しい領域)を通る有効なポテンシャル経路を表し、それゆえ、疎グラフ416Sによりロボット10がヨー制約ゾーンを通るためのポテンシャル経路を特定するのに必要な情報が提供される。
【0031】
[0047] 疎グラフ生成器410は、疎グラフ416Sを概略経路プランナ420に伝える。概略経路プランナ420は、出発地からゴールの目的地まで、疎グラフ416Sを用いて概略経路1310(
図13)をプロットする。幾つかの例において、概略経路プランナ420は、探索アルゴリズム(例えばA
*)を使用して、疎グラフ416Sにより示される有効ポテンシャル経路の最適なルートを特定することによって、概略経路1310(すなわち、ノード812とエッジ810との間の相互接続のリスト)をプロットする。概略経路プランナ420は、この経路1310をウェイポイントプレーサ430に伝える。ウェイポイントプレーサ430は、ロボットの現在の場所から、経路1310を辿ったときにどこで視線が失われるかを特定し、中間ウェイポイント310をその場所に設置する。すなわち、ウェイポイントプレーサ430は、ロボット10が現在の場所から概略経路1310に沿って見た場合に。ロボット10が経路の視線を失う(例えば、障害物による)場所を特定し、中間ウェイポイント310を経路1310上の、視線が失われた場所に設置する。中間ウェイポイント310は、ロボット10を、下位経路生成器130が成功裏に障害物を避けることのできる場所まで案内する。中間ウェイポイント310は、ナビゲーションルート112に含められ、下位経路生成器130に伝えられる。
【0032】
[0048] 幾つかの実施例において、疎グラフ生成器410は当初、受信した胴部障害物マップ412に基づいてコンフィギュレーション空間全体マップ414を生成する。幾つかの例において、コンフィギュレーション空間全体マップ414はエレメント510、510a-nの二次元(2D)グリッド又はアレイを含み、各エレメント510は、障害物がロボット10が特定のエレメント510に進入するのを阻止するか否かを示す環境8の領域(例えば、3センチメートル×3センチメートルの正方形)を表す。任意選択により、コンフィギュレーション空間全体マップ414は、128のエレメント×128のエレメントのアレイである。幾つかの例において、各エレメント510は複数のそれぞれのヨーコンフィギュレーション512、512a-n(ヨーコンフィギュレーションのそれぞれのセット512、512a-n)に関連付けられてよく、コンフィギュレーション空間全体マップ414は各エレメント510のそれぞれのヨーコンフィギュレーション512の各々に関する状態を示し得る。例えば、各エレメント510は、64のそれぞれのヨーコンフィギュレーションに関連付けられ得る。この例では、各ヨーコンフィギュレーションは、その前のコンフィギュレーションから5.625度回転させられることになり、これは、360度(すなわち、全円)を64(すなわち、ヨーコンフィギュレーションの数)で割ると5.625度となるからである。コンフィギュレーション空間全体マップ414はそれぞれのエレメント510に関連付けられるそれぞれのヨーコンフィギュレーション512の各々について、それぞれのヨーコンフィギュレーション512の結果、ロボット10の選択点がエレメント510により表される空間を占めたときに胴部障害物と衝突するか否かを示し得る。すなわち、コンフィギュレーション空間全体マップ414は、各ヨーコンフィギュレーション512が有効か(すなわち、ロボット10がそのヨーコンフィギュレーション512で障害物と衝突しない)、無効か(すなわち、ロボット10がそのヨーコンフィギュレーションで障害物と衝突する)を示し得る。選択点は例えば、ロボット10の胴部11の中心点(例えば、各脚12の最上部から等距離)を含み得る。
【0033】
[0049] 幾つかの実施例において、疎グラフ生成器410は、コンフィギュレーション空間全体マップ414からコンフィギュレーション空間圧縮マップ500を生成する。コンフィギュレーション空間圧縮マップ500は、各エレメントを複数のヨーコンフィギュレーション512に関連付けるのではなく、コンフィギュレーション空間マップ500の各エレメント510を分類し得る。例えば、各エレメント510は、胴部障害物エレメント510A(
図5)、ヨー衝突エレメント510B(
図5)、ヨー自由エレメント510C(
図5)、又はヨー制約エレメント510D(
図5)に分類され得る。すなわち、コンフィギュレーション空間全体マップ414からのヨーコンフィギュレーション512はコンフィギュレーション空間圧縮マップ500の各エレメント510を分類するために使用され得る。
【0034】
[0050] 次に
図5を参照すると、例示的なコンフィギュレーション空間圧縮マップ500が示されている。この例において、コンフィギュレーション空間圧縮マップ500は128×128のエレメント510のグリッドを含み、各々が胴部障害物エレメント510、ヨー衝突エレメント510B、ヨー自由エレメント510C、又はヨー制約エレメント510Dに分類される。胴部障害物エレメント510Aは、ロボット10が通過できない障害物(すなわち、胴部障害物マップ412から受け取った障害物)が占めるエレメントを表す。例えば、ロボット10が避けなければならない椅子、箱、又は壁は胴部障害物エレメント510Aに分類され得る。ヨー衝突エレメント510Bは、ロボット10に関する全てのヨーコンフィギュレーション512(例えば、64のヨーコンフィギュレーションの全て)が、ロボット10の選択点(例えば、胴部11の中心)がエレメント510Bにより表される空間を占めたときに胴部障害物(すなわち、胴部障害物エレメント510A)と衝突するという結果になるエレメントである。例えば、壁のすぐ隣の空間は、実際には壁が含まれていなくても、ロボット10がその壁に衝突せずに立つには壁に近すぎる可能性がある。
【0035】
[0051] ヨー自由エレメント510Cは、何れのヨーコンフィギュレーション512も胴部障害物と衝突することにならないという点で、ヨー衝突エレメント510Bの反対である。換言すれば、ヨー自由エレメント510Cは、ロボット10が胴部障害物に衝突せずに全てのヨーコンフィギュレーション512を通じてスピンし得る(すなわち、選択点における軸を中心に360度スピンする)環境8中の領域を表す。ヨー制約エレメント510Dは、幾つかのヨーコンフィギュレーション512が安全、すなわち有効であり(すなわち、ロボット10が障害物と衝突しない)、また幾つかのヨーコンフィギュレーション512が安全でない(すなわち、ロボット10がこれらのヨーコンフィギュレーション512において障害物と衝突する無効のヨーコンフィギュレーション512)エレメントである。例えば、ロボット10は壁の横をそれに平行に移動でき得るが、90度方向転換すれば壁と衝突し得る。この例において、幾つかのヨーコンフィギュレーション512(すなわち、ロボット10が壁に平行であるヨーコンフィギュレーション512)は安全であり、また幾つか(すなわち、ロボット10が壁に垂直となるヨーコンフィギュレーション512)は安全ではない。
【0036】
[0052] 疎グラフ生成器410は、幾つかの例において、コンフィギュレーション空間圧縮マップ500のヨー制約ゾーン510DZ(すなわち、ヨー制約エレメント510Dのゾーン)を通る有効な経路を特定する。ここで
図6を参照とすると、幾つかの実施例において、疎グラフ生成器410は、複数のボロノイセル610をコンフィギュレーション空間圧縮マップ500に重ねている。ボロノイセル610は、ヨー制約ゾーン510DZ及び/又はヨー自由ゾーン510CZ内の、ヨー衝突エレメント510Bに分類される少なくとも2つのエレメント510から等距離にある全てのエレメント510を含む。換言すれば、ボロノイセル610は、ヨー衝突ゾーン510BZから最も遠い(及びしたがって、胴部障害物から最も遠い)エレメント510である。代替的に、ボロノイセル610は、ヨー制約ゾーン510DZ及び/又はヨー自由ゾーン510CZ内の、少なくとも2つの胴部障害物エレメント510Aから等距離にある全てのエレメント510を含む。
図6の例では、セル610の中心はヨー衝突ゾーン510BZ間のヨー自由ゾーン510CZとヨー制約ゾーン510DZ内にある。ボロノイセル610は、ロボット10がすでにアクセスし得るデータ(例えば、符号付距離の場)から容易に計算できる。
【0037】
[0053] ボロノイセル610としてマークすべきエレメント510を特定するために、疎グラフ生成器410は、コンフィギュレーション空間マップ500上で障害物(すなわち、胴部障害物エレメント510A)から等距離である(コンフィギュレーション空間マップ500の)エレメント510を特定する。すなわち、各エレメント510は本質的に、最も近い障害物境界までの距離と方向を有する。
図7は、ヨー制約ゾーン510DZにより分離される2つのヨー衝突ゾーン510BZを含むコンフィギュレーション空間マップ500の一部を示す。数個のボロノイセル610がヨー制約ゾーン510DZを通って、ヨー衝突ゾーン510BZ間に延びている。幾つかの例において、疎グラフ生成器は、コンフィギュレーション空間マップ500の各エレメント510を分析して、そのエレメント510をボロノイセル610としてマークすべきか否かを特定する。各エレメント510を分析して、そのエレメントがボロノイセル610であるか否かを特定する際、幾つかの実施例において、疎グラフ生成器410は、あるエレメント510(すなわち、分析中のエレメント510)及びそれに隣接するエレメント510が、最も近い障害物境界として実質的に異なる場所を指しているか否かを特定する。すなわち、コンフィギュレーション空間マップ500中の各エレメント510について、疎グラフ生成器410は、それぞれのエレメントに最も近い障害物境界、それぞれのエレメントの下側の隣接エレメントの最も近い障害物境界、及びそれぞれの要素の右側の隣接エレメントの最も近い障害物境界の位置を特定し得る。3つの最も近い障害物境界のうちの何れか2つ間の距離が閾値距離を満たす場合は常に、そのエレメント510はボロノイセル610としてマークされ得る。閾値距離は、何れの数のエレメント(例えば、1エレメント、2エレメント、5エレメント等)都としても表現され得る。
【0038】
[0054] 図の例において、疎グラフ生成器410が、「A」と表示されたエレメント510を分析する場合、疎グラフ生成器410は、エレメント「A」に最も近いヨー衝突エレメント510B(又は胴部障害物エレメント510A)がエレメント510aであると特定する。疎グラフ生成器410はすると、その要素の右側の隣接要素(「B」と表示)に最も近いヨー衝突エレメント510Bを特定し得て、これはこの場合、510bである。疎グラフ生成器410はすると、その要素の下側の隣接要素(「C」と表示)及び最も近いヨー衝突エレメント510B(この場合、再びエレメント510a)からの距離を特定し得る。疎グラフ生成器410は、幾つかの例において、3つの最も近い障害物境界のうちの2つが閾値距離内にあるか否かを特定し得る(すなわち、「A」と「B」、「A」と「C」、及び「B」と「C」間の距離の3つのうちの2つ)。エレメントが同じ距離だけ離れた2つの障害物境界を有する場合、疎グラフ生成器410は両エレメント間の距離を特定し得る。
【0039】
[0055] この例において、「A」と「B」の最も近い障害物境界間の距離は10エレメントであり、「A」と「C」の最も近い障害物境界間の距離はゼロエレメントであり(すなわち、これらは同じ最も近い障害物境界を共有する)、「B」と「C」の最も近い障害物境界間の距離は再び10エレメントである。閾値距離が10エレメント未満である場合、エレメント「A」がボロノイセル610としてマークされることになる。
【0040】
[0056] 前述のように、疎グラフ生成器410は、コンフィギュレーション空間マップ500の各エレメントについて同様の分析を行い得る。引き続き
図7を参照すると、疎グラフ生成器410は、エレメント「D」をボロノイセル610とはマークしないかもしれず、これは、その右側の隣接エレメント(「E」)及び下側の隣接エレメント(「F」)との3つの最も近い障害物境界が閾値(例えば、3エレメント)を満たさないからである。これは、最も近い障害物境界(すなわち、エレメント510c、510d)かの距離が1エレメントしかなく、閾値を満たさないかもしれないことによる。
【0041】
[0057] 次に
図8A-8Eを参照すると、疎グラフ生成器410は、幾つかの実施例において、ボロノイセル610から得られるエッジ810とノード812を特定する。
図8Aは、ヨー制約ゾーン510DZ内の例示的なボロノイセル610を示す。疎グラフ生成器は、幾つかの実施例において、ボロノイセル610とマークされる任意の(すなわち、ランダム又は準ランダムな)エレメント510ffを選択する。任意のエレメント510ffから始めて、疎グラフ生成器はフラッドフィルを実行し、ボロノイセル610としてマークされた各エレメント510から任意に選択されたエレメント510ffまでの距離を記録する。図の例では、各エレメントは任意のエレメント510ffからの距離(単位はエレメント)で表示されている。フラッドフィルは、あるアレイの中のあるノードに接続される領域を特定するアルゴリズムである。この場合、フラッドフィルは、ボロノイセル610としてマークされた全エレメント510を通じて続いて流れ、最終的に全部にある距離が割り当てられる。任意に選択されたエレメント510ffは完全にランダムに選択され得るが、選択をロボット10の近隣内のエレメント510に限定して、何れのエラーの影響も最小化することが有利であり得る。
【0042】
[0058] ボロノイセル610としてマークされた各エレメントにある距離が割り当てられた後、疎グラフ生成器410は、幾つかの例において、ボロノイセル610の各分枝の端又はエンドノード812を特定する。各分枝のエンドノード812は局所的に、任意に選択されたエレメント510ffから最大の距離を有する。ある分枝のエンドノード812から、疎グラフ生成器410は、幾つかの例において、再び選択されたエレメント510ffに向かって戻る間に各エレメント510をマークする。疎グラフ生成器410がそれ以前にすでにマークされたエレメント510に遭遇するたびに、生成器はそのエレメントとの組合せに固有のラベルを付け得る。例えば、
図8Bにおいて、疎グラフ生成器410は、エンドノード812aを出発し、再び選択されたエレメント510ffに向かって移動し、途中の各エレメントにマークして、エッジ810aを形成する。すなわち、エンドノード812aから選択されたエレメント510ffまでのボロノイセル610は、エッジ810aを形成し得る。疎グラフ生成器410は、全てのエレメントがマークされるまで底のプロセスを隷属し得る。例えば、
図8Cにおいて、疎グラフ生成器410は感度ノード812bからエレメント510ffに向かって移動し、各エレメントをマークして他のエッジ810bを形成し、最終的に812cにおいてそれ以前にマークされたエレメントに遭遇する(
図8B)。疎グラフ生成器410は、固有のラベルを812cの接合点エレメント(すなわち、それ以前にマークされた最初の遭遇エレメント)に割り当て得る。疎グラフ生成器410は、引き続き復路を移動し、最終的に選択されたエレメント510ffに到達し得て、それ以前にマークされた各エレメントは別のエッジ810cと認識する。
【0043】
[0059] 次に
図8Dを参照すると、疎グラフ生成器410は、エンドノード812dから始めて、エレメント510ffへと戻り、再び、途中の各エレメントをマークして、別のエッジ810dを形成し得る。全エレメント510がマークされ(そして、あるエッジ810に割り当てられ)た後、疎グラフ生成器410は、幾つかの実施例において、選択されたエレメント510ffが2つのエッジ810にしか接触しない(すなわち、3つ又はそれ以上のエッジ間の接合点ではない)か否かを特定する。この場合、疎グラフ生成器410は2つのエッジを1つのエッジに合成し得る。例えば、
図8Dに示されるように、選択されたエレメント510ffは2つの他のエッジ(すなわち、エッジ810c及びエッジ810d)としか接触せず、
図8Eで、エッジ810cとエッジ810dが1つのエッジ810へと合成される。フラッドフィルとエレメントマーキングの最終的な結果として、疎グラフ生成器410にはエッジ810に沿って順番が付けられたエレメント510のセット及びノードエレメント812のリストが提供される。疎グラフ416Sからのノード及びエッジのリストは、近くの環境の制約空間(すなわち、コンフィギュレーション空間圧縮マップ500のヨー制約ゾーン510DZ)を通って移動し得る。
【0044】
[0060]
図9は、複数のエッジ810とノード812に分類されるボロノイセル610が重ねられたコンフィギュレーション空間マップ500を示しており、各エッジ810は他のエッジ810に(ノード812を通じて)、又はヨー自由ゾーン510CZに(同じくノード812を通じて)接続される。疎グラフ生成器410は、疎グラフ416Sを生成する際、幾つかの実施例において、ヨー制約ゾーン510DZの中にあるボロノイセル610とマークされたエレメント510だけを考慮するが、これは、ヨー自由ゾーン510CZを通る経路は後の時点で特定され得るからである。疎グラフ生成器410は、
図8A-8Eに関して説明したように、ボロノイセル610とマークされたエレメントを個々のエッジ810及びノード812に分け得る。幾つかの例において、疎グラフ生成器410は、エッジ810がヨー自由ゾーン510CZに接続されるノード812にラベルを付け、又はこれらを識別する。すなわち、疎グラフ生成器410は、ヨー自由ゾーン510CZとヨー制約ゾーン510DZを接続するボロノイセル610に沿ったノード812(すなわち、端若しくはエッジ810又はエッジ810間の接合点)を識別する。疎グラフ生成器410はさらに、複数のエッジ810のための接合点であるノード812を識別し得る。幾つかの例において、疎グラフ生成器410は、同じヨー自由ゾーン510CZに接続されるノード812は全部が相互に接続されていると仮定する。すなわち、疎グラフ生成器は、ヨー自由ゾーン510CZを通る動きを、ノード812間に経路が存在するかぎり(すなわち、同じヨー自由ゾーン510CZに接続されているかぎり)、(少なくとも一時的に)無視し得る。エッジ810及びノード812を備えた疎グラフ生成器410はまず、ボロノイセル610が重ねられたコンフィギュレーション空間圧縮マップ500内でそれ以前に特定されたエッジ810及びノード812に基づいて、ナビゲーション上の重要性を持たないエッジ810を枝切りすることによって最終的な2Dコンフィギュレーションマップ1000(
図10)を生成し得る。例えば、
図10は、複数のボロノイセル610が重ねられ、最終的な2Dコンフィギュレーションマップ1000を生成するために複数の重要でないエッジ1010が枝切りされたコンフィギュレーション空間圧縮マップ500を示す。すなわち、疎グラフ生成器410は、幾つかの実施例において、閾値長さより短く、ヨー制約ゾーン510DZ内で終了又は終結する、重要でないエッジ1010を、これらはロボット10が通過する上で重要でない可能性が極めて高いため、枝切りする。任意選択により、閾値長さはほぼロボット10の半径であり得る。幾つかの例において、疎グラフ生成器410は、枝切りの後、接合点ノード812が2つ以下のエッジ810に式接続され立てない場合、エッジ810を1つにまとめる。
【0045】
[0061] 次に
図11A及び11Bを参照すると、疎グラフ生成器410は、幾つかの実施例において、最終的な2Dコンフィギュレーションマップ1000(
図11A)をマップのSE2表現1100(
図11B)に変換する。SE2は、標準的なデカルト座標と共にヨーを含む(すなわち、x座標、y座標、及びヨー)座標系である。すなわち、SE2マップ1100は、最終的な2Dコンフィギュレーションマップ1000をとり、ヨーを含む。
図11Bは、ヨーが高さであるSE2マップ1100を示す。ロボット10は何れの数のヨーコンフィギュレーション512でも持ち得る(例えば、前述のように64)が、SE2マップ1100は2つのヨーコンフィギュレーション、すなわち前方と後方のみを考慮することによって簡素化され得る。すなわち、一般に、ロボット10はその移動経路と整合するヨーコンフィギュレーション512内で移動し、それゆえ、SE2マップ1100はこれら2つのヨーコンフィギュレーションのみを考慮することによって大幅に簡素化され得る。2Dマップ1000の各エッジ810は、反対の接線(すなわち、「前方」及び「後方」のヨーコンフィギュレーション1110a、1110bの2つのSE2エッジにより表され得る。各2Dノード812(
図11A)は、2Dマップ1000の表現の中でノード812に接続されたエッジ1110(
図11B)の数の2倍で表される。例えば、
図11Aは、1つのノード812に接続された3つのエッジ810を示しており、それがSE2マップ1100では6つのノード1112へと並進する。ロボット10がノード1112においてその場で回転することが示唆され、疎グラフ生成器410は、ノード1112間の相互接続を、コンフィギュレーション空間全体マップ414からの有効なヨーコンフィギュレーション512に基づいて特定し得る。
【0046】
[0062] SE2マップ1100を完成させるために、幾つかの実施例において、疎グラフ生成器410は、ロボット10のためのマップ1100の入口と出口を特定する。次に
図12A及び12Bを参照すると、疎グラフ生成器410は、オフマップゴール1210(すなわち、標的目的地を直線に沿ってマップ1100の境界に投影し得る。ゴール1210がヨー自由ゾーン510CZ内に設定されると、疎グラフ生成器410はゴール1210に関連付けられるそれぞれのエレメントを使用し得る。しかしながら、ヨー制約ゾーン510DZ内では、疎グラフ生成器410はボロノイセル610としてマークされる最も近いエレメント510に沿って(2Dマップ1000から)、又はヨー自由ゾーン510CZの境界に沿って探索し得る。最も近いエレメントがヨー自由ゾーン510CZの境界上にある場合、疎グラフ生成器410はそのエレメントをゴールに設定し得る。エッジ810上の元も近いエレメントがボロノイセル610としてマークされた場合、疎グラフ生成器410はそれぞれの最も近いエレメントに新たなノード1220を設置することにより、エッジ810を2つに分割し得る。
図12Aに示される例において、ゴール1210はヨー制約ゾーン510DZ内に設定される。疎グラフ生成器は、最も近い所望のエレメントがボロノイセル610であると特定する。疎グラフ生成器410は、ゴール1210に最も近いエレメントに新たなノード1220を作り、その前のエッジ810を2つの別々のエッジ810に分離する。幾つかの実施例において、疎グラフ生成器410は、2つの新たなノード1220を作り、1つのノード1220は前方ヨーコンフィギュレーション512を表し、1つのノード1220は後方ヨーコンフィギュレーション512を表す。
【0047】
[0063] 新しいノード1220が設置されると、疎グラフ生成器410は、ロボット10の出発位置(例えば、ロボットの現在の場所)が前方ヨーコンフィギュレーションノード1220、後方ヨーコンフィギュレーションノード1220、又はその両方の何れに接続されているかを特定する。すなわち、疎グラフ生成器410は、ロボット10がそれぞれのヨーコンフィギュレーションのノード1220に接続できるかを特定する。疎グラフ生成器410は、幾つかの例において、当初の、真のゴール1210と新しいノード1220に沿ったエッジ810の2つのヨーコンフィギュレーション(すなわち、前方及び後方)との間の角度1222を特定する。
図12Bに示される例において、角度がある閾値を満たすと(例えば、角度がゾーン1230内にあると)、前方対向ノード1220がロボットの場所に接続される。角度が第二の閾値を満たすと(例えば、角度がゾーン1240内にあると)、後方対向ノード1220がロボットの場所に接続される。角度が第三の閾値を満たすと(例えば、角度がゾーン1250内にあると)、前方対向ノード1220及び後方対向ノード1220の両方がロボットの出発地に接続される。すなわち、ロボット10は、前方又は後方の何れか向かうノード1220の場所まで移動できる。
【0048】
[0064] 幾つかの例において、疎グラフ生成器410は、ロボット10が障害物と衝突することを示すノード812を接続する。例えば、疎グラフ生成器410は常に、ロボットが中心点から回転することによって方向転換し、これによって一部の方向転換が不可能となり得ると仮定し得る。しかしながら、幾つかの状況では、下位経路生成器130は依然として、ロボット10の中心ではないピボット点で回転させることによって経路をナビゲートすることが可能であり得、これらの状況では、疎グラフ生成器410は生成器120がそうでなければロボットが移動不可能であると判断し得るエッジ810をノード812間に作り得る。
【0049】
[0065] 再び
図4を参照すると、中間ウェイポイント生成器120はまた、概略経路プランナ420も含み、これは、疎グラフ生成器410から疎グラフ416Sを受信して、ロボット10が移動してゴール1210、すなわち、標的の目的地に対応するノード1220(
図12A)まで移動するためのトポロジ上適正な経路(すなわち概略経路1310)を特定するように構成される。幾つかの実施形態において、概略経路プランナ420はまた、コンフィギュレーション空間全体マップ414及び/又はコンフィギュレーション空間圧縮マップ500も受信する。次に
図4及び13を参照すると、マップ1100はヨー自由ゾーン510CZ内の開始点1320からヨー制約ゾーン510DZを通って別のヨー自由ゾーン510CZまでナビゲートする概略経路1310を含む。
【0050】
[0066] 経路1310を生成するために、概略経路プランナ420は探索アルゴリズム(例えば、A*探索アルゴリズム)を実行し得る。概略経路プランナ420は、探索アルゴリズムを使って2Dヨー自由ゾーン510CZの密グリッド又はグラフ416Dを探索して経路1310をプロットし得る。疎グラフ生成器410はまた、密グラフ416Dを生成して、それを疎グラフ416Sと組み合わせ、組み合わせたグラフを概略経路プランナ420に送信し得る。代替的に、概略経路プランナはこの密グラフ416Dを生成し得る。密グラフはコンフィギュレーション空間圧縮マップ500から特定されたヨー自由ゾーン510CZの相互接続されたノードのリストである。すなわち、疎グラフ416Sがヨー制約ゾーン510DZ内のエレメント510の相互接続されたノード812のリストを含んでいるのと同様に、密グラフ416Dはヨー自由ゾーン510CZ内のエレメント510の相互接続されたノードのリストを含む。ロボット10はヨー自由ゾーン510CZでは自由にスピンし得るため、ヨー自由空間は、方位(すなわち、ヨー)情報を必要としないことから、概略経路プランナ420は密グラフ416D(疎グラフ416Sに関して密)を探索し得る。概略経路プランナ420は、疎グラフ416Sと密グラフ416Dを組み合わせて、最終グラフ416Fを形成し得る。最終グラフ416Fは、ヨー自由ゾーン510CZとヨー制約ゾーン510DZの両方の中の相互接続されたノードの全てを含む。概略経路プランナ420はまた、探索アルゴリズムを使って、方位情報が含められたヨー制約ゾーン510DZ内及び、ヨー自由ゾーン510CZ内で、ボロノイセル610に関する最終グラフ416Fを探索し得る。概略経路プランナ420は、ヨー自由ゾーン510CZをヨー制約ゾーン510DZに関係付け、ヨー制約ゾーン510DZに概略経路1310を通し得る。
【0051】
[0067] 密グラフ416Dは方位情報を含まない(それゆえ、最終グラフ416Fはヨー自由ゾーン510CZ内の方位情報を含まない)ため、概略経路プランナ420は、幾つかの実施例において、何れかのエッジ810に関する何れかの方位(すなわち、前方又は後方)を逆転すべきか否かを特定する。任意選択により、概略経路プランナ420は、エッジ810に沿って前方を向きながら歩行するようにバイアスされる。概略経路プランナ420は、ヨーの方位を逆転させることできる(すなわち、前方及び後方の両方の方位が有効である)経路1310のセグメントを識別し得る。概略経路プランナ420はすると、経路1310を逆転するためのコスト(すなわち、必要な回転量)を計算し得る。
【0052】
[0068] 例えば、次に
図14のマップ1100を参照すると、概略経路プランナ420は、出発地1410(方位はそれぞれの矢印と一致)からゴール場所1420(方位はそれぞれの矢印と一致)までの経路1430を計画した。前方へのバイアスにより、探索アルゴリズムは、ヨー制約ゾーン510DZを通じて前向きの方位(経路A-C)を選択し得る。概略経路プランナ420は、任意選択により、両方の経路A-C(前方を向く)と経路B-D(後方を向く)の両方のコストを計算する。ある例において、ある開始及びゴールの向きは後方を向いているため、後方経路B-Dのほうが前方向きの経路A-Cより安価であり(すなわち、必要な回転量が少ない)、概略経路プランナ420はそれに応じて経路1430を更新し得る。
【0053】
[0069] 再び
図4を参照すると、中間ウェイポイント生成器120は、幾つかの実施例において、ウェイポイントプレーサ430も含む。ウェイポイントプレーサ430は、コンフィギュレーション空間全体マップ414と、経路1310を含む疎グラフ416Sを概略経路プランナ420から受信する。ウェイポイントプレーサ430は、中間ウェイポイント310を設置するための適当な場所のための経路1310を処理する。ウェイポイントプレーサ430は、幾つかの例において、視線が最初に失われる(例えば、障害物による)まで経路1310に沿って探索して、ウェイポイント310をその場所に設置する。任意選択により、ウェイポイントプレーサ430は、処理時間を短縮するために、探索の前に経路1310をダウンサンプルする。
【0054】
[0070] 次に
図15Aを参照すると、ロボット10は経路1310に沿って、2つの胴部障害物ゾーン510AZ間にあるヨー制約ゾーン510DZを走行する。ウェイポイントプレーサ430は、ロボット10の現在の場所から経路1310に沿った様々な地点まで光線1510を引く。光線1510の1つが胴部障害物ゾーン510AZの一部(又は、代替的に、ロボット10の幅を考慮するために、胴部障害物ゾーン510AZの閾値距離以内)と交差すると、ウェイポイントプレーサ430は中間ウェイポイント310を経路1310上の、視線が失われたとき、又はその直前に光線1510が経路1310と交差する点1530に設置する。それゆえ、視線が失われる場所の特定は、デカルト座標(すなわち、x及びy座標)内で比較的容易である。しかしながら、SE2空間(すなわち、ヨーを含む)内の視線の特定はより複雑となる。
【0055】
[0071] 次に
図15Bを参照すると、ヨーを含めることに対応するために、ウェイポイントプレーサ430は、ダウンサンプルされた経路1310に沿った各点において、最小許容ヨー及び最大許容ヨーを特定して、包絡線1550、1550a-nを生成する。ウェイポイントプレーサ430は、幾つかの例において、ダウンサンプルされた各点における最小(すなわち、最も内側の)包絡線1560、1560a-nを追跡し、包絡線の幅が包絡線閾値より小さくなるか、又は経路1310上の点1530における必要なヨーコンフィギュレーションが包絡線1550の外に出たときの何れかの時点で、中間ウェイポイント310を設置する。図の例において、包絡線1550cのヨーは内側の包絡線1560cの外にあり、中間ウェイポイント310のための候補である。
【0056】
[0072] 幾つかの例において、ウェイポイントプレーサ430はまた、ヨー自由ゾーン510CZからヨー制約ゾーン510DZに移動する際、方位が閾値量(例えば、60度)より大きく変化した場合に、中間ウェイポイント310を追加する。任意選択により、ウェイポイントプレーサ430は、ゴールでの方位(すなわち、ゴールポーズ)が現在のマップの外にあり(すなわち、ロボットの現在の場所から遠すぎる)、ゴールまでの視線が失われた場合、経路1310の終端に中間ウェイポイント310を追加し得る。それに加えて、ウェイポイントプレーサ430は、ウェイポイントを狭い空間内で接合点からシフトさせ得る。例えば、中間ウェイポイント310は、接合点の周囲での閾値半径の外に出るまで、経路1310に投影され得る。
【0057】
[0073] 上位ウェイポイント210は、平面上の位置を示す2つの座標(すなわち、x及びy座標)、ヨー値、及び時刻値を含み得る。時刻値は、ロボットがそれぞれのウェイポイント310まで走行するための予想時間量を示し得る。x、y、及びヨー値と共に、ウェイポイントプレーサ430は、同様に、中間ウェイポイント310までの予想時刻値も追加し得る。予想時刻値は、受信した何れかの速度限界を使って、出発地からx、y、及びヨーにおけるウェイポイントまでの最大時間量を考慮して特定され得る。ウェイポイントプレーサ430は、中間ウェイポイント310後の計画軌道上の各上位ウェイポイント210の時間をオフセットし得る。
【0058】
[0074] 再び
図4を参照すると、ウェイポイントプレーサ430は、何れかの中間ウェイポイントをナビゲーションルート112の上位ウェイポイント210に追加する。中間ウェイポイント生成器は、ナビゲーションルート112を下位経路生成器130に伝えて、各ウェイポイント210、310までナビゲートするためのステップ計画142を生成する。中間ウェイポイント生成器120が中間ウェイポイント310は不要であると判断した(又は、適当な場所を見つけられなかった)場合、中間ウェイポイント生成器120は受け取ったナビゲーションルート112を変更せずに下位経路生成器130に伝え得る。
【0059】
[0075]
図16は、ロボット10のための中間ウェイポイントを生成する方法1600の動作の例示的な配置のフローチャートである。動作1602において、方法1600は、ロボット10のデータ処理ハードウェア36において、ナビゲーションルート112を受信することを含む。ナビゲーションルート112は、出発地113から始まって目的地114で終わる一連の上位ウェイポイント210を含む。ナビゲーションルート112は、ロボット10が走行することになる領域内の静止障害物の場所を表す上位ナビゲーションデータ50に基づく。
【0060】
[0076] 方法1600は、動作1604において、データ処理ハードウェア36においてイメージセンサ31からロボット10の周囲の環境8の画像データ17を受信することを含む。動作1606で、方法1600は、データ処理ハードウェア36により、少なくとも1つの中間ウェイポイント310を画像データに基づいて生成することと、動作1608において、データ処理ハードウェア36により、少なくとも1つの中間ウェイポイント310をナビゲーションルート112の一連の上位ウェイポイント210に追加することを含む。動作1610において、方法1600は、データ処理ハードウェア36により、ロボット10を出発地113から一連の上位ウェイポイント210及び少なくとも1つの中間ウェイポイント310に沿って目的地114に向かってナビゲートすることを含む。
【0061】
[0077]
図17は、本明細書に記載されたシステムと方法を実施するために使用され得る例示的なコンピューティングデバイス1700(例えば、データ処理ハードウェア36及びメモリハードウェア20)の概略図である。ここに示されるコンポーネント、それらの接続及び関係、並びにそれらの機能は、例に過ぎないものとし、本明細書に記載され、及び/又は特許請求される本発明の実施を限定するものではない。
【0062】
[0078] コンピューティングデバイス1700は、プロセッサ1710(例えば、データ処理ハードウェア36)、メモリ1720(例えば、メモリハードウェア38)、記憶装置1730、メモリ1720と高速拡張ポート1750に接続される高速インタフェース/コントローラ1740、及び低速バス1770と記憶装置1730に接続される低速インタフェース/コントローラ1760を含む。コンポーネント1710、1720、1730、1740、1750、及び1760の各々は、各種のバスを使って相互接続され、共通のマザボード上に、又はその他の適当な方法で実装され得る。プロセッサ1710は、コンピューティングデバイス1700内で実行されるための命令を処理することができ、これにはメモリ1720内又は記憶装置1730上に記憶される、高速インタフェース1740に連結されたディスプレイ1780等の外部入力/出力デバイス上にグラフィカルユーザインタフェース(GUI)のためのグラフィック情報を表示させる命令が含まれる。他の実装形態において、複数のプロセッサ及び/又は複数のバスが、複数のメモリ及びメモリタイプと共に適切に使用され得る。また、複数のコンピューティングデバイス1700が接続され得て、各デバイスが必要な動作の一部を(例えば、サーババンク、ブレードサーバ群、又はマルチプロセッサシステムとして)提供する。プロセッサ1710は、
図1及び4の中間ウェイポイント生成器を実装し得る。
【0063】
[0079] メモリ1720は、コンピューティングデバイス1700内に非一時的に情報を保存する。メモリ1720は、コンピュータ可読媒体、揮発性メモリユニット、又は不揮発性メモリユニットであり得る。不揮発性メモリ1720は、プログラム(例えば、命令のシーケンス)又はデータ(例えば、プログラム状態情報)をコンピューティングデバイス1700により使用されるために一時的又は永久的に記憶するために使用される物理デバイスであり得る。不揮発性メモリの例には、フラッシュメモリ及びリードオンリメモリ(ROM)/プログラマブルリードオリメモリ(PROM)/イレーサブルプログラマブルリードオンリメモリ(EPROM)/エレクトロニカルイレーサブルプログラマブルリードオンリメモリ(EEPROM)(例えば、典型的に、ブートプログラム等、ファームウェアのために使用される)が含まれるが、これらに限定されない。揮発性メモリの例には、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、相変化メモリ(PCM)、及びディス又はテープが含まれるが、これらに限定されない。
【0064】
[0080] 記憶装置1730は、コンピューティングデバイス1700のための大量記憶を提供できる。幾つかの実装形態において、記憶装置1730は、コンピュータ可読媒体である。各種の異なる実装形態において、記憶装置1730はフロッピディスクデバイス、ハードディスクデバイス、光ディスクデバイス、又はテープデバイス、フラッシュメモリ若しくはその他同様のソリッドステートメモリデバイス又は、記憶エリアネットワーク若しくはその他の構成のデバイスを含むデバイスのアレイであり得る。追加的な実装形態において、コンピュータプログラム製品は、情報キャリア内で有形の状態に具現化される。コンピュータプログラム製品は、実行されると、1つ又は複数の方法、例えば前述の方法を実行する命令を含む。情報キャリアは、コンピュータ又は機械可読媒体、例えばメモリ1720、記憶装置1730、又はプロセッサ1710上のメモリである。
【0065】
[0081] 高速コントローラ1740は、コンピューティングデバイス1700のためのバンド幅集約動作を管理し、他方で、低速コントローラ1760は、よりバンド幅集約性の低い動作を管理する。このような担当作業の割り当ては例示にすぎない。幾つかの実装形態において、高速コントローラ1740は、メモリ1720及び、各種の拡張カード(図示せず)を受け入れ得る高速拡張ポート1750に連結される。幾つかの実装形態において、低速コントローラ1760は、記憶装置1730及び低速拡張ポート1790に連結される。低速拡張ポート1790は、各種の通信ポート(例えば、USB、Bluetooth、イーサネット、無線イーサネット)を含み得て、1つ又は複数の入力/出力デバイス、例えばキーボード、ポインティングデバイス、スキャナ、又はスイッチや又はルータ等のネットワークデバイスに、例えばネットワークアダプタを通じて連結され得る。
【0066】
[0082] 本明細書の記載のシステム及び技術の各種の実装形態は、デジタル電子機器及び/又は光回路構成、集積回路、特別に設計されたASIC(特定用途集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、及び/又はこれらの組合せで実現できる。これらの各種の実装形態は、特定目的用でも汎用でもよい、記憶システム、少なくとも1つの入力装置、及び少なくとも1つの出力装置からデータ及び命令を受信し、そこにデータ及び命令を送信するために連結された少なくとも1つのプログラマブルプロセッサを含むプログラム可能システム上で実行可能及び/又は解釈可能な1つ又は複数のコンピュータプログラムでの実装を含むことができる。
【0067】
[0083] これらのコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、又はコードとしても知られる)は、プログラム可能プロセッサのための機械命令を含み、高レベル手続き型及び/又はオブジェクト指向プログラミング言語及び/又はアセンブリ/機械言語で実装できる。本明細書で使用されるかぎり、「機械可読媒体」及び「コンピュータ可読媒体」という用語は、機械命令及び/又はデータをプログラム可能プロセッサに提供するために使用されるあらゆるコンピュータプログラム製品、非一時的コンピュータ可読媒体、装置、及び/又はデバイス(例えば、磁気ディスク、光ディスク、メモリ、プログラマブルロジックデバイス(PLDs))を指し、機械可読信号として機械命令を受け取る機械可読媒体も含まれる。「機械可読信号」という用語は、機械命令及び/又はデータをプログラム可能プロセッサに提供するために使用されるあらゆる信号を指す。
【0068】
[0084] 本明細書に記載されるプロセッサ及びロジックフローは、入力データを処理し、出力を生成することによって機能を果たすために1つ又は複数のコンピュータプログラムを実行する、データ処理ハードウェアとも呼ばれる1つ又は複数のプログラム可能プロセッサにより実行可能である。プロセッサ及びロジックフローはまた、特殊用途の論理回路構成、例えばFPGA(フィールドプログラマブルゲートアレイ)又はASIC(特定用途集積回路)等によっても実行可能である。コンピュータプログラムの実行に適したプロセッサには、例えば汎用及び特殊用途のマイクロプロセッサ、あらゆる種類のデジタルコンピュータの1つ又は複数のプロセッサが含まれる。一般に、プロセッサはリードオンリメモリ若しくはランダムアクセスメモリ又はその両方から命令及びデータを受信する。コンピュータの基本要素は、命令を実行するためのプロセッサと、命令及びデータを記憶するための1つ又は複数のメモリデバイスである。一般に、コンピュータはまた、データを記憶するための1つ又は複数の大量記憶装置、例えば磁気、磁気光ディスク、又は光ディスクを含むか、これらからデータを受信し、又はそれらにデータを送信するために動作的に連結される。しかしながら、コンピュータは、このようなデバイスを含んでいなくてもよい。コンピュータプログラム命令及びデータを記憶するのに適したコンピュータ可読媒体には、あらゆる形態の不揮発性メモリ、媒体、及びメモリデバイスが含まれ、これらには例えば、半導体メモリデバイス、例えばEPROM、EEPROM、及びフラッシュメモリデバイス、磁気ディスク、例えば内蔵ハードディスク若しくはリムーバブルディスク、磁気光ディスク、並びにCD ROM及びDVD-ROMディスクが含まれる。プロセッサとメモリは、特殊用途の論理回路構成により補足され、又はその中に組み込まれることも可能である。
【0069】
[0085] 様々な実施形態を説明した。しかしながら、本開示の主旨と範囲から逸脱することなく、各種の改良が加えられてよいと理解されたい。したがって、その他の実装形態も以下の特許請求の範囲に含まれる。