本開示の実施形態は、自動運転車両の運転に関する。より具体的には、本開示の実施形態は、自動運転車両において、動的コスト関数を使用して、人間の運転者の車両を運転する挙動を模倣することに関する。
自動運転モード(例えば、無人運転)で動作する車両は、乗員(特に運転者)を運転に関連する職責から解放することができる。自動運転モードで運転するとき、車両は、車載センサを使用して様々な位置にナビゲートすることができ、これにより、車両は、最小限のヒューマンコンピュータインタラクションやまたは乗客なしの状況で走行することができる。運動計画および制御は、自動運転における重要な操作であり、これらの操作において行われる決定に有限状態機械を使用することができる。状態の選択は、通常、固定パラメータを有するコスト関数を用いて行うことができる。
例えば、静的障害物が存在する場合には、車両は、静的障害物との衝突を回避するために、計算された安全距離まで停止することができる。移動障害物が存在する場合には、車両は、速度を低下させ、その後に追従することができる。しかしながら、これらの事前定義された動作は、場合によっては不十分であり、運転者のような動作がより望ましい。
第1の態様によれば、本開示のいくつかの実施形態は、自動運転車両ADVを操作するためのコンピュータ実施方法であって、前記ADV前方の障害物の検出に応答して、前記障害物までの第1距離を決定するステップと、複数の計画サイクル毎に、複数のパラメータからなるパラメータセットにおける各パラメータのリアルタイム値に基づいて、前記第一距離からのオフセット量を決定し、前記第1の距離と前記オフセット量とに基づいて第2の距離を算出し、前記第2の距離に基づいて、前記ADVが前記障害物から前記第2の距離を有する地点に停止するように減速することができるように、前記ADVのこれからの速度を制御するための速度計画を実行する、ことを含む操作を繰り返して実行することを特徴とするコンピュータ実施方法を提供する。
第2の態様によれば、本開示のいくつかの実施形態は、自動運転車両ADVを動作させるための命令が記憶されている非一時的機械可読媒体であって、前記命令は、前記プロセッサによって実行されると、前記ADV前方の障害物の検出に応答して、前記障害物までの第1距離を決定するステップと、複数の計画サイクル毎に、複数のパラメータからなるパラメータセットにおけるそれぞれのパラメータのリアルタイム値に基づいて、前記第一距離からのオフセット量を決定し、前記第1の距離と前記オフセット量とに基づいて第2の距離を算出し、前記第2の距離に基づいて、前記ADVが前記障害物から前記第2の距離を有する地点に停止するように減速することができるように、前記ADVのこれからの速度を制御するための速度計画を実行する、を含む操作を前記プロセッサに実行させる非一時的機械可読媒体を提供する。
第3の態様によれば、本開示のいくつかの実施形態は、データ処理システムであって、プロセッサと、前記プロセッサに接続され且つ指令が記憶されたメモリとを含み、前記指令が前記プロセッサによって実行されると、前記ADV前方の障害物の検出に応答して、前記障害物までの第1距離を決定するステップと、複数の計画サイクル毎に、複数のパラメータからなるパラメータセットにおけるそれぞれのパラメータのリアルタイム値に基づいて、前記第一距離からのオフセット量を決定し、前記第1の距離と前記オフセット量とに基づいて第2の距離を算出し、前記第2の距離に基づいて、前記ADVが前記障害物から前記第2の距離を有する地点に停止するように減速することができるように、前記ADVのこれからの速度を制御するための速度計画を実行する、を含む操作を前記プロセッサに実行させる、データ処理システムを提供する。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本開示の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
一実施形態によるネットワーク化システムを示すブロック図である。
実施形態に係る自動運転車両の一例を示すブロック図である。
図3A~3B一実施形態に係る自動運転車両と共に使用される感知・計画システムの一例を示すブロック図である。
一実施形態に係るADVにおいて動的コスト関数を使用して、障害物に遭遇したときに人間の運転者の車両を運転する挙動を模倣するための例示的なシステムを示す。
図5A~図5C本実施形態に係る動的コスト関数によるプロセスの一例をグラフィカルに示す図である。
一実施形態に係るADVにおいて動的コスト関数を使用して、障害物に遭遇したときに人間の運転者が車両を運転する挙動を模倣する例示的なプロセスを示す。
以下に説明される詳細を参照しながら本発明の様々な実施形態及び態様を説明し、添付図面には上記の様々な実施形態が示される。以下の説明及び図面は、本発明を例示するためのものであり、限定するものとして解釈されるべきではない。本発明の様々な実施形態を全面的に理解するために、多くの特定の詳細を説明する。なお、本発明の実施形態を簡潔的に説明するように、周知又は従来技術の詳細について説明していない場合もある。
本明細書において、「一実施形態」又は「実施形態」とは、当該実施形態に基づいて説明された特定の特徴、構造又は特性が本発明の少なくとも一実施形態に含まれてもよいと意味する。「一実施形態では」という表現は、本明細書の全体において全てが同一の実施形態を指すとは限らない。
本開示の様々な実施形態は、ADVが障害物に遭遇した際に、人間の運転者が車両を操作する挙動を模倣するように、ADVの挙動を動的に調整するためのシステムおよび方法を提供する。動的コスト関数を使用して、一セットのパラメータのリアルタイム値を収集し、リアルタイム値を使用して、ADVが障害物の前方で停止することができる好ましい安全距離を絶えず調整することができる。
一実施形態では、例示的な方法は、ADVの前方にある障害物の検出に応答して、前記障害物までの第1の距離を決定するステップと、複数の計画サイクルのそれぞれについて、複数のパラメータからなるパラメータセットにおける各パラメータのリアルタイム値に基づいて、第1の距離からのオフセット量を決定し、第1の距離と前記オフセット量とに基づいて第2の距離を算出し、第2の距離に基づいて、ADVが前記障害物から第2の距離を有する地点に停止するように減速することができるように、ADVのこれからの速度を制御するための速度計画を実行する操作を繰り返して実行するステップとを含む。
一実施形態では、ADVが運転している限り、繰り返しの回数に上限はない。一実施形態では、繰り返しは、閉ループ形式で実行されてもよく、各回の繰り返しは、ADVの1つ又は複数の計画サイクルで実行される。
一実施形態では、第1の距離は、パラメータのリアルタイム値に関係なく、パラメータのセットを使用して固定パラメータコスト関数によって計算される安全距離である。パラメータのセットは、ADVの速度、ADVから障害物までの距離、およびADVの周囲の環境における速度制限を含む。ADV速度のリアルタイム値は、ADVのエンジンの毎分回転数(RPM)および/またはADVの1つ以上のセンサのデータから得ることができる。ADVから障害物までの距離のリアルタイム値は、ADVの1つまたは複数のセンサから収集される。
一実施形態では、制限速度は、前記ADVの経路計画のために使用されるデジタル地図から収集可能である。障害物は、歩行者、車両、または他の人間または非人間の障害物であってもよい。
上記の概要は、本開示の全ての態様の包括的なリストを含むものではない。本開示は、上記に要約された様々な態様のすべての適切な組み合わせから実施することができるすべてのシステム、コンピュータ媒体、および方法を含み、本開示の詳細な説明に開示されたシステム、コンピュータ媒体、および方法も含むことが想到し得る。
<自動運転車両>
図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と一体に統合されてもよい。リアルタイム交通情報、MPOI情報及び位置情報、並びにセンサシステム115によって検出又は検知されたリアルタイムローカル環境データ(例えば、障害物、オブジェクト、周辺車両)に基づいて、感知・計画システム110は、指定された目的地までに安全かつ効率的に到着するように、最適なルートを計画し、計画されたルートに従って、例えば、制御システム111によって車両101を走行させる。
サーバ103は、様々な顧客に対してデータ解析サービスを行うためのデータ解析システムであってもよい。一実施形態では、データ解析システム103は、データコレクタ121と、機械学習エンジン122とを備える。データコレクタ121は、様々な車両(自動運転車両又は人間の運転手によって運転される一般車両)から運転統計データ123を収集する。運転統計データ123は、発された運転命令(例えば、スロットル、ブレーキ、ステアリング命令)及び車両のセンサによって異なる時点で取得された車両の応答(例えば、速度、加速度、減速度、方向)を示す情報を含む。運転統計データ123は更に、異なる時点における走行環境を記述する情報、例えば、ルート(出発地位置及び目的地位置を含む)、MPOI、道路状況、天気状況などを含んでもよい。
機械学習エンジン122は、運転統計データ123に基づいて、様々な目的でルールセット、アルゴリズム及び/又は予測モデル124を生成又は訓練する。一実施形態では、例えば、アルゴリズム124は、経路計画および速度計画を最適化するための最適化方法を含む。最適化方法は、一組のコスト関数(例えば、動的コスト関数)を含むことができる。これらの機能は、円滑な経路をリアルタイムで生成するために自動運転車両にアップロードすることができる。
図3A及び図3Bは、いくつかの実施形態に係る自動運転車両と共に使用される感知・計画システムの一例を示すブロック図である。システム300は、図1の自動運転車両101の一部として実現することができ、感知・計画システム110、制御システム111及びセンサシステム115を含むが、それらに限定されない。図3A~図3Bに示すように、感知・計画システム110は、測位モジュール301、感知モジュール302、予測モジュール303、決定モジュール304、計画モジュール305、制御モジュール306、ルーティングモジュール307及び円滑化モジュール308を含むが、それらに限定されない。
モジュール301~308の一部または全部は、のうちの一部又は全部は、ソフトウェア、ハードウェア又はそれらの組み合わせで実現されていてもよい。例えば、これらのモジュールは、永続性記憶装置352にインストールされ、メモリ351にロードされ、1つ又は複数のプロセッサ(図示せず)によって実行されていてもよい。なお、これらのモジュールの一部又は全部は、図2の車両制御システム111のモジュールの一部又は全部と通信可能に接続されるか、又は一体に統合されていてもよい。例えば、決定モジュール304および計画モジュール305は、単一のモジュールに統合されてもよい。ルーティングモジュール307および平滑化モジュール308は、単一のモジュールに統合されてもよい。
測位モジュール301は、自動運転車両300の現在の位置(例えば、GPSユニット212を利用して)を特定し、ユーザの旅程又はルートに関連する如何なるデータを管理する。測位モジュール301(地図・ルートモジュールともいう)は、ユーザの旅程又はルートに関連する如何なるデータを管理する。ユーザは、例えば、ユーザインターフェースを介してログインして、旅程の出発地位置及び目的地を指定することができる。測位モジュール301は、自動運転車両300の地図・ルート情報311などの他の構成要素と通信して、旅程関連データを取得する。例えば、測位モジュール301は、位置サーバ及び地図・関心地点(MPOI)サーバから位置及びルート情報を取得することができる。位置サーバは位置サービスを提供し、MPOIサーバは、地図サービス及び特定位置のPOIを提供し、これらは地図・ルート情報311の一部としてキャッシュすることができる。自動運転車両300がルートに沿って移動するとき、測位モジュール301は交通情報システム又はサーバからリアルタイム交通情報を得ることも可能である。一実施形態では、地図・ルート情報311は、事前に永続性記憶装置352に格納されていてもよい。例えば、地図・ルート情報311は、事前に永続性記憶装置352にダウンロード又はコピーされていてもよい。
感知モジュール302は、センサシステム115により提供されたセンサデータと、測位モジュール301により取得された測位情報とに基づいて、周囲環境への感知を確定する。感知情報は、一般的な運転手が運転手により運転されている車両の周囲で感知すべきものを表すことができる。感知は、例えばオブジェクトの形態を採用する車線構成(例えば、直進車線又はカーブ車線)、信号機信号、他の車両の相対位置、歩行者、建築物、横断歩道、又は他の交通関連標識(例えば、止まれ標識、ゆずれ標識)などを含んでもよい。
感知モジュール302は、1つ又は複数のカメラによって取り込まれた画像を処理及び解析して、自動運転車両の環境内のオブジェクト及び/又は特徴を認識するためのコンピュータビジョンシステム又はコンピュータビジョンシステムの機能を含むことができる。前記オブジェクトは、交通信号、道路境界、他の車両、歩行者及び/又は障害物などを含むことができる。コンピュータビジョンシステムは、オブジェクト認識アルゴリズム、ビデオトラッキング及び他のコンピュータビジョン技術を使用することができる。いくつかの実施形態では、コンピュータビジョンシステムは、環境地図の描画、オブジェクトの追跡、及びオブジェクトの速度の推定などができる。感知モジュール302は、レーダ及び/又はLIDARのような他のセンサによって提供される他のセンサデータに基づいてオブジェクトを検出することもできる。
各オブジェクトについて、予測モジュール303は、その場合にオブジェクトがどのように挙動するかを予測する。この予測は、地図・ルート情報311と交通ルール312のセットを考慮した時点で走行環境を感知する感知データに基づいて実行される。例えば、オブジェクトが反対方向の車両であり、かつ現在の走行環境が交差点を含む場合、予測モジュール303は、車両が直進するか又は旋回するかを予測する。感知データが、交差点に信号機がないことを示す場合、予測モジュール303は、交差点に入る前に車両が完全に停止する必要があると予測する可能性がある。感知データが、車両が現在左折専用車線又は右折専用車線にあることを示す場合、予測モジュール303は、車両がそれぞれ左折又は右折する可能性がより高いと予測することが可能である。いくつかの実施形態では、以下でさらに詳しく説明するように、自動運転車両が環境又は地理的領域/場所を通って移動するときに、該環境又は地理的領域/場所の地図・ルート情報311をオンザフライで生成することができる(例えば、感知モジュール302によって生成される)。
各オブジェクトごとに対して、決定モジュール304はオブジェクトをどのように処置するかを決定する。例えば、特定のオブジェクト(例えば、交差ルートにおける他の車両)及びオブジェクトを記述するメタデータ(例えば、速度、方向、操舵角)について、決定モジュール304は前記オブジェクトと遇うときに如何に対応するか(例えば、追い越し、道譲り、停止、追い抜き)を決定する。決定モジュール304は、交通ルール又は運転ルール312などのルールセットに基づいてそのような決定を行うことができ、前記ルールセットは永続性記憶装置352に格納されていてもよい。
感知されたオブジェクトのそれぞれに対する決定に基づいて、計画モジュール305は、ルーティングモジュール307によって提供された基準線をベースとし、自動運転車両に対して経路又はルート並びに運転パラメータ(例えば、距離、速度及び/又は操舵角)を計画する。言い換えれば、特定のオブジェクトについて、決定モジュール304は該オブジェクトに対して何をするかを決定し、計画モジュール305はどのようにするかを決定する。例えば、特定のオブジェクトについて、決定モジュール304は前記オブジェクトを追い抜くか否かを決定することができ、計画モジュール305は前記オブジェクトを左側から追い抜くか又は右側から追い抜くかを決定することができる。計画及び制御データは、計画モジュール305により生成され、車両300が次の移動周期(例えば、次のルート/経路区間)にはどのように移動するかを記述する情報を含む。例えば、計画及び制御データは、車両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は、集積されたモジュールとして一体化されてもよい。
ルーティングモジュール307は、例えば、道路セグメント情報、道路セグメントの車線、および車線から縁部までの距離などの地図情報に基づいて基準経路を生成することができる。
基準点または車線基準点に基づいて、ルーティングモジュール307は、基準点を補間することによって基準線を生成することができ、生成された基準線は、車両車線上のADVを制御するための基準線として使用される。
平滑化モジュール308は、ルーティングモジュール307による基準線に基づいて、平滑化された道路基準線を生成することができる。例えば、平滑化モジュール308は、基準線に沿って複数の制御点を選択する。一実施形態では、制御点は、ルーティングモジュール307にによる基準線の基準点であってもよいし、基準線に沿った、互いにほぼ等しい距離を隔てた補間点であってもよい。平滑化モジュール308は、二次計画スプライン平滑化器と螺旋平滑化器との組み合わせを使用して、平滑化道路基準線を生成する。
いくつかの実施形態では、基準点は、ステーション-ラテラル(SL;station-lateral)座標などの相対座標系に変換することができる。ステーション-ラテラル座標系は、基準線に追従するように固定基準点を基準とする座標系である。例えば、座標(S,L)=(1,0)は、基準線上の停留点(すなわち、基準点)より1メートル前で且つ、ラテラルオフセットがゼロであることを表すことができる。基準点(S,L)=(2,1)は、基準線上の基準基準点より2メートルの前で且つ、基準線から側方、例えば左方に1メートル、ずれていることを表すことができる。
一実施形態では、平滑化モジュール308は、ルーティングモジュール307による基準線を表した基準点に基づいて平滑化基準線を生成する。決定モジュールおよび/または計画モジュール(例えば、決定モジュール304および/または計画モジュール305)が平滑基準線を感知された障害物および/または交通情報に組み込む前に、平滑基準線は、相対座標系(例えばSL座標系)に変換されてもよい。
一実施形態では、決定モジュール304は、ルーティングモジュール307による基準線(上述したように、平滑化モジュール308によって平滑化された基準線)に基づいて、ADVによって感知されたADV周辺の障害物および/または交通情報に基づいて、粗い経路輪郭を生成する。粗い経路輪郭は、永続的記憶装置352に記憶された経路/速度輪郭313の一部であってもよい。粗い経路輪郭は、基準線に沿って点を選択することによって生成される。これらの点のそれぞれについて、決定モジュール304は、オブジェクトと遭遇した時に如何するかに関連する1つまたは複数の障害物対策に基づいて、基準線の左側または右側に当該点を移動する(例えば、候補移動)が、残りの点はそのままにする。
例えば、一実施形態では、粗い経路輪郭は、経路の曲率および基準線および/または基準点から障害物までの距離に基づくコストからなるコスト関数によって生成される。基準線上の点を選択して、経路候補を示す候補移動として基準線の左側または右側に移動する。候補移動の各々は関連するコストを有する。動的計画を使用して、基準線上の1つ以上の点の候補移動に関するコストを、一度に1つの点で順次解いて、最適なコストを得ることができる。
経路候補の動的計画を使用して候補移動を繰り返して実行して、コスト関数(図3Aのコスト関数315の一部とする)によって、経路コストの最小の経路候補を探索して、粗い経路輪郭を生成する。コスト関数の例として、路線経路の曲率、ADVから感知された障害物までの距離、およびADVから基準線までの距離に基づくコストが挙げられる。一実施形態では、生成された粗い経路輪郭は、SLマップ/STグラフィック314の一部として永続的記憶装置352に記憶することができる。
一実施形態では、ステーション-ラテラル(SL)マップ生成器(図示せず)は、粗い経路輪郭の一部としてSLマップを生成する。SLマップは、ADVによって感知された障害物情報を含む2次元ジオメトリマップ(xy座標平面に類似)である。SLマップに基づいて、決定モジュール304は、障害物対策に従うADV経路を構成することができる。動的計画(動的最適化とも呼ばれる)は、数学的最適化方法であり、解決待ちの問題を一連の値関数として分解し、これらの値関数のそれぞれに対して、一回だけ解を求め、その解を記憶する。以後は同じ値関数が現れると、この前に求められた解を簡単に検索すればよく、その解を再計算する必要がなく、それにより計算時間を節約することができる。以上のプロセスは経路計画処理と呼ばれる。
経路計画が完了して、経路が生成されると、速度コスト関数を有するSTグラフを使用して、当該経路に沿った異なる時点での候補移動の合計速度コスト(例えば、加速/減速)を最適化することができ、ここで、速度計画と呼ばれる。経路上の各点(軌道点または経路点とも呼ばれる)は、その特定の時点における車両目標速度または計画速度に関連付けられており、車両目標速度または計画速度は、当該時点に対応する速度コストによって表すことができる。経路の総速度コストは、各ポイントの全ての速度コストを合計することによって計算することができる。
例えば、一実施形態において、総速度コスト関数は、以下のとおりであってもよい。
ここで、速度コストは、全ての時間進行点を含んで合計して得られたものであり、速度′は、加速度値又は隣接する二つの点の間で速度を変化させるコストを表し、速度"は、ジャーク値又は加速度値の導関数、又は、隣接する二つの点の間で加速度を変化させるコストを表し、距離は、ST点から目標位置までの距離を表す。ここで、速度コストモジュールは、2次計画最適化を使用して速度コストを最小化して、ステーション-タイムグラフを計算する。
一実施形態では、図4を参照すると、コスト関数315は、パラメータがリアルタイムで変化する閉ループアルゴリズムを実施した動的コスト関数316を含むことができる。ADVは、障害物に遭遇すると、先ず、減速する。動的コスト関数は、少なくともADVの現在速度および障害物からの距離に基づいて、パラメータが変更される。パラメータが変更されると、ADVは、新たに計算されたコストに応じて異なる挙動を取ることができる。例えば、ADVは、障害物の前で減速し、その後、ADVの速度および障害物からの距離の両方も減少させてもよい。その後、動的コスト関数のパラメータを変更して、新たなコストを計算することができる。新たなコストの増加につれて、ADVは、障害物に近づく時により遅く走行するようになる。動的コスト関数により、ADVは、障害物に遭遇したときに「走行しながら観察する」方法を使用することができる。
一実施形態では、決定モジュール304は、生成された粗い経路輪郭に基づいて、(経路/速度輪郭313の一部として)粗い速度輪郭を生成する。粗い速度輪郭は、ADVの制御中の特定の時点における最適速度を示すものである。粗い経路輪郭と同様に、ADVによって感知された障害物に応じて、(図3Aのコスト関数315の一部である)コスト関数に基づいて、最も低い速度コストを有する候補速度(例えば、加速または減速)を見つけるために、異なる時点における候補速度を繰り返して生成する動的計画が使用される。粗い速度輪郭により、ADVが障害物を追い越すべきか回避すべきかや、障害物の左側にあるか右側にあるかが決定される。一実施形態では、粗い速度輪郭は、SLマップ/STグラフ314の一部として、ステーション-タイム(ST)グラフを含む。ステーション-タイム(ST)グラフは、時間に対する走行距離を示す。
一実施形態では、計画モジュール305は、障害物対策および/または人工障壁に基づいて粗い経路輪郭を再計算することで、計画モジュール305がこれらの障壁の幾何学的空間への探索が阻止される。例えば、粗い速度輪郭に基づいて、左側から障害物に接近することが決定された場合、計画モジュール305は、ADVが右側から障害物に接近する状況に関する計算を阻止するために、障害物の右側に障壁を(障害物の形態として)設けることができる。一実施形態では、二次計画(QP)および/または螺旋平滑化器を使用して、(コスト関数315の一部として)経路コスト関数を最適化することによって粗い経路輪郭を再計算する。一実施形態では、再計算された粗い経路輪郭は、(SLマップ/STグラフィック314の一部として)ステーション-ラテラルマップを含む。
<動的コスト関数>
人の運転者が運転する時、車両が車両の数メートル前の歩行者に遭遇する場合、人の運転者は、「走行しながら観察する」対策を採用して、ゆっくり歩行者に向かい車両を運転して、歩行者に車両の道に譲ってもらうようにする。
このような対策では、人間の運転者は、まず車両を減速するとともに、車両が歩行者に向かって進むことができるか否かを判断し、可能な場合、人間の運転者は、車両が歩行者から非常に近い距離(例えば、2~3メートル)になるまで、より低い速度で車両を続けて走行させるようにすることができる。固定のパラメータを有するコスト関数を使用した車両は、「走行しながら観察する」対策を使用した挙動を模倣することはできない。
図4は、一実施形態に係る、ADVにおいて動的コスト関数を使用して、障害物に遭遇した時に人間の運転者が運転する車両の挙動を模倣するための例示的なシステムを示す。動的コスト関数により算出されたコストは、車両の速度計画用の速度コストの一部として使用することができる。上述したように、上述した速度コスト関数を用いて算出された速度コストは、車両の現在の速度、車両と障害物との間の距離、および車両が走行している道路の制限速度に関わらず、固定のパラメータまたは係数のセットによって構成される。
図4に示すように、動的コスト関数316は、パラメータのリアルタイム値を用いてADVの挙動を動的に調整することができ、該動的コスト関数316は、ADV101の起動時にメモリ351にロードすることができる。障害物に遭遇すると、ADVは、まず、固定パラメータを有するコスト関数を使用して、障害物までの安全距離を計算することができる。コスト関数は、パラメータのリアルタイム値を考慮せず、これらのパラメータによって定義される特定の場合には、常に同じ結果を生成する。
一実施形態では、このようなコスト関数は、ADVの様々な可能な状態を定義する有限状態機械を用いて実施することができ、可能な状態として、例えば、高速道路の車線内での滞留、左車線への変更、右車線への変更、障害物のnメートル前での停止、および追い越し等が挙げられる。コスト関数は、可能な状態ごとに、複数の独立したコストを計算し、それらのコストを加算することができる。ADVは、総コストの最も低い状態を選択することができる。
例えば、障害物の6メートル前で停止することを状態の1つとすることができる。ADVは、固定パラメータコスト関数によって制御されれば、障害物の6メートル前で停止することになる。
この動作は必ずしも理想的ではない。例えば、障害物は、人と話している歩行者であると想定する。ADVが歩行者の6メートル前で停止する時、歩行者が、ADVが前方に移動する意図がないと考えるので、そのまま立ち留まっている一方、ADVが障害物の6メートル前で機械的に待機してしまう状況が出る可能性がある。
しかし、動的コスト関数316を使用すると、ADVが、最初に計算された安全な距離で停止することはしない。これに対し、ADVは、閉ループ制御を実行する動的コスト関数316を実行して、動的コスト関数316一セットのパラメータのリアルタイム値を使用して、障害物からの安全距離を絶えず調整することができる。安全距離を調整することで、ADVは障害物から所定の距離、例えば0.5メートルに達するまで、障害物に徐々に接近することができる。
一実施形態では、ADVが所定の距離に到達すると、歩行者は、ADVが通過しようとする意図を認識し得るので、ADVのために道を譲ることができる。ADVは、新たな障害物を検出し、新たな障害物が譲まで上記の動作を繰り返すか、または、静的障害物が現れる場合にADVは、が障害物を迂回するように経路を変更するようにしてもよい。
一実施形態では、ADVは、障害物に遭遇すると、先ず、減速することができる。動的コスト関数316は、ADVの現在速度および障害物からの現在距離を一セットのパラメータのリアルタイム値として、新たな安全距離を決定することができる。新たな安全距離及びADVから障害物までのリアルタイム距離/傾向を考慮すると、ADVは、よりゆっくりと走行して、徐々に障害物に近づくことができる。動的コスト関数316の制御下で、ADVの挙動は、人間の運転者によって運転される車両の「走行しながら観察する」という挙動に類似している。
再び図4を参照すると、動的コスト関数316は、固定パラメータコスト関数413を使用して、障害物からの固定安全距離414をまず決定することができる。特定の運転環境において障害物に遭遇したとき、最初に計算された安全距離414は、他のシナリオと比較して最も低い総コストを有するシナリオを表すとしてもよい。
ここで使用されるように、安全距離とは、ADVが障害物に衝突することなく、または障害物を損傷することなく停止することができるような、障害物からの距離である。障害物は、人間のオブジェクトであってもよく、人間以外のオブジェクトであってもよく、移動中、立ち、または静止していてもよい。
最初に計算される安全距離414は、安全距離を計算するために使用されるパラメータのリアルタイム値によって変化しない固定安全距離であってもよい。特定の走行環境および最初に計算された安全距離414を考慮して、ADVは、ADVが最初に計算された安全距離414で停止することができるように、特定の予想速度で走行することを指示する一セットの運転コマンドを制御モジュール306に送ることができる。
一実施形態では、実際の速度は異なる可能性があり、ADVが異なる走行環境に入る時の速度制限も異なる可能性があり、且つ、ADVが障害物に接近する時、現在の障害物からの距離も異なる可能性がある。ADVは、ADVの現在速度405、ADVの障害物からの現在距離407、および現在の制限速度409を収集するとともに、リアルタイム値を使用して、オフセット計算関数411により、最初に計算された距離からのオフセットを計算することができる。ADVは、オフセット量412および固定安全距離414に基づいて障害物からの好ましい距離415を決定し、好ましい安全距離ADV415に基づいて一セットの運転コマンドを送信することができる。
ADVが、障害物から好ましい安全距離415を有する点に向かって移動すると、動的コスト関数316の1つ以上のパラメータまたは係数の値は、再び変化することができる。パラメータのリアルタイム値を収集して、オフセット計算関数411に入力して、新たなオフセットを計算することができ、新たなオフセットを用いて、障害物までの新たな好ましい距離415を計算することができる。その後、ADVは、新たな好ましい距離に基づいて、新たな運転コマンドのセットを使用して制御することができる。
以上のプロセスを閉ループで繰り返してもよい。新たな好ましい距離が生成されるにつれて、ADVは、人間の運転者の操作する車両の挙動を模倣するために、固定位置で停止する代わりに、障害物に徐々に接近することができる。
閉ループにおける各回の繰り返しは、ADVの計画サイクルまたは複数の計画サイクルに対応するようにしてもよい。一実施形態によれば、動的コスト関数316の例が式列1に示されている。
図5A~5Cは、一実施形態による動的コスト関数によって実行される処理の一例を図式的に示す。図5Aにおいて、ADV501は、ADV501の前方にある人間の障害物509を検出して、固定安全距離505を算出する。固定安全距離505は、図4に示すような固定パラメータコスト関数413を用いてADVを制御する状況でADV501が停止する位置から人の障害物509までの距離であるとにしてもよい。
しかし、動的コスト関数を使用する場合、ADVが、人間の障害物から一定の安全距離505を有する地点502に向かって移動するときに、複数のパラメータのリアルタイム値を収集し、収集されたリアルタイム値に基づいて、動的コスト関数により、点502と点504との間の距離であるオフセットA505を計算することができる。複数のパラメータは、リアルタイムに収集することができるものであって、速度制限508、ADV501の現在の速度、およびADV501から人間の障害物までの現在の距離を含む。収集されたリアルタイム値に基づいて、動的コスト関数により、オフセットA505を算出することができる。オフセットA505は、ADV501が最初に計算された固定安全距離505から人間の障害物509に向かって、これから移動可能距離を示す。したがって、最初に計算された固定安全距離505およびオフセットA505を使用して、ADV501の特定の計画サイクル中に収集された一セットのリアルタイム値に基づいてADV501が人の障害物509からの距離を表すための好ましい安全距離A506を計算することができる。
ADV501は、好ましい安全距離A506を計算する計画サイクルとは異なる計画サイクル中に、制限速度508、ADV501の現在速度、およびADV501の人間の障害物509からの現在距離を収集することができる。計画サイクル中に示されるように、速度制限508は変化しないが、ADVの現在の速度および現在の距離は変化している。図5Aに示すように、現在の速度(すなわち、実際の速度)は、予想される速度よりも高く、パラメータのリアルタイム値が収集されるとき、ADV501は、障害物509により近い。したがって、図5Bでは、動的コスト関数は、パラメータのリアルタイム値に基づいて新しいオフセットB510からコストを計算し、新しいオフセットB510および固定安全距離505に基づいて新しい好ましい安全距離B511を計算することができる。このコストは、車両の速度計画の一部として使用することができる。速度計画は、計画モジュール305によって計画された経路に沿って異なる軌道点における車両の速度を決定することを表す。
この例では、ADV501の実際の速度がオフセット量A505の算出時の予想速度よりも高いため、新たなオフセット量B510は、図5(a)で算出されたオフセット量A505よりも小さくなる。したがって、ADVは、点504で停止するのではなく、好ましい安全距離B511を有する点507で停止することが望ましい。ADV501がポイント507に近づくと、ADVは、ADVの現在速度、ADVの現在距離、および速度制限を収集して、新しいオフセットC514および新しい好ましい安全距離C515を計算することができる。新たな好ましい安全距離C515は、ADVの速度計画のための新たなコストを計算するために、コスト関数のパラメータおよび係数のうちの1つの一部として使用することができる。コスト関数は動的に調整又は変更され、速度計画は、運転環境(例えば、車速、速度制限、障害物とADVとの間の距離)に応じて、各計画サイクル中に最新の更新されたコスト関数を使用して実行されるので、人間の運転者の同じ又は類似の状況での動作を模倣するようにADVを制御することができる。
上記のプロセスは、計画サイクルごとに、またはn個の計画サイクルごとに繰り返されてもよく、ただし、nは1より大きい任意の整数である。ADV501が所定の距離(例えば1メートル)を有する地点に移動すると、プロセスは、新しい好ましい安全距離の生成を停止するとともに、動的コスト関数などを使用してコストを計算することができる。例えば、ADVの速度、ADVと障害物との距離、道路の制限速度に基づいて、コスト関数を調整して、新たなコストを算出する。新しいコストが高すぎる(例えば、所定の閾値よりも高い)場合、プロセスは、車両を現在位置に停止させることができる。すなわち、車両はそれ以上前進すべきではない。車両の速度計画は、速度がゼロになるように車両を計画することができる。上述したように動的に計算される新たなコストが低下する(例えば、所定の閾値を下回る)可能性があるので、人的障害物509がADVのために譲ると、上述したプロセスは再開することができる。
図6は、本実施形態に係る、障害物に遭遇したときの動的コスト関数を用いて、人間の運転者が車両を操作する挙動を模倣する処理600の一例を示すフローチャートである。プロセス600は、ソフトウェア、ハードウェア、またはそれらの組み合わせを含むことができる処理ロジックによって実行することができる。例えば、動的コスト関数316が図4のプランニングモジュール305によって呼び出されると、プロセス600は、動的コスト関数316によって実行され得る。
図6を参照すると、操作601において、ADVの前方に障害物が検出されたことに応答して、処理ロジックは、障害物までの第1の距離を決定する。動作602において、処理ロジックは、閉ループ制御602を実行し、閉ループの各回の繰り返しは、ADVの1つまたは複数の計画サイクルにおいて実行される。各回の繰り返しに対して、複数の動作が実行される。動作602.1において、処理ロジックは、パラメータのセットの各々のリアルタイム値を収集する。動作602.2において、処理ロジックは、パラメータのセットの各々のリアルタイム値を使用して、第1の距離からのオフセットを決定する。動作602.3において、処理ロジックは、第1の距離およびオフセット量に基づいて第2の距離を計算する。動作602.4において、処理ロジックは、ADVが障害物からの第2の距離で停止することができるように、第2の距離に基づいてパラメータのセットの各々の予想値を使用してADVを制御する。一実施形態では、ADVと障害物との間の距離、ADVの速度、およびADVが走行する道路の制限速度に基づいてコスト関数を調整する。次に、修正されたコスト関数に基づいてコストを計算し、計算したコストに基づいてADVの速度計画を実行する。コストが所定の閾値よりも高い(例えば、高すぎる)場合、プロセスは、車両を現在位置に停止させる。
上述の構成要素の一部または全部は、ソフトウェア、ハードウェア、またはそれらの組み合わせで実装されてもよいことに留意されたい。例えば、そのような構成要素は、永続的な記憶装置にインストールされて格納されたソフトウェアとして実装されてもよく、そのソフトウェアは、メモリにロードされ、プロセッサ(図示せず)によって実行されて、本明細書に記載のプロセスまたは動作を実装してもよい。あるいは、そのようなコンポーネントは、アプリケーションからの対応するドライバおよび/またはオペレーティング・システムを介してアクセス可能な、集積回路(例えば、特定用途向け集積回路またはASIC)、デジタル信号プロセッサ(DSP)、またはフィールド・プログラマブル・ゲート・アレイ(FPGA)などの特定用途向けハードウェアにプログラムされた、または組み込まれた実行可能コードとして実装されてもよい。さらに、そのようなコンポーネントは、1つまたは複数の特定の命令を介してソフトウェアコンポーネントによってアクセス可能な命令セットの一部として、プロセッサまたはプロセッサコア内の特定のハードウェアロジックとして実装することができる。
上述した具体的な説明の一部は、既に、コンピュータメモリにおけるデータビットに対する演算のアルゴリズムと記号表現により示された。これらのアルゴリズムの説明及び表現は、データ処理分野における当業者によって使用される、それらの作業実質を所属分野の他の当業者に最も効果的に伝達する方法である。本明細書では、一般的に、アルゴリズムは、所望の結果につながるセルフコンシステントシーケンスと考えられる。これらの操作は、物理量の物理的処置が必要とされるものである。
しかしながら、念頭に置くべきなのは、これらの用語及び類似の用語の全ては、適切な物理量に関連付けられるものであり、これらの量を標識しやすくするためのものに過ぎない。以上の説明で他に明示的に記載されていない限り、本明細書の全体にわたって理解すべきなのは、用語(例えば、添付された特許請求の範囲に記載のもの)による説明とは、コンピュータシステム、又は類似の電子式計算装置の動作及び処理を指し、前記コンピュータシステム又は電子式計算装置は、コンピュータシステムのレジスタ及びメモリにおける物理(電子)量として示されたデータを制御するとともに、前記データをコンピュータシステムメモリ又はレジスタ又はこのようなその他の情報記憶装置、伝送又は表示装置において同様に物理量として示された別のデータに変換する。
本発明の実施形態は、本明細書の操作を実行するための装置にも関する。このようなコンピュータプログラムは、非一時的コンピュータ可読媒体に格納される。機械可読媒体は、機械(例えば、コンピュータ)により読み取り可能な形式で情報を格納するための任意のメカニズムを含む。例えば、機械可読(例えば、コンピュータ可読)媒体は、機械(例えば、コンピュータ)可読記憶媒体(例えば、読み出し専用メモリ(「ROM」)、ランダムアクセスメモリ(「RAM」)、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリ装置)を含む。
上述した図面において説明されたプロセス又は方法は、ハードウェア(例えば、回路、専用ロジックなど)、ソフトウェア(例えば、非一時的コンピュータ可読媒体に具現化されるもの)、又は両方の組み合わせを含む処理ロジックにより実行されることができる。前記プロセス又は方法は、以上で特定の順序に応じて説明されたが、前記操作の一部が異なる順序で実行されてもよいことを理解されたい。また、一部の操作は、順番ではなく並行して実行されてもよい。
本発明の実施形態は、いずれの特定のプログラミング言語を参照することなく記載されている。理解すべきのは、本明細書に記載の本発明の実施形態の教示を実現するために、様々なプログラミング言語を使用することができる。。
本明細書において、本発明の実施形態は、既にその具体的な例示的な実施形態を参照しながら記載された。明らかなように、添付された特許請求の範囲に記載された本発明のより広い趣旨及び範囲を逸脱しない限り、本発明に対して様々な変更を行うことができる。それゆえに、本明細書及び図面は、限定的な意味でなく、例示的な意味で理解されるべきである。
本開示の実施形態は、自動運転車両の運転に関する。より具体的には、本開示の実施形態は、自動運転車両において、動的コスト関数を使用して、人間の運転者の車両を運転する挙動を模倣することに関する。
自動運転モード(例えば、無人運転)で動作する車両は、乗員(特に運転者)を運転に関連する職責から解放することができる。自動運転モードで運転するとき、車両は、車載センサを使用して様々な位置にナビゲートすることができ、これにより、車両は、最小限のヒューマンコンピュータインタラクションやまたは乗客なしの状況で走行することができる。運動計画および制御は、自動運転における重要な操作であり、これらの操作において行われる決定に有限状態機械を使用することができる。状態の選択は、通常、固定パラメータを有するコスト関数を用いて行うことができる。
例えば、静的障害物が存在する場合には、車両は、静的障害物との衝突を回避するために、計算された安全距離まで停止することができる。移動障害物が存在する場合には、車両は、速度を低下させ、その後に追従することができる。しかしながら、これらの事前定義された動作は、場合によっては不十分であり、運転者のような動作がより望ましい。
第1の態様によれば、本開示のいくつかの実施形態は、自動運転車両ADVを操作するためのコンピュータ実施方法であって、前記ADV前方の障害物の検出に応答して、前記障害物までの第1距離を決定するステップと、複数の計画サイクル毎に、複数のパラメータからなるパラメータセットにおける各パラメータのリアルタイム値に基づいて、前記第一距離からのオフセット量を決定し、前記第1の距離と前記オフセット量とに基づいて第2の距離を算出し、前記第2の距離に基づいて、前記ADVが前記障害物から前記第2の距離を有する地点に停止するように減速することができるように、前記ADVのこれからの速度を制御するための速度計画を実行する、ことを含む操作を繰り返して実行することを特徴とするコンピュータ実施方法を提供する。
第2の態様によれば、本開示のいくつかの実施形態は、自動運転車両ADVを動作させるための命令が記憶されている非一時的機械可読媒体であって、前記命令は、前記プロセッサによって実行されると、前記ADV前方の障害物の検出に応答して、前記障害物までの第1距離を決定するステップと、複数の計画サイクル毎に、複数のパラメータからなるパラメータセットにおけるそれぞれのパラメータのリアルタイム値に基づいて、前記第一距離からのオフセット量を決定し、前記第1の距離と前記オフセット量とに基づいて第2の距離を算出し、前記第2の距離に基づいて、前記ADVが前記障害物から前記第2の距離を有する地点に停止するように減速することができるように、前記ADVのこれからの速度を制御するための速度計画を実行する、を含む操作を前記プロセッサに実行させる非一時的機械可読媒体を提供する。
第3の態様によれば、本開示のいくつかの実施形態は、データ処理システムであって、プロセッサと、前記プロセッサに接続され且つ指令が記憶されたメモリとを含み、前記指令が前記プロセッサによって実行されると、前記ADV前方の障害物の検出に応答して、前記障害物までの第1距離を決定するステップと、複数の計画サイクル毎に、複数のパラメータからなるパラメータセットにおけるそれぞれのパラメータのリアルタイム値に基づいて、前記第一距離からのオフセット量を決定し、前記第1の距離と前記オフセット量とに基づいて第2の距離を算出し、前記第2の距離に基づいて、前記ADVが前記障害物から前記第2の距離を有する地点に停止するように減速することができるように、前記ADVのこれからの速度を制御するための速度計画を実行する、を含む操作を前記プロセッサに実行させる、データ処理システムを提供する。
第4の態様によれば、本開示のいくつかの実施形態は、プロセッサにより実行されると、第1の態様に記載の方法を実現させるコンピュータプログラムを提供する。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本開示の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
一実施形態によるネットワーク化システムを示すブロック図である。
実施形態に係る自動運転車両の一例を示すブロック図である。
図3A~3Bは、一実施形態に係る自動運転車両と共に使用される感知・計画システムの一例を示すブロック図である。
一実施形態に係るADVにおいて動的コスト関数を使用して、障害物に遭遇したときに人間の運転者の車両を運転する挙動を模倣するための例示的なシステムを示す。
図5A~図5Cは、本実施形態に係る動的コスト関数によるプロセスの一例をグラフィカルに示す図である。
一実施形態に係るADVにおいて動的コスト関数を使用して、障害物に遭遇したときに人間の運転者が車両を運転する挙動を模倣する例示的なプロセスを示す。
以下に説明される詳細を参照しながら本発明の様々な実施形態及び態様を説明し、添付図面には上記の様々な実施形態が示される。以下の説明及び図面は、本発明を例示するためのものであり、限定するものとして解釈されるべきではない。本発明の様々な実施形態を全面的に理解するために、多くの特定の詳細を説明する。なお、本発明の実施形態を簡潔的に説明するように、周知又は従来技術の詳細について説明していない場合もある。
本明細書において、「一実施形態」又は「実施形態」とは、当該実施形態に基づいて説明された特定の特徴、構造又は特性が本発明の少なくとも一実施形態に含まれてもよいと意味する。「一実施形態では」という表現は、本明細書の全体において全てが同一の実施形態を指すとは限らない。
本開示の様々な実施形態は、ADVが障害物に遭遇した際に、人間の運転者が車両を操作する挙動を模倣するように、ADVの挙動を動的に調整するためのシステムおよび方法を提供する。動的コスト関数を使用して、一セットのパラメータのリアルタイム値を収集し、リアルタイム値を使用して、ADVが障害物の前方で停止することができる好ましい安全距離を絶えず調整することができる。
一実施形態では、例示的な方法は、ADVの前方にある障害物の検出に応答して、前記障害物までの第1の距離を決定するステップと、複数の計画サイクルのそれぞれについて、複数のパラメータからなるパラメータセットにおける各パラメータのリアルタイム値に基づいて、第1の距離からのオフセット量を決定し、第1の距離と前記オフセット量とに基づいて第2の距離を算出し、第2の距離に基づいて、ADVが前記障害物から第2の距離を有する地点に停止するように減速することができるように、ADVのこれからの速度を制御するための速度計画を実行する操作を繰り返して実行するステップとを含む。
一実施形態では、ADVが運転している限り、繰り返しの回数に上限はない。一実施形態では、繰り返しは、閉ループ形式で実行されてもよく、各回の繰り返しは、ADVの1つ又は複数の計画サイクルで実行される。
一実施形態では、第1の距離は、パラメータのリアルタイム値に関係なく、パラメータのセットを使用して固定パラメータコスト関数によって計算される安全距離である。パラメータのセットは、ADVの速度、ADVから障害物までの距離、およびADVの周囲の環境における速度制限を含む。ADV速度のリアルタイム値は、ADVのエンジンの毎分回転数(RPM)および/またはADVの1つ以上のセンサのデータから得ることができる。ADVから障害物までの距離のリアルタイム値は、ADVの1つまたは複数のセンサから収集される。
一実施形態では、制限速度は、前記ADVの経路計画のために使用されるデジタル地図から収集可能である。障害物は、歩行者、車両、または他の人間または非人間の障害物であってもよい。
上記の概要は、本開示の全ての態様の包括的なリストを含むものではない。本開示は、上記に要約された様々な態様のすべての適切な組み合わせから実施することができるすべてのシステム、コンピュータ媒体、および方法を含み、本開示の詳細な説明に開示されたシステム、コンピュータ媒体、および方法も含むことが想到し得る。
<自動運転車両>
図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と一体に統合されてもよい。リアルタイム交通情報、MPOI情報及び位置情報、並びにセンサシステム115によって検出又は検知されたリアルタイムローカル環境データ(例えば、障害物、オブジェクト、周辺車両)に基づいて、感知・計画システム110は、指定された目的地までに安全かつ効率的に到着するように、最適なルートを計画し、計画されたルートに従って、例えば、制御システム111によって車両101を走行させる。
サーバ103は、様々な顧客に対してデータ解析サービスを行うためのデータ解析システムであってもよい。一実施形態では、データ解析システム103は、データコレクタ121と、機械学習エンジン122とを備える。データコレクタ121は、様々な車両(自動運転車両又は人間の運転手によって運転される一般車両)から運転統計データ123を収集する。運転統計データ123は、発された運転命令(例えば、スロットル、ブレーキ、ステアリング命令)及び車両のセンサによって異なる時点で取得された車両の応答(例えば、速度、加速度、減速度、方向)を示す情報を含む。運転統計データ123は更に、異なる時点における走行環境を記述する情報、例えば、ルート(出発地位置及び目的地位置を含む)、MPOI、道路状況、天気状況などを含んでもよい。
機械学習エンジン122は、運転統計データ123に基づいて、様々な目的でルールセット、アルゴリズム及び/又は予測モデル124を生成又は訓練する。一実施形態では、例えば、アルゴリズム124は、経路計画および速度計画を最適化するための最適化方法を含む。最適化方法は、一組のコスト関数(例えば、動的コスト関数)を含むことができる。これらの機能は、円滑な経路をリアルタイムで生成するために自動運転車両にアップロードすることができる。
図3A及び図3Bは、いくつかの実施形態に係る自動運転車両と共に使用される感知・計画システムの一例を示すブロック図である。システム300は、図1の自動運転車両101の一部として実現することができ、感知・計画システム110、制御システム111及びセンサシステム115を含むが、それらに限定されない。図3A~図3Bに示すように、感知・計画システム110は、測位モジュール301、感知モジュール302、予測モジュール303、決定モジュール304、計画モジュール305、制御モジュール306、ルーティングモジュール307及び円滑化モジュール308を含むが、それらに限定されない。
モジュール301~308の一部または全部は、のうちの一部又は全部は、ソフトウェア、ハードウェア又はそれらの組み合わせで実現されていてもよい。例えば、これらのモジュールは、永続性記憶装置352にインストールされ、メモリ351にロードされ、1つ又は複数のプロセッサ(図示せず)によって実行されていてもよい。なお、これらのモジュールの一部又は全部は、図2の車両制御システム111のモジュールの一部又は全部と通信可能に接続されるか、又は一体に統合されていてもよい。例えば、決定モジュール304および計画モジュール305は、単一のモジュールに統合されてもよい。ルーティングモジュール307および平滑化モジュール308は、単一のモジュールに統合されてもよい。
測位モジュール301は、自動運転車両300の現在の位置(例えば、GPSユニット212を利用して)を特定し、ユーザの旅程又はルートに関連する如何なるデータを管理する。測位モジュール301(地図・ルートモジュールともいう)は、ユーザの旅程又はルートに関連する如何なるデータを管理する。ユーザは、例えば、ユーザインターフェースを介してログインして、旅程の出発地位置及び目的地を指定することができる。測位モジュール301は、自動運転車両300の地図・ルート情報311などの他の構成要素と通信して、旅程関連データを取得する。例えば、測位モジュール301は、位置サーバ及び地図・関心地点(MPOI)サーバから位置及びルート情報を取得することができる。位置サーバは位置サービスを提供し、MPOIサーバは、地図サービス及び特定位置のPOIを提供し、これらは地図・ルート情報311の一部としてキャッシュすることができる。自動運転車両300がルートに沿って移動するとき、測位モジュール301は交通情報システム又はサーバからリアルタイム交通情報を得ることも可能である。一実施形態では、地図・ルート情報311は、事前に永続性記憶装置352に格納されていてもよい。例えば、地図・ルート情報311は、事前に永続性記憶装置352にダウンロード又はコピーされていてもよい。
感知モジュール302は、センサシステム115により提供されたセンサデータと、測位モジュール301により取得された測位情報とに基づいて、周囲環境への感知を確定する。感知情報は、一般的な運転手が運転手により運転されている車両の周囲で感知すべきものを表すことができる。感知は、例えばオブジェクトの形態を採用する車線構成(例えば、直進車線又はカーブ車線)、信号機信号、他の車両の相対位置、歩行者、建築物、横断歩道、又は他の交通関連標識(例えば、止まれ標識、ゆずれ標識)などを含んでもよい。
感知モジュール302は、1つ又は複数のカメラによって取り込まれた画像を処理及び解析して、自動運転車両の環境内のオブジェクト及び/又は特徴を認識するためのコンピュータビジョンシステム又はコンピュータビジョンシステムの機能を含むことができる。前記オブジェクトは、交通信号、道路境界、他の車両、歩行者及び/又は障害物などを含むことができる。コンピュータビジョンシステムは、オブジェクト認識アルゴリズム、ビデオトラッキング及び他のコンピュータビジョン技術を使用することができる。いくつかの実施形態では、コンピュータビジョンシステムは、環境地図の描画、オブジェクトの追跡、及びオブジェクトの速度の推定などができる。感知モジュール302は、レーダ及び/又はLIDARのような他のセンサによって提供される他のセンサデータに基づいてオブジェクトを検出することもできる。
各オブジェクトについて、予測モジュール303は、その場合にオブジェクトがどのように挙動するかを予測する。この予測は、地図・ルート情報311と交通ルール312のセットを考慮した時点で走行環境を感知する感知データに基づいて実行される。例えば、オブジェクトが反対方向の車両であり、かつ現在の走行環境が交差点を含む場合、予測モジュール303は、車両が直進するか又は旋回するかを予測する。感知データが、交差点に信号機がないことを示す場合、予測モジュール303は、交差点に入る前に車両が完全に停止する必要があると予測する可能性がある。感知データが、車両が現在左折専用車線又は右折専用車線にあることを示す場合、予測モジュール303は、車両がそれぞれ左折又は右折する可能性がより高いと予測することが可能である。いくつかの実施形態では、以下でさらに詳しく説明するように、自動運転車両が環境又は地理的領域/場所を通って移動するときに、該環境又は地理的領域/場所の地図・ルート情報311をオンザフライで生成することができる(例えば、感知モジュール302によって生成される)。
各オブジェクトごとに対して、決定モジュール304はオブジェクトをどのように処置するかを決定する。例えば、特定のオブジェクト(例えば、交差ルートにおける他の車両)及びオブジェクトを記述するメタデータ(例えば、速度、方向、操舵角)について、決定モジュール304は前記オブジェクトと遇うときに如何に対応するか(例えば、追い越し、道譲り、停止、追い抜き)を決定する。決定モジュール304は、交通ルール又は運転ルール312などのルールセットに基づいてそのような決定を行うことができ、前記ルールセットは永続性記憶装置352に格納されていてもよい。
感知されたオブジェクトのそれぞれに対する決定に基づいて、計画モジュール305は、ルーティングモジュール307によって提供された基準線をベースとし、自動運転車両に対して経路又はルート並びに運転パラメータ(例えば、距離、速度及び/又は操舵角)を計画する。言い換えれば、特定のオブジェクトについて、決定モジュール304は該オブジェクトに対して何をするかを決定し、計画モジュール305はどのようにするかを決定する。例えば、特定のオブジェクトについて、決定モジュール304は前記オブジェクトを追い抜くか否かを決定することができ、計画モジュール305は前記オブジェクトを左側から追い抜くか又は右側から追い抜くかを決定することができる。計画及び制御データは、計画モジュール305により生成され、車両300が次の移動周期(例えば、次のルート/経路区間)にはどのように移動するかを記述する情報を含む。例えば、計画及び制御データは、車両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は、集積されたモジュールとして一体化されてもよい。
ルーティングモジュール307は、例えば、道路セグメント情報、道路セグメントの車線、および車線から縁部までの距離などの地図情報に基づいて基準経路を生成することができる。
基準点または車線基準点に基づいて、ルーティングモジュール307は、基準点を補間することによって基準線を生成することができ、生成された基準線は、車両車線上のADVを制御するための基準線として使用される。
平滑化モジュール308は、ルーティングモジュール307による基準線に基づいて、平滑化された道路基準線を生成することができる。例えば、平滑化モジュール308は、基準線に沿って複数の制御点を選択する。一実施形態では、制御点は、ルーティングモジュール307にによる基準線の基準点であってもよいし、基準線に沿った、互いにほぼ等しい距離を隔てた補間点であってもよい。平滑化モジュール308は、二次計画スプライン平滑化器と螺旋平滑化器との組み合わせを使用して、平滑化道路基準線を生成する。
いくつかの実施形態では、基準点は、ステーション-ラテラル(SL;station-lateral)座標などの相対座標系に変換することができる。ステーション-ラテラル座標系は、基準線に追従するように固定基準点を基準とする座標系である。例えば、座標(S,L)=(1,0)は、基準線上の停留点(すなわち、基準点)より1メートル前で且つ、ラテラルオフセットがゼロであることを表すことができる。基準点(S,L)=(2,1)は、基準線上の基準基準点より2メートルの前で且つ、基準線から側方、例えば左方に1メートル、ずれていることを表すことができる。
一実施形態では、平滑化モジュール308は、ルーティングモジュール307による基準線を表した基準点に基づいて平滑化基準線を生成する。決定モジュールおよび/または計画モジュール(例えば、決定モジュール304および/または計画モジュール305)が平滑基準線を感知された障害物および/または交通情報に組み込む前に、平滑基準線は、相対座標系(例えばSL座標系)に変換されてもよい。
一実施形態では、決定モジュール304は、ルーティングモジュール307による基準線(上述したように、平滑化モジュール308によって平滑化された基準線)に基づいて、ADVによって感知されたADV周辺の障害物および/または交通情報に基づいて、粗い経路輪郭を生成する。粗い経路輪郭は、永続的記憶装置352に記憶された経路/速度輪郭313の一部であってもよい。粗い経路輪郭は、基準線に沿って点を選択することによって生成される。これらの点のそれぞれについて、決定モジュール304は、オブジェクトと遭遇した時に如何するかに関連する1つまたは複数の障害物対策に基づいて、基準線の左側または右側に当該点を移動する(例えば、候補移動)が、残りの点はそのままにする。
例えば、一実施形態では、粗い経路輪郭は、経路の曲率および基準線および/または基準点から障害物までの距離に基づくコストからなるコスト関数によって生成される。基準線上の点を選択して、経路候補を示す候補移動として基準線の左側または右側に移動する。候補移動の各々は関連するコストを有する。動的計画を使用して、基準線上の1つ以上の点の候補移動に関するコストを、一度に1つの点で順次解いて、最適なコストを得ることができる。
経路候補の動的計画を使用して候補移動を繰り返して実行して、コスト関数(図3Aのコスト関数315の一部とする)によって、経路コストの最小の経路候補を探索して、粗い経路輪郭を生成する。コスト関数の例として、路線経路の曲率、ADVから感知された障害物までの距離、およびADVから基準線までの距離に基づくコストが挙げられる。一実施形態では、生成された粗い経路輪郭は、SLマップ/STグラフィック314の一部として永続的記憶装置352に記憶することができる。
一実施形態では、ステーション-ラテラル(SL)マップ生成器(図示せず)は、粗い経路輪郭の一部としてSLマップを生成する。SLマップは、ADVによって感知された障害物情報を含む2次元ジオメトリマップ(xy座標平面に類似)である。SLマップに基づいて、決定モジュール304は、障害物対策に従うADV経路を構成することができる。動的計画(動的最適化とも呼ばれる)は、数学的最適化方法であり、解決待ちの問題を一連の値関数として分解し、これらの値関数のそれぞれに対して、一回だけ解を求め、その解を記憶する。以後は同じ値関数が現れると、この前に求められた解を簡単に検索すればよく、その解を再計算する必要がなく、それにより計算時間を節約することができる。以上のプロセスは経路計画処理と呼ばれる。
経路計画が完了して、経路が生成されると、速度コスト関数を有するSTグラフを使用して、当該経路に沿った異なる時点での候補移動の合計速度コスト(例えば、加速/減速)を最適化することができ、ここで、速度計画と呼ばれる。経路上の各点(軌道点または経路点とも呼ばれる)は、その特定の時点における車両目標速度または計画速度に関連付けられており、車両目標速度または計画速度は、当該時点に対応する速度コストによって表すことができる。経路の総速度コストは、各ポイントの全ての速度コストを合計することによって計算することができる。
例えば、一実施形態において、総速度コスト関数は、以下のとおりであってもよい。
ここで、速度コストは、全ての時間進行点を含んで合計して得られたものであり、速度′は、加速度値又は隣接する二つの点の間で速度を変化させるコストを表し、速度"は、ジャーク値又は加速度値の導関数、又は、隣接する二つの点の間で加速度を変化させるコストを表し、距離は、ST点から目標位置までの距離を表す。ここで、速度コストモジュールは、2次計画最適化を使用して速度コストを最小化して、ステーション-タイムグラフを計算する。
一実施形態では、図4を参照すると、コスト関数315は、パラメータがリアルタイムで変化する閉ループアルゴリズムを実施した動的コスト関数316を含むことができる。ADVは、障害物に遭遇すると、先ず、減速する。動的コスト関数は、少なくともADVの現在速度および障害物からの距離に基づいて、パラメータが変更される。パラメータが変更されると、ADVは、新たに計算されたコストに応じて異なる挙動を取ることができる。例えば、ADVは、障害物の前で減速し、その後、ADVの速度および障害物からの距離の両方も減少させてもよい。その後、動的コスト関数のパラメータを変更して、新たなコストを計算することができる。新たなコストの増加につれて、ADVは、障害物に近づく時により遅く走行するようになる。動的コスト関数により、ADVは、障害物に遭遇したときに「走行しながら観察する」方法を使用することができる。
一実施形態では、決定モジュール304は、生成された粗い経路輪郭に基づいて、(経路/速度輪郭313の一部として)粗い速度輪郭を生成する。粗い速度輪郭は、ADVの制御中の特定の時点における最適速度を示すものである。粗い経路輪郭と同様に、ADVによって感知された障害物に応じて、(図3Aのコスト関数315の一部である)コスト関数に基づいて、最も低い速度コストを有する候補速度(例えば、加速または減速)を見つけるために、異なる時点における候補速度を繰り返して生成する動的計画が使用される。粗い速度輪郭により、ADVが障害物を追い越すべきか回避すべきかや、障害物の左側にあるか右側にあるかが決定される。一実施形態では、粗い速度輪郭は、SLマップ/STグラフ314の一部として、ステーション-タイム(ST)グラフを含む。ステーション-タイム(ST)グラフは、時間に対する走行距離を示す。
一実施形態では、計画モジュール305は、障害物対策および/または人工障壁に基づいて粗い経路輪郭を再計算することで、計画モジュール305がこれらの障壁の幾何学的空間への探索が阻止される。例えば、粗い速度輪郭に基づいて、左側から障害物に接近することが決定された場合、計画モジュール305は、ADVが右側から障害物に接近する状況に関する計算を阻止するために、障害物の右側に障壁を(障害物の形態として)設けることができる。一実施形態では、二次計画(QP)および/または螺旋平滑化器を使用して、(コスト関数315の一部として)経路コスト関数を最適化することによって粗い経路輪郭を再計算する。一実施形態では、再計算された粗い経路輪郭は、(SLマップ/STグラフィック314の一部として)ステーション-ラテラルマップを含む。
<動的コスト関数>
人の運転者が運転する時、車両が車両の数メートル前の歩行者に遭遇する場合、人の運転者は、「走行しながら観察する」対策を採用して、ゆっくり歩行者に向かい車両を運転して、歩行者に車両の道に譲ってもらうようにする。
このような対策では、人間の運転者は、まず車両を減速するとともに、車両が歩行者に向かって進むことができるか否かを判断し、可能な場合、人間の運転者は、車両が歩行者から非常に近い距離(例えば、2~3メートル)になるまで、より低い速度で車両を続けて走行させるようにすることができる。固定のパラメータを有するコスト関数を使用した車両は、「走行しながら観察する」対策を使用した挙動を模倣することはできない。
図4は、一実施形態に係る、ADVにおいて動的コスト関数を使用して、障害物に遭遇した時に人間の運転者が運転する車両の挙動を模倣するための例示的なシステムを示す。動的コスト関数により算出されたコストは、車両の速度計画用の速度コストの一部として使用することができる。上述したように、上述した速度コスト関数を用いて算出された速度コストは、車両の現在の速度、車両と障害物との間の距離、および車両が走行している道路の制限速度に関わらず、固定のパラメータまたは係数のセットによって構成される。
図4に示すように、動的コスト関数316は、パラメータのリアルタイム値を用いてADVの挙動を動的に調整することができ、該動的コスト関数316は、ADV101の起動時にメモリ351にロードすることができる。障害物に遭遇すると、ADVは、まず、固定パラメータを有するコスト関数を使用して、障害物までの安全距離を計算することができる。コスト関数は、パラメータのリアルタイム値を考慮せず、これらのパラメータによって定義される特定の場合には、常に同じ結果を生成する。
一実施形態では、このようなコスト関数は、ADVの様々な可能な状態を定義する有限状態機械を用いて実施することができ、可能な状態として、例えば、高速道路の車線内での滞留、左車線への変更、右車線への変更、障害物のnメートル前での停止、および追い越し等が挙げられる。コスト関数は、可能な状態ごとに、複数の独立したコストを計算し、それらのコストを加算することができる。ADVは、総コストの最も低い状態を選択することができる。
例えば、障害物の6メートル前で停止することを状態の1つとすることができる。ADVは、固定パラメータコスト関数によって制御されれば、障害物の6メートル前で停止することになる。
この動作は必ずしも理想的ではない。例えば、障害物は、人と話している歩行者であると想定する。ADVが歩行者の6メートル前で停止する時、歩行者が、ADVが前方に移動する意図がないと考えるので、そのまま立ち留まっている一方、ADVが障害物の6メートル前で機械的に待機してしまう状況が出る可能性がある。
しかし、動的コスト関数316を使用すると、ADVが、最初に計算された安全な距離で停止することはしない。これに対し、ADVは、閉ループ制御を実行する動的コスト関数316を実行して、動的コスト関数316一セットのパラメータのリアルタイム値を使用して、障害物からの安全距離を絶えず調整することができる。安全距離を調整することで、ADVは障害物から所定の距離、例えば0.5メートルに達するまで、障害物に徐々に接近することができる。
一実施形態では、ADVが所定の距離に到達すると、歩行者は、ADVが通過しようとする意図を認識し得るので、ADVのために道を譲ることができる。ADVは、新たな障害物を検出し、新たな障害物が譲まで上記の動作を繰り返すか、または、静的障害物が現れる場合にADVは、が障害物を迂回するように経路を変更するようにしてもよい。
一実施形態では、ADVは、障害物に遭遇すると、先ず、減速することができる。動的コスト関数316は、ADVの現在速度および障害物からの現在距離を一セットのパラメータのリアルタイム値として、新たな安全距離を決定することができる。新たな安全距離及びADVから障害物までのリアルタイム距離/傾向を考慮すると、ADVは、よりゆっくりと走行して、徐々に障害物に近づくことができる。動的コスト関数316の制御下で、ADVの挙動は、人間の運転者によって運転される車両の「走行しながら観察する」という挙動に類似している。
再び図4を参照すると、動的コスト関数316は、固定パラメータコスト関数413を使用して、障害物からの固定安全距離414をまず決定することができる。特定の運転環境において障害物に遭遇したとき、最初に計算された安全距離414は、他のシナリオと比較して最も低い総コストを有するシナリオを表すとしてもよい。
ここで使用されるように、安全距離とは、ADVが障害物に衝突することなく、または障害物を損傷することなく停止することができるような、障害物からの距離である。障害物は、人間のオブジェクトであってもよく、人間以外のオブジェクトであってもよく、移動中、立ち、または静止していてもよい。
最初に計算される安全距離414は、安全距離を計算するために使用されるパラメータのリアルタイム値によって変化しない固定安全距離であってもよい。特定の走行環境および最初に計算された安全距離414を考慮して、ADVは、ADVが最初に計算された安全距離414で停止することができるように、特定の予想速度で走行することを指示する一セットの運転コマンドを制御モジュール306に送ることができる。
一実施形態では、実際の速度は異なる可能性があり、ADVが異なる走行環境に入る時の速度制限も異なる可能性があり、且つ、ADVが障害物に接近する時、現在の障害物からの距離も異なる可能性がある。ADVは、ADVの現在速度405、ADVの障害物からの現在距離407、および現在の制限速度409を収集するとともに、リアルタイム値を使用して、オフセット計算関数411により、最初に計算された距離からのオフセットを計算することができる。ADVは、オフセット量412および固定安全距離414に基づいて障害物からの好ましい距離415を決定し、好ましい安全距離ADV415に基づいて一セットの運転コマンドを送信することができる。
ADVが、障害物から好ましい安全距離415を有する点に向かって移動すると、動的コスト関数316の1つ以上のパラメータまたは係数の値は、再び変化することができる。パラメータのリアルタイム値を収集して、オフセット計算関数411に入力して、新たなオフセットを計算することができ、新たなオフセットを用いて、障害物までの新たな好ましい距離415を計算することができる。その後、ADVは、新たな好ましい距離に基づいて、新たな運転コマンドのセットを使用して制御することができる。
以上のプロセスを閉ループで繰り返してもよい。新たな好ましい距離が生成されるにつれて、ADVは、人間の運転者の操作する車両の挙動を模倣するために、固定位置で停止する代わりに、障害物に徐々に接近することができる。
閉ループにおける各回の繰り返しは、ADVの計画サイクルまたは複数の計画サイクルに対応するようにしてもよい。一実施形態によれば、動的コスト関数316の例が式列1に示されている。
図5A~5Cは、一実施形態による動的コスト関数によって実行される処理の一例を図式的に示す。図5Aにおいて、ADV501は、ADV501の前方にある人間の障害物509を検出して、固定安全距離505を算出する。固定安全距離505は、図4に示すような固定パラメータコスト関数413を用いてADVを制御する状況でADV501が停止する位置から人の障害物509までの距離であるとにしてもよい。
しかし、動的コスト関数を使用する場合、ADVが、人間の障害物から一定の安全距離505を有する地点502に向かって移動するときに、複数のパラメータのリアルタイム値を収集し、収集されたリアルタイム値に基づいて、動的コスト関数により、点502と点504との間の距離であるオフセットA505を計算することができる。複数のパラメータは、リアルタイムに収集することができるものであって、速度制限508、ADV501の現在の速度、およびADV501から人間の障害物までの現在の距離を含む。収集されたリアルタイム値に基づいて、動的コスト関数により、オフセットA505を算出することができる。オフセットA505は、ADV501が最初に計算された固定安全距離505から人間の障害物509に向かって、これから移動可能距離を示す。したがって、最初に計算された固定安全距離505およびオフセットA505を使用して、ADV501の特定の計画サイクル中に収集された一セットのリアルタイム値に基づいてADV501が人の障害物509からの距離を表すための好ましい安全距離A506を計算することができる。
ADV501は、好ましい安全距離A506を計算する計画サイクルとは異なる計画サイクル中に、制限速度508、ADV501の現在速度、およびADV501の人間の障害物509からの現在距離を収集することができる。計画サイクル中に示されるように、速度制限508は変化しないが、ADVの現在の速度および現在の距離は変化している。図5Aに示すように、現在の速度(すなわち、実際の速度)は、予想される速度よりも高く、パラメータのリアルタイム値が収集されるとき、ADV501は、障害物509により近い。したがって、図5Bでは、動的コスト関数は、パラメータのリアルタイム値に基づいて新しいオフセットB510からコストを計算し、新しいオフセットB510および固定安全距離505に基づいて新しい好ましい安全距離B511を計算することができる。このコストは、車両の速度計画の一部として使用することができる。速度計画は、計画モジュール305によって計画された経路に沿って異なる軌道点における車両の速度を決定することを表す。
この例では、ADV501の実際の速度がオフセット量A505の算出時の予想速度よりも高いため、新たなオフセット量B510は、図5(a)で算出されたオフセット量A505よりも小さくなる。したがって、ADVは、点504で停止するのではなく、好ましい安全距離B511を有する点507で停止することが望ましい。ADV501がポイント507に近づくと、ADVは、ADVの現在速度、ADVの現在距離、および速度制限を収集して、新しいオフセットC514および新しい好ましい安全距離C515を計算することができる。新たな好ましい安全距離C515は、ADVの速度計画のための新たなコストを計算するために、コスト関数のパラメータおよび係数のうちの1つの一部として使用することができる。コスト関数は動的に調整又は変更され、速度計画は、運転環境(例えば、車速、速度制限、障害物とADVとの間の距離)に応じて、各計画サイクル中に最新の更新されたコスト関数を使用して実行されるので、人間の運転者の同じ又は類似の状況での動作を模倣するようにADVを制御することができる。
上記のプロセスは、計画サイクルごとに、またはn個の計画サイクルごとに繰り返されてもよく、ただし、nは1より大きい任意の整数である。ADV501が所定の距離(例えば1メートル)を有する地点に移動すると、プロセスは、新しい好ましい安全距離の生成を停止するとともに、動的コスト関数などを使用してコストを計算することができる。例えば、ADVの速度、ADVと障害物との距離、道路の制限速度に基づいて、コスト関数を調整して、新たなコストを算出する。新しいコストが高すぎる(例えば、所定の閾値よりも高い)場合、プロセスは、車両を現在位置に停止させることができる。すなわち、車両はそれ以上前進すべきではない。車両の速度計画は、速度がゼロになるように車両を計画することができる。上述したように動的に計算される新たなコストが低下する(例えば、所定の閾値を下回る)可能性があるので、人的障害物509がADVのために譲ると、上述したプロセスは再開することができる。
図6は、本実施形態に係る、障害物に遭遇したときの動的コスト関数を用いて、人間の運転者が車両を操作する挙動を模倣する処理600の一例を示すフローチャートである。プロセス600は、ソフトウェア、ハードウェア、またはそれらの組み合わせを含むことができる処理ロジックによって実行することができる。例えば、動的コスト関数316が図4のプランニングモジュール305によって呼び出されると、プロセス600は、動的コスト関数316によって実行され得る。
図6を参照すると、操作601において、ADVの前方に障害物が検出されたことに応答して、処理ロジックは、障害物までの第1の距離を決定する。動作602において、処理ロジックは、閉ループ制御602を実行し、閉ループの各回の繰り返しは、ADVの1つまたは複数の計画サイクルにおいて実行される。各回の繰り返しに対して、複数の動作が実行される。動作602.1において、処理ロジックは、パラメータのセットの各々のリアルタイム値を収集する。動作602.2において、処理ロジックは、パラメータのセットの各々のリアルタイム値を使用して、第1の距離からのオフセットを決定する。動作602.3において、処理ロジックは、第1の距離およびオフセット量に基づいて第2の距離を計算する。動作602.4において、処理ロジックは、ADVが障害物からの第2の距離で停止することができるように、第2の距離に基づいてパラメータのセットの各々の予想値を使用してADVを制御する。一実施形態では、ADVと障害物との間の距離、ADVの速度、およびADVが走行する道路の制限速度に基づいてコスト関数を調整する。次に、修正されたコスト関数に基づいてコストを計算し、計算したコストに基づいてADVの速度計画を実行する。コストが所定の閾値よりも高い(例えば、高すぎる)場合、プロセスは、車両を現在位置に停止させる。
上述の構成要素の一部または全部は、ソフトウェア、ハードウェア、またはそれらの組み合わせで実装されてもよいことに留意されたい。例えば、そのような構成要素は、永続的な記憶装置にインストールされて格納されたソフトウェアとして実装されてもよく、そのソフトウェアは、メモリにロードされ、プロセッサ(図示せず)によって実行されて、本明細書に記載のプロセスまたは動作を実装してもよい。あるいは、そのようなコンポーネントは、アプリケーションからの対応するドライバおよび/またはオペレーティング・システムを介してアクセス可能な、集積回路(例えば、特定用途向け集積回路またはASIC)、デジタル信号プロセッサ(DSP)、またはフィールド・プログラマブル・ゲート・アレイ(FPGA)などの特定用途向けハードウェアにプログラムされた、または組み込まれた実行可能コードとして実装されてもよい。さらに、そのようなコンポーネントは、1つまたは複数の特定の命令を介してソフトウェアコンポーネントによってアクセス可能な命令セットの一部として、プロセッサまたはプロセッサコア内の特定のハードウェアロジックとして実装することができる。
上述した具体的な説明の一部は、既に、コンピュータメモリにおけるデータビットに対する演算のアルゴリズムと記号表現により示された。これらのアルゴリズムの説明及び表現は、データ処理分野における当業者によって使用される、それらの作業実質を所属分野の他の当業者に最も効果的に伝達する方法である。本明細書では、一般的に、アルゴリズムは、所望の結果につながるセルフコンシステントシーケンスと考えられる。これらの操作は、物理量の物理的処置が必要とされるものである。
しかしながら、念頭に置くべきなのは、これらの用語及び類似の用語の全ては、適切な物理量に関連付けられるものであり、これらの量を標識しやすくするためのものに過ぎない。以上の説明で他に明示的に記載されていない限り、本明細書の全体にわたって理解すべきなのは、用語(例えば、添付された特許請求の範囲に記載のもの)による説明とは、コンピュータシステム、又は類似の電子式計算装置の動作及び処理を指し、前記コンピュータシステム又は電子式計算装置は、コンピュータシステムのレジスタ及びメモリにおける物理(電子)量として示されたデータを制御するとともに、前記データをコンピュータシステムメモリ又はレジスタ又はこのようなその他の情報記憶装置、伝送又は表示装置において同様に物理量として示された別のデータに変換する。
本発明の実施形態は、本明細書の操作を実行するための装置にも関する。このようなコンピュータプログラムは、非一時的コンピュータ可読媒体に格納される。機械可読媒体は、機械(例えば、コンピュータ)により読み取り可能な形式で情報を格納するための任意のメカニズムを含む。例えば、機械可読(例えば、コンピュータ可読)媒体は、機械(例えば、コンピュータ)可読記憶媒体(例えば、読み出し専用メモリ(「ROM」)、ランダムアクセスメモリ(「RAM」)、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリ装置)を含む。
上述した図面において説明されたプロセス又は方法は、ハードウェア(例えば、回路、専用ロジックなど)、ソフトウェア(例えば、非一時的コンピュータ可読媒体に具現化されるもの)、又は両方の組み合わせを含む処理ロジックにより実行されることができる。前記プロセス又は方法は、以上で特定の順序に応じて説明されたが、前記操作の一部が異なる順序で実行されてもよいことを理解されたい。また、一部の操作は、順番ではなく並行して実行されてもよい。
本発明の実施形態は、いずれの特定のプログラミング言語を参照することなく記載されている。理解すべきのは、本明細書に記載の本発明の実施形態の教示を実現するために、様々なプログラミング言語を使用することができる。。
本明細書において、本発明の実施形態は、既にその具体的な例示的な実施形態を参照しながら記載された。明らかなように、添付された特許請求の範囲に記載された本発明のより広い趣旨及び範囲を逸脱しない限り、本発明に対して様々な変更を行うことができる。それゆえに、本明細書及び図面は、限定的な意味でなく、例示的な意味で理解されるべきである。