本開示の様々な実施形態および態様は、以下で説明される詳細を参照して説明され、図面は、様々な実施形態を示す。以下の説明および図面は、本開示を説明するものであり、本開示を限定するものとして解釈されるべきではない。本開示の様々な実施形態の包括的な理解を提供するために、多くの特定の詳細が説明される。しかしながら、特定の例では、本開示の実施形態の簡潔な説明を提供するために、周知または従来の詳細は説明されていない。
本明細書における「一実施形態」または「実施形態」への言及は、この実施形態に関連して説明される特定の特徴、構造、または特性が、本開示の少なくとも1つの実施形態に含まれ得ることを意味する。本明細書の様々な場所での「一実施形態では」という句の出現は、必ずしもすべてが同じ実施形態を指すとは限らない。
いくつかの実施形態は、自動運転車両(ADV)のセンサを同期させるための方法、デバイス、およびシステムに関する。上記のように、ADVは、様々なセンサを使用して、ADVが配置されている環境および/またはADVが移動している環境内のオブジェクトを検出することができる。センサが同期されていない場合、センサは、センサデータを一斉にまたは同時にキャプチャ、取得、および記録できない可能性がある。これにより、ADVにとって、センサからのセンサデータを相互に関連付けたり使用したりするのはより困難になる。例えば、ADVにとって、1つのセンサによって検出されたオブジェクトが第二センサによって検出されたオブジェクトと同じであるか否かを決定するのはより困難になる可能性がある。従って、複数のセンサがセンサデータを同時に(例えば、一斉に)キャプチャおよび/または取得するように、センサを同期させることが役立つ可能性がある。
図1は、本開示の一実施形態に係る自動運転車両のネットワーク構成を示すブロック図である。図1を参照すると、ネットワーク構成100は、ネットワーク102を介して1つまたは複数のサーバ103から104に通信可能に接続され得る自動運転車両101を含む。1つのみの自動運転車両が示されているが、複数の自動運転車両は、ネットワーク102を介して、相互におよび/またはサーバ103~104に接続され得る。ネットワーク102は、任意のタイプのネットワーク、例えば、有線または無線のローカルエリアネットワーク(LAN)、インターネットなどのワイドエリアネットワーク(WAN)、セルラーネットワーク、衛星ネットワーク、またはそれらの組み合わせであり得る。サーバ103から104は、任意のタイプのサーバまたはサーバクラスタ、例えば、ネットワークまたはクラウドサーバ、アプリケーションサーバ、バックエンドサーバ、またはそれらの組み合わせであり得る。サーバ103から104は、データ分析サーバ、コンテンツサーバ、交通情報サーバ、地図・ポイントオブインタレスト(MPOI)サーバ、または位置サーバなどであり得る。
自動運転車両とは、運転者からの入力がほとんどまたはまったくない場合に車両がナビゲートして環境を通り抜ける自動運転モードになるように構成され得る車両を指す。このような自動運転車両は、車両の動作環境に関連する情報を検出するように構成される1つまたは複数のセンサを有するセンサシステムを含み得る。前記車両およびそれに関連するコントローラは、検出された情報を使用して、ナビゲートして前記環境を通り抜ける。自動運転車両101は、手動モード、全自動運転モード、または部分自動運転モードで動作することができる。以下では、「自動運転車両」と「自動運転車両」(ADV)という用語は、同じ意味で使用され得る。
一実施形態では、自動運転車両101は、感知・計画システム110、車両制御システム111、無線通信システム112、ユーザインターフェースシステム113、インフォテインメントシステム(図示せず)、およびセンサシステム115を含むが、これらに限定されない。自動運転車両101は、エンジン、ホイール、ステアリングホイール、トランスミッションなど、一般的な車両に含まれるいくつかの一般的なコンポーネントをさらに含み得る。前記コンポーネントは、加速信号または命令、減速信号または命令、ステアリング信号または命令、ブレーキ信号または命令などの様々な通信信号および/または命令を使用して、車両制御システム111および/または感知・計画システム110によって制御され得る。
コンポーネント110から115は、インターコネクト、バス、ネットワーク、またはそれらの組み合わせを介して相互に通信可能に接続され得る。例えば、コンポーネント110から115は、コントローラエリアネットワーク(CAN)バスを介して相互に通信可能に接続され得る。CANバスは、ホストなしのアプリケーションでマイクロコントローラとデバイスが相互に通信できるように設計された車両バス規格である。これは、もともと自動車内の多重電気配線のために設計されたメッセージベースのプロトコルであるが、他の多くの環境でも使用される。
ここで図2を参照すると、一実施形態では、センサシステム115は、1つまたは複数のカメラ211、全地球測位システム(GPS)ユニット212、慣性測定ユニット(IMU)213、レーダーユニット214、および光検出・測距(LIDAR)ユニット215を含むが、これらに限定されない。GPSユニット212は、自動運転車両の位置に関する情報を提供するように動作可能な送受信機を含み得る。IMUユニット213は、慣性加速度に基づいて自動運転車両の位置および向きの変化を感知することができる。レーダーユニット214は、無線信号を使用して自動運転車両のローカル環境内のオブジェクトを感知するシステムを表すことができる。いくつかの実施形態では、オブジェクトを感知することに加えて、レーダーユニット214は、オブジェクトの速度および/または進行方向をさらに感知することができる。LIDARユニット215は、レーザーを使用して、自動運転車両が配置されている環境内のオブジェクトを感知することができる。他のシステムコンポーネントに加えて、LIDARユニット215は、1つまたは複数のレーザー源、レーザースキャナ、および1つまたは複数の検出器をさらに含み得る。カメラ211は、自動運転車両の周囲環境の画像を採集するための1つまたは複数のデバイスを含み得る。カメラ211は、スチルカメラおよび/またはビデオカメラであり得る。カメラは、例えば、カメラを回転および/または傾斜プラットフォームに取り付けることにより、機械的に移動可能であり得る。
センサシステム115は、ソナーセンサ、赤外線センサ、ステアリングセンサ、スロットルセンサ、ブレーキセンサ、およびオーディオセンサ(例えば、マイクロフォン)などの他のセンサをさらに含み得る。オーディオセンサは、自動運転車両の周囲環境から音声を採集するように構成され得る。ステアリングセンサは、ステアリングホイール、車両のホイール、またはそれらの組み合わせのステアリング角度を感知するように構成され得る。スロットルセンサおよびブレーキセンサは、それぞれ車両のスロットル位置およびブレーキ位置を感知する。いくつかの場合では、スロットルセンサおよびブレーキセンサは、統合型スロットル/ブレーキセンサとして統合され得る。
一実施形態では、車両制御システム111は、ステアリングユニット201、スロットルユニット202(加速ユニットとも呼ばれる)、およびブレーキユニット203を含むが、これらに限定されない。ステアリングユニット201は、車両の方向または前進方向を調整するために使用される。スロットルユニット202は、モータまたはエンジンの速度を制御して、車両の速度および加速度を制御するために使用される。ブレーキユニット203は、車両のホイールまたはタイヤを減速させるための摩擦を与えることにより、車両を減速させるために使用される。なお、図2に示すコンポーネントは、ハードウェア、ソフトウェア、またはそれらの組み合わせで実装され得る。
図1に戻って参照すると、無線通信システム112は、自動運転車両101と、デバイス、センサ、他の車両などの外部システムとの間の通信を可能にする。例えば、無線通信システム112は、1つまたは複数のデバイスと直接無線通信することができるか、またはネットワーク102を介してサーバ103から104と通信するなど、通信ネットワークを介して無線通信を実行することができる。無線通信システム112は、任意のセルラー通信ネットワークまたはWiFiなどの無線ローカルエリアネットワーク(WLAN)を介して、別のコンポーネントまたはシステムと通信することができる。無線通信システム112は、例えば、赤外線リンク、ブルートゥース(登録商標)などを介して、デバイス(例えば、乗客のモバイルデバイス、ディスプレイデバイス、および車両101内のスピーカ)と直接通信することができる。ユーザインターフェースシステム113は、例えば、キーボード、タッチスクリーンディスプレイデバイス、マイクロフォン、スピーカなどを含む、車両101内に実装された周辺デバイスの一部であり得る。
自動運転車両101の機能の一部または全部は、特に自動運転モードで動作している場合、感知・計画システム110によって制御または管理され得る。感知・計画システム110は、センサシステム115、制御システム111、無線通信システム112、および/またはユーザインターフェースシステム113から情報を受信し、受信された情報を処理し、出発地から目的地までのルートまたは経路を計画し、計画および制御情報に基づいて車両101を運転するために必要なハードウェア(例えば、プロセッサ、メモリ、記憶装置)およびソフトウェア(例えば、オペレーティングシステム、計画・ルーティングプログラム)を含む。あるいは、感知・計画システム110は、車両制御システム111と統合され得る。
例えば、乗客としてのユーザは、例えばユーザインターフェースを介して、行程の出発地および目的地を指定することができる。感知・計画システム110は、行程関連データを取得する。例えば、感知・計画システム110は、サーバ103から104の一部であり得るMPOIサーバから位置およびルート情報を取得することができる。位置サーバは位置サービスを提供し、MPOIサーバは地図サービスおよび特定の位置のPOIを提供する。あるいは、そのような位置およびMPOI情報は、感知・計画システム110の永久記憶装置にローカルにキャッシュされ得る。
自動運転車両101がルートに沿って移動しているとき、感知・計画システム110は、交通情報システムまたはサーバ(TIS)からリアルタイムの交通情報を取得することもできる。なお、サーバ103から104は、サードパーティエンティティによって操作され得る。あるいは、サーバ103から104の機能は、感知・計画システム110と統合され得る。リアルタイムの交通情報、MPOI情報、および位置情報、ならびにセンサシステム115によって検出または感知されたリアルタイムのローカル環境データ(例えば、障害物、オブジェクト、近くの車両)に基づいて、感知・計画システム110は、経路またはルートを計画し、計画されたルートに従って、例えば、制御システム111を介して車両101を運転して、指定された目的地に安全かつ効率的に到達することができる。
サーバ103は、様々なクライアントのためにデータ分析サービスを実行するデータ分析システムであり得る。一実施形態では、データ分析システム103は、データコレクタ121および機械学習エンジン122を含む。データコレクタ121は、自動運転車両または運転者によって運転される従来の車両である様々な車両から運転統計データ123を採集する。運転統計データ123は、発行された運転命令(例えば、スロットル、ブレーキ、ステアリング命令)と、異なる時点で車両のセンサによってキャプチャされた車両の応答(例えば、速度、加速、減速、方向)とを示す情報を含む。運転統計データ123は、異なる時点での運転環境を説明する情報、例えば、ルート(出発地および目的地を含む)、MPOI、道路状況、気象条件などをさらに含み得る。
運転統計データ123に基づいて、機械学習エンジン122は、様々な目的のために一連の規則、アルゴリズム、および/または予測モデル124を生成または訓練する。一実施形態では、アルゴリズム124は、入力、制約、およびコスト関数を受信し、経路に関連する快適度および経路への好感度を考慮して、車線の中心線に近く、緩衝地帯がある場合に障害物から離れたままであるように、ADVのための経路を生成する経路アルゴリズムを含み得る。それはまた、アルゴリズム124の一部として経路計画のためのコスト関数を生成することができる。次に、アルゴリズム124は、自動運転中にリアルタイムで使用され得るようにADVにアップロードされ得る。
図3Aおよび図3Bは、一実施形態に係る、自動運転車両と共に使用される感知・計画システムの一例を示すブロック図である。システム300は、感知・計画システム110、制御システム111、およびセンサシステム115を含むがこれらに限定されない、図1の自動運転車両101の一部として実装され得る。図3Aから図3Bを参照すると、感知・計画システム110は、測位モジュール301、感知モジュール302、予測モジュール303、決定モジュール304、計画モジュール305、制御モジュール306、ルーティングモジュール307、静的障害物マッパー308、および経路プランナ309を含むが、これらに限定されない。
モジュール301から309の一部または全部は、ソフトウェア、ハードウェア、またはそれらの組み合わせで実装され得る。例えば、これらのモジュールは、永久記憶装置352にインストールされ、メモリ351にロードされ、1つまたは複数のプロセッサ(図示せず)によって実行され得る。なお、これらのモジュールの一部または全部は、図2の車両制御システム111のモジュールの一部または全部に通信可能に接続され得るか、またはこれらと統合され得る。モジュール301から309の一部は、統合モジュールとして一緒に統合され得る。
測位モジュール301は、(例えば、GPSユニット212を使用して)自動運転車両300の現在位置を決定し、ユーザの行程またはルートに関連するすべてのデータを管理する。測位モジュール301(地図/ルーティングモジュールとも呼ばれる)は、ユーザの行程またはルートに関連するすべてのデータを管理する。ユーザは、例えば、ユーザインターフェースを介してログインし、行程の出発地および目的地を指定することができる。測位モジュール301は、地図/ルート情報311などの自動運転車両300の他のコンポーネントと通信して、行程関連データを取得する。例えば、測位モジュール301は、位置サーバおよび地図・POI(MPOI)サーバから位置およびルート情報を取得することができる。位置サーバは位置サービスを提供し、MPOIサーバは地図サービスおよび特定の位置のPOIを提供する。これらは、地図/ルート情報311の一部としてキャッシュされ得る。自動運転車両300がルートに沿って移動しているとき、測位モジュール301はまた、交通情報システムまたはサーバからリアルタイムの交通情報を取得することができる。
センサシステム115によって提供されたセンサデータ、および測位モジュール301によって取得された測位情報に基づいて、感知モジュール302は、周囲環境の感知を決定する。感知情報は、運転者が運転している車両の周囲で一般的な運転者が何を感知するかを表すことができる。感知情報は、オブジェクトの形態などを採用した、車線構成、交通信号灯信号、別の車両の相対位置、歩行者、建物、横断歩道、または他の交通関連標識(例えば、止まれの標識、譲れの標識)などを含み得る。車線構成は、車線または各車線を説明する情報、例えば、車線の形状(直線または曲線)、車線の幅、道路内の車線数、一方向または双方向の車線、合流車線または分岐車線、出口車線などを含む。
感知モジュール302は、自動運転車両の環境内のオブジェクトおよび/または特徴を認識するために、1つまたは複数のカメラによって採集された画像を処理および分析するためのコンピュータビジョンシステムまたはコンピュータビジョンシステムの機能を含み得る。前記オブジェクトは、交通信号、道路境界、他の車両、歩行者、および/または障害物などを含み得る。コンピュータビジョンシステムは、オブジェクト認識アルゴリズム、ビデオ追跡、および他のコンピュータビジョン技術を使用することができる。いくつかの実施形態では、コンピュータビジョンシステムは、環境地図を作成し、オブジェクトを追跡し、オブジェクトの速度などを推定することができる。感知モジュール302はまた、レーダーおよび/またはLIDARなどの他のセンサによって提供された他のセンサデータに基づいてオブジェクトを検出することができる。
オブジェクトのそれぞれについて、予測モジュール303は、その状況下でオブジェクトが実行する動作を予測する。予測は、一連の地図/ルート情報311および交通規則312に基づいて、様々な時点での運転環境を感知することによって得られた感知データに基づいて実行される。例えば、オブジェクトが反対方向の車両であり、現在の運転環境が交差点を含む場合、予測モジュール303は、車両が直接前進する可能性が高いか、またはステアリングする可能性が高いかを予測する。感知データが、交差点に交通信号灯がないことを示す場合、予測モジュール303は、車両が交差点に入る前に完全に停止しなければならない可能性があると予測することができる。感知データが、車両が現在左折専用車線または右折専用車線にあることを示す場合、予測モジュール303は、車両がそれぞれ左折または右折する可能性が高いと予測することができる。
オブジェクトのそれぞれについて、決定モジュール304は、オブジェクトをどのように処理するかについての決定を行う。例えば、特定のオブジェクト(例えば、交差点にある別の車両)、およびこのオブジェクトを説明するメタデータ(例えば、速度、方向、ステアリング角度)について、決定モジュール304は、どのようにこのオブジェクトとすれ違うか(例えば、追い越し、譲れ、停止、通過)を決定する。決定モジュール304は、永久記憶装置352に記憶され得る一連の規則(例えば、交通規則または運転規則312)に基づいてそのような決定を行うことができる。
ルーティングモジュール307は、出発地から目的地までの1つまたは複数のルートまたは経路を提供するように構成される。例えば、ユーザから受信された出発地から目的地までの所与の行程について、ルーティングモジュール307は、地図/ルート情報311を取得し、出発地から目的地までのすべての可能なルートまたは経路を決定する。ルーティングモジュール307は、それが決定する出発地から目的地までのルートのそれぞれについて、地形図の形態での基準線を生成することができる。基準線とは、他の車両、障害物、または交通状況などからの干渉を受けない理想的なルートまたは経路を指す。即ち、道路上に他の車両、歩行者、または障害物がない場合、ADVは、基準線に正確にまたは厳密に追従しなければならない。次に、地形図は、決定モジュール304および/または計画モジュール305に提供される。決定モジュール304および/または計画モジュール305は、測位モジュール301からの交通状況、感知モジュール302によって感知された運転環境、および予測モジュール303によって予測された交通状況など、他のモジュールによって提供された他のデータに基づいて、すべての可能なルートをチェックして、最適なルートの1つを選択して変更する。ADVを制御するための実際の経路またはルートは、その時点での特定の運転環境に応じて、ルーティングモジュール307によって提供された基準線に近いか、または異なる場合がある。
感知されたオブジェクトのそれぞれの決定に基づいて、計画モジュール305は、ルーティングモジュール307によって提供された基準線を基礎として使用して、自動運転車両の経路またはルートおよび運転パラメータ(例えば、距離、速度、および/またはステアリング角度)を計画する。即ち、所与のオブジェクトについて、決定モジュール304はこのオブジェクトに対して何を処理するかを決定するが、計画モジュール305はどのように処理するかを決定する。例えば、所与のオブジェクトについて、決定モジュール304はこのオブジェクトを追い越すことを決定することができるが、計画モジュール305はこのオブジェクトの左側または右側のどちらを追い越すかを決定することができる。計画および制御データは、車両300が次の移動周期(例えば、次のルート/経路セグメント)でどのように移動するかを説明する情報を含む計画モジュール305によって生成される。例えば、計画および制御データは、車両300に、時速30マイル(mph)の速度で10メートル移動し、次に25mphの速度で右側車線に変更するように指示することができる。
計画プロセスの一部として、経路プランナ309は、永久記憶装置352に記憶され得るコスト関数313に基づいて、複数の計画されたADV状態を生成することができる。
計画および制御データに基づいて、制御モジュール306は、計画および制御データによって定義されたルートまたは経路に従って、適切な命令または信号を車両制御システム111に送信することにより、自動運転車両を制御して運転する。計画および制御データは、経路またはルートに沿って異なる時点で適切な車両設定または運転パラメータ(例えば、スロットル、ブレーキ、ステアリング命令)を使用して、ルートまたは経路の第一点から第二点まで車両を運転するのに十分な情報を含む。
一実施形態では、計画段階は、例えば100ミリ秒(ms)の時刻間隔ごとなど、複数の計画周期(運転周期とも呼ばれる)で実行される。計画周期または運転周期ごとに、計画および制御データに基づいて1つまたは複数の制御命令が発行される。即ち、100msごとに、計画モジュール305は、例えば、目標位置およびADVが目標位置に到達するのに必要な時刻を含む、次のルートセグメントまたは経路セグメントを計画する。あるいは、計画モジュール305は、特定の速度、方向、および/またはステアリング角度などをさらに指定することができる。一実施形態では、計画モジュール305は、次の所定の期間(例えば、5秒)内にルートセグメントまたは経路セグメントを計画する。各計画サイクルについて、計画モジュール305は、前の周期で計画された目標位置に基づいて、現在の周期(例えば、次の5秒)の目標位置を計画する。次に、制御モジュール306は、現在の周期の計画および制御データに基づいて、1つまたは複数の制御命令(例えば、スロットル、ブレーキ、ステアリング制御命令)を生成する。
なお、決定モジュール304および計画モジュール305は、統合モジュールとして統合され得る。決定モジュール304/計画モジュール305は、自動運転車両の運転経路を決定するためのナビゲーションシステムまたはナビゲーションシステムの機能を含み得る。例えば、ナビゲーションシステムは、自動運転車両が経路に沿って移動するための一連の速度および前進方向を決定することができる。前記経路は、自動運転車両が、感知された障害物を実質的に回避しながら、最終目的地に通じる車道ベースの経路に沿って前進することを可能にする。目的地は、ユーザインターフェースシステム113を介したユーザ入力に従って設定され得る。ナビゲーションシステムは、自動運転車両の運転中に運転経路を動的に更新することができる。ナビゲーションシステムは、GPSシステムおよび1つまたは複数の地図からのデータを統合して、自動運転車両の運転経路を決定することができる。
一実施形態では、経路は、SL座標系で計画される。SL座標系は、基準線(道路/車線の中心線)を基準にして定義され得る。縦方向距離またはs距離は、基準線の接線方向に沿った距離を表す。同様に、横方向距離またはl距離は、s方向に垂直な距離を表す。SL空間内の縦方向サイズは、基準線に沿って運転すると想定される車両の現在位置からの特定のオブジェクトの縦方向距離を表す。SL空間内の横方向サイズは、縦方向サイズで表される特定の時刻または位置でのオブジェクトと基準線との間の最短距離を表す。SL空間内のこのような図は、SL図と呼ばれる。一実施形態では、横方向距離は、基準線からの距離として簡単に定義され得る。従って、デカルト座標系(XY平面)で表されることに加えて、車両の位置(ポーズ)は、SL座標系で、基準線を基準にした順序対(縦方向ポーズ/位置「sポーズ」、横方向ポーズ/位置「lポーズ」)として表され得るか、または単に(s、l)として表され得る。
いくつかの実施形態では、感知・計画システム110の1つまたは複数のコンポーネントは、1つまたは複数のニューラルネットワークを含み得、および/または使用し得る。例えば、計画モジュール305は、様々なタスク、機能、操作、動作などを実行するために、1つまたは複数のニューラルネットワークを含み得、および/または使用し得る。別の例では、感知モジュール302は、様々なタスク、機能、操作、動作などを実行するために、1つまたは複数のニューラルネットワークを含み得、および/または使用し得る。一実施形態では、感知システムの1つまたは複数のコンポーネントに含まれ得、および/または感知システムの1つまたは複数のコンポーネントによって使用され得る1つまたは複数のニューラルネットワークは、ADVのセンサによってキャプチャおよび/または生成された画像内の車線(例えば、道路車線)を検出することができる。例えば、感知モジュール302によって使用されるニューラルネットワークは、画像内の道路車線を示すことができる路線標識を決定することができる。
図3Aに示すように、システム300は、人工知能(AI)アクセラレータ360を含む。AIアクセラレータ360は、人工知能アプリケーション向けに設計、カスタマイズ、および/または配置され得る処理デバイスであり得る。例えば、AIアクセラレータ360は、人工ニューラルネットワークの操作を加速して、マシンビジョンおよび/または機械学習の操作などを実行するために使用され得る。AIアクセラレータ360の例は、グラフィックス処理ユニット(GPU)、特定用途向け集積回路、フィールド・プログラマブル・ゲート・アレイなどを含み得る。
図4Aは、一実施形態に係る決定・計画プロセス400の一例を示すブロック図である。決定・計画プロセス400は、測位/感知データ401、経路決定プロセス403、速度決定プロセス405、経路計画プロセス407、速度計画プロセス409、アグリゲータ411、および軌跡計算機413を含む。
経路決定プロセス403および速度決定プロセス405は、図3Bに示す決定モジュール304によって実行され得る。図3Bを参照すると、決定モジュール304は、動的計画法を使用して、経路計画プロセス407/速度計画プロセス409の初期制約として大まかな経路プロファイルを生成することができる。決定モジュール304は、以前の計画結果および重要な情報(例えば、ADVが走行しているか、それとも別の車線に変換しているか)並びに交通規則を提供する経路状態機械を使用することができる。状態、交通規則、ルーティングモジュール307によって提供された基準線、およびADVによって感知された障害物に基づいて、経路決定プロセス403は、どのように感知された障害物を処理するか(即ち、無視、追い越し、譲れ、停止、通過)を大まかな経路プロファイルの一部として決定することができる。
例えば、一実施形態では、大まかな経路プロファイルは、経路の曲率と、基準線および/または基準点から障害物までの距離とに基づいて、コストからなるコスト関数によって生成される。基準線上の点は選択され、候補経路を表す候補移動として基準線の左側または右側に移動される。候補移動のそれぞれは、関連するコストを有する。基準線上の1つまたは複数の点の候補移動に関連するコストは、最適なコストのための動的計画法を使用して、一度に1点ずつ順番に解かれ得る。動的計画法(または動的最適化)は、解くべき問題を一連の値関数に分解して、これらの値関数のそれぞれのみを毎回解き、それらの解を記憶する数理最適化方法であり得る。次回に同じ値関数が発生すると、その解を再計算するのではなく、以前に計算された解を検索するだけでよい。
速度決定プロセス405は、速度状態機械、速度交通規則、および1つまたは複数の走行距離-時刻(station-time)図を使用することができる。速度決定プロセス405は、動的計画法を使用して、経路計画プロセス407/速度計画プロセス409の初期制約として大まかな速度分布を生成することができる。速度状態機械の状態、速度交通規則、決定プロセス403によって生成された大まかな経路プロファイル、および感知された障害物に基づいて、速度決定プロセス405は、ADVをいつ加速および/または減速するかを制御するための大まかな速度プロファイルを生成することができる。
経路計画プロセス407は、二次計画法を使用して最適な基準線を再計算するための初期制約として、大まかな経路プロファイル(例えば、走行距離-横方向偏移(station-lateral)図)を使用することができる。二次計画法は、境界、線形等式および/または不等式制約の対象となる目的関数(例えば、いくつかの変数を持つ二次関数)を最小化または最大化することに関する。動的計画法と二次計画法の違いの1つは、二次計画法が基準線上のすべての点に対してすべての候補移動を一度に最適化することである。経路計画プロセス407は、平滑化アルゴリズム(例えば、Bスプラインまたは回帰)を出力された走行距離-横方向偏移図に適用することができる。経路コスト関数を使用して、経路コストに基づいて基準線を再計算し、基準点の候補移動の合計コストを最適化することができる。例えば、二次計画法(QP)最適化を使用して最適化を実行する。
速度計画プロセス409は、大まかな速度分布(例えば、走行距離-時刻図)および1つまたは複数のS-T図を使用して、ADVの1つまたは複数の速度を決定することができる。いくつかの実施形態では、S-T図は、S-T軌跡を含み得る。S-T軌跡は、以下でより詳細に説明するように、異なる時点でADVが経路に沿って走行する距離を示すことができる。従って、(S-T図の)S-T軌跡は、異なる時点での車両の速度を示すかまたは決定するために使用され得る。S-T図はまた、1つまたは複数の停止条件を含むかまたは示すことができる。例えば、S-T図はまた、歩行者、歩道、道路分離帯(例えば、中央分離帯)、別の車両などの障害物を回避するためにADVが停止すべき距離と時刻を示すことができる。本明細書ではST図について説明しているが、他の実施形態では、他のタイプの図(例えば、SL図、デカルト座標系を使用する図など)を使用することができる。速度計画プロセス409はまた、1つまたは複数の制約を使用して、ADVの1つまたは複数の速度を決定することができる。制約は、速度計画プロセス409が該組の速度を決定するときに満たすべき1つまたは複数の条件であり得る。例えば、制約は、候補解が満たすべきQP最適化問題に課せられる条件であり得る。1つまたは複数の制約は、以下でより詳細に説明する速度制約関数で示され得る。
アグリゲータ411は、経路および速度計画結果を集約する機能を実行する。例えば、一実施形態では、アグリゲータ411は、二次元S-T図およびS-L図を三次元SLT図に組み合わせることができる。別の実施形態では、アグリゲータ411は、S-L基準線上またはS-T曲線上の2つの連続点に基づいて補間する(または追加の点を埋める)ことができる。別の実施形態では、アグリゲータ411は、基準点を座標(S、L)から座標(x、y)に変換することができる。軌跡計算機413は、ADVを制御するための最終軌跡を計算することができる。例えば、軌跡計算機413は、アグリゲータ411によって提供されたSLT図に基づいて、ADCが特定の座標(x、y)をいつ通過すべきかを示す点(x、y、T)のリストを計算する。
従って、図4Aに戻って参照すると、経路決定プロセス403および速度決定プロセス405は、障害物および/または交通状況を考慮して、大まかな経路プロファイルおよび大まかな速度プロファイルを生成する。障害物に関するすべての経路および速度の決定が与えられた場合、経路計画プロセス407および速度計画プロセス409は、QP計画を使用して、障害物に基づいて大まかな経路プロファイルおよび大まかな速度プロファイルを最適化し、最小の経路コストおよび/または速度コストで最適な軌跡を生成する。
図4Bは、一実施形態に係る自動運転のためのシステムアーキテクチャ450を示すブロック図である。システムアーキテクチャ450は、図3Aおよび図3Bに示す自動運転システムのシステムアーキテクチャを表すことができる。図4Bを参照すると、システムアーキテクチャ450は、アプリケーション層451、計画・制御(PNC)層452、感知層453、ドライバ層454、ファームウェア層455、およびハードウェア層456を含むが、これらに限定されない。アプリケーション層451は、自動運転車両のユーザまたは乗客と対話するユーザインターフェースまたは構成アプリケーション、例えば、ユーザインターフェースシステム113に関連付けられた機能を含み得る。PNC層452は、少なくとも計画モジュール305および制御モジュール306の機能を含み得る。感知層453は、少なくとも感知モジュール302の機能を含み得る。一実施形態では、予測モジュール303および/または決定モジュール304の機能を含む追加層が存在する。あるいは、このような機能は、PNC層452および/または感知層453に含まれ得る。システムアーキテクチャ450は、ドライバ層454、ファームウェア層455、およびハードウェア層456をさらに含む。ファームウェア層455は、フィールド・プログラマブル・ゲート・アレイ(FPGA)の形態で実装され得るセンサシステム115の機能を少なくとも表すことができる。ハードウェア層456は、制御システム111および/またはセンサシステム115などの自動運転車両のハードウェアを表すことができる。層451-453は、デバイスドライバ層454を介してファームウェア層455およびハードウェア層456と通信することができる。
図5は、本開示の一実施形態に係るセンサシステムの一例を示すブロック図である。図5を参照すると、センサシステム115は、複数のセンサ510、およびホストシステム110に接続されたセンサユニット500を含む。ホストシステム110は、図3Aおよび図3Bに示すモジュールの少なくともいくつかを含み得る上記の計画・制御システムを表す。センサユニット500は、FPGAデバイスまたはASIC(特定用途向け集積回路)デバイスの形態で実装され得る。一実施形態では、センサユニット500は、特に、1つまたは複数のセンサデータ処理モジュール501(略してセンサ処理モジュールとも呼ばれる)、データ伝送モジュール502、およびセンサ制御モジュールまたはロジック503を含む。モジュール501-503は、センサインターフェース504を介してセンサ510と通信することができ、ホストインターフェース505を介してホストシステム110と通信することができる。任意選択的に、内部または外部バッファ506を利用して、処理のためのデータをバッファリングすることができる。
一実施形態では、受信経路または上流方向について、センサ処理モジュール501は、センサインターフェース504を介してセンサからセンサデータを受信し、バッファ506に一時的に記憶され得るセンサデータ(例えば、フォーマット変換、エラーチェック)を処理するように構成される。データ伝送モジュール502は、ホストインターフェース505と互換性のある通信プロトコルを使用して、処理されたデータをホストシステム110に送信するように構成される。同様に、送信経路または下流方向について、データ伝送モジュール502は、ホストシステム110からデータまたは命令を受信するように構成される。次に、センサ処理モジュール501は、対応するセンサと互換性のあるフォーマットにデータを処理する。次に、処理されたデータをセンサに送信する。
一実施形態では、センサ制御モジュールまたはロジック503は、センサデータをキャプチャすることのアクティブ化のタイミングなど、ホストインターフェース505を介してホストシステム(例えば、感知モジュール302)から受信された命令に応答して、センサ510の特定の動作を制御するように構成される。ホストシステム110は、センサデータが任意の時点で車両周辺の運転環境を感知するために使用され得るように、協調および/または同期方式でセンサデータをキャプチャするようにセンサ510を設定することができる。
センサインターフェース504は、イーサネット、USB(ユニバーサル・シリアル・バス)、LTE(ロングタームエボリューション)またはセルラー、WiFi、GPS、カメラ、CAN、シリアル(例えば、ユニバーサル非同期受信機/送信機またはUART)、SIM(加入者識別モジュール)カード、および他のユニバーサル入力/出力(GPIO)インターフェースのうちの1つまたは複数を含み得る。ホストインターフェース505は、PCIeインターフェースなど、任意の高速または高帯域幅のインターフェースであり得る。センサ510は、例えば、カメラ、LIDARデバイス、RADARデバイス、GPS受信機、IMU、超音波センサ、GNSS(グローバルナビゲーション衛星システム)受信機、LTEまたはセルラーSIMカード、車両センサ(例えば、スロットル、ブレーキ、ステアリングセンサ)、システムセンサ(例えば、温度、湿度、圧力センサ)など、自動運転車両で使用される様々なセンサを含み得る。
例えば、カメラは、イーサネットまたはGPIOインターフェースを介して接続され得る。GPSセンサは、USBまたは特定のGPSインターフェースを介して接続され得る。車両センサは、CANインターフェースを介して接続され得る。RADARセンサまたは超音波センサは、GPIOインターフェースを介して接続され得る。LIDARデバイスは、イーサネットインターフェースを介して接続され得る。外部SIMモジュールは、LTEインターフェースを介して接続され得る。同様に、内部SIMモジュールは、センサユニット500のSIMソケットに挿入され得る。UARTなどのシリアルインターフェースは、デバッグのためにコンソールシステムに接続され得る。
なお、センサ510は、任意のタイプのセンサであり得、様々な供給業者または供給者によって提供される。センサ処理モジュール501は、異なるタイプのセンサおよびそれらのそれぞれのデータフォーマットおよび通信プロトコルを処理するように構成される。一実施形態によれば、各センサ510は、センサデータを処理し、処理されたセンサデータをホストシステム110と対応するセンサとの間で伝送するための特定のチャネルに関連付けられる。各チャネルは、対応するセンサデータおよびプロトコルを処理するように構成またはプログラミングされた特定のセンサ処理モジュールおよび特定のデータ伝送モジュールを含む。
一実施形態では、センサユニット500は、高精度時刻生成回路517を含む。図6Aから図6Bに示すように、高精度時刻生成回路517は、センサデータがいつ各センサ510によって送信またはキャプチャ/トリガーされたか、および/またはセンサユニット500によって受信されたかを追跡するために、各センサ510によって使用される時刻および/またはタイムスタンプを生成することができる。
センサシステム115は、同期モジュール519をさらに含む。一実施形態では、同期モジュール519は、1つまたは複数の追従センサとガイドセンサのデータ取得時刻を同期させることができる。以下でより詳細に説明されるように、これにより、ガイドセンサおよび追従センサは、同じ時点で(例えば、一斉に、同時になど)センサデータを取得、記録、キャプチャなどすることができる。センサがセンサデータを一斉にまたは同時にキャプチャ、取得、および記録できない場合、ADVにとって、センサS1およびS2からのセンサデータを相互に関連付けたり、使用したりするのはより困難になる可能性がある。例えば、ADVにとって、1つのセンサによって検出されたオブジェクトが第二センサによって検出されたオブジェクトと同じであるか否かを決定するのはより困難になる可能性がある。別の例では、2つのセンサがオブジェクトを異なる時点で検出する場合、ADVにとって、オブジェクトの位置を決定するのはより困難になる可能性がある。いくつかの実施形態では、ADVのセンサを同期させることは、ADVが、異なるセンサからの異なるセンサデータを相互に関連付けるか、またはより容易に相互に関連付けることを可能にし得る。異なるセンサからのセンサデータを相互に関連付けることは、ADVが、環境内の車両、オブジェクト、障害物、歩行者、車線などをより迅速に、効果的に、容易に、および/またはより正確に検出することを可能にし得る。
ここで図6Aを参照すると、高精度時刻生成回路517は、時刻同期ユニット550、GPSセンサ551、およびローカルタイマ553を含み得る。時刻同期ユニット550は、GPSセンサ551からの毎秒パルス(PPS)信号から導出された時刻に関してローカルタイマ553を同期させることができる。PPSは、正確な時刻測定のためのローカルタイマ553をナノ秒に設定するために使用され得る。GPSセンサ551は、図2のセンサシステム115のGPSユニット212の一部であり得るか、またはGPSセンサ551は、高精度時刻生成回路517に統合された専用のGPSセンサであり得る。ローカルタイマ553は、センサユニット500のために時刻を生成することができる。ローカルタイマ553は、センサユニット500からの任意のローカルRTC(例えば、CPU RTCまたはFPGA RTC)、センサのタイマ、またはセルラーソースの外部ソース(例えば、4G、ロングタームエボリューション(LTE)、5G)、WIFIソース、FM受信機などから検索された時刻であり得る。
図6Bに示すように、時刻同期ユニット550は、監視モジュール555、調整モジュール557、ミリ秒発生器603、マイクロ秒発生器605、ナノ秒発生器607、デマルチプレクサ609、および構成611を含み得る。ミリ秒発生器603、マイクロ秒発生器605、およびナノ秒発生器607は、それぞれ、ローカルタイマ553の発振器(例えば、粒度の異なる3つの発振器カウンタ)に基づいて、ミリ秒、マイクロ秒、およびナノ秒の発振周期を生成することができる。構成611は、ミリ秒発生器603、マイクロ秒発生器605、およびナノ秒発生器607の出力のうちのどれが監視モジュール555にルーティングされるかを選択するように選択信号を設定することができる。監視モジュール555は、生成された発振周期を監視して、これらの周期をカウントすることができる。調整モジュール557は、ローカルタイマ553をGPSセンサ551からのPPS信号と同期させるために、カウントを調整する(またはカウント表現を修正する)ことができる。一実施形態では、構成611に使用される選択信号は、センサユニット500のユーザによって、またはフィードバックループ内の監視モジュール555/調整モジュール557によってプログラミングされ得る。例えば、ローカルタイマ553の精度が高いと決定された場合、ユーザは、ミリ秒発生器を無効化するように構成することができる。
使用される水晶発振器のタイプに応じて、ローカルタイマ553は、0.1から100ppmの範囲の精度を有することができ、例えば、任意のパルスは、0.1から100マイクロ秒だけ偏移することができる。GPSセンサ551からの毎秒パルス(PPS)信号は、0.1ppm未満の精度率または0.1マイクロ秒未満の毎秒パルスの偏差を有する。0.1ppmのGPS PPS信号の場合、GPSセンサ551から受信されたPPS信号は、1秒あたりの連続パルスが999,999.9から1,000,000.1マイクロ秒の間であると推測することができるが、典型的な100ppmのローカルタイマ553は、1秒あたりの連続パルスが999,900から1,000,100マイクロ秒の間であると推測することができる。また、ローカルタイマ553が使用する水晶発振器ICの周囲温度の変化により、ローカルタイマ553のパルス偏差の変化は、リアルタイムで変更され得る。従って、その目的は、ローカルタイマ553を調整または同期して、GPSセンサ551とリアルタイムで一致させることである。
ローカルタイマ553をGPSセンサ551と同期させるために、一実施形態では、GPSセンサ551は、衛星が一定の精度(例えば、<0.1ppm)で信号を宇宙に放送することによって送信するRF信号であるGPSパルス信号(PPS)を受信する。いくつかの実施形態では、GPSセンサ551は、第一GPS衛星からPPS信号を受信し、次に、第一GPS衛星が範囲外にある場合、第二GPS衛星からPPS信号を受信する。GPS衛星が独自の正確な時刻測定を使用し、各衛星が独自の原子時計のエアボーンセットを有するため、GPS衛星からのPPS信号は、1つまたは複数の基準タイマとみなされ得る。しかしながら、ローカルタイマ553が任意のGPS PPS信号と一致するようにリアルタイムで調整されるので、2つまたは複数の異なるGPS衛星のGPS PPS信号間の時刻差はさほど重要ではないと想定される。これは、以下でさらに説明されるように、ローカルタイマ553がリアルタイムでスムーズに同期され得るためである。
GPS PPS信号が受信されると、監視モジュール555は、PPS信号の時刻とローカルタイマ553の時刻との間の任意の偏差を決定することができ、決定された偏差に基づいて第二ローカルリアルタイムクロック/タイマを生成することができる。例えば、PPS信号に基づいて、日付と時刻の情報(協定世界時またはUTC形式)は、GPS(米国海洋電子機器協会)NMEAデータ情報によって最初に提供され得、精度が数秒に達する。次に、一実施形態では、ミリ秒発生器603は、ローカルタイマ553を使用して、1ミリ秒に近い発振カウント(例えば、第一粒度)を生成することができる。1ミリ秒に近い発振カウントは、分周器回路を使用して、ローカルタイマ553の信号周波数を分周することにより生成され得る。次に、監視モジュール555は、ミリ秒発生器603からの周期数(例えば、999個の周期)を1秒のGPS PPS信号時刻間隔で検出またはカウントすることができる。例えば、ローカルタイマ553は、GPS PPS信号を約1ミリ秒遅らせる。ミリ秒発生器603がGPS PPSより遅れているので、一実施形態では、調整モジュール557は、ミリ秒発生器の出力を調整して、発振あたり1.001ミリ秒を表す。次に、ミリ秒発生器603は、1秒あたり1000回の発振表現、即ち、0.000、1.001、2.002、…、999.999、および1001ミリ秒を生成する。従って、ミリ秒発生器603からの999番目の周期は、999.999ミリ秒にカウントされる。
次に、マイクロ秒発生器605は、ローカルタイマ553を使用して、1マイクロ秒に近い発振カウントを生成することができる。1マイクロ秒に近い発振カウントは、第二分周器回路を使用して、ローカルタイマ553の信号周波数を分周することによって生成され得る。監視モジュール555は、1ミリ秒のGPS PPS時刻間隔で、マイクロ秒発生器605からの988個の周期または2マイクロ秒の偏差をカウントすることができる。同様に、マイクロ秒発生器605がGPS PPSより遅れているので、調整モジュール557は、マイクロ秒発生器の出力を調整して、発振あたり1.002マイクロ秒を表す。次に、マイクロ秒発生器は、ミリ秒あたり1000回の発振表現、即ち、0.000、1.002、2.004、...、999.996、1000.998、および1002マイクロ秒を生成する。従って、998番目の周期は、999.996マイクロ秒にカウントされる。
次に、ナノ秒発生器607は、ローカルタイマ553を使用して、1ナノ秒に近い発振カウントを生成することができる。1ナノ秒に近い発振カウント(例えば、第三粒度)は、第三分周器回路を使用して、ローカルタイマ553の信号周波数を分周することによって生成され得る。監視モジュール555は、1マイクロ秒のGPS PPS時刻間隔で、ナノ秒発生器607からの997個の周期をカウントするか、3ナノ秒の偏差を検出することができる。同様に、調整モジュール557は、ナノ秒発生器の出力を調整して、発振あたり1.003ナノ秒を表すことができる。次に、ナノ秒発生器は、マイクロ秒あたり1000回の発振表現、即ち、0.000、1.003、2.006、...、999.991、1000.994、1001.997、および1003ナノ秒を生成する。従って、ナノ秒発生器607からの977番目の周期は、999.991ナノ秒にカウントされる。このようにして、任意の発生器出力(例えば、表現)またはそれらの組み合わせは、高精度時刻をリアルタイムで生成することができる。次に、高精度時刻をセンサユニット500のセンサに提供することができる。上記の例では、ナノ秒発生器を使用して生成された時刻は、最大1ナノ秒までの精度を有する。なお、3つの発生器(例えば、3つの粒度)が説明されるが、高精度時刻は、任意の数の発生器および粒度を使用して生成され得る。
いくつかの実施形態では、構成611は、デマルチプレクサ609を介して、発生器603-607のいずれかを選択的に有効化/無効化することができる。任意の発生器を選択的にオン/オフにすることができます。出力のサブセットのみが必要な場合、前記選択性は、発生器出力のサブセット(例えば、ナノ秒発生器のみ)を選択するのに役立つ。別の実施形態では、監視モジュール555は、異なる粒度の偏差をバッファリング(例えば、保存)し、GPSセンサ信号が失われた場合、GPSセンサ信号が再び復元されるまで、第一カウント値、第二カウント値、および第三カウント値(例えば、各発振の値表現)を維持する。
図7は、一実施形態に係る例示的な同期モジュール519のブロック図である。上記のように、同期モジュール519は、センサシステム115の一部であり得る。同期モジュール519は、センサインターフェース(例えば、図5に示すセンサインターフェース504)を介して、センサ710A、720A-720Z、740A、および760A-760Zに接続され得る。センサインターフェースは、イーサネット、USB(ユニバーサル・シリアル・バス)、LTE(ロングタームエボリューション)またはセルラー、WiFi、GPS、カメラ、CAN、シリアル(例えば、ユニバーサル非同期受信機/送信機またはUART)、SIM(加入者識別モジュール)カード、PCIeおよび/または他のユニバーサル入力/出力(GPIO)インターフェースのうちの1つまたは複数を含み得る。センサ710A、720A-720Z、740A、および760A-760Zは、自動運転車両の一部であり得、自動運転車両が配置されている環境内のオブジェクト(例えば、オブジェクト、車両、歩行者、サイクリスト、車線、建物、標識など)を検出するために自動運転車両によって使用され得る。センサの例は、カメラ、LIDARデバイス/センサ、RADARデバイスセンサ、GPS受信機、IMU、超音波デバイス/センサ、GNSS(グローバルナビゲーション衛星システム)受信機センサ、LTEまたはセルラーSIMカード、車両センサ(例えば、スロットル、ブレーキ、ステアリングセンサ)、システムセンサ(例えば、温度、湿度、圧力センサ)などを含み得る。
センサ710Aおよび740Aはガイドセンサであり得、センサ720A-720Zは追従センサであり得る。ガイドセンサは、一連の追従センサ(例えば、1つまたは複数の追従センサ)に関連付けられ得る。ガイドセンサは、他のセンサ(例えば、1つまたは複数の追従センサのセット)がいつセンサデータを記録、キャプチャ、取得、獲得、感知などするべきかを決定するために使用されるセンサであり得る。例えば、ガイドセンサは、特定の時刻にセンサデータをキャプチャまたは取得することができる。ガイドセンサに関連付けられた追従センサのセットは、センサデータを同時にキャプチャまたは取得するように構成され得る。例えば、ガイドセンサと追従センサのセットは、センサデータを同時にキャプチャ/取得することができる。追従センサは、ガイドセンサに関連付けられ得る(例えば、ガイドセンサと組み合わせられ得る)。上記のように、追従センサは、関連付けられたガイドセンサがセンサデータをキャプチャ/取得する時刻に基づいてセンサデータをキャプチャ/取得するセンサであり得る。異なる実施形態では、任意の組み合わせおよび/または任意の数のガイドセンサおよび/または追従センサは、センサシステム115で使用され得る。例えば、センサは、異なるセットに編成され得、各セットは、1つまたは複数のガイドセンサおよび1つまたは複数の追従センサを有することができる。
各センサは、1つまたは複数のデータ取得特性を有することができる。センサのデータ取得特性は、特性、特徴、パラメータ、属性、機能などであり得る。それは、センサがデータをキャプチャするのにかかる時刻を示したり、決定したりするために使用され得る。例えば、センサがカメラである場合、カメラのデータ取得特性は、シャッター速度、露出設定、絞り設定、ISO速度などを含み得る。これらのデータ取得特性は、カメラが画像を撮影または記録するのにかかる時刻を示したり、決定(計算など)したりするために使用され得る。別の例では、センサがLIDARセンサ/デバイスである場合、LIDARセンサ/デバイスのデータ取得特性は、レーザー機器または反射鏡の回転速度を含み得る。回転速度は、LIDARセンサ/デバイスがLIDARデータをキャプチャするのにかかる時刻を示したり、決定(計算など)したりするために使用され得る。
一実施形態では、センサのデータ取得特性は、命令、メッセージ、パケットなどを受信した後、センサがセンサデータをキャプチャ/取得するのにかかる時刻を含み得る。例えば、カメラは、カメラ内のCCD(電荷結合デバイス)およびCMOS(相補型金属酸化膜半導体)センサを起動するのに時刻がかかる可能性がある。別の例では、レーダーデバイス/センサは、送信機の電源を入れるのに時刻がかかる可能性がある。別の例では、LIDARデバイス/センサは、レーザー機器の電源を入れるのに時刻がかかる可能性がある。命令、メッセージ、パケットなどを受信してからセンサデータのキャプチャを開始するまでの時刻は、センサの起動遅延と呼ばれ得る。さらに別の例では、LIDARデバイス/センサの場合、レーザー機器または反射鏡は、特定の位置/位置に回転するのに時刻がかかる可能性がある。起動遅延は、センサのデータ取得特性の一例であり得る。
一実施形態では、センサのデータ取得特性は、センサがセンサデータをキャプチャ/取得するのにかかる時刻を含み得る。例えば、カメラは、画像をキャプチャまたは記録するのに一定の時刻がかかる可能性がある。別の例では、レーダーセンサ/デバイスは、オブジェクトまでの距離を決定するのに十分な測定を実行するのに時刻がかかる可能性がある。センサは、かかった時刻をキャプチャ、取得、記録、生成などする。センサデータは、取得遅延と呼ばれ得る。取得遅延は、センサのデータ取得特性の一例であり得る。取得遅延は、センサの他のデータ取得特性(例えば、カメラのシャッター速度、露出時刻など)に基づくものであり得る。
同期モジュール519は、ガイドセンサモジュール731Aおよび751Aを含む。一実施形態では、ガイドセンサモジュールは、ガイドセンサの1つまたは複数のデータ取得特性を決定することができる。例えば、ガイドセンサモジュール731Aは、センサ710A(例えば、ガイドセンサ)の1つまたは複数のデータ取得特性を決定することができ、ガイドセンサモジュール751Aは、センサ740A(例えば、ガイドセンサ)の1つまたは複数のデータ取得特性を決定することができる。ガイドセンサモジュールは、ガイドセンサの設定/パラメータへのアクセス、プロファイルの読み取り、データ取得特性についてのガイドセンサへの照会(例えば、データ取得特性についてのガイドセンサへの照会)などによって、ガイドセンサの1つまたは複数の特性を決定することができる。
同期モジュール519は、追従センサモジュール733A-733Zおよび753A-753Zをさらに含む。一実施形態では、追従センサモジュールは、追従センサの1つまたは複数のデータ取得特性を決定することができる。一実施形態では、追従センサモジュール733Aは、センサ720A(例えば、追従センサ)の1つまたは複数のデータ取得特性を決定することができる。追従センサモジュールは、追従センサの設定/パラメータへのアクセス、プロファイルの読み取り、データ取得特性についての追従センサへの照会(例えば、データ取得特性についての追従センサへの照会)などによって、追従センサの1つまたは複数の特性を決定することができる。
同期モジュール519は、起動モジュール732A-732Zおよび752A-752Zをさらに含む。一実施形態では、起動モジュールは、センサデータのキャプチャ、取得、記録などを起動することができる。例えば、起動モジュール732Aは、フレーム、メッセージ、パケット、命令などをセンサ720Aに送信して、センサにセンサデータのキャプチャを開始させることができる。メッセージ、パケット、命令などは、センサ720Aを起動およびトリガーして、それにセンサデータをキャプチャさせることができる。起動モジュール732Aが(センサをトリガーするか、またはセンサにセンサデータをキャプチャさせるために)メッセージ、パケット、命令などをセンサに送信するのにかかる時刻は、起動時刻と呼ばれ得る。
一実施形態では、上記のように、同期モジュール519(例えば、ガイドセンサモジュールまたは追従センサモジュール)は、ガイドセンサ(例えば、センサ710A)の一連のデータ取得特性、およびガイドセンサ(例えば、センサ720A-720Z)に関連付けられた一連の追従センサを決定することができる。同期モジュール519(例えば、起動モジュール)は、ガイドセンサ(例えば、センサ710A)および1つまたは複数の追従センサ(例えば、センサ720A-720Z)のデータ取得特性に基づいて、ガイドセンサ(例えば、センサ710A)および1つまたは複数の追従センサ(例えば、センサ720A-720Z)のデータ取得時刻を同期させることができる。例えば、同期モジュール519は、ガイドセンサに第一データ取得時刻(例えば、第一時刻または期間)にセンサデータを取得させることができ、追従センサに第二データ取得時刻(例えば、第二時刻または期間)にセンサデータを取得させることができる。データ取得時刻は、センサがセンサデータを取得できる時刻周期、時刻フレームなどとも呼ばれ得る。第一データ取得時刻と第二データ取得時刻は重複する場合がある。例えば、同期モジュール519は、ガイドセンサおよび(ガイドセンサに関連付けられた)1つまたは複数の追従センサに、データを同時に取得させることができる(例えば、センサの取得遅延の時刻周期は、少なくとも部分的に重複し得る)。
一実施形態では、同期モジュール519(例えば、起動モジュール)は、ガイドセンサおよび/または1つまたは複数の追従センサのデータ取得特性に基づいて、ガイドセンサおよび/または1つまたは複数の追従センサのデータ取得時刻を決定することができる。例えば、以下でより詳細に説明されるように、同期モジュール519は、ガイドセンサおよび/または1つまたは複数の追従センサの起動遅延および/または取得遅延に基づいて、ガイドセンサおよび/または1つまたは複数の追従センサのデータ取得時刻を決定することができる。一実施形態では、センサのデータ取得時刻は、取得遅延を含み得、および/または取得遅延と同じであり得る(例えば、データ取得時刻は、取得遅延である)。
一実施形態では、同期モジュール519(例えば、起動モジュール)は、ガイドセンサおよび/または1つまたは複数の追従センサのセンサ履歴に基づいて、ガイドセンサおよび/または1つまたは複数の追従センサのデータ取得時刻を決定することができる。例えば、同期モジュール519は、ガイドセンサおよび/または1つまたは複数の追従センサの以前の起動遅延および取得遅延を追跡、記録などすることができる。同期モジュール519は、ガイドセンサおよび/または1つまたは複数の追従センサの平均起動遅延および平均取得遅延を決定することができる。同期モジュール519は、ガイドセンサおよび/または1つまたは複数の追従センサの平均起動遅延および平均取得遅延に基づいて、ガイドセンサおよび/または1つまたは複数の追従センサのデータ取得時刻を決定することができる。
一実施形態では、同期モジュール519(例えば、起動モジュール)は、センサのデータ取得時刻に基づいて、センサの起動時刻を決定することができる。センサのデータ取得時刻および所望のデータ取得時刻に基づいて、同期モジュール519は、センサが所望のデータ取得時刻(例えば、所望の時刻、時刻フレーム、時刻周期などの期間)にセンサデータをキャプチャ/取得するように、センサをいつ起動またはトリガーするかを決定することができる。例えば、以下でより詳細に説明されるように、センサの所望のデータ取得時刻(センサデータのキャプチャ/取得時刻)が時刻Tである場合、同期モジュール519は、センサの起動時刻がTからセンサの起動遅延を引いたもの(および取得遅延の一部または全部を引いたもの)であるべきであると決定することができる。
一実施形態では、ガイドセンサは、起動時刻の使用をサポートすることができ、1つまたは複数の追従センサは、起動時刻の使用をサポートすることができる。例えば、ガイドセンサおよび1つまたは複数の追従センサは、特定の時刻にセンサデータの取得を開始するようにトリガーされ得る(例えば、特定の時刻にセンサデータの取得を開始するように指示され得る)。別の実施形態では、ガイドセンサは、起動時刻の使用をサポートすることができない場合があり、1つまたは複数の追従センサは、起動時刻の使用をサポートすることができる場合がある。例えば、センサがセンサデータの取得を開始すると、センサは、センサデータのキャプチャに使用される周波数またはタイミングを調整できない場合がある(例えば、センサは、15ミリ秒ごとにデータをキャプチャでき、異なる時刻間隔でデータをキャプチャできない場合がある)。ガイドセンサが特定の時刻にトリガーまたは起動されない可能性があるため、1つまたは複数の追従センサは、ガイドセンサのタイミング(例えば、取得遅延および/または起動遅延)を使用して、センサデータの取得を開始するために1つまたは複数の追従センサをトリガーすべき時刻を決定することができる。
図8Aは、一実施形態に係る2つのセンサS1およびS2の動作のタイミングを示す曲線図800である。センサS1およびS2は、自動運転車両のセンサであり得る。例えば、センサS1はカメラであり得、センサS2はLIDARセンサ/デバイスであり得る。センサS2はガイドセンサであり得、センサS1はセンサS2に関連付けられた(例えば、ガイドセンサに関連付けられた)追従センサであり得る。上記のように、ガイドセンサは、1つまたは複数の追従センサがいつセンサデータを記録、キャプチャ、取得、獲得、感知などするべきかを決定するために使用されるセンサであり得る。センサS1およびS2は、それぞれ、1つまたは複数のデータ取得特性を有することができる。上記のように、センサのデータ取得特性は、センサがデータをキャプチャするのにかかる時刻を示したり、決定したりするために使用され得る特性、性質、パラメータ、属性、機能などであり得る。例えば、起動遅延および/または取得遅延は、センサのデータ取得特性であり得る。
図8Aに示すように、センサS1およびS2は5ミリ秒で起動され得る。例えば、センサS1およびS2は、メッセージ、命令、データなどを受信して、5ミリ秒でセンサデータのキャプチャ、記録、取得などを開始することができる。T1AはセンサS1の起動遅延であり得、T2AはセンサS2の起動遅延であり得る。上記のように、起動遅延は、センサがメッセージ、命令、データなどを受信した後、センサデータのキャプチャ、記録、取得などを開始するのにかかる時刻であり得る。T1Aは5msの起動遅延を表し、T2Aは15msの起動遅延を表す。T1BはセンサS1の取得遅延であり得、T2BはセンサS2の取得遅延であり得る。上記のように、取得遅延は、センサがセンサデータをキャプチャするのにかかる時刻(例えば、カメラがキャプチャして画像化するのにかかる時刻)であり得る。T1Bは10msの取得遅延を表し、T2Bは15msの取得遅延を表す。
図8Aに示すように、センサS1およびS2は、異なる時点でセンサデータを収集、記録、キャプチャ、取得などすることができる。例えば、センサS1は、10msで開始して20msで終了する取得遅延T1Bの間にセンサデータを記録/取得する。センサS2は、20msで開始して35msで終了する取得遅延T2Bの間にセンサデータを記録/取得する。センサS1およびS2が異なる時点でセンサデータをキャプチャ/取得するため、それらは、異なる時点で環境内のオブジェクトを検出することができる。例えば、センサS1は取得遅延T1Bの間に別の車両を検出することができ、センサS2は取得遅延T2Bの間に同じ車両を検出することができる。しかしながら、センサS1およびS2が車両を検出する時刻、時刻周期、時刻フレームなどは重複しないため(例えば、センサS1およびS2がセンサデータを同時に取得・キャプチャしないため)、ADVにとって、センサS1およびS2からのセンサデータを相互に関連付けたり、使用したりするのはより困難になる可能性がある。例えば、センサS1は、取得遅延T1Bの間に車両の画像をキャプチャすることができる。センサS2は、レーザーを使用して、取得遅延T2Bの間に車両の距離および/または形状を検出することができる。しかしながら、センサS1が最初に車両の画像をキャプチャし、次にセンサS2が車両の距離を検出するので、センサS2が車両の距離を検出したとき、車両は、もはや同じ位置にない可能性がある(例えば、もはやADVから同じ距離にない可能性がある)。従って、ADVにとって、センサS1およびS2から受信されたセンサデータを相互に関連付けるのはより困難になる可能性がある。例えば、ADVにとって、センサS1からの画像からキャプチャされた車両が、センサS2によって検出された車両と同じであるか否かを決定するのはより困難(または不可能)になる可能性がある。
図8Bは、一実施形態に係る2つのセンサS1およびS2の動作のタイミングを示す曲線図800である。センサS1およびS2は、自動運転車両のセンサであり得る。センサS2はガイドセンサであり得、センサS1はセンサS2に関連付けられた(例えば、ガイドセンサに関連付けられた)追従センサであり得る。上記のように、ガイドセンサは、1つまたは複数の追従センサがいつセンサデータを記録、キャプチャ、取得、獲得、感知などするべきかを決定するために使用されるセンサであり得る。センサS1およびS2は、それぞれ、1つまたは複数のデータ取得特性を有することができる。上記のように、センサのデータ取得特性は、センサがデータをキャプチャするのにかかる時刻を示したり、決定したりするために使用され得る特性、性質、パラメータ、属性、機能などであり得る。
一実施形態では、ADVは、センサS1およびS2のデータ取得特性に基づいて、センサS1およびS2の起動時刻を決定することができる。例えば、センサS1は、5msの起動遅延、および10msの取得遅延を有する。センサS2は、15msの起動遅延、および15msの取得遅延を有する。ADVは、センサS1およびS2のデータ取得時刻が少なくとも部分的に重複するように、またはセンサS1およびS2がセンサデータを同時にキャプチャ、記録、取得などするように(例えば、センサS1のデータ取得時刻とセンサS2のデータ取得時刻との間には少なくともいくつかの重複がある)、センサS1およびS2のデータ取得時刻を決定することができる。
図8Bに示すように、ADV(例えば、図5および図7に示す同期モジュール519)は、センサS1およびS2の起動時刻を決定することができる。上記のように、センサS1およびS2の起動時刻は、センサS1およびS2がセンサデータの記録、キャプチャ、収集などを開始できる時刻であり得る。センサS1の起動遅延は15msであり得、センサS2の起動遅延は5msであり得る。センサS1の起動遅延が5msであり、センサS2の起動遅延が15msであるため、センサS2は、より早く起動され得る。これにより、センサS1およびS2は、センサデータのキャプチャ、記録などを同時に開始することができる。例えば、センサS1およびS2は両方とも、20msの時点でセンサデータのキャプチャ、記録などを開始することができる。従って、センサS1およびS2は、センサデータの記録、キャプチャなどを同時に実行することができる。
他の実施形態では、センサのデータ取得時刻の間に少なくともいくつかの重複がある場合(例えば、センサの取得遅延の時刻周期の間にいくつかの重複がある場合)、起動時刻および/またはデータ取得時刻は偏移され得る。例えば、センサS1の起動時刻は20msであり得、取得遅延T1Bは25msから35msの間であり得る。これにより、センサS1およびS2は、キャプチャ、記録、取得などを同時に完了することができる。
上記のように、センサが異なる時点でセンサデータをキャプチャ、記録、取得などする場合、ADVにとって、異なるセンサからのセンサデータを相互に関連付けるのは困難である可能性がある。図8Bに示すように、ADVは、センサS1およびS2がデータをキャプチャ、記録、取得などする期間に少なくともいくつかの重複があるように、センサS1およびS2を同期させる(例えば、センサS1およびS2の動作を同期させる)ことができる。センサS1およびS2がセンサデータを取得する時刻、時刻周期、時刻フレームなどは重複するため、これにより、ADVは、センサS1およびS2からのセンサデータをより容易に相互に関連付けることができる。例えば、センサS1はカメラであり得、取得遅延T1Bの間に車両の画像をキャプチャすることができる。センサS2はLIDARデバイス/センサであり得、取得遅延T2Bの間にレーザー機器を使用して車両の距離および/または形状を検出することができる。センサS1が最初に車両の画像をキャプチャし、同時にセンサS2が車両までの距離を検出するので、ADVは、センサS2によって(レーザーを使用して)検出された車両が、センサS1によって生成された画像内の車両と同じであると決定することができる。
いくつかの実施形態では、異なるセンサからのセンサデータを相互に関連付けることは、ADVが、環境内の車両、オブジェクト、障害物、歩行者、車線などをより容易に、および/またはより正確に検出することを可能にし得る。例えば、カメラとLIDARデバイス/センサが同時に車両を検出する場合、ADVは、センサデータをより容易に相互に関連付けることができ、環境内にオブジェクトがあることをより確実にすることができる。別の例では、ADVが複数のセンサからのセンサデータをより容易に相互に関連付けることができる場合、ADVは、環境内のオブジェクトの位置、速度、および/または走行方向をより容易に決定することができる。
図9は、一実施形態に係る、自動運転車両のセンサを同期させるための例示的なプロセス900を示すフローチャートである。プロセス900は、ソフトウェア、ハードウェア、またはそれらの組み合わせを含み得る処理ロジックによって実行され得る。プロセス900は、ハードウェア(例えば、回路、特定用途向けロジック、プログラマブルロジック、プロセッサ、処理デバイス、中央処理装置(CPU)、システムオンチップ(SoC)など)、ソフトウェア(例えば、処理デバイスで伝達および実行される命令)、ファームウェア(例えば、マイクロコード)またはそれらの組み合わせを含み得る処理ロジックによって実行され得る。いくつかの実施形態では、プロセス900は、処理デバイス、同期モジュール(例えば、図5および図7に示す同期モジュール519)、同期モジュールの一部(例えば、図7に示すガイドセンサモジュール、起動モジュール、および/または追従センサモジュール)などによって実行され得る。
ブロック905において、プロセス900は、ガイドセンサの1つまたは複数のデータ取得特性を決定することができる。例えば、プロセス900は、ガイドセンサに照会するか、またはプロファイルにアクセスすることができる。ブロック910において、プロセス900は、1つまたは複数の追従センサの1つまたは複数のデータ取得特性を決定することができる。例えば、プロセス900は、1つまたは複数の追従センサに照会するか、または1つまたは複数のプロファイルにアクセスすることができる。
ブロック915において、プロセス900は、ガイドセンサのデータ取得時刻を、1つまたは複数の追従センサのデータ取得時刻と同期させることができる。例えば、ブロック916において、プロセス900は、ガイドセンサおよび1つまたは複数の追従センサのデータ取得時刻を決定することができる(例えば、センサがセンサデータを同時に取得、採集、記録、収集などする必要がある場合)。ガイドセンサおよび1つまたは複数の追従センサのデータ取得時刻は、ガイドセンサおよび/または1つまたは複数の追従センサのデータ取得特性に基づいて(例えば、起動遅延、取得遅延などに基づいて)決定され得る。ブロック917において、プロセス900は、ガイドセンサおよび/または1つまたは複数の追従センサの起動時刻を決定することができる。例えば、ガイドセンサがユーザの起動時刻をサポートできる場合、プロセス900は、ガイドセンサおよび1つまたは複数の追従センサの起動時刻を決定することができる。別の例では、ガイドセンサがユーザの起動時刻をサポートできない場合、プロセス900は、1つまたは複数の追従センサの起動時刻を決定することができる。ブロック918において、プロセス900は、起動時刻にセンサ(例えば、ガイドセンサおよび/または1つまたは複数の追従センサ)を起動することができる。従って、ガイドセンサおよび/または1つまたは複数の追従センサは、センサデータを採集、記録、取得、収集などするために使用され得る。
ブロック920において、プロセス900は、センサデータに基づいてADVの経路を決定することができる。例えば、ADVのセンサによって検出された障害物を回避する道路上の経路を決定することができる。ブロック925において、プロセス900は、経路に基づいてADVを制御することができる。例えば、プロセス900は、ADVを経路に沿って移動させることができる。
図10Aは、一実施形態に係る例示的なセンサ検証システム1000を示すブロック図である。検証システム1000は、センサシステム115および検証デバイス1020を含む。センサシステム115は、センサ510、検証モジュール1010、およびセンサユニット500を含む。上記のように、センサシステム115は、ホストシステム(図10Aには図示せず)をさらに含み得る。センサ510は、カメラ、LIDARデバイス、RADARデバイス、GPS受信機、IMU、超音波センサ、GNSS(グローバルナビゲーション衛星システム)受信機、LTEまたはセルラーSIMカード、車両センサ(例えば、スロットル、ブレーキ、ステアリングセンサ)、システムセンサ(例えば、温度、湿度、圧力センサ)など、自動運転車両で使用される様々なセンサを含み得る。図10Aには1つのセンサ510が示されているが、他の実施形態では、センサシステム115は、複数のセンサを含み得る。
一実施形態では、センサ510は、アクティブセンサであり得る。アクティブセンサは、波を放出、送信、伝播、生成などすることができるセンサであり得る。例えば、アクティブセンサは、電磁波(例えば、無線電波、光波、赤外線波など)を送信または放出することができ、電磁波の反射を検出して、自動運転車両の周囲環境内のオブジェクトを検出することができる。別の例では、アクティブセンサは、音波を送信または放出することができ、音波の反射を検出して、自動運転車両の周囲環境内のオブジェクトを検出することができる。アクティブセンサの例は、レーダーセンサ/デバイス、LIDARセンサ/デバイス、超音波センサ/デバイスなどを含み得る。別の実施形態では、センサ510は、パッシブセンサであり得る。パッシブセンサは、波を放出、送信、伝播、生成などしないセンサであり得る。例えば、パッシブセンサは、電磁波または音波を検出して、自動運転車両の周囲環境内のオブジェクトを検出することができる。パッシブセンサの例は、マイクロフォン、カメラ、ビデオカメラなどを含み得る。
センサユニット500は、FPGAデバイスまたはASICデバイスの形態で実装され得る。上記のように、センサユニット500は、センサインターフェースを介してセンサ510と通信することができ、ホストインターフェースを介してホストシステムと通信することができる。センサインターフェースは、イーサネット、USB、LTEまたはセルラー、WiFi、GPS、カメラ、CAN、シリアル、SIMカードおよび/または他のGPIOインターフェースの1つまたは複数を含み得る。ホストインターフェース505は、PCIeインターフェースなど、任意の高速または高帯域幅のインターフェースであり得る。センサユニット500は、センサインターフェースを介してセンサ510からセンサデータを受信し、センサデータを処理することができる(例えば、フォーマット変換、エラーチェック)。センサユニット500は、ホストインターフェースと互換性のある通信プロトコルを使用して、処理されたデータをホストシステムに送信することができる。同様に、送信経路または下流方向について、センサユニット500は、ホストシステムからデータまたは命令を受信することができる。次に、センサユニット500は、データをセンサ510と互換性のあるフォーマットに処理する。次に、処理されたデータをセンサ510に送信する。
一実施形態では、センサ制御モジュールまたはロジック503は、センサデータをキャプチャすることのアクティブ化のタイミングなど、ホストインターフェース505を介してホストシステム(例えば、感知モジュール302)から受信された命令に応答して、センサ510の特定の動作を制御するように構成される。ホストシステム110は、センサデータが任意の時点で車両周辺の運転環境を感知するために使用され得るように、協調および/または同期方式でセンサデータをキャプチャするようにセンサ510を設定することができる。なお、センサ510は、任意のタイプのセンサであり得、様々な供給業者または供給者によって提供される。センサユニット500は、異なるタイプのセンサおよびそれらのそれぞれのデータフォーマットおよび通信プロトコルを処理するように構成される。
一実施形態では、センサユニット500は、時刻生成回路(図10Aには図示せず)をさらに含む。時刻生成回路は、時刻を示したり、検証システム1000のコンポーネントのために時刻(例えば、グローバル時刻、基準時刻など)を決定したりするために使用され得る信号を生成することができる。例えば、時刻生成回路は、現在の時刻を連続的に出力することができるクロックまたは現在の時刻を示すタイミング信号であり得る。センサ510および検証モジュールは、タイミング信号を使用して、タイムスタンプを決定したり、操作、動作などをいつ実行するかを決定したりすることができる。一実施形態では、時刻生成回路は、検証モジュール1010の一部であり得る。別の例では、上記のように、時刻生成回路は、センサユニット500の一部であり得る。別の実施形態では、時刻生成回路は、検証モジュール1010およびセンサユニット500から分離され得る。
検証システム1000は、検証デバイス1020を含む。一実施形態では、検証デバイス1020は、検出器であり得る。検出器は、センサ510によって生成、放出、送信などされる波を検出することができるデバイスであり得る。例えば、センサ510は、LIDARデバイス(例えば、アクティブセンサ)であり得、検証デバイス1020は、LIDARデバイスによって放出された光波を検出することができる光電検出器(例えば、レーザー機器)であり得る。別の例では、センサ510は、レーダーデバイス(例えば、アクティブセンサ)であり得、検証デバイス1020は、レーダーデバイスによって放出された無線電波を検出するアンテナであり得る。別の例では、センサ510は、超音波デバイス(例えば、アクティブセンサ)であり得、検証デバイス1020は、超音波デバイスによって放出された音波を検出するマイクロフォンであり得る。
センサシステム115は、検証モジュール1010をさらに含む。一実施形態では、検証モジュール1010は、センサ510の動作を検証することができる。例えば、検証モジュール1010は、センサ510がセンサデータのキャプチャを十分に迅速に開始できるか否か(例えば、起動遅延が許容可能な時刻/範囲内にあるか否か)を決定することができる。別の例では、検証モジュール1010は、センサ510がセンサデータを十分に迅速にキャプチャできるか否か(例えば、取得遅延が許容可能な時刻/範囲内にあるか否か)を決定することができる。別の例では、検証モジュール1010は、センサ510がセンサデータを別のデバイス(例えば、ホストシステム)に十分に迅速に送信できるか否かを決定することができる。さらに別の例では、検証モジュール1010は、センサ510によって取得されたセンサデータに基づいて、センサ510がオブジェクトを検出できるか否かを決定することができる。
上記のように、センサがセンサデータを同時にまたは一斉にキャプチャ、取得、および記録していない場合(例えば、センサが同期されていない場合)、ADVにとって、複数のセンサからのセンサデータを相互に関連付けたり、使用したりするのはより困難になる可能性がある。例えば、ADVにとって、特定のセンサによって検出されたオブジェクトが第二センサによって検出されたオブジェクトと同じであるか否かを決定するのはより困難になる可能性がある場合、または2つのセンサが異なる時点でオブジェクトを検出した場合、ADVにとって、オブジェクトの位置を決定するのはより困難になる可能性がある。ADVのセンサを同期させることは、ADVが、異なるセンサからの異なるセンサデータを相互に関連付けるか、またはより容易に相互に関連付けることを可能にし得る。異なるセンサからのセンサデータを相互に関連付けることは、ADVが、環境内の車両、オブジェクト、障害物、歩行者、車線などをより迅速に、効果的に、容易に、および/またはより正確に検出することを可能にし得る。例えば、ADVは、センサデータをより容易に相互に関連付けることができ、環境内にオブジェクトがあることをより確実にすることができる。別の例では、ADVが複数のセンサからのセンサデータをより容易に相互に関連付けることができる場合、ADVは、環境内のオブジェクトの位置、速度、および/または走行方向をより容易に決定することができる。
センサ510の動作を検証することは、センサシステム115(例えば、図5および図7に示す同期モジュール519)がセンサ510を自動運転車両の他のセンサと適切に同期させることを可能にし得る。例えば、センサが適切に動作していない場合(例えば、センサデータを取得するのに時刻がかかりすぎたり、起動するのに時刻がかかりすぎたりする場合など)、センサシステム115は、センサ510を他のセンサと適切に同期させることができない可能性がある。検証モジュール1010は、センサシステム115が、センサ510が適切に動作しているか否かを検証することを可能にし得、これにより、センサは、自動運転車両の他のセンサと適切に同期され得る。センサ510が適切に動作していない場合、検証モジュール1010は、センサ510が適切に動作していないこと(例えば、エラーメッセージの送信、エラーメッセージの表示など)を提供することができる。これにより、ユーザ(例えば、運転者/乗客、機械工、技術者など)は、センサ510がいつ適切に動作していないかを把握し、センサ510を取り替えることができる。
図10Bは、一実施形態に係る例示的なセンサ検証システム1050を示すブロック図である。検証システム1050は、センサ510、検証モジュール1010、および検証デバイス1020を含む。センサ510は、自動運転車両で使用される様々なセンサ(例えば、LIDARデバイス、レーダーデバイス、超音波センサ、カメラ、ビデオカメラ、GPS受信機など)を含み得る。図10Bには1つのセンサ510が示されているが、他の実施形態では、検証システム1050は、複数のセンサを含み得る。
一実施形態では、センサ510は、アクティブセンサ(例えば、LIDARセンサ、デバイス、レーダーセンサ/デバイス、IRセンサ/デバイス、超音波センサ/デバイス)であり得る。アクティブセンサは、波(例えば、無線電波、光波、赤外線波、音波など)を放出、送信、伝播、生成などすることができ、波の反射を検出して、自動運転車両の周囲環境内のオブジェクトを検出することができるセンサであり得る。別の実施形態では、センサ510は、パッシブセンサであり得る。パッシブセンサは、波を放出、送信、伝播、生成などしないセンサ(例えば、カメラ、ビデオカメラ、GPS受信機、マイクロフォンなど)であり得る。センサ510は、センサインターフェースを介して検証モジュール1010に接続され得る。上記のように、センサインターフェースは、イーサネット、USB、LTEまたはセルラー、WiFi、GPS、カメラ、CAN、シリアル、SIMカード、PCIeインターフェースおよび/または他のGPIOインターフェースのうちの1つまたは複数を含み得る。検証モジュール1010は、センサインターフェースを介してセンサ510からセンサデータを受信し、センサデータを処理することができる(例えば、フォーマット変換、エラーチェック)。一実施形態では、検証モジュール1010は、センサデータをキャプチャすることのアクティブ化のタイミングなど、センサ510の特定の動作を制御するように構成される。これにより、検証モジュール1010は、センサ510の動作を検証することができる。
一実施形態では、センサユニット500は、時刻生成回路(図10Aには図示せず)をさらに含む。時刻生成回路は、時刻を示したり、検証システム1000のコンポーネントのために時刻(例えば、グローバル時刻、基準時刻など)を決定したりするために使用され得る信号を生成することができる。例えば、時刻生成回路は、現在の時刻を連続的に出力することができるクロックまたは現在の時刻を示すタイミング信号であり得る。センサ510、検証デバイス1010、および検証モジュール1020は、タイミング信号を使用して、タイムスタンプを決定したり、操作、動作などをいつ実行するかを決定したりすることができる。一実施形態では、時刻生成回路は、検証モジュール1010の一部であり得る。別の例では、上記のように、時刻生成回路は、センサユニット500の一部であり得る。別の実施形態では、時刻生成回路は、検証モジュール1010およびセンサユニット500から分離され得る。
検証システム1000は、検証デバイス1010を含む。一実施形態では、検証デバイス1020は、検出器であり得る。検出器は、センサ510によって生成、放出、送信などされる波を検出することができるデバイスであり得る。例えば、センサ510は、LIDARデバイス(例えば、アクティブセンサ)であり得、検証デバイス1020は、LIDARデバイスによって放出された光波を検出することができる光電検出器(例えば、レーザー機器)であり得る。別の例では、センサ510は、レーダーデバイス(例えば、アクティブセンサ)であり得、検証デバイス1020は、レーダーデバイスによって放出された無線電波を検出するアンテナであり得る。別の例では、センサ510は、超音波デバイス(例えば、アクティブセンサ)であり得、検証デバイス1020は、超音波デバイスによって放出された音波を検出するマイクロフォンであり得る。
センサシステム115は、検証モジュール1010をさらに含む。一実施形態では、検証モジュール1010は、センサ510の動作を検証することができる。例えば、検証モジュール1010は、センサ510がセンサデータのキャプチャを十分に迅速に開始できるか否か(例えば、起動遅延が許容可能な時刻/範囲内にあるか否か)を決定することができる。別の例では、検証モジュール1010は、センサ510がセンサデータを十分に迅速にキャプチャできるか否か(例えば、取得遅延が許容可能な時刻/範囲内にあるか否か)を決定することができる。別の例では、検証モジュール1010は、センサ510がセンサデータを別のデバイス(例えば、ホストシステム)に十分に迅速に送信できるか否かを決定することができる。さらに別の例では、検証モジュール1010は、センサ510によって取得されたセンサデータに基づいて、センサ510がオブジェクトを検出できるか否かを決定することができる。
上記のように、センサがセンサデータを同時にまたは一斉にキャプチャ、取得、および記録していない場合、ADVにとって、複数のセンサからのセンサデータを相互に関連付けたり、使用したりするのはより困難になる可能性がある。ADVのセンサを同期させることは、ADVが、異なるセンサからの異なるセンサデータを相互に関連付けるか、またはより容易に相互に関連付けることを可能にし得る。異なるセンサからのセンサデータを相互に関連付けることは、ADVが、環境内の車両、オブジェクト、障害物、歩行者、車線などをより迅速に、効果的に、容易に、および/またはより正確に検出することを可能にし得る。センサ510の動作を検証することは、ユーザ(例えば、技術者、機械工など)が、センサ510が自動運転車両の他のセンサと適切に同期できるか否かを決定することを可能にし得る。検証モジュール1010は、センサシステム115が、センサ510が適切に動作しているか否かを検証することを可能にし得、これにより、センサ510は、自動運転車両の他のセンサと適切に同期され得る。センサ510が適切に動作していない場合、検証モジュール1010は、センサ510が適切に動作していないこと(例えば、エラーメッセージの送信、エラーメッセージの表示など)を提供することができ、これにより、ユーザは、センサ510がいつ適切に動作していないかを把握し、センサ510を取り替えることができる。
図11は、一実施形態に係る例示的な検証システム1100を示すブロック図である。検証システム1100は、センサ510、検証モジュール1010、および検出器1150を含む。センサ510は、LIDARデバイス、レーダーデバイス、超音波デバイス、赤外線デバイス/センサ(例えば、赤外線を放出するデバイス)、紫外線デバイス/センサ(例えば、紫外線を放出するデバイス)などのアクティブセンサであり得る。上記のように、アクティブセンサは、波(例えば、無線電波、光波、電磁波、音波など)を放出、送信、生成などするデバイスであり得る。検証モジュール1010は、起動モジュール1110、検出モジュール1120、動作モジュール1130、およびタイミングモジュール1140を含む。
一実施形態では、起動モジュール1110(例えば、検証モジュール)は、センサ510にセンサデータを取得させ、および/またはセンサデータの取得を開始させることができる(例えば、センサデータを取得するために操作、プロセス、機能、動作などを起動する)。例えば、起動モジュール1110は、センサデータのキャプチャ、取得、記録などを起動することができる。一実施形態では、起動モジュール1110は、フレーム、メッセージ、パケット、命令などをセンサ510に送信して、センサ510にセンサデータのキャプチャを開始させることができる。メッセージ、パケット、命令などは、センサ510を起動およびトリガーして、それにセンサデータをキャプチャさせることができる。一実施形態では、起動モジュール1110は、信号(例えば、ワイヤ上の1つまたは複数の電圧)をセンサ510に送信して、センサ510にセンサデータのキャプチャを開始させることができる。以下でより詳細に説明されるように、起動モジュール1110は、タイミングモジュール1140によって生成されたタイミング信号に基づいて、起動モジュール1110がセンサにセンサデータのキャプチャを開始させる時刻を決定することができる。起動モジュール1110は、起動モジュール1110がセンサにセンサデータのキャプチャを開始させる時刻を示すために、タイムスタンプまたは他のいくつかの情報を生成することができる。
一実施形態では、検出モジュール1120(例えば、検証モジュール1010)は、検出器1150が、センサ510によって放出、生成、送信などされた波を検出したか否かを決定することができる。上記のように、検出器1150は、センサ510によって放出、生成、送信などされた波(例えば、電磁波、音波など)を検出することができる特定のタイプの検出器および/または検出デバイスであり得る。検出器1150は、光電検出器、アンテナ、マイクロフォンなどであり得る。検出モジュール1120(例えば、検証モジュール1010)は、検出器1150に接続され得る。検出モジュール1120はまた、検出器1150がセンサ510によって放出された波を検出する時刻を決定することができる。例えば、検出モジュール1120は、検出器1150がセンサ510によって放出された波を検出したことを示す信号(例えば、ワイヤ上の1つまたは複数の電圧)および/またはメッセージを検出器1150から受信することができる。検出モジュール1120は、タイミングモジュール1140(以下でより詳細に説明する)によって生成されたタイミング信号に基づいて、信号および/またはメッセージが検出器1150からいつ受信されるかを決定することができる。検出モジュール1120は、信号および/またはメッセージが検出器1150から受信された時刻を示すために、タイムスタンプまたは他のいくつかの情報を生成することができる。
一実施形態では、動作モジュール1130は、センサ510からセンサデータを受信することができる。センサデータは、センサによって取得および/または生成されたデータであり得る。センサデータは、自動運転車両が動作している環境に関する情報を示すことができる。例えば、センサデータは、自動運転車両が配置されている環境内の1つまたは複数のオブジェクトを示したり、識別したりすることができる。動作モジュール1130は、センサデータがセンサ510からいつ受信されるかを決定することができる。例えば、動作モジュール1130は、タイミングモジュール1140(以下でより詳細に説明する)によって生成されたタイミング信号に基づいて、センサデータがセンサ510からいつ受信されるかを決定することができる。動作モジュール1130は、センサデータがセンサ510から受信された時刻を示すために、タイムスタンプまたは他のいくつかの情報を生成することができる。
動作モジュール1130は、起動モジュール1110、検出モジュール1120、および動作モジュール1130によって決定された1つまたは複数の時刻および/またはタイムスタンプに基づいて、センサ510の動作を検証することができる。一実施形態では、動作モジュール1130は、起動モジュール1110がセンサ510にセンサデータを取得させる時刻(例えば、第一時刻および/またはタイムスタンプ)および検出器1150がセンサ510によって放出された波を検出する時刻(例えば、第二時刻および/またはタイムスタンプ)に基づいて、センサ510の起動遅延を決定することができる。例えば、動作モジュール1130は、第一時刻と第二時刻との間の差に基づいて起動遅延を決定することができる。起動遅延が閾値時刻以下(例えば、閾値期間未満)である場合、動作モジュール1130は、センサ510が適切におよび/または許容可能な性能レベル内で動作していると決定することができる。起動遅延が閾値時刻よりも大きい場合、動作モジュール1130は、センサ510が適切におよび/または許容可能な性能レベル内で動作していないと決定することができる。別の例では、動作モジュール1130は、センサ510の起動遅延がセンサの基準起動遅延の閾値内にあるか否かを決定することができる。基準起動遅延は、センサ510のデータ取得特性に基づくものであり得る。起動遅延が基準起動遅延の閾値内にある場合、センサ510は適切に動作することができ、逆もまた同様である。
一実施形態では、動作モジュール1130は、起動モジュール1110がセンサ510にセンサデータを取得させる時刻(例えば、第一時刻および/またはタイムスタンプ)、検出器1150がセンサ510によって放出された波を検出する時刻(例えば、第二時刻および/またはタイムスタンプ)、および動作モジュール1130がセンサ510からセンサデータ受信する時刻(例えば、第三時刻および/またはタイムスタンプ)に基づいて、センサ510の取得遅延を決定することにより、センサの動作を検証することができる。例えば、動作モジュール1130は、第二時刻と第三時刻との間の差に基づいて取得遅延を決定することができる。取得遅延が閾値時刻以下(例えば、閾値期間未満)である場合、動作モジュール1130は、センサ510が適切におよび/または許容可能な性能レベル内で動作していると決定することができる。取得遅延が閾値時刻よりも大きい場合、動作モジュール1130は、センサ510が適切におよび/または許容可能な性能レベル内で動作していないと決定することができる。別の例では、動作モジュール1130は、センサ510の取得遅延がセンサの基準取得遅延の閾値内にあるか否かを決定することができる。基準取得遅延は、センサ510のデータ取得特性に基づくものであり得る。取得遅延が基準取得遅延の閾値内にある場合、センサ510は適切に動作することができ、逆もまた同様である。
一実施形態では、動作モジュール1130は、第一時刻と第三時刻との間の差に基づいて、センサ510の動作を検証することができる。第一時刻と第三時刻との間の差は、センサ510がセンサデータを取得するのにかかる合計時刻を示すことができる。動作モジュール1130は、合計時刻が閾値以下であるか否か(例えば、センサ510がセンサデータを取得するのにかかる合計時刻が10ミリ秒、200ミリ秒、または他の適切な期間未満であるか否か)を決定することができる。合計時刻が閾値以下である場合、動作モジュール1130は、センサ510が適切に動作していると決定することができる。合計時刻が閾値よりも大きい場合、動作モジュール1130は、センサ510が適切に動作していないと決定することができる。
一実施形態では、動作モジュール1130によって受信されたセンサデータは、タイムスタンプを含み得る。タイムスタンプは、センサ510がセンサデータを生成するのにかかる時刻を示すことができる。動作モジュール1130は、タイムスタンプが、検出器1150がセンサ510によって放出された波を検出する時刻(例えば、第二時刻および/またはタイムスタンプ)、および動作モジュール1130がセンサ510からセンサデータを受信する時刻(例えば、第三時刻および/またはタイムスタンプ)であるか否かを正確に決定することができる。例えば、動作モジュール1130は、タイムスタンプが、第三時刻よりも短いか、またはそれよりも早く、第一時刻よりも遅い時刻を示しているか否かを決定することができる。タイムスタンプが、第三時刻よりも短いか、またはそれよりも早く、第一時刻よりも遅い時刻を示している場合、動作モジュール1130は、センサが適切に動作していると決定することができ、逆もまた同様である。
一実施形態では、動作モジュール1130は、センサ510から受信されたセンサデータが、センサがオブジェクトを検出したことを示しているか否かを決定することができる。例えば、基準オブジェクトは環境内に存在できる。動作モジュール1130は、センサデータが、センサ510が環境内の基準オブジェクトの存在を検出したことを示しているか否かを決定することができる。センサ510が基準オブジェクトの存在、位置、速度、および/または方向を検出する場合、動作モジュール1130は、センサ510が適切に動作していると決定することができ、逆もまた同様である。
一実施形態では、タイミングモジュール1140は、タイミング信号を生成することができる。タイミング信号は、基準時刻を決定するためにセンサ510および検出器1150によって使用され得る。例えば、タイミング信号は、現在の時刻を示すことができ、および/または現在の時刻を決定するためにセンサ510および/または検出器1150によって使用され得る。これにより、検証システム1100のすべてのコンポーネント(例えば、センサ510、検出器1150、および検証モジュール1010)は、同じ基準時刻を使用して動作できる。
上記のように、ADVのセンサを同期させることは、ADVが、異なるセンサからの異なるセンサデータを相互に関連付けるか、またはより容易に相互に関連付けることを可能にし得る。異なるセンサからのセンサデータを相互に関連付けることは、ADVが、環境内の車両、オブジェクト、障害物、歩行者、車線などをより迅速に、効果的に、容易に、および/またはより正確に検出することを可能にし得る。センサ510の動作を検証することは、ユーザ(例えば、技術者、機械工など)が、センサ510が自動運転車両の他のセンサと適切に同期できるか否かを決定することを可能にし得る。検証モジュール1010は、センサシステム115が、センサ510が適切に動作しているか否かを検証することを可能にし得、これにより、センサ510は、自動運転車両の他のセンサと適切に同期され得る。センサ510が適切に動作していない場合、検証モジュール1010は、センサ510が適切に動作していないこと(例えば、エラーメッセージの送信、エラーメッセージの表示など)を提供することができ、これにより、ユーザは、センサ510がいつ適切に動作していないか(例えば、センサに欠陥があるか否か)を把握し、センサ510を取り替えることができる。
図12は、一実施形態に係る、自動運転車両で使用されるセンサを検証するための例示的なプロセスを示すフローチャートである。プロセス1200は、ソフトウェア、ハードウェア、またはそれらの組み合わせを含み得る処理ロジックによって実行され得る。プロセス1200は、ハードウェア(例えば、回路、特定用途向けロジック、プログラマブルロジック、プロセッサ、処理デバイス、中央処理装置(CPU)、システムオンチップ(SoC)など)、ソフトウェア(例えば、処理デバイスで伝達/実行される命令)、ファームウェア(例えば、マイクロコード)またはそれらの組み合わせを含み得る処理ロジックによって実行され得る。いくつかの実施形態では、プロセス1200は、処理デバイス、検証モジュール(例えば、図10A、図10B、図11、および図13に示す検証モジュール1010)、検証モジュールの一部(例えば、図11に示す起動モジュール、検出モジュール、動作モジュール、および/またはタイミングモジュール)などによって実行され得る。
ブロック1205において、プロセス1200は、タイミング信号を生成することができる。例えば、プロセス1200は、現在の時刻を示す連続信号を生成することができる。ブロック1205において、プロセス1200は、タイミング信号をセンサおよび/または検出器に提供することができる。これにより、センサおよび/または検出器は、同じ現在の時刻を使用して動作できる。ブロック1215において、プロセス1200は、第一時刻にセンサにセンサデータを取得させることができる。例えば、プロセス1200は、メッセージおよび/または信号をセンサに送信して、センサにセンサデータを取得させることができる。ブロック1220において、プロセス1200は、検出器がセンサによって生成された波を第二時刻に検出したと決定することができる。例えば、プロセス1200は、検出器がセンサによって生成された電磁波または音波を検出したことを示す信号またはメッセージを検出器から受信することができる。ブロック1225において、プロセス1200は、第三時刻にセンサからセンサデータを受信することができる。
ブロック1230において、プロセス1200は、第一時刻、第二時刻、および/または第三時刻のうちの1つまたは複数に基づいて、センサの動作を検証することができる。例えば、上記のように、プロセス1200は、センサの起動時刻が基準起動時刻の閾値内にあるか否かを決定することができる。別の例では、上記のように、プロセス1200は、センサの取得時刻が基準取得時刻の閾値内にあるか否かを決定することができる。
図13は、一実施形態に係る例示的な検証システム1300を示すブロック図である。検証システム1300は、センサ510、検証モジュール1010、および励起発生器1350を含む。センサ510は、カメラ、ビデオカメラ、マイクロフォン、GPS受信機などのパッシブセンサであり得る。上記のように、パッシブセンサは、波(例えば、無線電波、光波、電磁波、音波など)を放出、送信、生成などしないデバイスであり得る。検証モジュール1010は、起動モジュール1310、励起モジュール1320、動作モジュール1330、およびタイミングモジュール1340を含む。
一実施形態では、上記のように、起動モジュール1310(例えば、検証モジュール)は、センサ510にセンサデータを取得させ、および/またはセンサデータの取得を開始させることができる(例えば、センサデータを取得するために操作、プロセス、機能、動作などを起動する)。起動モジュール1310は、フレーム、メッセージ、パケット、命令などをセンサ510に送信して、センサ510にセンサデータのキャプチャを開始させることができる。起動モジュール1310はまた、信号(例えば、ワイヤ上の1つまたは複数の電圧)をセンサ510に送信して、センサ510にセンサデータのキャプチャを開始させることができる。起動モジュール1310は、タイミングモジュール1340によって生成されたタイミング信号に基づいて、起動モジュール1310がセンサにセンサデータのキャプチャを開始させる時刻を決定することができる。起動モジュール1310は、起動モジュール1310がセンサにセンサデータのキャプチャを開始させる時刻を示すために、タイムスタンプまたは他のいくつかの情報を生成することができる。
一実施形態では、励起モジュール1320は、センサ510によって検出され得る励起を生成することができる。励起モジュール1320は、一定期間内に励起を生成することができる。例えば、励起モジュール1320は、一定期間内に光、音声などを生成することができる。この期間は、センサ510のデータ取得特性に基づくものであり得る。例えば、この期間は、センサ510の起動遅延および取得遅延に基づくものであり得る。起動遅延に基づいて、励起モジュール1320は、センサ510が起動されたときまたはその後に時刻周期を開始することができる。取得遅延に基づいて、励起モジュール1320は、この期間が取得遅延の閾値と同じであるか、または取得遅延の閾値内にあるように、この期間を終了することができる。センサ510の取得遅延の間に励起を生成することにより、励起モジュール1320は、動作モジュール1330が、センサ510が取得遅延の間に励起を検出したか否かを決定することを可能にし得る。励起モジュール1320はまた、動作モジュール1330が、センサ510の起動遅延が許容可能であるか否かを決定することを可能にし得る。励起モジュール1320はまた、動作モジュール1330が、センサ510の取得遅延が許容可能であるか否かを決定することを可能にし得る。励起モジュール1320は、メッセージおよび/または信号を励起発生器1350に送信して、励起発生器1350に励起を生成させることができる。例えば、このメッセージは、励起発生器1350がいつ、どのくらいの時刻励起を生成すべきかを示すことができる。
一実施形態では、励起モジュール1320は、センサ510の基準起動遅延および基準取得遅延に基づいて、励起発生器1350が励起を生成すべき期間を決定することができる。例えば、基準起動遅延、および起動モジュール1310がセンサ510にセンサデータを取得させる時刻に基づいて、励起モジュール1320は、いつ励起の生成を開始するかを決定することができる。別の例では、センサ510の基準取得遅延に基づいて、励起モジュール1320は、どのくらいの時刻励起を生成すべきか(例えば、いつ励起の生成を停止すべきか)を決定することができる。
一実施形態では、動作モジュール1330は、センサ510からセンサデータを受信することができる。センサデータは、センサによって取得および/または生成されたデータであり得る。センサデータは、自動運転車両が動作している環境に関する情報を示すことができる。動作モジュール1330は、センサデータがセンサ510からいつ受信されるかを決定することができる。動作モジュール1330は、センサデータがセンサ510から受信された時刻を示すために、タイムスタンプまたは他のいくつかの情報を生成することができる。
動作モジュール1330は、起動モジュール1310、励起モジュール1320、および動作モジュール1330によって決定された1つまたは複数の時刻および/またはタイムスタンプに基づいて、センサ510の動作を検証することができる。一実施形態では、動作モジュール1330は、起動モジュール1310がセンサ510にセンサデータを取得させる時刻(例えば、第一時刻および/またはタイムスタンプ)、励起発生器1350がセンサ510によって検出された励起を生成する時刻(例えば、第二時刻および/またはタイムスタンプ)、およびセンサ510が励起を検出したか否かに基づいて、センサ510の起動遅延を決定することができる。例えば、起動遅延が時刻T0とT1の間にあり、励起発生器1350が時刻T1からT2で励起を生成する場合、動作モジュール1130は、励起が時刻T1からT2の間に検出されるか、または時刻T1からT2以外の閾値内(例えば、時刻T1の前またはT2の後の閾値時刻内)に検出されるかを決定することができる。起動遅延が閾値時刻よりも大きい場合、動作モジュール1330は、センサ510が適切におよび/または許容可能な性能レベル内で動作していないと決定することができる。別の例では、動作モジュール1330は、センサ510の起動遅延がセンサの基準起動遅延の閾値内にあるか否かを決定することができる。基準起動遅延は、センサ510のデータ取得特性に基づくものであり得る。起動遅延が基準起動遅延の閾値内にある場合、センサ510は適切に動作することができ、逆もまた同様である。
一実施形態では、動作モジュール1330は、励起モジュール1320が励起発生器1350に励起を生成させる時刻、および動作モジュール1330がセンサ510からセンサデータを受信する時刻(例えば、第三時刻および/またはタイムスタンプ)に基づいて、センサ510の取得遅延を決定することにより、センサの動作を検証することができる。例えば、動作モジュール1330は、第二時刻と第三時刻との間の差に基づいて、取得遅延および取得遅延の間に励起が検出されるか否かを決定することができる。取得遅延が閾値時刻以下(例えば、閾値期間未満)である場合、動作モジュール1330は、センサ510が適切におよび/または許容可能な性能レベル内で動作していると決定することができる。取得遅延が閾値時刻よりも大きい場合、動作モジュール1330は、センサ510が適切におよび/または許容可能な性能レベル内で動作していないと決定することができる。別の例では、動作モジュール1330は、センサ510の取得遅延がセンサの基準取得遅延の閾値内にあるか否かを決定することができる。基準取得遅延は、センサ510のデータ取得特性に基づくものであり得る。取得遅延が基準取得遅延の閾値内にある場合、センサ510は適切に動作することができ、逆もまた同様である。
一実施形態では、励起モジュール1320は、取得遅延の間に励起がセンサ510によって検出されるか否かを決定することができる。取得遅延の閾値量の間(例えば、取得遅延の90%の間、取得遅延の85%の間、または他の適切な量の間)に励起が検出された場合、センサ510は適切に動作することができ、逆もまた同様である。
一実施形態では、動作モジュール1330は、第一時刻と第三時刻との間の差に基づいて、センサ510の動作を検証することができる。第一時刻と第三時刻との間の差は、センサ510がセンサデータを取得するのにかかる合計時刻を示すことができる。動作モジュール1330は、合計時刻が閾値以下であるか否かを決定することができる。合計時刻が閾値以下である場合、動作モジュール1330は、センサ510が適切に動作していると決定することができる。合計時刻が閾値よりも大きい場合、動作モジュール1330は、センサ510が適切に動作していないと決定することができる。
一実施形態では、動作モジュール1330は、センサ510から受信されたセンサデータが、励起発生器1350によって生成された励起(例えば、光、音声など)がセンサ510によって検出されたことを示しているか否かを決定することができる。例えば、励起モジュール1320は、ライトを一定期間オンにすることができる。動作モジュール1330は、センサ510(カメラであり得る)からのセンサデータが、センサ510が光を検出したことを示しているか否かを決定することができる。センサデータが、センサ510が励起を検出したことを示している場合、動作モジュール1330は、センサ510が適切に動作していると決定することができ、逆もまた同様である。
一実施形態では、タイミングモジュール1340は、タイミング信号を生成することができる。タイミング信号は、基準時刻を決定するためにセンサ510および励起発生器1350によって使用され得る。タイミング信号は、現在の時刻を示すことができ、および/または現在の時刻を決定するためにセンサ510および/または励起発生器1350によって使用され得る。これにより、検証システム1300のすべてのコンポーネント(例えば、センサ510、励起発生器1350、および検証モジュール1010)は、同じ基準時刻を使用して動作できる。
上記のように、ADVのセンサを同期させることは、ADVが、異なるセンサからの異なるセンサデータを互いに関連付けるか、またはより容易に互いに関連付けることを可能にし得る。これにより、ADVは、環境内の車両、オブジェクト、障害物、歩行者、車線などをより迅速に、効果的に、容易に、および/またはより正確に検出することができる。センサ510の動作を検証することは、ユーザが、センサ510が自動運転車両の他のセンサと適切に同期できるか否かを決定することを可能にし得る。検証モジュール1010は、検証システム1300が、センサ510が適切に動作しているか否かを検証することを可能にし得、これにより、センサ510は、自動運転車両の他のセンサと適切に同期され得る。センサ510が適切に動作していない場合、検証モジュール1010は、センサ510が適切に動作していないことを提供することができる。これにより、ユーザは、センサ510がいつ適切に動作していないかを把握し、センサ510を取り替えることができる。
図14は、一実施形態に係る、自動運転車両で使用されるセンサを検証するための例示的なプロセスを示すフローチャートである。プロセス1400は、ソフトウェア、ハードウェア、またはそれらの組み合わせを含み得る処理ロジックによって実行され得る。プロセス1400は、ハードウェア(例えば、回路、特定用途向けロジック、プログラマブルロジック、プロセッサ、処理デバイス、中央処理装置(CPU)、システムオンチップ(SoC)など)、ソフトウェア(例えば、処理デバイスで伝達/実行される命令)、ファームウェア(例えば、マイクロコード)またはそれらの組み合わせを含み得る処理ロジックによって実行され得る。いくつかの実施形態では、プロセス1400は、処理デバイス、検証モジュール(例えば、図10A、図10B、図11、および図13に示す検証モジュール1010)、検証モジュールの一部(例えば、図13に示す起動モジュール、励起モジュール、動作モジュール、および/またはタイミングモジュール)などによって実行され得る。
ブロック1405において、プロセス1400は、タイミング信号を生成することができる。例えば、プロセス1400は、現在の時刻を示す連続信号を生成することができる。ブロック1410において、プロセス1400は、タイミング信号をセンサおよび/または検出器に提供することができる。これにより、センサおよび/または検出器は、同じ現在の時刻を使用して動作できる。ブロック1415において、プロセス1400は、センサに第一時刻にセンサデータを取得させることができる。例えば、プロセス1400は、メッセージおよび/または信号をセンサに送信して、センサにセンサデータを取得させることができる。ブロック1420において、プロセス1400は、センサ検出のための励起を生成することができる。例えば、プロセス1400は、励起発生器に、センサによって検出され得る音声または光を生成させる。ブロック1425において、プロセス1400は、第三時刻にセンサからセンサデータを受信することができる。
ブロック1430において、プロセス1400は、第一時刻、第二時刻、および/または第三時刻のうちの1つまたは複数に基づいて、センサの動作を検証することができる。例えば、上記のように、プロセス1400は、センサの起動時刻が基準起動時刻の閾値内にあるか否かを決定することができる。別の例では、上記のように、プロセス1400は、センサの取得時刻が基準取得時刻の閾値内にあるか否かを決定することができる。
前述の詳細な説明の一部は、コンピュータメモリ内のデータビットに対する演算のアルゴリズムおよび記号表現に関して示される。これらのアルゴリズムの説明と表現は、データ処理分野の当業者が自分の作業の本質を他の当業者に最も効果的に伝えるために使用する手段である。本明細書では、アルゴリズムは一般に、所望の結果につながる自己矛盾のない一連の操作であると考えられている。これらの操作とは、物理量の物理的操作を必要とする操作を指す。
なお、これらの用語および同様の用語はすべて、適切な物理量に関連付けることを目的としており、これらの量に適用される便利なラベルにすぎない。上記の説明において他の方式で明示的に指摘されない限り、明細書全体を通して、用語(例えば、添付の特許請求の範囲に記載の用語)を使用した説明とは、コンピュータシステムのレジスタとメモリ内で物理(電子)量として示されるデータを制御し、前記データをコンピュータシステムのメモリまたはレジスタ、または他の情報記憶装置、送信または表示装置内で物理量として同様に示される他のデータに変換する、コンピュータシステムまたは同様の電子コンピューティングデバイスの動作および処理を指すことを理解されたい。
本開示の実施形態は、本明細書の操作を実行するためのデバイスにも関する。このコンピュータプログラムは、非一時的なコンピュータ可読媒体に記憶される。機械可読媒体は、機械(例えば、コンピュータ)によって読み取り可能な形態で情報を記憶するための任意のメカニズムを含む。例えば、機械可読(例えば、コンピュータ可読)媒体は、機械(例えば、コンピュータ)可読記憶媒体(例えば、読み取り専用メモリ(「ROM」)、ランダムアクセスメモリ(「RAM」)、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリデバイス)を含む。
前記図面に示されるプロセスまたは方法は、ハードウェア(例えば、回路、特定用途向けロジックなど)、ソフトウェア(例えば、非一時的なコンピュータ可読媒体で具体化されるもの)、または両方の組み合わせを含む処理ロジックによって実行され得る。前記プロセスまたは方法は、いくつかの連続操作に関して上記で説明されているが、前記操作の一部は、異なる順序で実行され得ることを理解されたい。また、いくつかの操作は、順次ではなく並列に実行され得る。
本開示の実施形態は、特定のプログラミング言語を参照して説明されていない。本明細書で説明される本開示の実施形態の教示を実施するために、様々なプログラミング言語が使用され得ることを理解されたい。
前述の明細書では、本開示の実施形態は、本開示の特定の例示的な実施形態を参照して説明されている。添付の特許請求の範囲に記載の本開示のより広い精神および範囲から逸脱することなく、本開示に様々な変更を加えることができることは明らかであろう。従って、本明細書および図面は、限定的な意味ではなく例示的な意味で理解されるべきである。
第三様態では、本開示の実施形態は、データ処理システムを提供する。このシステムは、少なくとも1つのプロセッサと、少なくとも1つのプロセッサによって実行されると第一様態の方法を少なくとも1つのプロセッサに実行させる命令を記憶するメモリと、を含む。
第4の態様において、コンピュータプログラムであって、プロセッサにより実行されると、第1の態様に記載の方法を実行させるコンピュータプログラムを提供する。