本願は、概して、自動運転車を動作させることに関する。より具体的に、本願は、自動運転車(ADV)に用いられる密度に基づく信号機制御システムに関する。
自動運転モード(例えば、無人運転)で運転される車両は、乗員、特に運転手を運転関連の職務から解放することができる。自動運転モードで動作するとき、車両は搭載されたセンサを使用して様々な場所にナビゲートすることができ、ヒューマンコンピュータインタラクションが最小限に抑えられた場合、又は乗客がいない状況などで車両を走行させることができる。
信号機制御システムは2つのタイプがある。第1タイプの信号機制御システムは、一定の時間遅延するものである。このタイプの信号機制御システムは、信号機の信号を一定の時間遅延した後に同期する。第2のタイプの信号機制御システムは、密度に基づくものである。このタイプの信号機制御システムは、信号機の信号が信号機における交通の流れの密度と同期され、当該密度は、信号機の前に取り付けられたカメラ又は検出器によって提供されることができる。しかしながら、ADVでは、密度に基づく信号機制御システムのために、より多くの情報(例えば、ADVが次の信号機周期で交差点を通過する可能性がある)を得ることが可能である。カメラやモーションディテクタだけでなく、これらの情報を使用して信号機の信号の同期のタイミングを最適化して交通の流れを改善することができる。
本願の実施形態は、図面の各図において限定的ではなく例示的な形態で示され、図面における同じ図面符号が類似した素子を示す。
図1は、一実施形態に係るネットワークシステムを示すブロック図である。
図2は、一実施形態に係る自動運転車の一例を示すブロック図である。
一実施形態に係る自動運転車と組み合わせて使用される感知及び計画システムの一例を示すブロック図である。
一実施形態に係る自動運転車と組み合わせて使用される感知及び計画システムの一例を示すブロック図である。
図4は、一実施形態に係るADV情報送信モジュールの一例を示すブロック図である。
図5は、一実施形態に係る信号機サービスの一例を示すブロック図である。
いくつかの実施形態に係る信号機のネットワーク構成の一例を示すブロック図である。
いくつかの実施形態に係る信号機のネットワーク構成の一例を示すブロック図である。
図7は、一実施形態に係る信号交差点の一例を示すブロック図である。
図8は、一実施形態に係る信号機サービスによって実行される方法を示すフローチャートである。
図9は、一実施形態に係るデータ処理システムを示すブロック図である。
以下に説明される詳細を参照しながら本願の様々な実施形態及び態様を説明し、添付図面に前記様々な実施形態を示す。以下の説明及び図面は、本願を例示するものであり、限定するものとして解釈されるべきではない。本願の様々な実施形態を全面的に理解するために、複数の特定の詳細が説明される。しかしながら、本願の実施形態を簡単に説明するために、周知又は従来の詳細を記載していない。
本明細書において、「一実施形態」又は「実施形態」とは、該実施形態に関連して説明される特定の特徴、構造、又は特性が、本願の少なくとも1つの実施形態に含まれ得ることを意味する。「一実施形態において」という表現は、本明細書の様々な箇所での使用について、必ずしもすべてが同じ実施形態を指しているわけではない。
いくつかの実施形態によれば、システム及び方法は、ADVに対して交通の流れを誘導する。一実施形態によれば、システムは、1つ以上のADVから車両情報を受信する。システムは、ADVの車両情報に基づいて、各ADVの位置及び進行方向を判定する。各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は、手動モード、全自動運転モード、又は部分自動運転モードで動作することができる。
一実施形態において、自動運転車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と統合することができる。リアルタイム交通情報、MPOI情報、及び位置情報、並びにセンサシステム115によって検出又は検知されたリアルタイムローカル環境データ(例えば、障害物、オブジェクト、周辺車両)に基づいて、感知及び計画システム110は、指定された目的地までに安全かつ効率的に到着するように、最適なルートを計画し、計画されたルートに従って、例えば、制御システム111によって車両101を運転するようにする。
サーバ103は、様々なクライアントのためのデータ解析サービスを行うためのデータ解析システムであってもよい。一実施形態において、データ解析システム103は、データコレクタ121及び機械学習エンジン122を含む。データコレクタ121は、様々な車両(自動運転車又は人間の運転手によって運転される一般車両)から運転統計データ123を収集する。運転統計データ123は、発行された運転コマンド(例えば、スロットル、ブレーキ、ステアリングコマンド)及び車両のセンサによって異なるタイミングで捕捉された車両の応答(例えば、速度、加速度、減速度、方向)を指示する情報を含む。運転統計データ123は、異なるタイミングにおける運転環境を記述する情報(例えば、出発地及び目的地の位置を含むルート、MPOI、天気状況、並びに、道路状況(高速道路上の交通渋滞、交通中断、交通事故、道路建設、一時的な迂回路及び不明な障害物など))を含んでもよい。
機械学習エンジン122は、運転統計データ123に基づいて、様々な目的に応じて1組のルール及び/又は予測モデル124を生成又は訓練し、前記予測モデル124は、どのADVが所定の期間内に交差点に接近する可能性があるかを判定するための予測モデルを含む。信号機サービス125は、1つ以上のADVから位置及び/又はルート情報を受信し、その位置/ルート情報を信号機制御システムに送信して、交差点における信号機の現在の信号機信号の持続時間を調整することができる。
図3A及び図3Bは、一実施形態に係る自動運転車と組み合わせて使用される感知及び計画システムの一例を示すブロック図である。システム300は、図1の自動運転車101の一部として実現することができ、感知及び計画システム110、制御システム111、及びセンサシステム115を含むが、これらに限定されない。図3A〜図3Bに示すように、感知及び計画システム110は、位置決めモジュール301、感知モジュール302、予測モジュール303、決定モジュール304、計画モジュール305、制御モジュール306、ルーティングモジュール307、及びADV情報送信モジュール308を含むが、これらに限定されない。
モジュール301〜308の一部又は全部は、ソフトウェア、ハードウェア、又はそれらの組み合わせで実現されてもよい。例えば、これらのモジュールは、永続性記憶装置352にインストールされ、メモリ351にロードされ、1つ以上のプロセッサ(図示せず)によって実行されることができる。なお、これらのモジュールの一部又は全部は、図2の車両制御システム111のモジュールの一部又は全部と通信可能に接続され、又は一体化されてもよい。モジュール301〜308のいくつかは、集積モジュールとして一体化されることができる。
位置決めモジュール301は、自動運転車300の現在の位置(例えば、GPSユニット212を利用して)を決定し、ユーザの行程又はルートに関連する如何なるデータを管理する。位置決めモジュール301(地図及びルーティングモジュールともいう)は、ユーザの行程又はルートに関連する如何なるデータを管理する。ユーザは、例えば、ユーザインターフェースを介して、行程の出発地位置及び目的地を登録、指定することができる。位置決めモジュール301は、自動運転車300の地図及びルート情報311のような他の構成要素と通信して、行程関連データを取得する。例えば、位置決めモジュール301は、位置サーバ並びに地図及びPOI(MPOI)サーバから位置及びルート情報を取得することができる。位置サーバは位置サービスを提供し、MPOIサーバは、地図サービス及び特定の位置のPOIを提供し、地図及びルート情報311の一部としてキャッシュされることができる。自動運転車300がルートに沿って移動するとき、位置決めモジュール301は交通情報システム又はサーバからリアルタイム交通情報を得ることもできる。
感知モジュール302は、センサシステム115によって提供されるセンサデータと、位置決めモジュール301によって取得される位置決め情報とに基づいて、周囲環境への感知を決定する。感知情報は、一般的な運転手が運転手により運転されている車両の周囲で感知すべきものを表すことができる。感知は、例えばオブジェクトの形態を採用する車線構成(例えば、ストレート車線又はカーブ車線)、信号機信号、他の車両の相対位置、歩行者、建築物、横断歩道、又は他の交通関連標識(例えば、止まれ標識、ゆずれ標識など)を含むことができる。
感知モジュール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は前記オブジェクトを左側又は右側から追い抜くかを決定することができる。車両300が次の移動周期(例えば、次のルート/経路区間)でどのように動くかを記述する情報を含む計画及び制御データは、計画モジュール305によって生成される。例えば、計画及び制御データは、車両300に時速30マイル(mph)で10m移動し、次に25マイル(mph)で右車線に変更するように指示することができる。
計画及び制御データに基づいて、制御モジュール306は、計画及び制御データによって限定されたルート又は経路に基づいて、車両制御システム111に適切なコマンド又は信号を送信することによって、自動運転車を制御及び運転するようにする。前記計画及び制御データは、経路又はルートに沿って異なるタイミングで適切な車両設定又は運転パラメータ(例えば、スロットル、ブレーキ、及びステアリングコマンド)を使用して、車両をルート又は経路の第1点から第2点まで運転するのに十分な情報を含む。
一実施形態において、計画段階は、コマンドサイクルともいう複数の計画周期で実行され、例えば、時間間隔が100ミリ秒(ms)である周期ごとで実行される。計画周期又はコマンドサイクルのそれぞれについて、計画及び制御データに基づいて1つ以上の制御コマンドを発する。すなわち、100msごとに、計画モジュール305は、次のルート区間又は経路区間(例えば、目標位置及びADVが目標位置に到着するのに必要な時間を含む)を計画する。あるいは、計画モジュール305は、具体的な速度、方向、及び/又は操舵角などをさらに指定することができる。一実施形態において、計画モジュール305は、次の所定期間(例えば、5秒)のルート区間又は経路区間を計画する。各計画周期について、計画モジュール305は、前の周期で計画された目標位置に基づいて、現在の周期(例えば、次の5秒)に用いられる目標位置を計画する。次に、制御モジュール306は、現在の周期の計画及び制御データに基づいて、1つ以上の制御コマンド(例えば、スロットル、ブレーキ、ステアリング制御コマンド)を生成する。
なお、決定モジュール304及び計画モジュール305は、集積モジュールとして一体化されてもよい。決定モジュール304/計画モジュール305は、自動運転車の走行経路を決定するためのナビゲーションシステム又はナビゲーションシステムの機能を含んでもよい。例えば、ナビゲーションシステムは、自動運転車の以下の経路に沿った移動を達成するための一連の速度及び進行方向を決定することができる。前記経路では、最終的な目的地に通じる走行車線ベースの経路に沿って自動運転車を前進させる間に、感知された障害物を実質的に回避できる。目的地は、ユーザインターフェースシステム113を介したユーザ入力に従って設定することができる。ナビゲーションシステムは、自動運転車が走行している間に走行経路を動的に更新することができる。ナビゲーションシステムは、自動運転車に用いられる走行経路を決定するために、GPSシステム及び1つ以上の地図からのデータをマージすることができる。
決定モジュール304/計画モジュール305は、さらに、自動運転車の環境における潜在的な障害物を認識、評価、回避又は他の方法で追い抜くための衝突防止システム又は衝突防止システムの機能を含むことができる。例えば、衝突防止システムは、制御システム111の1つ以上のサブシステムを動作させることで、方向変更動作、カーブ走行動作、ブレーキ動作などを行うことによって、自動運転車のナビゲーション中の変更を行うことができる。衝突防止システムは、周囲の交通パターンや道路状況などに基づいて、実行可能な障害物回避動作を自動的に決定することができる。衝突防止システムは、他のセンサシステムが、自動運転車が方向変更して進入しようとする隣接領域における車両、建築障害物などを検出したときに、方向変更動作を行わないように構成されることができる。衝突防止システムは、自動運転車の乗員の安全性を最大限にするとともに、利用可能な動作を自動的に選択することができる。衝突防止システムは、自動運転車の客室内で最も少ない加速度を発生させると予測される回避動作を選択することができる。
一実施形態によれば、ADV情報送信モジュール308は、ADVがその位置及び/又はルート情報を信号機サービスにブロードキャストするためのインターフェースを提供する。いくつかの実施形態では、ADV情報送信モジュール308は、その位置情報を無線ネットワークを介して信号機サービスに定期的に送信し、ルート情報が変更された場合、又はルート情報が初めて信号機サービスに送信された場合にのみ、そのルート情報を信号機サービスのみに送信する。
図4は、一実施形態に係るADV情報送信モジュールの一例を示すブロック図である。図4を参照すると、ADV情報送信モジュール308は、ADVの位置情報及び/又はルート情報(例えば、図3AのADV情報313)を検索し、これらの情報を図1の信号機サービス125のような信号機サービスに定期的に送信する。一実施形態において、ADV情報送信モジュール308は、ADV情報を送信することができ、前記ADV情報は、ADVの時間情報400(例えば、現在時刻のタイムスタンプ)、速度/方向情報401、位置情報403、及びルート情報405を含むが、これらに限定されない。ADV情報は、信号機制御システムが将来の所定の期間に交差点の任意の方向における車両の密度を予測するのを補助可能な任意の情報とすることができる。
図5は、一実施形態に係る信号機サービスの一例を示すブロック図である。信号機サービス125は、複数のADVからADV情報を受信するための通信インターフェースを提供するために、サーバ103によってホストされるリモートサービスであってもよい。通信インターフェースは、アプリケーションプログラミングインターフェース(API)を介して行うことができる。また、信号機サービス125は、ADVがどの交差点に接近しているかを判定し、ADV情報を信号機制御システムに送信して交差点における信号機の持続時間を調整することができる。
一実施形態において、信号機サービス500は、ADV情報受信モジュール501と、ADV位置判定モジュール503と、交差点判定モジュール505と、ADV情報送信モジュール507とを含むことができる。ADV情報受信モジュール501は、1つ以上のADVからADV情報を受信することができる。ADV位置判定モジュール503は、ADVの位置を判定することができる。交差点判定モジュール505は、ADVに近い交差点(交差点511の一部として)を判定することができる。ADV情報送信モジュール507は、信号機制御システム(例えば、信号機コントローラ509)へADV情報を送信することができる。一実施形態において、信号機コントローラ509は、アクセス可能な第三者によって維持されるコントローラであってもよく、信号機の信号を制御可能である。別の実施形態では、信号機コントローラ509及びサーバ103は、統合システムであってもよい。
図6A及び図6Bは、いくつかの実施形態に係る信号機のネットワーク構成の一例を示すブロック図である。図6Aに示すように、一実施形態において、信号機サービス125は、ネットワーク102を介して1つ以上のADV101に通信可能に接続することができる。信号機サービス125は、信号機333にアクセス可能で信号機333の持続時間を制御することができ、この場合、信号機サービス125は、受信したADV情報に基づいて信号機333の持続時間を変更することができる。図6Bに示すように、一実施形態において、信号機サービス125は、ネットワーク102を介して1つ以上のADV101に通信可能に接続されることができるが、信号機333にアクセスすることも、制御することもできない。しかしながら、信号機サービス125は信、号機コントローラ509に通信可能に接続されることができ、信号機コントローラ509は信号機333にアクセス可能で、信号機333の持続時間を制御することができる。この場合、信号機サービス125は、信号機333へADV情報又はその表現を送り、信号機333の持続時間を制御して、受信したADV情報に基づいて、青色、黄色及び赤色の灯火信号を切り替える。
図7は、一実施形態に係る信号交差点の一例を示すブロック図である。図7に示すように、このシナリオ(シーン)では、ADV101は、南から交差点700に接近し、進行方向が北行き方向である。一実施形態において、ADV101は、ADVの進行方向、ルート、及び/又は位置などのADV情報を、図1の信号機サービス125のような信号機サービスへ周期的に送信する。信号機サービス125は、ADV101からこれらのADV情報を定期的に受信し、他の複数のADVからADV情報を受信する。信号機サービス125は、受信したADV情報に基づいて、ADV101を地図上のある場所にマップして、ADV情報が有効であるか否かを評価するチェックを行うことができる。一実施形態において、有効性をチェックするために、信号機サービス125は、位置、進行方向、及び/又はルート情報が合理的であるか否かをチェックすることができる。チェックが合理的であるように実行されると、信号機サービス125は、ADV情報に基づいて、ADV101が特定の交差点に接近しているか否かを判定することができる。チェックが不合理である場合、ADV情報を破棄することができ、信号機サービス125は、エラーメッセージをADV101に返信することができる。ADV101が交差点(例えば、交差点700)に接近していると判定された場合、信号機サービス125は、図1のルール/予測モデル124の一部とした予測モデルを、ADV情報(取得された任意の交通情報を含む)に適用して、ADV101がいつ交差点700に到着するかを予測する。予測された時間に基づいて、信号機サービス125は、ADV情報又はその表現を図5の信号機コントローラ509のような信号機システムへ送信することができる。次いで、信号機システム又は信号機コントローラ509は、ADV情報又はその表現を用いて、交差点700における信号機の持続時間を調整することができる。
一実施形態において、信号機サービス125によって信号機コントローラ509に送信されたADV情報の表現は、信号機サービス125によってADV101の位置及び進行方向に基づいて判定された接近する信号機の信号機ID及びタイムスタンプを含むことができる。このような場合、例えば、信号機サービス125は、ADV(例えば、ADV101)が信号機703に対応する交差点(例えば、交差点700)に到着し、約7秒後に信号機703を通過する必要があると予測されることを指示するために、現在の世界時を「20180326150101」(例えば、年:2018、月:03、日付:26、時:15、分:01、秒:01)として、「20180326150108」である到着予定時刻(ETA)のタイムスタンプを有するペイロード及び信号機ID「703」を送信することができる。到着時刻は、現在のタイムスタンプからETAタイムスタンプを減算することによって計算することができる。なお、信号機701〜707は、図6Aの信号機333の一部であってもよい。
一実施形態において、受信されたETAタイムスタンプ及び信号機IDに基づいて、信号機コントローラ509は、信号機703の灯火信号の持続時間を調整し、且つ、センサ711を乗り越え及び/又はADV101が交差点700に到着する前にセンサ711において車両の検出をシミュレートする。ここで、信号機703は、通常、信号機703に装着された、赤外線センサ711のようなセンサ又は任意の密度捕捉装置によって制御可能である。別の実施形態では、信号機703に対応するセンサ711によって取得されたデータ(例えば、交通密度など)を、受信されたADV情報に追加することができ、信号機コントローラ509は、交通密度及びADV情報に基づいて、密度に基づく信号機制御アルゴリズムを実行して、信号機703に用いられる交通信号の持続時間を調整するタイミングを決定することができる。このような密度に基づく信号機制御アルゴリズムは、信号機における第1の方向の交通の流れを誘導し、当該信号機における第1の方向の交通密度は当該信号機における第2の方向の交通密度よりも高い。別の実施形態において、信号機サービス125は、ADV101の現在時刻、位置、進行方向及び/又はルート情報を信号機コントローラ509へ送信することができる。次に、信号機コントローラ509は、どの信号機と、ADV101が交差点700に接近するおおよその時間とを判断することができる。ADV情報に含まれる時間情報は、データ伝送の遅延が交差点700におけるADVの推定到着時間の計算に影響しないことを確実にすることができる。なお、上記ではADV101からのADV情報について説明したが、信号機サービス125は、他のADVから複数のADV情報を同時に受信することができる。いくつかの実施形態において、信号機サービス125及び信号機コントローラ509を有するサーバ103は、統合システムであってもよい。
図8は、一実施形態に係る信号機サービスによって実行される方法を示すフローチャートである。プロセス800は、ソフトウェア、ハードウェア、又はそれらの組み合わせを含む処理ロジックによって実行することができる。例えば、プロセス800は、図1の信号機サービス125によって実行されることができる。図8に示すように、ブロック801において、処理ロジックは、1つ以上のADVから車両情報を受信する。ブロック802において、処理ロジックは、ADVの車両情報に基づいて、各ADVの位置及び進行方向を決定する。ブロック803において、各ADVについて、処理ロジックは、ADVの位置及び進行方向に基づいて、ADVが交差点に接近しているか否かを判定する。ブロック804において、処理ロジックは、ADVが交差点に接近していると判定されたことに応じて、ADVの車両情報を信号機制御システム(例えば、信号機コントローラ509)に送信し、ここで、信号機制御システムは、ADVが交差点に到着する前に、交差点に配置された1つ以上の信号機の灯火信号の持続時間を調整することを含めて、車両情報に基づいて交差点における交通の流れを誘導する。
一実施形態において、ADVからの車両情報は、ADVの時間情報、位置情報、速度情報、及びルート情報を含む。一実施形態において、信号機制御システムは、交差点で1つ以上の信号機を動作させることを含めて交差点で交通の流れを誘導する。
一実施形態において、ADVが交差点に接近しているか否かを判定することは、ADVが交差点の所定の接近範囲内にあるか否かを判定することと、ルート情報に基づいて、ADVの現在の道路区間が交差点に通じているか否かを判定することと、ADVを交差点へ進行させる方向がADVの進行方向とマッチするか否かを判定することとを含む。一実施形態において、信号機制御システムは、ADVの車両情報を使用して、密度に基づく信号機制御アルゴリズムを実行する。別の実施形態では、密度に基づく信号機制御アルゴリズムは、交差点へ接近が予想された車両又は交差点に到着した車両の数に基づいて実行される。一実施形態において、密度に基づく信号機制御アルゴリズムは、交差点における第1の方向の交通の流れを誘導し、第1の方向の車両密度が第2の方向よりも高い。
なお、以上に例示及び説明された構成要素の一部又は全ては、ソフトウェア、ハードウェア、又はこれらの組み合わせで実現されることができる。例えば、このような構成要素は、永続性記憶装置にインストールされるとともに記憶されたソフトウェアとして実現されてもよく、前記ソフトウェアは、本願にわたって記載されたプロセス又は動作を実施するように、プロセッサ(図示せず)でメモリにロードして実行されてもよい。あるいは、このような構成要素は、集積回路(例えば、特定用途向け集積回路又はASIC)、デジタルシグナルプロセッサ(DSP)、又はフィールドプログラマブルゲートアレイ(FPGA)のような専用ハードウェアにプログラミング又は埋め込まれた実行可能なコードとして実現されてもよく、前記実行可能なコードはアプリケーションからの対応するドライバー及び/又はオペレーティングシステムを介してアクセスすることができる。さらに、このような構成要素は、ソフトウェア構成要素が一つ以上の特定のコマンドによってアクセス可能なコマンドセットの一部として、プロセッサ又はプロセッサコアにおける特定のハードウェアロジックとして実現されることができる。
図10は、本願の一実施形態と組み合わせて使用可能なデータ処理システムを例示的に示すブロック図である。例えば、システム1500は、図1の感知及び計画システム110、信号機サービス125、又はサーバ103〜104のいずれかのような、前記プロセス又は方法のいずれかを実行する前記データ処理システムのいずれかを表すことができる。システム1500は、複数の異なる構成要素を含むことができる。これらの構成要素は、集積回路(IC)、集積回路の一部、ディスクリート型電子デバイス、又はコンピュータシステムのマザーボード若しくはアドインカードのような回路基板に適するその他のモジュールとして実現されることができ、又は、他の形態でコンピュータシステムのシャーシ内に組み込まれた構成要素として実現されることができる。
なお、システム1500は、コンピュータシステムの複数の構成要素の高レベルビューを示すことを意図している。しかしながら、理解するべきのは、特定の実施例において付加的構成要素が存在してもよく、引いて、その他の実施例において示された構成要素を異なる配置にすることが可能である。システム1500は、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、サーバ、携帯電話、メディアプレヤー、パーソナルデジタルアシスタント(PDA)、スマートウォッチ、パーソナルコミュニケーター、ゲーム装置、ネットワークルーター又はハブ、無線アクセスポイント(AP)又はリピーター、セット・トップボックス、又はこれらの組み合わせを表すことができる。さらに、単一の機器又はシステムのみが示されたが、「機器」又は「システム」という用語は、ここで説明されるいずれか一種以上の方法を実施するための、単独で又は共同で1つ(又は複数)のコマンドセットを実行する機器又はシステムの任意の組み合わせも含まれると解釈されるものとする。
一実施形態において、システム1500は、バス又はインターコネクト1510を介して接続される、プロセッサ1501と、メモリ1503と、装置1505〜1508とを含む。プロセッサ1501は、単一のプロセッサコア又は複数のプロセッサコアを含む単一のプロセッサ又は複数のプロセッサを表すことができる。プロセッサ1501は、マイクロプロセッサ、中央処理装置(CPU)などのような、一つ以上の汎用プロセッサを表すことができる。より具体的には、プロセッサ1501は、複雑コマンドセットコンピューティング(CISC)マイクロプロセッサ、縮小コマンドセットコンピューティング(RISC)マイクロプロセッサ、超長コマンド語(VLIW)マイクロプロセッサ、又はその他のコマンドセットを実行するプロセッサ、又はコマンドセットの組み合わせを実行するプロセッサであってもよい。また、プロセッサ1501は、特定用途向け集積回路(ASIC)、セルラー又はベースバンドプロセッサ、フィールドプログラマブルゲートアレイ(FPGA)、デジタルシグナルプロセッサ(DSP)、ネットワークプロセッサ、グラフィックプロセッサ、通信プロセッサ、暗号化プロセッサ、コプロセッサ、組込みプロセッサ、又はコマンドを処理可能な任意の他のタイプのロジックのような、一つ以上の専用プロセッサであってもよい。
プロセッサ1501は、超低電圧プロセッサのような低電力マルチコアプロセッサソケットであってもよく、前記システムの様々な構成要素と通信するための主処理ユニット及び中央ハブとして機能することができる。このようなプロセッサは、システムオンチップ(SoC)として実現されることができる。プロセッサ1501は、本明細書で説明される動作及びステップを実行するためのコマンドを実行するように構成される。システム1500は、さらに所望によるグラフィックサブシステム1504と通信するグラフィックインターフェースを含むことができ、グラフィックサブシステム1504は、表示コントローラ、グラフィックプロセッサ、及び/又は表示装置を含むことができる。
プロセッサ1501は、メモリ1503と通信することができ、メモリ1503は、一実施形態において、所定量のシステムメモリを提供するための複数のメモリ装置によって実現されることができる。メモリ1503は、ランダムアクセスメモリ(RAM)、ダイナミックRAM(DRAM)、シンクロナスDRAM(SDRAM)、スタティックRAM(SRAM)、又はその他のタイプの記憶装置のような、一つ以上の揮発性記憶(又はメモリ)装置を含むことができる。メモリ1503は、プロセッサ1501又はその他の任意の装置により実行されるコマンドシーケンスを含む情報を記憶することができる。例えば、様々なオペレーティングシステム、デバイスドライバ、ファームウェア(例えば、ベーシックインプット/アウトプットシステム又はBIOS)、及び/又はアプリケーションの実行可能なコード及び/又はデータは、メモリ1503にロードされ、プロセッサ1501により実行されることができる。オペレーティングシステムは、例えば、ロボットオペレーティングシステム(ROS)、Microsoft(登録商標)社のWindows(登録商標)オペレーティングシステム、アップル社のMacOS(登録商標)/iOS(登録商標)、Google(登録商標)社のAndroid(登録商標)、LINUX、UNIX(登録商標)、又はその他のリアルタイム若しくは組込みオペレーティングシステムのような、任意のタイプのオペレーティングシステムであってもよい。
システム1500は、さらに、ネットワークインターフェース装置1505、所望による入力装置1506、及びその他の所望によるIO装置1507を含む装置1505〜1508のようなIO装置を含むことができる。ネットワークインターフェース装置1505は、無線送受信機及び/又はネットワークインターフェースカード(NIC)を含むことができる。前記無線送受信機は、WiFi送受信機、赤外線送受信機、ブルートゥース(登録商標)送受信機、WiMax送受信機、無線携帯電話送受信機、衛星送受信機(例えば、全地球測位システム(GPS)送受信機)、又はその他の無線周波数(RF)送受信機、又はこれらの組み合わせであってもよい。NICは、イーサネット(登録商標)カード(Ethernetcard)であってもよい。
入力装置1506は、マウス、タッチパネル、タッチスクリーン(表示装置1504と統合されてもよい)、ポインター装置(例えば、スタイラス)、及び/又はキーボード(例えば、物理キーボード又はタッチスクリーンの一部として表示された仮想キーボード)を含むことができる。例えば、入力装置1506は、タッチスクリーンと接続するタッチスクリーンコントローラを含むことができる。タッチスクリーン及びタッチスクリーンコントローラは、例えば、様々なタッチ感応技術(コンデンサ、抵抗、赤外線、及び表面音波の技術を含むが、これらに限定されない)のいずれか、並びにその他の近接センサアレイ、又は、タッチスクリーンと接触する一つ以上の点を決定するためのその他の素子を用いて、それらの接触及び移動又は間欠を検出することができる。
IO装置1507は、音声装置を含むことができる。音声装置は、音声認識、音声複製、デジタル記録、及び/又は電話機能のような音声サポート機能を促進するために、スピーカ及び/又はマイクロフォンを含んでもよい。その他のIO装置1507は、さらに、ユニバーサルシリアルバス(USB)ポート、パラレルポート、シリアルポート、プリンタ、ネットワークインターフェース、バスブリッジ(例えば、PCIーPCIブリッジ)、センサ(例えば、加速度計のようなモーションセンサ、ジャイロスコープ、磁力計、光センサ、コンパス、近接センサなど)、又はこれらの組み合わせを含むことができる。装置1507は、さらに結像処理サブシステム(例えば、カメラ)を含むことができ、前記結像処理サブシステムは、写真及びビデオ断片の記録のようなカメラ機能を促進するための、電荷結合素子(CCD)又は相補型金属酸化物半導体(CMOS)光学センサのような光学センサを含むことができる。特定のセンサは、センサハブ(図示せず)を介してインターコネクト1510に接続されることができ、キーボード又はサーマルセンサのようなその他の装置はシステム1500の具体的な配置又は設計により、組込みコントローラ(図示せず)により制御されることができる。
データ、アプリケーション、一つ以上のオペレーティングシステムなどの情報の永続性記憶を提供するために、プロセッサ1501には、大容量記憶装置(図示せず)が接続されることができる。様々な実施形態において、より薄くて軽量なシステム設計を可能にしながら、システムの応答性を向上するために、このような大容量記憶装置は、ソリッドステート装置(SSD)によって実現されることができる。しかしながら、その他の実施形態において、大容量記憶装置は、主にハードディスクドライブ(HDD)を使用して実現することができ、より小さい容量のSSD記憶装置をSSDキャッシュとして機能することで、停電イベントの間にコンテキスト状態及び他のそのような情報の不揮発性記憶を可能にし、それによりシステム動作が再開するときに通電を速く実現することができる。また、フラッシュデバイスは、例えば、シリアルペリフェラルインターフェース(SPI)を介してプロセッサ1501に接続されることができる。このようなフラッシュデバイスは、前記システムのBIOS及びその他のファームウェアを含むシステムソフトウェアの不揮発性記憶のために機能することができる。
記憶装置1508は、コンピュータアクセス可能な記憶媒体1509(機械可読記憶媒体又はコンピュータ可読記憶媒体ともいう)を含むことができ、前記コンピュータアクセス可能な記憶媒体1509には、本明細書で記載されたいずれか一種以上の方法又は機能を具体化する一つ以上のコマンドセット又はソフトウェア(例えば、モジュール、ユニット、及び/又はロジック1528)が記憶されている。処理モジュール/ユニット/ロジック1528は、例えば、図3AのADV情報送信モジュール308のような、前記構成要素のいずれかを表すことができる。処理モジュール/ユニット/ロジック1528は、さらに、データ処理システム1500、メモリ1503、及びプロセッサ1501による実行中に、メモリ1503内及び/又はプロセッサ1501内に完全的に又は少なくとも部分的に存在してもよく、データ処理システム1500、メモリ1503、及びプロセッサ1501も機械アクセス可能な記憶媒体を構成する。処理モジュール/ユニット/ロジック1528は、さらに、ネットワークによってネットワークインターフェース装置1505を経由して送受信されてもよい。
コンピュータ可読記憶媒体1509は、以上に説明されたいくつかのソフトウェア機能を永続的に記憶するために用いることができる。コンピュータ可読記憶媒体1509は、例示的な実施形態において単一の媒体として示されるが、「コンピュータ可読記憶媒体」という用語は、前記一つ以上のコマンドセットが記憶される単一の媒体又は複数の媒体(例えば、集中型又は分散型データベース、及び/又は関連するキャッシュとサーバ)を含むと解釈されるものとする。また、「コンピュータ可読記憶媒体」という用語は、コマンドセットを記憶又は符号化できる任意の媒体を含むと解釈されるものであり、前記コマンドセットは機械により実行され、本願のいずれか一種以上の方法を前記機械に実行させるためのものである。それゆえに、「コンピュータ可読記憶媒体」という用語は、ソリッドステートメモリ、光学媒体及び磁気媒体、又はその他の任意の非一時的な機械可読媒体を含むが、これらに限定されないと解釈されるものとする。
本明細書に記載の処理モジュール/ユニット/ロジック1528、構成要素及びその他の特徴は、ディスクリートハードウェア構成要素として実現されてもよく、又はASICS、FPGA、DSP又は類似の装置のようなハードウェア構成要素の機能に統合されてもよい。さらに、処理モジュール/ユニット/ロジック1528は、ハードウェア装置におけるファームウェア又は機能性回路として実現されてもよい。さらに、処理モジュール/ユニット/ロジック1528は、ハードウェア装置とソフトウェア構成要素の任意の組み合わせで実現されてもよい。
なお、システム1500は、データ処理システムの様々な構成要素を有するものとして示されているが、構成要素を相互接続する任意の特定のアーキテクチャ又は方式を表すことを意図するものではなく、そのような詳細は、本願の実施形態と密接な関係がない。また、より少ない構成要素又はより多くの構成要素を有するネットワークコンピュータ、ハンドヘルドコンピュータ、携帯電話、サーバ、及び/又はその他のデータ処理システムも、本願の実施形態と共に使用することができることを理解されたい。
前記具体的な説明の一部は、既に、コンピュータメモリにおけるデータビットに対する動作のアルゴリズムと記号表現で示される。これらのアルゴリズムの説明及び表現は、データ処理分野における当業者によって使用される、それらの作業実質を所属分野の他の当業者に最も効果的に伝達する方法である。本明細書では、一般的に、アルゴリズムは、所望の結果につながるセルフコンシステントシーケンスと考えられる。これらの動作は、物理量の物理的処置が必要なものである。
しかしながら、念頭に置くべきのは、これらの用語及び類似の用語の全ては、適切な物理量に関連付けられるものであり、これらの量を標識しやすくするためのものに過ぎない。以上の説明で他に明示的に記載されていない限り、本明細書の全体にわたって理解するべきのは、添付された特許請求の範囲に記載するもののような用語による説明とは、コンピュータシステム、又は類似の電子計算装置の動作又はプロセスを指し、前記コンピュータシステム又は電子計算装置は、コンピュータシステムのレジスタ及びメモリにおける物理(電子)量として示されるデータを制御するとともに、前記データをコンピュータシステムメモリ又はレジスタ又はこのようなその他の情報記憶装置、伝送又は表示装置において同様に物理量として示される別のデータに変換する。
本願の実施形態は、本明細書の動作を実行するための装置にも関する。このようなコンピュータプログラムは、非一時的なコンピュータ可読媒体に記憶される。機械可読媒体は、機械(例えば、コンピュータ)により読み取り可能な形式で情報を記憶するための任意のメカニズムを含む。例えば、機械可読(例えば、コンピュータ可読)媒体は、機械(例えば、コンピュータ)可読記憶媒体(例えば、読み出し専用メモリ(「ROM」)、ランダムアクセスメモリ(「RAM」)、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリ装置)を含む。
上述した図面において説明されたプロセス又は方法は、ハードウェア(例えば、回路、専用ロジックなど)、ソフトウェア(例えば、非一時的なコンピュータ可読媒体に具現化されるもの)、又は両方の組み合わせを含む処理ロジックにより実行されることができる。前記プロセス又は方法は、以上で特定の順序に応じて説明されたが、前記動作の一部が異なる順序で実行されてもよいことを理解されたい。また、一部の動作は、順番ではなく並行して実行できる。
本願の実施形態は、いずれの特定のプログラミング言語を参照することなく記載されている。理解するべきのは、本明細書に記載の本願の実施形態の教示を実現するために、様々なプログラミング言語を使用することができる。
前記明細書において、本願の実施形態は、既にその具体的な例示的な実施形態を参照しながら記載された。明らかなように、添付された特許請求の範囲に記載された本願のより広い趣旨及び範囲を逸脱しない限り、本発明に対して様々な変更を行うことができる。それゆえに、本明細書及び図面は、限定的な意味でなく、例示的な意味で理解されるべきである。
本願は、概して、自動運転車を動作させることに関する。より具体的に、本願は、自動運転車(ADV)に用いられる密度に基づく信号機制御システムに関する。
自動運転モード(例えば、無人運転)で運転される車両は、乗員、特に運転手を運転関連の職務から解放することができる。自動運転モードで動作するとき、車両は搭載されたセンサを使用して様々な場所にナビゲートすることができ、ヒューマンコンピュータインタラクションが最小限に抑えられた場合、又は乗客がいない状況などで車両を走行させることができる。
信号機制御システムは2つのタイプがある。第1タイプの信号機制御システムは、一定の時間遅延するものである。このタイプの信号機制御システムは、信号機の信号を一定の時間遅延した後に同期する。第2のタイプの信号機制御システムは、密度に基づくものである。このタイプの信号機制御システムは、信号機の信号が信号機における交通の流れの密度と同期され、当該密度は、信号機の前に取り付けられたカメラ又は検出器によって提供されることができる。しかしながら、ADVでは、密度に基づく信号機制御システムのために、より多くの情報(例えば、ADVが次の信号機周期で交差点を通過する可能性がある)を得ることが可能である。カメラやモーションディテクタだけでなく、これらの情報を使用して信号機の信号の同期のタイミングを最適化して交通の流れを改善することができる。
本願の一態様では、自動運転車に用いられる交通の流れを誘導するコンピュータ実施方法が提供される。前記方法は、1つ以上の自動運転車から車両情報を受信するステップと、前記自動運転車の車両情報に基づいて、各自動運転車の位置及び進行方向を判定するステップと、前記自動運転車のそれぞれに対して、前記自動運転車の位置及び進行方向に基づいて、前記自動運転車が交差点に接近しているか否かを判定するステップと、前記自動運転車が前記交差点に接近していると判定されたことに応じて、前記自動運転車の車両情報を信号機制御システムに送信するステップであって、前記信号機制御システムは、前記自動運転車が前記交差点に到着する前に、前記交差点に配置された1つ以上の信号機の灯火信号の持続時間を調整することを含み、前記車両情報に基づいて前記交差点における交通の流れを誘導する、ステップと、を含む。
本願の他の態様では、コマンドが格納された非一時的な機械可読媒体が提供される。前記コマンドが1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサに動作を実行させ、前記動作は、1つ以上の自動運転車から車両情報を受信することと、前記自動運転車の車両情報に基づいて、各自動運転車の位置及び進行方向を判定することと、前記自動運転車のそれぞれに対して、前記自動運転車の位置及び進行方向に基づいて、前記自動運転車が交差点に接近しているか否かを判定することと、前記自動運転車が前記交差点に接近していると判定されたことに応じて、前記自動運転車の車両情報を信号機制御システムに送信することであって、前記信号機制御システムは、前記自動運転車が前記交差点に到着する前に、前記交差点に配置された1つ以上の信号機の灯火信号の持続時間を調整することを含み、前記車両情報に基づいて前記交差点における交通の流れを誘導することと、を含む。
本願のさらに別の態様では、データ処理システムが提供される。当該データ処理システムは、1つ以上のプロセッサと、コマンドを格納するために前記プロセッサに結合されたメモリと、を備えるデータ処理システムであって、前記コマンドが前記1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサに動作を実行させ、前記動作は、1つ以上の自動運転車から車両情報を受信することと、前記自動運転車の車両情報に基づいて、各自動運転車の位置及び進行方向を判定することと、前記自動運転車のそれぞれに対して、前記自動運転車の位置及び進行方向に基づいて、前記自動運転車が交差点に接近しているか否かを判定することと、前記自動運転車が前記交差点に接近していると判定されたことに応じて、前記自動運転車の車両情報を信号機制御システムに送信することであって、前記信号機制御システムは、前記自動運転車が前記交差点に到着する前に、前記交差点に配置された1つ以上の信号機の灯火信号の持続時間を調整することを含み、前記車両情報に基づいて前記交差点における交通の流れを誘導することと、を含む。
本願の実施形態は、図面の各図において限定的ではなく例示的な形態で示され、図面における同じ図面符号が類似した素子を示す。
図1は、一実施形態に係るネットワークシステムを示すブロック図である。
図2は、一実施形態に係る自動運転車の一例を示すブロック図である。
一実施形態に係る自動運転車と組み合わせて使用される感知及び計画システムの一例を示すブロック図である。
一実施形態に係る自動運転車と組み合わせて使用される感知及び計画システムの一例を示すブロック図である。
図4は、一実施形態に係るADV情報送信モジュールの一例を示すブロック図である。
図5は、一実施形態に係る信号機サービスの一例を示すブロック図である。
いくつかの実施形態に係る信号機のネットワーク構成の一例を示すブロック図である。
いくつかの実施形態に係る信号機のネットワーク構成の一例を示すブロック図である。
図7は、一実施形態に係る信号交差点の一例を示すブロック図である。
図8は、一実施形態に係る信号機サービスによって実行される方法を示すフローチャートである。
図9は、一実施形態に係るデータ処理システムを示すブロック図である。
以下に説明される詳細を参照しながら本願の様々な実施形態及び態様を説明し、添付図面に前記様々な実施形態を示す。以下の説明及び図面は、本願を例示するものであり、限定するものとして解釈されるべきではない。本願の様々な実施形態を全面的に理解するために、複数の特定の詳細が説明される。しかしながら、本願の実施形態を簡単に説明するために、周知又は従来の詳細を記載していない。
本明細書において、「一実施形態」又は「実施形態」とは、該実施形態に関連して説明される特定の特徴、構造、又は特性が、本願の少なくとも1つの実施形態に含まれ得ることを意味する。「一実施形態において」という表現は、本明細書の様々な箇所での使用について、必ずしもすべてが同じ実施形態を指しているわけではない。
いくつかの実施形態によれば、システム及び方法は、ADVに対して交通の流れを誘導する。一実施形態によれば、システムは、1つ以上のADVから車両情報を受信する。システムは、ADVの車両情報に基づいて、各ADVの位置及び進行方向を判定する。各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は、手動モード、全自動運転モード、又は部分自動運転モードで動作することができる。
一実施形態において、自動運転車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と統合することができる。リアルタイム交通情報、MPOI情報、及び位置情報、並びにセンサシステム115によって検出又は検知されたリアルタイムローカル環境データ(例えば、障害物、オブジェクト、周辺車両)に基づいて、感知及び計画システム110は、指定された目的地までに安全かつ効率的に到着するように、最適なルートを計画し、計画されたルートに従って、例えば、制御システム111によって車両101を運転するようにする。
サーバ103は、様々なクライアントのためのデータ解析サービスを行うためのデータ解析システムであってもよい。一実施形態において、データ解析システム103は、データコレクタ121及び機械学習エンジン122を含む。データコレクタ121は、様々な車両(自動運転車又は人間の運転手によって運転される一般車両)から運転統計データ123を収集する。運転統計データ123は、発行された運転コマンド(例えば、スロットル、ブレーキ、ステアリングコマンド)及び車両のセンサによって異なるタイミングで捕捉された車両の応答(例えば、速度、加速度、減速度、方向)を指示する情報を含む。運転統計データ123は、異なるタイミングにおける運転環境を記述する情報(例えば、出発地及び目的地の位置を含むルート、MPOI、天気状況、並びに、道路状況(高速道路上の交通渋滞、交通中断、交通事故、道路建設、一時的な迂回路及び不明な障害物など))を含んでもよい。
機械学習エンジン122は、運転統計データ123に基づいて、様々な目的に応じて1組のルール及び/又は予測モデル124を生成又は訓練し、前記予測モデル124は、どのADVが所定の期間内に交差点に接近する可能性があるかを判定するための予測モデルを含む。信号機サービス125は、1つ以上のADVから位置及び/又はルート情報を受信し、その位置/ルート情報を信号機制御システムに送信して、交差点における信号機の現在の信号機信号の持続時間を調整することができる。
図3A及び図3Bは、一実施形態に係る自動運転車と組み合わせて使用される感知及び計画システムの一例を示すブロック図である。システム300は、図1の自動運転車101の一部として実現することができ、感知及び計画システム110、制御システム111、及びセンサシステム115を含むが、これらに限定されない。図3A〜図3Bに示すように、感知及び計画システム110は、位置決めモジュール301、感知モジュール302、予測モジュール303、決定モジュール304、計画モジュール305、制御モジュール306、ルーティングモジュール307、及びADV情報送信モジュール308を含むが、これらに限定されない。
モジュール301〜308の一部又は全部は、ソフトウェア、ハードウェア、又はそれらの組み合わせで実現されてもよい。例えば、これらのモジュールは、永続性記憶装置352にインストールされ、メモリ351にロードされ、1つ以上のプロセッサ(図示せず)によって実行されることができる。なお、これらのモジュールの一部又は全部は、図2の車両制御システム111のモジュールの一部又は全部と通信可能に接続され、又は一体化されてもよい。モジュール301〜308のいくつかは、集積モジュールとして一体化されることができる。
位置決めモジュール301は、自動運転車300の現在の位置(例えば、GPSユニット212を利用して)を決定し、ユーザの行程又はルートに関連する如何なるデータを管理する。位置決めモジュール301(地図及びルーティングモジュールともいう)は、ユーザの行程又はルートに関連する如何なるデータを管理する。ユーザは、例えば、ユーザインターフェースを介して、行程の出発地位置及び目的地を登録、指定することができる。位置決めモジュール301は、自動運転車300の地図及びルート情報311のような他の構成要素と通信して、行程関連データを取得する。例えば、位置決めモジュール301は、位置サーバ並びに地図及びPOI(MPOI)サーバから位置及びルート情報を取得することができる。位置サーバは位置サービスを提供し、MPOIサーバは、地図サービス及び特定の位置のPOIを提供し、地図及びルート情報311の一部としてキャッシュされることができる。自動運転車300がルートに沿って移動するとき、位置決めモジュール301は交通情報システム又はサーバからリアルタイム交通情報を得ることもできる。
感知モジュール302は、センサシステム115によって提供されるセンサデータと、位置決めモジュール301によって取得される位置決め情報とに基づいて、周囲環境への感知を決定する。感知情報は、一般的な運転手が運転手により運転されている車両の周囲で感知すべきものを表すことができる。感知は、例えばオブジェクトの形態を採用する車線構成(例えば、ストレート車線又はカーブ車線)、信号機信号、他の車両の相対位置、歩行者、建築物、横断歩道、又は他の交通関連標識(例えば、止まれ標識、ゆずれ標識など)を含むことができる。
感知モジュール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は前記オブジェクトを左側又は右側から追い抜くかを決定することができる。車両300が次の移動周期(例えば、次のルート/経路区間)でどのように動くかを記述する情報を含む計画及び制御データは、計画モジュール305によって生成される。例えば、計画及び制御データは、車両300に時速30マイル(mph)で10m移動し、次に25マイル(mph)で右車線に変更するように指示することができる。
計画及び制御データに基づいて、制御モジュール306は、計画及び制御データによって限定されたルート又は経路に基づいて、車両制御システム111に適切なコマンド又は信号を送信することによって、自動運転車を制御及び運転するようにする。前記計画及び制御データは、経路又はルートに沿って異なるタイミングで適切な車両設定又は運転パラメータ(例えば、スロットル、ブレーキ、及びステアリングコマンド)を使用して、車両をルート又は経路の第1点から第2点まで運転するのに十分な情報を含む。
一実施形態において、計画段階は、コマンドサイクルともいう複数の計画周期で実行され、例えば、時間間隔が100ミリ秒(ms)である周期ごとで実行される。計画周期又はコマンドサイクルのそれぞれについて、計画及び制御データに基づいて1つ以上の制御コマンドを発する。すなわち、100msごとに、計画モジュール305は、次のルート区間又は経路区間(例えば、目標位置及びADVが目標位置に到着するのに必要な時間を含む)を計画する。あるいは、計画モジュール305は、具体的な速度、方向、及び/又は操舵角などをさらに指定することができる。一実施形態において、計画モジュール305は、次の所定期間(例えば、5秒)のルート区間又は経路区間を計画する。各計画周期について、計画モジュール305は、前の周期で計画された目標位置に基づいて、現在の周期(例えば、次の5秒)に用いられる目標位置を計画する。次に、制御モジュール306は、現在の周期の計画及び制御データに基づいて、1つ以上の制御コマンド(例えば、スロットル、ブレーキ、ステアリング制御コマンド)を生成する。
なお、決定モジュール304及び計画モジュール305は、集積モジュールとして一体化されてもよい。決定モジュール304/計画モジュール305は、自動運転車の走行経路を決定するためのナビゲーションシステム又はナビゲーションシステムの機能を含んでもよい。例えば、ナビゲーションシステムは、自動運転車の以下の経路に沿った移動を達成するための一連の速度及び進行方向を決定することができる。前記経路では、最終的な目的地に通じる走行車線ベースの経路に沿って自動運転車を前進させる間に、感知された障害物を実質的に回避できる。目的地は、ユーザインターフェースシステム113を介したユーザ入力に従って設定することができる。ナビゲーションシステムは、自動運転車が走行している間に走行経路を動的に更新することができる。ナビゲーションシステムは、自動運転車に用いられる走行経路を決定するために、GPSシステム及び1つ以上の地図からのデータをマージすることができる。
決定モジュール304/計画モジュール305は、さらに、自動運転車の環境における潜在的な障害物を認識、評価、回避又は他の方法で追い抜くための衝突防止システム又は衝突防止システムの機能を含むことができる。例えば、衝突防止システムは、制御システム111の1つ以上のサブシステムを動作させることで、方向変更動作、カーブ走行動作、ブレーキ動作などを行うことによって、自動運転車のナビゲーション中の変更を行うことができる。衝突防止システムは、周囲の交通パターンや道路状況などに基づいて、実行可能な障害物回避動作を自動的に決定することができる。衝突防止システムは、他のセンサシステムが、自動運転車が方向変更して進入しようとする隣接領域における車両、建築障害物などを検出したときに、方向変更動作を行わないように構成されることができる。衝突防止システムは、自動運転車の乗員の安全性を最大限にするとともに、利用可能な動作を自動的に選択することができる。衝突防止システムは、自動運転車の客室内で最も少ない加速度を発生させると予測される回避動作を選択することができる。
一実施形態によれば、ADV情報送信モジュール308は、ADVがその位置及び/又はルート情報を信号機サービスにブロードキャストするためのインターフェースを提供する。いくつかの実施形態では、ADV情報送信モジュール308は、その位置情報を無線ネットワークを介して信号機サービスに定期的に送信し、ルート情報が変更された場合、又はルート情報が初めて信号機サービスに送信された場合にのみ、そのルート情報を信号機サービスのみに送信する。
図4は、一実施形態に係るADV情報送信モジュールの一例を示すブロック図である。図4を参照すると、ADV情報送信モジュール308は、ADVの位置情報及び/又はルート情報(例えば、図3AのADV情報313)を検索し、これらの情報を図1の信号機サービス125のような信号機サービスに定期的に送信する。一実施形態において、ADV情報送信モジュール308は、ADV情報を送信することができ、前記ADV情報は、ADVの時間情報400(例えば、現在時刻のタイムスタンプ)、速度/方向情報401、位置情報403、及びルート情報405を含むが、これらに限定されない。ADV情報は、信号機制御システムが将来の所定の期間に交差点の任意の方向における車両の密度を予測するのを補助可能な任意の情報とすることができる。
図5は、一実施形態に係る信号機サービスの一例を示すブロック図である。信号機サービス125は、複数のADVからADV情報を受信するための通信インターフェースを提供するために、サーバ103によってホストされるリモートサービスであってもよい。通信インターフェースは、アプリケーションプログラミングインターフェース(API)を介して行うことができる。また、信号機サービス125は、ADVがどの交差点に接近しているかを判定し、ADV情報を信号機制御システムに送信して交差点における信号機の持続時間を調整することができる。
一実施形態において、信号機サービス500は、ADV情報受信モジュール501と、ADV位置判定モジュール503と、交差点判定モジュール505と、ADV情報送信モジュール507とを含むことができる。ADV情報受信モジュール501は、1つ以上のADVからADV情報を受信することができる。ADV位置判定モジュール503は、ADVの位置を判定することができる。交差点判定モジュール505は、ADVに近い交差点(交差点511の一部として)を判定することができる。ADV情報送信モジュール507は、信号機制御システム(例えば、信号機コントローラ509)へADV情報を送信することができる。一実施形態において、信号機コントローラ509は、アクセス可能な第三者によって維持されるコントローラであってもよく、信号機の信号を制御可能である。別の実施形態では、信号機コントローラ509及びサーバ103は、統合システムであってもよい。
図6A及び図6Bは、いくつかの実施形態に係る信号機のネットワーク構成の一例を示すブロック図である。図6Aに示すように、一実施形態において、信号機サービス125は、ネットワーク102を介して1つ以上のADV101に通信可能に接続することができる。信号機サービス125は、信号機333にアクセス可能で信号機333の持続時間を制御することができ、この場合、信号機サービス125は、受信したADV情報に基づいて信号機333の持続時間を変更することができる。図6Bに示すように、一実施形態において、信号機サービス125は、ネットワーク102を介して1つ以上のADV101に通信可能に接続されることができるが、信号機333にアクセスすることも、制御することもできない。しかしながら、信号機サービス125は信、号機コントローラ509に通信可能に接続されることができ、信号機コントローラ509は信号機333にアクセス可能で、信号機333の持続時間を制御することができる。この場合、信号機サービス125は、信号機333へADV情報又はその表現を送り、信号機333の持続時間を制御して、受信したADV情報に基づいて、青色、黄色及び赤色の灯火信号を切り替える。
図7は、一実施形態に係る信号交差点の一例を示すブロック図である。図7に示すように、このシナリオ(シーン)では、ADV101は、南から交差点700に接近し、進行方向が北行き方向である。一実施形態において、ADV101は、ADVの進行方向、ルート、及び/又は位置などのADV情報を、図1の信号機サービス125のような信号機サービスへ周期的に送信する。信号機サービス125は、ADV101からこれらのADV情報を定期的に受信し、他の複数のADVからADV情報を受信する。信号機サービス125は、受信したADV情報に基づいて、ADV101を地図上のある場所にマップして、ADV情報が有効であるか否かを評価するチェックを行うことができる。一実施形態において、有効性をチェックするために、信号機サービス125は、位置、進行方向、及び/又はルート情報が合理的であるか否かをチェックすることができる。チェックが合理的であるように実行されると、信号機サービス125は、ADV情報に基づいて、ADV101が特定の交差点に接近しているか否かを判定することができる。チェックが不合理である場合、ADV情報を破棄することができ、信号機サービス125は、エラーメッセージをADV101に返信することができる。ADV101が交差点(例えば、交差点700)に接近していると判定された場合、信号機サービス125は、図1のルール/予測モデル124の一部とした予測モデルを、ADV情報(取得された任意の交通情報を含む)に適用して、ADV101がいつ交差点700に到着するかを予測する。予測された時間に基づいて、信号機サービス125は、ADV情報又はその表現を図5の信号機コントローラ509のような信号機システムへ送信することができる。次いで、信号機システム又は信号機コントローラ509は、ADV情報又はその表現を用いて、交差点700における信号機の持続時間を調整することができる。
一実施形態において、信号機サービス125によって信号機コントローラ509に送信されたADV情報の表現は、信号機サービス125によってADV101の位置及び進行方向に基づいて判定された接近する信号機の信号機ID及びタイムスタンプを含むことができる。このような場合、例えば、信号機サービス125は、ADV(例えば、ADV101)が信号機703に対応する交差点(例えば、交差点700)に到着し、約7秒後に信号機703を通過する必要があると予測されることを指示するために、現在の世界時を「20180326150101」(例えば、年:2018、月:03、日付:26、時:15、分:01、秒:01)として、「20180326150108」である到着予定時刻(ETA)のタイムスタンプを有するペイロード及び信号機ID「703」を送信することができる。到着時刻は、現在のタイムスタンプからETAタイムスタンプを減算することによって計算することができる。なお、信号機701〜707は、図6Aの信号機333の一部であってもよい。
一実施形態において、受信されたETAタイムスタンプ及び信号機IDに基づいて、信号機コントローラ509は、信号機703の灯火信号の持続時間を調整し、且つ、センサ711を乗り越え及び/又はADV101が交差点700に到着する前にセンサ711において車両の検出をシミュレートする。ここで、信号機703は、通常、信号機703に装着された、赤外線センサ711のようなセンサ又は任意の密度捕捉装置によって制御可能である。別の実施形態では、信号機703に対応するセンサ711によって取得されたデータ(例えば、交通密度など)を、受信されたADV情報に追加することができ、信号機コントローラ509は、交通密度及びADV情報に基づいて、密度に基づく信号機制御アルゴリズムを実行して、信号機703に用いられる交通信号の持続時間を調整するタイミングを決定することができる。このような密度に基づく信号機制御アルゴリズムは、信号機における第1の方向の交通の流れを誘導し、当該信号機における第1の方向の交通密度は当該信号機における第2の方向の交通密度よりも高い。別の実施形態において、信号機サービス125は、ADV101の現在時刻、位置、進行方向及び/又はルート情報を信号機コントローラ509へ送信することができる。次に、信号機コントローラ509は、どの信号機と、ADV101が交差点700に接近するおおよその時間とを判断することができる。ADV情報に含まれる時間情報は、データ伝送の遅延が交差点700におけるADVの推定到着時間の計算に影響しないことを確実にすることができる。なお、上記ではADV101からのADV情報について説明したが、信号機サービス125は、他のADVから複数のADV情報を同時に受信することができる。いくつかの実施形態において、信号機サービス125及び信号機コントローラ509を有するサーバ103は、統合システムであってもよい。
図8は、一実施形態に係る信号機サービスによって実行される方法を示すフローチャートである。プロセス800は、ソフトウェア、ハードウェア、又はそれらの組み合わせを含む処理ロジックによって実行することができる。例えば、プロセス800は、図1の信号機サービス125によって実行されることができる。図8に示すように、ブロック801において、処理ロジックは、1つ以上のADVから車両情報を受信する。ブロック802において、処理ロジックは、ADVの車両情報に基づいて、各ADVの位置及び進行方向を決定する。ブロック803において、各ADVについて、処理ロジックは、ADVの位置及び進行方向に基づいて、ADVが交差点に接近しているか否かを判定する。ブロック804において、処理ロジックは、ADVが交差点に接近していると判定されたことに応じて、ADVの車両情報を信号機制御システム(例えば、信号機コントローラ509)に送信し、ここで、信号機制御システムは、ADVが交差点に到着する前に、交差点に配置された1つ以上の信号機の灯火信号の持続時間を調整することを含めて、車両情報に基づいて交差点における交通の流れを誘導する。
一実施形態において、ADVからの車両情報は、ADVの時間情報、位置情報、速度情報、及びルート情報を含む。一実施形態において、信号機制御システムは、交差点で1つ以上の信号機を動作させることを含めて交差点で交通の流れを誘導する。
一実施形態において、ADVが交差点に接近しているか否かを判定することは、ADVが交差点の所定の接近範囲内にあるか否かを判定することと、ルート情報に基づいて、ADVの現在の道路区間が交差点に通じているか否かを判定することと、ADVを交差点へ進行させる方向がADVの進行方向とマッチするか否かを判定することとを含む。一実施形態において、信号機制御システムは、ADVの車両情報を使用して、密度に基づく信号機制御アルゴリズムを実行する。別の実施形態では、密度に基づく信号機制御アルゴリズムは、交差点へ接近が予想された車両又は交差点に到着した車両の数に基づいて実行される。一実施形態において、密度に基づく信号機制御アルゴリズムは、交差点における第1の方向の交通の流れを誘導し、第1の方向の車両密度が第2の方向よりも高い。
なお、以上に例示及び説明された構成要素の一部又は全ては、ソフトウェア、ハードウェア、又はこれらの組み合わせで実現されることができる。例えば、このような構成要素は、永続性記憶装置にインストールされるとともに記憶されたソフトウェアとして実現されてもよく、前記ソフトウェアは、本願にわたって記載されたプロセス又は動作を実施するように、プロセッサ(図示せず)でメモリにロードして実行されてもよい。あるいは、このような構成要素は、集積回路(例えば、特定用途向け集積回路又はASIC)、デジタルシグナルプロセッサ(DSP)、又はフィールドプログラマブルゲートアレイ(FPGA)のような専用ハードウェアにプログラミング又は埋め込まれた実行可能なコードとして実現されてもよく、前記実行可能なコードはアプリケーションからの対応するドライバー及び/又はオペレーティングシステムを介してアクセスすることができる。さらに、このような構成要素は、ソフトウェア構成要素が一つ以上の特定のコマンドによってアクセス可能なコマンドセットの一部として、プロセッサ又はプロセッサコアにおける特定のハードウェアロジックとして実現されることができる。
図10は、本願の一実施形態と組み合わせて使用可能なデータ処理システムを例示的に示すブロック図である。例えば、システム1500は、図1の感知及び計画システム110、信号機サービス125、又はサーバ103〜104のいずれかのような、前記プロセス又は方法のいずれかを実行する前記データ処理システムのいずれかを表すことができる。システム1500は、複数の異なる構成要素を含むことができる。これらの構成要素は、集積回路(IC)、集積回路の一部、ディスクリート型電子デバイス、又はコンピュータシステムのマザーボード若しくはアドインカードのような回路基板に適するその他のモジュールとして実現されることができ、又は、他の形態でコンピュータシステムのシャーシ内に組み込まれた構成要素として実現されることができる。
なお、システム1500は、コンピュータシステムの複数の構成要素の高レベルビューを示すことを意図している。しかしながら、理解するべきのは、特定の実施例において付加的構成要素が存在してもよく、引いて、その他の実施例において示された構成要素を異なる配置にすることが可能である。システム1500は、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、サーバ、携帯電話、メディアプレヤー、パーソナルデジタルアシスタント(PDA)、スマートウォッチ、パーソナルコミュニケーター、ゲーム装置、ネットワークルーター又はハブ、無線アクセスポイント(AP)又はリピーター、セット・トップボックス、又はこれらの組み合わせを表すことができる。さらに、単一の機器又はシステムのみが示されたが、「機器」又は「システム」という用語は、ここで説明されるいずれか一種以上の方法を実施するための、単独で又は共同で1つ(又は複数)のコマンドセットを実行する機器又はシステムの任意の組み合わせも含まれると解釈されるものとする。
一実施形態において、システム1500は、バス又はインターコネクト1510を介して接続される、プロセッサ1501と、メモリ1503と、装置1505〜1508とを含む。プロセッサ1501は、単一のプロセッサコア又は複数のプロセッサコアを含む単一のプロセッサ又は複数のプロセッサを表すことができる。プロセッサ1501は、マイクロプロセッサ、中央処理装置(CPU)などのような、一つ以上の汎用プロセッサを表すことができる。より具体的には、プロセッサ1501は、複雑コマンドセットコンピューティング(CISC)マイクロプロセッサ、縮小コマンドセットコンピューティング(RISC)マイクロプロセッサ、超長コマンド語(VLIW)マイクロプロセッサ、又はその他のコマンドセットを実行するプロセッサ、又はコマンドセットの組み合わせを実行するプロセッサであってもよい。また、プロセッサ1501は、特定用途向け集積回路(ASIC)、セルラー又はベースバンドプロセッサ、フィールドプログラマブルゲートアレイ(FPGA)、デジタルシグナルプロセッサ(DSP)、ネットワークプロセッサ、グラフィックプロセッサ、通信プロセッサ、暗号化プロセッサ、コプロセッサ、組込みプロセッサ、又はコマンドを処理可能な任意の他のタイプのロジックのような、一つ以上の専用プロセッサであってもよい。
プロセッサ1501は、超低電圧プロセッサのような低電力マルチコアプロセッサソケットであってもよく、前記システムの様々な構成要素と通信するための主処理ユニット及び中央ハブとして機能することができる。このようなプロセッサは、システムオンチップ(SoC)として実現されることができる。プロセッサ1501は、本明細書で説明される動作及びステップを実行するためのコマンドを実行するように構成される。システム1500は、さらに所望によるグラフィックサブシステム1504と通信するグラフィックインターフェースを含むことができ、グラフィックサブシステム1504は、表示コントローラ、グラフィックプロセッサ、及び/又は表示装置を含むことができる。
プロセッサ1501は、メモリ1503と通信することができ、メモリ1503は、一実施形態において、所定量のシステムメモリを提供するための複数のメモリ装置によって実現されることができる。メモリ1503は、ランダムアクセスメモリ(RAM)、ダイナミックRAM(DRAM)、シンクロナスDRAM(SDRAM)、スタティックRAM(SRAM)、又はその他のタイプの記憶装置のような、一つ以上の揮発性記憶(又はメモリ)装置を含むことができる。メモリ1503は、プロセッサ1501又はその他の任意の装置により実行されるコマンドシーケンスを含む情報を記憶することができる。例えば、様々なオペレーティングシステム、デバイスドライバ、ファームウェア(例えば、ベーシックインプット/アウトプットシステム又はBIOS)、及び/又はアプリケーションの実行可能なコード及び/又はデータは、メモリ1503にロードされ、プロセッサ1501により実行されることができる。オペレーティングシステムは、例えば、ロボットオペレーティングシステム(ROS)、Microsoft(登録商標)社のWindows(登録商標)オペレーティングシステム、アップル社のMacOS(登録商標)/iOS(登録商標)、Google(登録商標)社のAndroid(登録商標)、LINUX、UNIX(登録商標)、又はその他のリアルタイム若しくは組込みオペレーティングシステムのような、任意のタイプのオペレーティングシステムであってもよい。
システム1500は、さらに、ネットワークインターフェース装置1505、所望による入力装置1506、及びその他の所望によるIO装置1507を含む装置1505〜1508のようなIO装置を含むことができる。ネットワークインターフェース装置1505は、無線送受信機及び/又はネットワークインターフェースカード(NIC)を含むことができる。前記無線送受信機は、WiFi送受信機、赤外線送受信機、ブルートゥース(登録商標)送受信機、WiMax送受信機、無線携帯電話送受信機、衛星送受信機(例えば、全地球測位システム(GPS)送受信機)、又はその他の無線周波数(RF)送受信機、又はこれらの組み合わせであってもよい。NICは、イーサネット(登録商標)カード(Ethernetcard)であってもよい。
入力装置1506は、マウス、タッチパネル、タッチスクリーン(表示装置1504と統合されてもよい)、ポインター装置(例えば、スタイラス)、及び/又はキーボード(例えば、物理キーボード又はタッチスクリーンの一部として表示された仮想キーボード)を含むことができる。例えば、入力装置1506は、タッチスクリーンと接続するタッチスクリーンコントローラを含むことができる。タッチスクリーン及びタッチスクリーンコントローラは、例えば、様々なタッチ感応技術(コンデンサ、抵抗、赤外線、及び表面音波の技術を含むが、これらに限定されない)のいずれか、並びにその他の近接センサアレイ、又は、タッチスクリーンと接触する一つ以上の点を決定するためのその他の素子を用いて、それらの接触及び移動又は間欠を検出することができる。
IO装置1507は、音声装置を含むことができる。音声装置は、音声認識、音声複製、デジタル記録、及び/又は電話機能のような音声サポート機能を促進するために、スピーカ及び/又はマイクロフォンを含んでもよい。その他のIO装置1507は、さらに、ユニバーサルシリアルバス(USB)ポート、パラレルポート、シリアルポート、プリンタ、ネットワークインターフェース、バスブリッジ(例えば、PCIーPCIブリッジ)、センサ(例えば、加速度計のようなモーションセンサ、ジャイロスコープ、磁力計、光センサ、コンパス、近接センサなど)、又はこれらの組み合わせを含むことができる。装置1507は、さらに結像処理サブシステム(例えば、カメラ)を含むことができ、前記結像処理サブシステムは、写真及びビデオ断片の記録のようなカメラ機能を促進するための、電荷結合素子(CCD)又は相補型金属酸化物半導体(CMOS)光学センサのような光学センサを含むことができる。特定のセンサは、センサハブ(図示せず)を介してインターコネクト1510に接続されることができ、キーボード又はサーマルセンサのようなその他の装置はシステム1500の具体的な配置又は設計により、組込みコントローラ(図示せず)により制御されることができる。
データ、アプリケーション、一つ以上のオペレーティングシステムなどの情報の永続性記憶を提供するために、プロセッサ1501には、大容量記憶装置(図示せず)が接続されることができる。様々な実施形態において、より薄くて軽量なシステム設計を可能にしながら、システムの応答性を向上するために、このような大容量記憶装置は、ソリッドステート装置(SSD)によって実現されることができる。しかしながら、その他の実施形態において、大容量記憶装置は、主にハードディスクドライブ(HDD)を使用して実現することができ、より小さい容量のSSD記憶装置をSSDキャッシュとして機能することで、停電イベントの間にコンテキスト状態及び他のそのような情報の不揮発性記憶を可能にし、それによりシステム動作が再開するときに通電を速く実現することができる。また、フラッシュデバイスは、例えば、シリアルペリフェラルインターフェース(SPI)を介してプロセッサ1501に接続されることができる。このようなフラッシュデバイスは、前記システムのBIOS及びその他のファームウェアを含むシステムソフトウェアの不揮発性記憶のために機能することができる。
記憶装置1508は、コンピュータアクセス可能な記憶媒体1509(機械可読記憶媒体又はコンピュータ可読記憶媒体ともいう)を含むことができ、前記コンピュータアクセス可能な記憶媒体1509には、本明細書で記載されたいずれか一種以上の方法又は機能を具体化する一つ以上のコマンドセット又はソフトウェア(例えば、モジュール、ユニット、及び/又はロジック1528)が記憶されている。処理モジュール/ユニット/ロジック1528は、例えば、図3AのADV情報送信モジュール308のような、前記構成要素のいずれかを表すことができる。処理モジュール/ユニット/ロジック1528は、さらに、データ処理システム1500、メモリ1503、及びプロセッサ1501による実行中に、メモリ1503内及び/又はプロセッサ1501内に完全的に又は少なくとも部分的に存在してもよく、データ処理システム1500、メモリ1503、及びプロセッサ1501も機械アクセス可能な記憶媒体を構成する。処理モジュール/ユニット/ロジック1528は、さらに、ネットワークによってネットワークインターフェース装置1505を経由して送受信されてもよい。
コンピュータ可読記憶媒体1509は、以上に説明されたいくつかのソフトウェア機能を永続的に記憶するために用いることができる。コンピュータ可読記憶媒体1509は、例示的な実施形態において単一の媒体として示されるが、「コンピュータ可読記憶媒体」という用語は、前記一つ以上のコマンドセットが記憶される単一の媒体又は複数の媒体(例えば、集中型又は分散型データベース、及び/又は関連するキャッシュとサーバ)を含むと解釈されるものとする。また、「コンピュータ可読記憶媒体」という用語は、コマンドセットを記憶又は符号化できる任意の媒体を含むと解釈されるものであり、前記コマンドセットは機械により実行され、本願のいずれか一種以上の方法を前記機械に実行させるためのものである。それゆえに、「コンピュータ可読記憶媒体」という用語は、ソリッドステートメモリ、光学媒体及び磁気媒体、又はその他の任意の非一時的な機械可読媒体を含むが、これらに限定されないと解釈されるものとする。
本明細書に記載の処理モジュール/ユニット/ロジック1528、構成要素及びその他の特徴は、ディスクリートハードウェア構成要素として実現されてもよく、又はASICS、FPGA、DSP又は類似の装置のようなハードウェア構成要素の機能に統合されてもよい。さらに、処理モジュール/ユニット/ロジック1528は、ハードウェア装置におけるファームウェア又は機能性回路として実現されてもよい。さらに、処理モジュール/ユニット/ロジック1528は、ハードウェア装置とソフトウェア構成要素の任意の組み合わせで実現されてもよい。
なお、システム1500は、データ処理システムの様々な構成要素を有するものとして示されているが、構成要素を相互接続する任意の特定のアーキテクチャ又は方式を表すことを意図するものではなく、そのような詳細は、本願の実施形態と密接な関係がない。また、より少ない構成要素又はより多くの構成要素を有するネットワークコンピュータ、ハンドヘルドコンピュータ、携帯電話、サーバ、及び/又はその他のデータ処理システムも、本願の実施形態と共に使用することができることを理解されたい。
前記具体的な説明の一部は、既に、コンピュータメモリにおけるデータビットに対する動作のアルゴリズムと記号表現で示される。これらのアルゴリズムの説明及び表現は、データ処理分野における当業者によって使用される、それらの作業実質を所属分野の他の当業者に最も効果的に伝達する方法である。本明細書では、一般的に、アルゴリズムは、所望の結果につながるセルフコンシステントシーケンスと考えられる。これらの動作は、物理量の物理的処置が必要なものである。
しかしながら、念頭に置くべきのは、これらの用語及び類似の用語の全ては、適切な物理量に関連付けられるものであり、これらの量を標識しやすくするためのものに過ぎない。以上の説明で他に明示的に記載されていない限り、本明細書の全体にわたって理解するべきのは、添付された特許請求の範囲に記載するもののような用語による説明とは、コンピュータシステム、又は類似の電子計算装置の動作又はプロセスを指し、前記コンピュータシステム又は電子計算装置は、コンピュータシステムのレジスタ及びメモリにおける物理(電子)量として示されるデータを制御するとともに、前記データをコンピュータシステムメモリ又はレジスタ又はこのようなその他の情報記憶装置、伝送又は表示装置において同様に物理量として示される別のデータに変換する。
本願の実施形態は、本明細書の動作を実行するための装置にも関する。このようなコンピュータプログラムは、非一時的なコンピュータ可読媒体に記憶される。機械可読媒体は、機械(例えば、コンピュータ)により読み取り可能な形式で情報を記憶するための任意のメカニズムを含む。例えば、機械可読(例えば、コンピュータ可読)媒体は、機械(例えば、コンピュータ)可読記憶媒体(例えば、読み出し専用メモリ(「ROM」)、ランダムアクセスメモリ(「RAM」)、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリ装置)を含む。
上述した図面において説明されたプロセス又は方法は、ハードウェア(例えば、回路、専用ロジックなど)、ソフトウェア(例えば、非一時的なコンピュータ可読媒体に具現化されるもの)、又は両方の組み合わせを含む処理ロジックにより実行されることができる。前記プロセス又は方法は、以上で特定の順序に応じて説明されたが、前記動作の一部が異なる順序で実行されてもよいことを理解されたい。また、一部の動作は、順番ではなく並行して実行できる。
本願の実施形態は、いずれの特定のプログラミング言語を参照することなく記載されている。理解するべきのは、本明細書に記載の本願の実施形態の教示を実現するために、様々なプログラミング言語を使用することができる。
前記明細書において、本願の実施形態は、既にその具体的な例示的な実施形態を参照しながら記載された。明らかなように、添付された特許請求の範囲に記載された本願のより広い趣旨及び範囲を逸脱しない限り、本発明に対して様々な変更を行うことができる。それゆえに、本明細書及び図面は、限定的な意味でなく、例示的な意味で理解されるべきである。