本開示は、自律車両の動作に影響を与える環境状況の変化に基づいて、自律車両内で遠隔操作(たとえば、リモート)命令を実施するための方法、装置、及びシステムを記載する。自律車両は、目的地に前進することなどのタスクを用いてプログラムされ得る。自律車両は、さまざまなセンサと、自律車両が目的地にナビゲートするために利用する処理システムと、を備え得る。自律車両は、目的地に向かう途中で、処理及びナビゲートすることができない場合があるさまざまな状況に遭遇し得る。いくつかの例では、そのような状況は、交通渋滞で滞留すること、緊急車両の突然の出現、落下した瓦礫、及び路上に落ちているスポーツ用ボールなどを含み得る。自律車両は、遭遇した状況のさまざまな態様、たとえば、センサデータ、位置データ、ならびに車両及び状況に関する他の情報を制御センタに送信し得る。制御センタは、データを受信し、そのデータに対してさまざまな処理及び分析を実行し得る。制御センタは、自律車両が状況を処理及びナビゲートし、目的地まで続行し得るように、自律車両にさらなる命令を送信し得る。自律車両は、これらの命令を受信し、これらの命令を自律車両が備える他のさまざまな処理システムとともに利用して、遭遇した状況をナビゲートし、目的地に進行し続け得る。本明細書に記載される少なくともいくつかの例では、そのようなガイダンスは、車両が自律的に計画及び運転することを継続できるように、位置及び/または方位(たとえば、姿勢)のわずかな調整を含み得る。少なくともいくつかの例では、調整は、環境内の他の運転者または人物に意図を示し得る。意図は、車両によって、道路上の他の運転者が、たとえば、車両が行うことまたは実行することを意図することをよりよく理解することを可能にする(たとえば、車両は、次の信号で右折することを意図しているか、または右折しようとしていることを他の運転者に示すように、数メートル右に少しずつ寄って停止する)。いくつかの例では、(新しい開始位置を与えられた)車両が元の位置では以前に妨げられていた軌道を計画することができるように、調整は、追加のセンサデータ、及び異なる開始制約などを提供し得る。非限定的な例として、アルゴリズムの制限に起因して、開始位置は経路に沿って続行するための実行可能な軌道をもたらさない場合がある。このような例では、遠隔操作者は、調整を行うためのガイダンスを提供することができ、そのような調整の後、軌道は、車両によって自律的に決定され得る。
いくつかの例では、自律車両は、自律車両が目的地に進行し得るように、目的地を用いてプログラムされ得る。目的地は、全地球測位システム(GPS)座標、ランドマーク、住所、またはロケーションの他の指標であり得る。さまざまな処理システムは、目的地に向かう途中で自律車両に命令を提供するために、さまざまな機械学習アルゴリズム、機械学習モデル、ニューラルネットワーク、及び/またはその変形例を含み得る。
機械学習モデルに関連付けられている動作を実行している間に、自律車両は、ある状況に遭遇することがある。制御センタは、遭遇した状況に関する自律車両からの通信を取得し得る。制御センタは、その後、状況に関連付けられている受信されたデータに基づいて、自律車両に命令を提供し得る。いくつかの例では、命令は、ガイダンス命令または遠隔操作命令と呼ばれることがあり、自律車両が状況をナビゲートするために利用し得る位置及び/または方位などの情報を含み得る。
自律車両は、制御センタからの命令/ガイダンス命令を受信し、これらの命令を利用して、遭遇した状況をナビゲートし得る。いくつかの例では、自律車両は、単に受信された命令に従ってもよい。いくつかの例では、自律車両は、受信された命令を、自律車両が備え得るさまざまな処理システムとともに利用して、遭遇した状況をナビゲートし得る。自律車両が制御センタから命令を取得した後、制御センタとの通信チャネルは停止し得る。いくつかの例では、自律車両は、遭遇した状況がナビゲートもしくは解決されるまで、または状況が解決された後も、制御センタとの通信を継続し得る。
本明細書に記載される技術は、状況が自律車両の目的地への前進を妨げるとき、自律車両が状況を安全にナビゲートするために利用される。いくつかの例では、状況は、自律車両がある位置で滞留していること、及び/または、その位置及び/または状況からナビゲートするために追加のガイダンスを必要とする環境条件(たとえば、交通渋滞で車の後方で滞留している、道路内で物体に遭遇している、緊急状態にある緊急車両が自律車両の後方に接近している)に遭遇していることであり得る。自律車両は、制御センタにガイダンスの要求を送信し得る。制御センタは、次いで、安全な方法で状況をナビゲートするための命令を自律車両に提供し得る。提供された命令は、通常、悪意のある行為者が車両を制御して交通に出て行くことを妨げるように、速度閾値以下で、制限された制御下で自律車両によって実行される。自律車両は、制御センタからガイダンスを求めることによって、状況を迅速、効率的、かつ安全にナビゲートすることができ、自律車両が最終的に目的地に前進することができるように、制御された環境下でその現在位置から滞留を解除するようになり得る。
図1は、例示的なシステム100を示しており、エンティティ104、ユーザ、またはコンピューティングデバイス(いずれの場合も、本明細書では遠隔操作者と呼ばれることもある)によって制御される制御センタ102は、LIDARデータ110及び画像データ112を含み得る自律車両106からセンサデータ108を受信し、自律車両106に命令114を提供する。いくつかの例では、自律車両106は、レール付き車両、自動車、水車、水陸両用車、及び/またはそれらの変形例など、輸送に利用される任意の好適な機械であり得る。いくつかの例では、自律車両106は、図9を参照して以下に記載されるアーキテクチャ900の1つ以上のサブシステムを含み得る。
自律車両106は、センサ読み取り値を生成するさまざまなセンサを備え得る。センサは、自律車両106を取り巻く環境を継続的に分析し、センサデータ108を生成し得る。センサデータ108は、LIDARデータ110及び画像データ112と、自律車両106のさまざまなサブシステム及びセンサからの他のデータと、を含み得る。さまざまな例では、センサデータ108は、自律車両106に存在するか、または他の方法で、自律車両106に関連付けられているか、もしくはそれによってアクセスされるLIDARセンサ、カメラ、及び/またはレーダーから取得されるデータを含む。自律車両106は、自律車両106を制御し得るさまざまな処理システム及びサブシステムをさらに備え得る。そのような処理システムは、さまざまな機械学習アルゴリズム、分析ツール、及び/またはその変形例を含み得る。いくつかの例では、自律車両106は、車両コントローラを利用し得る(図1には描かれていないが、車両コントローラに関するさらなる情報は、図4の説明に見出すことができる)。
いくつかの例では、自律車両106は、目的地にナビゲートするようにプログラムされ得る。目的地は、制御センタ102、エンティティ104、図1に描かれていない他のエンティティ、及び/またはそれらの変形例によって自律車両106に提供され得る。自律車両106は、目的地にナビゲートするために、さまざまな処理システムを利用し得る。いくつかの例では、目的地は、GPS座標、ウェイポイント、住所、及び/またはそれらの変形例によって示され得る特定のロケーションであり得る。目的地はまた、ランドマーク、建物、家、または地域でもあり得る。自律車両は、その環境を自律車両が備えるさまざまなセンサを利用して継続的に分析し、センサからセンサデータを生成し、センサデータ及び自律車両106が備え得るさまざまな処理システムを利用して、目的地までナビゲートし得る。さらに、自律車両106は、さまざまな処理システムによって実装され得る機械学習モデルを利用してナビゲートし得る。
自律車両106は、それが処理及び/またはナビゲートすることができない状況に遭遇することがある。すべての例ではなく、少なくともいくつかの例では、本明細書に記載される技術は、自律車両106が特定の速度閾値を下回る制限された速度で移動しているときに実行され得る。制限された速度の例は、自律車両106が時速5マイル以下で動作していることであり得る。状況は、自律車両106がその目的地に前進することを妨げる可能性がある。例として、状況は、自律車両106が交通渋滞の中で滞留していること、または交通渋滞の中で非常にゆっくりと移動していることであり得る。自律車両106が実際に交通渋滞の中で滞留していることを検出するために、自律車両106は、自律車両106がある期間(たとえば、5分間)移動していないことを検出し得る。別の例では、状況は、自律車両106が物体に遮られ、特定のロケーションを過ぎてどのように前進するべきかを安全に判定できないことであり得る。さらに別の例では、状況は、自律車両106が信号機で待機しており、サイレンを鳴らして緊急状態にある緊急車両が、自律車両106のすぐ後方を通り抜けようとしているということであり得る。言い換えれば、緊急車両が緊急状態にあるという状況は、緊急車両が緊急灯、音声信号(たとえば、サイレン)、及び他の方法(たとえば、その緊急状態に関する情報を近距離無線信号、インターネットなどを介して送信する)などの1つ以上の指標を提示することを含み得る。自律車両106は、状況を処理することを試み、ナビゲートすることが許可されているパラメータ内で(または、他の方法で、さまざまな計画アルゴリズムの運動学的及び/または計画的な制約に起因して、ナビゲートするための軌道を決定することができる)、機械学習モデルの観点から、自律車両106からのさまざまなセンサデータに基づいて、状況をナビゲートすることができないことを決定し得る。いくつかの例では、自律車両106は、状況をナビゲートできることがあるが、状況のナビゲートは、さまざまな道路規制に従わないことを必要とする場合がある。上に提示したものなどの状況では、自律車両106は、これらの状況(及び自律車両106によって軌道の解決策を決定できない他の状況)が条件のセットを成立させることを検出し、その成立に基づいて、自律車両106は、制御センタ102からガイダンスを求めてもよい。そのような条件は、道路規制、人間または動物を傷つける潜在リスク、ナビゲーションの可能性、及び/またはそれらの変形例の観点から、自律車両106を取り巻く状況を分析する要因を含み得る。代替の実施形態では、自律車両106は、状況(たとえば、状況をナビゲートすることができないことを決定するために、条件のセットの一定数の条件が成立しなければならない)が、ガイダンスを求めるために制御センタ102に電話をかける必要があり得ることを示しているかどうかを判定するために、閾値を利用し得る。
このような状況の検出に応答して、自律車両106は、制御センタ102に連絡し得る。自律車両106は、セルラネットワーク、無線ネットワーク、及び/またはその変形例などの1つ以上の通信チャネル及び/またはネットワークを通じて、制御センタ102との間で通信し得る。自律車両106は、状況のさまざまな態様、たとえば、センサデータ108を制御センタ102に送信し得、センサデータ108は具体的には、状況に関するセンサデータ、状況を判定するために利用される条件、及び自律車両106の他のサブシステムからの他のさまざまなデータであり得る。センサデータ108は、車両がその環境で遭遇しているものをオペレータが視覚的に見ることができるように、自律車両106の1つ以上のカメラによって捕捉されたビデオのストリームを含む写真データ、及びその任意の表現(バウンディングボックス、及びセマンティックにセグメント化された画像など)を含み得る。センサデータ108は、車両がその環境で遭遇しているものをオペレータが聞くことができるようにするために、自律車両106の1つ以上の音声レコーダまたはマイクロフォンによって捕捉された音声データを含み得る。当然ながら、任意のセンサデータ及び/またはその表現(ダウンサンプリングされた、または圧縮されたバージョンを含む)が、そのような遠隔操作者にストリーミングされ得る。
自律車両106とは別の物理的なロケーションにあり得る制御センタ102は、さまざまなコンピューティングシステム、たとえば、センサデータ108の分析及び命令114の生成を容易にするように構成された、1つ以上のサーバ、仮想コンピューティングインスタンス、データストアなど、及び/またはそれらの変形例を含み得る。いくつかの例では、制御センタ102は、携帯電話、タブレット、またはラップトップなどの単一のコンピューティングデバイスであり得る。制御センタ102は、制御センタ102のコンピューティングデバイスを介して、自律車両106を取り囲むように取得されたデータを分析し、自律車両106に実行する命令/ガイダンス命令を提供するために、許可されたユーザまたはエンジニアを使用し得る。例では、命令/ガイダンスは、低速または特定の速度で4輪ステアリングを使用して命令/ガイダンスを実行するために、自律車両106に提供される。言い換えれば、制御センタ102は、自律車両106が特定の速度以下で動作または実行するように、自律車両106の制限された制御を用いて命令/ガイダンスを発行する。一例では、自律車両106は、時速5マイル以下の速度で命令/ガイダンスを実行し、その後停止して、目的地に前進するか、または制御センタ102にさらなるガイダンスを求めるかのいずれかを行ってもよい。いくつかの例では、制御センタ102は、コマンドセンタ、遠隔操作センタ、または中央コマンドと呼ばれることがある。
いくつかの例では、制御センタ102は、ストレージと、1つ以上のプロセッサ(複数可)と、メモリと、オペレーティングシステムと、を備え得る。ストレージ、プロセッサ(複数可)、メモリ、及びオペレーティングシステムは、通信インフラストラクチャを介して通信可能に結合され得る。任意選択で、制御センタ102は、通信インフラストラクチャを介して、入力/出力(I/O)デバイス(複数可)、ならびにネットワークを介した自律車両106などの1つ以上の他のコンピューティングデバイス及び/またはエンティティを介して、ユーザ、または環境と相互作用し得る。オペレーティングシステムは、1つ以上のアプリケーションを制御するために、他の構成要素と相互作用し得る。いくつかの例では、制御センタ102は、本明細書に記載されるようなさまざまなサブシステムを実装するために、任意のハードウェア及び/またはソフトウェアを実装し得る。
制御センタ102は、取得されたセンサデータを利用して、自律車両106が状況をナビゲートするために利用し得る命令114を決定し得る。いくつかの例では、オペレータ、制御センタ102の許可されたユーザ、オペレータのネットワーク、人工知能プログラム、コンピュータアプリケーション/プログラム、及び/またはそれらの変形例であり得るエンティティ104は、センサデータ108、及び自律車両106からの任意の他の送信されたデータに基づいて、命令114を決定し得る。エンティティ104は、センサデータ108、自律車両106のロケーション、及び自律車両106を取り巻く環境の他のさまざまな条件を利用して、命令114を決定し得る。エンティティ104は、命令114を決定するために、図2に関連して説明されるようなGUI214などのグラフィカルユーザインターフェース(GUI)を利用し得る。
命令114は、位置及び/または方位命令を含み得る。たとえば、命令114は、自律車両106に対して、3フィート前方に移動し、90度回転するように命令する。命令114はまた、ロケーションまたはウェイポイントも含み得る。たとえば、命令114は、自律車両106に、特定のロケーションまたはウェイポイントへの進行を命令することができ、これは、中間目的地として示され得る。さまざまな例では、命令114は、テキストファイルなどのコンピュータファイル、信号、及び/またはその変形例の形式にあり得る。いくつかの例では、命令114は、自律車両106に、自律車両106を異なるロケーションに移動させる移動を指示してもよく、異なる位置は、自律車両106が、ナビゲートできない状況の一部として存在する可能性のあるデッドロック位置から解放されることを可能にし得る。たとえば、車両が遮られているそれらのシナリオにおいて、遠隔操作者は、そのような状況を認識し、車両が交差点の通過を自律的に計画するのに十分なデータを受信することができるように、車両が3フィート前方に移動するための明示的な承認を提供し得る(指定された停止標識で停止することなどのいくつかのポリシーを潜在的に上書きする)。
命令114の受信に続いて、自律車両106は、上述されたような機械学習モデルを実装し得るそのさまざまな処理システムとともに命令114を利用して、状況をナビゲートし得る。いくつかの例では、自律車両106は、機械学習モデルを介して、命令114が実行可能であることを決定してもよく、単に命令114に従ってもよい。たとえば、命令114は、自律車両106が3フィート前方に移動しなければならないことを示してもよく、自律車両106は、機械学習モデルを介して、命令114が実行可能である(たとえば、自律車両106の3フィート前方に閉塞物がない)ことを決定し、3フィート前方に移動してもよい。他の例では、自律車両106は、機械学習モデルを介して、命令114が直ちに実行可能ではないことを決定し、命令114が実行可能になるまで、またはもはや必要ではなくなるまで、さまざまな中間ステップをとり得る。たとえば、命令114は、自律車両106が3フィート前方に移動しなければならないことを示しているが、バレーボールが2フィート前にある場合があり、自律車両106は、バレーボールが2フィート前になくなるまで待機して、3フィート前に移動するか、または命令114を完全に放棄して、制御センタ102からさらなる命令を要求してもよい。さまざまな例では、自律車両106は、機械学習モデルを介して、命令114を任意の能力で利用しないことから、遭遇した状況をナビゲートするステップを決定するために命令114を最小限に考慮して、遭遇した状況をナビゲートするためのステップを決定するために命令114を完全に利用することまで、任意の能力で命令114を利用することができることに留意すべきである。
図2は、環境204内の自律車両202の例200を示しており、自律車両202は、バレーボール206を含み、バレーボール206は、センサデータ208を制御センタ212に通信し、制御センタ212は、GUI214を利用し、命令210を自律車両202に送信する。さまざまな例では、自律車両202、センサデータ208、命令210、及び制御センタ212は、それぞれ、図1に関連して説明されたように、自律車両106、センサデータ108、命令114、及び制御センタ102と同じである。いくつかの例では、自律車両202は、図9を参照して以下に記載されるアーキテクチャ900の1つ以上のサブシステムを含み得る。
自律車両202は、自律車両202が環境204を通行することを必要とする目的地を用いてプログラムされ得る。自律車両202は、環境204を通行し、バレーボール206に遭遇し得る。バレーボール206は、自律車両202が目的地に進行するために機械学習モデルによって指示されたルートを塞いでいる可能性がある。自律車両202は、環境204及びバレーボール206を分析し、それがナビゲートすることが不可能である状況に遭遇したことを決定し得る。いくつかの例では、自律車両202は、自律車両202からのさまざまな基準及び他のセンサデータを利用して、状況がナビゲートされることが妨げられることを決定し得る。たとえば、例200を参照すると、自律車両202は、状況が、バレーボール206が目的地へのルートを塞いでおり、バレーボール206の周りを進行することがさまざまな道路規制に違反する可能性があることを決定することを含む、条件のセットを成立させることを分析し得る。
条件のセットが成立し、状況がナビゲートされることが不可能であることを決定した後、自律車両202は、ガイダンスを求めるために制御センタ212に通信し得る。自律車両202は、状況のさまざまな態様を制御センタ212に送信し得る。自律車両202は、自律車両202が備え得るさまざまなセンサから収集された、LIDARデータ、画像データ、及び/またはそれらの変形例などのデータであり得る、センサデータ208を送信し得る。制御センタ212は、センサデータ208を受信し、自律車両202がナビゲートすることができない状況を描いているGUI214を生成し得る。
GUI214、すなわちグラフィカルユーザインターフェースは、エンティティが制御センタ212と相互作用して命令210を決定することを可能にするユーザインターフェースであり得る。GUI214は、オペレータ、管理者、人工知能プログラム、及び/またはそれらの変形例など、制御センタ212へのアクセス権を有するエンティティによって動作され得る。エンティティは、自律車両202が状況をナビゲートするための次の行動方針、すなわち命令を決定し得る。たとえば、例200に関して、GUI214は、自律車両202が遭遇した、またナビゲートすることができない状況の視覚的描画を含み得る。例を続けると、エンティティは、自律車両202の最善の行動方針は、バレーボール206を周回することであることを決定し得る。例をさらに続けると、エンティティは、バレーボールを迂回することが機械学習モデルによって提供される命令と矛盾する可能性があるにもかかわらず、バレーボール206を迂回するための自律車両202の経路及び/またはロケーションを、GUI214を通じて選択し得る。さらに例を続けると、選択は、GUI214を通じてエンティティによって提出され得、制御センタ212によって適切な形式に処理され、命令210として自律車両202に送信され得る。さまざまな例では、GUI214を通じて、エンティティは、自律車両202に対する任意の形式の命令、たとえば、基本方位、半径、及び/または方位命令を入力し得、自律車両202のための命令210として送信され得る。発行された命令210は、自律車両202が実行するための小さな半径及び方位に限定または制限され得る。例では、命令210は、小さな範囲の動き(たとえば、3フィート移動して停止する)及び/または方位の変更(たとえば、90度シフトして停止する)であり得る。
自律車両202は、命令210を受信し、命令210の妥当性を判定し得る。命令210は、自律車両202が追従する位置、方向、及び/または速度などの情報を含み得る。命令は、自律車両202が、自律車両202の現在位置のある半径内にある中間目的地にナビゲートするための情報を含み得る。自律車両202は、自律車両202が備え得るさまざまな処理システムに命令210を入力し得る。自律車両202は、命令210及び環境204を分析し、命令210が実行可能であることを決定し得る。たとえば、自律車両202は、環境204を分析し、命令210によって指示される経路を遮る障害物がないことを決定し得る。自律車両202は、次いで、制限された速度で命令210に従い、中間目的地へと命令210を実行し得る。例を続けると、中間目的地は、バレーボール206が自律車両202の後方にあるようにバレーボール206を迂回する自律車両202の位置であり得る。すなわち、自律車両202は、命令210を利用し、バレーボール206の周りをナビゲートするために、その制御及びナビゲーション計画を自律的に調整し、その目的地へと進行し得る。
図3は、制御センタ302及び少なくとも1つ以上のGUI304の例300を示している。さまざまな例では、制御センタ302は、図2に関連して説明された制御センタ212と同じである。GUI304は、自律車両のための命令を決定するために制御センタ302によって利用されるグラフィカルユーザインターフェースであり得る。自律車両は、自律車両が備え得るさまざまな処理システムを利用して目的地に進行するであろうように、目的地を用いてプログラムされ得る。いくつかの例では、自律車両は、図9を参照して以下に記載されるアーキテクチャ900の1つ以上のサブシステムを含み得る。自律車両は、状況に遭遇し、制御センタ302から命令を求めることを決定し得る。制御センタ302からの命令を求めることの一部として、自律車両は、センサデータ、状況に関するデータ、及び/またはそれらの変形例などのさまざまなデータを、制御センタ302に提出し得る。
GUI304は、制御センタ302へのアクセス権を有するエンティティ306によって利用され得る。エンティティ306は、1つ以上のオペレータ、1つ以上の人工知能プログラム、制御センタ302の管理者であり得る1つ以上の管理者、1つ以上のコンピュータアプリケーション、及び/またはそれらの変形例であり得る。実施形態では、GUI304を動作させるエンティティ306は、自律車両のための命令を決定できる任意の適切なエンティティである。GUI304は、エンティティ306が自律車両のための命令を決定することを可能にするさまざまなグラフィック要素を含み得る。例300に描かれているように、GUI304は、自律車両及びその環境の描画と、エンティティ306が自律車両のための移動を決定することを可能にするさまざまな制御と、を含む。たとえば、エンティティ306は、矢印で選択された方向に自律車両が進行する距離を指定し、これにより自律車両がどのように進むかを制御する。いくつかの例では、エンティティ306は、4輪ステアリングを使用した自律車両に対する制御を有しているので、自律車両が所望の方位を実行するように指示し得る。例では、矢印ボタンを使用することは、自律車両が所望の方位に回転するように命令するために使用され得る。他の例では、速度などの追加のパラメータは、GUI304を介して制御センタにおいてエンティティ306によって入力され得る。
エンティティ306は、自律車両が状況をナビゲートするために、自律車両から受信されたデータに基づいて、方向及び距離を選択し得る。このようなデータは、自律車両に関連付けられているセンサに基づいて、自律車両を取り巻く環境の状態を反映し得るセンサデータを含み得る。例として、センサデータは、GUI304上の生の画像ストリームとして表され得る。エンティティ306による(たとえば、矢印を介した)方向及び選択された方向に移動するための距離の選択に続いて、制御センタ302は、選択された方向及び距離を、自律車両が選択された方向及び距離に移動するための適切な命令に処理し、その命令を自律車両に送信し得る。自律車両は、命令を機械学習モデルまたはプランナシステムを備え得るさまざまな処理システムとともに利用して、自律車両が以前にナビゲートすることができなかった遭遇した状況をナビゲートすることをもたらし得る、中間目的地にナビゲートし得る(たとえば、追加の可視性、及び運動学的方程式を解くための初期位置などに基づいて)。いくつかの例では、エンティティ306は、自律車両のための追加の方向及び距離をさらに選択し得、制御センタ302は、追加の選択をさらに処理し、自律車両のための第2の命令として送信し得る。第2の命令は、自律車両に第2の中間目的地に進行させ得、これは、自律車両に以前にナビゲートすることができなかった遭遇した状況をナビゲートすることを可能にし得る。第2の命令は、自律車両からの追加の入力を伴わずに、エンティティ306によって決定され、制御センタ302から送信され得る。さまざまな例では、GUI304は、さまざまな形式で描かれ得、自律車両が実行するための複数のオプション、たとえば、自律車両のための命令を決定するために利用され得る位置、方位、ロケーション、ウェイポイント、基本方位、距離、速度入力、及び/またはそれらの変形例を、エンティティ306が選択することを可能にするさまざまなユーザ要素を含み得ることに留意されたい。
図4は、例示的なシステム400を示しており、自律車両は、車両センサインターフェース410、車両制御インターフェース412、車両制御システム416、及び車両制御を備える車両コントローラ404を介して、センサデータ422を送信し、GUI406及びデータストア408を備える制御センタ402からの命令420を受信する。さまざまな例では、車両コントローラ404、センサデータ422、命令420、制御センタ402、及びGUI406を利用する自律車両は、それぞれ、図2に関連して説明されたように、自律車両202、センサデータ208、命令210、制御センタ212、及びGUI214と同じである。いくつかの例では、自律車両は、図9を参照して以下に記載されるアーキテクチャ900の1つ以上のサブシステムを含み得る。
車両コントローラ404は、自律車両の制御を提供するように構成されたさまざまなコンピューティングシステム、たとえば、1つ以上のサーバ、仮想コンピューティングインスタンス、データストアなど、及び/またはその変形例を含み得る。車両コントローラ404は、ハードウェア、ソフトウェア、及び/または両方のさまざまな組み合わせの形態で実装され得る。車両コントローラ404は、自律車両に物理的に存在し得るか、または自律車両によって1つ以上のネットワークを通じてアクセスされ得る。実施形態では、車両コントローラ404は、自律車両が自律的に動作するための制御を提供する。
車両コントローラ404は、車両センサインターフェース410を備え得る。車両センサインターフェース410は、自律車両が備え得るさまざまなセンサと自律車両との間で情報を通信するように設計されたコンピュータハードウェア及び/またはソフトウェアの集合であり得る。さまざまなセンサは、レーダー検出システム、LIDARシステム、飛行時間、イメージングシステム、GPSシステム、位置/方位システム、及び/またはそれらの変形例などのデバイスを含み得る。車両センサインターフェース410は、さまざまなセンサからデータを収集し、自律車両が備え得るさまざまなサブシステムにデータを提供し得る。さらに、いくつかの例では、車両センサインターフェース410は、制御センタ402などの外部関係者にデータを提供し得る。
車両コントローラ404はまた、車両制御インターフェース412も備え得る。車両制御インターフェース412は、車両制御システム416によって生成され得る制御を自律車両に提供するように構成されたコンピュータハードウェア及び/またはソフトウェアの集合であり得る。車両制御インターフェース412は、自律車両が車両制御インターフェース412を通じて完全に制御され得るように、自律車両のさまざまな構成要素とインターフェースし得る。車両コントローラ404はまた、車両制御システム416も備え得る。車両制御システム416は、自律車両に対する制御を決定するように構成されたコンピュータハードウェア及び/またはソフトウェアの集合であり得る。車両制御システム416は、ハードウェア及び/またはソフトウェアとして実装され得る、さまざまな機械学習及び人工知能プログラム及び/またはアプリケーションを備え得る。車両制御システム416は、車両センサインターフェース410によって提供され得るセンサデータを利用して、自律車両に対する制御を決定し得る。いくつかの例では、車両制御システム416は、目的地を提供され得、目的地に前進するための自律車両に対する制御を決定し得る。
制御センタ402は、データストア408を備え得る。データストア408は、データベースレコード、フラットファイル、及び他のデータオブジェクトのリポジトリであり得る。データストアの例には、ファイルシステム、リレーショナルデータベース、非リレーショナルデータベース、オブジェクト指向データベース、カンマ区切りファイル、及びその他のファイルが含まれる。いくつかの例では、データストア408は、制御センタ402とは分離され、データストレージサービスまたは他のネットワーク化されたコンピューティングサービスプロバイダまたはシステムによってホストまたは提供され得る。データストア408は、センサデータ、制御データ、及びナビゲーションデータなどのデータを記憶し得、これらのデータは制御センタ402によってアクセス及び利用され得る。
いくつかの例では、自律車両は、目的地を用いてプログラムされ得る(または他の方法で受信し得る)。自律車両は、目的地に前進するために車両コントローラ404を利用し得る。自律車両は、ナビゲートすることができないが、目的地に前進するためにはナビゲートしなければならない状況に遭遇することがある。自律車両は、自律車両からのセンサデータに少なくとも部分的に基づいて、ナビゲートすることができない状況を検出し得る。自律車両は、センサデータ422と、状況に関する他のデータ及びガイダンスを求める要求と、を制御センタ402に送信し得る。制御センタ402は、送信されたセンサデータ422を要求とともに受信し、これを分析し得る。オペレータなどのエンティティは、制御センタ402を利用して、GUI406を介して、自律車両が状況をナビゲートするための行動方針を選択し得る。行動方針は、自律車両に送信されて返され得、これは、自律車両によって、車両コントローラ404を介して命令420の形で受信され得る。自律車両は、状況をナビゲートするために、命令420及び車両コントローラ404のさまざまなシステムを利用し得る。
図5は、自律車両の車両センサ502及び車載車両コンピューティングシステム504と、制御センタ506との間の例示的な通信500を示している。さまざまな例では、自律車両及び制御センタ506は、図2に関連して説明された自律車両202及び制御センタ212と同じである。いくつかの例では、車載車両コンピューティングシステム504は、図4に関連して説明された車両コントローラ404の1つ以上のシステムを含み得る。いくつかの例では、自律車両は、図9を参照して以下に記載されるアーキテクチャ900の1つ以上のサブシステムを含み得る。
自律車両は、目的地を用いてプログラムされ得、自律車両が備え得る機械学習モデル、命令のセットを有するナビゲーション計画、及び/またはプログラムされた命令を利用して目的地に前進していてもよい。自律車両は、ナビゲートすることができない状況に遭遇することがある。状況は、自律車両が滞留することを引き起こしたオブジェクトまたは環境条件(または、他の場合に安全のためにポリシーに違反しなければならない状況、たとえば、緊急車両のために二重黄色線を越えて移動すること)を含み得る。自律車両は、自律車両からのセンサデータに少なくとも部分的に基づいて、状況をナビゲートすることができないことを検出し得、状況から滞留を解除するために何らかの支援を必要とし得る。動作508において、車両センサ502は、自律車両(「A/V」)が軌道を通行している間にセンサデータを取得し得る。車両センサ502は、さまざまなセンサデータを取得し得る。センサデータは、動作510において、1つ以上の車載車両コンピューティングシステム504に通信され得る。いくつかの例では、車両センサ502は、センサの測定値及びデータを、1つ以上の車両サブシステムの1つ以上のコンピューティングシステムに通信し得る。車載車両コンピューティングシステム504は、動作512において、センサデータを処理し得る。実施形態では、車載車両コンピューティングシステム504は、センサデータを分析して、ガイダンスの要求を制御506に送信するための条件のセットが成立したかどうかを判定する。すなわち、実施形態では、車載車両コンピューティングシステム504は、センサデータの処理に基づいて、自律車両が滞留しており、自律車両を滞留位置から解放するために、制御センタからの支援を必要とする可能性があることを決定し得る。少なくともいくつかの例では、そのような要求は、車両状態が停止しているか、またはゆっくり(たとえば、5mph)移動していること、及び車両がしばらくの間(たとえば、30s、1minなど)ある位置にいることの指示、特定の信号(たとえば、緊急車両のライト)の存在、妨害の量(たとえば、40%、50%など)、または他のものを含み得る。
いくつかの例では、車載車両コンピューティングシステム504、または車両の1つ以上のサブシステムの1つ以上のコンピューティングシステムは、動作514において、センサデータ(及び/またはその表現)のサブセット、及びさらなる命令のための要求をパッケージ化し得る。動作516において、車載車両コンピューティングシステム504は、パッケージを制御センタ506に送信し得る。いくつかの例では、車載車両コンピューティングシステム504は、センサデータを制御センタ506のための適切な形式に変換することによって、センサデータを処理し得る。いくつかの例では、車載車両コンピューティングシステム504は、セルラネットワーク及び/またはその変形例などの1つ以上のネットワークを介してパッケージを送信し得る。
制御センタ506は、動作518において、パッケージ化されたセンサデータのサブセット及び命令のための要求を受信すると、ナビゲーションのための命令を発行し得る。命令は、自律車両の現在位置及び/または方位から特定の半径または距離内にある中間目的地に到達するために、自律車両が進行すべき速度、距離、及び/または方向などの情報を含み得る。制御センタ506は、センサデータを利用して、自律車両がナビゲートすることができない状況をナビゲートするための適切な命令を決定し得る。制御センタ506は、命令を適切な形式に処理し得、動作520において、命令を自律車両に送信し、命令は、自律車両によって車載車両コンピューティングシステム504を介して受信され得る。いくつかの例では、制御センタ506は、送信されたパッケージ化されたセンサデータのサブセット及び命令の要求を制御センタ506が受信した1つ以上のネットワークを介して、命令を自律車両に送信し得る。他の例では、制御センタ506は、1つ以上の他のネットワークを利用して、命令を車載車両コンピューティングシステム504に送信し得る。さまざまな例では、そのような命令は、ある特定の位置(たとえば、現在位置から3メートル以内)、及び/または所望の方位(たとえば、90度のシフト)への動きに制限され得る。
動作522において、車載車両コンピューティングシステム504は、中間目的地にナビゲートするための命令を取得し得る。車載車両コンピューティングシステム504は、制御センタ506によって送信された命令を受信し、命令を処理して、命令から中間目的地を決定し得る。中間目的地は、自律車両に、ナビゲートすることができない状況をナビゲートすることを可能にする目的地であり得る。たとえば、状況は妨害であり得、例を続けると、中間目的地は、自律車両に、より多くのセンサの可視性を提供する場所であり得、中間目的地から、現在のロケーションを越えて前進し、状況をナビゲートすることができる。
動作524において、車載車両コンピューティングシステム504は、中間目的地にナビゲートするために、制御センタ506から取得された命令を用いて計画され得る。車載車両コンピューティングシステム504は、命令/ガイダンスを車載意思決定とともに利用して、自律車両が中間目的地までナビゲートするための制御を提供し得る。いくつかの例では、中間目的地へのナビゲートは、自律車両に、以前にナビゲートすることができなかった状況をうまく克服することを完全に可能にすることができないことがある。この場合、自律車両は、状況が解決またはナビゲートされるまで、動作508~524を繰り返してもよい。実装に応じて、例示的な通信500のステップは、図5に描かれたものよりも多いまたは少ないステップで、異なる順序で、さらには並行して実行されてもよいことに留意されたい。さらに、例示的な通信500は、図示の例に描かれたものよりも多い、少ない、または異なるエンティティによって利用されてもよい。
図6は、環境を処理し、目的地にナビゲートするための例示的なプロセス600を示している。プロセス600は、たとえば、図5に関連して説明されたように、たとえば、車載車両コンピューティングシステム504などのロボットデバイスもしくは自律車両、またはそのサブシステムなどによってなど、任意の好適なシステムによって実行され得る。他の例では、プロセス600の異なる動作は、ロボットデバイス、自律車両、たとえば、図2に関連して説明された自律車両202、及び/またはそれらの変形例などのさまざまなエンティティによって実行され得る。
プロセス600を実行するシステムは、動作602において、さまざまなポリシー及びアルゴリズムに従って、目的地に向かう途中で自律車両の動作中に取得されたセンサデータを受信し得る。自律車両は、目的地に向かって通行していてもよく、目的地に向かって進行するために利用され得るさまざまなアルゴリズムを含み得る。自律車両はまた、さまざまなサブシステム及びセンサも備え得、目的地に向かう途中でセンサデータを生成し得る。センサデータは、LIDARデータ、画像データ、及び/またはそれらの変形例などのデータを含み得る。
プロセス600を実行するシステムは、動作604において、センサデータに少なくとも部分的に基づいて、自律車両が進行している環境に存在する条件が、自律車両を取り巻く環境の条件に起因して、自律車両が目的地に前進することを妨げる第2のシステムまたは異なるシステム(たとえば、制御センタ、コマンドセンタ、携帯電話、またはラップトップなど)からガイダンスを取得する必要性を示しているかどうかを判定し得る。さまざまな例では、条件のセットは、道路規制の遵守、潜在的なリスク、ナビゲーションの可能性、及び/またはそれらの変形例などの条件を考慮して、環境内で動作する自律車両の現在位置及び状況を分析することを含み得る。たとえば、システムは、センサデータを通じて、バレーボールが自律車両の進行を塞いでおり、バレーボールを通過して目的地に続行するための実行可能な経路がないことを検出し得る。別の例では、システムは、センサデータを通じて、自律車両が特定の時間量(または時間制限、閾値)を経過して移動せず、現在の位置に滞留していることを検出し、このように、自律車両が滞留している位置にいることを示し得る。例を続けると、システムは、自律車両が滞留していることを検出した結果として、1つ以上の条件の成立が識別され、その後、ガイダンスを求めるように制御センタに求めるか、または要求を行う。ガイダンスを取得することによって、自律車両は、そのガイダンスを使用してバレーボールの周りをナビゲートし得る。少なくともいくつかの例では、車両は、緊急車両、第一応答者車両などの存在を判定することに少なくとも部分的に基づいて、ガイダンス/命令を求めることを決定し得る。
プロセス600を実行するシステムは、動作606において、ガイダンスの要求とともに、センサデータの少なくともサブセットを第2のシステムに送信し得る。システムは、成立した条件のセット及び環境に関するセンサデータ、ならびに自律車両が目的地に前進することを妨げる状況を克服するためのガイダンスの要求を、1つ以上のネットワークを介して異なるシステムに送信し得る。第2のシステムは、センサデータ及び要求を受信し、自律車両のための命令を決定し得る。異なるシステムは、目的地への自律車両が目的地に前進することを妨げる状況を克服するための自律車両のための命令を含む応答を返し得る。自律車両のための命令は、適用されたときに、自律車両が特定の速度(たとえば、5mph)以下で小さな動きを実行できる小さなデータのセットであり得る。
プロセス600を実行するシステムは、動作608において、自律車両を目的地に向かう途中の中間目的地にナビゲートするための命令を含む、要求に対する応答を受信し得、中間目的地は自律車両の現在位置のある半径内にある。応答は、異なるシステムから1つ以上のネットワークを介して送信され得る。命令は、自律車両に中間目的地への進行を指示し得る。いくつかの例では、中間目的地は、自律車両が最終的に目的地に到達し得るように、自律車両が現在ある状況をナビゲートまたは迂回するために前進することを可能にする目的地であり得る。さまざまな例では、中間目的地は、自律車両の現在位置の近くに位置し得る。いくつかの例では、中間目的地は、一定の距離を進行する必要を伴わない、自律車両の回転であり得る。
プロセス600を実行するシステムは、動作610において、自律車両を、中間目的地へと環境を通行するように制御し得る。自律車両は、プランナシステムを使用して、目的地に向かう途中で、どのように命令を完了するかを判定し得る。システムは、計画システムへの入力として命令を利用し得る。自律車両は、中間目的地へと、続いて目的地へと前進するために、計画システム及び命令を利用し得る。他の例では、自律車両は、命令に従って前進する前にさらなるアクションが必要であり、命令に従って前進する前にさらなる追加のアクションが必要であることを決定し得る。さらに別の例では、自律車両は、命令が実行可能でないことを決定し、異なるシステムからさらなるガイダンスを要求し得る。実装に応じて、プロセス600のステップは、図6に描かれたものよりも多いまたは少ないステップで、異なる順序で、さらには並行して実行されてもよいことに留意されたい。
図7は、目的地までナビゲートするための例示的なプロセス700を示している。プロセス700は、たとえば、図5に関連して説明されたように、たとえば、車載車両コンピューティングシステム504などのロボットデバイスもしくは自律車両、またはそのサブシステムなどによってなど、任意の好適なシステムによって実行され得る。他の例では、プロセス700の異なる動作は、ロボットデバイス、自律車両、たとえば、図2に関連して説明された自律車両202、及び/またはそれらの変形例などのさまざまなエンティティによって実行され得る。
プロセス700を実行するシステムは、動作702において、目的地まで前進する自律車両からセンサデータを取得し得る。さまざまな例では、プロセス700を実行するシステムは、自律車両が備えるシステムであり得る。自律車両は、ルートを介して目的地に前進するようにプログラムされ得、ルートを介して目的地まで進行するために、さまざまな機械学習モデル及び/またはアプリケーションを利用し得る。目的地に向かう途中で、自律車両は、ナビゲートすることができない、または滞留する状況に遭遇することがある。プロセス700を実行するシステムは、動作704において、自律車両がある位置で滞留していることを検出し得る。位置は、自律車両がそこからナビゲートすることができない位置であり得る。位置はまた、自律車両を含む環境の状態の結果でもあり得、この環境の状態は、自律車両が目的地までのルートを完了することを妨げ得る。
プロセス700を実行するシステムは、動作706において、ガイダンスを要求し得る。システムは、図5に関連して説明した制御センタ506のような制御センタにガイダンスを要求してもよい。システムは、ガイダンスを要求し、位置に関するさまざまなデータ、及び自律車両が備え得るセンサからのセンサデータを、制御センタに提供し得る。プロセス700を実行するシステムは、動作710において、ガイダンスの命令を取得し得る。命令は、自律車両からの提供されたデータを分析することによって制御センタで生成され、自律車両が滞留している位置からナビゲートするための行動方針が、命令の形式で決定され得る。いくつかの例では、命令は、制御センタのコンピューティングデバイス上で動作する別の機械学習モデルによって生成される。すなわち、制御センタにおける機械学習モデルは、自律車両からのデータを分析し、オペレータまたはユーザの支援を伴わずに命令を生成するように構成され得る。
プロセス700を実行するシステムは、動作714において、命令とともにプランナシステムを使用し得る。いくつかの例では、自律車両は、自律車両を制御及びナビゲートするためにプランナシステムを利用するさまざまな処理システムを備え得る。自律車両は、そのさまざまな処理システムを利用して、命令を処理して、命令の実行可能性及び命令を実行するための制御を決定し得る。プロセス700を実行するシステムは、動作716において、中間目的地及び/または方位への動作を実行し得る。いくつかの例では、命令は、自律車両の現在位置から離れた制限された半径であり得る中間目的地への座標を示し得る。例として、中間目的地は、自律車両の現在位置から半径5フィート以内であり得る。さまざまな例では、システムによって実行される動作は、命令に基づき得る。システムは、自律車両に中間目的地まで前進させ得る、自律車両に関連するさまざまな動作を実行し得る。いくつかの例では、自律車両は、中間目的地まで前進することができない場合がある。いずれの場合も、プロセス700を実行するシステムは、動作718において、自律車両がまだ同じ位置で滞留しているかどうかを判定し得る。
自律車両が同じ位置で滞留している場合、プロセス700を実行するシステムは、動作706に戻り、追加のガイダンスを要求し得る。システムは、システムが命令を利用及び/または完了することを妨げている可能性のある追加の条件、たとえば、位置の変化、新たな障害物、及び/または異物などを識別し、第2のガイダンスの要求を提示し得る。システムは、自律車両が異なる特定の方法でナビゲートするための第2の命令を取得し得、これは、自律車両が滞留を解除するようになることを可能にし得る。システムは、自律車両が同じ位置で滞留しないようになるまで、動作706~718を繰り返してもよい。自律車両が同じ位置で滞留しなくなった場合、プロセス700を実行するシステムは、動作720において、最終目的地まで動作を継続し得る。システムは、そのさまざまな処理システムを利用して、最終目的地までの前進を継続し得る。実装に応じて、プロセス700のステップは、図7に描かれたものよりも多いまたは少ないステップで、異なる順序で、さらには並行して実行されてもよいことに留意されたい。
図8は、センサデータを処理し、命令を送信するためのプロセス800の例を示している。プロセス800は、図5に関連して説明された制御センタ506など、任意の好適なシステムによって実行され得る。他の例では、プロセス800の異なる動作は、ロボットデバイス、自律車両、サービス、システム、及び/またはそれらの変形例など、さまざまなエンティティによって実行され得る。
プロセス800を実行するシステムは、動作802において、目的地までの環境を通行する自律車両のセンサからセンサデータの少なくとも一部分を受信し得る。すなわち、制限された速度で動作している間に、デバイス(たとえば、自律車両)からのデータ及び/またはそれに由来するデータを受信し、複数のセンサデータは、目的地に向かう途中のデバイスの環境の状態を反映する。さまざまな例では、デバイスは、図2に関連して説明された自律車両202などの、自律車両のような自律デバイスであり得る。デバイスは、ナビゲートするために、さまざまな機械学習モデルを含み得る、さまざまな処理システムを備え、利用し得る。デバイスは、命令のセットを処理し、プランナシステムを使用し、及び/またはデバイスが目的地まで自律的にナビゲートするであろうように、目的地を用いてプログラムされ得る。デバイスは、ナビゲートすることができない状況に遭遇することがある。デバイスは、状況に遭遇している間、制限された速度で動作し得る。デバイスは、状況を認識し、その後、停止及び/または減速し得る。デバイスは、デバイスが備え得るさまざまなセンサから収集及び処理されたLIDARデータ及び/または画像データなどのデータであり得るセンサデータ(及び/またはそれに由来するデータ)と、状況に関する追加のデータとを、プロセス800を実行するシステムに送信し得る。さまざまな例では、プロセス800を実行するシステムは、804において、ディスプレイに、環境内の自律車両の第1の表現及びセンサデータの第2の表現を表示させ得る。実施形態では、ディスプレイは、環境内の自律車両の第1の表現及び第2の表現を表示するための受信された送信データに基づく、図2に関連して説明されたGUI214などのGUIである。
プロセス800を実行するシステムは、806において、自律車両が進行するための中間目的地を示す入力を受信し得、その指示は、第1の表現における自律車両のある半径に制限され、位置または方位のうちの1つ以上を含む。システムは、システムへのアクセス権を有し得るオペレータなどの1つ以上のエンティティを介して入力を取得し得る。プロセス800を実行するシステムは、生成されたGUIを介して入力を取得し得る。GUIに関するさらなる情報は、図2、図3、図4の説明に見出すことができる。入力は、中間目的地まで実行される位置または方位のうちの1つ以上を示してもよく、中間目的地は、デバイスがナビゲートすることができない遭遇した状況をナビゲートするために、デバイスが進行することができる目的地であり得る。
プロセス800を実行するシステムは、入力を命令に処理し得る。入力は、デバイスのための適切な形式に処理され得る。プロセス800を実行するシステムは、808において、デバイスに、機械学習モデルを使用して、目的地に向かう途中の中間目的地まで進行するように、デバイスに命令を送信し得る。例では、デバイスへの命令は、デバイスをその現在位置から離れる方向に、一定の距離を非常に遅い速度で移動させ、次いで停止させ得る。別の例では、デバイスへの命令は、デバイスを非常に遅い回転速度で45度回転させ、次いで停止させ得る。デバイスは、命令を受信し、プランナシステム、機械学習モデル、及び/または任意の種類の処理システムを利用して、命令を処理し得る。いくつかの例では、デバイスは、定義された時間量、及び/またはその変形例を待機して、中間目的地まで進行するなど、デバイスの計画によって決定され得るさまざまな中間ステップをとり得る。いくつかの例では、さまざまな処理システム及び/または機械学習モデルが、中間目的地までの進行が不可能であることをデバイスに示し得る。デバイスは、さらなる命令のためにプロセス800を実行するシステムに連絡し得る。実装に応じて、プロセス800のステップは、図8に描かれたものよりも多いまたは少ないステップで、異なる順序で、さらには並行して実行されてもよいことに留意されたい。
図9は、自律車両のアーキテクチャ(たとえば、構成要素)900に従って使用され得る要素の例を示している。自律車両は、さまざまなコントローラに結合された自律車両動作システム902を有するものとして特徴付けられてもよく、このコントローラは、次いで、自律車両のさまざまな構成要素に結合されて、運動、電力管理などを処理する。自律車両動作システム902の要素は、本明細書に記載されるように、オブジェクト識別及び環境分析を実装するための計算システムを提供する。これらの要素は、自律車両以外の他の用途で使用されてもよい。
アーキテクチャ900は、本明細書に記載されるシステム、方法、及び装置の態様を実装するために、さまざまなハードウェア、ソフトウェア、ファームウェアなどを含む1つ以上のコンピュータシステム(複数可)を指定し得る。たとえば、自律車両動作システム902は、周囲分析システム903及び自律車両のさまざまな態様に使用可能な他の構成要素を含み得る。周囲分析システム903は、自律車両動作システム902が、モータ、ステアリング、オブジェクト回避などのためのコントローラを動作させるために使用し得る情報を取り込むために使用され得る。
一実施形態では、周辺分析システム903は、ロボットモニタであり、軌道の推奨を発行するようにプログラムされている。周囲分析システム903は、実装を単純化するために、別個のチームが特定のサブシステムのために開発できるようにするために、または他の理由のために、複数のサブシステムとして編成され得る。いくつかの例では、サブシステムは独立して実装され、一方、他の例では、複数のサブシステムが部分的または完全に一緒に統合される。サブシステムは、LIDARサブシステム904、カメラサブシステム906、レーダーサブシステム908、ソナーサブシステム910、ボクセル空間サブシステム912、地面判定サブシステム914、クラスタリングサブシステム916、補間サブシステム918、オブジェクト判定サブシステム920、動的オブジェクト判定サブシステム922、レイキャスティングサブシステム924、追跡サブシステム926、計画サブシステム928、センサ較正サブシステム930、注釈サブシステム932、及び場合によっては他のサブシステム934を含み得る。
所定のサブシステムは、他のサブシステムと通信し、入力を受信し、出力を提供するためのプログラムコードまたはハードウェアで実装され得る。入力のいくつかはセンサからのものであり得る。本明細書のいくつかの説明では、読みやすさのために、サブシステムは、サブシステムがデータまたは信号を取得するセンサ、及び/またはサブシステムがデータまたは信号を出力するエミッタを含むものとして説明されることがある。たとえば、ソナーサブシステムは、超音波センサを有するものとして説明され得るか、または超音波センサから信号を受信するものとして説明され得る。別の例として、カメラサブシステムは、カメラ及びディスプレイを有するものとして説明され得るか、または信号またはデータをカメラから受信し、信号またはデータをディスプレイに送信するものとして説明され得る。
図9には示されていないが、サブシステム間の通信は必要に応じて提供されてもよいことを理解すべきである。所与のサブシステムは、何らかのチャネルを介してデータを他のサブシステムに直接送信することによって、別のサブシステムと通信し得、周囲分析システム903は、サブシステムがその間にデータ及び/または信号を渡すことによって通信できるバスサブシステムまたは通信インフラストラクチャを備え得る。周囲分析システム903はまた、外部データを受信し、周囲分析システム903の外部に情報を通信するようにも構成され得る。
所与のサブシステムは、それ自体の計算処理のいくつかを有してもよく、それは、その所与のサブシステムに専用のハードウェアによって実行されてもよく、またはそのサブシステムの計算を実行するように割り当てられたプロセッサまたは回路によって実行されてもよく、場合によっては、サブシステムは、完全にソフトウェアに実装され、プログラムコードメモリ及びデータ記憶メモリなどのメモリ938を使用して1つ以上のプロセッサ(複数可)936によって実行され得る。メモリは、RAMなどの変数及びデータの一時的記憶のためのもの、及び恒久的記憶(すなわち、ある寿命期間、リフレッシュ、電力などを必要とすることなく持続するデータ)のためのメモリであってもよく、明示的に言及されていなくても、示された箇所では暗示されるべきである。たとえば、サブシステムがデータベース上で動作している、またはデータを記憶しているものとして説明されている場合、電子的に読み取り可能な形態でデータを記憶するための何らかの形態のメモリが存在するであろう。いくつかの場合では、データベースまたはメモリ内のデータストレージは、1つのサブシステムに固有ではなく、その内部にはない。このような場合、メモリには複数のサブシステムからアクセス可能である。たとえば、あるサブシステムは、そのサブシステムによって取得されたセンサデータに基づいて記録を作成し、それらの記録をデータベースまたは他のデータ構造に書き込み、次に、別のサブシステムがそのデータを読み取って使用することができる。サブシステムがソフトウェアに実装されている場合、サブシステムは、そのサブシステムに固有のプロセッサ、またはより一般的なプログラムコードメモリ及びプロセッサに結合されたプログラムコードを含むことがある。
いくつかの例では、周囲分析システム903が自律車両に使用されている。いくつかの例では、周囲分析システム903は、自律車両に知覚機能及び計画機能性を提供し得る。一般に、周囲分析システム903は、LIDAR知覚、レーダー知覚、視覚(カメラ)知覚、音響知覚、セグメント化及び分類、追跡及び融合、ならびに予測/計画とともに、ドライブコントローラ、電力コントローラ、環境コントローラ、及び通信コントローラなどの他のコントローラとのインターフェースを提供し得る。
自律車両動作システム902は、計画システム940、道路ナビゲーションシステム942、マニフェストマネージャ944、及び監査/故障ロガー946を含み得る。自律車両動作システム902はまた、さまざまなセンサ950及びエミッタ952を含むか、またはこれらにインターフェースすることもできる。
自律車両動作システム902は、モータ980、ステアリング982、ブレーキ984、及びサスペンション986と相互作用するドライブコントローラ970、バッテリ988及びインバータ/チャージャ990と相互作用する電力コントローラ972、暖房、換気、空調(HVAC)構成要素992、及び照明994と相互作用する環境コントローラ974、及び自律車両と、自律車両とともに使用されるデバイスと、外部デバイスとの間の通信を、ネットワーク、セルラーチャネル、またはWi‐Fiチャネル996などを介して処理する通信コントローラ976とインターフェースし得る。自律車両動作システム902、コントローラ、及び自律車両に設置された車両構成要素の組み合わせは、絶え間ない人間の介入を伴わずに安全にナビゲートすることができる車両を提供することができる。
周囲分析システム903及びそのサブシステム、LIDARサブシステム904をここでも参照すると、LIDARサブシステム904は、本明細書に記載されるように、セグメント化のためのLIDARデータを捕捉するための1つ以上のLIDARセンサを含み得、本明細書に詳細に記載されるように、任意の1つ以上の深度センサを備え得る。いくつかの例では、LIDARサブシステム904は、複数のLIDARセンサからのLIDARデータを組み合わせるかまたは合成して、LIDARデータのメタスピンを生成するための機能性を含み得、これは、複数のLIDARセンサに基づくLIDARデータを参照し得る。LIDARデータのメタスピンの場合、LIDARサブシステム904は、メタスピンデータの仮想起点(たとえば、すべてのLIDARセンサに共通の座標基準フレーム)を決定し、1つ以上のLIDARセンサの各々からのLIDARデータが仮想起点に関して表現されるようなデータ変換を実行するための機能性を含み得る。本開示の文脈で理解され得るように、LIDARサブシステム904は、データを捕捉し、後続の処理のために、データセットを周囲分析システム903の他のサブシステムに送信し得る。
カメラサブシステム906は、画像セグメント化及び/または分類のために視覚データを捕捉するための、1つ以上のカメラセンサを含むか、またはそれにインターフェースし得る。カメラサブシステム906は、任意の数及びタイプのカメラセンサを含み得る。たとえば、カメラサブシステム906は、任意のカラーカメラ、モノクロカメラ、深度カメラ、RGB-Dカメラ、ステレオカメラ、赤外線(IR)カメラ、紫外線(UV)カメラなどを含み得る。本開示の文脈で理解され得るように、カメラサブシステム906は、データを捕捉し得、後続の処理のために他のサブシステムにデータセットを送信し得る。たとえば、カメラサブシステム906からのデータは、別のサブシステムによってそのように処理されるマルチチャネル画像の1つ以上のチャネルとして含まれ得る。
レーダーサブシステム908は、環境内のオブジェクトの範囲、角度、及び/または速度を捕捉するための1つ以上のレーダーセンサを含み得る。本開示の文脈で理解され得るように、レーダーサブシステム908は、データを捕捉し、後続の処理のために、データセットを周囲分析システム903の他のサブシステムに送信し得る。たとえば、レーダーサブシステム908からのデータは、別のサブシステムに提供されるマルチチャネル画像の1つ以上のチャネルとして含まれ得る。
ソナーサブシステム910は、環境内のオブジェクトから音響情報を捕捉するために、1つ以上のスピーカまたはサウンドエミッタ及び1つ以上のマイクロフォン(マイクロフォンアレイなど)を含むか、またはそれらにインターフェースすることができる。追加として、または代替では、そのようなソナーサブシステム910は、さまざまな超音波トランスデューサを備え得る。たとえば、ソナーサブシステム910は、超音波トランスデューサに音のパルスを放出させることができ、環境内のオブジェクトに関連する位置及び/または動き情報を決定するために、エコーを聴取し得る。本開示の文脈で理解され得るように、ソナーサブシステム910は、データを捕捉し、後続の処理のためにデータセットを他のサブシステムに送信し得る。たとえば、周囲分析システム903の別のサブシステムは、オブジェクトをより正確にセグメント化するために、及び/またはオブジェクトに関する情報を決定するために、または他の目的のために、ソナーサブシステム910から取得されたデータをLIDARサブシステム904から取得されたデータと融合し得る。
自律車両動作システム902は、図示されたもの以外の自律車両における使用に適した任意の数またはタイプの他のセンサを含み得る。さまざまなセンサ950は、超音波トランスデューサ、ホイールエンコーダ、環境センサ、マイクロフォン、慣性測定ユニット(複数可)(IMU)、加速度計、ジャイロスコープ、磁気計、温度センサ、湿度センサ、光センサ、全地球測位システム(GPS)センサ、ロケーションセンサなどを含み得るが、これらに限定されない。
いくつかの例では、LIDARサブシステム904、カメラサブシステム906、レーダーサブシステム908、及び/またはソナーサブシステム910は、改善されたセグメント化のためにデータを結合及び/または合成するために、1つ以上データセットを周囲分析システム903の他のサブシステムに提供し得る。
周囲分析システム903は、テストで部分的に使用するために、コンピュータシミュレーションアルゴリズムによって生成されたシミュレートされたデータのためのストレージをさらに含み得る。いくつかの例では、シミュレートされたデータは、カメラデータ、LIDARデータ、レーダーデータ、ソナーデータ、慣性データ、GPSデータなど、任意のタイプのシミュレートされたデータを含み得る。いくつかの例では、周囲分析システム903は、動作を検証するために、及び/または本明細書に記載されるように機械学習アルゴリズムをトレーニングするために、シミュレートされたデータに対して、本明細書に記載される変換動作を修正、変換、及び/または実行することができる。たとえば、実験室環境でいくつかの機能性をテストするために、実際のセンサデータであるかのように、シミュレートされたセンサデータ/信号をサブシステムに供給して、いくつかのサブシステムの性能をテストすることができる。
ボクセル空間サブシステム912は、データをボクセルマップに変換またはマッピングするための機能性を含み得る。たとえば、ボクセル空間サブシステム912は、LIDARデータ、カメラデータ、レーダーデータ、ソナーデータなどを受信し、個々のデータ点を、環境内の三次元空間を表すボクセルマップにマッピング、変換、または関連付けることができる。ボクセル空間は、自律車両を取り巻く空間などの3次元環境の論理表現であり、個別の小さなボリューム、たとえばボクセルとして表される。ボクセルマップは、ボクセル空間内のそれぞれのボクセルのデータまたは値を提供する。三次元環境表現として、ボクセルマップをメモリに記憶し、プロセッサで操作することができる。
いくつかの例では、ボクセル空間サブシステム912は、ボクセル空間の長さ、幅、及び高さを含む、ボクセル空間の寸法を定義することができる。さらに、ボクセル空間サブシステム912は、個々のボクセルのサイズを決定してもよい。いくつかの例では、ボクセルは、ボクセル空間全体で均一なサイズ及び形状であり得るが、いくつかの例では、ボクセルのサイズ及び/または密度は、ボクセル空間内の相対的なロケーションに基づいて変化し得る。たとえば、ボクセルのサイズは、ボクセル空間の起点または中心からのボクセルの距離に比例して増加または減少し得る。追加として、または代替では、そのようなボクセル空間サブシステム912は、仮想起点とボクセル空間の起点との間の変換を含み得る。いくつかの例では、ボクセル空間サブシステム912は、データを含まないボクセル、またはデータ閾値を下回るある量のデータを含むボクセルがボクセルマップに存在する必要はなく、それらのボクセルの値を仮定または無視することができる、疎らなボクセル空間を生成するための機能性を含み得る。そのような例では、ボクセルマップは、オクトマップ、またはボクセルハッシュなどとして編成され得る。いくつかの例では、ボクセル空間サブシステム912は、データがボクセル空間にマッピングされ、ボクセルマップに記憶されるときにデータをフィルタリングすることによって、ボクセルマップのデータまたはボクセルマップを生成するために使用されるデータのノイズの量を低減するための機能性を含み得る。たとえば、フィルタリングは、ボクセルあたりのデータの閾値量を下回るデータ(たとえば、ボクセルに関連付けられているLIDARデータ点の数)、またはボクセルの所定の数を上回るデータ(たとえば、いくつかの近接するボクセルに関連付けられているLIDARデータ点の数)を除去することを含み得る。いくつかの例では、ボクセル空間サブシステム912は、データが経時的に収集されるとき、またはボクセル空間が対応する実世界環境内をナビゲートする自律車両に応答して、ボクセルマップを更新することができる。たとえば、ボクセル空間サブシステム912は、自律車両が環境内をナビゲートするときに、ボクセルマップからデータを追加し、及び/またはデータを破棄することができる。
いくつかの例では、ボクセル空間サブシステム912は、ボクセルマップ、及びボクセルサイズ、方位、及びエクステントなどの他のボクセル空間パラメータを初期化することができ、初期のボクセルマップを空き空間を表すものとして扱い、ボクセル空間サブシステム912は、LIDARデータが経時的に捕捉されるにつれて、オブジェクトの表現を構築することができる。他の例では、ボクセル空間サブシステム912は、全体マップデータを使用してボクセルマップ及びボクセル空間パラメータを初期化することができ、これにより局所的に捕捉されたLIDARデータが、全体マップ空間内で自律車両を局所化するために使用され得、また全体マップのボクセルをクリーンアップまたはクリアするために使用され得る。
地面判定サブシステム914は、ボクセル空間内の環境に関連付けられている地面を判定するために、ボクセル空間の個々のボクセルを解析するための機能性を含み得る。たとえば、地面判定サブシステム914は、特定のボクセルに関連付けられているデータを表す平面を推定すること、及びその平面の法線ベクトルを決定することによって、局所的に平坦なボクセルを判定し得る。たとえば、地面判定サブシステム914は、ボクセルマップのボクセルに対して主成分分析を実行して、ボクセルに関連付けられているデータに関連付けられている最小の主成分を決定し得る。いくつかの例では、主成分分析のために、最小の固有ベクトルは、平面の法線ベクトルに対応し得、一方、固有ベクトルに関連付けられている固有値は、最小の固有ベクトルの方向における特定のボクセルに関連付けられているデータの拡散またはレベルに対応し得る。
別の例として、限定されるものではないが、そのような表面法線決定は、ボクセル内の点PからPの最近傍のうちの2つへの方向を示すベクトルの外積の法線を算定することによって行ってもよい。別の例として、限定されるものではないが、そのような表面法線決定は、個々のボクセルに関連付けられている共分散行列に対して固有値分解を実行することによって行ってもよい。いくつかの例では、地面判定サブシステム914は、隣接するボクセルに関連付けられている値に基づいてターゲットボクセルに関連付けられている表面を決定することによって、ターゲットボクセルが局所的に平坦なボクセルであるかどうかを判定し得る。さらに、いくつかの例では、地面判定サブシステム914は、マーチングキューブタイプのアルゴリズムを利用して、ボクセルに関連付けられている平均点値に基づいてメッシュを作成し、少なくとも3つの点を含む三角形を決定して表面を作成し得る。さらに、地面判定サブシステム914は、自律車両の方向または方位に対応し得る基準方位を受信し得る。地面判定サブシステム914は、ボクセルに関連付けられている法線ベクトルが、上述したように基準方位の閾値量内にある場合、ボクセルが局所的に平坦なボクセルであることを決定し得る。
クラスタリングサブシステム916は、地面判定サブシステム914と連携して動作し、おそらくメモリ内の地面領域の表現を拡張させることによって、LIDARデータの起点に最も近い表面から開始するか、または自律車両の下にある表面から開始して、地面領域を決定し得る。すなわち、自律車両に近接する実世界の位置に対応するボクセル空間内の位置にあるボクセルは、クラスタリングサブシステム916によってシードボクセルとして使用され得、次いで、それらのシードボクセルからボクセルの表現を拡張することができる。クラスタリングサブシステム916は、隣接する局所的に平坦なボクセルが同じクラスタに属することを決定し得、地面平面を包含するように領域を拡張させ得る。さらに、クラスタリングサブシステム916は、以下で考察されるオブジェクト判定サブシステム920と連携して動作して、クラスタ内のまたは他の場所のボクセルが特定のオブジェクトに関連付けられていることを決定し得る。クラスタリングサブシステム916は、領域拡張(region growing)、階層的クラスタリング(hierarchical clustering)、分割クラスタリング(partitional clustering)、平方誤差クラスタリング(square error clustering)、グラフ理論クラスタリング(graph theoretic clustering)、混合‐分解クラスタリング(mixture-resolving clustering)、平均シーククラスタリング(mean-seeking clustering)、k平均クラスタリング(k-means clustering)、Nカットクラスタリング(N-cut clustering)、近接クラスタリング(proximity clustering)などを含むが、これらに限定されない、さまざまなクラスタリングアルゴリズムを利用してもよい。
補間サブシステム918は、地面判定サブシステム914及び/またはクラスタリングサブシステム916と連携して動作し、さまざまなクラスタを組み合わせるかまたは一緒に関連付けて、地面平面の表現を拡大し得る。たとえば、局所的に平坦なボクセルは、自律車両に関連付けられている地面領域を決定するときに単一のクラスタを形成しない場合があり、その場合、補間サブシステム918は、点間を補間して、勾配が地面平面クラスタを拡張させるための閾値勾配を上回るかまたは下回るかを判定することができる。地面判定サブシステム914、クラスタリングサブシステム916、及び補間サブシステム918の追加の例は、これらのサブシステムを理解するために必要に応じて、本明細書の他の箇所で提供され得る。
オブジェクト判定サブシステム920は、ボクセルマップによってボクセル空間に表されるオブジェクトを判定するための機能性を含み得る。たとえば、オブジェクト判定サブシステム920は、地面判定サブシステム914から地面平面についての指示を受信し、及び/または局所的に平坦なボクセルのいくつかまたはすべてについての指示を受信することができ、ボクセルマップが他のボクセルの値のみを含むように、ボクセル空間から地面に関連付けられているボクセルを除去することができる。次に、オブジェクト判定サブシステム920は、残りのボクセルを解析して、ボクセルの接続性に基づいてオブジェクトを判定し得る。たとえば、オブジェクト判定サブシステム920は、クラスタリングサブシステム916と連携して動作して、隣接するボクセルが同じオブジェクトの一部であるとみなされるべきであることを判定することによって、オブジェクトに対応するボクセル空間内の領域を拡張させることができる。オブジェクト判定サブシステム920は、特定のオブジェクトに関連付けられているすべてのボクセルにオブジェクト識別子を割り当て得、いくつかの例では、オブジェクト判定サブシステム920によって割り当てられるかまたは判定されたオブジェクト識別子は、特定のオブジェクトを含むボクセルに関連付けられているLIDARデータに伝搬され得る。オブジェクト、地面、クラスタなどに関する追加の情報は、ボクセルマップとともに、または個別のデータ構造として記憶され得る。オブジェクト判定サブシステム920の追加の例は、オブジェクト判定サブシステム920を理解するために必要に応じて、本明細書の他の場所で提供され得る。
動的オブジェクト判定サブシステム922は、ボクセル空間に対応する空間に存在すると判定され得る静的オブジェクトと動的オブジェクトとを区別するための機能性を含み得る。たとえば、動的オブジェクト判定サブシステム922は、データを経時的に蓄積して、第1の時間におけるボクセル値を第2の時間におけるボクセル値と比較して、ボクセルの占有が経時的に変化したかどうかを判定することによって、オブジェクトの動きを判定し得る。たとえば、第1の時間にオブジェクトによって占有されていたボクセルが、第2の時間にそのオブジェクトによって占有されていない場合、動的オブジェクト判定サブシステム922は、そのオブジェクトを動的オブジェクトであるとみなし、その評価をボクセルマップデータとして記録し得る。どのボクセルが時間の経過とともに占有されるようになり、または占有されなくなるかに基づいて、動的オブジェクト判定サブシステム922は、移動の速度及び方向などの動的オブジェクトの移動を判定することができる。いくつかの例では、動的オブジェクト判定サブシステム922は、動的オブジェクトからの移動を判定するための指示を提供することができる。動的オブジェクト判定サブシステム922の追加の例は、オブジェクト判定サブシステム922を理解するために必要に応じて、本明細書の他の場所で提供され得る。
レイキャスティングサブシステム924は、動的オブジェクト判定サブシステム922と連携して動作して、静的オブジェクトと動的オブジェクトとの間を区別することができる。さらに、レイキャスティングサブシステム924は、データがボクセルマップの表現に蓄積するにつれて、経時的にボクセルマップをクリアするための機能性を含み得る。たとえば、オブジェクトが経時的にボクセル空間全体を移動するにつれて、動的オブジェクトが占有するボクセルの表現には、経時的にますます多くのデータが含まれ得る。しかしながら、レイキャスティングサブシステム924は、LIDARデータに関連付けられている光線の経路を分析して、たとえば、光線が内部を進行するいくつかのボクセルがクリアされたとみなされるべきであり、ボクセルマップ内の対応するストレージがクリアされるべきであることを判定し得る。したがって、レイキャスティングサブシステム924は、第1の時間に占有されていたボクセルが第2の時間に占有されていないことを判定するための追加の機能性を提供してもよく、それは、たとえば、さまざまなモジュールに提供されて、オブジェクトが動的オブジェクトであることを判定し得る。いくつかの例では、ボクセルマップは、疎な方法(たとえば、占有されたボクセルを表すデータを提供し、占有されていないボクセルを無視する)または密な方法(たとえば、ボクセルの破棄を伴わない)で表され得る。いくつかの例では、レイキャスティングサブシステム924は、密な方法でレイキャスティング情報を記憶してもよく、すなわち、疎なボクセル表現に存在しないボクセル(たとえば、ボクセルが関連するLIDARデータを有していないため)が、そのようなボクセルに関連付けられているレイキャスティング情報を有することができる。たとえば、関連するLIDARデータを有さないボクセルは、それでも、ボクセル空間のボクセルに関連付けられているレイキャスティング情報を含めるために、密なボクセルマップで表され得る。いくつかの例では、密なボクセル表現は、本明細書で考察されるレイキャスティング動作に少なくとも部分的に対応して、ボクセルが占有されていないという正の情報をボクセルに関連付けてもよい。さらに、LIDARデータは個々のボクセルに対して蓄積されるので、負の情報は、たとえば、それらが静的オブジェクトで占有されていることを示すために、ボクセルマップにおいて個々のボクセルに関連付けられてもよい。データは時間の経過とともに蓄積されるため、情報を部分的に集約して、たとえば、ボクセルが空き空間に対応するのか、または静的オブジェクトに対応するのかを判定することができる。さらに、レイキャスティングサブシステム924を使用して、局所的に捕捉されたLIDARデータを全体マップデータと比較することによって、全体マップをクリーンアップすることができる。レイキャスティングサブシステム924の追加の例は、レイキャスティングサブシステム924を理解するために必要に応じて、本明細書の他の箇所で提供され得る。
追跡サブシステム926は、1つ以上の動的オブジェクトの指示を受信し、オブジェクトを追跡するために追加の処理を実行するための機能性を含み得る。たとえば、追跡サブシステム926は、動的オブジェクトの速度を決定することができ、及び/または動的オブジェクトの軌道を経時的に決定及び記憶し得る。いくつかの例では、追跡サブシステム926は、オブジェクトの以前の動きに基づいて追跡されるオブジェクトの経路を予測し得る予測アルゴリズムを実行するようにプログラムされ得る。
計画サブシステム928は、自律車両の軌道を決定するために、セグメント化されたデータ及び/または地面平面、静的オブジェクト、及び/または動的オブジェクトの指示を受信するための機能性を含み得る。たとえば、計画サブシステム928は、地面平面を識別するセグメント化情報を受信することができ、自律車両が追従する軌道を生成することができる。
センサ較正サブシステム930は、環境に関して決定されたセグメント化情報に少なくとも部分的に基づいて、1つ以上のセンサを較正するための機能性を含み得る。たとえば、LIDARサブシステム904、カメラサブシステム906、レーダーサブシステム908、及び/またはソナーサブシステム910からのセンサデータは、(たとえば、(同時位置特定及びマッピング(SLAM)を使用して)、ロケーション及び/または方位を推定するために使用され得るが、自律車両はまた、環境における自律車両のロケーションを決定するための、慣性測定ユニット(IMU)及び/またはGPSユニットなどの追加のセンサも含み得る。いくつかの例では、IMUは、自律車両が第1のロケーションにあることを示し得、一方で、本明細書に記載されるLIDARデータの分析は、車両が第1のロケーションとは異なる第2のロケーションにあることを示し得る。センサ較正サブシステム930は、ロケーションの差を決定し得、自律車両のロケーション、または1つ以上のセンサ固有特性もしくは外部特性を更新するために、もう1つのセンサを調整または較正し得る。
注釈サブシステム932は、本明細書で考察されるセグメント化情報を受信するための機能性を含み得、ボクセルマップとともにデータとしてまたは他の方法で記憶されたオブジェクトに関連付けられている情報で、地面平面、静的オブジェクト、及び/または動的オブジェクトに注釈を付け得る。いくつかの例では、注釈サブシステム932は、たとえば、技術者による手動の確認及び/または調整のために、グラフィカルユーザインターフェースでセグメント化情報を提供し得る。いくつかの例では、注釈サブシステム932は、本明細書で考察されるオブジェクトの分類を決定及び適用するための機能性を含み得る。注釈サブシステム932は、セグメント化及び分類の動作を実行するために、ニューラルネットワークプロセスなどの機械学習アルゴリズムを実行するようにプログラムされ得る。
例示的なニューラルネットワークは、出力を生成するために一連の接続された層を通じて入力データを渡し得る。ニューラルネットワークの一例は、畳み込みニューラルネットワーク(CNN)を含み得る。CNNの各層はまた、別のCNNを含み得るか、またはいくつかの層を含み得る。本開示の文脈で理解され得るように、ニューラルネットワークは機械学習を利用することができ、これは、学習されたパラメータに基づいて出力が生成される、そのようなアルゴリズムの広いクラスを指すことができる。
ニューラルネットワークの文脈で考察されているが、本開示に一致する任意のタイプの機械学習が使用されもよい。たとえば、機械学習アルゴリズムは、回帰アルゴリズム(たとえば、通常の最小二乗回帰(OLSR)、線形回帰、ロジスティック回帰、ステップワイズ回帰、多変量適応型回帰スプライン(MARS)、局所的に推定された散布図平滑化(LOESS))、インスタンスベースのアルゴリズム(たとえば、リッジ回帰、最小絶対収縮及び選択演算子(LASSO)、弾性ネット、最小角回帰(LARS))、決定木アルゴリズム(たとえば、分類回帰木(CART)、反復二分法3(ID3)、カイ二乗自動相互作用検出(CHAID)、決定株、条件付き決定木)、ベイジアンアルゴリズム(たとえば、ナイーブベイズ、ガウシアンナイーブベイズ、多項ナイーブベイズ、平均一依存エスティメータ(AODE)、ベイジアン信念ネットワーク(BNN)、ベイジアンネットワーク)、クラスタリングアルゴリズム(たとえば、k平均法、kメジアン法、期待値最大化(EM)、階層的クラスタリング)、相関ルール学習アルゴリズム(たとえば、パーセプトロン、バックプロパゲーション、ホップフィールドネットワーク、放射基底関数ネットワーク(RBFN))、深層学習アルゴリズム(たとえば、深層ボルツマンマシン(DBM)、深層信念ネットワーク(DBN)、畳み込みニューラルネットワーク(CNN)、積層オートエンコーダ)、次元削減アルゴリズム(たとえば、主成分分析(PCA)、主成分回帰(PCR)、部分最小二乗回帰(PLSR)、サモンマッピング、多次元スケーリング(MDS)、射影追跡、線形判別分析(LDA)、混合判別分析(MDA)、二次判別分析(QDA)、柔軟判別分析(FDA))、アンサンブルアルゴリズム(たとえば、ブースティング、ブートストラップ集計(バギング)、アダブースト、スタック汎化(ブレンディング)勾配ブースティングマシン(GBM)、勾配ブースト会機器(GBRT)、ランダムフォレスト)、SVM(サポートベクターマシン)、教師あり学習、教師なし学習、半教師あり学習などを含み得るが、これらに限定されない。
図9に示される環境は、ストレージ、1つ以上のプロセッサ(複数可)、メモリ、及び場合によっては、オペレーティングシステムを含む1つ以上のコンピュータシステムで実装され得る。
本明細書に記載されるシステム及び方法は、ソフトウェアもしくはハードウェア、またはこれらの任意の組み合わせで実装され得る。本明細書に記載されるシステム及び方法は、互いに物理的または論理的に分離していてもしていなくてもよい1つ以上のコンピューティングデバイスを使用して実装され得る。方法は、オンプレミスハードウェア、オンプレミス仮想システム、またはホストされたプライベートインスタンスのいずれかとして配置された構成要素によって実行することができる。さらに、本明細書に記載される方法のさまざまな例を組み合わせるか、または他の機能に統合することができる。
システム及び方法を実装するための例示的な環境及びコンピュータ化されたシステムは、プロセッサまたはコンピュータシステムを含み得、本明細書に記載される方法のいくつかまたはすべてを特に実行するように構成され得る。いくつかの例では、方法は、1つ以上のコンピュータまたはプロセッサによって部分的または完全に自動化することができる。本明細書に記載されるシステム及び方法は、ハードウェア、ファームウェア、及び/またはソフトウェアのいずれかの組み合わせを使用して実装することができる。本明細書に記載される本システム及び方法(またはその任意の部分(複数可)もしくは機能(複数可))は、ハードウェア、ソフトウェア、ファームウェア、またはこれらの組み合わせを使用して実装することができ、1つ以上のコンピュータシステムまたは他の処理システムに実装することができる。いくつかの例では、図示されたシステム要素は、単一のハードウェアデバイスに組み合わされるか、または複数のハードウェアデバイスに分離され得る。複数のハードウェアデバイスを使用する場合、ハードウェアデバイスは物理的に互いに近接するか、または互いから離れて位置付けられ得る。説明及び図示された方法の例は、例示を意図するものであり、限定を意図するものではない。たとえば、方法のステップのいくつかまたはすべてを、異なる例において組み合わせ、再配置し、及び/または省略することができる。
1つの例示的な実施形態では、本明細書に記載されるシステム及び方法は、本明細書に記載される機能性を実行することができる1つ以上のコンピュータシステムを対象とし得る。例示的なコンピューティングデバイスは、OS X(登録商標)、iOS(登録商標)、Linux(登録商標)、Android(登録商標)、及びMicrosoft(登録商標)、Windows(登録商標)などの、ただしこれらに限定されない、任意のオペレーティングシステムを動作させる、パーソナルコンピュータ(PC)システムであり得るが、これらに限定されない。しかしながら、本明細書に記載されるシステム及び方法は、これらのプラットフォームに限定されなくてもよい。代わりに、本明細書に記載されるシステム及び方法は、任意の適切なオペレーティングシステムを動作させる任意の適切なコンピュータシステム上に実装されてもよい。
システムは、1つ以上のプロセッサを含み得る。プロセッサ(複数可)は、通信バス、クロスオーバーバー、またはネットワークなどの、ただしこれらに限定されない、通信インフラストラクチャに接続され得る。プロセス及びプロセッサは、同じ物理的ロケーションに位置付けられなくてもよい。言い換えると、プロセスは、たとえば、LANまたはWAN接続を介して、1つ以上の地理的に離れたプロセッサにおいて実行され得る。コンピューティングデバイスは、ディスプレイユニット上での表示のために、グラフィックス、テキスト、及び他のデータを通信インフラストラクチャから転送することができる、ディスプレイインターフェースを含み得る。
コンピュータシステムはまた、メインメモリ、ランダムアクセスメモリ(RAM)、及び二次メモリなどを含み得るが、これらに限定されない。二次メモリは、たとえば、ハードディスクドライブ、及び/またはコンパクトディスクドライブCD-ROMなどのリムーバブル記憶ドライブなどを含み得る。リムーバブル記憶ドライブは、リムーバブル記憶ユニットから読み取ることができ、及び/またはリムーバブル記憶ユニットに書き込むことができる。理解され得るように、リムーバブル記憶ユニットは、コンピュータソフトウェア及び/またはデータを内部に記憶した、コンピュータ使用可能記憶媒体を含み得る。いくつかの例では、マシンアクセス可能媒体は、コンピュータによってアクセス可能なデータを記憶するために使用される任意の記憶デバイスを指すことができる。マシンアクセス可能媒体の例は、たとえば、磁気ハードディスク、フロッピーディスク、コンパクトディスクリードオンリメモリ(CD-ROM)もしくはデジタル多用途ディスク(DVD)などの光ディスク、磁気テープ、及び/またはメモリチップなどを含み得るが、これらに限定されない。
プロセッサはまた、データを記憶するための1つ以上のデータ記憶デバイスも含み得、またはそれらと通信するように動作可能に結合され得る。そのようなデータ記憶デバイスは、非限定的な例として、(内蔵ハードディスク及びリムーバブルディスクを含む)磁気ディスク、光磁気ディスク、光ディスク、リードオンリーメモリ、ランダムアクセスメモリ、及び/またはフラッシュストレージを含み得る。コンピュータプログラム命令及びデータを有形的に具体化するのに適した記憶デバイスはまた、たとえば、EPROM、EEPROM、及びフラッシュメモリデバイスなどの半導体メモリデバイス、内部ハードディスク及びリムーバブルディスクなどの磁気ディスク、磁気-光ディスク、並びにCD-ROM及びDVD-ROMディスクを含む、すべての形態の不揮発性メモリも含み得る。プロセッサ及びメモリは、ASIC(特定用途向け集積回路)によって補完され得るか、またはASICに組み込まれ得る。
処理システムは、コンピュータ化されたデータ記憶システムと通信することができる。データ記憶システムは、非リレーショナルデータストア、またはMySQL(登録商標)もしくは他のリレーショナルデータベースなどのリレーショナルデータストアを含み得る。他の物理的及び論理的データベースタイプが使用され得る。データストアは、Microsoft SQL Server(登録商標)、Oracle(登録商標)、IBM DB2(登録商標)、SQLITE(登録商標)、またはリレーショナルもしくは他の方法の任意の他のデータベースソフトウェアなどの、データベースサーバであり得る。データストアは、構文タグを識別する情報、及び構文タグを演算するのに必要とされる任意の情報を記憶することができる。いくつかの例では、処理システムは、オブジェクト指向プログラミングを使用することができ、データをオブジェクト内に記憶することができる。これらの例では、処理システムは、オブジェクトリレーショナルマッパー(ORM)を使用して、データオブジェクトをリレーショナルデータベースに記憶することができる。本明細書に記載されるシステム及び方法は、任意の数の物理データモデルを使用して実装することができる。例示的な一実施形態では、リレーショナルデータベース管理システム(RDBMS)が使用され得る。これらの例では、RDBMS内のテーブルは、座標を表す列を含み得る。経済的システムの場合、会社、製品などを表すデータが、RDBMS内のテーブルに記憶され得る。テーブルは、それらの間の事前定義された関係を有し得る。テーブルはまた、座標に関連付けられた付加物も有し得る。
代替の例示的な例では、二次メモリは、コンピュータプログラムまたは他の命令が、コンピュータシステムにロードされることを可能にするための、他の類似のデバイスを含み得る。そのようなデバイスは、たとえば、リムーバブル記憶ユニット及びインターフェースを含み得る。そのようなものの例は、(たとえば、ビデオゲームデバイスに見出されるものなどの、ただしこれらに限定されない)プログラムカートリッジ及びカートリッジインターフェース、(たとえば、消去可能プログラマブルリードオンリーメモリ(EPROM)、またはプログラマブルリードオンリーメモリ(PROM)、及び関連するソケットなどの、ただしこれらに限定されない)リムーバブルメモリチップ、ならびにソフトウェア及びデータがリムーバブル記憶ユニットからコンピュータシステムに転送されることを可能にし得る、他のリムーバブル記憶ユニット及びインターフェースを含み得る。
コンピューティングデバイスはまた、マイクロフォンなどの音声入力デバイス、タッチスクリーン、カメラなどのジェスチャ認識デバイス、他の自然なユーザインターフェース、マウス、またはデジタイザなどの他のポインティングデバイス、キーボード、または他のデータ入力デバイスなどの、ただしこれらに限定されない、入力デバイスも含み得る。コンピューティングデバイスはまた、ディスプレイ、及びディスプレイインターフェースなどの、ただしこれらに限定されない、出力デバイスも含み得る。コンピューティングデバイスは、通信インターフェース、ケーブル、及び通信経路などの、ただしこれらに限定されない、入力/出力(I/O)デバイスを含み得る。これらのデバイスは、ネットワークインターフェースカード、及びモデムを含むが、これらに限定されない。通信インターフェース(複数可)は、ソフトウェア及びデータがコンピュータシステムと1つ以上の外部デバイスとの間で転送されることを可能にし得る。
1つ以上の例では、コンピューティングデバイスは、自動車システムに動作可能に結合され得る。そのような自動車システムは、手動で動作させられてもよく、半自律的であってもよく、または完全に自律的であってもよい。そのような実施形態では、入力及び出力デバイスは、加速、制動、及びステアリングなどの、ただしこれらに限定されない、自動車機能を制御するための、1つ以上の画像捕捉デバイス、コントローラ、マイクロコントローラ、及び/または他のプロセッサを含み得る。さらに、そのような例における通信インフラストラクチャまた、コントローラエリアネットワーク(CAN)バスも含み得る。
1つ以上の例では、コンピューティングデバイスは、任意の機械に基づく視覚システムに動作可能に結合され得る。たとえば、そのようなマシンに基づくビジョンシステムは、手動で動作させられる、半自律的な、または完全に自律的な産業用または農業用ロボット、家庭用ロボット、検査システム、セキュリティシステムなどを含むが、これらに限定されない。すなわち、本明細書に記載される例は、1つの特定の状況に限定されず、マシンビジョンを利用する任意の用途に適用可能であり得る。
1つ以上の例では、本例は、1つ以上のコンピュータネットワーク(単数または複数)の環境において実践することができる。ネットワークは、プライベートネットワーク、もしくはパブリックネットワーク(たとえば、以下に記載されるような、インターネット)、または両方の組み合わせを含み得る。ネットワークは、ハードウェア、ソフトウェア、または両方の組み合わせを含み得る。
リモート通信指向の観点からは、ネットワークは、通信施設によって相互接続されたハードウェアノードのセットとして説明することができ、1つ以上のプロセス(ハードウェア、ソフトウェア、またはこれらの組み合わせ)が、そのような各ノードにおいて機能する。プロセスは、プロセス間通信経路を使用する、それらの間の通信経路を介して、互いに情報を相互通信し、交換することができる。これらの経路上では、適切な通信プロトコルが使用される。
本例に従った例示的なコンピュータ及び/またはリモート通信ネットワーク環境は、ハードウェア、ソフトウェア、またはハードウェアとソフトウェアとの組み合わせを含み得るノードを含み得る。ノードは、通信ネットワークを介して相互接続され得る。各ノードは、ノードに組み込まれたプロセッサによって実行可能な1つ以上のプロセスを含み得る。たとえば、単一のプロセスが、複数のプロセッサによって実行され得るか、または複数のプロセスが、単一のプロセッサによって実行され得る。さらに、ノードの各々は、ネットワークと外部世界との間のインターフェース点を提供することができ、サブネットワークの集合を含むことができる。
例示的な実施形態では、プロセスは、任意の通信プロトコルを通して通信をサポートするプロセス間通信経路を通して、互いに通信し得る。経路は、順次的または並列的に、連続的または断続的に機能し得る。経路は、多くのコンピュータによって使用される標準的な並列命令セットに加えて、通信ネットワークに関して本明細書に記載される、通信規格、プロトコル、または技術のいずれかを使用することができる。
ノードは、処理機能を実行することができる任意のエンティティを含み得る。例とともに使用され得るそのようなノードの例は、コンピュータ(パーソナルコンピュータ、ワークステーション、サーバ、もしくはメインフレームなど)、ハンドヘルド無線デバイス及び有線デバイス(パーソナルデジタルアシスタント(PDA)、処理能力を有するモデムセルフォン、BlackBerry(登録商標)デバイスを含む無線電子メールデバイスなど)、文書処理デバイス(スキャナ、プリンタ、ファクシミリマシン、もしくは多機能文書マシンなど)、または記載されたように、プロセッサの集合が接続される複合エンティティ(ローカルエリアネットワークもしくはワイドエリアネットワークなど)を含む。たとえば、本開示との関連において、ノード自体が、ワイドエリアネットワーク(WAN)、ローカルエリアネットワーク(LAN)、プライベートネットワーク(仮想プライベートネットワーク(VPN)など)、またはネットワークの集合とすることができる。
ノード間の通信は、通信ネットワークによって可能にされ得る。ノードは、通信ネットワークを用いて、連続的または断続的のいずれかで接続され得る。例として、本開示の文脈おいて、通信ネットワークは、適切な帯域幅及び情報セキュリティを提供する、デジタル通信インフラストラクチャとすることができる。
通信ネットワークは、任意のタイプの規格、プロトコル、または技術を使用する、任意の周波数における、有線通信能力、無線通信能力、または両方の組み合わせを含むことができる。さらに、本例では、通信ネットワークは、プライベートネットワーク(たとえば、VPN)、またはパブリックネットワーク(たとえば、インターネット)とすることができる。
通信ネットワークによって使用される例示的な無線プロトコル及び技術の非包括的リストは、Bluetooth(登録商標)、汎用パケット無線サービス(GPRS)、セルラーデジタルパケットデータ(CDPD)、モバイルソリューションプラットフォーム(MSP)、マルチメディアメッセージング(MMS)、無線アプリケーションプロトコル(WAP)、符号分割多元接続(CDMA)、ショートメッセージサービス(SMS)、無線マークアップ言語(WML)、ハンドヘルドデバイスマークアップ言語(HDML)、無線用バイナリランタイム環境(BREW)、無線アクセスネットワーク(RAN)、及びパケット交換コアネットワーク(PS-CN)を含み得る。また、さまざまな世代の無線技術が含まれる。通信ネットワークによって使用される主に無線プロトコル及び技術の例示的な非包括的リストは、非同期転送モード(ATM)、拡張内部ゲートウェイルーティングプロトコル(EIGRP)、フレームリレー(FR)、高レベルデータリンク制御(HDLC)、インターネット制御メッセージプロトコル(ICMP)、内部ゲートウェイルーティングプロトコル(IGRP)、ネットワーク間パケット交換(IPX)、ISDN、ポイントツーポイントプロトコル(PPP)、伝送制御プロトコル/インターネットプロトコル(TCP/IP)、ルーティング情報プロトコル(RIP)、及びユーザデータグラムプロトコル(UDP)を含む。当業者が認識するように、他の任意の知られた、または予想される無線または有線プロトコル及び技術を使用することができる。
本開示の例は、本明細書における動作を実行するための装置を含み得る。装置は、所望の目的のために特別に構築されてよく、またはそれは、デバイス内に記憶されたプログラムによって選択的にアクティブ化または再構成される、汎用デバイスを備え得る。
1つ以上の例では、本例は、マシン実行可能命令で具体化される。命令は、命令を用いてプログラムされる処理デバイス、たとえば、汎用または専用プロセッサに、本開示のステップを実行させるために使用され得る。あるいは、本開示のステップは、ステップを実行するための配線論理を含む特定のハードウェア構成要素によって、またはプログラムされたコンピュータ構成要素とカスタムハードウェア構成要素との任意の組み合わせによって実行することができる。たとえば、本開示は、上で概説されたような、コンピュータプログラム製品として、提供され得る。この環境では、例は、命令が内部に記憶されたマシン可読媒体を含むことができる。命令は、例示的な例に従って、プロセスまたは方法を実行するように、任意のプロセッサ(単数もしくは複数)(または他の電子デバイス)をプログラムするために、使用され得る。さらに、本開示はまた、ダウンロードされ、コンピュータプログラム製品上に記憶され得る。ここでは、プログラムは、通信リンク(たとえば、モデムまたはネットワーク接続)を介して、搬送波または他の伝搬媒体内に具体化されたデータ信号により、リモートコンピュータ(たとえば、サーバ)から要求コンピュータ(たとえば、クライアント)に転送することができ、最終的に、そのような信号は、後続の実行のために、コンピュータシステム上に記憶されてもよい。
方法は、コンピュータまたは任意の命令実行システムによる使用のために、またはそれらとの関連において、プログラムコードを提供する、コンピュータ使用可能または可読記憶媒体からアクセス可能な、コンピュータプログラム製品において実装することができる。コンピュータ使用可能または可読記憶媒体は、コンピュータ、もしくは命令実行システム、装置、もしくはデバイスによる使用のために、またはそれらとの関連において、プログラムを含むかまたは記憶することができる、任意の装置とすることができる。
対応するプログラムコードを記憶及び/または実行するのに適したデータ処理システムは、メモリ要素などのコンピュータ化されたデータ記憶デバイスに直接的または間接的に結合された、少なくとも1つのプロセッサを含むことができる。入力/出力(I/O)デバイス(キーボード、ディスプレイ、ポインティングデバイスなどを含むが、これらに限定されない)をシステムに結合することができる。データ処理システムが、介在するプライベートまたはパブリックネットワークを通して、他のデータ処理システム、またはリモートプリンタもしくは記憶デバイスに結合されることを可能にするために、ネットワークアダプタもシステムに結合されてもよい。ユーザとの相互作用を提供するために、これらの機能を、LCD(液晶ディスプレイ)などの表示デバイス、または情報をユーザに表示するための別のタイプのモニタ、ならびにユーザが入力をコンピュータに提供することができる、キーボード、及びマウスまたはトラックボールなどの入力デバイスを備えるコンピュータ上において実装することができる。
コンピュータプログラムは、コンピュータにおいて直接的または間接的に使用することができる命令のセットとすることができる。本明細書に記載されるシステム及び方法は、コンパイル言語またはインタープリタ言語を含む、CUDA、OpenCL、Flash(登録商標)、JAVA(登録商標)、C++、C、C#、Python、Visual Basic(登録商標)、JavaScript(登録商標)、PHP、XML、HTMLなどのプログラミング言語、またはプログラミング言語の組み合わせを使用して実装することができ、スタンドアロンプログラムとして、またはコンピューティング環境における使用に適したサブシステム、構成要素、サブルーチン、もしくは他のユニットとして、任意の形態で展開することができる。ソフトウェアは、ファームウェア、常駐ソフトウェア、マイクロコードなどを含むことができるが、これらに限定されない。プログラミングサブシステム間のインターフェースを実装する際に、SOAP/HTTPなどのプロトコルが使用され得る。本明細書に記載される構成要素及び機能性は、仮想化または非仮想化環境において実行される、Microsoft Windows(登録商標)、Apple(登録商標) Mac(登録商標)、iOS(登録商標)、Unix(登録商標)/X-Windows(登録商標)、Linux(登録商標)の異なるバージョンを含むが、これらに限定されない、任意のデスクトップオペレーティングシステム上において、ソフトウェア開発に適した任意のプログラミング言語を使用して実装され得る。システムは、ルビーオンレイルズなどの、ウェブアプリケーションフレームワークを使用して実装することができる。
命令からなるプログラムの実行に適したプロセッサは、任意の種類のコンピュータの、汎用及び専用マイクロプロセッサ、ならびに単独のプロセッサ、または複数のプロセッサもしくはコアのうちの1つを含むが、これらに限定されない。プロセッサは、リードオンリーメモリ、ランダムアクセスメモリ、両方、または本明細書に記載されるデータ記憶デバイスの任意の組み合わせなどの、コンピュータ化されたデータ記憶デバイスから、命令及びデータを受信し、記憶し得る。プロセッサは、電子デバイスの動作及び実行を制御するように動作する、任意の処理回路または制御回路を含み得る。
本明細書に記載されるシステム、サブシステム、及び方法は、ソフトウェア要素またはハードウェア要素の任意の組み合わせを使用して実装することができる。本明細書に記載されるシステム、サブシステム、及び方法は、単独で、または互いに組み合わさって動作する、1つ以上の仮想マシンを使用して実装することができる。物理的コンピューティングマシンプラットフォームを、ハードウェアコンピューティングプラットフォームまたはホスト上で動作する仮想化ソフトウェアの制御下で実行される仮想マシンにカプセル化するために、任意の適用可能な仮想化ソリューションを使用することができる。仮想マシンは、仮想システムハードウェアとゲストオペレーティングシステムソフトウェアとの両方を有することができる。
本明細書に記載されるシステム及び方法は、データサーバなどのバックエンド構成要素を含む、またはアプリケーションサーバもしくはインターネットサーバなどのミドルウェア構成要素を含む、またはグラフィカルユーザインターフェースもしくはインターネットブラウザを有するクライアントコンピュータなどのフロントエンド構成要素を含む、またはそれらの任意の組み合わせを含む、コンピュータシステムにおいて実装することができる。システムの構成要素は、通信ネットワークなど、デジタルデータ通信の任意の形態または媒体によって接続され得る。通信ネットワークの例は、たとえば、LAN、WAN、ならびにインターネットを形成するコンピュータ及びネットワークを含む。
本開示の1つ以上の例は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベースまたはプログラマブル家電製品、ミニコンピュータ、メインフレームコンピュータなどを含む、他のコンピュータシステム構成を用いて実践され得る。本明細書に記載されるシステム及び方法はまた、ネットワークを通してリンクされたリモート処理デバイスによってタスクが実行される、分散コンピューティング環境においても実践することができる。
「コンピュータプログラム媒体」及び「コンピュータ可読媒体」という用語は、リムーバブル記憶ドライブ、ハードディスクドライブ内に設置されたハードディスクなどの、ただしこれらに限定されない媒体を一般に指すために使用され得る。これらのコンピュータプログラム製品は、ソフトウェアをコンピュータシステムに提供し得る。本明細書に記載されるシステム及び方法は、そのようなコンピュータプログラム製品を対象とし得る。
「一実施形態」、「実施形態」、「例示的な実施形態」、「さまざまな例」などに対する言及は、本開示の実施形態(複数可)が、特定の特徴、構造、または特性を含み得るが、あらゆる実施形態が、特定の特徴、構造、または特性を必ずしも含むわけではないことを示すことがある。さらに、「一実施形態では」または「例示的な実施形態では」という句の繰り返される使用は、同じ実施形態を必ずしも指しているわけではないが、同じ実施形態を指すことがある。同様に、「例」に対する言及は、本開示のさまざまな例(複数可)が、特定の特徴、構造、または特性を含み得るが、あらゆる例が、特定の特徴、構造、または特性を必ずしも含むわけではないことを示すことがある。さらに、「いくつかの例では」という句の繰り返される使用は、同じ例を必ずしも指しているわけではないが、同じ例を指すことがある。
説明及び特許請求の範囲において、「結合される」及び「接続される」という用語が、それらの派生形とともに使用され得る。これらの用語は、互いに同義語として意図されていなくてよいことが理解されるべきである。むしろ、特定の例では、「接続される」は、2つ以上の要素が、互いに物理的または電気的に直接接触していることを示すために使用され得る。「結合される」は、2つ以上の要素が、物理的または電気的に直接接触していることを意味することがある。しかしながら、「結合される」は、2つ以上の要素が、互いに直接接触しておらず、それでもなお、互いに協力するか、または相互作用することを意味することがある。
ここでは、また一般に、アルゴリズムは、所望の結果にいたる、行為または動作の自己矛盾のないシーケンスであるとみなされてもよい。これらは、物理量の物理的動作を含む。必ずではないが、通常、これらの量は、記憶され、転送され、組み合わされ、比較され、他の方法で動作されることが可能な、電気または磁気信号の形態をとる。主として、共通使用の理由で、これらの信号を、ビット、値、要素、シンボル、文字、項、または数などと呼ぶことが、時には便利であることが分かっている。しかしながら、これら及び類似の用語のすべては、適切な物理量と関連付けられるべきであり、これらの量に適用される便利なラベルにすぎないことが、理解されるべきである。
特に別段の指摘がない限り、本明細書全体において、「処理する」、「計算する」、「算定する」、または「決定する」などの用語は、コンピューティングシステムのレジスタ及び/またはメモリ内の電子的などの物理量として表されるデータを、コンピュータシステムのメモリ、レジスタ、または他のそのような情報記憶、伝送、もしくは表示デバイス内の物理量として同様に表される他のデータに操作及び/または変換する、コンピュータもしくはコンピューティングシステム、または類似の電子コンピューティングデバイスの、アクション及び/またはプロセスを指すことが、理解されてよい。
同様の方式で、「プロセッサ」という用語は、レジスタ及び/またはメモリからの電子データを処理して、その電子データを、レジスタ及び/またはメモリ内に記憶され得る他の電子データに変換する、任意のデバイス、またはデバイスの一部分を指してもよい。非限定的な例として、「プロセッサ」は、中央処理ユニット(CPU)、またはグラフィカル処理ユニット(GPU)であり得る。「コンピューティングプラットフォーム」は、1つ以上のプロセッサを備え得る。本明細書で使用されるとき、「ソフトウェア」プロセスは、たとえば、タスク、スレッド、及びインテリジェントエージェントなどの、経時的に作業を実行するソフトウェアエンティティ及び/またはハードウェアエンティティを含み得る。また、各プロセスは、命令を順次的または並列的、連続的または断続的に実施するための、複数のプロセスを指し得る。「システム」及び「方法」という用語は、システムが1つ以上の方法を具体化されてもよく、方法がシステムとみなされてもよい限り、本明細書において交換可能に使用される。
さらに、本明細書で使用されるとき、「及び/または」という用語は、「または」と同じ意味で、リスト内の1つ以上の項目を指すことがある。
1つ以上の例が説明されたが、それらのさまざまな改変、追加、置換、及び均等物が、本開示の範囲内に含まれる。
例の説明において、それの一部を形成する添付の図面に対する参照が行われ、それは、特許請求される発明の特定の実施例を例示として示している。他の実施例が使用されてよく、構造的変更などの変更または改変が行われ得ることが理解されるべきである。そのような実施例、変更または改変は、意図された特許請求される発明に関する範囲からの逸脱であるとは限らない。ステップは、本明細書では、ある特定の順序で提示され得るが、いくつかの場合には、順序付けは、ある特定の入力が、説明されるシステム及び方法の機能を変更することなく、異なる時間にまたは異なる順序で提供されるように変更されてもよい。開示される手順もまた、異なる順序で実行され得る。さらに、本明細書におけるさまざまな計算は、開示された順序で実行される必要はなく、計算の代替的な順序付けを使用する他の例が容易に実装され得る。並べ替えられることに加えて、計算は、同じ結果を有する部分計算に分解されてもよい。
上の考察は、説明される技術の例示的な実装について説明するが、他のアーキテクチャが、説明される機能性を実装するために使用されてよく、それは、本開示の範囲内にあることが意図されている。さらに、考察の目的で上記では、責務の特定の分配が定義されたが、さまざまな機能及び責務は、状況に応じて、異なる方法で、分配され、分割されてよい。
さらに本主題は、構造的特徴及び/または方法論的行為に特有の言語で説明されてきたが、添付の特許請求の範囲で定義される本主題が必ずしも説明した特定の特徴または行為に限定されないことを理解されたい。むしろ、特定の特徴及び行為は、特許請求の範囲を実施する例示的形態として開示される。
実施例の条項
本開示の実施形態は、以下の条項を考慮して説明され得る。
1.システムであって、1つ以上のプロセッサと、前記1つ以上のプロセッサによって実行されたときに、前記システムに動作を実行させる命令を含む非一時的コンピュータ可読メモリと、を備え、前記動作は、目的地にナビゲートする自律車両のセンサからセンサデータを受信することと、前記センサデータに少なくとも部分的に基づいて、前記自律車両が進行している環境内に、前記自律車両が前記目的地に前進することを妨げる条件が存在するかどうかを判定することと、前記センサデータの少なくともサブセットを、ガイダンスの要求とともに第2のシステムに送信することと、前記自律車両を前記自律車両の現在位置のある半径内にある中間目的地にナビゲートするための命令を含む、前記要求に対する応答を受信することと、前記自律車両を、前記中間目的地への前記環境を通行するように制御することと、を含む、前記システム。
2.前記自律車両が進行している前記環境内の前記自律車両が前記目的地に前進することを妨げる条件が存在するかどうかを判定することが、前記自律車両が特定の時間量、現在位置に留まっていることを判定すること、または緊急車両の存在を判定することのうちの1つ以上を含む、条項1に記載のシステム。
3.前記緊急車両の前記存在を判定することが、前記緊急車両が緊急状態で動作していることを判定することと、前記自律車両が前記緊急車両のために道を空ける必要があるように、前記緊急車両が前記自律車両の後方で動作していることを判定することと、を含む、条項1または2に記載のシステム。
4.前記命令が、前記自律車両が所望の方位に回転するための指示を含む、条項1~3のいずれか1つに記載のシステム。
5.前記命令が、前記自律車両が、定義された半径内にある指定され距離を、制限された速度で、前記自律車両の現在位置から離れる方向に移動することによって、前記中間目的地に前進し、停止するための指示を含む、条項1~4のいずれか1つに記載のシステム。
6.前記動作が、前記センサから第2のセンサデータを受信することと、前記第2のセンサデータに少なくとも部分的に基づいて、前記自律車両が走行している前記環境内に、前記自律車両が前記目的地に前進することを妨げる追加条件が存在することを判定することと、前記追加条件に関連付けられた前記センサデータの少なくともサブセットを、第2のガイダンスの要求とともに前記第2のシステムに送信することと、をさらに含む、条項1~5のいずれか1つに記載のシステム。
7.コンピュータシステムの1つ以上のプロセッサによって実行された結果として、前記コンピュータシステムに、少なくとも、目的地に向かう途中のデバイスのセンサからセンサデータを受信することと、前記センサデータに少なくとも部分的に基づいて、ガイダンスを取得するための条件のセットの成立を判定することと、前記条件のセットの成立を検出した結果として、中間位置にナビゲートするための命令を取得することであって、前記命令が、前記デバイスに対する所望の方位または所望の位置のうちの1つ以上の指示を含む、前記取得することと、前記デバイスに、前記目的地に向かう途中で前記命令を実行させることと、を行わせる実行可能命令が内部に記憶された非一時的コンピュータ可読記憶媒体。
8.前記センサが、LIDARセンサ、カメラ、マイクロフォン、レーダーのうちの1つ以上を含む、条項7に記載の非一時的コンピュータ可読記憶媒体。
9.前記条件のセットの前記成立を検出することが、前記デバイスが現在位置にいる時間量が閾値時間量を満たすかもしくは超えるかを判定すること、または緊急車両の存在を判定することのうちの1つ以上を含む、条項7または8に記載の非一時的コンピュータ可読記憶媒体。
10.前記緊急車両の前記存在を判定することが、前記緊急車両が緊急状態で動作していることを判定することと、前記デバイスが前記緊急車両のために道を空ける必要があるように、前記緊急車両が前記デバイスの後方で動作していることを判定することと、を含む、条項7~9に記載のいずれか1つに記載の非一時的コンピュータ可読記憶媒体。
11.前記中間位置が、前記デバイスの現在位置からある半径内にあり、前記命令を実行することが、前記デバイスを閾値速度以下で移動させる、条項7~10のいずれか1つに記載の非一時的コンピュータ可読記憶媒体。
12.前記デバイスが自律車両を含み、前記命令が、前記1つ以上のプロセッサによって実行されたときに、前記コンピュータシステムにさらに、前記デバイスを前記目的地に到着するように制御するための軌道を決定することと、前記デバイスに前記軌道に従って環境を通行させることと、を行わせる、条項7~11のいずれか1つに記載の非一時的コンピュータ可読記憶媒体。
13.特定の方法でナビゲートするための前記命令が、前記デバイスを回転及び停止させるための命令を含み、及び/または前記命令が、定義された半径内にある特定の距離を、制限された速度で、前記自律車両が、前記自律車両の現在位置から離れる方向に移動することによって前記中間目的地に前進し、停止するための指示を含む、条項7~12のいずれか1つに記載の非一時的コンピュータ可読記憶媒体。
14.方法であって、デバイスのセンサからセンサデータを受信することと、前記センサデータに少なくとも部分的に基づいて、前記デバイスが進行している環境の条件を判定することと、前記条件に少なくとも部分的に基づいて、ガイダンスの要求をリモートシステムに送信することと、前記リモートシステムから命令を受信することと、前記命令に少なくとも部分的に基づいて、前記デバイスを中間位置に移動させることと、を含む、前記方法。
15.前記センサが、LIDARセンサ、カメラ、マイクロフォン、またはレーダーのうちの1つ以上を含む、条項14に記載の方法。
16.前記条件を判定することが、交通条件が前記デバイスが目的地に前進することを妨げていることを判定すること、前記デバイスが現在位置において特定の時間量を超えたことを判定すること、または前記デバイスに近接する緊急車両の存在を判定すること、のうちの1つ以上を含む、条項14または15に記載の方法。
17.前記緊急車両の前記存在を判定することが、前記緊急車両が緊急状態で動作していることを判定することと、前記デバイスが前記緊急車両に関連付けられた経路を妨害していることを判定することとを含む、条項14~16のいずれかの1つに記載の方法。
18.前記命令に少なくとも部分的に基づいて、前記デバイスを、前記中間位置に移動させることが、前記デバイスに視認性を付加することを可能にする、条項14~17のいずれか1つに記載の方法。
19.前記デバイスが自律車両であり、前記中間位置が、現在位置のある半径内の中間ロケーションまたは中間ロケーションのうちの1つ以上を含み、前記デバイスを前記中間位置に移動させることが、前記デバイスを閾値速度以下で移動させることを含む、条項14~18のいずれか1つに記載の方法。
20.前記中間位置において、目的地に到達するための軌道を決定することと、前記自律車両を前記目的地への前記軌道に従ってナビゲートさせることと、をさらに含む、条項14~19のいずれか1つに記載の方法。
21.方法であって、目的地への環境を通行する自律車両のセンサから、センサデータの少なくとも一部分を受信することと、ディスプレイに、前記環境内の前記自律車両の第1の表現を表示させることと、前記ディスプレイに、前記センサデータの第2の表現を表示させることと、前記自律車両が進行すべき中間ロケーションを指示する入力を受信することであって、前記指示が、前記第1の表現における前記自律車両のある半径に制限され、位置または方位のうちの1つ以上を含む、前記受信することと、前記入力に少なくとも部分的に基づいて、前記自律車両を前記中間ロケーションに移動させるための命令を前記自律車両に送信することと、を含む、前記方法。
22.前記第1の表現が、前記自律車両に近接する前記環境のマップと、前記環境内のオブジェクトを表すバウンディングボックスと、を含む、条項21に記載の方法。
23.前記オブジェクトが緊急車両を含み、
前記中間ロケーションが、前記緊急車両が前記自律車両の後方から通過することを可能にするための前記環境内のロケーションを含む、条項21または22に記載の方法。
24.前記センサデータの前記一部分が、前記自律車両が前記目的地に到達するのを妨げる状況に遭遇したことを示す情報を含む、条項21~23のいずれか1つに記載の方法。
25.前記命令が、前記自律車両が前記中間ロケーションに移動する間、閾値速度以下で移動するための指示をさらに提供する、条項21~24のいずれか1つに記載の方法。
26.前記ディスプレイに複数の矢印を表示させることであって、前記複数の矢印のうちの1つの矢印が、基本方位に関連付けられており、前記入力が、前記複数の矢印に関連付けられており、前記中間ロケーションが、前記入力に少なくとも部分的に基づいて決定される、前記表示させることをさらに含む、条項21~25のうちのいずれか1つに記載の方法。
27.システムであって、1つ以上のプロセッサと、前記1つ以上のプロセッサによって実行されたときに、前記システムに動作を行わせる命令を含む、非一時的コンピュータ可読メモリと、を備え、前記動作は、ディスプレイにおいて、デバイスのセンサからのセンサデータの少なくとも一部分を受信することであって、前記センサデータが、目的地に向かう途中の前記デバイスを取り巻く環境の状態を反映する、前記受信することと、前記デバイスが進行すべき速度閾値に従って、前記デバイスの現在位置から特定の半径内の距離にある中間目的地を示す入力を受信することと、前記デバイスに、前記目的地に向かう途中の前記中間目的地に進行する計画を使用させるための命令を前記デバイスに送信することと、を含む、前記システム。
28.前記ディスプレイが、前記デバイスを取り巻く前記環境の前記状態の表現を含むグラフィカルユーザーインターフェース(GUI)であり、前記表現が、前記環境のマップと、前記環境内のオブジェクトを表すバウンディングボックスと、を含む、条項27に記載のシステム。
29.前記オブジェクトが緊急車両を含み、
前記中間目的地が、前記緊急車両が前記デバイスの後方から通過することを可能にするための前記環境内のロケーションを含む、条項27または28に記載のシステム。
30.前記センサデータの前記一部分が、前記デバイスが前記目的地に到達するのを妨げる状況に前記デバイスが遭遇したことを示す情報を含む、条項27~29のいずれか1つに記載のシステム。
31.前記命令が、前記1つ以上のプロセッサによって実行されたときに、前記システムにさらに、前記ディスプレイに、複数の矢印を表示させることを含む前記動作を実行させ、前記複数の矢印のうちの1つの矢印が、基本方位に関連付けられており、前記入力が、前記複数の矢印に関連付けられており、前記中間目的地が、前記入力に少なくとも部分的に基づいて決定される、条項27~30のいずれか1つに記載のシステム。
32.前記命令が、前記デバイスが、前記中間目的地に移動している間に、前記速度閾値以下で移動するための指示をさらに提供する、条項27~31のいずれか1つに記載のシステム。
33.前記命令が、前記デバイスに、前記中間目的地への前記命令を実行するために4輪ステアリングを使用するように指示する、条項27~32のいずれか1つに記載のシステム。
34.コンピュータシステムの1つ以上のプロセッサによって実行された結果として、前記コンピュータシステムに、少なくとも、グラフィカルユーザインターフェースにおいて、デバイスのセンサからセンサデータの少なくとも一部分を受信することであって、前記センサデータが、目的地に向かう途中の前記デバイスを取り巻く環境の状態を反映する、前記受信することと、前記デバイスが移動する速度閾値に従って、前記デバイスの現在位置から特定の半径内の距離である中間目的地を示す入力を受信することと、前記デバイスに、前記目的地に向かう途中の前記中間目的地に進行する計画を使用させるための命令を前記デバイスに送信することと、を行わせる実行可能命令が内部に記憶された非一時的コンピュータ可読記憶媒体。
35.前記実行可能命令が、前記コンピュータシステムの1つ以上のプロセッサによって実行された結果として、前記コンピュータシステムに、さらに、少なくとも、前記グラフィカルユーザインターフェースに、前記デバイスを取り巻く環境の状態の第1の表現であって、前記環境のマップ及び前記環境内のオブジェクトを表すバウンディングボックスを含む、前記1の表現と、前記センサデータの第2の表現であって、生の画像ストリームを含む、前記第2の表現と、を表示させる、条項34に記載の非一時的コンピュータ可読記憶媒体。
36.前記オブジェクトが、緊急車両を含み、前記中間目的地が、前記緊急車両が前記デバイスの後方から通過することを可能にするための前記環境内のロケーションを含む、条項34または35に記載の非一時的コンピュータ可読記憶媒体。
37.前記センサデータの前記一部分が、前記デバイスが前記目的地に到達するのを妨げる状況に前記デバイスが遭遇したことを示す情報を含む、条項34~36のいずれか1つに記載の非一時的コンピュータ可読記憶媒体。
38.前記速度閾値は、前記デバイスが、前記中間目的地に移動している間に、閾値速度以下で移動するための指示をさらに提供する、条項34~37のいずれか1つに記載の非一時的コンピュータ可読記憶媒体。
39.前記実行可能命令が、前記コンピュータシステムの1つ以上のプロセッサによって実行された結果として、前記コンピュータシステムにさらに、少なくとも、前記グラフィカルユーザインターフェースに、複数の矢印を表示させ、前記複数の矢印のうちの1つの矢印が、基本方位に関連付けられており、前記入力が、前記複数の矢印に関連付けられており、前記中間目的地が前記入力に少なくとも部分的に基づいて決定される、条項34~38のいずれか1つに記載の非一時的コンピュータ可読記憶媒体。
40.前記命令が、前記中間目的地への前記命令を実行するために4輪ステアリングを使用するように前記デバイスに指示する、条項34~39のいずれか1つに記載の非一時的コンピュータ可読記憶媒体。