環境内のオブジェクトのレーン割り当てを決定するための障害物及びレーン検出の活用に関して、システム及び方法が開示される。本明細書に記載のシステム及び方法は、拡張現実、仮想現実、ロボット工学、セキュリティ及び監視、医用画像、自律機械アプリケーション、及び/又は、オブジェクト検出及び割り当てが実施され得る任意の他の技術空間において、使用され得る。本開示は、実例の自律車両900(本明細書で「車両900」又は「自律車両900」と別称され、その実例が図9A~9Dに関連して説明される)に関連して説明されることがあるが、このことは制限を意図されていない。たとえば、本明細書に記載のシステム及び方法は、非自律車両、半自律車両(たとえば、1つ又は複数の適応型運転者支援システム(ADAS))、ロボット、倉庫車両、オフロード用車両、飛行船舶、ボート、シャトル、緊急対応車両、バイク、電気若しくは原動機付自転車、航空機、建設車両、潜水艦、ドローン、及び/又は他の車両タイプによって使用され得るが、これに限定されない。加えて、本明細書に記載の検出は、主に、車両及び/又は歩行者などのオブジェクトに関するが、本開示は、これらの検出のみに制限されることは意図されていない。非限定的な実例として、本明細書に記載のプロセスは、道路標識、航空機、ボート、シャトル、自転車、バイク、信号機、手荷物、標識、ポール、動物、木、キャラクタ、文字、アイテム、製品、デジタル透かし、及び/又は解剖学的オブジェクトなどの、これらに限定されない、任意のオブジェクト又は特徴の検出のために使用され得る。
前述のように、従来のシステムとは対照的に、本システムは、リアルタイム又はほぼリアルタイムで車両の複数のセンサ(たとえば、カメラ、LIDARセンサ、RADARセンサ、SONARセンサなど)からの出力を使用してレーンを検出してオブジェクトに割り当てるための正確で計算効率のよい手法を提供する。たとえば、レーン割り当てに先立って、オブジェクト・フェンス又は足跡が決定され得る。いくつかの実施例では、オブジェクト・フェンスは、入力の組合せを使用して決定され得る。たとえば、オブジェクト検出入力は、機械学習モデル(たとえば、オブジェクトを検出するようにトレーニングされたコンボリューショナル・ニューラル・ネットワーク(CNN:convolutional neural network)及び/又はコンピュータ・ビジョン・オブジェクト検出アルゴリズムを使用して生成され得る。オブジェクト検出入力は、オブジェクトに対応する、ボックスなどの境界形状を含み得る。いくつかの実例では、境界形状の少なくとも一部は、非限定的実例において、たとえば、境界形状をその形状の5分の1の下部に減らすように、トリミングされ得る。別の入力は、機械学習モデル及び/又はコンピュータ・ビジョン・アルゴリズムを使用して同様に生成され得る走行可能な自由空間入力を含み得る。走行可能な自由空間入力は、走行可能な自由空間に対応する境界形状の一部をトリミングする(又はさらにトリミングする)或いは区画に分けるために使用され得る。結果として、境界形状の残りの部分(たとえば、区画に分けられた走行可能な自由空間内の境界形状)は、2次元(2D)画像空間におけるオブジェクト・フェンス又は足跡と呼ばれ得る。このプロセスは、自車のセンサの視界又は知覚フィールド内の各オブジェクトについて実行され得る。この方法を使用して、オブジェクトの最上部又は上部が世界空間内のレーンと実際に交差する可能性は低くなり得るので(それは画像空間においてレーンと交差するように見えることはあるが、従来の手法の欠点)、誤検出のレーン割り当ては減少し得る。
いくつかの実例では、オブジェクト・フェンスは、オブジェクトを検出する及びオブジェクトのためのフェンスを生成するように具体的にプログラムされた(又は、アルゴリズムが機械学習モデルである実例では、トレーニングされた)フェンス検出アルゴリズムを使用して、生成され得る。たとえば、任意の数のセンサ(たとえば、カメラ、RADARセンサ、LIDARセンサ、SONARセンサなど)からのセンサ・データが、フェンス検出アルゴリズムへの入力として使用され得、フェンス検出アルゴリズムが、世界空間(たとえば、3次元世界空間)においてオブジェクト・フェンスを生成する。オブジェクト・フェンスは、センサ・データを生成したセンサの内的及び/又は外的パラメータを使用する2D画像空間に3次元(3D)世界空間から変換され得る。
いくつかの実施例において、環境におけるオブジェクトの未来の位置は、オブジェクト・フェンスに加えてセンサ・データ(たとえば、LIDARデータ、SONARデータ、画像データ、RADARデータなど)を使用して、決定され得る。たとえば、オブジェクト・フェンスが決定された後は、センサ・データが、環境におけるオブジェクトの進路又は軌道を決定して1つ又は複数の未来の位置(たとえば、0.5秒未来、1秒未来など)を決定するために使用され得、そして、オブジェクト・フェンスが、未来の位置において適用され得る。そのようなものとして、オブジェクトの現在の位置とオブジェクトに対応するベロシティ及び/又は加速データとを使用して、1つ又は複数のアルゴリズム及び/又は機械学習モデルが、オブジェクトの未来の位置ひいては未来の位置におけるオブジェクトの対応するオブジェクト・フェンスの位置を決定するために使用され得る。いくつかの実例では、オブジェクトの未来の位置が車両の位置に対して変化するときに、倍率が使用され得る(たとえば、オブジェクトがさらに離れて行くとき、オブジェクト・フェンスは、現在のサイズより小さくなり得、オブジェクトが、減速の結果として近づくとき、たとえば、オブジェクト・フェンスのサイズは大きくなり得る、など)。この情報は、次いで、車両の軌道若しくは進路計画立案、障害物回避、及び/又は他の操作に役立つように、オブジェクトが未来の時間に位置し得る環境のレーン又は他の部分を車両に知らせるために使用され得る。
オブジェクト・フェンスは、次いで、環境(たとえば、走行表面)におけるレーンとのオブジェクト・フェンスの重複を決定する-結果として、各オブジェクトに関連するレーンを決定する-ために、レーン・データと組み合わせて使用され得る。レーン・データは、レーン・グラフ及び/又はマップ(たとえば、ナビゲーション・レベル・マップ、高精細(HD:high definition)マップなど)の形で、受信され得る。レーン・データは、各レーンに対応する2D画像空間内の画素を表すレーン・マスクを生成するために使用され得る。いくつかの実例では、レーン・グラフ、マップ、及び/又はその組合せは、環境内のレーンの数及び位置を決定するために使用され得る。たとえば、入力としてレーン・データを受信するレーン・マスク・アルゴリズムが、使用され得、レーン・マスクを生成し得る。実施例において、レーンが、ポリライン(たとえば、レーンを画定する線に沿った点を含む)によって、画定され得る。そのようなものとして、ポリラインからマスクを生成するために、三角形分割方法が、いくつかの実施例において、使用され得る。三角形分割方法は、ポリラインに沿った点を接続し得る(たとえば、各レーンの1つのポリラインから他方のポリラインへ十字の形で、1つおきの点)。非限定的実例として、三角形分割方法は、単調ポリゴン三角形分割を含み得る。所与のレーンのポリゴン内の各画素が、そのレーンに対応すると決定されるように、三角形分割の結果は、2D画像空間内にポリゴンを含むことができ、それぞれがレーンに対応する。
いくつかの実例では、レーンの完全な又は使用可能な範囲は、レーン・マスク生成中に決定されないことがある。そのような実例では、レーンは、レーン拡張アルゴリズム(たとえば、曲線の当てはめ、レーン外挿など)を使用して拡張され得る。レーンを拡張することによって、誤検出は低減され得る。他の実例では、システムによって使用するためのレーン検出データが存在しないことがある。そのような実例では、仮想レーンが生成され得る。たとえば、いくつかの実施例では、自己のレーン(たとえば、自車のレーン)及び両側の隣接するレーンを含む、少なくとも3つのレーンが、生成され得る。仮想レーンを生成することによって、完全に正確ではない場合でも、オブジェクトは、自車の進路(たとえば、自己のレーン)に対するオブジェクトの位置の自車へのより良い理解をもたらすために、仮想レーンに割り当てられ得る。
オブジェクト・フェンス及びレーン・マスクが決定された後は、オブジェクトは、2D画像空間内のオブジェクト・フェンスとレーン・マスクとの画素間の重複を決定することによって、レーンに関連付けられ得る。オブジェクトは、レーン・マスク内のレーン画素とオブジェクト・フェンス内の画素の重複に基づいてレーン・マスク内のレーンに割り当てられ得る。いくつかの実例では、各オブジェクトは、単純な画素カウントに基づいて、レーンに割り当てられ得る。他の実例では、オブジェクト・フェンスは、オブジェクト・フェンスの外周に沿った頂点(又はその対応する画素)によって表され得る。オブジェクトが単一のレーン内にある場合、各組の2つの外周画素の間の画素距離が、計算され、合計され、正規化されて、単一のレーンについて1/1になるであろう、レーンごとの交点の比率を生み出すことができる。オブジェクトが2つ以上のレーン内にある場合、レーン・ラインを横断する1組の点が、決定され得る。2つの画素が決定された後は、新しい頂点が、2つの画素の間の交差部において生成され得る。この画素は、次いで、新しい頂点と交差部の両側の互いの外周画素若しくは頂点との間の距離を決定するために使用され得る。新しい頂点と第1のレーンの第1の組の外周画素との距離の第1の和が計算され得、新しい頂点と第2のレーンの第2の組の外周画素との距離の第2の和が計算され得る。いくつかの実施例では、これらの和は、次いで、正規化され得る。最終的に、レーンごとの交点の比率が、第1の和及び第2の和を使用して、決定され得る。交点の比率、及びフレームごとにその比率がどのように変わるかを知ることは、オブジェクトの軌道(たとえば、レーンの切り替え、急に向きを変えること、レーン保持など)の指示をもたらし得る。
いくつかの実施例において、時間的平滑化が、オブジェクトの以前のフレームの事前レーン割り当てを活用するために使用され得る。たとえば、レーン割り当ては、オブジェクトが車両に近づくときに、より正確になり得るので、車両が離れて行くとき、レーンが2D画像空間において融合して見える傾向がある場合、事前レーン割り当ては、さらなる距離におけるオブジェクトレーン割り当てのより正確な予測を提供するために、活用され得る。
最終的に、オブジェクトのためのレーン割り当てを表すデータは、次いで、コンパイルされ、自律運転ソフトウェア・スタックの認知層、世界モデル管理層、計画立案層、制御層、及び/又は別の層に送信されて、安全で効果的な走行表面のナビゲートにおいて自律車両及び/又はADAS対応車両を支援することができる。
図1を参照すると、図1は、本開示のいくつかの実施例による、環境内のオブジェクトのレーン割り当てを決定するための例示的プロセス100を示す例示的データ流れ図である。図1に関して説明される検出タイプはレーン検出であり、これは限定を意図されておらず、単に例示を目的とする。たとえば、プロセス100は、本開示の範囲を逸脱せずに、環境の進路、跡、列、線、及び/又は他の部分を検出するために、及びそのオブジェクトを割り当てるために、使用され得る。
プロセス100は、センサ・データ102を生成すること及び/又は車両900の1つ又は複数のセンサから受信することを含み得る。センサ・データ102は、環境のレーン又は他の画定された領域にリアルタイム又はほぼリアルタイムでオブジェクトを割り当てるために、車両900によって、プロセス100内で、使用され得る。センサ・データ102は、車両900(及び/又は、いくつかの実例では、他の車両又はオブジェクト、たとえば、ロボット・デバイス、VRシステム、ARシステムなど)のセンサのいずれかからのセンサ・データ102を含み得るが、これに限定されない。たとえば、図9A~9Cを参照すると、センサ・データ102は、全地球的航法衛星システム(GNSS:global navigation satellite system)センサ958(たとえば、全地球測位システム・センサ)、RADARセンサ960、超音波センサ962、LIDARセンサ964、慣性計測装置(IMU:inertial measurement unit)センサ966(たとえば、加速度計、ジャイロスコープ、磁気コンパス、磁力計など)、マイクロフォン996、ステレオ・カメラ968、ワイドビュー・カメラ970(たとえば、魚眼カメラ)、赤外線カメラ972、サラウンド・カメラ974(たとえば、360度カメラ)、長距離及び/又は中距離カメラ998、速度センサ944(たとえば、車両900の速度を測定するための)、及び/又は他のセンサ・タイプによって生成されたデータを含み得るが、これに限定されない。
いくつかの実例では、センサ・データ102は、カメラ(たとえば、中央又は中央付近に取り付けられたカメラ)及び/又は他のセンサ・タイプ(たとえば、バンパに取り付けられたRADARセンサ)など、1つ又は複数の前向きのセンサによって生成されたセンサ・データを含み得る。前向きのカメラは、車両900の道程の現在のレーン、車両900の道程の隣接するレーン、及び/又は走行表面の境界の両方を含む視界(たとえば、図9Bの前向きのステレオ・カメラ968及び/又はワイドビュー・カメラ970の視界)を含み得るので、このセンサ・データ102は、ナビゲートするときに-たとえば、レーン内、レーン変更を通して、曲がり角を通って、交点を通ってなど-コンピュータ・ビジョン及び/又は認知のために有用になり得る。いくつかの実例では、前向きのセンサに加えて、サイドビュー・センサ及び/又はリアビュー・センサが、レーン割り当てが車両900の横に及び/又は車両900の後ろにオブジェクトを含むことになる場合などに使用され得る。いくつかの実例では、2つ以上のカメラ又は他のセンサ(たとえば、LIDARセンサ964、RADARセンサ960など)が、複数の視界(たとえば、図8Bの長距離カメラ898、前向きのステレオ・カメラ868、及び/又は前向きのワイドビュー・カメラ870の視界)及び/又は知覚フィールド(たとえば、LIDARセンサ964、RADARセンサ960などの)を組み込むために使用され得る。
センサ・データ102は、画像を表す画像データ、ビデオを表す画像データ(たとえば、ビデオのスナップショット)、及び/又はセンサの知覚フィールドの表現を表すセンサ・データ(たとえば、LIDARセンサの深度マップ、超音波センサの値グラフなど)を含み得る。センサ・データ102が画像データを含む場合、たとえば、JPEG(Joint Photographic Experts Group)又は輝度/クロミナンス(YUV:Luminance/Chrominance)フォーマットなどの圧縮画像、H.264/高度ビデオ符号化(AVC:Advanced Video Coding)又はH.265/高性能ビデオ符号化(HEVC)などの圧縮ビデオフォーマットに由来するフレームのような圧縮画像、RCCB(Red Clear Blue)、RCCC(Red Clear)、若しくは他のタイプの画像センサなどに由来する未加工画像、及び/又は他のフォーマットなどの、しかしこれに限定されない、任意のタイプの画像データ・フォーマットが使用され得る。加えて、いくつかの実例では、センサ・データ102は、前処理(たとえば、未加工の又はキャプチャされたフォーマットにおける)なしにプロセス100で使用され得るが、他の実例では、センサ・データ102は、前処理(たとえば、センサ・データ・プレプロセッサ(図示せず)を使用するなどした、ノイズ・バランシング、デモザイク処理、スケーリング、トリミング、拡張、ホワイト・バランシング、トーン・カーブ調節など)を受け得る。本明細書では、センサ・データ102は、未処理のセンサ・データ、前処理されたセンサ・データ、又はその組合せを指し得る。
センサ・データ102は、車両900のセンサによってキャプチャされた環境内の1つ又は複数のオブジェクトのオブジェクト・フェンス110を生成するために使用され得る。オブジェクト・フェンス110は、本明細書に記載のものなどの、しかしこれに限定されない、いくつかの異なる方法のいずれかを使用して、生成され得る。いくつかの実例では、オブジェクト・フェンス110は、自由空間検出106とオブジェクト検出104との組合せを使用して生成され得るが、他の実例では、オブジェクト・フェンス110は、フェンス生成アルゴリズム108を使用して生成され得る。どちらの実例でも、オブジェクト・フェンス110は、プロセス100内のレーン検出及び割り当てのための入力として使用され得る。
オブジェクト・フェンス110を生成するためにオブジェクト検出104及び自由空間検出106が使用される実施例では、センサ・データ102は、オブジェクト検出104及び自由空間検出106の両方への入力として使用され得る。たとえば、オブジェクト検出104は、センサ・データ102(たとえば、1つ又は複数のカメラからの画像データ、1つ又は複数のLIDARセンサからのLIDARデータ、1つ又は複数のRADARセンサからのRADARデータなど)を使用してオブジェクト(たとえば、車両、歩行者、自転車、瓦礫など)を検出し、検出されたオブジェクトの境界形状(たとえば、境界ボックス、円、ポリゴンなど)を生成することができる。オブジェクト検出104は、機械学習モデル(たとえば、コンボリューショナル・ニューラル・ネットワーク(CNN)などのディープ・ニューラル・ネットワーク(DNN:deep neural network))、コンピュータ・ビジョン・アルゴリズム、及び/又は別のオブジェクト検出アルゴリズム・タイプを使用してオブジェクトを検出し、オブジェクトの境界形状を生成することができる。機械学習モデルがオブジェクト検出104のために使用される場合、機械学習モデルは、線形回帰、ロジスティック回帰、決定木、サポート・ベクタ・マシン(SVM:support vector machines)、ナイーブ・ヘイズ、k最近傍(Knn:k-nearest neighbor)、K平均クラスタリング、ランダム・フォレスト、次元縮小アルゴリズム、勾配ブースティング・アルゴリズム、ニューラル・ネットワーク(たとえば、自動エンコーダ、コンボリューション、反復、パーセプトロン、長/短期メモリ(LSTM:Long/Short Term Memory)、ホットフィールド、ボルツマン、ディープ・ビリーフ、デコンボリューション、コンボリューション、敵対的生成、液体状態機械など)を使用する機械学習モデル、及び/又は他のタイプの機械学習モデルを含み得るが、これらに限定されない。
オブジェクト検出104を使用する境界形状出力は、オブジェクト(たとえば、車両900の走行表面上の)に対応する画像の部分(センサ・データ102によって表される)を表し得る。たとえば、図2Aの視覚化200を参照すると、境界形状204は、車両202に対応する画像の一部を識別するために-オブジェクト検出104を使用して-車両202のために生成され得る。非限定的実例において、オブジェクト検出104の出力は、オブジェクトが位置していると決定された画像内の点(たとえば、画素)を含み得る。そのような実例では、それらの点は、境界形状内のそれぞれの点又は画素を含み得る。そのようなものとして、境界形状内で生成されたオブジェクト・マスクに加えて、境界形状は、オブジェクトに対応するそれぞれの画素を画定し得る。オブジェクト検出104のこのプロセスは、各フレーム内の任意の数のオブジェクトについて実施され得る。
いくつかの実施例において、オブジェクト・フェンス110を決定するために、各検出されたオブジェクトの境界形状の少なくとも一部が、トリミングされ得る。たとえば、境界線形状内のオブジェクトのうちの少なくともいくらかは、走行表面上のオブジェクトの足跡に対応しないことがある(たとえば、2D画像空間では、車両202の上部分は、移動のレーンを越えて伸び得る)ので、境界形状の少なくとも一部が、トリミングされ得る。図2Bの視覚化220に示すように、境界形状204は、車両202に対応するトリミングされた境界形状222生成するために、トリミングされ得る。いくつかの実例では、たとえば、境界形状の上半分、上4分の3、上5分の4、上4分の2及び下4分の1などを含むがこれらに限定されない、境界形状の事前に定められた部分、量、又はパーセンテージが、トリミングされ得る。境界形状の少なくとも一部をトリミングすることによって、結果として生じるトリミングされた境界形状は、走行表面上の車両の足跡により正確に対応し得るので、検出漏れは低減され得る。オブジェクト足跡に関する正確性のメリットに加えて、境界形状の一部のトリミングはまた、オブジェクト・フェンス110を決定するための計算の費用(たとえば、自由空間検出106の適用のための有効エリアを減らすことによって)及び/又はレーン割り当てのためにオブジェクト・フェンス110を利用すること(たとえば、計算で使用され得る境界形状の外へトリミングされた部分の画素の数を減らすことによって)を減らすことができる。
本明細書に記載のように、自由空間検出106の出力は、オブジェクト検出104の間に生成された境界形状及び/又はトリミングされた境界形状と組み合わせて使用され得る。たとえば、センサ・データ102は、車両900のセンサの視界及び/又は知覚フィールド内の環境の部分を決定するために、1つ又は複数のコンピュータ・ビジョン・アルゴリズム、機械学習モデルs、及び/又は走行可能な自由空間のための他の検出アルゴリズムによって使用され得る。自由空間検出106のために使用され得る機械学習モデルは、(たとえば、前述の、オブジェクト検出104に関して)本明細書に記載されたものを含み得るが、これに限定されない。非限定的な実例として、走行可能な自由空間は、2019年3月15日に出願された、参照することによって本明細書に組み込まれる、米国非仮出願第16/355,328号に記載された方法を使用して決定され得る。
自由空間検出106の出力は、走行表面上の走行可能な自由空間及び/又は走行不可能な空間に対応する-車両900のカメラによってキャプチャされた画像内に表された-環境の部分を表し得る。走行可能な自由空間は、車両900によって通過可能な又は走行可能な環境の部分並びに走行不可能な空間(たとえば、建造物、公園など)を表し得る(たとえば、道路は走行可能になり得るが、歩道又は建造物は走行可能になり得る)。図2Cの視覚化230は、トリミングされた境界形状222に適用されるものとしての自由空間検出106の少なくとも一部を表し得る。たとえば、自由空間検出106の間に決定された走行可能な自由空間232の部分は、オブジェクト・フェンス110(図2Dの視覚化240に表されるような)を生成するために、トリミングされた境界形状222からトリミングされ得る。したがって、図2Cに関して、オブジェクト・フェンス110は、走行可能な自由空間232が外へトリミングされた後のトリミングされた境界形状222内の走行不可能な空間234を表し得る。完全な境界形状204が使用される実例では、完全な境界形状204内の走行可能な自由空間が、外へトリミングされ得る。いくつかの実例では、自由空間検出106は、走行可能な自由空間及び/又は走行不可能な空間が検出される画像内の点(たとえば、画素)を含むことができ、そして、境界形状のトリミング及び/又はオブジェクト・フェンス110の生成が、それらの点を使用して実行され得る。そのような実例において、走行可能な自由空間に対応する点は、オブジェクト・フェンス110を生成するために、境界形状(又はそのトリミングされたバージョン)に対応する点から取り除かれ得る。トリミング・アウト・プロセスは、車両900のセンサの視界又は知覚フィールドを表す入力画像において検出された各オブジェクトについて実行され得る。
いくつかの実施例において、オブジェクト検出104及び自由空間検出106の使用に加えて、或いはそれに代わって、オブジェクト・フェンス110が、フェンス生成アルゴリズム108を使用して、生成され得る。フェンス生成アルゴリズム108は、機械学習モデル、コンピュータ・ビジョン・アルゴリズム、及び/又はオブジェクト検出アルゴリズムを含み得る。機械学習モデルが使用される場合、機械学習モデルは、本明細書に記載の機械学習モデル(たとえば、前述の、オブジェクト検出104に関する)を含み得るが、これに限定されない。フェンス生成アルゴリズム108は、オブジェクトを検出するための入力としてセンサ・データ102を使用し、各検出されたオブジェクトのためのオブジェクト・フェンス110(たとえば、図2Dに示すような)を生成するようにトレーニング及び/又はプログラムされ得る。たとえば、任意の数のセンサ(たとえば、カメラ、RADARセンサ960、LIDARセンサ964、超音波センサ962など)からのセンサ・データ102は、フェンス生成アルゴリズム108への入力として使用され得る。いくつかの実施例において、フェンス生成アルゴリズム108は、2D又は3D世界空間においてオブジェクト・フェンス110を生成し、センサ・データ102を生成した対応するセンサの内的及び/又は外的パラメータは、世界空間から画像空間にオブジェクト・フェンス110を変換するために使用され得る。たとえば、世界空間座標と画像座標との間の関係を正確に決定するために、3Dから2Dへの投影が使用され得る。たとえば、センサは、1つ又は複数の内的(たとえば、焦点距離、f、光心(uo、vo)、画素アスペクト比、α、スキュー、sなど)及び/又は外的(たとえば、3D回転、R、変換、tなど)カメラ・パラメータを使用して較正され得る。加えて、いくつかの非限定的な実例では、走行表面の接地面上に3Dの点がいつもあることを必要とするなど、1つ又は複数の制約が課され得る。いくつかの実例では、センサのパラメータのうちの1つ又は複数は動的になり得(たとえば、振動、運動、向きなどにより)、そして、3Dから2Dへの投影は、結果として動的に更新され得る。
いくつかの実施例において、オブジェクト・フェンス110が、オブジェクト・フェンス110に対応するポリゴンの点(たとえば、画素及び/又は頂点)として生成され得る。そのようなものとして、頂点を接続することによって、オブジェクト・フェンス110に対応するポリゴンが生成され得、そして、オブジェクト・フェンス110内の画素は、レーン割り当てのためのオブジェクトに対応すると決定され得る。オブジェクト・フェンス110が、走行表面上のオブジェクトの形状又は足跡をより緊密に定めることによって、レーン割り当て予測の精度及び信頼性を向上させるために-本明細書に記載されているものなどの任意の方法を使用して-レーン割り当て120に先立って、生成され得る。たとえば、オブジェクト・フェンス110が決定された後は、オブジェクト・フェンス110は、レーン割り当て120のための重複決定118を行うために-レーン・マスク116と組み合わせて-使用され得る。
いくつかの実施例において、環境内のオブジェクトの未来の位置及び/又は割り当てが、センサ・データ102(たとえば、LIDARデータ、SONARデータ、画像データ、RADARデータなど)及びオブジェクト・フェンス110を使用して、決定され得る。たとえば、オブジェクト・フェンス110が決定された後は、速度、ベロシティ、加速、ヨー・レートなどを表すセンサ・データ102が、環境におけるオブジェクトの未来の進路又は軌道を決定して1つ又は複数の未来の位置(たとえば、0.5秒未来、1秒未来など)を決定するために、使用され得る。たとえば、線形動的モデル(たとえば、未来の位置=現在の位置+(ベロシティ×時間))、定加速度モデル、定ターン率モデル、機械学習モデル、別のアルゴリズム・タイプ、及び/又はその組合せが、オブジェクトの未来の位置(たとえば、世界空間における)を決定するために、センサ・データ(又は、それによって表されるデータ)を使用し得る。未来の位置が知られた後は、オブジェクト・フェンス110が、未来の位置及びオブジェクト・フェンス110情報を使用して、生成され得る(たとえば、画像空間において)。いくつかの実例では、オブジェクトの未来の位置が車両900の位置に対して変化するとき、倍率が使用され得る(たとえば、オブジェクトがさらに離れて行くとき、オブジェクト・フェンス110は現在のサイズより小さくなり得る、減速の結果としてオブジェクトが近づくとき、たとえば、オブジェクト・フェンス110のサイズは大きくなり得る、など)。この情報は、車両の軌道若しくは進路計画立案、障害物回避、及び/又は他の動作を支援するために、オブジェクトが未来の時間において位置し得るレーン又は環境の他の部分を車両900に知らせるために使用され得る。レーン割り当て120の決定は、現在のオブジェクト・フェンス位置に関する未来のオブジェクト・フェンス位置について類似し得、車両の現在のオブジェクト・フェンス110及び未来のオブジェクト・フェンス110の組合せは、経時的に(たとえば、次の1秒、2秒などにわたり)オブジェクトが占有すると予測される環境内のエリア及び体積のより詳細な理解をもたらし得る。
レーン検出112は、走行表面の1つ又は複数のレーン、区分、分割、及び/又は境界線の位置を決定するために、センサ・データ102及び/又はレーン・データ126を使用し得る。たとえば、レーン検出112は、走行表面のレーン(若しくはレーン・ライン)、区分、分割、境界線、及び/又は他の領域の位置を決定するためのコンピュータ・ビジョン・アルゴリズム、機械学習モデル、及び/又はオブジェクト検出アルゴリズムを使用し得る。機械学習モデルが使用される場合、機械学習モデルは、(たとえば、前述の、オブジェクト検出104に関して)本明細書に記載された機械学習モデルを含み得るが、これに限定されない。非限定的実例としては、2019年2月15日に出願された米国非仮出願第16/286,329号及び2019年7月17日に出願された米国非仮出願第16/514,404号に記載されているものなどの方法があり、これらの出願のそれぞれは、参照することによってその全部が本明細書に組み込まれる。
いくつかの実例では、レーン検出112は、レーン・データ226を使用し得、そこで、レーン・データ226は、レーン・グラフ及び/又はマップ(たとえば、ナビゲーション・レベル・マップ、高精細(HD)マップ)を含み得る。たとえば、レーン・データ226は、環境内の走行表面上のいくつかのレーン及び/又は出口ランプ、合流、分割、及び/又は他の特徴を表し得る。そのようなものとして、レーン検出112は、センサ・データ102、レーン・データ226、又はその組合せを使用して、生成され得る。たとえば、1つ又は複数のレーンは、レーン検出アルゴリズム又は機械学習モデルと組み合わせてセンサ・データ102を使用して、識別され得、そして、1つ又は複数の追加のレーンが、レーン・データ226(たとえば、マップ・アプリケーションからの)を使用して、識別され得る。レーン検出の出力は走行表面のレーン・ライン、境界線、合流ライン、区分ライン、及び/又は他のラインに対応するライン(たとえば、複数の頂点によって表されるポリライン)を含み得る。
非限定的実例において、レーン検出112の出力は、レーン境界(たとえば、図6Aの視覚化600のポリポイント602A~602H及び604A~604F)が位置すると決定された画像内の点(たとえば、画素)を含み得る。ポリライン(たとえば、図6Bの視覚化620のポリライン622A~622G及び624A~624E)が、それぞれのレーン及び/又は境界の隣接するポリポイントを接続することによって、生成され得、そこで、ポリライン間の接続は、画像のレーン・ライン又は境界の範囲を定め得る。そのようなものとして、ポリポイント及び/又はポリラインは、センサ・データ102(たとえば、画像)及び/又はマップ・データ226(たとえば、レーン・グラフ及び/又はマップ)によって表されるものとしての環境内の検出されたレーン、オフランプ、オンランプ、境界、及び/又は他の特徴を画定する又は線引きすることができる。
いくつかの実施例において、レーン・マスク116を決定するために、レーン三角形分割114が実行され得る。たとえば、レーン検出112の出力(たとえば、ポリラインに対応するポリポイント)を使用して、レーン三角形分割114が、レーン・マスク116を生成するために、使用され得る。そのような実例において、レーン三角形分割114は、十字パターンなどのパターンで隣接するポリラインの間のポリポイントを接続し得る。非限定的実例では、図6Cに示すように、あらゆるポリポイントは、同じラインに対応する隣接するポリラインのポリポイントに十字型に接続され得る(たとえば、左側のレーン・ラインからのポリポイントは、右側のレーン・ラインからのポリポイントに接続され得る)。図6Cの視覚化640に示すように、それぞれのポリポイントが三角形を形成するように接続されるまで、第1のポリラインの第1のポリポイント(たとえば、最も下のポリポイント)が、第2のポリラインからの第1の(又は第2の)ポリポイントに接続され得、第2のポリラインからの第1の(又は第2の)ポリポイントが、第1のポリラインからの第2のポリポイントに接続され得る、など。いくつかの非限定的な実例において、レーン三角形分割114は、単調ポリゴン三角形分割を使用してレーン・マスク116を生成し得る。ポリラインは、少なくとも1つの軸(たとえば、方向)において単調であり及び非曲線であると想定され得る。ベクトルが、それぞれのレーンにおける終了ポリライン点と開始ポリライン点との間で決定され得る。ベクトルは、次いで、走行表面の各レーン、オフランプ、オンランプ、又は他の画定された部分に対応する画像内の画素を決定するためにレーン・マスク116をレンダリングするための三角形(たとえば、図6Dの三角形642A~642X)を生成するために使用され得る。
いくつかの実施例において、レーン回帰アルゴリズムが、レーン・マスク116を生成するために、レーン三角形分割114のために使用され得る。レーン回帰アルゴリズムは、ポリラインを通してラインを逆行して三角形を生成することができる。たとえば、任意の知られている回帰アルゴリズムが、三角形を生成するために使用され得る。レーン・マスク116が、レーン三角形分割116によって各レーンのために生成された三角形を使用して、生成され得る。レンダリングされた三角形の組合せは、画像空間内のポリゴンを形成し得、そこで、各ポリゴンは、レーンに対応し得る。
レーン三角形分割114及び/又は別のマスク生成手法の結果として、レーン・マスク116は、走行表面のレーン又は他の部分に対応する画像空間内の画素を表すように生成され得る。いくつかの実例では、レーン・マスク116内の各画素は、それぞれのレーンに対応する色としてインデックスを付けられ得る(たとえば、図6Dの視覚化660に関して、左のレーン662の画素は第1の色又はパターンになり得、中央の又は自己のレーン664の画素は第2の色又はパターンになり得、そして、第3のレーン666の画素は第3の色又はパターンになり得る)。
実施例において、倍率が、レーン・マスク116を縮小するために使用され得る。たとえば、レーン・マスクは、性能を向上させる又はランタイムを減らすために、所定の倍率(たとえば、2分の1、4分の1など)によって縮小され得る。実施例では、センサ・データ102内の各画素が倍率によって縮小され得る-それにより、より低い、縮小された分解能においてでもより高い空間分解能からの情報を保持する-ように、探索が縮尺比に基づいて実行され得るので、スケーリングの後でも、レーン・マスク116は、レーン・マスク116を生成するために使用されるソース画像、マップ及び/又はグラフの忠実性を保持し得る。そのような実例において、センサ・データ102が、レーン三角形分割114の前に縮小され得、ラスタライザが、センサ・データ102(たとえば、画像)を縮小するために使用され得る。縮小されたセンサ・データ102は、次いで、レーン三角形分割114のために使用され得る。そのような実施例では、オブジェクト・フェンス110(たとえば、オブジェクト・フェンス110の画素)もまた、同じ倍率によって縮小され得る。
いくつかの実例では、レーン拡張122及び/又は仮想レーン生成124が、検出されたレーンを拡張する及び/又はレーン・マスク116内にレーンを生成するために使用され得る-レーンの完全な又は使用可能な範囲がレーン検出112及び/又はレーン三角形分割114の結果としてレーン・マスク116のために生成されない場合など。レーンの所定の長さが、レーンを拡張するためにレーン拡張122が実行され得るかどうかを決定するために、使用され得る。そのような実例では、レーン拡張アルゴリズム又は機械学習モデル(本明細書に記載されているものなど)が、レーンを拡張するために使用され得る。任意の知られているレーン拡張アルゴリズム-曲線の当てはめ及び/又はレーン外挿などの、しかしこれに限定されない-が、レーン拡張(たとえば、図6Eの視覚化680内のレーン拡張682、684、686、及び688)を生成するために使用され得る。そのようなレーン拡張は、レーン・マスク116のさらなる奥行きを生成することによって、検出されたオブジェクトのレーン割り当ての誤検出を減らすことができる。さらに、いくつかの実例では、レーン拡張アルゴリズムは、拡張が別のレーン境界と交差するときにレーン拡張を制限するように構成され得る。
仮想レーン生成124は、1つ又は複数のレーン(たとえば、閾値数未満のレーン)が検出されない場合に、実行され得る。そのようなものとして、仮想レーン生成124は、レーン検出112のための制限されたレーン・データ126及び/又はセンサ・データ102が存在するときに、使用され得る。実施例において、所定の数のレーンが、仮想レーンが生成されるべきかどうかを決定するために、使用され得る。たとえば、閾値が3つのレーンである場合、3つのレーンが検出されないとき、仮想レーンが、ギャップを埋めるために生成され得る。そのような実例において、3つのレーンは、車両900の少なくとも自己のレーンと、自己のレーンのいずれかの側にある隣接するレーンとを含み得る。レーン拡張122に類似して、アルゴリズム又は機械学習モデルは、生成されることになるいくつかの仮想レーンと、生成されることになる仮想レーンの位置とを決定するために使用され得る。仮想レーンを生成することによって、実際の検出ほど正確でない場合でも、オブジェクトは、自車の進路に対するオブジェクトの位置の車両900へのより良い理解の提供ために、仮想レーンに割り当てられ得る。
オブジェクト・フェンス110及びレーン・マスク116が生成された後は、重複決定118が、どのオブジェクト・フェンス-又はその部分-が環境のそれぞれのレーン又は他の画定された部分内にあるかを決定するために、実行され得る。そのようなものとして、重複決定118は、レーン・マスク116及びオブジェクト・フェンス110を使用して、オブジェクト・フェンス110の画素及び/又は境界とレーン・マスク116(たとえば、2D画像空間における)との間の重複を決定することができる。
いくつかの実例では、オブジェクトが、レーン・マスク116内のレーン画素とのオブジェクト・フェンス110内の画素の重複に基づいて-レーン割り当て120の間に-レーン・マスク内のレーンに割り当てられ得る。対応するオブジェクト・フェンス110を有する各オブジェクトが、画素カウントに基づいて1つ又は複数のレーンに割り当てられ得るように、画素カウンティング132が、オブジェクト・フェンス110の画素とレーン・マスク116との間の重複を決定するために使用され得る。オブジェクト110フェンスの全体内の画素が、レーン・マスク116内の各レーンのレーン画素に対してマッチさせられ得、オブジェクトが、各レーン内のオブジェクト・フェンス110画素の画素カウントに基づいて、1つ又は複数のレーンに割り当てられ得る。レーン・マスク116に関連付けられた画素インデックス(たとえば、図6Dに関して記載されたような、色又はパターン)は、次いで、特定の画素がどのレーンと重複するかを決定するために使用され得る。いくつかの実例では、オブジェクトをレーンと関連付けるために、重複している画素の数が閾値を超えることが必要とされ得る(たとえば、20より多い画素、40より多い画素、オブジェクト・フェンス110の画素の10パーセントより多いなど)。閾値を使用することによって、レーンとわずかに重複するオブジェクト・フェンス110(オブジェクト・フェンス110における何らかの不正確性を構成し得る)はカウントしないことが可能であるので、誤検出は低減され得る。
いくつかの実施例では、画素カウンティング132に加えて又はその代替として、境界スコアリング134が、オブジェクト・フェンス110の画素とレーン・マスク116との間の重複を決定するために実行され得る。そのような実例では、オブジェクト・フェンス110は、オブジェクト・フェンスの外周110に沿った頂点(たとえば、画素)(たとえば、頂点702A、702B、702C、…、702N)として表され得る。画素距離が、重複を決定するために、オブジェクト・フェンス110の頂点の間で決定され得る。たとえば、オブジェクトが単一のレーン内にある場合、各組の2つの外周画素の間の画素距離が、計算され、合計され、正規化されてレーンごとの交点の比率-単一のレーンでは1/1になるであろう-を生み出す。
オブジェクトが2つ以上のレーン内にあり得る実例では、レーン境界を横断する1組の点が、決定され得る。たとえば、頂点702Bと頂点702Cとはレーン・ラインに沿って分けられていると決定され得る。そのようなものとして、クロス・ポイント722A(又は新しい頂点)が、レーン・ライン上にある頂点702Bと頂点702Cとの間の点を発見することによって、決定され得る。クロス・ポイント又は新しい頂点が、次いで、新しい頂点と交差部のいずれかの側のオブジェクト・フェンス110の互いの外周画素若しくは頂点との間の距離(たとえば、画素距離、直線に沿う、オブジェクト・フェンス100の境界に沿うなど)を決定するために使用され得る。新しい頂点と第1のレーン内のオブジェクト・フェンス110に対応する第1の組の外周画素との間の距離の第1の和が計算され得、新しい頂点と第2のレーン内のオブジェクト・フェンス110に対応する第2の組の外周画素との間の距離の第2の和が計算され得る。いくつかの実施例において、これらの和は、次いで、正規化され得る。最終的に、レーンごとの交点の比率が、距離の第1の和及び距離の第2の和に基づいて、決定され得る。交点の比率と、その比率がフレームごとにどのように変わるかとを知ることは、オブジェクトの軌道(たとえば、レーンの切り替え、急に向きを変えること、レーン保持など)の指示をもたらし得る。加えて、交点の比率は、レーン割り当て120の間に複数のレーンにオブジェクトを割り当てるために使用され得る。
重複決定118は、それぞれのオブジェクト・フェンス110を有するそれぞれのオブジェクトのためのレーン割り当て120を決定するために使用され得る。いくつかの実例では、画素カウンティング132は、レーン・マスク116画素と重複しているオブジェクト・フェンス110画素の画素カウントを提供し得、重複は、レーン割り当てを決定するために使用され得る。もう1つの実例として、オブジェクト・フェンス110のレーンごとの交点の比率-境界スコアリング134によって決定されるものとしての-は、2つ以上のレーンにオブジェクトを割り当てるために使用され得る。レーン割り当て120は、対応するオブジェクトの道程の現在のレーンを表し得る。レーン割り当て120は、車両900がどの進路又は軌道を辿るべきか若しくは辿り得るか、ブレーキを掛ける、加速する、若しくはレーンを変更するかどうか、及び/又は他の決定タイプなどの決定を行うときに、車両900によって使用され得る。
いくつかの実施例において、時間的平滑化142は、オブジェクトの前のフレーム及び/又は画像の事前レーン割り当て120を活用して後続のフレーム及び/又は画像内のオブジェクトの位置及び/又はレーン割り当てを推定するために、実行され得る。たとえば、オブジェクトが車両900のセンサに近くなるときに、レーン割り当てはより正確になり得るので、オブジェクトが離れて行くとき、事前レーン割り当て120は、さらなる距離-たとえば、レーンが画像空間において合流するように見える場合-におけるオブジェクト位置及びレーン割り当てのより正確な予測を提供するために活用され得る。そのような実例では、事前予測は、レーン割り当て120の現在の予測に関して重み付けされ得る(たとえば、現在の予測の90%/事前予測の10%、現在の予測の70%/直前の予測の20%/2つの予測前の10%など)。したがって、時間的平滑化は、事前予測を活用してプロセス100内のレーン割り当て120の精度を改善することができる。
ここで図2A~2Dを参照すると、図2A~2Dは、本開示のいくつかの実施例による、オブジェクト検出104及び自由空間検出106を使用する画像内の車両のオブジェクト・フェンスの生成のためのプロセスを示す。図2Aは、車両センサによって生成された画像内で検出された車両の境界形状を示す。境界形状204は、オブジェクト検出アルゴリズム及び/又は機械学習モデルを使用して-視覚化202に表されるものとして-車両202について生成され得る。いくつかの実例では、境界形状204は、車両202の周囲の境界ボックスでもよい。境界形状204は、境界形状204に対応するそれぞれの画素、境界形状204の外周に沿った頂点、又はその組合せなど、車両202が潜在的に位置する入力画像200内の点(たとえば、画素)として表され得る。
図2Bは、本開示のいくつかの実施例による、画像内で検出された車両202のトリミングされた境界形状222を示す。たとえば、境界形状の少なくとも一部204は、本明細書に記載のように、トリミングされた境界形状222を生成するためにトリミングされ得る。
図2Cは、本開示のいくつかの実施例による、走行可能な自由空間決定を使用するオブジェクト・フェンスの画定を示す。たとえば、走行可能な自由空間232-本明細書に記載のような-が、オブジェクト・フェンス110を生成するために、境界形状204及び/又はトリミングされた境界形状222からトリミングされ得る。図2Cのトリミングされた境界形状222内の走行可能な自由空間323及び走行不可能な空間234としてのみ示されているが、これは限定を意図されていない。いくつかの実例では、各画像の一部又はすべてが、走行可能な自由空間又は走行不可能な空間として画定され得、境界形状204及び/又はトリミングされた境界形状222に対応するこの出力の部分が、オブジェクト・フェンス110を生成するために使用され得る。
図2Dは、本開示のいくつかの実施例による、オブジェクト境界形状から走行可能な自由空間を取り除くことによって生成された車両のオブジェクト・フェンスを示す。図2Dに示すように、走行可能な自由空間232は、オブジェクト・フェンス110を生成するために、トリミングされた境界形状222からトリミングされ得る。
ここで図3を参照すると、本明細書に記載の方法300の各ブロックは、ハードウェア、ファームウェア、及び/又はソフトウェアの任意の組合せを使用して実行することができる計算プロセスを含む。たとえば、様々な機能は、メモリに記憶された命令を実行するプロセッサによって実施され得る。本方法はまた、コンピュータ記憶媒体に記憶されたコンピュータ実行可能命令として実施され得る。本方法は、いくつか例を挙げると、独立型アプリケーション、サービス又はホスト型サービス(独立型、又は別のホスト型サービスと組み合わせた)、或いは別の製品へのプラグインによって、提供され得る。加えて、方法300は、実例として、図1の環境内のオブジェクトのレーン割り当てを決定するためのプロセス100に関して説明されている。しかしながら、本方法は、本明細書に記載されているものを含むがこれに限定されない、任意の1つのシステム、又はシステムの任意の組合せによって、追加で又は代替的に実行され得る。
図3は、本開示のいくつかの実施例による、環境内のオブジェクトのレーン割り当てを決定するための方法300を示す流れ図である。方法300は、ブロックB302において、画像内に描かれたオブジェクトに対応する境界形状を表すオブジェクト検出データを受信することを含む。たとえば、画像(たとえば、センサ・データ102によって表されるものとしての)内に描かれたオブジェクト(たとえば、車両、歩行者、瓦礫など)に対応する境界形状は、オブジェクト検出112の後に受信され得る。いくつかの実例では、境界形状は、境界形状の一部分を表すトリミングされた境界形状(たとえば、図2Bのトリミングされた境界形状222)でもよい。
方法300は、ブロックB304において、走行可能な自由空間を含むと決定された境界形状の少なくとも一部を表す自由空間データを受信することを含む。たとえば、走行可能な自由空間を含むと決定された境界形状の少なくとも一部を表す自由空間データは、自由空間検出106がセンサ・データ102で実行された後に、受信され得る。
方法300は、ブロックB306において、境界形状の一部を切り取って(crop out)、境界形状内からオブジェクト・フェンスを生成することを含む。たとえば、オブジェクト・フェンス110は、自由空間決定106からの自由空間データを表すオブジェクト検出102からの境界形状の一部をトリミングして出すことによって、生成され得る。
方法300は、ブロックB308において、画像内の複数のレーン・ラインの位置を表すレーン・データを受信することを含む。たとえば、センサ・データ102及び/又はレーン・データ126内の複数のレーン・ラインの位置を表すレーン・データが、レーン検出112が実行された後に、受信され得る。
方法300は、ブロックB310において、レーン・データを使用してレーン・マスクを生成することを含む。たとえば、レーン・マスク116は、レーン検出112から受信されたレーン・データから生成され得る-たとえば、レーン三角形分割114を使用して。
方法300は、ブロックB312において、オブジェクト・フェンスと、レーン・マスクによって画定された1つ又は複数のレーンとの間の重複を決定することを含む。たとえば、オブジェクト・フェンス110とレーン・マスク116によって画定された1つ又は複数のレーンとの間の重複が、画素カウンティング132及び/又は境界スコアリング134を使用する重複決定110によって決定され得る。
方法300は、ブロックB314において、その重複に少なくとも部分的に基づいて1つ又は複数のレーンのうちの少なくとも1つにオブジェクトを割り当てることを含む。たとえば、レーン割り当て120は、レーン・マスク116からの1つ又は複数のレーンのうちの少なくとも1つにオブジェクトを割り当てるために使用され得る。
図4を参照すると、図4は、本開示のいくつかの実施例による、フェンス生成アルゴリズムによって生成された車両のオブジェクト・フェンス404を示す。本明細書に記載のような、フェンス生成アルゴリズム108は、車両402のオブジェクト・フェンスを生成するために使用され得る。
ここで図5を参照すると、本明細書に記載の方法500の各ブロックは、ハードウェア、ファームウェア、及び/又はソフトウェアの任意の組合せを使用して実行することができる計算プロセスを含む。たとえば、様々な機能が、メモリに記憶された命令を実行するプロセッサによって実施され得る。方法はまた、コンピュータ記憶媒体に記憶されたコンピュータ使用可能な命令として実施され得る。方法は、少し例を挙げると、独立型アプリケーション、サービス又はホスト型サービス(独立型の若しくは別のホスト型サービスと組み合わせた)、或いは別の製品へのプラグインによって、提供され得る。加えて、方法500が、実例として、図1の環境内のオブジェクトのレーン割り当てを決定するためのプロセスに関して、説明される。しかしながら、方法は、追加で又は別法として、本明細書に記載のものを含むがこれらに限定されない、任意の1個のシステム又はシステムの任意の組合せによって実施され得る。
図5は、本開示のいくつかの実施例による、環境内のオブジェクトのレーン割り当てを決定するための方法00を示す流れ図である。方法500は、ブロックB502において、オブジェクト・フェンス生成アルゴリズムに1つ又は複数のセンサによって生成されたセンサ・データを適用することを含む。たとえば、1つ又は複数のセンサによって生成されたセンサ・データ102は、フェンス生成アルゴリズム108に適用され得る。
方法500は、ブロックB504において、1つ又は複数のセンサのうちの少なくとも1つのセンサの知覚フィールド内のオブジェクトの世界空間オブジェクト・フェンスを、オブジェクト・フェンス・アルゴリズムを使用して、識別することを含む。たとえば、オブジェクト・フェンス・アルゴリズム108は、センサ・データ102がそこから受信される1つ又は複数のセンサのうちの少なくとも1つのセンサの知覚フィールド内のオブジェクトの世界空間においてオブジェクト・フェンス110を識別するために使用され得る。
方法500は、ブロックB506において、1つ又は複数のセンサのうちの少なくとも1つに対応するセンサ・パラメータに少なくとも部分的に基づいて世界空間オブジェクト・フェンスを画像空間オブジェクト・フェンスに変換することを含む。たとえば、フェンス生成アルゴリズム108は、1つ又は複数のセンサのうちの少なくとも1つに対応するセンサ・パラメータに少なくとも部分的に基づいて世界空間から画像空間にオブジェクト・フェンス110を変換するために使用され得る。
方法500は、ブロックB508において、センサ・データによって表される画像内の複数のレーン・ラインの位置を表すレーン・データを受信することを含む。たとえば、センサ・データ102によって表される画像内の複数のレーン・ラインの位置を表すレーン・データは、レーン検出112を介して受信され得る。
方法500は、ブロックB510において、レーン・データを使用してレーン・マスクを生成することを含む。たとえば、レーン・マスク116は、レーン検出112の後に受信されるレーン・データを使用して-たとえば、レーン三角形分割114を使用して-生成され得る。
方法500は、ブロックB512において、画像空間オブジェクト・フェンスと、レーン・マスクによって画定された1つ又は複数のレーンとの間の重複を決定することを含む。たとえば、オブジェクト・フェンス110とレーン・マスク116によって画定された1つ又は複数のレーンとの間の重複が、画素カウンティング132及び/又は境界スコアリング134を使用する重複決定110によって決定され得る。
方法500は、ブロックB514において、重複に少なくとも部分的に基づいて1つ又は複数のレーンのうちの少なくとも1つにオブジェクトを割り当てることを含む。たとえば、レーン割り当て120は、オブジェクトをレーン・マスク116内の1つ又は複数のレーンのうちの少なくとも1つに割り当てるために使用され得る。
ここで、図6A~6Eを参照すると、図6A~6Eは、本開示のいくつかの実施例による、レーン・データを使用してレーン・マスクを生成するためのプロセスを示す。図6Aは、レーン検出アルゴリズムによって生成されるものとしてのレーンを画定するポリポイントを示す。レーン検出アルゴリズムは、センサ・データ102からの入力画像内のレーン・ラインを検出することができる。レーン・ラインは、車両900の走行表面上のレーンを画定するポリポイント602A~602H及び604A~604Fを含み得る。ポリポイントは、レーン・ラインに沿った点(たとえば、画素)でもよい。
図6Bは、本開示のいくつかの実施例による、レーン検出アルゴリズムによって生成されるものとしてのレーンを画定するポリポイントを繋ぐポリラインを示す。レーン検出アルゴリズムは、それぞれ、各レーンのレーン・ライン上の隣接するポリポイント602A~602H及び604A~604Fを繋ぐことによって、ポリライン622A~622G及び624A~624Eを生成し得る。ポリラインは、車両900の走行表面を表す画像においてレーン境界(たとえば、ライン)を表し得る。
図6Cは、本開示のいくつかの実施例による、検出されたレーンで実行されてレーン・マスクを生成するレーン三角形分割を示す。三角形(たとえば、三角形620A~620L、及び番号を付けられていない他のもの)は、レーン三角形分割114を使用する十字型の隣接するレーン境界のポリポイント604A~604Zとレーン境界のポリポイント602A~602Zを繋ぐことによって、生成され得る。各レーンは、レーンを画定するために、それぞれのレーン境界の間に三角形を生成することによって、レーン三角形分割を受け得る。
図6Dは、本開示のいくつかの実施例による、レーン・データを使用して生成されたレーン・マスク660を示す。レーン・マスク660は、三角に分けられたレーン662、664、及び668を含み得る。各レーンは、異なる色を有するインデックスで表され得る。各レーン内の画素は、それぞれのレーン色の下でインデックスに記憶され得る。レーン・マスク660は、車両900の走行表面上のレーンの一部又はすべてを表す。
図6Eは、本開示のいくつかの実施例による、レーンを拡張するためにレーン・マスク680上で実行されるレーン拡張を示す。たとえば、レーン拡張122は、レーンの完全な又は使用可能な範囲が決定されない場合にレーン・マスク内の検出されたレーンを拡張するために使用され得る(レーン拡張682、684、686、及び688によって示されるように)。
ここで図7A~7Bを参照すると、図7A~7Bは、本開示のいくつかの実施例による、レーン・マスク内のレーンとのオブジェクト・フェンスの重複を決定するためにオブジェクト・フェンスのために生成された頂点を示す。図7Aは、オブジェクト・フェンスが特定のフレームに関して1つのレーン内にあるときにレーン・マスク内のレーンとのオブジェクト・フェンスの重複を決定するためにオブジェクト・フェンスのために生成された頂点を示す。オブジェクト・フェンス706は、画像内の車両704のオブジェクト・フェンス706の外周に沿った頂点(たとえば、画素)702A、702B、702C、…、702Nによって表され得る。画素距離が、オブジェクト・フェンスとレーン・マスクのレーン708との間の重複を決定するために、オブジェクト・フェンス706の頂点702の間で決定され得る。たとえば、オブジェクトが単一のレーン内にある場合、各組の2つの外周画素の間の画素距離が、計算され、合計され、正規化されて、単一のレーンについて1/1になるであろうレーンごとの交点の比率を生み出す。
図7Bは、本開示のいくつかの実施例による、オブジェクト・フェンスがレーン境界を横断するときにレーン・マスク内のレーンとのオブジェクト・フェンスの重複を決定するためにオブジェクト・フェンスのために生成された頂点を示す。車両704が2つ以上のレーン(たとえば、レーン708及び710)内にある場合、レーン境界を横断する1組の点、クロス・ポイント722A及び722B、が、決定され得る。クロス・ポイント722が決定された後は、これらの新しい頂点は、次いで、本明細書に記載のように、新しい頂点と交差部のいずれかの側のオブジェクト・フェンスの互いの外周画素若しくは頂点との間の距離を決定するために使用され得る。
ここで図8を参照すると、本明細書に記載の方法800の各ブロックは、ハードウェア、ファームウェア、及び/又はソフトウェアの任意の組合せを使用して実行され得る計算プロセスを含む。たとえば、様々な機能は、メモリに記憶された命令を実行するプロセッサによって実施され得る。本方法はまた、コンピュータ記憶媒体に記憶されたコンピュータ実行可能命令として実施され得る。本方法は、数例を挙げると、独立型アプリケーション、サービス若しくはホスト型サービス(独立型、若しくは別のホスト型サービスと組み合わせた)、又は別の製品へのプラグインによって提供され得る。加えて、方法800は、図1の環境内のオブジェクトのレーン割り当てを決定するためのプロセス100に関して、実例として、説明されている。しかしながら、本方法は、本明細書に記載されているものを含むがこれに限定されない、任意の1つのシステム、又はシステムの任意の組合せによって、追加で又は代替的に実行され得る。
図8は、本開示のいくつかの実施例による、環境内のオブジェクトと2つのレーンとの間の画素重複の比率を決定するための方法800を示す流れ図である。方法800は、ブロックB802において、オブジェクト・フェンスは第1のレーン及び第2のレーンのそれぞれと部分的に重複すると、オブジェクト・フェンスと第1のレーン及び第2のレーンを表すレーン・マスクとに少なくとも部分的に基づいて、決定することを含む。たとえば、重複決定118は、オブジェクト・フェンス110はレーン・マスク116内の少なくとも2つのレーンと重複すると決定し得る。
方法800は、ブロックB804において、第1のレーンと第2のレーンを分けるレーン・ラインによって区切られた、オブジェクト・フェンスの頂点に対応する、画素のペアを識別することを含む。たとえば、第1のレーン(たとえば、図7Bのレーン708)と第2のレーン(たとえば、図7Bのレーン710)を分けるレーン・ライン(たとえば、レーン境界)によって区切られたオブジェクト・フェンス(たとえば、オブジェクト・フェンス110、オブジェクト・フェンス706)の画素のペア(たとえば、図7Bの頂点702A及び702B)が、重複決定118を介して識別され得る。
方法800は、ブロックB806において、ペアの画素間のレーン・ラインに対応する画素を決定することを含む。たとえば、ペアの画素(たとえば、図7Bの頂点702A及び702B)間のレーン・ラインに対応する画素(たとえば、図7Bのクロス・ポイント722A)が、境界スコアリング134によって決定され得る。
方法800は、ブロックB808において、その画素と第1のレーン内のオブジェクト・フェンスの第1の複数の頂点のそれぞれとの間の距離の第1の和と、その画素と第2のレーン内のオブジェクト・フェンスの第2の複数の頂点のそれぞれとの間の距離の第2の和とを計算することを含む。たとえば、境界スコアリング134は、その画素(たとえば、図7Bのクロス・ポイント722A)と第1のレーン(たとえば、図7Bのレーン708)内のオブジェクト・フェンス(たとえば、オブジェクト・フェンス110、オブジェクト・フェンス706)の第1の複数の頂点のそれぞれとの間の距離の第1の和と、その画素と第2のレーン(たとえば、図7Bのレーン710)内のオブジェクト・フェンスの第2の複数の頂点のそれぞれとの間の距離の第2の和とを計算することができる。
方法800は、ブロックB810において、距離の第1の和に少なくとも部分的に基づく第1のレーン内のオブジェクト・フェンスの重複の第1の比率と距離の第2の和に少なくとも部分的に基づく第2のレーン内のオブジェクト・フェンスの重複の第2の比率とを決定することを含む。たとえば、境界スコアリング134は、距離の第1の和に少なくとも部分的に基づく第1のレーン(たとえば、図7Bのレーン708)内のオブジェクト・フェンス110(又は図7Bのオブジェクト・フェンス706)の重複の第1の比率と、距離の第2の和に少なくとも部分的に基づく第2のレーン(たとえば、図7Bのレーン710)内のオブジェクト・フェンスの重複の第2の比率とを決定することができる。
方法800は、ブロックB812において、重複の第1の比率及び重複の第2の比率に少なくとも部分的に基づいて少なくとも1つの動作を実行することを含む。たとえば、レーン割り当て120は、境界スコアリング134を介して決定されるような重複の第1の比率及び重複の第2の比率に基づいてレーンにオブジェクトを割り当てることができる。
例示的自律型車両
図9Aは、本開示のいくつかの実施例による、例示的自律型車両900のイラストレーションである。自律車両900(或いは、本明細書においては「車両900」と称される)は、限定はしないが、自動車、トラック、バス、緊急対応車両、シャトル、電気又は原動機付自転車、バイク、消防車、警察車両、救急車、ボート、建設車両、潜水艦、ドローン、及び/又は別のタイプの車両(たとえば、無人の及び/又は1人又は複数の乗客を乗せた)などの乗用車を含み得る。自律型車両は、一般に、米国運輸省道路交通***(NHTSA:National Highway Traffic Safety Administration)、米国運輸省の部署、及び自動車技術者協会(SAE:Society of Automotive Engineers)「Taxonomy and Definitions for Terms Related to Driving Automation Systems for On-Road Motor Vehicle」(2018年6月15日に公開された規格番号J3016-201806、2016年9月30日に公開された規格番号J3016-201609、及びこの規格の前の及び未来のバージョン)によって定義される、自動化レベルに関して記述される。移動車900は、自律運転レベルのレベル3~レベル5のうちの1個又は複数による機能の能力を有し得る。たとえば、移動車900は、実施例に応じて、条件付き自動化(レベル3)、高度自動化(レベル4)、及び/又は完全自動化(レベル5)の能力を有し得る。
移動車900は、移動車のシャシ、車体、車輪(たとえば、2、4、6、8、18など)、タイヤ、車軸、及び他の構成要素などの構成要素を含み得る。移動車900は、内部燃焼エンジン、ハイブリッド動力装置、完全な電気式エンジン、及び/又は別の推進システム・タイプなど、推進システム950を含み得る。推進システム950は、移動車900の推進力を有効にするために、トランスミッションを含み得る、移動車900のドライブ・トレインに接続され得る。推進システム950は、スロットル/加速装置952からの信号の受信に応答して制御され得る。
ハンドルを含み得る、ステアリング・システム954は、推進システム950が動作しているときに(たとえば、移動車が移動中のときに)移動車900のかじを取る(たとえば、所望の進路又はルートに沿って)ために使用され得る。ステアリング・システム954は、ステアリング・アクチュエータ956から信号を受信することができる。ハンドルは、完全自動化(レベル5)機能のオプションでもよい。
ブレーキ・センサ・システム946は、ブレーキ・アクチュエータ948及び/又はブレーキ・センサからの信号の受信に応答して移動車ブレーキを動作させるために使用され得る。
1個又は複数のシステム・オン・チップ(SoC:system on Chip)904(図9C)及び/又はGPUを含み得る、コントローラ936は、移動車900の1個若しくは複数の構成要素及び/又はシステムに信号(たとえば、コマンドの表現)を提供することができる。たとえば、コントローラは、1個又は複数のブレーキ・アクチュエータ948を介して移動車ブレーキを動作させて、1個又は複数のステアリング・アクチュエータ956を介してステアリング・システム954を動作させて、1個又は複数のスロットル/加速装置952を介して推進システム950を動作させるために、信号を送ることができる。コントローラ936は、センサ信号を処理する、並びに自律的運転を可能にするために及び/又は運転者の移動車900の運転を支援するために動作コマンド(たとえば、コマンドを表す信号)を出力する、1個又は複数の搭載された(たとえば、統合された)計算デバイス(たとえば、スーパーコンピュータ)を含み得る。コントローラ936は、自律運転機能のための第1のコントローラ936、機能的安全性機能のための第2のコントローラ936、人工知能機能(たとえば、コンピュータ・ビジョン)のための第3のコントローラ936、インフォテインメント機能のための第4のコントローラ936、緊急状態における冗長性のための第5のコントローラ936、及び/又は他のコントローラを含み得る。いくつかの実例では、単一のコントローラ936が、前述の機能のうちの2個以上を処理することができ、2個以上のコントローラ936が、単一の機能、及び/又はその任意の組合せを処理することができる。
コントローラ936は、1個又は複数のセンサから受信したセンサ・データ(たとえば、センサ入力)に応答して移動車900の1個又は複数の構成要素及び/又はシステムを制御するための信号を提供することができる。センサ・データは、たとえば、そして制限なしに、全地球的航法衛星システム・センサ958(たとえば、グローバル・ポジショニング・システム・センサ)、RADARセンサ960、超音波センサ962、LIDARセンサ964、慣性計測装置(IMU:inertial measurement unit)センサ966(たとえば、加速度計、ジャイロスコープ、磁気コンパス、磁力計など)、マイクロフォン996、ステレオ・カメラ968、ワイドビュー・カメラ970(たとえば、魚眼カメラ)、赤外線カメラ972、サラウンド・カメラ974(たとえば、360度カメラ)、長距離及び/又は中距離カメラ998、スピード・センサ944(たとえば、移動車900のスピードを測定するための)、振動センサ942、ステアリング・センサ940、ブレーキ・センサ(たとえば、ブレーキ・センサ・システム946の一部としての)、及び/又は他のセンサ・タイプから受信され得る。
コントローラ936のうちの1個又は複数のコントローラは、移動車900の計器群932から入力(たとえば、入力データによって表される)を受信し、出力(たとえば、出力データ、表示データなどによって表される)をヒューマン・マシン・インターフェース(HMI:human-machine interface)ディスプレイ934、可聴式アナンシエータ、ラウドスピーカ、及び/又は移動車900の他の構成要素を介して提供することができる。出力は、移動車ベロシティ、スピード、時間、マップ・データ(たとえば、図9CのHDマップ922)、位置データ(たとえば、マップ上などの、移動車の900の位置)、方向、他の移動車の位置(たとえば、占有グリッド)、コントローラ936によって把握されるものとしての物体及び物体の状況に関する情報などの、情報を含み得る。たとえば、HMIディスプレイ934は、1個又は複数の物体(たとえば、道路標識、警告標識、交通信号の変化など)の存在、及び/又は移動車が行った、行っている、又は行うであろう運転操作(たとえば、今、車線変更をしていること、3.22km(2マイル)内の出口34Bを出ることなど)に関する情報を表示することができる。
移動車900はさらに、1個又は複数のワイヤレス・アンテナ926及び/又はモデムを使用して1個又は複数のネットワークを介して通信することができるネットワーク・インターフェース924を含む。たとえば、ネットワーク・インターフェース924は、LTE、WCDMA、UMTS、GSM、CDMA2000などを介する通信の能力を有し得る。ワイヤレス・アンテナ926はまた、ブルートゥース、ブルートゥースLE、Z-Wave、ZigBeeなどのローカル・エリア・ネットワーク、及び/又はLoRaWAN、SigFoxなどのロー・パワー・ワイドエリア・ネットワーク(LPWAN:low power wide-area network)を使用し、環境内の物体(たとえば、移動車、モバイル・デバイスなど)の間の通信を可能にすることができる。
図9Bは、本開示のいくつかの実施例による、図9Aの例示的自律型車両900のカメラ位置及び視野の実例である。カメラ及びそれぞれの視野は、1個の例示的実施例であり、制限することは意図されていない。たとえば、追加の及び/又は代替カメラが含まれ得る、及び/又はカメラは移動車900の異なる位置に置かれ得る。
カメラのカメラ・タイプは、移動車900の構成要素及び/又はシステムと使用するようになされ得るデジタル・カメラを含み得るが、これに限定されない。カメラは、自動車安全整合性レベル(ASIL:automotive safety integrity level)Bにおいて及び/又は別のASILにおいて動作することができる。カメラ・タイプは、実施例に応じて、60フレーム/秒(fps)、920fps、240fpsなど、任意の画像キャプチャ・レートの能力を有し得る。カメラは、ロール・シャッタ、グローバル・シャッタ、別のタイプのシャッタ、又はその組合せを使用する能力を有し得る。いくつかの実例では、カラー・フィルタ・アレイは、RCCC(red clear clear clear)カラー・フィルタ・アレイ、RCCB(red clear clear blue)カラー・フィルタ・アレイ、RBGC(red blue green clear)カラー・フィルタ・アレイ、Foveon X3カラー・フィルタ・アレイ、Bayerセンサ(RGGB)カラー・フィルタ・アレイ、モノクロ・センサ・カラー・フィルタ・アレイ、及び/又は別のタイプのカラー・フィルタ・アレイを含み得る。一部の実施例では、RCCC、RCCB、及び/又はRBGCカラー・フィルタ・アレイを有するカメラなどのクリア画素カメラは、光感度を上げるための取り組みにおいて使用され得る。
いくつかの実例では、カメラのうちの1個又は複数が、高度運転者支援システム(ADAS:advanced driver assistance system)機能(たとえば、冗長又はフェイルセーフ設計の一部として)を実行するために使用され得る。たとえば、多機能モノ・カメラは、車線逸脱警報、交通標識アシスト及びインテリジェント・ヘッドランプ制御を含む機能を提供するために設置され得る。カメラのうちの1個又は複数(たとえば、すべてのカメラ)が、画像データ(たとえば、ビデオ)を同時に記録及び提供することができる。
カメラのうちの1個又は複数は、カメラの画像データ・キャプチャ能力を妨げることがある自動車内からの迷光及び反射(たとえば、フロントガラスのミラーにおいて反射されたダッシュボードからの反射)を取り除くために、カスタム設計された(3D印刷された)部品などの取付部品において取り付けられ得る。サイドミラー取付部品を参照すると、サイドミラー部品は、カメラ取付板がサイドミラーの形状に合うように、カスタム3D印刷され得る。いくつかの実例では、カメラは、サイドミラー内に統合され得る。サイドビュー・カメラについては、カメラはまた、キャビンの各角にある4個の支柱内に統合され得る。
移動車900の前の環境の部分を含む視野を有するカメラ(たとえば、前向きのカメラ)は、前向きの進路及び障害物の識別を助け、1個又は複数のコントローラ936及び/又は制御SoCの助けにより、占有グリッドの生成及び/又は好ましい移動車進路の決定に不可欠な情報の提供の提供を助けるための、サラウンド・ビューのために使用され得る。前向きのカメラは、緊急ブレーキ、歩行者検出、及び衝突回避を含む、LIDARと同じADAS機能の多くを実行するために使用され得る。前向きのカメラはまた、車線逸脱警報(「LDW(Lane Departure Warning)」)、自律的クルーズ制御(「ACC(Autonomous Cruise Control)」)、及び/又は交通標識認識などの他の機能を含むADAS機能及びシステムのために使用され得る。
様々なカメラが、たとえば、CMOS(complementary metal oxide semiconductor)カラー画像化装置を含む単眼カメラ・プラットフォームを含む、前向きの構成において使用され得る。別の実例は、周辺(たとえば、歩行者、交差する交通又は自転車)からのビューに入る物体を把握するために使用され得るワイドビュー・カメラ970でもよい。図9Bにはワイドビュー・カメラは1個だけ示されているが、移動車900には任意の数のワイドビュー・カメラ970が存在し得る。加えて、長距離カメラ998(たとえば、ロングビュー・ステレオ・カメラ・ペア)が、特に、ニューラル・ネットワークがまだトレーニングされていない物体について、深度ベースの物体検出のために使用され得る。長距離カメラ998はまた、物体検出及び分類、並びに基本物体追跡のために使用され得る。
1個又は複数のステレオ・カメラ968もまた、前向きの構成に含まれ得る。ステレオ・カメラ968は、単一のチップ上に統合されたCAN又はイーサネット(登録商標)・インターフェースを有するプログラマブル論理(FPGA)及びマルチコア・マイクロプロセッサを提供し得る、拡張可能な処理ユニットを備えた統合された制御ユニットを含み得る。そのようなユニットは、画像内のすべてのポイントの距離推定値を含む、移動車の環境の3Dマップを生成するために使用され得る。代替ステレオ・カメラ968は、2個のカメラ・レンズ(左と右に1個ずつ)と、移動車から対象物体までの距離を測定する及び生成された情報(たとえば、メタデータ)を使用して自律的緊急ブレーキ及び車線逸脱警報機能をアクティブにすることができる画像処理チップとを含み得る、コンパクト・ステレオ・ビジョン・センサを含み得る。他のタイプのステレオ・カメラ968が、本明細書に記載のものに加えて、又はそれらの代わりに、使用されてもよい。
移動車900の側面に対する環境の部分を含む視野を有するカメラ(たとえば、サイドビュー・カメラ)が、占有グリッドを作成及び更新するために並びに側面衝撃衝突警報を生成するために使用される情報を提供する、サラウンド・ビューのために使用され得る。たとえば、サラウンド・カメラ974(たとえば、図9Bに示されるような4個のサラウンド・カメラ974)は、移動車900上に位置付けられ得る。サラウンド・カメラ974は、ワイドビュー・カメラ970、魚眼カメラ、360度カメラ、及び/又は同類のものを含み得る。たとえば、4個の魚眼カメラが、移動車の前、後ろ、及び側面に配置され得る。代替配置において、移動車は、3個のサラウンド・カメラ974(たとえば、左、右、及び後部)を使用してもよく、第4のサラウンド・ビュー・カメラとして1個又は複数の他のカメラ(たとえば、前向きのカメラ)を活用してもよい。
移動車900の後ろに対する環境の部分を含む視野を有するカメラ(たとえば、後方確認カメラ)が、駐車支援、サラウンド・ビュー、後部衝突警報、並びに占有グリッドの作成及び更新のために使用され得る。本明細書に記載のように、前向きのカメラ(たとえば、長距離及び/又は中距離カメラ998、ステレオ・カメラ968)、赤外線カメラ972など)としても適したカメラを含むがこれらに限定されない、多種多様なカメラが使用され得る。
図9Cは、本開示のいくつかの実施例による、図9Aの例示的自律型車両900の例示的システム・アーキテクチャのブロック図である。本明細書に記載されているこの及び他の配置は単に実例として説明されていることを理解されたい。他の配置及び要素(たとえば、マシン、インターフェース、機能、順番、機能のグループ分けなど)が、示されたものに加えて又はこれらに代わって使用されてもよく、いくつかの要素は共に除外されてもよい。さらに、本明細書に記載の要素の多くは、個別の又は分散された構成要素として又は他の構成要素と併せて、並びに任意の適切な組合せ及び場所において、実装され得る機能エンティティである。エンティティによって実行されるものとして本明細書に記載された様々な機能は、ハードウェア、ファームウェア、及び/又はソフトウェアによって実施され得る。たとえば、様々な機能が、メモリに記憶された命令を実行するプロセッサによって実施され得る。
図9Cの移動車900の構成要素、特徴、及びシステムのそれぞれは、バス902を介して接続されるものとして図示されている。バス902は、コントローラ・エリア・ネットワーク(CAN)データ・インターフェース(或いは、「CANバス」と称される)を含み得る。CANは、ブレーキ、加速度、ブレーキ、ステアリング、フロント・ガラス・ワイパなどの作動など、移動車900の様々な特徴及び機能の制御を助けるために使用される移動車900内のネットワークでもよい。CANバスは、それぞれが独自の一意の識別子(たとえば、CAN ID)を有する、数ダース又は数百ものノードを有するように構成され得る。CANバスは、ハンドル角度、対地速度、1分間のエンジン回転(RPM:revolutions per minute)、ボタン位置、及び/又は他の移動車状況指標を見つけるために読み取られ得る。CANバスは、ASIL B準拠でもよい。
バス902は、CANバスであるものとして本明細書に記載されているが、これは制限することを意図されていない。たとえば、CANバスに加えて、又はこのその代替として、FlexRay及び/又はイーサネット(登録商標)が使用されてもよい。加えて、単一の線が、バス902を表すために使用されているが、これは制限することを意図されていない。たとえば、1個又は複数のCANバス、1個又は複数のFlexRayバス、1個又は複数のイーサネット(登録商標)・バス、及び/又は異なるプロトコルを使用する1個若しくは複数の他のタイプのバスを含み得る、任意の数のバス902が存在し得る。いくつかの実例では、2個以上のバス902が、異なる機能を実行するために使用され得る、及び/又は冗長性のために使用され得る。たとえば、第1のバス902は衝突回避機能のために使用されてもよく、第2のバス902は作動制御のために使用されてもよい。任意の実例において、各バス902は、移動車900の構成要素のいずれかと通信し得、2個以上のバス902が同じ構成要素と通信し得る。いくつかの実例では、移動車内の各SoC904、各コントローラ936、及び/又は各コンピュータは、同じ入力データ(たとえば、移動車900のセンサからの入力)へのアクセスを有し得、CANバスなどの共通バスに接続され得る。
移動車900は、図9Aに関して本明細書で説明されるものなど、1個又は複数のコントローラ936を含み得る。コントローラ936は、様々な機能のために使用され得る。コントローラ936は、移動車900の様々な他の構成要素及びシステムのいずれかに連結されてもよく、移動車900、移動車900の人工知能、移動車900のためのインフォテインメント、及び/又は同類のものの制御のために使用され得る。
移動車900は、システム・オン・チップ(SoC)904を含み得る。SoC904は、CPU906、GPU908、プロセッサ910、キャッシュ912、加速装置914、データ・ストア916、及び/又は図示されていない他の構成要素及び特徴を含み得る。SoC904は、様々なプラットフォーム及びシステム内の移動車900を制御するために使用され得る。たとえば、SoC904は、1個又は複数のサーバ(たとえば、図9Dのサーバ978)からネットワーク・インターフェース924を介してマップのリフレッシュ及び/又は更新を取得することができるHDマップ922を有するシステム(たとえば、移動車900のシステム)において結合され得る。
CPU906は、CPUクラスタ又はCPU複合体(或いは、「CCPLEX」とも称される)を含み得る。CPU906は、複数のコア及び/又はL2キャッシュを含み得る。たとえば、一部の実施例では、CPU906は、コヒーレント・マルチプロセッサ構成内の8個のコアを含み得る。一部の実施例では、CPU906は、4個のデュアルコア・クラスタを含むことができ、各クラスタが専用のL2キャッシュ(たとえば、2MBL2キャッシュ)を有する。CPU906(たとえば、CCPLEX)は、CPU906のクラスタの任意の組合せが任意の所与の時間にアクティブになることを可能にする同時クラスタ動作をサポートするように構成され得る。
CPU906は、以下の特徴のうちの1個又は複数を含む電力管理能力を実装することができる:個別ハードウェア・ブロックが、動的電力を節約するためにアイドル状態のときに自動的にクロック・ゲーティングされ得る、各コア・クロックは、WFI/WFE命令の実行により命令をコアがアクティブに実行していないときにゲーティングされ得る、各コアは、独立してパワー・ゲーティングされ得る、各コア・クラスタは、すべてのコアがクロック・ゲーティングされる若しくはパワー・ゲーティングされるときに、独立してクロック・ゲーティングされ得る、及び/又は、各コア・クラスタは、すべてのコアがパワー・ゲーティングされるときに、独立してパワー・ゲーティングされ得る。CPU906は、電力状態を管理するための強化されたアルゴリズムをさらに実装することができ、そこでは、許容される電力状態及び予想されるウェイクアップ時間が指定され、ハードウェア/マイクロ・コードが、コア、クラスタ、及びCCPLEXに入力するための最良の電力状態を決定する。処理コアは、作業がマイクロ・コードにオフロードされたソフトウェアにおける簡略化された電力状態入力シーケンスをサポートすることができる。
GPU908は、統合されたGPU(或いは本明細書において「iGPU」と称される)を含み得る。GPU908は、プログラマブルになり得、並行のワークロードに効率的になり得る。一部の実例では、GPU908は、強化されたテンソル命令セットを使用することができる。GPU908は、1個又は複数のストリーミング・マイクロプロセッサを含み得、そこで、各ストリーミング・マイクロプロセッサは、L1キャッシュ(たとえば、少なくとも96KB記憶容量を有するL1キャッシュ)を含み得、ストリーミング・マイクロプロセッサのうちの2個以上が、キャッシュ(たとえば、512KB記憶容量を有するL2キャッシュ)を共用し得る。一部の実施例では、GPU908は、少なくとも8個のストリーミング・マイクロプロセッサを含み得る。GPU908は、計算アプリケーション・プログラミング・インターフェース(API)を使用することができる。加えて、GPU908は、1個又は複数の並行のコンピューティング・プラットフォーム及び/又はプログラミング・モデル(たとえば、NVIDIAのCUDA)を使用することができる。
GPU908は、自動車の及び組み込まれた使用事例における最高のパフォーマンスのために電力最適化され得る。たとえば、GPU908は、FinFET(Fin field-effect transistor)上に製造され得る。しかしながら、これは制限することを意図されておらず、GPU908は、他の半導体製造プロセスを使用し、製造され得る。各ストリーミング・マイクロプロセッサは、複数のブロックに区切られたいくつかの混合精度処理コアを組み込むことができる。限定ではなく、たとえば、64 PF32コア及び32 PF64コアは、4個の処理ブロックに区切られてもよい。そのような実例では、各処理ブロックは、16 FP32コア、8 FP64コア、16 INT32コア、深層学習行列演算のための2個の混合精度NVIDIAテンソル・コア、L0命令キャッシュ、ワープ・スケジューラ、発送ユニット、及び/又は64KBレジスタ・ファイルを割り当てられ得る。加えて、ストリーミング・マイクロプロセッサは、計算及びアドレス指定演算の混合を有するワークロードの効率的な実行を提供するための独立した並行の整数及び浮動小数点データ進路を含み得る。ストリーミング・マイクロプロセッサは、並行スレッドの間のより高い細粒度の同期及び連携を可能にするために、独立したスレッド・スケジューリング能力を含み得る。ストリーミング・マイクロプロセッサは、プログラミングを単純化しつつ性能を向上させるために、結合されたL1データ・キャッシュ及び共用メモリ・ユニットを含み得る。
GPU908は、一部の実例では、900GB/秒のピーク・メモリ帯域幅に関して、提供するための高帯域幅メモリ(HBM:high bandwidth memory)及び/又は16GBHBM2メモリ・サブシステムを含み得る。いくつかの実例では、HBMメモリに加えて、又はこれの代わりに、グラフィックス・ダブル・データ・レート・タイプ5同期ランダム・アクセス・メモリ(GDDR5:graphics double data rate type five synchronous random-access memory)などの同期グラフィックス・ランダム・アクセス・メモリ(SGRAM:synchronous graphics random-access memory)が使用され得る。
GPU908は、メモリ・ページに最も頻繁にアクセスするプロセッサへのそれらのメモリ・ページのより正確な移動を可能にするためにアクセス・カウンタを含む統一されたメモリ技術を含むことができ、それにより、プロセッサ間で共用される記憶範囲の効率を向上させる。いくつかの実例では、アドレス変換サービス(ATS:address translation service)サポートが、GPU908がCPU906ページ・テーブルに直接アクセスすることを可能にするために使用され得る。そのような実例では、GPU908メモリ管理ユニット(MMU:memory management unit)がミスを経験するとき、アドレス変換要求が、CPU906に送信され得る。応答して、CPU906は、アドレスの仮想対現実マッピングのためのそのページ・テーブルを調べることができ、GPU908に変換を送り返す。そのようなものとして、統一されたメモリ技術は、CPU906とGPU908との両方のメモリの単一統一仮想アドレス空間を可能にすることができ、それによりGPU908へのアプリケーションのGPU908プログラミング及び移植を単純化する。
加えて、GPU908は、他のプロセッサのメモリへのGPU908のアクセスの頻度を記録することができるアクセス・カウンタを含み得る。アクセス・カウンタは、メモリ・ページが最も頻繁にそのページにアクセスしているプロセッサの物理メモリに移動されることを確実にするのを助けることができる。
SoC904は、本明細書に記載のものを含む任意の数のキャッシュ912を含み得る。たとえば、キャッシュ912は、CPU906とGPU908との両方に利用可能な(たとえば、CPU906とGPU908との両方に接続された)L3キャッシュを含み得る。キャッシュ912は、キャッシュ・コヒーレンス・プロトコル(たとえば、MEI、MESI、MSIなど)を使用することなどによって、線の状態を記録することができるライトバック・キャッシュを含み得る。L3キャッシュは、より小さいキャッシュ・サイズが使用されてもよいが、実施例に応じて、4MB以上を含み得る。
SoC904は、1個又は複数の加速装置914(たとえば、ハードウェア加速装置、ソフトウェア加速装置、又はその組合せ)を含み得る。たとえば、SoC904は、最適化されたハードウェア加速装置及び/又は大きなオンチップ・メモリを含み得る、ハードウェア加速クラスタを含み得る。大きなオンチップメモリ(たとえば、4MBのSRAM)は、ハードウェア加速クラスタがニューラル・ネットワーク及び他の演算を加速することを可能にし得る。ハードウェア加速クラスタは、GPU908を補完するために及びGPU908のタスクの一部をオフロードするために(たとえば、他のタスクを実行するためのGPU908のより多くのサイクルを解放するために)使用され得る。一実例として、加速装置914は、加速に適するように十分に安定している対象ワークロード(たとえば、知覚、畳み込みニューラル・ネットワーク(CNN:convolutional neural network)など)のために使用され得る。本明細書では、「CNN」という用語は、領域ベースの又は領域的畳み込みニューラル・ネットワーク(RCNN:regional convolutional neural network)及び高速RCNN(たとえば、物体検出のために使用されるものとしての)を含む、すべてのタイプのCNNを含み得る。
加速装置914(たとえば、ハードウェア加速クラスタ)は、深層学習加速装置(DLA:deep learning accelerator)を含み得る。DLAは、深層学習アプリケーション及び推論のために1秒あたり追加の10兆の動作を提供するように構成することができる1個又は複数のテンソル処理ユニット(TPU:Tensor processing unit)を含み得る。TPUは、画像処理機能(たとえば、CNN、RCNNなどの)を実行するように構成及び最適化された加速装置でもよい。DLAはさらに、特定のセットのニューラル・ネットワーク・タイプ及び浮動小数点演算、並びに推論のために最適化され得る。DLAの設計は、汎用GPUよりも1ミリメートルあたりより多くのパフォーマンスを提供することができ、CPUのパフォーマンスを大きく超える。TPUは、たとえば、特徴と重みとの両方についてINT8、INT16、及びFP16データ・タイプをサポートする、単一インスタンス畳み込み機能、並びにポストプロセッサ機能を含む、いくつかの機能を実行することができる。
DLAは、以下を含むがこれらに限定されない、様々な機能のいずれかのために処理済み又は未処理のデータでニューラル・ネットワーク、特にCNN、を迅速に及び効率的に実行することができる:カメラ・センサからのデータを使用する物体識別及び検出のためのCNN、カメラ・センサからのデータを使用する距離推定のためのCNN、マイクロフォンからのデータを使用する緊急車両検出及び識別及び検出のためのCNN、カメラ・センサからのデータを使用する顔認識及び移動車所有者識別のためのCNN、及び/又は、セキュリティ及び/又は安全性関連イベントのためのCNN。
DLAは、GPU908の任意の機能を実行することができ、そして、推論加速装置を使用することによって、たとえば、設計者は、任意の機能のためにDLA又はGPU908のいずれかを対象にすることができる。たとえば、設計者は、DLA上のCNN及び浮動小数点演算の処理に重点的に取り組み、他の機能をGPU908及び/又は他の加速装置914に任せることができる。
加速装置914(たとえば、ハードウェア加速クラスタ)は、或いはコンピュータ・ビジョン加速装置と本明細書で称され得るプログラマブル・ビジョン加速装置(PVA:programmable vision accelerator)を含み得る。PVAは、高度運転者支援システム(ADAS:advanced driver assistance system)、自律運転、及び/又は拡張現実(AR:augmented reality)及び/又は仮想現実(VR:virtual reality)アプリケーションのためのコンピュータ・ビジョン・アルゴリズムを加速するように設計及び構成され得る。PVAは、パフォーマンスと柔軟性との間のバランスをもたらすことができる。たとえば、各PVAは、たとえば、任意の数の縮小命令セット・コンピュータ(RISC:reduced instruction set computer)コア、直接メモリ・アクセス(DMA:direct memory access)、及び/又は任意の数のベクトル・プロセッサを含み得るが、これらに限定されない。
RISCコアは、画像センサ(たとえば、本明細書に記載のカメラのうちのいずれかのカメラの画像センサ)、画像信号プロセッサ、及び/又は同類のものと相互作用することができる。それぞれのRISCコアは、任意の量のメモリを含み得る。RISCコアは、実施例に応じて、いくつかのプロトコルのいずれかを使用することができる。いくつかの実例では、RISCコアは、リアルタイム・オペレーティング・システム(RTOS:real-time operating system)を実行することができる。RISCコアは、1個又は複数の集積回路デバイス、特定用途向け集積回路(ASIC)、及び/又はメモリデバイスを使用して、実装され得る。たとえば、RISCコアは、命令キャッシュ及び/又はしっかりと結合されたRAMを含み得る。
DMAは、CPU906から独立したシステム・メモリにPVAの構成要素がアクセスすることを可能にし得る。DMAは、多次元アドレス指定及び/又は循環アドレス指定をサポートすることを含むがこれに限定されないPVAに最適化をもたらすために使用される任意の数の特徴をサポートすることができる。いくつかの実例では、DMAは、ブロック幅、ブロック高さ、ブロック深度、水平ブロック・ステッピング、垂直ブロック・ステッピング、及び/又は深度ステッピングを含み得る、6次元まで又はそれ以上のアドレス指定をサポートすることができる。
ベクトル・プロセッサは、コンピュータ・ビジョン・アルゴリズムのプログラミングを効率的に柔軟に実行する及び信号処理能力を提供するように設計され得るプログラマブル・プロセッサでもよい。いくつかの実例では、PVAは、PVAコア及び2個のベクトル処理サブシステム・パーティションを含み得る。PVAコアは、プロセッサ・サブシステム、DMAエンジン(たとえば、2個のDMAエンジン)、及び/又は他の周辺装置を含み得る。ベクトル処理サブシステムは、PVAの1次的処理エンジンとして動作することができ、ベクトル処理ユニット(VPU:vector processing unit)、命令キャッシュ、及び/又はベクトル・メモリ(たとえば、VMEM)を含み得る。VPUコアは、たとえば、単一の命令、複数のデータ(SIMD)、超長命令語(VLIW:very long instruction word)デジタル信号プロセッサなど、デジタル信号プロセッサを含み得る。SIMD及びVLIWの組合せは、スループット及びスピードを高めることができる。
それぞれのベクトル・プロセッサは、命令キャッシュを含み得、専用のメモリに連結され得る。結果として、一部の実例では、それぞれのベクトル・プロセッサは、他のベクトル・プロセッサから独立して実行するように構成され得る。他の実例において、特定のPVAに含まれるベクトル・プロセッサは、データ並列処理を用いるように構成され得る。たとえば、一部の実施例では、単一のPVAに含まれる複数のベクトル・プロセッサは、同じコンピュータ・ビジョン・アルゴリズムを、しかし画像の異なる領域上で、実行することができる。他の実例において、特定のPVAに含まれるベクトル・プロセッサは、異なるコンピュータ・ビジョン・アルゴリズムを、同じ画像上で、同時に実行することができ、或いは順次画像又は画像の部分で異なるアルゴリズムを実行することさえできる。特に、任意の数のPVAは、ハードウェア加速クラスタに含まれ得、任意の数のベクトル・プロセッサは、それぞれのPVAに含まれ得る。加えて、PVAは、全体的システム安全性を高めるために、追加のエラー訂正コード(ECC:error correcting code)メモリを含み得る。
加速装置914(たとえば、ハードウェア加速クラスタ)は、加速装置914のための高帯域幅、低レイテンシSRAMを提供するための、コンピュータ・ビジョン・ネットワーク・オンチップ及びSRAMを含み得る。いくつかの実例では、オンチップ・メモリは、たとえば、そして制限ではなく、PVAとDLAとの両方によってアクセス可能でもよい、8個のフィールド構成可能なメモリ・ブロックから成る、少なくとも4MBのSRAMを含み得る。各ペアのメモリ・ブロックは、高度周辺バス(APB:advanced peripheral bus)インターフェース、構成回路、コントローラ、及びマルチプレクサを含み得る。任意のタイプのメモリが、使用され得る。PVA及びDLAは、メモリへの高速アクセスを有するPVA及びDLAを提供するバックボーンを介してメモリにアクセスすることができる。バックボーンは、(たとえば、APBを使用して)PVA及びDLAをメモリに相互接続するコンピュータ・ビジョン・ネットワーク・オンチップを含み得る。
コンピュータ・ビジョン・ネットワーク・オンチップは、PVAとDLAとの両方が作動可能及び有効信号を提供することを、任意の制御信号/アドレス/データの送信の前に、決定するインターフェースを含み得る。そのようなインターフェースは、制御信号/アドレス/データを送信するための別個のフェーズ及び別個のチャンネル、並びに連続的データ転送のためのバーストタイプの通信を提供することができる。このタイプのインターフェースは、ISO26262又はIEC61508規格に従うことができるが、他の規格及びプロトコルが使用されてもよい。
いくつかの実例では、SoC904は、2018年8月10日に出願された米国特許出願第16/101,232号に記載されるような、リアルタイム・レイトレーシング・ハードウェア加速装置を含み得る。リアルタイム・レイトレーシング・ハードウェア加速装置は、RADAR信号解釈のための、音響伝播合成及び/又は分析のための、SONARシステムのシミュレーションのための、一般波伝播シミュレーションのための、ローカリゼーション及び/又は他の機能を目的とするLIDARデータに対する比較のための、及び/又は他の使用のための、リアルタイム視覚化シミュレーションを生成するために、(たとえば、世界モデル内の)物体の位置及び規模を迅速に効率的に決定するために使用され得る。
加速装置914(たとえば、ハードウェア加速装置クラスタ)は、自律運転のための多様な用途を有する。PVAは、ADAS及び自律型車両における極めて重要な処理段階に使用され得るプログラマブル・ビジョン加速装置でもよい。PVAの能力は、低電力及び低レイテンシにおいて、予測可能な処理を必要とするアルゴリズムの領域にふさわしい。言い換えれば、PVAは、低レイテンシ及び低電力とともに予測可能な実行時間を必要とする、小さなデータ集合上でも、半高密度の又は高密度の通常の計算で上手く機能する。それ故に、PVAは、物体検出及び整数計算での動作において効率的であるので、自律型車両のためのプラットフォームとの関連で、PVAは、クラシック・コンピュータ・ビジョン・アルゴリズムを実行するように設計される。
たとえば、本技術の1個の実施例によれば、PVAは、コンピュータ・ステレオ・ビジョンを実行するために使用される。半グローバルなマッチングベースのアルゴリズムが、一部の実例では使用され得るが、これは制限することを意図されていない。レベル3~5の自律運転のための多数のアプリケーションは、動き推定/ステレオ・マッチング・オンザフライ(たとえば、SFM(structure from motion)、歩行者認識、レーン検出など)を必要とする。PVAは、2個の単眼カメラからの入力でコンピュータ・ステレオ・ビジョン機能を実行することができる。
いくつかの実例では、PVAは、高密度のオプティカル・フローを実行するために使用され得る。処理されたRADARを提供するために未加工のRADARデータを処理する(たとえば、4D高速フーリエ変換を使用して)ことによる。他の実例において、PVAは、たとえば、飛行データの未加工の時間を処理して飛行データの処理済み時間を提供することにより、飛行深度処理の時間に使用される。
DLAは、たとえば、各物体検出の信頼性の測定値を出力するニューラル・ネットワークを含む、制御及び運転安全性を強化するために任意のタイプのネットワークを実行するために使用され得る。そのような信頼性値は、確率として、又は他の検出と比較した各検出の相対的「重み」を提供するものとして、解釈され得る。この信頼性値は、どの検出が誤判定検出ではなくて真陽性検出と考えられるべきであるかに関するさらなる決定をシステムが行うことを可能にする。たとえば、システムは、信頼性の閾値を設定し、真陽性検出としての閾値を超える検出のみを考慮することができる。自動非常ブレーキ(AEB:automatic emergency braking)システムにおいて、誤判定検出は、移動車に非常ブレーキを自動で実行させることになり、これは明らかに望ましくない。したがって、最も確信のある検出のみが、AEBのトリガとして考えられるべきである。DLAは、信頼性値を退行するニューラル・ネットワークを実行し得る。ニューラル・ネットワークは、境界ボックス次元、(たとえば、別のサブシステムから)取得されたグラウンド・プレーン推定、ニューラル・ネットワーク及び/又は他のセンサ(たとえば、LIDARセンサ964又はRADARセンサ960)から取得された物体の移動車900方位、距離、3D位置推定と相関する慣性計測装置(IMU:inertial measurement unit)センサ966出力、その他など、少なくともいくつかのサブセットのパラメータをその入力として受け取ることができる。
SoC904は、データ・ストア916(たとえば、メモリ)を含み得る。データ・ストア916は、SoC904のオンチップ・メモリでもよく、GPU及び/又はDLAで実行されることになるニューラル・ネットワークを記憶することができる。いくつかの実例では、データ・ストア916は、冗長性及び安全性のためにニューラル・ネットワークの複数のインスタンスを記憶するのに十分な大きさの容量を有し得る。データ・ストア912は、L2又はL3キャッシュ912を備え得る。データ・ストア916の参照は、本明細書に記載のような、PVA、DLA、及び/又は他の加速装置914に関連するメモリの参照を含み得る。
SoC904は、1個又は複数のプロセッサ910(たとえば、組み込まれたプロセッサ)を含み得る。プロセッサ910は、ブート電力及び管理能力及び関連するセキュリティ施行を処理するための専用のプロセッサ及びサブシステムでもよいブート及び電力管理プロセッサを含み得る。ブート及び電力管理プロセッサは、SoC904ブート・シーケンスの一部でもよく、実行時間電力管理サービスを提供することができる。ブート電力及び管理プロセッサは、クロック及び電圧プログラミング、システム低電力状態移行の支援、SoC904熱及び温度センサの管理、及び/又はSoC904電力状態の管理を提供することができる。各温度センサは、その出力頻度が温度に比例するリング発振器として実装されてもよく、SoC904は、リング発振器を使用してCPU906、GPU908、及び/又は加速装置914の温度を検出することができる。温度が、閾値を超えたと判定された場合、ブート及び電力管理プロセッサは、温度障害ルーティンに入り、SoC904をより低い電力状態に置く及び/又は移動車900をショーファーの安全停止モードにする(たとえば、移動車900を安全停止させる)ことができる。
プロセッサ910は、オーディオ処理エンジンの機能を果たし得る1セットの組み込まれたプロセッサをさらに含み得る。オーディオ処理エンジンは、複数のインターフェースを介するマルチチャンネル・オーディオの完全なハードウェア・サポートとオーディオI/Oインターフェースの広く柔軟な範囲とを可能にするオーディオ・サブシステムでもよい。いくつかの実例では、オーディオ処理エンジンは、専用のRAMを有するデジタル信号プロセッサを有する専用のプロセッサ・コアである。
プロセッサ910は、低電力センサ管理及びウェイク使用事例をサポートするための必要なハードウェア特徴を提供することができる常時オンのプロセッサ・エンジンをさらに含み得る。常時オンのプロセッサ・エンジンは、プロセッサ・コア、しっかりと結合されたRAM、支援周辺装置(たとえば、タイマ及び割り込みコントローラ)、様々なI/Oコントローラ周辺装置、及びルーティング論理を含み得る。
プロセッサ910は、自動車のアプリケーションの安全性管理を処理するために専用のプロセッサ・サブシステムを含む安全性クラスタ・エンジンをさらに含み得る。安全性クラスタ・エンジンは、2個以上のプロセッサ・コア、しっかりと結合されたRAM、サポート周辺装置(たとえば、タイマ、割り込みコントローラなど)、及び/又はルーティング論理を含み得る。安全性モードにおいて、2個以上のコアは、ロックステップ・モードにおいて動作し、それらの動作の間の何らかの差を検出するための比較論理を有する単一のコアとして機能することができる。
プロセッサ910は、リアルタイム・カメラ管理を処理するための専用のプロセッサ・サブシステムを含み得るリアルタイム・カメラ・エンジンをさらに含み得る。
プロセッサ910は、カメラ処理パイプラインの一部であるハードウェア・エンジンである画像信号プロセッサを含み得る高ダイナミック・レンジ信号プロセッサをさらに含み得る。
プロセッサ910は、プレイヤ・ウインドウのための最終的画像を生み出すためにビデオ再生アプリケーションによって必要とされるビデオ処理後機能を実装する処理ブロック(たとえば、マイクロプロセッサに実装された)でもよいビデオ画像合成器を含み得る。ビデオ画像合成器は、ワイドビュー・カメラ970で、サラウンド・カメラ974で、及び/又はキャビン内監視カメラ・センサでレンズ歪み補正を実行することができる。キャビン内監視カメラ・センサは好ましくは、キャビン内イベントを識別し、適切に応答するように構成された、高度SoCの別のインスタンス上で実行するニューラル・ネットワークによって監視される。キャビン内システムは、セルラ・サービスをアクティブにする及び電話をかける、電子メールを書き取らせる、移動車の目的地を変更する、移動車のインフォテインメント・システム及び設定をアクティブにする又は変更する、或いは音声起動型ウェブ・サーフィンを提供するために、読唇術を実行することができる。ある特定の機能は、自律モードで動作しているときにのみ運転者に利用可能であり、そうでない場合には無効にされる。
ビデオ画像合成器は、空間的ノイズ低減及び時間的ノイズ低減の両方のための強化された時間的ノイズ低減を含み得る。たとえば、動きがビデオ内で生じた場合、ノイズ低減は、隣接するフレームによって提供される情報の重みを減らし、空間的情報に適切に重みを加える。画像又は画像の一部が動きを含まない場合、ビデオ画像合成器によって実行される時間的ノイズ低減は、前の画像からの情報を使用して現在の画像におけるノイズを減らすことができる。
ビデオ画像合成器はまた、入力ステレオ・レンズ・フレーム上でステレオ・レクティフィケーションを実行するように構成され得る。ビデオ画像合成器はさらに、オペレーティング・システム・デスクトップが使用中であるときにユーザ・インターフェース合成のために使用することができ、GPU908は、新しい表面を連続してレンダリングために必要とされない。GPU908の電源が入れられ、3Dレンダリングをアクティブに行っているときでも、ビデオ画像合成器は、GPU908をオフロードしてパフォーマンス及び反応性を向上させるために使用され得る。
SoC904は、カメラからビデオ及び入力を受信するためのモバイル・インダストリ・プロセッサ・インターフェース(MIPI:mobile industry processor interface)カメラ・シリアル・インターフェース、高速インターフェース、及び/又は、カメラ及び関連画素入力機能のために使用され得るビデオ入力ブロックをさらに含み得る。SoC904は、ソフトウェアによって制御され得る、及び特定の役割にコミットされていないI/O信号を受信するために使用され得る、入力/出力コントローラをさらに含み得る。
SoC904は、周辺装置、オーディオ・コーデック、電力管理、及び/又は他のデバイスとの通信を可能にするために、広範囲の周辺インターフェースをさらに含み得る。SoC904は、(たとえば、ギガビット・マルチメディア・シリアル・リンク及びイーサネット(登録商標)を介して接続された)カメラからのデータ、センサ(たとえば、イーサネット(登録商標)を介して接続され得るLIDARセンサ964、RADARセンサ960など)、バス902からのデータ(たとえば、移動車900のスピード、ハンドル位置など)、(たとえば、イーサネット(登録商標)又はCANバスを介して接続された)GNSSセンサ958からのデータを処理するために使用され得る。SoC904は、独自のDMAエンジンを含み得る及びルーティン・データ管理タスクからCPU906を解放するために使用され得る専用の高性能大容量記憶コントローラをさらに含み得る。
SoC904は、自動化レベル3~5に広がる柔軟なアーキテクチャを有する終端間プラットフォームでもよく、それによって、多様性及び冗長性のためにコンピュータ・ビジョン及びADAS技法を活用し、効率的に使用し、深層学習ツールとともに、柔軟な、信頼できる運転ソフトウェア・スタックのためのプラットフォームを提供する、総合的機能的安全性アーキテクチャを提供する。SoC904は、従来のシステムよりも高速で、信頼でき、さらにエネルギ効率がよく、空間効率がよくなり得る。たとえば、加速装置914が、CPU906と結合されるとき、GPU908、及びデータ・ストア916は、レベル3~5の自律型車両のための高速で効率的なプラットフォームを提供することができる。
したがって、本技術は、従来のシステムによって達成することができない能力及び機能性をもたらす。たとえば、コンピュータ・ビジョン・アルゴリズムは、多種多様な視覚的データにわたり多種多様な処理アルゴリズムを実行するために、Cプログラミング言語などの高レベルのプログラミング言語を使用して構成され得る、CPUで実行され得る。しかしながら、CPUは、しばしば、たとえば、実行時間及び電力消費に関連するものなど、多数のコンピュータ・ビジョン・アプリケーションの性能要件を満たすことができない。具体的には、多数のCPUは、移動車内ADASアプリケーションの要件及び実際のレベル3~5の自律型車両の要件である、リアルタイムでの複合物体検出アルゴリズムを実行することができない。
従来のシステムとは対照的に、CPU複合体、GPU複合体、及びハードウェア加速クラスタを提供することによって、本明細書に記載の技術は、複数のニューラル・ネットワークが同時に及び/又は連続して実行されることと、レベル3~5の自律運転機能を可能にするために結果が結合されることとを可能にする。たとえば、DLA又はdGPU(たとえば、GPU920)で実行するCNNは、ニューラル・ネットワークが具体的にトレーニングされていない標識を含む、交通標識をスーパーコンピュータが読み取る及び理解することを可能にする、テキスト及び単語認識を含み得る。DLAは、標識の意味論的理解を識別、解釈、及び提供することと、CPU複合体で実行する進路計画立案モジュールに意味論的理解を渡すこととを行うことができる、ニューラル・ネットワークをさらに含み得る。
別の実例として、複数のニューラル・ネットワークは、レベル3、4、又は5の運転に必要とされるように、同時に実行され得る。たとえば、電光とともに、「注意:点滅光は、凍った状態を示す」から成る警告標識は、いくつかのニューラル・ネットワークによって独立して又は集合的に解釈され得る。標識自体は、第1の配備されたニューラル・ネットワーク(たとえば、トレーニングされてあるニューラル・ネットワーク)によって交通標識として識別され得、テキスト「点滅光は、凍った状態を示す」は、点滅光が検出されるときには凍った状態が存在することを移動車の進路計画立案ソフトウェア(好ましくはCPU複合体上で実行する)に知らせる、第2の配備されたニューラル・ネットワークによって解釈され得る。点滅光は、点滅光の存在(又は無いこと)を移動車の進路計画立案ソフトウェアに知らせ、複数のフレームを介して第3の配備されたニューラル・ネットワークを動作させることによって識別され得る。すべての3個のニューラル・ネットワークは、DLA内及び/又はGPU908上などで、同時に実行することができる。
いくつかの実例では、顔認識及び移動車所有者識別のためのCNNは、カメラ・センサからのデータを使用して移動車900の正規の運転者及び/又は所有者の存在を識別することができる。常時オンのセンサ処理エンジンは、所有者が運転席側のドアに近づくときに移動車を解錠する及び明かりをつけるために、並びに、セキュリティ・モードにおいて、所有者が移動車を離れるときに移動車の動作を停止させるために、使用され得る。このようにして、SoC904は、盗難及び/又は車の乗っ取りに対するセキュリティをもたらす。
別の実例では、緊急車両検出及び識別のためのCNNは、マイクロフォン996からのデータを使用して緊急車両サイレンを検出及び識別することができる。一般分類子を使用してサイレンを検出する及び特徴を手動で抽出する従来のシステムとは対照的に、SoC904は、環境の及び都市の音の分類、並びに視覚的データの分類のためにCNNを使用する。好ましい一実施例では、DLA上で実行するCNNは、(たとえば、ドップラー効果を使用することによって)緊急車両の相対的終速度を識別するようにトレーニングされる。CNNはまた、GNSSセンサ958によって識別されるように、移動車が稼働しているローカル・エリアに特有の緊急車両を識別するようにトレーニングされ得る。それ故に、たとえば、欧州で稼働しているとき、CNNは、欧州のサイレンを検出しようとすることになり、そして、米国にあるとき、CNNは、北米のサイレンのみを識別しようとすることになる。緊急車両が検出された後は、制御プログラムが、緊急車両が通過するまで、超音波センサ962の支援を受けて、移動車を減速する、道の端に停止させる、移動車を駐車する、及び/又は移動車をアイドリングさせる、緊急車両安全性ルーティンを実行するために使用され得る。
移動車は、高速相互接続(たとえば、PCIe)を介してSoC904に連結され得るCPU918(たとえば、個別のCPU、又はdCPU)を含み得る。CPU918は、たとえば、X86プロセッサを含み得る。CPU918は、たとえば、ADASセンサとSoC904との間の潜在的に不整合の結果を調停すること、及び/又はコントローラ936及び/又はインフォテインメントSoC930の状況及び調子を監視することを含む、様々な機能のいずれかを実行するために使用され得る。
移動車900は、高速相互接続(たとえば、NVIDIAのNVLINK)を介してSoC904に連結され得るGPU920(たとえば、個別のGPU、又はdGPU)を含み得る。GPU920は、冗長及び/又は異なるニューラル・ネットワークを実行することなどによって、付加的人工知能機能をもたらすことができ、移動車900のセンサからの入力(たとえば、センサ・データ)に基づいてニューラル・ネットワークをトレーニング及び/又は更新するために使用され得る。
移動車900は、1個又は複数のワイヤレス・アンテナ926(たとえば、セルラ・アンテナ、ブルートゥース・アンテナなど、異なる通信プロトコルのための1個又は複数のワイヤレス・アンテナ)を含み得るネットワーク・インターフェース924をさらに含み得る。ネットワーク・インターフェース924は、インターネットを介するクラウドとの(たとえば、サーバ978及び/又は他のネットワーク・デバイスとの)、他の移動車との、及び/又は計算デバイス(たとえば、乗客のクライアント・デバイス)とのワイヤレス接続を使用可能にするために使用され得る。他の移動車と通信するために、直接リンクが2個の移動車の間に確立され得る、及び/又は、間接リンクが(たとえば、ネットワークを通じて及びインターネットを介して)確立され得る。直接リンクは、移動車対移動車通信リンクを使用し、提供され得る。移動車対移動車通信リンクは、移動車900に近接する移動車(たとえば、移動車900の前の、横の、及び/又は後ろの移動車)に関する移動車900情報を提供することができる。この機能は、移動車900の共同適応クルーズ制御機能の一部でもよい。
ネットワーク・インターフェース924は、変調及び復調機能を提供する及びコントローラ936がワイヤレス・ネットワークを介して通信することを可能にする、SoCを含み得る。ネットワーク・インターフェース924は、ベースバンドから無線周波数へのアップコンバージョン、及び無線周波数からベースバンドへのダウンコンバージョンのための無線周波数フロントエンドを含み得る。周波数コンバージョンは、よく知られているプロセスを通して実行することができ、及び/又はスーパーヘテロダイン・プロセスを用いて実行することができる。いくつかの実例では、無線周波数フロントエンド機能は、別個のチップによって提供され得る。ネットワーク・インターフェースは、LTE、WCDMA、UMTS、GSM、CDMA2000、ブルートゥース、ブルートゥースLE、Wi-Fi、Z-Wave、ZigBee、LoRaWAN、及び/又は他のワイヤレス・プロトコルを介して通信するためのワイヤレス機能を含み得る。
移動車900は、チップ外の(たとえば、SoC904外の)ストレージを含み得るデータ・ストア928をさらに含み得る。データ・ストア928は、RAM、SRAM、DRAM、VRAM、フラッシュ、ハードディスク、及び/又は、少なくとも1ビットのデータを記憶することができる他の構成要素及び/又はデバイスを含む、1個又は複数の記憶素子を含み得る。
移動車900は、GNSSセンサ958をさらに含み得る。マッピング、知覚、占有グリッド生成、及び/又は進路計画立案機能を支援するための、GNSSセンサ958(たとえば、GPS及び/又は補助装置付きGPSセンサ)。たとえば、シリアル(RS-232)ブリッジへのイーサネット(登録商標)を有するUSBコネクタを使用するGPSを含むが、これに限定されない、任意の数のGNSSセンサ958が、使用され得る。
移動車900は、RADARセンサ960をさらに含み得る。RADARセンサ960は、暗闇及び/又は厳しい気象条件においても、長距離移動車検出のために移動車900によって使用され得る。RADAR機能安全性レベルは、ASIL Bでもよい。一部の実例では、RADARセンサ960は、未加工のデータにアクセスするためのイーサネット(登録商標)へのアクセスを用いて、制御のために及び物体追跡データにアクセスするために(たとえば、RADARセンサ960によって生成されたデータを送信するために)CAN及び/又はバス902を使用することができる。多種多様なRADARセンサ・タイプが、使用され得る。たとえば、そして制限なしに、RADARセンサ960は、前部、後部、及び側部RADAR使用に適し得る。一部の実例では、パルス・ドップラーRADARセンサが使用される。
RADARセンサ960は、狭い視野を有する長距離、広い視野を有する短距離、短距離側部カバレッジなど、異なる構成を含み得る。いくつかの実例では、長距離RADARは、適応クルーズ制御機能のために使用され得る。長距離RADARシステムは、250mの範囲内など、2個以上の独立したスキャンによって実現される広い視野を提供することができる。RADARセンサ960は、静的物体と動く物体との区別を助けることができ、緊急ブレーキ・アシスト及び前方衝突警報のためのADASシステムによって使用され得る。長距離RADARセンサは、複数の(たとえば、6つ以上の)固定RADARアンテナと高速CAN及びFlexRayインターフェースとを有するモノスタティック・マルチモーダルRADARを含み得る。6つのアンテナを有する一実例では、中央の4個のアンテナは、隣接レーン内の交通からの干渉を最小限にして高速で移動車900の周囲を記録するように設計された、集束ビーム・パターンを作成し得る。他の2個のアンテナは、視野を広げることができ、移動車900のレーンに入る又はこれを去る移動車を迅速に検出することを可能にする。
一実例として、中距離RADARシステムは、960m(前)又は80m(後)までの範囲、及び42度(前)又は950度(後)までの視野を含み得る。短距離RADARシステムは、後部バンパの両端に設置されるように設計されたRADARセンサを含み得るが、これに限定されない。後部バンパの両端に設置されるとき、そのようなRADARセンサ・システムは、移動車の後ろ及び隣の死角を常に監視する2個のビームを作成することができる。
短距離RADARシステムは、死角検出及び/又はレーン変更アシストのためにADASシステムにおいて使用され得る。
移動車900は、超音波センサ962をさらに含み得る。移動車900の前部、後部、及び/又は側部に位置付けられ得る、超音波センサ962は、駐車アシストのために及び/又は占有グリッドの作成及び更新のために使用され得る。多種多様な超音波センサ962が使用され得、異なる超音波センサ962が、異なる範囲の検出(たとえば、2.5m、4m)のために使用され得る。超音波センサ962は、ASIL Bの機能的安全性レベルにおいて動作することができる。
移動車900はLIDARセンサ964を含み得る。LIDARセンサ964は、物体及び歩行者検出、緊急ブレーキ、衝突回避、及び/又は他の機能のために使用され得る。LIDARセンサ964は、機能的安全性レベルASIL Bでもよい。いくつかの実例では、移動車900は、(たとえば、ギガビット・イーサネット(登録商標)・スイッチにデータを提供するために)イーサネット(登録商標)を使用することができる複数の(たとえば、2個、4個、6個などの)LIDARセンサ964を含み得る。
いくつかの実例では、LIDARセンサ964は、物体及び360度視野のそれらの距離のリストを提供する能力を有し得る。市販のLIDARセンサ964は、たとえば、2cm~3cmの精度を有し、900Mbpsイーサネット(登録商標)接続のサポートを有して、約900mの広告された範囲を有し得る。いくつかの実例では、1個又は複数の非突出しLIDARセンサ964が、使用され得る。そのような実例では、LIDARセンサ964は、移動車900の前部、後部、側部、及び/又は角に組み込まれ得る小さいデバイスとして実装され得る。そのような実例では、LIDARセンサ964は、低反射物体についても200mの範囲を有し、920度水平及び35度垂直視野まで提供することができる。前部に取り付けられたLIDARセンサ964は、45度と135度との間の水平視野向けに構成され得る。
いくつかの実例では、3DフラッシュLIDARなどのLIDAR技術もまた使用され得る。3DフラッシュLIDARは、約200mまで移動車の周囲を照らすために、送信元としてレーザーのフラッシュを使用する。フラッシュLIDARユニットは、移動車から物体までの範囲に順番に対応する、レーザー・パルス走行時間及び各画素上の反射光を記録する、レセプタを含む。フラッシュLIDARは、周囲の高精度の及び歪みのない画像があらゆるレーザー・フラッシュで生成されることを可能にし得る。いくつかの実例では、4個のフラッシュLIDARセンサが、移動車900の各側面に1個ずつ、配備され得る。利用可能な3DフラッシュLIDARシステムは、送風機以外に動く部分を有さないソリッドステート3Dステアリング・アレイLIDARカメラ(たとえば、非スキャン型LIDARデバイス)を含む。フラッシュLIDARデバイスは、1フレームにつき5ナノ秒クラスI(目に安全な)レーザー・パルスを使用することができ、3D範囲点群及び共記載された強度データの形で反射レーザー光をキャプチャし得る。フラッシュLIDARを使用することによって、また、フラッシュLIDARは、動く部分を有さないソリッドステート・デバイスであるので、LIDARセンサ964は、モーション・ブラー、振動、及び/又は衝撃の影響を受けにくくなり得る。
移動車は、IMUセンサ966をさらに含み得る。一部の実例では、IMUセンサ966は、移動車900の後部車軸の中央に位置付けられ得る。IMUセンサ966は、たとえば、加速度計、磁力計、ジャイロスコープ、磁気コンパス、及び/又は他のセンサ・タイプを含み得るが、これらに限定されない。いくつかの実例では、6軸アプリケーションなどにおいて、IMUセンサ966は、加速度計及びジャイロスコープを含み得るが、9軸アプリケーションにおいて、IMUセンサ966は、加速度計、ジャイロスコープ、及び磁力計を含み得る。
一部の実施例では、IMUセンサ966は、マイクロ電気機械システム(MEMS:micro-electro-mechanical system)慣性センサ、高感度GPSレシーバ、及び高度カルマン・フィルタリング・アルゴリズムを結合して位置、ベロシティ、及び姿勢の推定値を提供するミニチュア、高性能GPS支援型慣性航行システム(GPS/INS:GPS-Aided Inertial Navigation System)として実装され得る。そのようなものとして、一部の実例では、IMUセンサ966は、GPSからIMUセンサ966までのベロシティの変化を直接観測すること及び関連付けることによって、磁気センサからの入力を必要とせずに進行方向を移動車900が推定することを可能にし得る。いくつかの実例では、IMUセンサ966及びGNSSセンサ958は、単一の統合されたユニットにおいて結合され得る。
移動車は、移動車900内及び/又は周囲に置かれたマイクロフォン996を含み得る。マイクロフォン996は、中でも、緊急車両検出及び識別のために使用され得る。
移動車は、ステレオ・カメラ968、ワイドビュー・カメラ970、赤外線カメラ972、サラウンド・カメラ974、長距離及び/又は中距離カメラ998、及び/又は他のカメラ・タイプを含む、任意の数のカメラ・タイプをさらに含み得る。カメラは、移動車900の全外面の周りの画像データをキャプチャするために使用され得る。使用されるカメラのタイプは、移動車900の実施例及び要件に応じて決まり、任意の組合せのカメラ・タイプが、移動車900の周りの必要なカバレッジを実現するために使用され得る。加えて、カメラの数は、実施例に応じて異なり得る。たとえば、移動車は、6個のカメラ、7個のカメラ、10個のカメラ、12個のカメラ、及び/又は別の数のカメラを含み得る。カメラは、一実例として、ギガビット・マルチメディア・シリアル・リンク(GMSL:Gigabit Multimedia Serial Link)及び/又はギガビット・イーサネット(登録商標)をサポートし得るが、これに限定されない。それぞれのカメラは、図9A及び図9Bに関連して本明細書においてさらに詳しく説明される。
移動車900は、振動センサ942をさらに含み得る。振動センサ942は、車軸など、移動車の構成要素の振動を測定することができる。たとえば、振動の変化は、道路の表面の変化を示し得る。別の実例では、2個以上の振動センサ942が使用されるとき、振動の差は、道路表面の摩擦又は滑りを判定するために使用され得る(たとえば、振動の差が電力駆動車軸と自由回転車軸との間であるとき)。
移動車900は、ADASシステム938を含み得る。一部の実例では、ADASシステム938は、SoCを含み得る。ADASシステム938は、自律/適応/自動クルーズ制御(ACC:autonomous/adaptive/automatic cruise control)、共同適応クルーズ制御(CACC:cooperative adaptive cruise control)、前方衝突警報(FCW:forward crash warning)、自動緊急ブレーキ(AEB:automatic emergency braking)、車線逸脱警報(LDW:lane departure warning)、レーン・キープ・アシスト(LKA:lane keep assist)、死角警報(BSW:blind spot warning)、後部交差交通警報(RCTW:rear cross-traffic warning)、衝突警報システム(CWS:collision warning system)、レーン・センタリング(LC:lane centering)、及び/又は他の特徴及び機能を含み得る。
ACCシステムは、RADARセンサ960、LIDARセンサ964、及び/又はカメラを使用し得る。ACCシステムは、縦ACC及び/又は横ACCを含み得る。縦ACCは、移動車900の直ぐ前の移動車までの距離を監視及び制御し、前方の移動車からの安全距離を維持するために移動車速度を自動的に調整する。横ACCは、距離の保持を実行し、必要なときにレーンを変更するように移動車900にアドバイスする。横ACCは、LCA及びCWSなどの他のADASアプリケーションに関連する。
CACCは、ワイヤレス・リンクを介して他の移動車からネットワーク・インターフェース924及び/又はワイヤレス・アンテナ926を介して、或いは間接的にネットワーク接続を介して(たとえば、インターネットを介して)、受信することができる、他の移動車からの情報を使用する。直接リンクは、移動車対移動車(V2V:vehicle-to-vehicle)通信リンクによって提供され得、一方、間接リンクは、インフラストラクチャ対移動車(I2V:infrastructure-to-vehicle)通信リンクでもよい。一般に、V2V通信概念は、直前の移動車(たとえば、移動車900と同じレーン内にある、移動車900の直ぐ前の移動車)に関する情報を提供し、一方、I2V通信概念は、さらに前の交通に関する情報を提供する。CACCシステムは、I2V情報ソースとV2V情報ソースとのいずれか又は両方を含み得る。移動車900の前方の移動車の情報を所与として、CACCは、より高信頼になり得、CACCは、交通の流れをよりスムーズにし、道路の渋滞を減らす可能性を有する。
運転者が修正行動を取ることができるように、FCWシステムは、危険を運転者に警告するように設計される。FCWシステムは、ディスプレイ、スピーカ、及び/又は振動する構成要素など、運転者フィードバックに電気的に連結された、専用のプロセッサ、DSP、FPGA、及び/又はASICに連結された、前向きのカメラ及び/又はRADARセンサ960を使用する。FCWシステムは、音響、視覚的警報、振動及び/又はクイック・ブレーキ・パルスなどの形で、警報を提供することができる。
AEBシステムは、別の移動車又は他の物体との差し迫った前方衝突を検出し、運転者が指定された時間又は距離パラメータ内に修正行動を取らない場合に、ブレーキを自動的に適用することができる。AEBシステムは、専用のプロセッサ、DSP、FPGA、及び/又はASICに連結された、前向きのカメラ及び/又はRADARセンサ960を使用することができる。AEBシステムが危険を検出するとき、AEBシステムは通常は、先ず、衝突を回避するための修正行動を取るように運転者に警告し、運転者が修正行動を取らない場合、AEBシステムは、予測される衝突の影響を防ぐ、又は少なくとも軽減するための努力の一環としてブレーキを自動的に適用することができる。AEBシステムは、ダイナミック・ブレーキ・サポート及び/又は衝突切迫ブレーキなどの技法を含み得る。
LDWシステムは、ハンドル又はシートの振動など、視覚的、可聴式、及び/又は触覚的警報を提供して、移動車900が車線区分線を越えたときに運転者に警告する。LDWシステムは、運転者が、方向指示器を起動することによって、意図的な車線逸脱を指示するときには、起動しない。LDWシステムは、ディスプレイ、スピーカ、及び/又は振動する構成要素など、運転者フィードバックに電気的に連結された、専用のプロセッサ、DSP、FPGA、及び/又はASICに連結された、前側を向いたカメラを使用することができる。
LKAシステムは、LDWシステムの変更形態である。LKAシステムは、移動車900が車線をはみ出し始めた場合に移動車900を修正するためにステアリング入力又はブレーキを提供する。
BSWシステムは、自動車の死角において移動車の運転者に検出及び警告する。BSWシステムは、合流又はレーンの変更が安全ではないことを指示するために視覚的、可聴式、及び/又は触覚的警告を提供することができる。本システムは、運転者が方向指示器を使用するときに追加の警報を提供することができる。BSWシステムは、ディスプレイ、スピーカ、及び/又は振動する構成要素など、運転者フィードバックに電気的に連結された、専用のプロセッサ、DSP、FPGA、及び/又はASICに連結された、後ろ側を向いたカメラ及び/又はRADARセンサ960を使用することができる。
RCTWシステムは、移動車900がバックしているときにリアカメラの範囲外で物体が検出されたときに視覚的、可聴式、及び/又は触覚的通知を提供することができる。いくつかのRCTWシステムは、移動車ブレーキが衝突を回避するために適用されることを確実にするために、AEBを含む。RCTWシステムは、ディスプレイ、スピーカ、及び/又は振動する構成要素など、運転者フィードバックに電気的に連結された、専用のプロセッサ、DSP、FPGA、及び/又はASICに連結された、1個又は複数の後ろを向いたRADARセンサ960を使用することができる。
従来のADASシステムは、運転者に警告し、安全状態が本当に存在するかどうかを運転者が判定し、それに応じて行動することを可能にするので、従来のADASシステムは、通常は壊滅的ではないが、運転者を悩ませている及び気を散らせていることがある誤判定結果を生み出す傾向にあることがあった。しかしながら、自律型車両900では、結果が矛盾する場合には、移動車900自体が、1次的コンピュータ又は2次的コンピュータ(たとえば、第1のコントローラ936又は第2のコントローラ936)からの結果を聞き入れるかどうかを決定しなければならない。たとえば、一部の実施例では、ADASシステム938は、知覚情報をバックアップ・コンピュータ合理性モジュールに提供するためのバックアップ及び/又は2次的コンピュータでもよい。バックアップ・コンピュータ合理性モニタは、ハードウェア構成要素で冗長な多様なソフトウェアを実行して、知覚及び動的運転タスクにおいて障害を検出することができる。ADASシステム938からの出力は、監督MCUに提供され得る。1次的コンピュータ及び2次的コンピュータからの出力が矛盾する場合、監督MCUは、安全な動作を確実にするためにその矛盾をどのように調整するかを決定する必要がある。
いくつかの実例では、1次的コンピュータは、選択された結果における1次的コンピュータの信頼性を指示する、信頼性スコアを監督MCUに提供するように構成され得る。信頼性スコアが閾値を超えた場合、監督MCUは、2次的コンピュータが矛盾する又は不整合の結果を与えるかどうかにかかわらず、1次的コンピュータの指示に従い得る。信頼性スコアが閾値を満たさない場合、及び1次的及び2次的コンピュータが異なる結果を示す(たとえば、矛盾する)場合、監督MCUは、コンピュータの間で調停して適切な結果を決定することができる。
監督MCUは、2次的コンピュータが誤ったアラームを提供する状態を、1次的コンピュータ及び2次的コンピュータからの出力に基づいて、判定するようにトレーニング及び構成されたニューラル・ネットワークを実行するように構成され得る。したがって、監督MCU内のニューラル・ネットワークは、2次的コンピュータの出力が信頼され得るとき、及びそれが信頼され得ないときを学習することができる。たとえば、2次的コンピュータがRADARベースのFCWシステムであるとき、監督MCU内のニューラル・ネットワークは、アラームをトリガする下水溝の鉄格子又はマンホールの蓋など、実際には危険ではない金属製の物をいつFCWが識別しているかを学習することができる。同様に、2次的コンピュータがカメラベースのLDWシステムであるとき、監督MCU内のニューラル・ネットワークは、自転車に乗った人又は歩行者が存在し、車線逸脱が、実際には、最も安全な操作であるときに、LDWを無視することを学習することができる。監督MCU上で実行中のニューラル・ネットワークを含む実施例では、監督MCUは、関連メモリを有するニューラル・ネットワークを実行するのに適したDLA又はGPUのうちの少なくとも1個を含み得る。好ましい実施例において、監督MCUは、SoC904の構成要素を備え得る、及び/又はSoC904の構成要素として含まれ得る。
他の実例において、ADASシステム938は、コンピュータ・ビジョンの従来のルールを使用するADAS機能を実行する2次的コンピュータを含み得る。そのようなものとして、2次的コンピュータは、古典的コンピュータ・ビジョン・ルール(if-then)を使用することができ、監督MCU内のニューラル・ネットワークの存在は、信頼性、安全性及び性能を向上させることができる。たとえば、多様な実装形態及び意図的な非同一性は、特にソフトウェア(又はソフトウェア-ハードウェア・インターフェース)機能によって引き起こされる障害に対して、システム全体をよりフォールトトレラントにする。たとえば、1次的コンピュータで実行中のソフトウェア内にソフトウェア・バグ又はエラーが存在し、2次的コンピュータで実行中の同一でないソフトウェア・コードが同じ総合的結果を提供する場合、監督MCUは、総合的結果は正しく、1次的コンピュータ上のソフトウェア又はハードウェア内のバグは重大なエラーを引き起こしていないというより大きな確信を有し得る。
いくつかの実例では、ADASシステム938の出力は、1次的コンピュータの知覚ブロック及び/又は1次的コンピュータの動的運転タスク・ブロックに供給され得る。たとえば、ADASシステム938が、直ぐ前の物体が原因で、前方衝突警報を示した場合、知覚ブロックは、物体を識別するときに、この情報を使用することができる。他の実例において、2次的コンピュータは、本明細書に記載のように、トレーニングされ、それ故に誤判定のリスクを減らす、独自のニューラル・ネットワークを有し得る。
移動車900は、インフォテインメントSoC930(たとえば、移動車内のインフォテインメント・システム(IVI:in-vehicle infotainment system))をさらに含み得る。SoCとして図示及び記述されているが、インフォテインメント・システムは、SoCでなくてもよく、2個以上の個別の構成要素を含み得る。インフォテインメントSoC930は、オーディオ(たとえば、音楽、携帯情報端末、ナビゲーション命令、ニュース、無線など)、ビデオ(たとえば、TV、映画、ストリーミングなど)、電話(たとえば、ハンズフリー通話)、ネットワーク接続(たとえば、LTE、Wi-Fiなど)、及び/又は情報サービス(たとえば、ナビゲーション・システム、後方駐車支援、無線データシステム、燃料レベル、総移動距離、ブレーキ燃料レベル、オイル・レベル、ドアを開ける/閉じる、エア・フィルタ情報などの移動車関連情報)を提供するために使用され得るハードウェア及びソフトウェアの組合せを含み得る。たとえば、インフォテインメントSoC930は、無線、ディスク・プレイヤ、ナビゲーション・システム、ビデオ・プレイヤ、USB及びブルートゥース接続、カーピュータ、車内エンターテインメント、Wi-Fi、ハンドル・オーディオ制御装置、ハンズ・フリー音声制御、ヘッドアップ・ディスプレイ(HUD:heads-up display)、HMIディスプレイ934、テレマティックス・デバイス、制御パネル(たとえば、様々な構成要素、特徴、及び/又はシステムを制御する及び/又はこれと相互に作用するための)、及び/又は他の構成要素でもよい。インフォテインメントSoC930は、ADASシステム938からの情報、計画された移動車操作などの自律運転情報、軌道、周囲環境情報(たとえば、交差点情報、移動車情報、道路情報など)、及び/又は他の情報など、移動車のユーザへの情報(たとえば、視覚的及び/又は可聴式の)を提供するためにさらに使用され得る。
インフォテインメントSoC930は、GPU機能性を含み得る。インフォテインメントSoC930は、バス902(たとえば、CANバス、イーサネット(登録商標)など)を介して、移動車900の他のデバイス、システム、及び/又は構成要素と通信することができる。いくつかの実例では、インフォテインメント・システムのGPUが、1次的コントローラ936(たとえば、移動車900の1次的及び/又はバックアップ・コンピュータ)が故障した場合に、いくつかのセルフドライブ機能を実行することができるように、インフォテインメントSoC930は、監督MCUに連結され得る。そのような実例では、インフォテインメントSoC930は、本明細書に記載のように、移動車900をショーファーの安全停止モードにすることができる。
移動車900は、計器群932(たとえば、デジタル・ダッシュ、電子計器群、デジタル計器パネルなど)をさらに含み得る。計器群932は、コントローラ及び/又はスーパーコンピュータ(たとえば、個別のコントローラ又はスーパーコンピュータ)を含み得る。計器群932は、スピードメーター、燃料レベル、油圧、タコメーター、オドメーター、方向指示器、ギアシフト位置インジケータ、シート・ベルト警告灯、パーキングブレーキ警告灯、エンジン故障灯、エアバッグ(SRS)システム情報、照明制御装置、安全システム制御装置、ナビゲーション情報など、1セットの器具類を含み得る。いくつかの実例では、情報は、インフォテインメントSoC930及び計器群932の間で表示及び/又は共有され得る。言い換えれば、計器群932は、インフォテインメントSoC930の一部として含まれてもよく、逆もまた同様である。
図9Dは、本開示のいくつかの実施例による、図9Aのクラウドベースのサーバと例示的自律型車両900との間の通信のシステム図である。システム976は、サーバ978、ネットワーク990、及び、移動車900を含む移動車を含み得る。サーバ978は、複数のGPU984(A)~984(H)(本明細書でGPU984と総称される)、PCIeスイッチ982(A)~982(H)(本明細書でPCIeスイッチ982と総称される)、及び/又はCPU980(A)~980(B)(本明細書でCPU980と総称される)を含み得る。GPU984、CPU980、及びPCIeスイッチは、たとえば、NVIDIAによって開発されたNVLINKインターフェース988及び/又はPCIe接続986などの、これらに限定されない、高速相互接続で相互に接続され得る。いくつかの実例では、GPU984は、NVLINK及び/又はNVSwitch SoCを介して接続され、GPU984及びPCIeスイッチ982は、PCIe相互接続を介して接続される。8個のGPU984、2個のCPU980、及び2個のPCIeスイッチが図示されているが、これは制限を意図されていない。実施例に応じて、それぞれのサーバ978は、任意の数のGPU984、CPU980、及び/又はPCIeスイッチを含み得る。たとえば、サーバ978は、それぞれ、8個、16個、32個、及び/又はそれ以上のGPU984を含み得る。
サーバ978は、最近開始された道路工事など、予想外の又は変更された道路状態を示す画像を表す画像データを、ネットワーク990を介して、移動車から、受信することができる。サーバ978は、ニューラル・ネットワーク992、更新されたニューラル・ネットワーク992、及び/又は、交通及び道路状態に関する情報を含むマップ情報994をネットワーク990を介して移動車に送信することができる。マップ情報994の更新は、建設現場、くぼみ、迂回路、洪水、及び/又は他の障害物に関する情報など、HDマップ922の更新を含み得る。いくつかの実例では、ニューラル・ネットワーク992、更新されたニューラル・ネットワーク992、及び/又はマップ情報994は、環境において任意の数の移動車から受信されたデータにおいて表された新しいトレーニング及び/又は経験から、及び/又は(たとえば、サーバ978及び/又は他のサーバを使用する)データセンタにおいて実行されたトレーニングに基づいて、生じた可能性がある。
サーバ978は、トレーニング・データに基づいてマシン学習モデル(たとえば、ニューラル・ネットワーク)をトレーニングするために使用され得る。トレーニング・データは、移動車によって生成され得る、及び/又は(たとえば、ゲーム・エンジンを使用して)シミュレーションにおいて生成され得る。いくつかの実例では、トレーニング・データは、タグ付けされる(たとえば、ニューラル・ネットワークが、監督された学習の恩恵を受ける場合)及び/又は他の事前処理を受けるが、他の実例において、トレーニング・データは、タグ付け及び/又は事前処理されない(たとえば、ニューラル・ネットワークが、監督された学習を必要としない場合)。マシン学習モデルがトレーシングされた後は、マシン学習モデルは、移動車によって使用され得(たとえば、ネットワーク990を介して移動車に送信される)、及び/又は、マシン学習モデルは、移動車を遠隔監視するために、サーバ978によって使用され得る。
いくつかの実例では、サーバ978は、移動車からデータを受信し、リアルタイムのインテリジェント推論のために最新のリアルタイムのニューラル・ネットワークにデータを適用することができる。サーバ978は、NVIDIAによって開発されたDGX及びDGXステーション・マシンなど、GPU984によって電力供給される深層学習スーパーコンピュータ及び/又は専用のAIコンピュータを含み得る。しかしながら、一部の実例では、サーバ978は、CPU電源式データセンタのみを使用する深層学習インフラストラクチャを含み得る。
サーバ978の深層学習インフラストラクチャは、高速のリアルタイム推論の能力を有することでき、その能力を使用して移動車900内のプロセッサ、ソフトウェア、及び/又は関連ハードウェアの調子を評価及び検証することができる。たとえば、深層学習インフラストラクチャは、移動車900がそのシーケンスの画像内に位置したシーケンスの画像及び/又は物体など、移動車900からの定期的更新を受信することができる(たとえば、コンピュータ・ビジョン及び/又は他のマシン学習物体分類技法を介して)。深層学習インフラストラクチャは、物体を識別し、移動車900によって識別された物体とそれらを比較するために、独自のニューラル・ネットワークを実行することができ、結果が一致せず、インフラストラクチャが、移動車900内のAIは正常に機能していないという結論を下した場合、サーバ978は、制御を推測し、乗客に通知し、安全な駐車操作を完了するように移動車900のフェイルセーフ・コンピュータに命じる移動車900への信号を送信することができる。
推論のために、サーバ978は、GPU984及び1個又は複数のプログラマブル推論加速装置(たとえば、NVIDIAのTensorRT3)を含み得る。GPU電源式サーバ及び推論加速の組合せは、リアルタイムの反応性を可能にすることができる。パフォーマンスがさほど必要とされない場合など、他の実例では、CPU、FPGA、及び他のプロセッサによって電力供給されるサーバが、推論のために使用され得る。
例示的計算デバイス
図10は、本開示のいくつかの実施例の実装に使用するのに適した例示的計算デバイス1000のブロック図である。計算デバイス1000は、以下のデバイスを間接的に又は直接的につなぐバス1002を含み得る:メモリ1004、1個又は複数の中央処理装置(CPU)1006、1個又は複数のグラフィック処理ユニット(GPU)1008、通信インターフェース1010、入力/出力(I/O)ポート1012、入力/出力構成要素1014、電力供給装置1016、及び1個又は複数の提示構成要素1018(たとえば、ディスプレイ)。
図10の様々なブロックは、線でバス1002を介して接続しているように示されているが、これは制限することを意図されておらず、単に分かりやすくするためである。たとえば、一部の実施例では、表示デバイスなどの提示構成要素1018は、I/O構成要素1014と考えられ得る(たとえば、ディスプレイがタッチ・スクリーンである場合)。別の実例として、CPU1006及び/又はGPU1008はメモリを含み得る(たとえば、メモリ1004は、GPU1008、CPU1006、及び/又は他の構成要素のメモリに加えた記憶デバイスを表し得る)。言い換えれば、図10の計算デバイスは、単に例示である。「ワークステーション」、「サーバ」、「ラップトップ」、「デスクトップ」、「タブレット」、「クライアント・デバイス」、「モバイル・デバイス」、「ハンドヘルド・デバイス」、「ゲーム機」、「電子制御ユニット(ECU:electronic control unit)」、「仮想現実システム」、及び/又は他のデバイス若しくはシステム・タイプなどのカテゴリはすべて、図10の計算デバイスの範囲内にあることが意図されているので、これらは区別されない。
バス1002は、アドレス・バス、データ・バス、制御バス、又はその組合せなど、1個又は複数のバスを表し得る。バス1002は、ISA(industrial standard architecture)バス、EISA(extended industrial standard architecture)バス、VESA(video electronics standard association)バス、PCI(peripheral component inter connect)バス、PCIe(PCI express)バス、及び/又は別のタイプのバスなど、1個又は複数のバス・タイプを含み得る。
メモリ1004は、様々なコンピュータ可読媒体のいずれかを含み得る。コンピュータ可読媒体は、計算デバイス1000によってアクセスし得る任意の利用可能な媒体でもよい。コンピュータ可読媒体は、揮発性及び不揮発性媒体の両方、及び取り外し可能な及び取り外し不可能な媒体を含み得る。例として、しかし限定ではなく、コンピュータ可読媒体は、コンピュータ記憶媒体及び通信媒体を備え得る。
コンピュータ記憶媒体は、コンピュータ可読命令、データ構造体、プログラム・モジュール、及び/又は他のデータ・タイプなどの情報の記憶のための任意の方法又は技術において実装された揮発性及び不揮発性媒体及び/又は取り外し可能な及び取り外し不可能な媒体の両方を含み得る。たとえば、メモリ1004は、オペレーティング・システムなど、(たとえば、プログラム及び/又はプログラム要素を表す)コンピュータ可読命令を記憶することができる。コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリ又は他のメモリ技術、CD-ROM、デジタル多用途ディスク(DVD:digital versatile disk)又は他の光ディスク・ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージ又は他の磁気記憶デバイス、或いは、所望の情報を記憶するために使用し得る及び計算デバイス1000によってアクセスし得る任意の他の媒体を含み得るが、これらに限定されない。本明細書では、コンピュータ記憶媒体は、信号自体を含まない。
通信媒体は、搬送波などの変調データ信号又は他の移送機構においてコンピュータ可読命令、データ構造体、プログラム・モジュール、及び/又は他のデータ・タイプを実施することができ、任意の情報配信媒体を含む。「変調データ信号」という用語は、その特性セットのうちの1個又は複数を有する或いは信号内の情報をエンコードするような方式で変化した信号を指し得る。例として、しかし限定せず、通信媒体は、ワイヤード・ネットワーク又は直接ワイヤード接続などのワイヤード媒体と、音響、RF、赤外線及び他のワイヤレス媒体などのワイヤレス媒体とを含み得る。前述のいずれかの組合せもまた、コンピュータ可読媒体の範囲に含まれるべきである。
CPU1006は、コンピュータ可読命令を実行して計算デバイス1000の1個又は複数の構成要素を制御して本明細書に記載の方法及び/又はプロセスのうちの1個又は複数を実行するように構成され得る。CPU1006は、多数のソフトウェア・スレッドを同時に処理する能力を有する1個又は複数の(たとえば、1個、2個、4個、8個、28個、72個などの)コアをそれぞれ含み得る。CPU1006は、任意のタイプのプロセッサを含み得、実装された計算デバイス1000のタイプに応じて、異なるタイプのプロセッサを含み得る(たとえば、モバイル・デバイスのためのより少数のコアを有するプロセッサ、及びサーバのためのより多数のコアを有するプロセッサ)。たとえば、計算デバイス1000のタイプに応じて、プロセッサは、縮小命令セット計算(RISC:Reduced Instruction Set Computing)を使用して実装されたARMプロセッサ、又は複合命令セット計算(CISC:Complex Instruction Set Computing)を使用して実装されたx86プロセッサでもよい。計算デバイス1000は、計算コプロセッサなど、1個又は複数のマイクロプロセッサ又は補助コプロセッサ内の1個又は複数のCPU1006を含み得る。
GPU1008は、グラフィックス(たとえば、3Dグラフィックス)をレンダリングするために、計算デバイス1000によって使用され得る。GPU1008は、同時に数百又は数千のソフトウェア・スレッドを処理する能力を有する数百又は数千のコアを含み得る。GPU1008は、レンダリング・コマンド(たとえば、ホスト・インターフェースを介して受信されたCPU1006からのレンダリング・コマンド)に応答して、出力画像のための画素データを生成することができる。GPU1008は、画素データを記憶するための、ディスプレイ・メモリなどの、グラフィックス・メモリを含み得る。ディスプレイ・メモリは、メモリ1004の一部として含まれ得る。GPU708は、(たとえば、リンクを介して)並行して動作する2個以上のGPUを含み得る。結合されると、各GPU1008は、出力画像の異なる部分の又は異なる出力画像の画素データを(たとえば、第1のGPUは第1の画像のために及び第2のGPUは第2の画像のために)生成し得る。各GPUは、独自のメモリを含み得、他のGPUとメモリを共用し得る。
計算デバイス1000がGPU1008を含まない実例において、CPU1006は、グラフィックスをレンダリングするために使用され得る。
通信インターフェース1010は、ワイヤード及び/又はワイヤレス通信を含む、電子通信ネットワークを介して計算デバイス700が他の計算デバイスと通信することを可能にする、1個又は複数のレシーバ、トランスミッタ、及び/又はトランシーバを含み得る。通信インターフェース1010は、ワイヤレス・ネットワーク(たとえば、Wi-Fi、Z-Wave、ブルートゥース、ブルートゥースLE、ZigBeeなど)、ワイヤード・ネットワーク(たとえば、イーサネット(登録商標)介して通信すること)、低電力ワイド・エリア・ネットワーク(たとえば、LoRaWAN、SigFoxなど)、及び/又はインターネットなどの、いくつかの異なるネットワークのうちのいずれかを介する通信を可能にするための構成要素及び機能を含み得る。
I/Oポート1012は、そのうちのいくつかは計算デバイス1000に内蔵(たとえば、統合)され得る、I/O構成要素1014、提示構成要素1018、及び/又は他の構成要素を含む、他のデバイスに計算デバイス1000が論理的に連結されることを可能にすることができる。例示的なI/O構成要素1014は、マイクロフォン、マウス、キーボード、ジョイスティック、ゲーム・パッド、ゲーム・コントローラ、サテライト・ディッシュ、スキャナ、プリンタ、ワイヤレス・デバイスなどを含む。I/O構成要素1014は、エア・ジェスチャ、音声、又は、ユーザによって生成される他の生理的入力を処理する自然ユーザ・インターフェース(NUI:natural user interface)を提供することができる。場合によっては、入力は、さらなる処理のための適切なネットワーク要素に送信され得る。NUIは、音声認識、スタイラス認識、顔認識、生体認識、画面上での及び画面の隣でのジェスチャ認識、エア・ジェスチャ、頭部及び視標追跡、並びに計算デバイス1000のディスプレイに関連するタッチ認識(さらに詳しく後述するような)の任意の組合せを実装し得る。計算デバイス1000は、ジェスチャ検出及び認識のための、ステレオスコープ・カメラ・システム、赤外線カメラ・システム、RGBカメラ・システム、タッチ画面技術、及びこれらの組合せなど、深度カメラを含み得る。追加で、計算デバイス1000は、動きの検出を可能にする加速度計又はジャイロスコープを含み得る(たとえば、慣性測定ユニット(IMU:inertia measurement unit)の一部として)。いくつかの実例では、加速度計又はジャイロスコープの出力は、没入型拡張現実又は仮想現実をレンダリングするために、計算デバイス1000によって使用され得る。
電力供給装置1016は、ハードワイヤード電力供給装置、バッテリ電力供給装置、又はその組合せを含み得る。電力供給装置1016は、計算デバイス1000の構成要素が動作することを可能にするために計算デバイス1000に電力を提供することができる。
提示構成要素1018は、ディスプレイ(たとえば、モニタ、タッチ画面、テレビジョン画面、ヘッドアップ表示装置(HUD)、他のディスプレイタイプ、又はその組合せ)、スピーカ、及び/又は他の提示構成要素を含み得る。提示構成要素1018は、他の構成要素(たとえば、GPU1008、CPU1006など)からデータを受信し、データを(たとえば、画像、ビデオ、音響などとして)出力することができる。
本開示は、コンピュータ又は、携帯情報端末若しくは他のハンドヘルド・デバイスなどの、他のマシンによって実行されている、プログラム・モジュールなどのコンピュータ実行可能命令を含む、コンピュータ・コード又はマシン使用可能命令との一般的関連において説明されることがある。一般に、ルーティン、プログラム、オブジェクト、構成要素、データ構造体などを含むプログラム・モジュールは、特定のタスクを実行する又は特定の抽象データ・タイプを実装するコードを指す。本開示は、ハンドヘルド・デバイス、家電製品、汎用コンピュータ、より特殊な計算デバイスなどを含む、様々な構成で実施され得る。本開示はまた、通信ネットワークを介してリンクされた遠隔処理デバイスによってタスクが実行される分散型コンピューティング環境において実施され得る。
本明細書では、2個以上の要素に関する「及び/又は」の記述は、1個の要素のみ、又は要素の組合せを意味すると解釈されるべきである。たとえば、「要素A、要素B、及び/又は要素C」は、要素Aのみ、要素Bのみ、要素Cのみ、要素A及び要素B、要素A及び要素C、要素B及び要素C、或いは、要素A、B、及びCを含み得る。加えて、「要素A又は要素Bのうちの少なくとも1個」は、要素Aの少なくとも1個、要素Bの少なくとも1個、或いは、要素Aの少なくとも1個及び要素Bの少なくとも1個を含み得る。さらに、「要素A及び要素Bのうちの少なくとも1つ」は、要素Aのうちの少なくとも1つ、要素Bのうちの少なくとも1つ、或いは、要素Aのうちの少なくとも1つと要素Bのうちの少なくとも1つ、を含み得る。
本開示の主題は、法定の要件を満たすために特異性を有して記述されている。しかしながら、その記述自体が本開示の範囲を制限することは意図されていない。そうではなくて、本発明者は、請求されている主題が、他の現在の又は未来の技術と併せて、異なるステップ又は本文書に記載されたものと類似のステップの組合せを含むように、他の形で実施され得ることを意図している。さらに、「ステップ」及び/又は「ブロック」という用語は、使用される方法の異なる要素を含意するように本明細書で使用され得るが、これらの用語は、個別のステップの順番が明示的に記載されていない限り及びそのように記載されているときを除いて本明細書で開示される様々なステップの間に何らかの特定の順番を暗示するものとして解釈されるべきではない。