本発明の実施形態は、主に自動運転車両を動作させることに関する。より具体的には、本発明の実施形態は、自動運転車両のセンサを制御するためのセンサトリガロジックに関する。
自動運転モードで走行する(例えば、ドライバーレス)車両は、乗員、特に運転手をいくつかの運転に関する責務から解放することができる。車両は、自動運転モードで走行する時に、車載センサを利用して様々な位置までナビゲートすることができるので、最小限のヒューマンマシンインタラクションや、乗員がいないなどの状況で車両を走行させることが可能となる。
運動計画および制御は自動運転における重要な操作である。運動計画および制御の正確性と効率は、車両のセンサに大きく依存している。センサが異なれば、要件や仕様も異なる可能性がある。車両の周囲の走行環境を高精度に感知するために、センサは同期的かつ協調的に動作しなければならない。センサの動作を制御するための効率的なメカニズムが欠けている。
本発明の実施例は、図面のそれぞれにおいて限定的ではなく例示的な形態で示され、図面における類似の符号が類似の素子を示している。
一実施形態に係るネットワークシステムを示すブロック図である。
一実施形態に係る自動運転車両の一例を示すブロック図である。
一実施形態に係る自動運転車両と共に使用される感知・計画システムの一例を示すブロック図である。
一実施形態に係る自動運転車両と共に使用される感知・計画システムの一例を示すブロック図である。
一実施形態に係る自動運転システムのアーキテクチャを示すブロック図である。
本発明の一実施形態に係るセンサユニットの一例を示すブロック図である。
本発明の一実施形態に係るセンサユニットの一例を示すブロック図である。
一実施形態に係るセンサ制御モジュールの一例を示すブロック図である。
一実施形態に係るセンサトリガロジックの一例を示すブロック図である。
一実施形態に係る特定の信号を示す時間図である。
一実施形態に係るトリガ信号を生成するプロセスを示すフローチャートである。
一実施形態に係るデータ処理システムを示すブロック図である。
以下に説明される詳細を参照しながら本発明の様々な実施形態および態様を説明し、添付図面に上記の様々な実施形態を示す。以下の説明および図面は、本発明を説明するためのものであり、本発明を限定するものではないことを理解されたい。本発明の様々な実施形態を完全に把握するために、多数の特定の詳細を説明する。なお、いくつかの場合、本発明の実施形態に対する簡潔的な説明を提供するように、周知または従来技術の詳細について説明していない。
本明細書において、「一実施形態」または「実施形態」とは、当該実施形態を参照しながら説明した特定の特徴、構造または特性が本発明の少なくとも一実施形態に含まれてもよいことを意味する。「一実施形態では」という語句は、本明細書全体において同一の実施形態を指すとは限らない。
本発明の一態様によれば、自動運転車両(ADV)で利用されるセンサユニットは、ADVの複数の異なる位置に取り付けられた複数のセンサに接続可能なセンサインターフェースを備える。センサユニットは、車両を自律的に走行させるためのホストシステム(例えば、計画・制御システム)に接続可能なホストインターフェースをさらに備える。センサユニットは、それぞれがセンサのうちの1つに対応する複数のセンサ制御モジュールを更に備える。各センサ制御モジュールは、遅延時間制御ロジック、遅延調整ロジックおよびトリガ信号発生器を備える。遅延時間制御ロジックは、ホストインターフェースを介してホストシステムからパルス時間調整(PTA)値を受信するために用いられる。遅延調整ロジックは、ホストインターフェースを介してホストシステムからトリガ時間調整(TTA)値を受信するために用いられる。遅延調整ロジックは、PTA値およびTTA値に基づいてパルス発生器から受信したパルス信号におけるパルスの少なくとも一部のタイミングを修正するために用いられる。トリガ信号発生器は、修正済みパルス信号に基づいてトリガ信号を生成し、前記トリガ信号を対応するセンサに送信する。
一実施形態では、PTA値は、パルス信号の原パルスと原パルスの修正されたパルスとの間のオフセットを決定するために用いられる。TTA値は、パルス信号のどのパルスが修正されるべきか、どのパルスが変化しないままにするかを決定するために用いられる。一実施形態では、センサ制御モジュールのそれぞれは、ホストシステムから幅調整(WA)値を受信するための幅・極性調整(WPA)ロジックをさらに備える。トリガ信号発生器は、パルス信号におけるパルスの少なくとも一部のパルス幅を修正する。WPAロジックは、ホストシステムから極性調整(PA)値を受信するように構成され、トリガ信号発生器は、パルス信号におけるパルスの少なくとも一部の極性を修正する。
一実施形態では、センサは、トリガ信号のタイミングに基づいて異なる時点で画像または画像フレームを取り込むことができる1つまたは複数のカメラを含む。カメラに関連付けられたセンサ制御モジュールは、ホストシステムからフレームレート(FPS,frame per second)値を受信するためのFPS制御ロジックをさらに備え、FPS制御ロジックは、FPS値に基づいて1秒当たり複数のフレームを取り込むようにカメラを制御するために用いられる。フレーム落ちした画像フレームの変化を減らすためにさらにFPS値に基づいてパルス信号におけるパルスの少なくとも一部を修正する。他の実施形態によれば、各センサ制御モジュールは、トリガ信号およびFPS値に基づいて如何なる潜在的なフレーム落ちを検出し、潜在的なフレーム落ちに関するフィードバックをホストシステムに提供するためのエラー検出器をさらに備える。なお、各センサ制御モジュールは、対応するセンサに対して異なるPTA値、TTA値、FPS値、WA値および/またはPA値を受信することができる。センサは、異なる要件または仕様を有し得る、異なるセンサプロバイダによって提供される異なる種類のセンサまたは同じ種類のセンサであってもよい。
他の態様によれば、自動運転システムは、ホストシステムとADVの異なる位置に取り付けられる複数のセンサとを備える。ホストシステムは、感知モジュールと計画・制御モジュールとを備える。感知モジュールは、センサから取得されたセンサデータに基づいてADVの周囲の走行環境を感知するように構成される。計画・制御モジュールは、感知データに基づいてADVを自律的に走行させるための経路を計画する。自動運転システムは、センサおよびホストシステムに接続されるセンサユニットをさらに備える。センサユニットは、ADVの複数の異なる位置に取り付けられる複数のセンサに接続可能なセンサインターフェースを備える。センサユニットは、車両を自律的に走行させるためのホストシステム(例えば、計画・制御システム)に接続可能なホストインターフェースをさらに備える。センサユニットは、それぞれがセンサのうちの1つに対応する複数のセンサ制御モジュールを更に備える。各センサ制御モジュールは、遅延時間制御ロジック、遅延調整ロジック、およびトリガ信号発生器を備える。遅延時間制御ロジックは、ホストインターフェースを介してホストシステムからパルス時間調整(PTA)値を受信するために用いられる。遅延調整ロジックは、ホストインターフェースを介してホストシステムからトリガ時間調整(TTA)値を受信するために用いられる。遅延調整ロジックは、PTA値およびTTA値に基づいてパルス発生器から受信したパルス信号におけるパルスの少なくとも一部のタイミングを修正するために用いられる。トリガ信号発生器は、修正済みパルス信号に基づいてトリガ信号を生成し、前記トリガ信号を対応するセンサに送信する。センサ制御モジュールは、上述のような特徴をさらに含むことができる。
図1は、本発明の一実施形態に係る自動運転車両のネットワーク構成を示すブロック図である。図1に示すように、ネットワーク構成100には、ネットワーク102を介して1つまたは複数のサーバ103〜104に通信可能に接続される自動運転車両101が備えられる。一台の自動運転車両が示されたが、複数の自動運転車両がネットワーク102を介して互いに接続され、および/またはサーバ103〜104に接続されてもよい。ネットワーク102は、任意のタイプのネットワークであってもよく、例えば、有線または無線のローカルエリアネットワーク(LAN)、インターネットなどのワイドエリアネットワーク(WAN)、セルラーネットワーク、衛星ネットワーク、またはそれらの組み合わせが挙げられる。サーバ103〜104は、任意のタイプのサーバまたはサーバクラスタであってもよく、例えば、ネットワークまたはクラウドサーバ、アプリケーションサーバ、バックエンドサーバ、またはそれらの組み合わせが挙げられる。サーバ103〜104は、データ解析サーバ、コンテンツサーバ、交通情報サーバ、地図・関心地点(MPOI)サーバまたは位置サーバなどであってもよい。
自動運転車両とは、運転手からの入力が非常に少ないまたはない場合に車両をナビゲートして環境を通過させる自動運転モードに配置可能な車両である。このような自動運転車両は、車両の走行環境に関する情報を検出するように配置される1つまたは複数のセンサを備えるセンサシステムを含んでもよい。前記車両およびその関連コントローラは、検出された情報を使用して前記環境を通過するようにナビゲートする。自動運転車両101は、手動モード、完全自動運転モード、または部分自動運転モードで走行することができる。
一実施形態では、自動運転車両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は、如何なるセルラー通信ネットワークまたは無線ローカルエリアネットワーク(WLAN)、例えばWiFiを使用して他の構成要素またはシステムと通信することができる。無線通信システム112は、例えば赤外線リンク、ブルートゥースなどを使用して、装置(例えば、乗員のモバイルデバイス、表示装置、車両101内のスピーカ)と直接通信することができる。ユーザインターフェースシステム113は、車両101内に実現された周辺装置の部分(例えば、キーボード、タッチスクリーン表示装置、マイクロホンおよびスピーカなどを含む)であってもよい。
自動運転車両101の機能のうちの一部または全部は、特に自動運転モードで動作する場合に、感知・計画システム110により制御されるか、または管理されることができる。感知・計画システム110は、センサシステム115、制御システム111、無線通信システム112および/またはユーザインターフェースシステム113から情報を受信し、受信された情報を処理し、出発地から目的地までのルートまたは経路を計画した後に、計画および制御情報に基づいて車両101を運転するために、必要なハードウェア(例えば、プロセッサ、メモリ、記憶デバイス)並びにソフトウェア(例えば、オペレーティングシステム、計画およびルーティングプログラム)を含む。あるいは、感知・計画システム110は車両制御システム111と一体に集積されてもよい。
例えば、乗員であるユーザは、例えばユーザインターフェースを介して旅程の出発地位置および目的地を指定することができる。感知・計画システム110は旅程に関連するデータを取得する。例えば、感知・計画システム110は、MPOIサーバから位置・ルート情報を取得することができる。前記MPOIサーバは、サーバ103〜104の一部であってもよい。位置サーバは位置サービスを提供し、MPOIサーバは地図サービスおよび特定位置のPOIを提供する。あるいは、このような位置およびMPOI情報は、感知・計画システム110の永続性記憶装置にローカルキャッシュされてもよい。
自動運転車両101がルートに沿って移動している場合に、感知・計画システム110は交通情報システムまたはサーバ(TIS)からリアルタイム交通情報を取得することもできる。なお、サーバ103〜104は第三者機関により動作可能である。あるいは、サーバ103〜104の機能は、感知・計画システム110と一体に集積されてもよい。感知・計画システム110は、リアルタイム交通情報、MPOI情報および位置情報、並びにセンサシステム115により検出または感知されたリアルタイムローカル環境データ(例えば、障害物、オブジェクト、付近の車両)に基づいて、所定の目的地まで安全的且つ効率的に到達するために、最適なルートを計画し、且つ計画されたルートに従って例えば制御システム111を介して車両101を運転することができる。
サーバ103は、様々なクライアントに対してデータ解析サービスを実行するデータ解析システムであってもよい。一実施形態では、データ解析システム103は、データコレクタ121と、機械学習エンジン122とを含む。データコレクタ121は、様々な車両(自動運転車両または人間の運転手によって運転される一般車両)から運転統計データ123を収集する。運転統計データ123には、異なる時点で発された運転コマンド(例えば、スロットルコマンド、ブレーキコマンドおよびステアリングコマンド)と、車両のセンサにより捕捉された車両の応答(例えば、速度、加速度、減速度、方向)とを示す情報が含まれる。運転統計データ123は更に、異なる時点における走行環境を記述する情報、例えば、ルート(出発地位置および目的地位置を含む)、MPOI、道路状況、天気状況などを含んでもよい。
機械学習エンジン122は、運転統計データ123に基づいて、様々な目的に応じてルール、アルゴリズムおよび/または予測モデル124の集合を生成するかまたは訓練する。一実施形態では、アルゴリズム124は、以下でさらに詳細に説明する感知、予測、決定、計画および/または制御プロセスのためのルールまたはアルゴリズムを含むことができる。アルゴリズム124を自動運転中にリアルタイムで利用するためにADVにアップロードすることができる。
図3Aおよび図3Bは、一実施形態に係る自動運転車両と共に使用される感知・計画システムの一例を示すブロック図である。システム300は、図1の自動運転車両101の一部として実現されてもよく、感知・計画システム110、制御システム111およびセンサシステム115を含むが、それらに限定されない。図3Aおよび図3Bに示すように、感知・計画システム110は、測位モジュール301、感知モジュール302、予測モジュール303、決定モジュール304、計画モジュール305、制御モジュール306およびルーティングモジュール307を含むが、それらに限定されない。
モジュール301〜307のうちの一部または全部は、ソフトウェア、ハードウェアまたはそれらの組み合わせで実現されていてもよい。例えば、これらのモジュールは、永続性記憶装置352にインストールされ、メモリ351にロードされ、且つ1つまたは複数のプロセッサ(図示せず)により実行されてもよい。なお、これらのモジュールのうちの一部または全部は、図2の車両制御システム111の一部または全部のモジュールに通信可能に接続されるか、またはそれらと一体に統合されてもよい。モジュール301〜307のうちの一部は、集積モジュールとして一体に統合されてもよい。
測位モジュール301は、自動運転車両300の現在位置を(例えば、GPSユニット212により)決定し、ユーザの旅程またはルートに関する如何なるデータを管理する。測位モジュール301(地図・ルートモジュールともいう)は、ユーザの旅程またはルートに関連する如何なるデータを管理する。ユーザは、例えばユーザインターフェースを経由してログインして旅程の出発地位置および目的地を指定することができる。測位モジュール301は、自動運転車両300における地図・ルート情報311のような他の構成要素と通信して旅程に関するデータを取得する。例えば、測位モジュール301は、位置サーバ並びに地図・POI(MPOI)サーバから位置およびルート情報を取得することができる。位置サーバは位置サービスを提供し、MPOIサーバは地図サービスおよび特定位置のPOIを提供することにより、地図・ルート情報311の一部としてキャッシュされることができる。自動運転車両300がルートに沿って移動する際に、測位モジュール301は交通情報システムまたはサーバからリアルタイム交通情報を取得することもできる。
感知モジュール302は、センサシステム115により提供されたセンサデータと、測位モジュール301により取得された測位情報とに基づいて、周辺の環境への感知を確定する。感知情報は、一般の運転手が運転手により運転されている車両の周辺における感知すべきものを示すことができる。感知とは、車線配置、信号機信号、例えばオブジェクトの形式で、他の車両、歩行者、建築物、横断歩道または他の交通関連標識(例えば、止まれ標識、ゆずれ標識)の相対位置などを含むことができる。車線配置は、例えば、車線の形状(例えば、直進車線またはカーブ車線)、車線の幅、道路内の車線数、一方向車線または二方向車線、合流車線または分流車線、退出車線など、1つまたは複数の車線を記述する情報を含む。
感知モジュール302は、1つまたは複数のカメラにより取り込まれた画像を処理し解析して自動運転車両の環境におけるオブジェクトおよび/または特徴を認識するために、コンピュータビジョンシステムまたはコンピュータビジョンシステムの機能を含むことができる。前記オブジェクトは、交通信号、道路の境界、他の車両、歩行者および/または障害物などを含むことができる。コンピュータビジョンシステムは、オブジェクト認識アルゴリズム、ビデオトラッキングおよび他のコンピュータビジョン技術を使用することができる。いくつかの実施形態では、コンピュータビジョンシステムは、環境地図の描画、オブジェクトの追跡、およびオブジェクトの速度の推定などができる。感知モジュール302は、レーダおよび/またはLIDARのような他のセンサにより提供される他のセンサデータに基づいてオブジェクトを検出することもできる。
各オブジェクトについて、予測モジュール303は、その場合に当該オブジェクトがどのように挙動するかを予測する。予測は、地図・ルート情報311および運転/交通ルール312の集合を考慮してその時点での走行環境を感知する感知データに基づいて実行される。例えば、オブジェクトが反対方向の車両であり、且つ現在の走行環境には交差点が含まれる場合、予測モジュール303は、当該車両が直線するか、または旋回するかを予測する。交差点に信号機がないと感知データにより示された場合に、予測モジュール303は、該車両が交差点に入る前に完全に停車する必要があると予測することが可能である。該車両が現在左折専用車線または右折専用車線にあると感知データにより示された場合に、予測モジュール303は、該車両がそれぞれ左折または右折する可能性が高いと予測可能である。
オブジェクトごとに対して、決定モジュール304はオブジェクトをどのように処置するかを判定する。例えば、特定のオブジェクト(例えば、交差のルートにおける他の車両)およびオブジェクトを記述するメタデータ(例えば、速度、方向、操舵角)について、決定モジュール304は前記オブジェクトと遇うときに如何に対応するか(例えば、追い越し、道譲り、停止、追い抜き)を決定する。決定モジュール304は、交通ルールまたは運転ルール312のような、永続性記憶装置352に格納可能なルールセットに基づいて、このような決定を下すことができる。
ルーティングモジュール307は、出発地から目的地までの1つまたは複数のルートまたは経路を提供するように構成される。例えばユーザから受信した出発地から目的地までの所定の旅程について、ルーティングモジュール307は地図・ルート情報311を取得し、出発地から目的地までの全ての走行可能なルートまたは経路を特定する。ルーティングモジュール307は、出発地から目的地までの特定された各ルートに対して、地形図の形式で基準線を生成することができる。基準線とは、他の車両、障害物または交通状況などから、他の干渉を受けていない理想的なルートまたは経路を指す。言い換えると、道路に他の車両、歩行者または障害物がない場合、ADVは基準線に完全的にまたは密接的に従うべきである。そして、地形図を決定モジュール304および/または計画モジュール305に提供する。決定モジュール304および/または計画モジュール305は、他のモジュールにより提供された他のデータ(例えば測位モジュール301からの交通状况、感知モジュール302により感知された走行環境および予測モジュール303により予測された交通状况)に応じて、全ての走行可能なルートを検査して最適なルートのうちの一つを選択および補正する。該時点における特定の走行環境に応じて、ADVを制御するための実際の経路またはルートは、ルーティングモジュール307によって提供される基準線に近いかまたは異なっていてもよい。
感知されたオブジェクトのそれぞれに対する決定に基づいて、計画モジュール305は、ルーティングモジュール307によって提供された基準線をベースとし、自動運転車両に対して経路またはルート並びに運転パラメータ(例えば、距離、速度および/または操舵角)を計画する。言い換えれば、特定のオブジェクトについて、決定モジュール304は該オブジェクトに対して何をするかを決定し、計画モジュール305はどのようにするかを決定する。例えば、所定のオブジェクトについて、決定モジュール304は、前記オブジェクトを追い抜くかを決定することができ、計画モジュール305は前記オブジェクトを左側から追い抜くかまたは右側から追い抜くかを判定することができる。計画および制御データは、計画モジュール305により生成され、車両300が次の移動周期(例えば、次のルート/経路セグメント)にはどのように移動するかを記述する情報を含む。例えば、計画および制御データは、車両300が30マイル/時間(mph)の速度で10メートル移動し、その後に25mphの速度で右側の車線に変更するように指示することができる。
制御モジュール306は、計画および制御データに基づいて、計画および制御データにより限定されたルートまたは経路に応じて適当なコマンド若しくは信号を車両制御システム111に送信することにより自動運転車両を制御および走行させる。前記計画および制御データは、経路またはルートに沿って異なる時点で適切な車両配置または運転パラメータ(例えば、スロットルコマンド、ブレーキコマンド、およびステアリングコマンド)を使用して、車両をルートまたは経路の第1の点から第2の点まで走行させるのに十分な情報を含む。
一実施形態では、計画段階は、複数の計画周期(運転周期とも言われ、例えば、100ミリ秒(ms)の時間間隔ごと)で実行される。計画周期または運転周期のそれぞれについて、計画および制御データに基づいて1つまたは複数の制御コマンドを発する。言い換えると、100msごとに、計画モジュール305は、次のルート区間または経路区間(例えば、目標位置およびADVが目標位置に到着するのに必要な時間が含まれる)を計画する。あるいは、計画モジュール305は、特定の速度、方向、および/または操舵角などを更に指定することができる。一実施形態では、計画モジュール305は、次の予定時間帯、例えば5秒のルート区間または経路区間を計画する。各計画周期について、計画モジュール305は前の周期において計画された目標位置に基づいて現在の周期(例えば、次の5秒)における目標位置を計画する。そして、制御モジュール306は、現在の周期における計画および制御データに基づいて1つまたは複数の制御コマンド(例えば、スロットル制御コマンド、ブレーキ制御コマンド、ステアリング制御コマンド)を生成する。
なお、決定モジュール304および計画モジュール305は、集積モジュールとして一体化されてもよい。決定モジュール304/計画モジュール305は、自動運転車両の走行経路を決定するために、ナビゲーションシステムまたはナビゲーションシステムの機能を具備することができる。例えば、ナビゲーションシステムは、自動運転車両が下記の経路に沿って移動することに影響を与えるための一連の速度および進行方向を決定することができる。前記経路では、自動運転車両が最終的な目的地に通じる走行車線に基づく経路に沿って進行すると共に、感知された障害物を実質的に回避できる。目的地は、ユーザインターフェースシステム113を経由して行われたユーザ入力によって設定されることができる。ナビゲーションシステムは、自動運転車両が走行していると同時に走行経路を動的に更新することができる。ナビゲーションシステムは、自動運転車両のための走行経路を決定するために、GPSシステムおよび1つまたは複数の地図からのデータを取り入れることができる。
図4は、一実施形態に係る自動運転のためのシステムアーキテクチャを示すブロック図である。システムアーキテクチャ400は、図3Aおよび図3Bに示すような自動運転システムのシステムアーキテクチャを表すことができる。図4を参照すると、システムアーキテクチャ400は、アプリケーション層401、計画・制御(PNC)層402、感知層403、ドライバ層404、ファームウェア層405、およびハードウェア層406を含むが、それらに限定されない。アプリケーション層401は、例えばユーザインターフェースシステム113に関連する機能のような、ユーザまたは自動運転車両の乗員と対話するユーザインターフェースまたは構成アプリケーションを含むことができる。PNC層402は、少なくとも計画モジュール305および制御モジュール306の機能を含むことができる。感知層403は、少なくとも感知モジュール302の機能を含むことができる。一実施形態では、予測モジュール303および/または決定モジュール304の機能を含む追加の層がある。あるいは、そのような機能は、PNC層402および/または感知層403に含まれてもよい。システムアーキテクチャ400は、ドライバ層404、ファームウェア層405、およびハードウェア層406をさらに含む。ファームウェア層405は、少なくともフィールドプログラマブルゲートアレイ(FPGA)の形態で実施可能なセンサシステム115の機能を表すことができる。ハードウェア層406は、制御システム111のような自動運転車両のハードウェアを表すことができる。層401〜層403は、デバイスドライバ層404を介してファームウェア層405およびハードウェア層406と通信することができる。
図5Aは、本発明の一実施形態に係るセンサシステムの一例を示すブロック図である。図5Aを参照すると、センサシステム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(周辺構成要素相互接続またはPCIエクスプレス)インターフェースのような任意の高速または高帯域幅インターフェースであってもよい。センサ510は、自動運転車両で利用される様々なセンサを含むことができ、例えば、カメラ、LIDARデバイス、レーダーデバイス、GPS受信機、IMU、超音波センサ、GNSS(全地球航法衛星システム)受信機、LTEまたはセルラーSIMカード、車両センサ(例えば、スロットルセンサ、ブレーキセンサ、ステアリングセンサ)およびシステムセンサ(例えば、温度センサ、湿度センサ、圧力センサ)などが挙げられる。
例えば、カメラは、イーサネットまたはGPIOインターフェースを介して接続されることができる。GPSセンサは、USBまたは特定のGPSインターフェースを介して接続されることができる。車両センサはCANインターフェースを介して接続されることができる。レーダーセンサまたは超音波センサは、GPIOインターフェースを介して接続されることができる。LIDARデバイスは、イーサネットインターフェースを介して接続されることができる。外部のSIMモジュールはLTEインターフェースを介して接続されることができる。同様に、内部SIMモジュールは、センサユニット500のSIMソケットに挿入可能である。UARTなどのシリアルインターフェースは、デバッグ目的でコンソールシステムと接続されることができる。
なお、センサ510は、様々な販売業者または供給業者によって提供される任意の種類のセンサとすることができる。センサ処理モジュール501は、異なる種類のセンサ並びにそれらの対応するデータフォーマットおよび通信プロトコルを処理するように構成される。一実施形態によれば、各センサ510は、センサデータを処理してホストシステム110と対応するセンサとの間で処理されたセンサデータを転送するために、特定のチャネルに関連付けられている。各チャネルは、図5Bに示すように、対応するセンサデータおよびプロトコルを処理するように構成またはプログラムされた特定のセンサ処理モジュールおよび特定のデータ転送モジュールを備える。
次に図5Bを参照すると、センサ処理モジュール501A〜501Cは特に、センサ510A〜510Cから得られたセンサデータを処理するように構成されている。なお、センサ510A〜510Cは、同じタイプまたは異なるタイプのセンサであってもよい。センサ処理モジュール501A〜501Cは、異なるタイプのセンサに対して異なるセンサプロセスを処理するように構成されることができる(例えば、ソフトウェアで構成可能である)。例えば、センサ510Aがカメラである場合、センサ処理モジュール501Aは、カメラ510Aによってキャプチャされた画像を表す特定の画素データに対して画素処理動作を行うように設計されてもよい。同様に、センサ510AがLIDARデバイスである場合、センサ処理モジュール501Aは、特にLIDARデータを処理するように構成される。言い換えると、一実施形態によれば、特定のセンサの特定のタイプに応じて、その対応する処理モジュールは、センサデータのタイプに対応する特定のプロセスまたは方法を使用して対応するセンサデータを処理するように構成されることができる。
同様に、データ転送モジュール502A〜502Cは、異なる種類のセンサデータが、異なる速度またはタイミング要件を必要とする異なるサイズまたは感度であり得るので、異なるモードで動作するように構成されることができる。一実施形態によれば、データ転送モジュール502A〜502Cのそれぞれは、低遅延モード、高帯域幅モード、およびメモリモード(固定メモリモードともいう)のうちの1つのモードで動作するように構成されることができる。
一実施形態によれば、低遅延モードで動作しているとき、データ転送モジュール(例えば、データ転送モジュール502)は、センサから受信したセンサデータを遅延伴わずにまたは最小遅延で可能な限り早くホストシステムに送信するように構成される。センサデータの一部は、タイミングに関して非常に敏感であり、できるだけ早く処理する必要がある。そのようなセンサデータの例としては、車速、加速度、操舵角などのような車両状態を含む。
一実施形態によれば、高帯域幅モードで動作しているとき、データ転送モジュール(例えば、データ転送モジュール502)は、センサから受信したセンサデータを所定の量まで累積するように構成されるが、依然としてデータ転送モジュールとホストシステム110との間の接続の帯域幅内にある。 次いで、累積されたセンサデータは、データ転送モジュールとホストシステム110との間の接続の帯域幅を最大にするバッチでホストシステム110に転送される。通常、高帯域幅モードは、大量のセンサデータを生成するセンサに利用される。そのようなセンサデータの例としては、カメラの画素データが挙げられる。
一実施形態によれば、メモリモードで動作するとき、データ転送モジュールは、センサから受信したセンサデータをホストシステム110の共有メモリページと同様なマップメモリのメモリ位置に直接書き込むように構成される。メモリモードを使用して転送されるセンサデータの例には、温度、ファン速度などのシステム状態データが含まれる。
一実施形態によれば、センサ510A〜510Cのそれぞれは、センサ制御モジュール503A〜503Cなどのような対応するセンサ制御モジュールと関連付けられている。あるいは、センサ制御モジュール503A〜503Cのうちの少なくともいくつかは、センサ510A〜510Cのうちの少なくともいくつかによって共有される統合センサ制御モジュールと一体に統合されてもよい。センサ制御モジュール503A〜503Cのそれぞれは、ホストシステム110および対応するセンサと通信するように構成されている。ホストシステム110から受信したコマンドに応答して、センサ制御モジュールは、対応するセンサの動作の少なくとも一部を制御することに利用可能である。
一実施形態では、各センサ制御モジュールは、対応するセンサの特定の動作を制御するための制御信号を生成するように構成される。例えば、ホストシステム110の感知モジュールまたは計画モジュールは、車両の周囲の走行環境を確定し感知することの一部として、特定のカメラに特定の時間に画像をキャプチャするよう要求することができる。ホストシステムは、ホストインターフェース505を介して、該カメラに関連付けられたセンサ制御モジュールにコマンドを送信して、該カメラにその特定の時間に画像をキャプチャするよう要求することができる。該要求はさらに、該カメラが画像をどのくらいの頻度でキャプチャすべきかを指定する情報(例えば、毎秒のフレーム数)および他のタイミング情報(例えば、遅延オフセット、パルス幅および極性など)を含むことができる。該要求に基づいて、センサ制御モジュールは適切な制御信号を生成し、センサインターフェース504を介して該制御信号をセンサに送信するように構成される。
なお、自動運転では、環境内をナビゲートして如何なる衝突を回避するために、走行環境の認識ができるだけ明確で正確であることが求められる。その結果、ホストシステムは、異なるセンサを異なるタイミングおよび方式で動作するように協調的に制御することを望む可能性がある。例えば、前方に取り付けられたカメラは、車両の後方または側方に取り付けられたカメラとは異なるタイミングで動作することができる。特定のセンサ制御モジュールを利用することによって、ホストシステム110は、車両の周囲の走行環境をより良くより正確に感知することができる。
図6は、他の実施形態に係るセンサユニットの一例を示すブロック図である。図6を参照すると、各センサ制御モジュール503A〜503Cは、センサ510A〜510Cのうちの1つと関連付けられており、センサ510A〜510Cは、同じタイプのセンサ、異なるタイプのセンサ、または異なる製造業者によって提供された同じタイプのセンサであってもよい。従って、いくつかのセンサは、異なる特徴、要件または仕様を有することが可能である。センサ制御モジュール503A〜503Cのそれぞれは、構成レジスタなどのような記憶装置に格納されるセンサトリガロジック(例えば、センサトリガロジック601A〜601C)およびトリガ構成(例えば、トリガ構成602A〜602C)を備える。
一実施形態によれば、センサトリガロジック601A〜601Cのそれぞれは、対応するトリガ構成情報(例えば、トリガ構成情報602A〜602C)に基づいてセンサトリガ信号を生成するように構成される。トリガ信号は、特定の時間に画像をキャプチャするなどの特定の動作を実行するように該センサをトリガまたは起動するために、対応するセンサに対して特別に生成される。対応するセンサに対して特別に生成されているトリガ構成情報は、ホストシステム110から受信されてもよい。トリガ構成情報は、センサの取り付け位置および/またはその時点での特定の走行環境に応じて、センサごとに異なり得る。
図7は、一実施形態に係るセンサトリガロジックの一例を示すブロック図である。センサトリガロジック700は、センサトリガロジック601A〜601Cのいずれかを表すことができる。図7を参照すると、センサトリガロジック700は、遅延時間制御ロジック701、遅延調整制御ロジック702、およびトリガ信号発生器703を含むが、それらに限定されない。遅延時間制御ロジック701は、ホストシステム110からパルス時間調整(PTA)値を受信する。遅延調整制御ロジック702は、ホストシステム110からトリガ時間調整(TTA)値を受信する。遅延調整制御ロジック702は、PTA値およびTTA値に基づいてパルス源710から受信されたパルス信号を調整および修正するように構成される。パルス源710は、局部発振器または外部源からクロック信号(例えばGPS信号)を導出する回路であってもよい。
一実施形態では、遅延調整制御ロジック702は、例えば、PTA値に基づいてパルスの立ち上がりエッジおよび/または立ち下がりエッジを原パルスから遅延させることによって、パルス信号のパルスのタイミングを修正する。また、遅延調整制御ロジック702は、調整済みパルスがいつ有効になるかを指定するためにTTA値に基づいてパルス信号をさらに修正する。言い換えると、PTA値は、原パルスと新しいパルスまたは修正されたパルスとの間の遅延またはオフセットを特定するために利用される。TTA値は、原パルスに対する第1の調整済みパルスの開始時間を特定するために利用される。その後、後続のパルスは、PTA値によって指定されたオフセット分(例えば、2つの原パルス間の原時間+PTA時間)ずれる。
ここで図7および図8を参照すると、パルス信号801は、パルス源710から受信した原パルス信号である。PTA値が遅延時間制御ロジック701によって受信されると、遅延調整制御ロジック702は、PTA値に基づいて各パルスを遅延させることによってパルス信号801を調整し修正する。この例では、原パルス信号801のパルスは、PTA値(例えば、4ナノ秒または4ns)に基づいて修正されて修正済みパルス信号802となる。信号802に示すように、各パルスはその原パルスからPTA値分遅延している。TTA値は、調整済みパルス信号802を対応するセンサにいつ印加送信すべきかを決定するために利用される。TTA値がゼロであれば、それはパルス信号802が直ちに印加されるべきであることを意味する。TTA値がゼロよりも大きい(この例では、信号803として示されるように2nsである)場合、パルス信号802は、TTA値によって示される時間遅延で印加されるべきである。パルス信号803では、各パルスは、PTAおよびTTA値(例えば、PTA+TTA、この例では2+4=6nsである)に基づいて遅延される。次に、パルス信号はトリガ信号発生器703に供給される。新しいPTAおよび/またはTTA値がホストシステムから受信されるまで、信号803がセンサに繰り返し送信され、それと同時に該信号は新しいPTA/TTA値に基づいて再調整されることになる。
一実施形態によれば、センサトリガロジック700は、ホストシステム110からFPS値を受信してセンサ510によって生成されたセンサデータのフレームレートを制御するためのFPS制御ロジック704をさらに含む。FPS値に基づいて、トリガ信号発生器703は、パルスの周波数がFPS制御ロジック704によって指定されたフレームレートと一致することを確実にするためにパルス信号を調整するために用いられる。他の実施形態によれば、センサトリガロジック700は、幅調整(WA)値および極性調整(PA)値をホストシステム110から受信するための幅・極性調整ロジック705をさらに含む。トリガ信号発生器703は、WA値に基づいて調整済みパルス信号のパルス幅を調整するように構成される。 トリガ信号発生器703はさらに、PA値に基づいてパルスの極性を調整するように構成される。
さらなる実施形態によれば、センサトリガロジック700は、FPS値に基づいて、修正済みパルス信号によるエラーがあるか否かを検出するためのエラー検出器706をさらに備える。例えば、エラー検出器706はFPS値に基づいて、修正済みパルス信号を検査してフレーム落ちの可能性があるか否かを判断する。エラー検出器706はフィードバックをホストシステム110に送信する。応答として、ホストシステム110は、それに応じて後続のPTAおよび/またはTTA値を修正することができる。
なお、遅延時間制御ロジック701、遅延調整制御ロジック702、トリガ信号発生器703、FPS制御ロジック704、および/または幅・極性調整ロジック705は、単一のロジックまたはより少ない数のロジックに統合されてもよい。PTA値、TTA値、FPS値、WA値、およびPA値は、1つまたは複数の構成レジスタに格納することができる。
図9は、一実施形態に係る自動運転車両のセンサをトリガするためのパルス信号を調整するプロセスを示すフローチャートである。プロセス900は、処理ロジックにより実行可能であり、処理ロジックはソフトウェア、ハードウェア、またはそれらの組み合わせを含んでもよい。例えば、プロセス900は、センサトリガロジック700のような、上述のセンサトリガロジックのいずれによって実行することができる。図9を参照すると、動作901において、センサユニットの処理ロジックはホストインターフェースを介してホストシステムからPTA値を受信する。ホストシステムは、車両を自律的に走行させるように構成された特定のモジュール(例えば、感知モジュール、計画モジュールおよび制御モジュール)を備える。動作902において、処理ロジックはホストシステムからTTA値を受信する。動作903において、処理ロジックは、パルス源から受信したパルス信号のパルスの少なくとも一部のタイミングを修正する。動作904において、修正済みパルス信号に基づいてトリガ信号を生成する。動作905において、対応するセンサにトリガ信号を送信し、それに応じて該センサを制御し動作させる。
なお、以上に例示および説明された構成要素の一部または全ては、ソフトウェア、ハードウェア、またはそれらの組み合わせで実現されることができる。例えば、このような構成要素は、永続性記憶装置にインストールされるとともに格納されるソフトウェアとして実現されてもよく、前記ソフトウェアは、本発明にわたって記載されたプロセスまたは動作を実施するように、プロセッサ(図示せず)でメモリにロードして実行されてもよい。あるいは、このような構成要素は、集積回路(例えば、特定用途向け集積回路またはASIC)、デジタルシグナルプロセッサ(DSP)、またはフィールドプログラマブルゲートアレイ(FPGA)のような専用ハードウェアにプログラミングされたかまたは埋め込まれた実行可能なコードとして実現されてもよく、前記実行可能なコードはアプリケーションからの対応するドライバおよび/またはオペレーティングシステムを介してアクセスすることができる。更に、このような構成要素は、ソフトウェア構成要素が1つまたは複数の特定の命令によってアクセス可能な命令セットの一部として、プロセッサまたはプロセッサコアにおける特定のハードウェアロジックとして実現されることができる。
図10は、本発明の一実施形態と組み合わせて使用可能なデータ処理システムの一例を示すブロック図である。例えば、システム1500は、図1の感知・計画システム110、またはサーバ103〜104のいずれかのような、上述した前記プロセスまたは方法のいずれかを実行するデータ処理システムのいずれかを表すことができる。システム1500は、いくつかの異なる構成要素を含んでもよい。これらの構成要素は、集積回路(IC)、集積回路の一部、ディスクリート型電子デバイス、または回路基板(例えば、コンピュータシステムのマザーボードまたはアドインカード)に適するその他のモジュールとして実現されることができ、または、他の形態でコンピュータシステムのシャーシ内に組み込まれた構成要素として実現されることができる。
なお、システム1500は、コンピュータシステムのいくつかの構成要素の高レベルビューを示すことを意図している。しかしながら、理解すべきなのは、いくつかの実施例において付加的構成要素が存在してもよく、また、その他の実施例において示された構成要素を異なる構成にすることが可能である。システム1500は、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、サーバ、携帯電話、メディアプレーヤ、パーソナルデジタルアシスタント(PDA)、スマートウォッチ、パーソナルコミュニケーター、ゲーム装置、ネットワークルーターまたはハブ、無線アクセスポイント(AP)またはリピーター、セット・トップボックス、またはそれらの組み合わせを表すことができる。また、単一の機械またはシステムのみが示されたが、「機械」または「システム」という用語は、本明細書で説明されるいずれか1つまたは複数の方法を実行するための、単独でまたは共同で1つ(または複数)の命令セットを実行する機械またはシステムの任意の組み合わせも含まれることを理解されたい。
一実施形態では、システム1500は、バスまたはインターコネクト1510を介して接続される、プロセッサ1501と、メモリ1503と、装置1505〜1508とを含む。プロセッサ1501は、単一のプロセッサコアまたは複数のプロセッサコアが含まれる単一のプロセッサまたは複数のプロセッサを表すことが可能である。プロセッサ1501は、マイクロプロセッサ、中央処理装置(CPU)などのような、1つまたは複数の汎用プロセッサを表すことができる。より具体的には、プロセッサ1501は、複雑命令セットコンピューティング(CISC)マイクロプロセッサ、縮小命令セットコンピューティング(RISC)マイクロプロセッサ、超長命令語(VLIW)マイクロプロセッサ、またはその他の命令セットを実行するプロセッサ、または命令セットの組み合わせを実行するプロセッサであってもよい。プロセッサ1501は更に、例えば、特定用途向け集積回路(ASIC)、セルラー若しくはベースバンドプロセッサ、フィールドプログラマブルゲートアレイ(FPGA)、デジタルシグナルプロセッサ(DSP)、ネットワークプロセッサ、グラフィックプロセッサ、通信プロセッサ、暗号化プロセッサ、コプロセッサ、組込みプロセッサ、または命令を処理可能な任意の他のタイプのロジックのような、1つまたは複数の専用プロセッサであってもよい。
プロセッサ1501は、超低電圧プロセッサのような低電力マルチコアプロセッサソケットであってもよく、前記システムの様々な構成要素と通信するための主処理ユニットおよび中央ハブとして機能することができる。このようなプロセッサは、システムオンチップ(SoC)として実装されてもよい。プロセッサ1501は、本明細書で説明される動作およびステップを実行するための命令を実行するように構成される。システム1500は、更に任意選択グラフィックサブシステム1504と通信するグラフィックインターフェースを含むことができ、グラフィックサブシステム1504は、表示コントローラ、グラフィックプロセッサ、および/または表示装置を含むことができる。
プロセッサ1501は、メモリ1503と通信することができ、メモリ1503は、一実施形態では、所定量のシステムメモリを提供するための複数のメモリ装置によって実現されることができる。メモリ1503は、例えば、ランダムアクセスメモリ(RAM)、ダイナミックRAM(DRAM)、シンクロナスDRAM(SDRAM)、スタティックRAM(SRAM)、またはその他のタイプの記憶装置のような、1つまたは複数の揮発性記憶(またはメモリ)装置を含むことができる。メモリ1503は、プロセッサ1501またはその他の任意の装置により実行される命令シーケンスを含む情報を格納することができる。例えば、様々なオペレーティングシステム、デバイスドライバ、ファームウェア(例えば、ベーシックインプット/アウトプットシステムまたはBIOS)、および/またはアプリケーションの実行可能なコードおよび/またはデータは、メモリ1503にロードされ、プロセッサ1501により実行されることができる。オペレーティングシステムは、例えば、ロボットオペレーティングシステム(ROS)、Microsoft(登録商標)社のWindows(登録商標)オペレーティングシステム、アップル社のMacOS(登録商標)/iOS(登録商標)、Google(登録商標)社のAndroid(登録商標)、LINUX、UNIX、またはその他のリアルタイム若しくは組込みオペレーティングシステムのような、任意のタイプのオペレーティングシステムであってもよい。
システム1500は、例えば、ネットワークインターフェース装置1505、任意選択入力装置1506、およびその他の任意選択I/O装置1507を含む装置1505〜1508のようなI/O装置を更に含むことができる。ネットワークインターフェース装置1505は、無線送受信機および/またはネットワークインターフェースカード(NIC)を含むことができる。前記無線送受信機は、WiFi送受信機、赤外線送受信機、ブルートゥース送受信機、WiMax送受信機、無線携帯電話送受信機、衛星送受信機(例えば、全地球測位システム(GPS)送受信機)、またはその他の無線周波数(RF)送受信機、またはそれらの組み合わせであってもよい。NICは、イーサネットカードであってもよい。
入力装置1506は、マウス、タッチパネル、タッチスクリーン(表示装置1504と統合されてもよい)、ポインター装置(例えば、スタイラス)、および/またはキーボード(例えば、物理キーボードまたはタッチスクリーンの一部として表示された仮想キーボード)を含むことができる。例えば、入力装置1506は、タッチスクリーンに接続されるタッチスクリーンコントローラを備えていてもよい。タッチスクリーンおよびタッチスクリーンコントローラは、例えば、様々なタッチ感応技術(コンデンサ、抵抗、赤外線、および表面弾性波の技術を含むが、それらに限定されない)のいずれか、並びにその他の近接センサアレイ、または、タッチスクリーンと接触する1つまたは複数の点を確定するためのその他の素子を用いて、それらの接触、移動または中断を検出することができる。
I/O装置1507は、音声装置を含むことができる。音声装置は、例えば、音声認識、音声複製、デジタル記録、および/または電話機能のような音声サポートの機能を促進するために、スピーカおよび/またはマイクロホンを含んでもよい。その他のI/O装置1507は、ユニバーサルシリアルバス(USB)ポート、パラレルポート、シリアルポート、プリンタ、ネットワークインターフェース、バスブリッジ(例えば、PCIーPCIブリッジ)、センサ(例えば、加速度計、ジャイロスコープ、磁力計、光センサ、コンパス、近接センサなどのモーションセンサ)、またはそれらの組み合わせを更に含むことができる。装置1507は、結像処理サブシステム(例えば、カメラ)を更に含むことができ、前記結像処理サブシステムは、写真およびビデオ断片の記録のようなカメラ機能を促進するための、電荷接続素子(CCD)または相補型金属酸化物半導体(CMOS)光学センサのような光学センサを含むことができる。特定のセンサは、センサハブ(図示せず)を介してインターコネクト1510に接続されることができ、キーボードまたはサーマルセンサのようなその他の装置はシステム1500の具体的な構成または設計により、組込みコントローラ(図示せず)により制御されることができる。
データ、アプリケーション、1つまたは複数のオペレーティングシステムなどの情報の永続性記憶を提供するために、プロセッサ1501には、大容量記憶装置(図示せず)が接続されることもできる。様々な実施形態において、より薄くてより軽量なシステム設計を可能にしながら、システムの応答性を向上するために、このような大容量記憶装置は、ソリッドステートデバイス(SSD)によって実現されることができる。しかしながら、その他の実施形態では、大容量記憶装置は、主にハードディスクドライブ(HDD)を使用して実現されることができ、より小さい容量のSSD記憶装置をSSDキャッシュとして機能することで、停電イベントの間にコンテキスト状態および他のそのような情報の不揮発性記憶を可能にし、それによりシステム動作が再開するときに通電を速く実現することができる。また、フラッシュデバイスは、例えば、シリアルペリフェラルインターフェース(SPI)を介してプロセッサ1501に接続されることができる。このようなフラッシュデバイスは、前記システムのBIOSおよびその他のファームウェアを含むシステムソフトウェアの不揮発性記憶のために機能することができる。
記憶装置1508は、コンピュータアクセス可能な記憶媒体1509(機械可読記憶媒体またはコンピュータ可読媒体ともいう)を含むことができ、前記コンピュータアクセス可能な記憶媒体1509には、本明細書で記載されたいずれか1つまたは複数の方法または機能を具現化する1つまたは複数の命令セットまたはソフトウェア(例えば、モジュール、ユニットおよび/またはロジック1528)が格納されている。処理モジュール/ユニット/ロジック1528は、感知モジュール302、計画モジュール305、制御モジュール306および/またはセンサユニット500のような、前記構成要素のいずれかを表すことができる。処理モジュール/ユニット/ロジック1528は、更に、データ処理システム1500、メモリ1503、およびプロセッサ1501による実行中に、メモリ1503内および/またはプロセッサ1501内に完全的にまたは少なくとも部分的に存在してもよく、データ処理システム1500、メモリ1503およびプロセッサ1501も機械アクセス可能な記憶媒体を構成する。処理モジュール/ユニット/ロジック1528は、更に、ネットワークを介してネットワークインターフェース装置1505を経由して送受信されてもよい。
コンピュータ可読記憶媒体1509は、以上に説明されたいくつかのソフトウェア機能を永続的に格納するために用いることができる。コンピュータ可読記憶媒体1509は、例示的な実施形態において単一の媒体として示されるが、「コンピュータ可読記憶媒体」という用語は、前記1つまたは複数の命令セットが格納される単一の媒体または複数の媒体(例えば、集中型または分散型データベースおよび/または関連するキャッシュとサーバ)を含むと解釈されるものとする。「コンピュータ可読記憶媒体」という用語は、更に、命令セットを格納または符号化できる任意の媒体を含むと解釈されるものであり、前記命令セットは機械により実行され、本発明のいずれか1つまたは複数の方法を前記機械に実行させるためのものである。それゆえに、「コンピュータ可読記憶媒体」という用語は、ソリッドステートメモリ、光学媒体および磁気媒体、またはその他の任意の非一時的機械可読媒体を含むが、それらに限定されないと解釈されるものとする。
本明細書に記載の処理モジュール/ユニット/ロジック1528、構成要素およびその他の特徴は、ディスクリートハードウェア構成要素として実現されてもよく、またはASICS、FPGA、DSPまたは類似の装置のようなハードウェア構成要素の機能に統合されてもよい。更に、処理モジュール/ユニット/ロジック1528は、ハードウェア装置におけるファームウェアまたは機能性回路として実現されてもよい。更に、処理モジュール/ユニット/ロジック1528は、ハードウェア装置とソフトウェア構成要素の任意の組み合わせで実現されてもよい。
なお、システム1500は、データ処理システムの様々な構成要素を有するものとして示されているが、構成要素を相互接続する任意の特定のアーキテクチャまたは方式を表すことを意図するものではなく、そのような詳細は、本発明の実施形態とは密接な関係がない。また、より少ない構成要素またはより多くの構成要素を有するネットワークコンピュータ、ハンドヘルドコンピュータ、携帯電話、サーバ、および/またはその他のデータ処理システムも、本発明の実施形態と共に使用することができることを理解されたい。
上述した具体的な説明の一部は、既に、コンピュータメモリにおけるデータビットに対する演算のアルゴリズムと記号表現により示された。これらのアルゴリズムの説明および表現は、データ処理分野における当業者によって使用される、それらの作業実質を所属分野の他の当業者に最も効果的に伝達する方法である。本明細書では、一般的に、アルゴリズムは、所望の結果につながるセルフコンシステントシーケンスと考えられる。これらの動作は、物理量の物理的処置が必要なものである。
しかしながら、念頭に置くべきなのは、これらの用語および類似の用語の全ては、適切な物理量に関連付けられるものであり、これらの量を標識しやすくするためのものに過ぎない。以上の説明で他に明示的に記載されていない限り、本明細書の全体にわたって理解するべきなのは、添付された特許請求の範囲に記載するもののような用語による説明とは、コンピュータシステム、または類似の電子計算装置の動作およびプロセスを指し、前記コンピュータシステムまたは電子計算装置は、コンピュータシステムのレジスタおよびメモリにおける物理(電子)量として示されるデータを制御するとともに、前記データをコンピュータシステムメモリまたはレジスタまたはこのようなその他の情報記憶装置、伝送または表示装置において同様に物理量として示される別のデータに変換する。
本発明の実施形態は、本明細書の動作を実行するための装置にも関する。このようなコンピュータプログラムは、非一時的コンピュータ可読媒体に格納される。機械可読媒体は、機械(例えば、コンピュータ)により読み取り可能な形式で情報を格納するための任意のメカニズムを含む。例えば、機械可読(例えば、コンピュータ可読)媒体は、機械(例えば、コンピュータ)可読記憶媒体(例えば、読み出し専用メモリ(「ROM」)、ランダムアクセスメモリ(「RAM」)、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリ装置)を含む。
上述した図面において説明されたプロセスまたは方法は、ハードウェア(例えば、回路、専用ロジックなど)、ソフトウェア(例えば、非一時的コンピュータ可読媒体に具現化されるもの)、または両方の組み合わせを含む処理ロジックにより実行されることができる。前記プロセスまたは方法は、以上で特定の順序に応じて説明されたが、前記動作の一部が異なる順序で実行されてもよいことを理解されたい。また、一部の動作は、順番ではなく並行して実行されてもよい。
本発明の実施形態は、いずれの特定のプログラミング言語を参照することなく記載されている。理解すべきなのは、本明細書に記載の本発明の実施形態の教示を実現するために、様々なプログラミング言語を使用することができる。
本明細書において、本発明の実施形態は、既にその具体的な例示的な実施形態を参照しながら記載された。明らかなように、添付された特許請求の範囲に記載された本発明のより広い趣旨および範囲を逸脱しない限り、本発明に対して様々な変更を行うことができる。それゆえに、本明細書および図面は、限定的な意味でなく、例示的な意味で理解されるべきである。
本発明の実施形態は、主に自動運転車両を動作させることに関する。より具体的には、本発明の実施形態は、自動運転車両のセンサを制御するためのセンサトリガロジックに関する。
自動運転モードで走行する(例えば、ドライバーレス)車両は、乗員、特に運転手をいくつかの運転に関する責務から解放することができる。車両は、自動運転モードで走行する時に、車載センサを利用して様々な位置までナビゲートすることができるので、最小限のヒューマンマシンインタラクションや、乗員がいないなどの状況で車両を走行させることが可能となる。
運動計画および制御は自動運転における重要な操作である。運動計画および制御の正確性と効率は、車両のセンサに大きく依存している。センサが異なれば、要件や仕様も異なる可能性がある。車両の周囲の走行環境を高精度に感知するために、センサは同期的かつ協調的に動作しなければならない。センサの動作を制御するための効率的なメカニズムが欠けている。
本発明の一態様によれば、自動運転車両のためのセンサユニットであって、前記センサユニットは、前記自動運転車両の複数の位置に取り付けられた複数のセンサに接続されるセンサインターフェースと、ホストシステムに接続されるホストインターフェースであって、前記ホストシステムは、前記センサから得られたセンサデータに基づいて前記自動運転車両の周囲の走行環境を感知し、前記自動運転車両を自律的に走行させるための経路を計画するように構成されるホストインターフェースと、それぞれが前記複数のセンサのうちの1つに対応する複数のセンサ制御モジュールと、を備え、前記センサ制御モジュールのそれぞれは、前記ホストインターフェースを介して前記ホストシステムからパルス時間調整値を受信する遅延時間制御ロジックと、前記ホストインターフェースを介して前記ホストシステムからトリガ時間調整値を受信し、前記パルス時間調整値および前記トリガ時間調整値に基づいて、パルス発生器から受信したパルス信号における複数のパルスの少なくとも一部のタイミングを修正する遅延調整ロジックと、修正済みパルス信号に基づいてトリガ信号を生成し、前記トリガ信号を対応するセンサに送信するトリガ信号発生器と、を備えるセンサユニットを提供する。
本発明の実施形態によれば、前記パルス時間調整値は、前記パルス信号の原パルスと前記原パルスの修正されたパルスとの間のオフセットを決定するために用いられる。
本発明の実施形態によれば、前記トリガ時間調整値は、前記パルス信号における修正すべきパルスを決定するために用いられ、前記パルス信号における残りのパルスを変化しないままにする。
本発明の実施形態によれば、前記センサ制御モジュールのそれぞれは、前記ホストシステムから幅調整値を受信する幅・極性調整ロジックをさらに備え、前記トリガ信号発生器は、前記幅調整値に基づいて前記パルス信号におけるパルスの少なくとも一部のパルス幅を修正する。
本発明の実施形態によれば、前記幅・極性調整ロジックは、前記ホストシステムから極性調整値を受信するように構成され、前記トリガ信号発生器は、前記極性調整値に基づいて前記パルス信号におけるパルスの少なくとも一部の極性を修正する。
本発明の実施形態によれば、前記複数のセンサは1つまたは複数のカメラを備え、前記センサ制御モジュールのうちの前記カメラに関連付けられたセンサ制御モジュールのそれぞれは、前記ホストシステムからフレームレート値を受信するためのフレームレート制御ロジックをさらに備え、前記フレームレート値は、対応するカメラによって生成される画像フレームの数を指定する。
本発明の実施形態によれば、前記パルス信号におけるパルスの少なくとも一部は、さらに前記フレームレート値に基づいて修正され、前記フレームレート値に従って修正されたパルスで前記トリガ信号を繰り返し生成する。
本発明の実施形態によれば、各センサ制御モジュールは、前記トリガ信号と前記フレームレート値とに基づいて如何なる潜在的フレーム落ちを検出し前記ホストシステムに前記潜在的フレーム落ちに関するフィードバック信号を提供するエラー検出器をさらに備える。
本発明の実施形態によれば、前記センサ制御モジュールのそれぞれは、対応するセンサに対して特別に設定される前記パルス時間調整値および前記トリガ時間調整値をそれぞれ前記ホストシステムから受信する。
本発明の実施形態によれば、前記センサ制御モジュールのうちの少なくとも2つは、異なるパルス時間調整値またはトリガ時間調整値を前記ホストシステムから受信する。
本発明の実施形態によれば、前記ホストシステムは、前記センサ制御モジュールのそれぞれについてパルス時間調整値およびトリガ時間調整値を設定することで、前記自動運転車両の周囲の走行環境をキャプチャするように前記センサのそれぞれのキャプチャ時間を協調的にトリガする。
本発明の実施形態によれば、前記センサインターフェースは、LIDARデバイスまたは1つ以上のカメラに接続されるイーサネットインターフェースを含む。
本発明の実施形態によれば、前記センサインターフェースは、GPS受信機およびIMUデバイスのうちの少なくとも1つに接続されるGPSインターフェースを含む。
本発明の実施形態によれば、前記センサインターフェースは、前記自動運転車両のスロットル制御ロジック、ブレーキ制御ロジックおよびステアリング制御ロジックに接続されるコントローラエリアネットワークインターフェースを含む。
本発明の他の態様によれば、自動運転システムであって、自動運転車両の複数の位置に取り付けられた複数のセンサと、前記センサから得られたセンサデータに基づいて前記自動運転車両の周囲の走行環境を感知する感知モジュールと、前記自動運転車両を自律的に走行させるための経路を計画する計画・制御モジュールとを有するホストシステムと、前記複数のセンサと前記ホストシステムとに接続されたセンサユニットと、を備える自動運転システムであって、前記センサユニットは、前記自動運転車両に取り付けられた前記複数のセンサに接続されるセンサインターフェースと、前記ホストシステムに接続されるホストインターフェースと、それぞれが前記複数のセンサのうちの1つに対応する複数のセンサ制御モジュールとを備え、前記センサ制御モジュールのそれぞれは、前記ホストインターフェースを介して前記ホストシステムからパルス時間調整値を受信するための遅延時間制御ロジックと、前記ホストインターフェースを介して前記ホストシステムからトリガ時間調整値を受信し、前記パルス時間調整値および前記トリガ時間調整値に基づいて、パルス発生器から受信したパルス信号における複数のパルスの少なくとも一部のタイミングを修正するための遅延調整ロジックと、修正済みパルス信号に基づいてトリガ信号を生成し、前記トリガ信号を対応するセンサに送信するためのトリガ信号発生器とを備えるホストインターフェースと、を備える自動運転システムを提供する。
本発明の他の実施形態によれば、前記パルス時間調整値は、前記パルス信号の原パルスと前記原パルスの修正されたパルスとの間のオフセットを決定するために用いられる。
本発明の他の実施形態によれば、前記トリガ時間調整値は、前記パルス信号における修正すべきパルスを決定するために用いられ、前記パルス信号における残りのパルスを変化しないままにする。
本発明の他の実施形態によれば、前記センサ制御モジュールのそれぞれは、前記ホストシステムから幅調整値を受信する幅・極性調整ロジックをさらに備える。また、前記トリガ信号発生器は、前記幅調整値に基づいて前記パルス信号におけるパルスの少なくとも一部のパルス幅を修正する。
本発明の他の実施形態によれば、前記幅・極性調整ロジックは、前記ホストシステムから極性調整値を受信するように構成され、前記トリガ信号発生器は、前記極性調整値に基づいて前記パルス信号におけるパルスの少なくとも一部の極性を修正する。
本発明の他の実施形態によれば、前記複数のセンサは1つまたは複数のカメラを備え、前記センサ制御モジュールのうちの前記カメラに関連付けられたセンサ制御モジュールのそれぞれは、前記ホストシステムからフレームレート値を受信するフレームレート制御ロジックをさらに備え、前記フレームレート値は、対応するカメラによって生成される画像フレームの数を指定する。
本発明の実施例は、図面のそれぞれにおいて限定的ではなく例示的な形態で示され、図面における類似の符号が類似の素子を示している。
一実施形態に係るネットワークシステムを示すブロック図である。
一実施形態に係る自動運転車両の一例を示すブロック図である。
一実施形態に係る自動運転車両と共に使用される感知・計画システムの一例を示すブロック図である。
一実施形態に係る自動運転車両と共に使用される感知・計画システムの一例を示すブロック図である。
一実施形態に係る自動運転システムのアーキテクチャを示すブロック図である。
本発明の一実施形態に係るセンサユニットの一例を示すブロック図である。
本発明の一実施形態に係るセンサユニットの一例を示すブロック図である。
一実施形態に係るセンサ制御モジュールの一例を示すブロック図である。
一実施形態に係るセンサトリガロジックの一例を示すブロック図である。
一実施形態に係る特定の信号を示す時間図である。
一実施形態に係るトリガ信号を生成するプロセスを示すフローチャートである。
一実施形態に係るデータ処理システムを示すブロック図である。
以下に説明される詳細を参照しながら本発明の様々な実施形態および態様を説明し、添付図面に上記の様々な実施形態を示す。以下の説明および図面は、本発明を説明するためのものであり、本発明を限定するものではないことを理解されたい。本発明の様々な実施形態を完全に把握するために、多数の特定の詳細を説明する。なお、いくつかの場合、本発明の実施形態に対する簡潔的な説明を提供するように、周知または従来技術の詳細について説明していない。
本明細書において、「一実施形態」または「実施形態」とは、当該実施形態を参照しながら説明した特定の特徴、構造または特性が本発明の少なくとも一実施形態に含まれてもよいことを意味する。「一実施形態では」という語句は、本明細書全体において同一の実施形態を指すとは限らない。
本発明の一態様によれば、自動運転車両(ADV)で利用されるセンサユニットは、ADVの複数の異なる位置に取り付けられた複数のセンサに接続可能なセンサインターフェースを備える。センサユニットは、車両を自律的に走行させるためのホストシステム(例えば、計画・制御システム)に接続可能なホストインターフェースをさらに備える。センサユニットは、それぞれがセンサのうちの1つに対応する複数のセンサ制御モジュールを更に備える。各センサ制御モジュールは、遅延時間制御ロジック、遅延調整ロジックおよびトリガ信号発生器を備える。遅延時間制御ロジックは、ホストインターフェースを介してホストシステムからパルス時間調整(PTA)値を受信するために用いられる。遅延調整ロジックは、ホストインターフェースを介してホストシステムからトリガ時間調整(TTA)値を受信するために用いられる。遅延調整ロジックは、PTA値およびTTA値に基づいてパルス発生器から受信したパルス信号におけるパルスの少なくとも一部のタイミングを修正するために用いられる。トリガ信号発生器は、修正済みパルス信号に基づいてトリガ信号を生成し、前記トリガ信号を対応するセンサに送信する。
一実施形態では、PTA値は、パルス信号の原パルスと原パルスの修正されたパルスとの間のオフセットを決定するために用いられる。TTA値は、パルス信号のどのパルスが修正されるべきか、どのパルスが変化しないままにするかを決定するために用いられる。一実施形態では、センサ制御モジュールのそれぞれは、ホストシステムから幅調整(WA)値を受信するための幅・極性調整(WPA)ロジックをさらに備える。トリガ信号発生器は、パルス信号におけるパルスの少なくとも一部のパルス幅を修正する。WPAロジックは、ホストシステムから極性調整(PA)値を受信するように構成され、トリガ信号発生器は、パルス信号におけるパルスの少なくとも一部の極性を修正する。
一実施形態では、センサは、トリガ信号のタイミングに基づいて異なる時点で画像または画像フレームを取り込むことができる1つまたは複数のカメラを含む。カメラに関連付けられたセンサ制御モジュールは、ホストシステムからフレームレート(FPS,frame per second)値を受信するためのFPS制御ロジックをさらに備え、FPS制御ロジックは、FPS値に基づいて1秒当たり複数のフレームを取り込むようにカメラを制御するために用いられる。フレーム落ちした画像フレームの変化を減らすためにさらにFPS値に基づいてパルス信号におけるパルスの少なくとも一部を修正する。他の実施形態によれば、各センサ制御モジュールは、トリガ信号およびFPS値に基づいて如何なる潜在的なフレーム落ちを検出し、潜在的なフレーム落ちに関するフィードバックをホストシステムに提供するためのエラー検出器をさらに備える。なお、各センサ制御モジュールは、対応するセンサに対して異なるPTA値、TTA値、FPS値、WA値および/またはPA値を受信することができる。センサは、異なる要件または仕様を有し得る、異なるセンサプロバイダによって提供される異なる種類のセンサまたは同じ種類のセンサであってもよい。
他の態様によれば、自動運転システムは、ホストシステムとADVの異なる位置に取り付けられる複数のセンサとを備える。ホストシステムは、感知モジュールと計画・制御モジュールとを備える。感知モジュールは、センサから取得されたセンサデータに基づいてADVの周囲の走行環境を感知するように構成される。計画・制御モジュールは、感知データに基づいてADVを自律的に走行させるための経路を計画する。自動運転システムは、センサおよびホストシステムに接続されるセンサユニットをさらに備える。センサユニットは、ADVの複数の異なる位置に取り付けられる複数のセンサに接続可能なセンサインターフェースを備える。センサユニットは、車両を自律的に走行させるためのホストシステム(例えば、計画・制御システム)に接続可能なホストインターフェースをさらに備える。センサユニットは、それぞれがセンサのうちの1つに対応する複数のセンサ制御モジュールを更に備える。各センサ制御モジュールは、遅延時間制御ロジック、遅延調整ロジック、およびトリガ信号発生器を備える。遅延時間制御ロジックは、ホストインターフェースを介してホストシステムからパルス時間調整(PTA)値を受信するために用いられる。遅延調整ロジックは、ホストインターフェースを介してホストシステムからトリガ時間調整(TTA)値を受信するために用いられる。遅延調整ロジックは、PTA値およびTTA値に基づいてパルス発生器から受信したパルス信号におけるパルスの少なくとも一部のタイミングを修正するために用いられる。トリガ信号発生器は、修正済みパルス信号に基づいてトリガ信号を生成し、前記トリガ信号を対応するセンサに送信する。センサ制御モジュールは、上述のような特徴をさらに含むことができる。
図1は、本発明の一実施形態に係る自動運転車両のネットワーク構成を示すブロック図である。図1に示すように、ネットワーク構成100には、ネットワーク102を介して1つまたは複数のサーバ103〜104に通信可能に接続される自動運転車両101が備えられる。一台の自動運転車両が示されたが、複数の自動運転車両がネットワーク102を介して互いに接続され、および/またはサーバ103〜104に接続されてもよい。ネットワーク102は、任意のタイプのネットワークであってもよく、例えば、有線または無線のローカルエリアネットワーク(LAN)、インターネットなどのワイドエリアネットワーク(WAN)、セルラーネットワーク、衛星ネットワーク、またはそれらの組み合わせが挙げられる。サーバ103〜104は、任意のタイプのサーバまたはサーバクラスタであってもよく、例えば、ネットワークまたはクラウドサーバ、アプリケーションサーバ、バックエンドサーバ、またはそれらの組み合わせが挙げられる。サーバ103〜104は、データ解析サーバ、コンテンツサーバ、交通情報サーバ、地図・関心地点(MPOI)サーバまたは位置サーバなどであってもよい。
自動運転車両とは、運転手からの入力が非常に少ないまたはない場合に車両をナビゲートして環境を通過させる自動運転モードに配置可能な車両である。このような自動運転車両は、車両の走行環境に関する情報を検出するように配置される1つまたは複数のセンサを備えるセンサシステムを含んでもよい。前記車両およびその関連コントローラは、検出された情報を使用して前記環境を通過するようにナビゲートする。自動運転車両101は、手動モード、完全自動運転モード、または部分自動運転モードで走行することができる。
一実施形態では、自動運転車両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は、如何なるセルラー通信ネットワークまたは無線ローカルエリアネットワーク(WLAN)、例えばWiFiを使用して他の構成要素またはシステムと通信することができる。無線通信システム112は、例えば赤外線リンク、ブルートゥースなどを使用して、装置(例えば、乗員のモバイルデバイス、表示装置、車両101内のスピーカ)と直接通信することができる。ユーザインターフェースシステム113は、車両101内に実現された周辺装置の部分(例えば、キーボード、タッチスクリーン表示装置、マイクロホンおよびスピーカなどを含む)であってもよい。
自動運転車両101の機能のうちの一部または全部は、特に自動運転モードで動作する場合に、感知・計画システム110により制御されるか、または管理されることができる。感知・計画システム110は、センサシステム115、制御システム111、無線通信システム112および/またはユーザインターフェースシステム113から情報を受信し、受信された情報を処理し、出発地から目的地までのルートまたは経路を計画した後に、計画および制御情報に基づいて車両101を運転するために、必要なハードウェア(例えば、プロセッサ、メモリ、記憶デバイス)並びにソフトウェア(例えば、オペレーティングシステム、計画およびルーティングプログラム)を含む。あるいは、感知・計画システム110は車両制御システム111と一体に集積されてもよい。
例えば、乗員であるユーザは、例えばユーザインターフェースを介して旅程の出発地位置および目的地を指定することができる。感知・計画システム110は旅程に関連するデータを取得する。例えば、感知・計画システム110は、MPOIサーバから位置・ルート情報を取得することができる。前記MPOIサーバは、サーバ103〜104の一部であってもよい。位置サーバは位置サービスを提供し、MPOIサーバは地図サービスおよび特定位置のPOIを提供する。あるいは、このような位置およびMPOI情報は、感知・計画システム110の永続性記憶装置にローカルキャッシュされてもよい。
自動運転車両101がルートに沿って移動している場合に、感知・計画システム110は交通情報システムまたはサーバ(TIS)からリアルタイム交通情報を取得することもできる。なお、サーバ103〜104は第三者機関により動作可能である。あるいは、サーバ103〜104の機能は、感知・計画システム110と一体に集積されてもよい。感知・計画システム110は、リアルタイム交通情報、MPOI情報および位置情報、並びにセンサシステム115により検出または感知されたリアルタイムローカル環境データ(例えば、障害物、オブジェクト、付近の車両)に基づいて、所定の目的地まで安全的且つ効率的に到達するために、最適なルートを計画し、且つ計画されたルートに従って例えば制御システム111を介して車両101を運転することができる。
サーバ103は、様々なクライアントに対してデータ解析サービスを実行するデータ解析システムであってもよい。一実施形態では、データ解析システム103は、データコレクタ121と、機械学習エンジン122とを含む。データコレクタ121は、様々な車両(自動運転車両または人間の運転手によって運転される一般車両)から運転統計データ123を収集する。運転統計データ123には、異なる時点で発された運転コマンド(例えば、スロットルコマンド、ブレーキコマンドおよびステアリングコマンド)と、車両のセンサにより捕捉された車両の応答(例えば、速度、加速度、減速度、方向)とを示す情報が含まれる。運転統計データ123は更に、異なる時点における走行環境を記述する情報、例えば、ルート(出発地位置および目的地位置を含む)、MPOI、道路状況、天気状況などを含んでもよい。
機械学習エンジン122は、運転統計データ123に基づいて、様々な目的に応じてルール、アルゴリズムおよび/または予測モデル124の集合を生成するかまたは訓練する。一実施形態では、アルゴリズム124は、以下でさらに詳細に説明する感知、予測、決定、計画および/または制御プロセスのためのルールまたはアルゴリズムを含むことができる。アルゴリズム124を自動運転中にリアルタイムで利用するためにADVにアップロードすることができる。
図3Aおよび図3Bは、一実施形態に係る自動運転車両と共に使用される感知・計画システムの一例を示すブロック図である。システム300は、図1の自動運転車両101の一部として実現されてもよく、感知・計画システム110、制御システム111およびセンサシステム115を含むが、それらに限定されない。図3Aおよび図3Bに示すように、感知・計画システム110は、測位モジュール301、感知モジュール302、予測モジュール303、決定モジュール304、計画モジュール305、制御モジュール306およびルーティングモジュール307を含むが、それらに限定されない。
モジュール301〜307のうちの一部または全部は、ソフトウェア、ハードウェアまたはそれらの組み合わせで実現されていてもよい。例えば、これらのモジュールは、永続性記憶装置352にインストールされ、メモリ351にロードされ、且つ1つまたは複数のプロセッサ(図示せず)により実行されてもよい。なお、これらのモジュールのうちの一部または全部は、図2の車両制御システム111の一部または全部のモジュールに通信可能に接続されるか、またはそれらと一体に統合されてもよい。モジュール301〜307のうちの一部は、集積モジュールとして一体に統合されてもよい。
測位モジュール301は、自動運転車両300の現在位置を(例えば、GPSユニット212により)決定し、ユーザの旅程またはルートに関する如何なるデータを管理する。測位モジュール301(地図・ルートモジュールともいう)は、ユーザの旅程またはルートに関連する如何なるデータを管理する。ユーザは、例えばユーザインターフェースを経由してログインして旅程の出発地位置および目的地を指定することができる。測位モジュール301は、自動運転車両300における地図・ルート情報311のような他の構成要素と通信して旅程に関するデータを取得する。例えば、測位モジュール301は、位置サーバ並びに地図・POI(MPOI)サーバから位置およびルート情報を取得することができる。位置サーバは位置サービスを提供し、MPOIサーバは地図サービスおよび特定位置のPOIを提供することにより、地図・ルート情報311の一部としてキャッシュされることができる。自動運転車両300がルートに沿って移動する際に、測位モジュール301は交通情報システムまたはサーバからリアルタイム交通情報を取得することもできる。
感知モジュール302は、センサシステム115により提供されたセンサデータと、測位モジュール301により取得された測位情報とに基づいて、周辺の環境への感知を確定する。感知情報は、一般の運転手が運転手により運転されている車両の周辺における感知すべきものを示すことができる。感知とは、車線配置、信号機信号、例えばオブジェクトの形式で、他の車両、歩行者、建築物、横断歩道または他の交通関連標識(例えば、止まれ標識、ゆずれ標識)の相対位置などを含むことができる。車線配置は、例えば、車線の形状(例えば、直進車線またはカーブ車線)、車線の幅、道路内の車線数、一方向車線または二方向車線、合流車線または分流車線、退出車線など、1つまたは複数の車線を記述する情報を含む。
感知モジュール302は、1つまたは複数のカメラにより取り込まれた画像を処理し解析して自動運転車両の環境におけるオブジェクトおよび/または特徴を認識するために、コンピュータビジョンシステムまたはコンピュータビジョンシステムの機能を含むことができる。前記オブジェクトは、交通信号、道路の境界、他の車両、歩行者および/または障害物などを含むことができる。コンピュータビジョンシステムは、オブジェクト認識アルゴリズム、ビデオトラッキングおよび他のコンピュータビジョン技術を使用することができる。いくつかの実施形態では、コンピュータビジョンシステムは、環境地図の描画、オブジェクトの追跡、およびオブジェクトの速度の推定などができる。感知モジュール302は、レーダおよび/またはLIDARのような他のセンサにより提供される他のセンサデータに基づいてオブジェクトを検出することもできる。
各オブジェクトについて、予測モジュール303は、その場合に当該オブジェクトがどのように挙動するかを予測する。予測は、地図・ルート情報311および運転/交通ルール312の集合を考慮してその時点での走行環境を感知する感知データに基づいて実行される。例えば、オブジェクトが反対方向の車両であり、且つ現在の走行環境には交差点が含まれる場合、予測モジュール303は、当該車両が直線するか、または旋回するかを予測する。交差点に信号機がないと感知データにより示された場合に、予測モジュール303は、該車両が交差点に入る前に完全に停車する必要があると予測することが可能である。該車両が現在左折専用車線または右折専用車線にあると感知データにより示された場合に、予測モジュール303は、該車両がそれぞれ左折または右折する可能性が高いと予測可能である。
オブジェクトごとに対して、決定モジュール304はオブジェクトをどのように処置するかを判定する。例えば、特定のオブジェクト(例えば、交差のルートにおける他の車両)およびオブジェクトを記述するメタデータ(例えば、速度、方向、操舵角)について、決定モジュール304は前記オブジェクトと遇うときに如何に対応するか(例えば、追い越し、道譲り、停止、追い抜き)を決定する。決定モジュール304は、交通ルールまたは運転ルール312のような、永続性記憶装置352に格納可能なルールセットに基づいて、このような決定を下すことができる。
ルーティングモジュール307は、出発地から目的地までの1つまたは複数のルートまたは経路を提供するように構成される。例えばユーザから受信した出発地から目的地までの所定の旅程について、ルーティングモジュール307は地図・ルート情報311を取得し、出発地から目的地までの全ての走行可能なルートまたは経路を特定する。ルーティングモジュール307は、出発地から目的地までの特定された各ルートに対して、地形図の形式で基準線を生成することができる。基準線とは、他の車両、障害物または交通状況などから、他の干渉を受けていない理想的なルートまたは経路を指す。言い換えると、道路に他の車両、歩行者または障害物がない場合、ADVは基準線に完全的にまたは密接的に従うべきである。そして、地形図を決定モジュール304および/または計画モジュール305に提供する。決定モジュール304および/または計画モジュール305は、他のモジュールにより提供された他のデータ(例えば測位モジュール301からの交通状况、感知モジュール302により感知された走行環境および予測モジュール303により予測された交通状况)に応じて、全ての走行可能なルートを検査して最適なルートのうちの一つを選択および補正する。該時点における特定の走行環境に応じて、ADVを制御するための実際の経路またはルートは、ルーティングモジュール307によって提供される基準線に近いかまたは異なっていてもよい。
感知されたオブジェクトのそれぞれに対する決定に基づいて、計画モジュール305は、ルーティングモジュール307によって提供された基準線をベースとし、自動運転車両に対して経路またはルート並びに運転パラメータ(例えば、距離、速度および/または操舵角)を計画する。言い換えれば、特定のオブジェクトについて、決定モジュール304は該オブジェクトに対して何をするかを決定し、計画モジュール305はどのようにするかを決定する。例えば、所定のオブジェクトについて、決定モジュール304は、前記オブジェクトを追い抜くかを決定することができ、計画モジュール305は前記オブジェクトを左側から追い抜くかまたは右側から追い抜くかを判定することができる。計画および制御データは、計画モジュール305により生成され、車両300が次の移動周期(例えば、次のルート/経路セグメント)にはどのように移動するかを記述する情報を含む。例えば、計画および制御データは、車両300が30マイル/時間(mph)の速度で10メートル移動し、その後に25mphの速度で右側の車線に変更するように指示することができる。
制御モジュール306は、計画および制御データに基づいて、計画および制御データにより限定されたルートまたは経路に応じて適当なコマンド若しくは信号を車両制御システム111に送信することにより自動運転車両を制御および走行させる。前記計画および制御データは、経路またはルートに沿って異なる時点で適切な車両配置または運転パラメータ(例えば、スロットルコマンド、ブレーキコマンド、およびステアリングコマンド)を使用して、車両をルートまたは経路の第1の点から第2の点まで走行させるのに十分な情報を含む。
一実施形態では、計画段階は、複数の計画周期(運転周期とも言われ、例えば、100ミリ秒(ms)の時間間隔ごと)で実行される。計画周期または運転周期のそれぞれについて、計画および制御データに基づいて1つまたは複数の制御コマンドを発する。言い換えると、100msごとに、計画モジュール305は、次のルート区間または経路区間(例えば、目標位置およびADVが目標位置に到着するのに必要な時間が含まれる)を計画する。あるいは、計画モジュール305は、特定の速度、方向、および/または操舵角などを更に指定することができる。一実施形態では、計画モジュール305は、次の予定時間帯、例えば5秒のルート区間または経路区間を計画する。各計画周期について、計画モジュール305は前の周期において計画された目標位置に基づいて現在の周期(例えば、次の5秒)における目標位置を計画する。そして、制御モジュール306は、現在の周期における計画および制御データに基づいて1つまたは複数の制御コマンド(例えば、スロットル制御コマンド、ブレーキ制御コマンド、ステアリング制御コマンド)を生成する。
なお、決定モジュール304および計画モジュール305は、集積モジュールとして一体化されてもよい。決定モジュール304/計画モジュール305は、自動運転車両の走行経路を決定するために、ナビゲーションシステムまたはナビゲーションシステムの機能を具備することができる。例えば、ナビゲーションシステムは、自動運転車両が下記の経路に沿って移動することに影響を与えるための一連の速度および進行方向を決定することができる。前記経路では、自動運転車両が最終的な目的地に通じる走行車線に基づく経路に沿って進行すると共に、感知された障害物を実質的に回避できる。目的地は、ユーザインターフェースシステム113を経由して行われたユーザ入力によって設定されることができる。ナビゲーションシステムは、自動運転車両が走行していると同時に走行経路を動的に更新することができる。ナビゲーションシステムは、自動運転車両のための走行経路を決定するために、GPSシステムおよび1つまたは複数の地図からのデータを取り入れることができる。
図4は、一実施形態に係る自動運転のためのシステムアーキテクチャを示すブロック図である。システムアーキテクチャ400は、図3Aおよび図3Bに示すような自動運転システムのシステムアーキテクチャを表すことができる。図4を参照すると、システムアーキテクチャ400は、アプリケーション層401、計画・制御(PNC)層402、感知層403、ドライバ層404、ファームウェア層405、およびハードウェア層406を含むが、それらに限定されない。アプリケーション層401は、例えばユーザインターフェースシステム113に関連する機能のような、ユーザまたは自動運転車両の乗員と対話するユーザインターフェースまたは構成アプリケーションを含むことができる。PNC層402は、少なくとも計画モジュール305および制御モジュール306の機能を含むことができる。感知層403は、少なくとも感知モジュール302の機能を含むことができる。一実施形態では、予測モジュール303および/または決定モジュール304の機能を含む追加の層がある。あるいは、そのような機能は、PNC層402および/または感知層403に含まれてもよい。システムアーキテクチャ400は、ドライバ層404、ファームウェア層405、およびハードウェア層406をさらに含む。ファームウェア層405は、少なくともフィールドプログラマブルゲートアレイ(FPGA)の形態で実施可能なセンサシステム115の機能を表すことができる。ハードウェア層406は、制御システム111のような自動運転車両のハードウェアを表すことができる。層401〜層403は、デバイスドライバ層404を介してファームウェア層405およびハードウェア層406と通信することができる。
図5Aは、本発明の一実施形態に係るセンサシステムの一例を示すブロック図である。図5Aを参照すると、センサシステム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(周辺構成要素相互接続またはPCIエクスプレス)インターフェースのような任意の高速または高帯域幅インターフェースであってもよい。センサ510は、自動運転車両で利用される様々なセンサを含むことができ、例えば、カメラ、LIDARデバイス、レーダーデバイス、GPS受信機、IMU、超音波センサ、GNSS(全地球航法衛星システム)受信機、LTEまたはセルラーSIMカード、車両センサ(例えば、スロットルセンサ、ブレーキセンサ、ステアリングセンサ)およびシステムセンサ(例えば、温度センサ、湿度センサ、圧力センサ)などが挙げられる。
例えば、カメラは、イーサネットまたはGPIOインターフェースを介して接続されることができる。GPSセンサは、USBまたは特定のGPSインターフェースを介して接続されることができる。車両センサはCANインターフェースを介して接続されることができる。レーダーセンサまたは超音波センサは、GPIOインターフェースを介して接続されることができる。LIDARデバイスは、イーサネットインターフェースを介して接続されることができる。外部のSIMモジュールはLTEインターフェースを介して接続されることができる。同様に、内部SIMモジュールは、センサユニット500のSIMソケットに挿入可能である。UARTなどのシリアルインターフェースは、デバッグ目的でコンソールシステムと接続されることができる。
なお、センサ510は、様々な販売業者または供給業者によって提供される任意の種類のセンサとすることができる。センサ処理モジュール501は、異なる種類のセンサ並びにそれらの対応するデータフォーマットおよび通信プロトコルを処理するように構成される。一実施形態によれば、各センサ510は、センサデータを処理してホストシステム110と対応するセンサとの間で処理されたセンサデータを転送するために、特定のチャネルに関連付けられている。各チャネルは、図5Bに示すように、対応するセンサデータおよびプロトコルを処理するように構成またはプログラムされた特定のセンサ処理モジュールおよび特定のデータ転送モジュールを備える。
次に図5Bを参照すると、センサ処理モジュール501A〜501Cは特に、センサ510A〜510Cから得られたセンサデータを処理するように構成されている。なお、センサ510A〜510Cは、同じタイプまたは異なるタイプのセンサであってもよい。センサ処理モジュール501A〜501Cは、異なるタイプのセンサに対して異なるセンサプロセスを処理するように構成されることができる(例えば、ソフトウェアで構成可能である)。例えば、センサ510Aがカメラである場合、センサ処理モジュール501Aは、カメラ510Aによってキャプチャされた画像を表す特定の画素データに対して画素処理動作を行うように設計されてもよい。同様に、センサ510AがLIDARデバイスである場合、センサ処理モジュール501Aは、特にLIDARデータを処理するように構成される。言い換えると、一実施形態によれば、特定のセンサの特定のタイプに応じて、その対応する処理モジュールは、センサデータのタイプに対応する特定のプロセスまたは方法を使用して対応するセンサデータを処理するように構成されることができる。
同様に、データ転送モジュール502A〜502Cは、異なる種類のセンサデータが、異なる速度またはタイミング要件を必要とする異なるサイズまたは感度であり得るので、異なるモードで動作するように構成されることができる。一実施形態によれば、データ転送モジュール502A〜502Cのそれぞれは、低遅延モード、高帯域幅モード、およびメモリモード(固定メモリモードともいう)のうちの1つのモードで動作するように構成されることができる。
一実施形態によれば、低遅延モードで動作しているとき、データ転送モジュール(例えば、データ転送モジュール502)は、センサから受信したセンサデータを遅延伴わずにまたは最小遅延で可能な限り早くホストシステムに送信するように構成される。センサデータの一部は、タイミングに関して非常に敏感であり、できるだけ早く処理する必要がある。そのようなセンサデータの例としては、車速、加速度、操舵角などのような車両状態を含む。
一実施形態によれば、高帯域幅モードで動作しているとき、データ転送モジュール(例えば、データ転送モジュール502)は、センサから受信したセンサデータを所定の量まで累積するように構成されるが、依然としてデータ転送モジュールとホストシステム110との間の接続の帯域幅内にある。 次いで、累積されたセンサデータは、データ転送モジュールとホストシステム110との間の接続の帯域幅を最大にするバッチでホストシステム110に転送される。通常、高帯域幅モードは、大量のセンサデータを生成するセンサに利用される。そのようなセンサデータの例としては、カメラの画素データが挙げられる。
一実施形態によれば、メモリモードで動作するとき、データ転送モジュールは、センサから受信したセンサデータをホストシステム110の共有メモリページと同様なマップメモリのメモリ位置に直接書き込むように構成される。メモリモードを使用して転送されるセンサデータの例には、温度、ファン速度などのシステム状態データが含まれる。
一実施形態によれば、センサ510A〜510Cのそれぞれは、センサ制御モジュール503A〜503Cなどのような対応するセンサ制御モジュールと関連付けられている。あるいは、センサ制御モジュール503A〜503Cのうちの少なくともいくつかは、センサ510A〜510Cのうちの少なくともいくつかによって共有される統合センサ制御モジュールと一体に統合されてもよい。センサ制御モジュール503A〜503Cのそれぞれは、ホストシステム110および対応するセンサと通信するように構成されている。ホストシステム110から受信したコマンドに応答して、センサ制御モジュールは、対応するセンサの動作の少なくとも一部を制御することに利用可能である。
一実施形態では、各センサ制御モジュールは、対応するセンサの特定の動作を制御するための制御信号を生成するように構成される。例えば、ホストシステム110の感知モジュールまたは計画モジュールは、車両の周囲の走行環境を確定し感知することの一部として、特定のカメラに特定の時間に画像をキャプチャするよう要求することができる。ホストシステムは、ホストインターフェース505を介して、該カメラに関連付けられたセンサ制御モジュールにコマンドを送信して、該カメラにその特定の時間に画像をキャプチャするよう要求することができる。該要求はさらに、該カメラが画像をどのくらいの頻度でキャプチャすべきかを指定する情報(例えば、毎秒のフレーム数)および他のタイミング情報(例えば、遅延オフセット、パルス幅および極性など)を含むことができる。該要求に基づいて、センサ制御モジュールは適切な制御信号を生成し、センサインターフェース504を介して該制御信号をセンサに送信するように構成される。
なお、自動運転では、環境内をナビゲートして如何なる衝突を回避するために、走行環境の認識ができるだけ明確で正確であることが求められる。その結果、ホストシステムは、異なるセンサを異なるタイミングおよび方式で動作するように協調的に制御することを望む可能性がある。例えば、前方に取り付けられたカメラは、車両の後方または側方に取り付けられたカメラとは異なるタイミングで動作することができる。特定のセンサ制御モジュールを利用することによって、ホストシステム110は、車両の周囲の走行環境をより良くより正確に感知することができる。
図6は、他の実施形態に係るセンサユニットの一例を示すブロック図である。図6を参照すると、各センサ制御モジュール503A〜503Cは、センサ510A〜510Cのうちの1つと関連付けられており、センサ510A〜510Cは、同じタイプのセンサ、異なるタイプのセンサ、または異なる製造業者によって提供された同じタイプのセンサであってもよい。従って、いくつかのセンサは、異なる特徴、要件または仕様を有することが可能である。センサ制御モジュール503A〜503Cのそれぞれは、構成レジスタなどのような記憶装置に格納されるセンサトリガロジック(例えば、センサトリガロジック601A〜601C)およびトリガ構成(例えば、トリガ構成602A〜602C)を備える。
一実施形態によれば、センサトリガロジック601A〜601Cのそれぞれは、対応するトリガ構成情報(例えば、トリガ構成情報602A〜602C)に基づいてセンサトリガ信号を生成するように構成される。トリガ信号は、特定の時間に画像をキャプチャするなどの特定の動作を実行するように該センサをトリガまたは起動するために、対応するセンサに対して特別に生成される。対応するセンサに対して特別に生成されているトリガ構成情報は、ホストシステム110から受信されてもよい。トリガ構成情報は、センサの取り付け位置および/またはその時点での特定の走行環境に応じて、センサごとに異なり得る。
図7は、一実施形態に係るセンサトリガロジックの一例を示すブロック図である。センサトリガロジック700は、センサトリガロジック601A〜601Cのいずれかを表すことができる。図7を参照すると、センサトリガロジック700は、遅延時間制御ロジック701、遅延調整制御ロジック702、およびトリガ信号発生器703を含むが、それらに限定されない。遅延時間制御ロジック701は、ホストシステム110からパルス時間調整(PTA)値を受信する。遅延調整制御ロジック702は、ホストシステム110からトリガ時間調整(TTA)値を受信する。遅延調整制御ロジック702は、PTA値およびTTA値に基づいてパルス源710から受信されたパルス信号を調整および修正するように構成される。パルス源710は、局部発振器または外部源からクロック信号(例えばGPS信号)を導出する回路であってもよい。
一実施形態では、遅延調整制御ロジック702は、例えば、PTA値に基づいてパルスの立ち上がりエッジおよび/または立ち下がりエッジを原パルスから遅延させることによって、パルス信号のパルスのタイミングを修正する。また、遅延調整制御ロジック702は、調整済みパルスがいつ有効になるかを指定するためにTTA値に基づいてパルス信号をさらに修正する。言い換えると、PTA値は、原パルスと新しいパルスまたは修正されたパルスとの間の遅延またはオフセットを特定するために利用される。TTA値は、原パルスに対する第1の調整済みパルスの開始時間を特定するために利用される。その後、後続のパルスは、PTA値によって指定されたオフセット分(例えば、2つの原パルス間の原時間+PTA時間)ずれる。
ここで図7および図8を参照すると、パルス信号801は、パルス源710から受信した原パルス信号である。PTA値が遅延時間制御ロジック701によって受信されると、遅延調整制御ロジック702は、PTA値に基づいて各パルスを遅延させることによってパルス信号801を調整し修正する。この例では、原パルス信号801のパルスは、PTA値(例えば、4ナノ秒または4ns)に基づいて修正されて修正済みパルス信号802となる。信号802に示すように、各パルスはその原パルスからPTA値分遅延している。TTA値は、調整済みパルス信号802を対応するセンサにいつ印加送信すべきかを決定するために利用される。TTA値がゼロであれば、それはパルス信号802が直ちに印加されるべきであることを意味する。TTA値がゼロよりも大きい(この例では、信号803として示されるように2nsである)場合、パルス信号802は、TTA値によって示される時間遅延で印加されるべきである。パルス信号803では、各パルスは、PTAおよびTTA値(例えば、PTA+TTA、この例では2+4=6nsである)に基づいて遅延される。次に、パルス信号はトリガ信号発生器703に供給される。新しいPTAおよび/またはTTA値がホストシステムから受信されるまで、信号803がセンサに繰り返し送信され、それと同時に該信号は新しいPTA/TTA値に基づいて再調整されることになる。
一実施形態によれば、センサトリガロジック700は、ホストシステム110からFPS値を受信してセンサ510によって生成されたセンサデータのフレームレートを制御するためのFPS制御ロジック704をさらに含む。FPS値に基づいて、トリガ信号発生器703は、パルスの周波数がFPS制御ロジック704によって指定されたフレームレートと一致することを確実にするためにパルス信号を調整するために用いられる。他の実施形態によれば、センサトリガロジック700は、幅調整(WA)値および極性調整(PA)値をホストシステム110から受信するための幅・極性調整ロジック705をさらに含む。トリガ信号発生器703は、WA値に基づいて調整済みパルス信号のパルス幅を調整するように構成される。 トリガ信号発生器703はさらに、PA値に基づいてパルスの極性を調整するように構成される。
さらなる実施形態によれば、センサトリガロジック700は、FPS値に基づいて、修正済みパルス信号によるエラーがあるか否かを検出するためのエラー検出器706をさらに備える。例えば、エラー検出器706はFPS値に基づいて、修正済みパルス信号を検査してフレーム落ちの可能性があるか否かを判断する。エラー検出器706はフィードバックをホストシステム110に送信する。応答として、ホストシステム110は、それに応じて後続のPTAおよび/またはTTA値を修正することができる。
なお、遅延時間制御ロジック701、遅延調整制御ロジック702、トリガ信号発生器703、FPS制御ロジック704、および/または幅・極性調整ロジック705は、単一のロジックまたはより少ない数のロジックに統合されてもよい。PTA値、TTA値、FPS値、WA値、およびPA値は、1つまたは複数の構成レジスタに格納することができる。
図9は、一実施形態に係る自動運転車両のセンサをトリガするためのパルス信号を調整するプロセスを示すフローチャートである。プロセス900は、処理ロジックにより実行可能であり、処理ロジックはソフトウェア、ハードウェア、またはそれらの組み合わせを含んでもよい。例えば、プロセス900は、センサトリガロジック700のような、上述のセンサトリガロジックのいずれによって実行することができる。図9を参照すると、動作901において、センサユニットの処理ロジックはホストインターフェースを介してホストシステムからPTA値を受信する。ホストシステムは、車両を自律的に走行させるように構成された特定のモジュール(例えば、感知モジュール、計画モジュールおよび制御モジュール)を備える。動作902において、処理ロジックはホストシステムからTTA値を受信する。動作903において、処理ロジックは、パルス源から受信したパルス信号のパルスの少なくとも一部のタイミングを修正する。動作904において、修正済みパルス信号に基づいてトリガ信号を生成する。動作905において、対応するセンサにトリガ信号を送信し、それに応じて該センサを制御し動作させる。
なお、以上に例示および説明された構成要素の一部または全ては、ソフトウェア、ハードウェア、またはそれらの組み合わせで実現されることができる。例えば、このような構成要素は、永続性記憶装置にインストールされるとともに格納されるソフトウェアとして実現されてもよく、前記ソフトウェアは、本発明にわたって記載されたプロセスまたは動作を実施するように、プロセッサ(図示せず)でメモリにロードして実行されてもよい。あるいは、このような構成要素は、集積回路(例えば、特定用途向け集積回路またはASIC)、デジタルシグナルプロセッサ(DSP)、またはフィールドプログラマブルゲートアレイ(FPGA)のような専用ハードウェアにプログラミングされたかまたは埋め込まれた実行可能なコードとして実現されてもよく、前記実行可能なコードはアプリケーションからの対応するドライバおよび/またはオペレーティングシステムを介してアクセスすることができる。更に、このような構成要素は、ソフトウェア構成要素が1つまたは複数の特定の命令によってアクセス可能な命令セットの一部として、プロセッサまたはプロセッサコアにおける特定のハードウェアロジックとして実現されることができる。
図10は、本発明の一実施形態と組み合わせて使用可能なデータ処理システムの一例を示すブロック図である。例えば、システム1500は、図1の感知・計画システム110、またはサーバ103〜104のいずれかのような、上述した前記プロセスまたは方法のいずれかを実行するデータ処理システムのいずれかを表すことができる。システム1500は、いくつかの異なる構成要素を含んでもよい。これらの構成要素は、集積回路(IC)、集積回路の一部、ディスクリート型電子デバイス、または回路基板(例えば、コンピュータシステムのマザーボードまたはアドインカード)に適するその他のモジュールとして実現されることができ、または、他の形態でコンピュータシステムのシャーシ内に組み込まれた構成要素として実現されることができる。
なお、システム1500は、コンピュータシステムのいくつかの構成要素の高レベルビューを示すことを意図している。しかしながら、理解すべきなのは、いくつかの実施例において付加的構成要素が存在してもよく、また、その他の実施例において示された構成要素を異なる構成にすることが可能である。システム1500は、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、サーバ、携帯電話、メディアプレーヤ、パーソナルデジタルアシスタント(PDA)、スマートウォッチ、パーソナルコミュニケーター、ゲーム装置、ネットワークルーターまたはハブ、無線アクセスポイント(AP)またはリピーター、セット・トップボックス、またはそれらの組み合わせを表すことができる。また、単一の機械またはシステムのみが示されたが、「機械」または「システム」という用語は、本明細書で説明されるいずれか1つまたは複数の方法を実行するための、単独でまたは共同で1つ(または複数)の命令セットを実行する機械またはシステムの任意の組み合わせも含まれることを理解されたい。
一実施形態では、システム1500は、バスまたはインターコネクト1510を介して接続される、プロセッサ1501と、メモリ1503と、装置1505〜1508とを含む。プロセッサ1501は、単一のプロセッサコアまたは複数のプロセッサコアが含まれる単一のプロセッサまたは複数のプロセッサを表すことが可能である。プロセッサ1501は、マイクロプロセッサ、中央処理装置(CPU)などのような、1つまたは複数の汎用プロセッサを表すことができる。より具体的には、プロセッサ1501は、複雑命令セットコンピューティング(CISC)マイクロプロセッサ、縮小命令セットコンピューティング(RISC)マイクロプロセッサ、超長命令語(VLIW)マイクロプロセッサ、またはその他の命令セットを実行するプロセッサ、または命令セットの組み合わせを実行するプロセッサであってもよい。プロセッサ1501は更に、例えば、特定用途向け集積回路(ASIC)、セルラー若しくはベースバンドプロセッサ、フィールドプログラマブルゲートアレイ(FPGA)、デジタルシグナルプロセッサ(DSP)、ネットワークプロセッサ、グラフィックプロセッサ、通信プロセッサ、暗号化プロセッサ、コプロセッサ、組込みプロセッサ、または命令を処理可能な任意の他のタイプのロジックのような、1つまたは複数の専用プロセッサであってもよい。
プロセッサ1501は、超低電圧プロセッサのような低電力マルチコアプロセッサソケットであってもよく、前記システムの様々な構成要素と通信するための主処理ユニットおよび中央ハブとして機能することができる。このようなプロセッサは、システムオンチップ(SoC)として実装されてもよい。プロセッサ1501は、本明細書で説明される動作およびステップを実行するための命令を実行するように構成される。システム1500は、更に任意選択グラフィックサブシステム1504と通信するグラフィックインターフェースを含むことができ、グラフィックサブシステム1504は、表示コントローラ、グラフィックプロセッサ、および/または表示装置を含むことができる。
プロセッサ1501は、メモリ1503と通信することができ、メモリ1503は、一実施形態では、所定量のシステムメモリを提供するための複数のメモリ装置によって実現されることができる。メモリ1503は、例えば、ランダムアクセスメモリ(RAM)、ダイナミックRAM(DRAM)、シンクロナスDRAM(SDRAM)、スタティックRAM(SRAM)、またはその他のタイプの記憶装置のような、1つまたは複数の揮発性記憶(またはメモリ)装置を含むことができる。メモリ1503は、プロセッサ1501またはその他の任意の装置により実行される命令シーケンスを含む情報を格納することができる。例えば、様々なオペレーティングシステム、デバイスドライバ、ファームウェア(例えば、ベーシックインプット/アウトプットシステムまたはBIOS)、および/またはアプリケーションの実行可能なコードおよび/またはデータは、メモリ1503にロードされ、プロセッサ1501により実行されることができる。オペレーティングシステムは、例えば、ロボットオペレーティングシステム(ROS)、Microsoft(登録商標)社のWindows(登録商標)オペレーティングシステム、アップル社のMacOS(登録商標)/iOS(登録商標)、Google(登録商標)社のAndroid(登録商標)、LINUX、UNIX、またはその他のリアルタイム若しくは組込みオペレーティングシステムのような、任意のタイプのオペレーティングシステムであってもよい。
システム1500は、例えば、ネットワークインターフェース装置1505、任意選択入力装置1506、およびその他の任意選択I/O装置1507を含む装置1505〜1508のようなI/O装置を更に含むことができる。ネットワークインターフェース装置1505は、無線送受信機および/またはネットワークインターフェースカード(NIC)を含むことができる。前記無線送受信機は、WiFi送受信機、赤外線送受信機、ブルートゥース送受信機、WiMax送受信機、無線携帯電話送受信機、衛星送受信機(例えば、全地球測位システム(GPS)送受信機)、またはその他の無線周波数(RF)送受信機、またはそれらの組み合わせであってもよい。NICは、イーサネットカードであってもよい。
入力装置1506は、マウス、タッチパネル、タッチスクリーン(表示装置1504と統合されてもよい)、ポインター装置(例えば、スタイラス)、および/またはキーボード(例えば、物理キーボードまたはタッチスクリーンの一部として表示された仮想キーボード)を含むことができる。例えば、入力装置1506は、タッチスクリーンに接続されるタッチスクリーンコントローラを備えていてもよい。タッチスクリーンおよびタッチスクリーンコントローラは、例えば、様々なタッチ感応技術(コンデンサ、抵抗、赤外線、および表面弾性波の技術を含むが、それらに限定されない)のいずれか、並びにその他の近接センサアレイ、または、タッチスクリーンと接触する1つまたは複数の点を確定するためのその他の素子を用いて、それらの接触、移動または中断を検出することができる。
I/O装置1507は、音声装置を含むことができる。音声装置は、例えば、音声認識、音声複製、デジタル記録、および/または電話機能のような音声サポートの機能を促進するために、スピーカおよび/またはマイクロホンを含んでもよい。その他のI/O装置1507は、ユニバーサルシリアルバス(USB)ポート、パラレルポート、シリアルポート、プリンタ、ネットワークインターフェース、バスブリッジ(例えば、PCIーPCIブリッジ)、センサ(例えば、加速度計、ジャイロスコープ、磁力計、光センサ、コンパス、近接センサなどのモーションセンサ)、またはそれらの組み合わせを更に含むことができる。装置1507は、結像処理サブシステム(例えば、カメラ)を更に含むことができ、前記結像処理サブシステムは、写真およびビデオ断片の記録のようなカメラ機能を促進するための、電荷接続素子(CCD)または相補型金属酸化物半導体(CMOS)光学センサのような光学センサを含むことができる。特定のセンサは、センサハブ(図示せず)を介してインターコネクト1510に接続されることができ、キーボードまたはサーマルセンサのようなその他の装置はシステム1500の具体的な構成または設計により、組込みコントローラ(図示せず)により制御されることができる。
データ、アプリケーション、1つまたは複数のオペレーティングシステムなどの情報の永続性記憶を提供するために、プロセッサ1501には、大容量記憶装置(図示せず)が接続されることもできる。様々な実施形態において、より薄くてより軽量なシステム設計を可能にしながら、システムの応答性を向上するために、このような大容量記憶装置は、ソリッドステートデバイス(SSD)によって実現されることができる。しかしながら、その他の実施形態では、大容量記憶装置は、主にハードディスクドライブ(HDD)を使用して実現されることができ、より小さい容量のSSD記憶装置をSSDキャッシュとして機能することで、停電イベントの間にコンテキスト状態および他のそのような情報の不揮発性記憶を可能にし、それによりシステム動作が再開するときに通電を速く実現することができる。また、フラッシュデバイスは、例えば、シリアルペリフェラルインターフェース(SPI)を介してプロセッサ1501に接続されることができる。このようなフラッシュデバイスは、前記システムのBIOSおよびその他のファームウェアを含むシステムソフトウェアの不揮発性記憶のために機能することができる。
記憶装置1508は、コンピュータアクセス可能な記憶媒体1509(機械可読記憶媒体またはコンピュータ可読媒体ともいう)を含むことができ、前記コンピュータアクセス可能な記憶媒体1509には、本明細書で記載されたいずれか1つまたは複数の方法または機能を具現化する1つまたは複数の命令セットまたはソフトウェア(例えば、モジュール、ユニットおよび/またはロジック1528)が格納されている。処理モジュール/ユニット/ロジック1528は、感知モジュール302、計画モジュール305、制御モジュール306および/またはセンサユニット500のような、前記構成要素のいずれかを表すことができる。処理モジュール/ユニット/ロジック1528は、更に、データ処理システム1500、メモリ1503、およびプロセッサ1501による実行中に、メモリ1503内および/またはプロセッサ1501内に完全的にまたは少なくとも部分的に存在してもよく、データ処理システム1500、メモリ1503およびプロセッサ1501も機械アクセス可能な記憶媒体を構成する。処理モジュール/ユニット/ロジック1528は、更に、ネットワークを介してネットワークインターフェース装置1505を経由して送受信されてもよい。
コンピュータ可読記憶媒体1509は、以上に説明されたいくつかのソフトウェア機能を永続的に格納するために用いることができる。コンピュータ可読記憶媒体1509は、例示的な実施形態において単一の媒体として示されるが、「コンピュータ可読記憶媒体」という用語は、前記1つまたは複数の命令セットが格納される単一の媒体または複数の媒体(例えば、集中型または分散型データベースおよび/または関連するキャッシュとサーバ)を含むと解釈されるものとする。「コンピュータ可読記憶媒体」という用語は、更に、命令セットを格納または符号化できる任意の媒体を含むと解釈されるものであり、前記命令セットは機械により実行され、本発明のいずれか1つまたは複数の方法を前記機械に実行させるためのものである。それゆえに、「コンピュータ可読記憶媒体」という用語は、ソリッドステートメモリ、光学媒体および磁気媒体、またはその他の任意の非一時的機械可読媒体を含むが、それらに限定されないと解釈されるものとする。
本明細書に記載の処理モジュール/ユニット/ロジック1528、構成要素およびその他の特徴は、ディスクリートハードウェア構成要素として実現されてもよく、またはASICS、FPGA、DSPまたは類似の装置のようなハードウェア構成要素の機能に統合されてもよい。更に、処理モジュール/ユニット/ロジック1528は、ハードウェア装置におけるファームウェアまたは機能性回路として実現されてもよい。更に、処理モジュール/ユニット/ロジック1528は、ハードウェア装置とソフトウェア構成要素の任意の組み合わせで実現されてもよい。
なお、システム1500は、データ処理システムの様々な構成要素を有するものとして示されているが、構成要素を相互接続する任意の特定のアーキテクチャまたは方式を表すことを意図するものではなく、そのような詳細は、本発明の実施形態とは密接な関係がない。また、より少ない構成要素またはより多くの構成要素を有するネットワークコンピュータ、ハンドヘルドコンピュータ、携帯電話、サーバ、および/またはその他のデータ処理システムも、本発明の実施形態と共に使用することができることを理解されたい。
上述した具体的な説明の一部は、既に、コンピュータメモリにおけるデータビットに対する演算のアルゴリズムと記号表現により示された。これらのアルゴリズムの説明および表現は、データ処理分野における当業者によって使用される、それらの作業実質を所属分野の他の当業者に最も効果的に伝達する方法である。本明細書では、一般的に、アルゴリズムは、所望の結果につながるセルフコンシステントシーケンスと考えられる。これらの動作は、物理量の物理的処置が必要なものである。
しかしながら、念頭に置くべきなのは、これらの用語および類似の用語の全ては、適切な物理量に関連付けられるものであり、これらの量を標識しやすくするためのものに過ぎない。以上の説明で他に明示的に記載されていない限り、本明細書の全体にわたって理解するべきなのは、添付された特許請求の範囲に記載するもののような用語による説明とは、コンピュータシステム、または類似の電子計算装置の動作およびプロセスを指し、前記コンピュータシステムまたは電子計算装置は、コンピュータシステムのレジスタおよびメモリにおける物理(電子)量として示されるデータを制御するとともに、前記データをコンピュータシステムメモリまたはレジスタまたはこのようなその他の情報記憶装置、伝送または表示装置において同様に物理量として示される別のデータに変換する。
本発明の実施形態は、本明細書の動作を実行するための装置にも関する。このようなコンピュータプログラムは、非一時的コンピュータ可読媒体に格納される。機械可読媒体は、機械(例えば、コンピュータ)により読み取り可能な形式で情報を格納するための任意のメカニズムを含む。例えば、機械可読(例えば、コンピュータ可読)媒体は、機械(例えば、コンピュータ)可読記憶媒体(例えば、読み出し専用メモリ(「ROM」)、ランダムアクセスメモリ(「RAM」)、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリ装置)を含む。
上述した図面において説明されたプロセスまたは方法は、ハードウェア(例えば、回路、専用ロジックなど)、ソフトウェア(例えば、非一時的コンピュータ可読媒体に具現化されるもの)、または両方の組み合わせを含む処理ロジックにより実行されることができる。前記プロセスまたは方法は、以上で特定の順序に応じて説明されたが、前記動作の一部が異なる順序で実行されてもよいことを理解されたい。また、一部の動作は、順番ではなく並行して実行されてもよい。
本発明の実施形態は、いずれの特定のプログラミング言語を参照することなく記載されている。理解すべきなのは、本明細書に記載の本発明の実施形態の教示を実現するために、様々なプログラミング言語を使用することができる。
本明細書において、本発明の実施形態は、既にその具体的な例示的な実施形態を参照しながら記載された。明らかなように、添付された特許請求の範囲に記載された本発明のより広い趣旨および範囲を逸脱しない限り、本発明に対して様々な変更を行うことができる。それゆえに、本明細書および図面は、限定的な意味でなく、例示的な意味で理解されるべきである。