本発明の実施形態は、一般的に、自律走行車を走行させることに関するものである。特に、本発明の実施形態は、システム遅延を補正して自律走行車を制御することに関するものである。
車両が自律走行モード(例えば、無人運転)で走行している場合、乗員、特に運転者を運転に関連するいくつかの責任から解放することができる。自律走行モードで走行している場合、当該車両が車載センサを利用して様々な場所へ案内されることができ、それによりヒューマン・インタラクションの最も少ない場合、又は乗客なしの場合に走行することを可能にする。
モーション計画と制御は、自律走行において重要な処理である。しかし、従来のモーション計画処理は、異なる種類の車両の特性の差異を考慮せずに、定められたルートを完成する難しさを主に当該ルートの曲率と速度により推定する。同じモーション計画と制御をすべてのタイプの車両に適用することが、いくつかの状況において正確かつ円滑でない可能性がある。
本発明の実施形態は図面の各図において限定的ではなく例示的な形態で示され、図面における同じ図面符号が類似する素子を示す。
図1は、本発明の一実施形態に係るネットワークシステムを示すブロック図である。
図2は、本発明の一実施形態に係る自律走行車の一例を示すブロック図である。
図3は、本発明の一実施形態に係る自律走行車に使用されるデータ処理システムの一例を示すブロック図である。
図4は、システム遅延のある場合とシステム遅延のない場合に、自律走行車を走行させることを説明する図である。
図5は、本発明の一実施形態に係る運転シナリオ−システム遅延マッピングテーブルの一例を示すブロック図である。
図6Aは、本発明の一実施形態に係るシステム遅延のある場合とシステム遅延のない場合に、自律走行車を走行させることを説明する図である。
図6Bは、本発明の一実施形態に係るシステム遅延のある場合とシステム遅延のない場合に、自律走行車を走行させることを説明する図である。
図7Aは、本発明の他の実施形態に係るシステム遅延のある場合とシステム遅延のない場合に、自律走行車を走行させることを説明する図である。
図7Bは、本発明の他の実施形態に係るシステム遅延のある場合とシステム遅延のない場合に、自律走行車を走行させることを説明する図である。
図8は、本発明の一実施形態に係る自律走行車のシステム遅延を推定する手順を示すフローチャートである。
図9は、本発明の他の実施形態に係る自律走行車のシステム遅延を推定する手順を示すフローチャートである。
図10は、本発明の一実施形態に係るシステム遅延の補償を利用して自律走行車を走行させる手順を示すフローチャートである。
図11は、一実施形態に係るデータ処理システムを示すブロック図である。
以下、説明の詳細を参照しながら、本出願の様々な実施形態及び方法を説明し、図面は、前記様々な実施形態を示す。以下の説明及び図面は、本出願を説明するためのものであり、本出願を限定するものではない。本出願の様々な実施形態を完全に把握するために、多数の特定の詳細を説明する。なお、いくつかの例では、本出願の実施形態に対する簡単な説明を提供するために、周知又は従来技術の詳細について説明していない。
本明細書では「一実施形態」又は「実施形態」とは、当該実施形態について組み合わせて説明された特定特徴、構造又は特性が、本出願の少なくとも1つの実施形態に含まれてもよい。語句「一実施形態では」は、本明細書全体において同一の実施形態を指すとは限らない。
本発明の一実施形態によると、遅延推定機構を使用して異なる走行状況において自律走行車で発生した異なる種類の遅延を推定する。遅延推定機構は、これらの遅延を利用して遅延補償(delay corrected)された位置を最もよく反映する最良の車両位置を推論する。一実施形態では、システム遅延は、様々な異なる遅延に基づいて決定されることができ、様々な異なる遅延は、自律走行車のステアリング制御遅延、速度制御遅延、計算遅延、及び通信遅延を含むが、これらに限定されるものではない。これらの遅延におけるいくつかの遅延(例えば、ステアリング制御遅延と速度制御遅延)は、特定のセンサを使用して測定されることができる。計算遅されることができる。そして、システム遅延は、予め決定された公式(例えば、加重アルゴリズム(weighted algorithm))を使用して、これらの遅延のうちの少なくとも一部に基づいて決定されることができる。その後、システム遅延を利用して、自律走行車を走行させる間に制御コマンドが発行されるタイミングを調整することができる。
一実施形態では、ステアリング制御遅延が測定され、ここでステアリング遅延は、ステアリング制御コマンドを発行した時間と自律走行車の1つ以上の車輪から受信された応答時間との間の遅延を示す。速度制御遅延は、速度制御コマンドを発行した時間と、自律走行車の1つ以上の車輪から受信された応答時間(或は、アクセルペダル又はブレーキペダルへ圧力を与える時間)との間で測定される。その後、既定のルートに応答して、全体のシステム遅延は、予め決められたアルゴリズムを使用してステアリング制御遅延及び速度制御遅延に基づいて決定される。自律走行車を走行させるための計画及び制御データは、システム遅延に基づいて生成される。
本発明の他の実施形態によると、異なる車両のある運転パラメータが異なる運転シナリオで記録される。運転シナリオは、特定の速度(例えば、一定の速度、加速度、又は減速を維持する)で特定の距離を走行させること、特定の速度で特定の回転角度により回転すること、特定の速度及び/又は角度で車線を変更することなどの具体的な走行パターンを指す。ガスペダル及び/又はブレーキペダルに適用される圧力も記録することができる。また、ステアリング制御遅延、速度制御遅延、演算遅延及び/又は通信遅延を含む、各車両が各運転シナリオにおいて関連制御コマンドを発行することと関連するシステム遅延が決定されたり、推定されたりする。データベース又は運転シナリオ−システム遅延(シナリオ/遅延)マッピングテーブルが生成される。シナリオ/遅延マッピングテーブルは、複数のマッピングエントリを含む。各マッピングエントリは、特定の運転シナリオをシステム遅延にマッピングする。その後、同じ又は類似の運転シナリオや走行環境で自律走行車を計画及び制御する際に、シナリオ/遅延マッピングテーブルは、リアルタイムの走行期間に適用されてシステム遅延を補償する。
一実施形態では、運転シナリオは、自律走行車の次のルートセグメント(route segment)又はルートに対して決定される。それに応答して、ルックアップ動作は、シナリオ/遅延マッピングテーブルにおいてルックアップ処理を実行して決定された運転シナリオとマッチングするマッピングエントリを位置決めする。シナリオ/遅延マッピングテーブルは、複数のマッピングエントリを含む。各マッピングエントリは、特定の運転シナリオを、当該特定の運転シナリオについて算出されたシステム遅延にマッピングする。その後、自律走行車は、その時点での運転シナリオに対応するシステム遅延に基づいて制御かつ走行され、これは、当該状況下で、システム遅延を補償するタイミングに応じて制御コマンドを発行することを含む。
図1は本発明に係る一実施形態に係る自律走行車のネットワーク配置を示すブロック図である。図1を参照して、ネットワーク配置100はネットワーク102によって1つ以上のサーバ103〜104に通信可能に接続することができる自律走行車101を含む。1つの自律走行車が示されているが、ネットワーク102によって複数の自律走行車は互いに接続され、及び/又はサーバ103〜104に接続されることができる。ネットワーク102は、任意のタイプのネットワーク、例えば有線又は無線のローカルエリアネットワーク(LAN)、例えばインターネットのような広域ネットワーク(WAN)、セルラーネットワーク、衛星ネットワーク又はその組み合わせであってもよい。サーバ103〜104は任意のタイプのサーバ又はサーバクラスタ、例えばWebサーバ又はクラウドサーバ、アプリケーションサーバ、バックエンドサーバ又はその組み合わせであってもよい。サーバ103〜104は、データ分析サーバ、内容サーバ、交通情報サーバ、地図(マップ)及び興味のあるポイント(POI)サーバ又は位置サーバ等であってもよい。
自律走行車とは、運転者からの入力が非常に少ない又はない場合に案内して環境を通過する自律走行モードに設置される車両である。このような自律走行車は、車両が走行している環境にかかる情報を検出するように配置される1つ又は複数のセンサを含むセンサシステムを備える。車両及びその関連しているコントローラが、検出された情報で案内して環境を通過する。自律走行車101が手動モード、完全自律走行モード又は部分自律走行モードで運転されることができる。
一実施形態では、自律走行車101は、データ処理システム110と、車両制御システム111と、無線通信システム112と、ユーザインターフェースシステム113と、インフォテインメントシステム114と、センサシステム115とを含むが、これらに制限されない。自律走行車101は、通常の車両に含まれるある一般的な構成要素(部材)、例えばエンジン、車輪、ハンドル、変速器等をさらに含んでもよく、前記構成要素は、車両制御システム111及び/又はデータ処理システム110により多種の通信信号及び/又はコマンド(例えば加速信号又はコマンド、減速信号又はコマンド、ステアリング信号又はコマンド、ブレーキ信号又はコマンド等)を使用して制御されることができる。
構成要素110〜115は、インターコネクト、バス、ネットワーク又はそれらの組み合わせを介して互いに通信可能に接続することができる。例えば、構成要素110〜115は、コントローラローカルエリアネットワーク(CAN)バスを介して互いに通信可能に接続することができる。CANバスは、マイクロコントローラ及び装置がホストコンピューターのない応用において互いに通信することを許可するような車両バス標準として設計される。それは、最初に自動車内における多重(multiplex)電線のために設計されたメッセージに基づくプロトコルであるが、他のたくさんの環境(状況)にも用いられる。
ここで、図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、コンピュータビジョンシステム204、ナビゲーションユニット205(ナビゲーションとルートシステム、又はナビゲーション/ルートシステムとも呼ばれる)及び衝突回避ユニット206(障害物回避システムでも呼ばれる)を含むが、これらに限定されない。ステアリングユニット201は、車両の方向又は走行方向を調整することに用いられる。スロットルユニット202は、モーター又はエンジンの速度を制御して、さらに車両の速度及び加速度を制御することに用いられる。ブレーキユニット203は、摩擦を提供することによって車両の車輪又はタイヤをスローダウンして車両を減速させることに用いられる。
コンピュータビジョンユニット又はシステム204は、自律走行車の環境内の対象及び/又は特徴を認識するために1つ以上のカメラ211によってキャプチャされた画像を処理し、分析するものである。対象は、交通信号、道路境界、他の車両、歩行者、及び/又は障害物などを含むことができる。コンピュータビジョンシステム204は、対象認識アルゴリズム、ビデオ追跡及び他のコンピュータビジョン技術を使用することができる。いくつかの実施形態では、コンピュータビジョンシステム204は、環境をマッピングして、対象を追跡し、対象の速度を推定することなどができる。
ナビゲーションユニット又はシステム205は、自律走行車の走行経路を決定するものである。例えば、ナビゲーションシステムは、自律走行車を最終的な目的地に至る車道ベースの経路に沿って一般的に前進させるとともに、感知された障害物をだいたい避けるような経路に沿って移動する一連の速度と進行方向(directional heading)を決定することができる。目的地は、ユーザインターフェースを介してユーザ入力に応じて設定されてもよい。ナビゲーションシステム205は、自律走行車が走行している間、走行経路を動的に更新することができる。ナビゲーションシステム205は、自律走行車に用いられる走行経路を決定するためにGPSシステム、及び1つ以上のマップからのデータを統合してもよい。
衝突回避ユニット又はシステム206は、自律走行車の環境での潜在的な障害物を識別、評価、回避又は他の方法で乗り越えるものである。例えば、衝突回避システム206は、緊急回避(swerve)処理、回転処理、制動処理などを行うために、制御システムの1つ以上のサブシステムを処理することで、自律走行車のナビゲーションにおける変化を実現することができる。衝突回避システム206は、周辺の交通パターン、道路状況等に基づいて、実現可能な障害物回避処理を自動的に決定することができる。衝突回避システム206は、自律走行車が緊急回避して進入しようとする隣接領域における車両、建築の障害物などが他のセンサシステムにより検出されたとき、緊急回避処理が行われないように構成されることができる。衝突回避システム206が、使用可能でありながら自律走行車の乗員の安全性を最大化する処理を自動的に選択することができる。衝突回避システム206は、自律運行車両の乗客室に対して最低限の加速を引き起こすと予想される回避処理を選択することができる。注意すべきなことは、図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は、自律走行車101の他の構成要素と通信して旅程関連データを取得する。例えば、データ処理システム110は、位置サーバ及び地図及びPOI(MPOI)サーバから位置及びルート情報を取得することができ、前記MPOIサーバはサーバ103〜104の一部であってもよい。位置サーバは、位置サービスを提供し、かつMPOIサーバはマップサービス及びある位置のPOIを提供する。あるいは、このような位置及びMPOI情報は、感知及び計画システム110の不揮発性記憶装置にローカルにキャッシュされることができる。
自律走行車101がルートに沿って走行する期間に、データ処理システム110は、さらに交通情報システムやサーバ(TIS)からリアルタイム交通情報を取得できる。注意すべきなのは、サーバ103〜104は、第三者エンティティにより動作されることができる。あるいは、サーバ103〜104の機能は、データ処理システム110と一体化されてもよい。リアルタイム交通情報、MPOI情報、位置情報、及びセンサシステム115が検出又は感知したリアルタイムなローカル環境データ(例えば、障害物、対象、付近車両)に基づいて、データ処理システム110は、指定された目的地に安全で効果的に到達するように、最適なルートを計画し、かつ計画したルートにより例えば制御システム111を介して車両101を運転することができる。
一実施形態によると、自律走行車101は、車両101の乗客に情報とエンターテインメントを提供するインフォテインメントシステム114をさらに含むことができる。情報及びエンターテインメントコンテンツは、ローカル及び/又はリモートに(例えば、サーバ103乃至104によって提供される)記憶されたコンテンツ情報に基づいて、受信、コンパイル、及びレンダリングされる。例えば、情報はネットワーク102を介して任意のサーバ103乃至104からリアルタイムでストリーミングされて車両101のディスプレイ装置上に表示される。情報は、例えば、1つ以上のカメラでリアルタイムにキャプチャされたローカル情報によって拡張される(augmented)ことができ、それから、拡張されたコンテンツは、仮想現実の方法で表示されてもよい。
一実施形態では、位置及びルート情報、MPOI情報、及び/又はリアルタイムの交通情報に基づいて、インフォテインメントシステム114及び/又はデータ処理システム110は、現在の交通環境(例えば、MPOI)に適切なあるタイプのコンテンツを決定する。システムは、例えばリアルタイムの走行情報に基づいて、リストコンテンツアイテム(例えば、スポンサーされたコンテンツや広告)をコンテンツアイテムの候補として認識するために、コンテンツのインデックス(図示せず)においてルックアップ処理を実行する。
一実施形態では、システムは、様々なランキングアルゴリズムを使用してリスト内のコンテンツアイテムの順位を決定する。コンテンツアイテムは、ユーザのユーザプロファイルに基づいて、順位を決定してもよい。例えば、コンテンツアイテムは、ユーザプロファイルから導出できる、ユーザの好み(preference)に基づいて、順位を決定してもよい。ユーザプロファイルは、過去のユーザ操作の履歴に基づいて、コンパイルされることができる。一実施形態では、システムは、各コンテンツアイテムのランキングスコアを決定するために、1つ以上のコンテンツのランキングモデルをコンテンツアイテムのそれぞれに適用する。所定のしきい値を超えるランキングスコアを有するコンテンツアイテムを選択することができる。コンテンツランキングモデルは、過去の類似する移動環境や交通状況を表す既知の特徴のセットによってトレーニングされることができる。コンテンツランキングモデルは、類似するユーザのユーザプロファイルに基づいて訓練されてもよい。
選択されたコンテンツアイテムをレンダリングして、自律走行車内のディスプレイ装置上に表示する。一実施形態では、システムは、自律走行車の1つ以上のカメラを使用してある時点でキャプチャされた画像上に、選択されたコンテンツアイテムを追加して拡張させる。一実施形態では、画像に画像認識を実行し、画像によって表現されたコンテンツを導出したり理解したりする。例えば、画像やPOIを記述するために、1つ以上のキーワードが導出される。コンテンツアイテムのリストは、画像によって表現された1つ以上のキーワード又はPOIに基づいて認識されてもよい。その後、システムは、選択されたコンテンツアイテムをイメージに拡張して、コンテンツアイテムが画像上に重畳される拡張画像を生成する。拡張画像は、自律走行車のディスプレイ装置上に表示される。いくつかの実施形態によれば、インフォテインメントシステム114は、データ処理システム110と一体化されてもよい。
代案としては、ユーザは、ネットワーク(例えば、クラウドネットワーク)を介してコンテンツプロバイダのコンテンツサーバから定期的に更新できる、コンテンツ記憶装置又はデータベースからのプリコンパイルされたコンテンツ(例えば、ビデオ、映画)のリストから特に選択することができる。したがって、ユーザは、例えば、データ記憶装置125から取得されたディスプレイ装置上に表示しようとする、リアルタイムでキャプチャされたリアルタイムの実際コンテンツ又は事前レンダリングされたコンテンツを特に選択することができる。例えば、自律走行車101が、ニューヨーク市で雪の降る日に走行する場合には、ユーザはハワイで明るい環境を表示するようにディスプレイ装置をスイッチングすることができ、まるで自律走行車101が晴れた日に走行するようである。コンテンツは、協力又は協調の方法で(つまり、仮想現実方法で)複数のディスプレイ装置(例えば、複数のウィンドウ)に表示されてもよい。
図1を再び参照すると、一実施形態によると、次のルート又は次のルートセグメントを計画するとき、データ処理システム110は、システム遅延を考慮する。具体的には、次の移動を計画するとき、システムはその時点の運転シナリオを決定し、運転シナリオに対応するシステム遅延を取得する。システムは、(例えば、システム遅延を考慮して適切なタイミング、大きさ、及び/又は回転角度に関する制御コマンドを発行することにより)関連するシステム遅延をもとに計画及び制御データを生成する。システム遅延は、自律走行車の走行期間にオンラインで決定されてもよい。代案として、システム遅延は、様々な運転シナリオ又は条件下での大量の車両の多くの運転統計に基づいてオフラインで決定されてもよい。
一実施形態によると、システム遅延は、大量の異なる車両の大量の走行統計に基づいて、サーバ103のような分析システムによって決定されてもよい。そして、システム遅延は、リアルタイム又はオンラインの走行期間に使用されるように、データベースやテーブルのようなデータ構造で自律走行車101上にロードされる。一実施形態では、サーバとして動作するデータ分析システム103は、データコレクタ151と、データ分析モジュール152とを含むが、これらに限定されるものではない。データコレクタ151は、異なる運転シナリオ及び/又は条件下で、様々な車両から記録されキャプチャされた様々な走行統計153を収集する。また、走行統計153は、走行動作の間に、車両の様々なセンサによって測定及び/又は推定された特定のシステム遅延をさらに含む。
一実施形態では、システム遅延は、様々な異なる遅延に基づいて決定されることができ、様々な異なる遅延は、自律走行車におけるステアリング制御遅延、速度制御遅延、演算遅延及び通信遅延を含むが、これらに限定されない。これらの遅延のうちのいくつかの遅延(ステアリング制御遅延及び速度制御遅延など)は、特定のセンサ(例えば、ステアリングセンサ、ホイールセンサ、スロットルセンサやブレーキセンサなど)によって測定されることができる。演算遅延や通信遅延のような他の遅延が推定されてもよい。そして、システム遅延は、予め決定された公式(例えば、加重アルゴリズム)によって、これらの遅延に基づいて決定される。
走行統計153に基づいて、分析モジュール152は、異なる運転シナリオや状況に対応するシステム遅延を決定する分析を実行する。分析モジュール152は、異なる運転シナリオに対応するシステム遅延を記憶するシナリオ/遅延マッピングテーブル150を生成する。一実施形態では、シナリオ/遅延マッピングテーブル150は、複数のマッピングエントリを含む。各マッピングエントリは、特定の運転シナリオをシステム遅延にマッピングする。システム遅延は、ステアリング制御遅延、速度制御遅延、演算遅延又は通信遅延など、様々な種類の遅延に基づいて計算されることができる。代案としては、それぞれのマッピングエントリは、特定の運転シナリオを個別のステアリング制御遅延、速度制御遅延、演算遅延と通信遅延のセットにマッピングする。
そして、シナリオ/遅延マッピングテーブル150は、自律走行車にアップロードされ、ここで、シナリオ/遅延マッピングテーブル150は、自律走行車を制御して走行させるための制御コマンドを発行するタイミングを決定することによるシステム遅延を補償するように適用されてもよい。代案として、ステアリング制御遅延、速度制御遅延、演算遅延や通信遅延などのシステム遅延は、自律走行車を走行させる間に、リアルタイムで測定されたり推定されたりすることができる。これらのシステム遅延は、当該時点での具体的な運転シナリオの影響を受けずに制御コマンドを発行する処理を補償するために適用されてもよい。シナリオ/遅延マッピングテーブル150は、データベース又は他のルックアップテーブルのような、様々なデータ構造で実現されてもよい。
図3は、本発明の一実施形態に係る自律走行車とともに使用されるデータ処理システムの一例を示すブロック図である。システム300は、図1のシステム101の一部として実現されてもよい。図3を参照すると、データ処理システム110は、計画モジュール301、制御モジュール302、マップ及びルートモジュール303及びシステム遅延決定モジュール(又はシステム遅延決定計算機)304を含むが、これらに限定されない。モジュール301〜304は、ソフトウェア、ハードウェア、又はこれらの組み合わせで実現されてもよい。例えば、任意のモジュール301〜304は、永続記憶装置312(例えば、ハードディスク)に設置され、メモリ311にロードされ、1つ以上のプロセッサ(図示せず)によって実行されることができる。
計画モジュール301は、センサシステム115から受信されたセンサデータ及び/又は様々なソース(例えば、位置、地図、地図と興味点の一部としてのPOI、又はマップとルートモジュール303によって提供されるMPOIデータベース)から受信されたリアルタイム情報のような様々な情報に基づいて、自律走行車のための経路又はルートを計画するものである。計画及び制御データは、計画モジュール301によって生成される。計画及び制御データに基づいて、制御モジュール302は、計画及び制御データによって定義されたルート又は経路に沿って、車両制御システム111に適切なコマンド又は信号を送信することにより、自律走行車を制御するものである。計画及び制御データには、経路、又はルートに沿って異なる時点において、適切な車両設定又は運転パラメータ(例えば、スロットル、ブレーキ、及び回転コマンド)を使用して、ルート又は経路の第1点から第2点まで車両を走行させることができる十分な情報が含まれている。計画モジュール301と制御モジュール302は、図2の車両制御システム111のナビゲーションユニット205に通信可能に接続されたり、ナビゲーションユニット205一体化されたりしてもよい。
一実施形態によると、システム遅延決定モジュール304(単に遅延計算機とも称する)は、自律走行車300のシステム全体の遅延を決定する。一実施形態では、これらのシステム遅延は、特定の状況におけるステアリング制御遅延321、速度制御遅延322、演算遅延323、通信遅延324又は他の遅延に(個別の遅延とも呼ばれる)のうちの少なくとも1つに基づいて算出されたり決定されたりすることができる。これらの遅延321〜324は、大量の異なる運転シナリオ又は運転条件で大量の車両による大量の走行記録に基づいて測定されたり推定されたりすることができる。これらの遅延321〜324は、大量の走行統計を収集し、分析することで、データ分析システム103のようなデータ分析システムによってオフラインで決定されてもよい。例えば、特定のタイプの遅延は、同一又は類似のタイプの大量の車両から発生する同じタイプの平均遅延に基づいて決定されることができる。
代案として、遅延321〜324は、遅延決定モジュール304によってリアルタイムで決定されたり測定されたりすることができる。しかし、このような方法は、オンライン走行の間に性能が低下したり、計算する時間が長くかかる可能性がある。これとは反対に、専用のデータ分析システムによってオフラインで遅延321〜324を算出することにより、オンラインで遅延321〜324を使用することができ、遅延321〜324を決定する時間を短縮することができる。一実施形態では、遅延321〜324は、自律走行車300内のオンライン測定及び/又はデータ分析システムによって様々な車両のオフライン遅延計算に基づいて定期的に更新されてもよい。
一実施形態では、システム遅延決定モジュール304は、ステアリング制御遅延321を決定するためのステアリング制御遅延決定モジュール(図示せず)を含む。ステアリング制御遅延321は、ステアリング制御コマンドが発行される時間と、車両300の1つ以上の車輪から応答が受信された時間との間で測定されることができる。ステアリング制御遅延321は、ステアリング制御コマンドが発行されることと、車両の車輪がステアリング制御コマンドによって指定される角度で位置決められることとの間の時間に基づいて測定されることができ、これは1つ以上のステアリングセンサによって感知されてもよい。
システム遅延決定モジュール304は、加速のとき、減速のとき又は同じ速度を維持するときの遅延を含む速度制御遅延322を決定するための速度制御遅延決定モジュール(図示せず)をさらに含むことができる。速度制御遅延322は、速度制御コマンド(例えば、加速、減速又は制動)を発行する時間と、車両が速度の変更を開始することを示す応答を車両の車輪から受信した時間との間で測定されてもよい。速度制御遅延322は、加速又はスロットルコマンドを発行する時間と、車両が加速を開始する時間との差を示す加速遅延を含む。速度制御遅延322は、減速又は制動コマンドを発行する時間と、車両が減速を開始する時間との差を示す減速遅延を含むことができる。
演算遅延323は、システム(例えば、計画モジュール301、制御モジュール302、制御システム111及びCANバスなどの通信バス)が制御コマンドを生成して発行するのにかかる演算時間を指す。演算遅延はスリープ時間をさらに含むことができる。例えば、演算が10ヘルツ(Hz)の周波数で実行される場合(例えば、運転パラメータを0.1秒ごとに演算する)、平均スリープ時間は50ミリ秒(ms)である。このスリープ時間は、演算遅延の一部としてみなされ、スリープ時間の間に、システムが如何なるコマンドや応答を処理する可能性が低いためである。通信遅延324は、制御システム、通信バスと車からの応答の間の遅延又は通信コストを指す。演算遅延323及び通信遅延324は、同一又は類似のタイプの1つ以上の車両の前の動作に基づいて推定されることができる。
一実施形態では、システム遅延決定モジュール304は、予め決定された遅延アルゴリズムを使用して、ステアリング制御遅延321、速度制御遅延322、演算遅延323又は通信遅延324のうちの1つ以上の遅延に基づいて、全体又は最終システム遅延を算出する。一実施形態では、予め決定されたアルゴリズムは、加重アルゴリズムであり、計算においてかかるステアリング制御遅延321、速度制御遅延322、演算遅延323又は通信遅延324のそれぞれは、加重因子又は係数が割り当てられる。具体的な運転シナリオ又は環境によって、計算においてかかる個別の遅延のそれぞれの加重係数又は係数は異なってもよい。例えば、車両が曲がろうとすると、ステアリング制御遅延321に対応する加重係数をより高く調整することができる。車両が直進すると、速度制御遅延322に対応する加重係数を、特に、車両の現在速度と目標速度との差が比較的に大きいとき(例えば、予め決定されたしきい値よりも大きい場合)に、より高く調整ことができる。具体的な状況に応じて上記の調整をリアルタイムで適用することができる。算出されたシステム遅延は、制御コマンドを発行する時点と車両からの遅延応答の時点を補償するのに使用することができる。
例えば、ここで、図4を参照すると、車両が位置401にあると仮定する。システム遅延が考慮されると、制御コマンドが発行されるとき、車両は位置402で制御コマンドを受信し応答することができる。この遅延は、運転パラメータ(例えば、スロットル、ブレーキパラメータ)を決定するときに誤差を発生させる可能性があり、したがって、乗客に不快感を与える可能性がある。車両が制御コマンドを受信するとき、車両は、制御コマンドが決定された元の位置401に位置しない可能性がある。もっと正確に言えば、車両が位置402にある可能性がある。その結果、車両が受信された制御コマンドを実行するとき、たいへん遅くなる可能性があり、制御システムは、他のコマンドを発行することにより、このような状況を補正しなければならない。システム遅延を算出して了解することにより、システム遅延に基づいて制御コマンドに関連する時点及び運転パラメータを調整し計画して、システム遅延を補償することができる。たとえば、この例では、制御コマンドは、システム遅延を考慮してより早く発行されることができる。
図3を再び参照すると、一実施形態では、データ処理システム110は、図1のシステム103のようなデータ分析システムによってオフラインで生成されることができるシナリオ/遅延マッピングテーブル150をさらに維持(maintain)することができる。前述したように、異なる運転状況において、ステアリング、スロットルとブレーキの時間遅延は、大量の走行データに基づいて測定され、記録される。例えば、異なる運転状況は、100mにおいて時速5マイル(mph)で加速すること、速度を維持して100メートルを走行すること、100メートルにおいて10mphで減速すること、100mにおいて40mphで右車線に合流すること、アスファルト道路及びセメント道路で走行すること、30℃又は70℃温度下で動作すること、高性能のコンピュータ又は低性能のコンピュータで実行されるアルゴリズムを制御することなどを含むことができるが、これらに限定されない。スロットル圧力、ブレーキ圧力、ホイールの角度、ギアのような自律走行コマンドが記録されてもよい。現在速度、ホイールの角度などを含む状態が記録されてもよい。
シナリオ/遅延マッピングテーブル150は、複数のマッピングエントリを含む。各マッピングエントリは、特定の運転シナリオをシステム遅延にマッピングする。一実施形態に係るシナリオ/遅延マッピングテーブルの例が図5に示されている。運転シナリオは、特定の速度で特定の距離を走行すること、特定の速度及び特定の回転角度で曲がることのような具体的な走行パターンを指す。ガスペダル及び/又はブレーキペダルに与えられる圧力が記録されてもよい。また、各運転シナリオにおいて各車両がかかる制御コマンドを発行することに関連するシステム遅延(ステアリング制御遅延、速度制御遅延、演算遅延及び/又は通信遅延を含む)が決定又は推定される。その後、類似する運転シナリオ又は環境で自律走行車を計画及び制御する際に、シナリオ/遅延マッピングテーブル150は、リアルタイムの走行期間に適用されてシステム遅延を補償する。
一実施形態では、次のルート又はルートセグメントを計画するとき、計画モジュール301は、自律走行車の次のルートセグメント又はルートに対応する運転シナリオを決定する。ルックアップ動作はシナリオ/遅延マッピングテーブルで実行され、決定された運転シナリオとマッチングするマッピングエントリを位置決める。その後、計画モジュール301及び/又は制御モジュール302は、その時点での運転シナリオに対応するシステム遅延を考慮して自律走行車を制御し、ここで、当該状況におけるシステム遅延を補償するためのタイミングに応じて、制御コマンドを発行することを含む。
これにより、オンライン走行の期間に、システムは、まず状況や運転シナリオをチェックして、例えば、シナリオ/遅延マッピングテーブルに検索することにより、オフラインデータ及びリアルタイム記録に基づいて、システムの時間遅延を決定する。そして、システムは、リアルタイムではなく、当該時間遅延を使用して、将来のステアリング、スロットル及びブレーキを計算する。たとえば、図6A及び図6Bを参照すると、点線で示すように、現在の走行計画は30mにおいて車線を右車線に変更することを仮定する。遅延補償なしにステアリング角度コマンド(この例では、5度)が発行されると、車両は0.1秒の遅延で応答し、図6Aに示される実線の通り、実際のルートは、予想又は計画されるルートから外れる。上記した技術を使用して、決定されたシステム遅延を考慮することにより、実際の行動をとるための0.1秒の遅延があるため(例えば、シナリオ/遅延マッピングテーブルからのマッチング運転シナリオに基づいて)、コマンドは0.9秒(きちんと1秒でない)に送られるべきである。その結果、図6Bに示すように、車両は期待どおりに応答して、実際のルートと計画ルートがだいたいマッチングすることができる。
類似して、図7A及び図7Bを参照すると、車両が回転するとき、システム遅延は、図7Aに示す実線で示されたように、車両に遅延された方式で反応させる可能性がある。ある状況では、車両が計画されたルートに従わないことを検出するとき、実線で示されたような過剰反応を行う可能性があり、乗客に不快感を引き起こす可能性がある。ルートを計画する際に、システム遅延及び他の運転パラメータ(例えば、速度、回転角度)を考慮することで、コマンドは早く及び/又は異なる回転角度で発行されることができるので、車が図7Bで示されたような計画されたルートを厳密に従うことができる。
図8は、本発明の一実施形態に係る自律走行車のシステム遅延を推定する手順を示すフローチャートである。手順800は、ソフトウェア、ハードウェア、又はこれらの組み合わせを含む処理ロジックによって実行されてもよい。例えば、手順800は、図3のシステム遅延決定モジュール304によって実行されてもよい。代案として、手順800は、様々な車両から収集された走行統計に基づいて、データ分析システム103によって実行されてもよい。図8を参照すると、ブロック801において、処理ロジックは、車両のステアリング制御遅延を測定する。ステアリング制御遅延はステアリング制御コマンドを発行する時間と車両のステアリングセンサから応答を受信した時間との差を示す。ブロック802において、処理ロジックは、車両の速度制御遅延を測定する。速度制御遅延は速度制御コマンド(例えば、加速、減速/制動、一定の速度を維持すること)を発行する時間と車両からの応答時間(例えば、加速、減速を開始する時間)との差を示す。
ブロック803において、処理ロジックは、車両の演算遅延を推定する。演算遅延は、車両の制御システムが制御コマンドを生成し発行するのにかかる時間を指す。ブロック804において、処理ロジックは、車両の通信遅延を推定する。通信遅延は、制御システム、通信バス(例えばCANバス)と車両からの応答の間の遅延を示す。そして、ステアリング制御遅延、速度制御遅延、演算遅延及び/又は通信遅延は、データ構造に記憶され、当該データ構造は、後続の制御コマンドを調整して、それらのコマンドを発行する時点を補償するために使用されることができる。
図9は、本発明の他の実施形態に係る自律走行車のシステム遅延を決定する手順を示すフローチャートである。手順900は、ソフトウェア、ハードウェア、又はこれらの組み合わせを含む処理ロジックによって実行されてもよい。例えば、手順900は、図3のシステム遅延決定モジュール304によって実行されてもよい。代案として、手順900は、様々な車両から収集された走行統計に基づいて、データ分析システム103によって実行されてもよい。図9を参照すると、ブロック901において、処理ロジックは、特定のタイプの自律走行車について複数の運転シナリオを決定する。ブロック902において、それぞれの運転シナリオについて、処理ロジックは、車両が同一又は類似する運転シナリオ又は運転条件において走行中のテアリング制御遅延を測定し記録する。
ブロック903において、処理ロジックは、車両が同一又は類似する運転シナリオ又は運転条件において走行しているときのスロットル制御遅延(例えば、加速遅延)を測定し記録する。ブロック904において、処理ロジックは、車両が同一又は類似する運転シナリオ又は運転条件において走行しているときのブレーキ制御遅延(例えば、減速遅延)を測定し記録する。ブロック905において、ステアリング制御遅延、スロットル制御遅延及びブレーキ制御遅延は、特定のタイプの自律走行車のシナリオ/遅延マッピングデータ構造に記憶される。前記動作は、同じタイプ又は類似するタイプの大量の車両に対して繰り返し実行されてもよい。そして、遅延は、様々な車両の平均遅延をもとに計算されることができる。
図10は、本発明の一実施形態に係る自律走行車を動作させる手順を示すフローチャートである。手順1000は、ソフトウェア、ハードウェア、又はこれらの組み合わせを含む処理ロジックによって実行されてもよい。例えば、手順1000は、図1のシステム110によって実行されてもよい。図10を参照すると、ブロック1001において、処理ロジックは、自律走行車に装着された様々なセンサのセンサデータに基づいて決定された、走行環境に対する感知に基づいて、運転シナリオを決定する。ブロック1002において、処理ロジックは、シナリオ/遅延マッピングテーブルにおいてルックアップ動作を実行して、運転シナリオに対応するマッピングエントリを位置決める。シナリオ/遅延マッピングテーブルは、複数のマッピングエントリを含む。各マッピングエントリは、特定の運転シナリオを、同一又は類似する運転シナリオにおいて様々な車両によって測定された1つ以上の遅延セットにマッピングする。ブロック1003において、処理ロジックは、マッピングエントリからシステム遅延を検出して決定する。システム遅延は、前述したようなステアリング制御遅延、速度制御遅延、演算遅延及び通信遅延のうち少なくとも1つに基づいて決定されることができる。ブロック1004において、処理ロジックは、システム遅延を考慮してルート又はルートセグメントを計画し、計画及び制御データを生成する。ブロック1005において、処理ロジックは、計画及び制御データに基づいて、ルート又はルートセグメントに沿って自律走行車を走行させて制御する。
注意すべき点は、前記の示されたとともに記述された一部又は全部の構成要素は、ソフトウェア、ハードウェア又はその組み合わせで実現されることができる。例えば、このような構成要素は、永続記憶装置にインストールされるとともに記憶されたソフトウェアとして実現されてもよく、前記ソフトウェアは、本出願にわたって記載の手順又は動作を実施するように、プロセッサ(図示せず)でメモリにロードして実行されてもよい。あるいは、このような構成要素は、集積回路(例えば特定用途向けIC又はASIC)、デジタル信号プロセッサ(DSP)、又はフィールドプログラマブルゲートアレイ(FPGA、Field Programmable Gate Array)にプログラミングされ又は嵌め込みされた専用ハードウェアにおける実行可能なコードとして実現されてもよく、前記実行可能なコードは、対応するドライバープログラム及び/又はオペレーティングシステムによってアプリケーションからアクセスされてもよい。なお、このような構成要素は、プロセッサ又はプロセッサコアにおける特定のハードウェアロジックとして実現されてもよく、ソフトウェア構成要素が1つ以上の特定コマンドによってアクセス可能なコマンドセットの一部とする。
図11は、本発明の1つの実施形態と組み合わせて使用されるデータ処理システムを例示的に示すブロック図である。例えば、システム1500は、上記プロセス又は方法のいずれかを実行する上記任意のデータ処理システム(例えば、図1のデータ処理システム110、及びサーバ103〜104のいずれか)を示してもよい。システム1500は、多数の異なる構成要素を含んでもよい。これらの構成要素は、集積回路(IC)、集積回路の一部、分散型電子装置又は回路基板に適用された他のモジュール(例えばコンピュータシステムのマザーボード又はアドインカード)、又は他の方式でコンピュータシステムのシャシーに組み込まれた構成要素として実現されることできる。
さらに、システム1500は、コンピュータシステムの多数の構成要素の高レベルビューを示すことを目的とする。しかしながら、いくつかの実現形態では、付加的構成要素が存在する場合もあることを理解すべきである。また、他の実現形態において示される構成要素が異なる配置を有してもよい。システム1500は、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、サーバ、携帯電話、メディアプレーヤー、パーソナルディジタルアシスタント(PDA)、スマート腕時計、パーソナルコミュニケーター、ゲーム装置、ネットワークルータ又はハブ、無線アクセスポイント(AP)又はリピーター、セットトップボックス、又はそれらの組合せを示してもよい。また、単一の機器又はシステムのみを示したが、用語「機器」又は「システム」は、さらに、独立又は共同で1つ(又は複数)のコマンドセットを実行することにより本明細書に説明される任意の1種又は複数種の方法を実行する機器又はシステムの任意のセットを含むことを理解すべきである。
1つの実施形態において、システム1500は、バス又は相互接続部材1510によって接続されたプロセッサ1501、メモリ1503及び装置1505〜1508を備える。プロセッサ1501は、単一のプロセッサコア又は複数のプロセッサコアを含む単一のプロセッサ又は複数のプロセッサを示してもよい。プロセッサ1501は、マイクロプロセッサ、中央処理装置(CPU)等のような1つ又は複数の汎用プロセッサであってもよい。より具体的には、プロセッサ1501は、複雑コマンドセット計算(CISC)マイクロプロセッサ、縮小コマンドセットコンピュータ(RISC)マイクロプロセッサ、超長コマンド語(VLIW)マイクロプロセッサ、又は他のコマンドセットを実現するプロセッサ、又はコマンドセットの組合せを実現するプロセッサであってもよい。プロセッサ1501は、さらに、専用集積回路(ASIC)、セルラー又はベースバンドプロセッサ、フィールドプログラマブルゲートアレイ(FPGA)、デジタル信号プロセッサ(DSP)、ネットワークプロセッサ、グラフィックプロセッサ、ネットワークプロセッサ、通信プロセッサ、暗号プロセッサ、コプロセッサ、組み込みプロセッサのような1つ又は複数の専用プロセッサ、あるいはコマンド処理可能な任意の他のタイプのロジックであってもよい。
プロセッサ1501(超低電圧プロセッサのような低電力マルチコアプロセッサソケットであってもよい)は、前記システムの各種構成要素と通信するための主処理ユニット及び中央ハブとして用いられてもよい。このようなプロセッサは、システムオンチップ(SoC)として実現されることができる。プロセッサ1501は、コマンドを実行することにより本明細書に説明される動作及びステップを実行するためのコマンドを実行するように構成される。また、システム1500は、選択可能なグラフィックサブシステム1504と通信するグラフィックインターフェースをさらに含んでもよく、グラフィックサブシステム1504は、表示コントローラ、グラフィックプロセッサ及び/又は表示装置をさらに備えてもよい。
プロセッサ1501は、メモリ1503と通信してもよく、メモリ1503は、1つの実施形態において複数のメモリによって所定量のシステムメモリを提供する。メモリ1503は、ランダムアクセスメモリ(RAM)、ダイナミックRAM(DRAM)、シンクロナスDRAM(SDRAM)、スタティックRAM(SRAM)又は他のタイプの記憶装置のような1つ又は複数の揮発性記憶(又はメモリ)装置を備えてもよい。メモリ1503は、プロセッサ1501又は任意の他の装置により実行されるコマンド列を含む情報を記憶することができる。例えば、複数種のオペレーティングシステム、装置ドライバー、ファームウェア(例えば、基本入出力システム又はBIOS)及び/又はアプリケーションの実行可能なコード及び/又はデータはメモリ1503にロードされてもよく、プロセッサ1501により実行されてもよい。オペレーティングシステムは、ロボットオペレーティングシステム(ROS)、Microsoft(登録商標)会社からのWindows(登録商標)オペレーティングシステム、アップル会社からのMac OS(登録商標)/iOS(登録商標)、Google(登録商標)会社からのAndroid(登録商標)、Linux(登録商標)、Unix(登録商標)又は他のリアルタイム又は組み込みオペレーティングシステム(のような任意のタイプのオペレーティングシステムであってもよい。
システム1500は、I/O装置、例えば装置1505〜1508をさらに備えてもよく、ネットワークインターフェース装置1505、選択可能な入力装置1506及び他の選択可能なI/O装置1507を備える。ネットワークインターフェース装置1505は、無線送受信機及び/又はネットワークインターフェースカード(NIC)を備えてもよい。前記無線送受信機は、WiFi送受信機、赤外送受信機、ブルートゥース送受信機、WiMax送受信機、無線セルラーホン送受信機、衛星送受信機(例えば、全地球測位システム(GPS)送受信機)又は他の無線周波数(RF)送受信機又はそれらの組合せであってもよい。NICはイーサネットカードであってもよい。
入力装置1506は、マウス、タッチパッド、タッチスクリーン(それは表示装置1504と集積されてもよい)、ポインタデバイス(例えばスタイラス)及び/又はキーボード(例えば、物理キーボード又はタッチスクリーンの一部として表示された仮想キーボード)を備えてもよい。例えば、入力装置1506は、タッチスクリーンに接続されるタッチスクリーンコントローラを含んでもよい。タッチスクリーン及びタッチスクリーンコントローラは、例えば複数種のタッチ感度技術(容量式、抵抗式、赤外式及び表面音波技術を含むが、それらに限定されない)のいずれか、及びタッチスクリーンの1つ又は複数の接触点を決定するための他の近接センサアレイ又は他の素子を用いてそのタッチ点及び移動又は断続を検出することができる。
I/O装置1507は音声装置を備えてもよい。音声装置は、スピーカー及び/又はマイクロフォンを含んでもよく、それにより音声認識、音声コピー、デジタル記録及び/又は電話機能のような音声サポートの機能を促進する。他のI/O装置1507は、汎用シリアルバス(USB)ポート、パラレルポート、シリアルポート、印刷機、ネットワークインターフェース、バスブリッジ(例えば、PCI−PCIブリッジ)、センサ(例えば、加速度計、ジャイロスコープ、磁力計、光センサ、コンパス、近接センサ等のような動きセンサ)又はそれらの組合せをさらに備えてもよい。装置1507は、結像処理サブシステム(例えば、カメラ)をさらに備えてもよく、前記結像処理サブシステムは、カメラ機能(例えば、写真及びビデオ断片の記録)を促進するための電荷カップリング装置(CCD)又は相補型金属酸化物半導体(CMOS)光学センサのような光学センサを備えてもよい。あるセンサは、センサハブ(図示せず)によって相互接続部材1510に接続されてもよく、キーボード又は熱センサのような他の装置は、組み込みコントローラ(図示せず)により制御されてもよく、これはシステム1500の特定配置又は設計により決められる。
データ、アプリケーション、1つ又は複数のオペレーティングシステム等のような情報の永久記憶を提供するために、大容量記憶装置(図示せず)は、プロセッサ1501に接続されてもよい。様々な実施形態において、薄型化と軽量化のシステム設計を実現し且つシステムの応答能力を向上させるために、このような大容量記憶装置は、ソリッドステート装置(SSD)によって実現されることができる。なお、他の実施形態において、大容量記憶装置は、主にハードディスクドライブ(HDD)で実現されてもよく、容量が小さいSSD記憶装置は、SSDキャッシュとして停電イベント期間にコンテキスト状態及び他のこのような情報の永久記憶を実現し、それによりシステム動作が再開するときに通電を速く実現することができる。さらに、フラッシュデバイスは、例えばシリアルペリフェラルインターフェース(SPI)によってプロセッサ1501に接続されてもよい。このようなフラッシュデバイスは、システムソフトウェアの不揮発性記憶に用いられてもよく、前記システムソフトウェアは、前記システムのBIOS及び他のファームウェアを備える。
記憶装置1508は、任意の1種又は複数種の本明細書に記載の方法又は機能を体現する1つ又は複数のコマンドセット又はソフトウェア(例えば、モジュール、ユニット及び/又はロジック1528)が記憶されるコンピュータアクセス可能な記憶媒体1509(機械可読記憶媒体又はコンピュータ可読媒体とも呼ばれる)を備えてもよい。モジュール/ユニット/ロジック1528は、計画モジュール301、制御モジュール302、システム遅延決定モジュール304、データコレクタ151又は分析モジュール152のような上記構成要素のいずれかを示してもよい。モジュール/ユニット/ロジック1528は、さらにデータ処理システム1500により実行される期間にメモリ1503内及び/又はプロセッサ1501内に完全又は少なくとも部分的に存在してもよく、ここで、メモリ1503及びプロセッサ1501も、機器アクセス可能な記憶媒体を構成する。処理モジュール/ユニット/ロジック1528は、さらにネットワークによってネットワークインターフェース装置1505を経由して送受信されてもよい。
コンピュータ可読記憶媒体1509は、以上に説明されたいくつかのソフトウェア機能を永続的に記憶してもよい。コンピュータ可読記憶媒体1509は、例示的な実施形態において単一の媒体として示されたが、用語「コンピュータ可読記憶媒体」は、前記1つ又は複数のコマンドセットが記憶される単一の媒体又は複数の媒体(例えば、集中型又は分散型データベース、及び/又は関連するキャッシュ及びサーバ)を備えることを理解すべきである。用語「コンピュータ可読記憶媒体」は、さらにコマンドセットを記憶又はコーディング可能な任意の媒体を備えることを理解すべきであり、前記コマンドセットは、機器により実行され且つ前記機器に本出願の任意の1種又は複数種の方法を実行させる。従って、用語「コンピュータ可読記憶媒体」は、ソリッドステートメモリ及び光学媒体と磁気媒体又は任意の他の非一時的機械可読媒体を備えるが、それらに限定されないことを理解すべきである。
本明細書に記載の処理モジュール/ユニット/ロジック1528、構成要素及び他の特徴は、ディスクリートハードウェア構成要素として実現されてもよく、又はハードウェア構成要素(例えばASICS、FPGA、DSP又は類似装置)の機能に統合されてもよい。さらに、処理モジュール/ユニット/ロジック1528は、ハードウェア装置内のファームウェア又は機能回路として実現されてもよい。また、処理モジュール/ユニット/ロジック1528は、ハードウェア装置及びソフトウェアコンポーネントの任意の組合せで実現されてもよい。
なお、システム1500は、データ処理システムの各種の構成要素を有するように示されているが、構成要素の相互接続のいかなる特定のアーキテクチャー又は方式を示すものではないことに注意すべきであり、それは、このような詳細が本出願の実施形態に密接な関係がないためである。また、より少ない構成要素又はより多くの構成要素を有するネットワークコンピュータ、ハンドヘルドコンピュータ、携帯電話、サーバ及び/又は他のデータ処理システムは、本出願の実施形態と共に使用されてもよい。
上記詳細な説明の一部は、コンピュータメモリにおけるデータビットに対する演算のアルゴリズム及び記号表現で示される。これらのアルゴリズムの説明及び表現は、データ処理分野における当業者によって使用される、それらの作業実質を所属分野の他の当業者に最も効果的に伝達する方法である。ここで、アルゴリズムは、通常、所望の結果につながる首尾一貫した動作列(sequence of operations)と考えられる。これらの動作とは、物理量に対して物理的動作を行う必要となるステップを指す。
ただし、これらの全て及び類似の用語は、いずれも適切な物理量に関連付けられ、且つただこれらの量に適用される適切なラベルであることに注意すべきである。特に断らない限り、本出願の全体にわたって用語(例えば、添付している特許請求の範囲に説明された用語)による説明とは、コンピュータシステム又は類似の電子計算装置の動作及び処理であり、前記コンピュータシステム又は電子計算装置は、コンピュータシステムのレジスタ及びメモリに物理(例えば、電子)量としてデータを示し、且つ前記データをコンピュータシステムメモリ又はレジスタ又は他のこのような情報記憶装置、伝送又は表示装置内において類似に物理量として示される他のデータに変換する。
本出願の実施形態は、さらに本明細書における動作を実行するための装置に関する。このようなコンピュータプログラムは、不揮発性のコンピュータ可読媒体に記憶される。機器可読媒体は、機器(例えば、コンピュータ)可読な形態で情報を記憶する任意の機構を備える。例えば、機器可読(例えば、コンピュータ可読)媒体は、機器(例えば、コンピュータ)可読記憶媒体(例えば、読み出し専用メモリ(「ROM」)、ランダムアクセスメモリ(「RAM」)、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリメモリ)を備える。
上記図面に示される手順又は方法は、ハードウェア(例えば、回路、専用ロジック等)、ソフトウェア(例えば、不揮発性のコンピュータ可読媒体に具現化される)、又は両方の組合せを含む処理ロジックにより実行されてもよい。前記手順又は方法は、本明細書において特定の順序に応じて説明されるが、説明された動作の一部は、異なる順序に応じて実行されてもよい。また、いくつかの動作は、順番ではなく並行に実行されてもよい。
本出願の実施形態は、いずれかの特定のプログラミング言語を参照して説明されていないが、複数種のプログラミング言語で本明細書に記載の本出願の実施形態の教示を実現できることを理解すべきである。
以上の明細書では、本出願の具体的な例示的な実施形態を参照してその実施形態を説明した。明らかなように、添付している特許請求の範囲に記載の本出願のより広い趣旨及び範囲を逸脱しない限り、様々な変形が可能である。従って、限定的なものではなく例示的なものとして本明細書及び図面を理解すべきである。
本発明の実施形態は、一般的に、自律走行車を走行させることに関するものである。特に、本発明の実施形態は、システム遅延を補正して自律走行車を制御することに関するものである。
車両が自律走行モード(例えば、無人運転)で走行している場合、乗員、特に運転者を運転に関連するいくつかの責任から解放することができる。自律走行モードで走行している場合、当該車両が車載センサを利用して様々な場所へ案内されることができ、それによりヒューマン・インタラクションの最も少ない場合、又は乗客なしの場合に走行することを可能にする。
モーション計画と制御は、自律走行において重要な処理である。しかし、従来のモーション計画処理は、異なる種類の車両の特性の差異を考慮せずに、定められたルートを完成する難しさを主に当該ルートの曲率と速度により推定する。同じモーション計画と制御をすべてのタイプの車両に適用することが、いくつかの状況において正確かつ円滑でない可能性がある。
本発明の1つの実施形態によると、自動運転車両を運転するためのコンピュータ実施方法を提供し、この方法は、自律走行車を走行させるためのコンピュータ実施方法であって、自律走行車を動作するようにルートの次のルートセグメントの運転シナリオを決定するステップと、前記決定された運転シナリオとマッチングするマッチングエントリを位置決めるために、運転シナリオ-システム遅延テーブルにルックアップ動作を実行するステップであって、前記運転シナリオ-システム遅延テーブルは、複数のエントリを含み、各エントリは、前記自律走行車の複数の運転シナリオのうちの1つに対応し、各エントリは、前記複数の運転シナリオのうちの1つを、その1つの運転シナリオに対応するシステム遅延にマッピングするステップと、前記決定された運転シナリオに対応する前記マッチングエントリから、システム遅延を決定するステップと、決定されたシステム遅延に基づいて前記自律走行車を制御し運転するステップであって、ここで、前記決定された運転シナリオにおけるシステム遅延を補償するタイミングに応じて制御コマンドを発行することを含むステップと、を含む。
本発明の他の実施形態によると、コマンドが記憶されており、前記コマンドがプロセッサにより実行されるとき、前記プロセッサに、自律走行車を動作させる処理を実行させる、不発揮性の機械可読媒体を提供し、前記処理は、自律走行車を動作するようにルートの次のルートセグメントの運転シナリオを決定するステップと、前記決定された運転シナリオとマッチングするマッチングエントリを位置決めするために、運転シナリオ-システム遅延テーブルにルックアップ動作を実行するステップであって、前記運転シナリオ-システム遅延テーブルは、複数のエントリを含み、各エントリは、前記自律走行車の複数の運転シナリオのうちの1つに対応し、各エントリは、前記複数の運転シナリオのうちの1つを、その1つの運転シナリオに対応するシステム遅延にマッピングするステップと、前記決定された運転シナリオに対応する前記マッチングエントリから、システム遅延を決定するステップと、決定されたシステム遅延に基づいて前記自律走行車を制御し運転するステップであって、ここで、前記決定された運転シナリオにおけるシステム遅延を補償するタイミングに応じて制御コマンドを発行することを含むステップと、を含む。
本発明の他の実施形態によると、プロセッサと、前記プロセッサに連結されてコマンドを記憶するメモリと、を含み、前記メモリがプロセッサにより実行されるとき、前記プロセッサに、自律走行車を動作させる処理を実行させる、データ処理システムを提供し、前記処理は、自律走行車を動作するようにルートの次のルートセグメントの運転シナリオを決定するステップと、前記決定された運転シナリオとマッチングするマッチングエントリを位置決めるために、運転シナリオ-システム遅延テーブルにルックアップ動作を実行するステップであって、前記運転シナリオ-システム遅延テーブルは、複数のエントリを含み、各エントリは、前記自律走行車の複数の運転シナリオのうちの1つに対応し、各エントリは、前記複数の運転シナリオのうちの1つを、その1つの運転シナリオに対応するシステム遅延にマッピングするステップと、前記決定された運転シナリオに対応する前記マッチングエントリから、システム遅延を決定するステップと、決定されたシステム遅延に基づいて前記自律走行車を制御し運転するステップであって、ここで、前記決定された運転シナリオにおけるシステム遅延を補償するタイミングに応じて制御コマンドを発行することを含むステップと、を含む。
本発明の実施形態は図面の各図において限定的ではなく例示的な形態で示され、図面における同じ図面符号が類似する素子を示す。
図1は、本発明の一実施形態に係るネットワークシステムを示すブロック図である。
図2は、本発明の一実施形態に係る自律走行車の一例を示すブロック図である。
図3は、本発明の一実施形態に係る自律走行車に使用されるデータ処理システムの一例を示すブロック図である。
図4は、システム遅延のある場合とシステム遅延のない場合に、自律走行車を走行させることを説明する図である。
図5は、本発明の一実施形態に係る運転シナリオ−システム遅延マッピングテーブルの一例を示すブロック図である。
図6Aは、本発明の一実施形態に係るシステム遅延のある場合とシステム遅延のない場合に、自律走行車を走行させることを説明する図である。
図6Bは、本発明の一実施形態に係るシステム遅延のある場合とシステム遅延のない場合に、自律走行車を走行させることを説明する図である。
図7Aは、本発明の他の実施形態に係るシステム遅延のある場合とシステム遅延のない場合に、自律走行車を走行させることを説明する図である。
図7Bは、本発明の他の実施形態に係るシステム遅延のある場合とシステム遅延のない場合に、自律走行車を走行させることを説明する図である。
図8は、本発明の一実施形態に係る自律走行車のシステム遅延を推定する手順を示すフローチャートである。
図9は、本発明の他の実施形態に係る自律走行車のシステム遅延を推定する手順を示すフローチャートである。
図10は、本発明の一実施形態に係るシステム遅延の補償を利用して自律走行車を走行させる手順を示すフローチャートである。
図11は、一実施形態に係るデータ処理システムを示すブロック図である。
以下、説明の詳細を参照しながら、本出願の様々な実施形態及び方法を説明し、図面は、前記様々な実施形態を示す。以下の説明及び図面は、本出願を説明するためのものであり、本出願を限定するものではない。本出願の様々な実施形態を完全に把握するために、多数の特定の詳細を説明する。なお、いくつかの例では、本出願の実施形態に対する簡単な説明を提供するために、周知又は従来技術の詳細について説明していない。
本明細書では「一実施形態」又は「実施形態」とは、当該実施形態について組み合わせて説明された特定特徴、構造又は特性が、本出願の少なくとも1つの実施形態に含まれてもよい。語句「一実施形態では」は、本明細書全体において同一の実施形態を指すとは限らない。
本発明の一実施形態によると、遅延推定機構を使用して異なる走行状況において自律走行車で発生した異なる種類の遅延を推定する。遅延推定機構は、これらの遅延を利用して遅延補償(delay corrected)された位置を最もよく反映する最良の車両位置を推論する。一実施形態では、システム遅延は、様々な異なる遅延に基づいて決定されることができ、様々な異なる遅延は、自律走行車のステアリング制御遅延、速度制御遅延、計算遅延、及び通信遅延を含むが、これらに限定されるものではない。これらの遅延におけるいくつかの遅延(例えば、ステアリング制御遅延と速度制御遅延)は、特定のセンサを使用して測定されることができる。計算遅されることができる。そして、システム遅延は、予め決定された公式(例えば、加重アルゴリズム(weighted algorithm))を使用して、これらの遅延のうちの少なくとも一部に基づいて決定されることができる。その後、システム遅延を利用して、自律走行車を走行させる間に制御コマンドが発行されるタイミングを調整することができる。
一実施形態では、ステアリング制御遅延が測定され、ここでステアリング遅延は、ステアリング制御コマンドを発行した時間と自律走行車の1つ以上の車輪から受信された応答時間との間の遅延を示す。速度制御遅延は、速度制御コマンドを発行した時間と、自律走行車の1つ以上の車輪から受信された応答時間(或は、アクセルペダル又はブレーキペダルへ圧力を与える時間)との間で測定される。その後、既定のルートに応答して、全体のシステム遅延は、予め決められたアルゴリズムを使用してステアリング制御遅延及び速度制御遅延に基づいて決定される。自律走行車を走行させるための計画及び制御データは、システム遅延に基づいて生成される。
本発明の他の実施形態によると、異なる車両のある運転パラメータが異なる運転シナリオで記録される。運転シナリオは、特定の速度(例えば、一定の速度、加速度、又は減速を維持する)で特定の距離を走行させること、特定の速度で特定の回転角度により回転すること、特定の速度及び/又は角度で車線を変更することなどの具体的な走行パターンを指す。ガスペダル及び/又はブレーキペダルに適用される圧力も記録することができる。また、ステアリング制御遅延、速度制御遅延、演算遅延及び/又は通信遅延を含む、各車両が各運転シナリオにおいて関連制御コマンドを発行することと関連するシステム遅延が決定されたり、推定されたりする。データベース又は運転シナリオ−システム遅延(シナリオ/遅延)マッピングテーブルが生成される。シナリオ/遅延マッピングテーブルは、複数のマッピングエントリを含む。各マッピングエントリは、特定の運転シナリオをシステム遅延にマッピングする。その後、同じ又は類似の運転シナリオや走行環境で自律走行車を計画及び制御する際に、シナリオ/遅延マッピングテーブルは、リアルタイムの走行期間に適用されてシステム遅延を補償する。
一実施形態では、運転シナリオは、自律走行車の次のルートセグメント(route segment)又はルートに対して決定される。それに応答して、ルックアップ動作は、シナリオ/遅延マッピングテーブルにおいてルックアップ処理を実行して決定された運転シナリオとマッチングするマッピングエントリを位置決めする。シナリオ/遅延マッピングテーブルは、複数のマッピングエントリを含む。各マッピングエントリは、特定の運転シナリオを、当該特定の運転シナリオについて算出されたシステム遅延にマッピングする。その後、自律走行車は、その時点での運転シナリオに対応するシステム遅延に基づいて制御かつ走行され、これは、当該状況下で、システム遅延を補償するタイミングに応じて制御コマンドを発行することを含む。
図1は本発明に係る一実施形態に係る自律走行車のネットワーク配置を示すブロック図である。図1を参照して、ネットワーク配置100はネットワーク102によって1つ以上のサーバ103〜104に通信可能に接続することができる自律走行車101を含む。1つの自律走行車が示されているが、ネットワーク102によって複数の自律走行車は互いに接続され、及び/又はサーバ103〜104に接続されることができる。ネットワーク102は、任意のタイプのネットワーク、例えば有線又は無線のローカルエリアネットワーク(LAN)、例えばインターネットのような広域ネットワーク(WAN)、セルラーネットワーク、衛星ネットワーク又はその組み合わせであってもよい。サーバ103〜104は任意のタイプのサーバ又はサーバクラスタ、例えばWebサーバ又はクラウドサーバ、アプリケーションサーバ、バックエンドサーバ又はその組み合わせであってもよい。サーバ103〜104は、データ分析サーバ、内容サーバ、交通情報サーバ、地図(マップ)及び興味のあるポイント(POI)サーバ又は位置サーバ等であってもよい。
自律走行車とは、運転者からの入力が非常に少ない又はない場合に案内して環境を通過する自律走行モードに設置される車両である。このような自律走行車は、車両が走行している環境にかかる情報を検出するように配置される1つ又は複数のセンサを含むセンサシステムを備える。車両及びその関連しているコントローラが、検出された情報で案内して環境を通過する。自律走行車101が手動モード、完全自律走行モード又は部分自律走行モードで運転されることができる。
一実施形態では、自律走行車101は、データ処理システム110と、車両制御システム111と、無線通信システム112と、ユーザインターフェースシステム113と、インフォテインメントシステム114と、センサシステム115とを含むが、これらに制限されない。自律走行車101は、通常の車両に含まれるある一般的な構成要素(部材)、例えばエンジン、車輪、ハンドル、変速器等をさらに含んでもよく、前記構成要素は、車両制御システム111及び/又はデータ処理システム110により多種の通信信号及び/又はコマンド(例えば加速信号又はコマンド、減速信号又はコマンド、ステアリング信号又はコマンド、ブレーキ信号又はコマンド等)を使用して制御されることができる。
構成要素110〜115は、インターコネクト、バス、ネットワーク又はそれらの組み合わせを介して互いに通信可能に接続することができる。例えば、構成要素110〜115は、コントローラローカルエリアネットワーク(CAN)バスを介して互いに通信可能に接続することができる。CANバスは、マイクロコントローラ及び装置がホストコンピューターのない応用において互いに通信することを許可するような車両バス標準として設計される。それは、最初に自動車内における多重(multiplex)電線のために設計されたメッセージに基づくプロトコルであるが、他のたくさんの環境(状況)にも用いられる。
ここで、図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、コンピュータビジョンシステム204、ナビゲーションユニット205(ナビゲーションとルートシステム、又はナビゲーション/ルートシステムとも呼ばれる)及び衝突回避ユニット206(障害物回避システムでも呼ばれる)を含むが、これらに限定されない。ステアリングユニット201は、車両の方向又は走行方向を調整することに用いられる。スロットルユニット202は、モーター又はエンジンの速度を制御して、さらに車両の速度及び加速度を制御することに用いられる。ブレーキユニット203は、摩擦を提供することによって車両の車輪又はタイヤをスローダウンして車両を減速させることに用いられる。
コンピュータビジョンシステム204は、自律走行車の環境内の対象及び/又は特徴を認識するために1つ以上のカメラ211によってキャプチャされた画像を処理し、分析するものである。対象は、交通信号、道路境界、他の車両、歩行者、及び/又は障害物などを含むことができる。コンピュータビジョンシステム204は、対象認識アルゴリズム、ビデオ追跡及び他のコンピュータビジョン技術を使用することができる。いくつかの実施形態では、コンピュータビジョンシステム204は、環境をマッピングして、対象を追跡し、対象の速度を推定することなどができる。
ナビゲーションシステム205は、自律走行車の走行経路を決定するものである。例えば、ナビゲーションシステムは、自律走行車を最終的な目的地に至る車道ベースの経路に沿って一般的に前進させるとともに、感知された障害物をだいたい避けるような経路に沿って移動する一連の速度と進行方向(directional heading)を決定することができる。目的地は、ユーザインターフェースを介してユーザ入力に応じて設定されてもよい。ナビゲーションシステム205は、自律走行車が走行している間、走行経路を動的に更新することができる。ナビゲーションシステム205は、自律走行車に用いられる走行経路を決定するためにGPSシステム、及び1つ以上のマップからのデータを統合してもよい。
衝突回避システム206は、自律走行車の環境での潜在的な障害物を識別、評価、回避又は他の方法で乗り越えるものである。例えば、衝突回避システム206は、緊急回避(swerve)処理、回転処理、制動処理などを行うために、制御システムの1つ以上のサブシステムを処理することで、自律走行車のナビゲーションにおける変化を実現することができる。衝突回避システム206は、周辺の交通パターン、道路状況等に基づいて、実現可能な障害物回避処理を自動的に決定することができる。衝突回避システム206は、自律走行車が緊急回避して進入しようとする隣接領域における車両、建築の障害物などが他のセンサシステムにより検出されたとき、緊急回避処理が行われないように構成されることができる。衝突回避システム206が、使用可能でありながら自律走行車の乗員の安全性を最大化する処理を自動的に選択することができる。衝突回避システム206は、自律運行車両の乗客室に対して最低限の加速を引き起こすと予想される回避処理を選択することができる。注意すべきなことは、図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は、自律走行車101の他の構成要素と通信して旅程関連データを取得する。例えば、データ処理システム110は、位置サーバ及び地図及びPOI(MPOI)サーバから位置及びルート情報を取得することができ、前記MPOIサーバはサーバ103〜104の一部であってもよい。位置サーバは、位置サービスを提供し、かつMPOIサーバはマップサービス及びある位置のPOIを提供する。あるいは、このような位置及びMPOI情報は、感知及び計画システム110の不揮発性記憶装置にローカルにキャッシュされることができる。
自律走行車101がルートに沿って走行する期間に、データ処理システム110は、さらに交通情報システムやサーバ(TIS)からリアルタイム交通情報を取得できる。注意すべきなのは、サーバ103〜104は、第三者エンティティにより動作されることができる。あるいは、サーバ103〜104の機能は、データ処理システム110と一体化されてもよい。リアルタイム交通情報、MPOI情報、位置情報、及びセンサシステム115が検出又は感知したリアルタイムなローカル環境データ(例えば、障害物、対象、付近車両)に基づいて、データ処理システム110は、指定された目的地に安全で効果的に到達するように、最適なルートを計画し、かつ計画したルートにより例えば車両制御システム111を介して車両101を運転することができる。
一実施形態によると、自律走行車101は、車両101の乗客に情報とエンターテインメントを提供するインフォテインメントシステム114をさらに含むことができる。情報及びエンターテインメントコンテンツは、ローカル及び/又はリモートに(例えば、サーバ103乃至104によって提供される)記憶されたコンテンツ情報に基づいて、受信、コンパイル、及びレンダリングされる。例えば、情報はネットワーク102を介して任意のサーバ103乃至104からリアルタイムでストリーミングされて車両101のディスプレイ装置上に表示される。情報は、例えば、1つ以上のカメラでリアルタイムにキャプチャされたローカル情報によって拡張される(augmented)ことができ、それから、拡張されたコンテンツは、仮想現実の方法で表示されてもよい。
一実施形態では、位置及びルート情報、MPOI情報、及び/又はリアルタイムの交通情報に基づいて、インフォテインメントシステム114及び/又はデータ処理システム110は、現在の交通環境(例えば、MPOI)に適切なあるタイプのコンテンツを決定する。システムは、例えばリアルタイムの走行情報に基づいて、リストコンテンツアイテム(例えば、スポンサーされたコンテンツや広告)をコンテンツアイテムの候補として認識するために、コンテンツのインデックス(図示せず)においてルックアップ処理を実行する。
一実施形態では、システムは、様々なランキングアルゴリズムを使用してリスト内のコンテンツアイテムの順位を決定する。コンテンツアイテムは、ユーザのユーザプロファイルに基づいて、順位を決定してもよい。例えば、コンテンツアイテムは、ユーザプロファイルから導出できる、ユーザの好み(preference)に基づいて、順位を決定してもよい。ユーザプロファイルは、過去のユーザ操作の履歴に基づいて、コンパイルされることができる。一実施形態では、システムは、各コンテンツアイテムのランキングスコアを決定するために、1つ以上のコンテンツのランキングモデルをコンテンツアイテムのそれぞれに適用する。所定のしきい値を超えるランキングスコアを有するコンテンツアイテムを選択することができる。コンテンツランキングモデルは、過去の類似する移動環境や交通状況を表す既知の特徴のセットによってトレーニングされることができる。コンテンツランキングモデルは、類似するユーザのユーザプロファイルに基づいて訓練されてもよい。
選択されたコンテンツアイテムをレンダリングして、自律走行車内のディスプレイ装置上に表示する。一実施形態では、システムは、自律走行車の1つ以上のカメラを使用してある時点でキャプチャされた画像上に、選択されたコンテンツアイテムを追加して拡張させる。一実施形態では、画像に画像認識を実行し、画像によって表現されたコンテンツを導出したり理解したりする。例えば、画像やPOIを記述するために、1つ以上のキーワードが導出される。コンテンツアイテムのリストは、画像によって表現された1つ以上のキーワード又はPOIに基づいて認識されてもよい。その後、システムは、選択されたコンテンツアイテムをイメージに拡張して、コンテンツアイテムが画像上に重畳される拡張画像を生成する。拡張画像は、自律走行車のディスプレイ装置上に表示される。いくつかの実施形態によれば、インフォテインメントシステム114は、データ処理システム110と一体化されてもよい。
代案としては、ユーザは、ネットワーク(例えば、クラウドネットワーク)を介してコンテンツプロバイダのコンテンツサーバから定期的に更新できる、コンテンツ記憶装置又はデータベースからのプリコンパイルされたコンテンツ(例えば、ビデオ、映画)のリストから特に選択することができる。したがって、ユーザは、例えば、データ記憶装置125から取得されたディスプレイ装置上に表示しようとする、リアルタイムでキャプチャされたリアルタイムの実際コンテンツ又は事前レンダリングされたコンテンツを特に選択することができる。例えば、自律走行車101が、ニューヨーク市で雪の降る日に走行する場合には、ユーザはハワイで明るい環境を表示するようにディスプレイ装置をスイッチングすることができ、まるで自律走行車101が晴れた日に走行するようである。コンテンツは、協力又は協調の方法で(つまり、仮想現実方法で)複数のディスプレイ装置(例えば、複数のウィンドウ)に表示されてもよい。
図1を再び参照すると、一実施形態によると、次のルート又は次のルートセグメントを計画するとき、データ処理システム110は、システム遅延を考慮する。具体的には、次の移動を計画するとき、システムはその時点の運転シナリオを決定し、運転シナリオに対応するシステム遅延を取得する。システムは、(例えば、システム遅延を考慮して適切なタイミング、大きさ、及び/又は回転角度に関する制御コマンドを発行することにより)関連するシステム遅延をもとに計画及び制御データを生成する。システム遅延は、自律走行車の走行期間にオンラインで決定されてもよい。代案として、システム遅延は、様々な運転シナリオ又は条件下での大量の車両の多くの運転統計に基づいてオフラインで決定されてもよい。
一実施形態によると、システム遅延は、大量の異なる車両の大量の走行統計に基づいて、サーバ103のような分析システムによって決定されてもよい。そして、システム遅延は、リアルタイム又はオンラインの走行期間に使用されるように、データベースやテーブルのようなデータ構造で自律走行車101上にロードされる。一実施形態では、サーバとして動作するデータ分析システム103は、データコレクタ151と、データ分析モジュール152とを含むが、これらに限定されるものではない。データコレクタ151は、異なる運転シナリオ及び/又は条件下で、様々な車両から記録されキャプチャされた様々な走行統計153を収集する。また、走行統計153は、走行動作の間に、車両の様々なセンサによって測定及び/又は推定された特定のシステム遅延をさらに含む。
一実施形態では、システム遅延は、様々な異なる遅延に基づいて決定されることができ、様々な異なる遅延は、自律走行車におけるステアリング制御遅延、速度制御遅延、演算遅延及び通信遅延を含むが、これらに限定されない。これらの遅延のうちのいくつかの遅延(ステアリング制御遅延及び速度制御遅延など)は、特定のセンサ(例えば、ステアリングセンサ、ホイールセンサ、スロットルセンサやブレーキセンサなど)によって測定されることができる。演算遅延や通信遅延のような他の遅延が推定されてもよい。そして、システム遅延は、予め決定された公式(例えば、加重アルゴリズム)によって、これらの遅延に基づいて決定される。
走行統計153に基づいて、分析モジュール152は、異なる運転シナリオや状況に対応するシステム遅延を決定する分析を実行する。分析モジュール152は、異なる運転シナリオに対応するシステム遅延を記憶するシナリオ/遅延マッピングテーブル150を生成する。一実施形態では、シナリオ/遅延マッピングテーブル150は、複数のマッピングエントリを含む。各マッピングエントリは、特定の運転シナリオをシステム遅延にマッピングする。システム遅延は、ステアリング制御遅延、速度制御遅延、演算遅延又は通信遅延など、様々な種類の遅延に基づいて計算されることができる。代案としては、それぞれのマッピングエントリは、特定の運転シナリオを個別のステアリング制御遅延、速度制御遅延、演算遅延と通信遅延のセットにマッピングする。
そして、シナリオ/遅延マッピングテーブル150は、自律走行車にアップロードされ、ここで、シナリオ/遅延マッピングテーブル150は、自律走行車を制御して走行させるための制御コマンドを発行するタイミングを決定することによるシステム遅延を補償するように適用されてもよい。代案として、ステアリング制御遅延、速度制御遅延、演算遅延や通信遅延などのシステム遅延は、自律走行車を走行させる間に、リアルタイムで測定されたり推定されたりすることができる。これらのシステム遅延は、当該時点での具体的な運転シナリオの影響を受けずに制御コマンドを発行する処理を補償するために適用されてもよい。シナリオ/遅延マッピングテーブル150は、データベース又は他のルックアップテーブルのような、様々なデータ構造で実現されてもよい。
図3は、本発明の一実施形態に係る自律走行車とともに使用されるデータ処理システムの一例を示すブロック図である。システム300は、図1のシステム101の一部として実現されてもよい。図3を参照すると、データ処理システム110は、計画モジュール301、制御モジュール302、マップ及びルートモジュール303及びシステム遅延決定モジュール(又はシステム遅延決定計算機)304を含むが、これらに限定されない。モジュール301〜304は、ソフトウェア、ハードウェア、又はこれらの組み合わせで実現されてもよい。例えば、任意のモジュール301〜304は、永続記憶装置312(例えば、ハードディスク)に設置され、メモリ311にロードされ、1つ以上のプロセッサ(図示せず)によって実行されることができる。
計画モジュール301は、センサシステム115から受信されたセンサデータ及び/又は様々なソース(例えば、位置、地図、地図と興味点の一部としてのPOI、又はマップとルートモジュール303によって提供されるMPOIデータベース)から受信されたリアルタイム情報のような様々な情報に基づいて、自律走行車のための経路又はルートを計画するものである。計画及び制御データは、計画モジュール301によって生成される。計画及び制御データに基づいて、制御モジュール302は、計画及び制御データによって定義されたルート又は経路に沿って、車両制御システム111に適切なコマンド又は信号を送信することにより、自律走行車を制御するものである。計画及び制御データには、経路、又はルートに沿って異なる時点において、適切な車両設定又は運転パラメータ(例えば、スロットル、ブレーキ、及び回転コマンド)を使用して、ルート又は経路の第1点から第2点まで車両を走行させることができる十分な情報が含まれている。計画モジュール301と制御モジュール302は、図2の車両制御システム111のナビゲーションユニット205に通信可能に接続されたり、ナビゲーションユニット205一体化されたりしてもよい。
一実施形態によると、システム遅延決定モジュール304(単に遅延計算機とも称する)は、自律走行車300のシステム全体の遅延を決定する。一実施形態では、これらのシステム遅延は、特定の状況におけるステアリング制御遅延321、速度制御遅延322、演算遅延323、通信遅延324又は他の遅延に(個別の遅延とも呼ばれる)のうちの少なくとも1つに基づいて算出されたり決定されたりすることができる。これらの遅延321〜324は、大量の異なる運転シナリオ又は運転条件で大量の車両による大量の走行記録に基づいて測定されたり推定されたりすることができる。これらの遅延321〜324は、大量の走行統計を収集し、分析することで、データ分析システム103のようなデータ分析システムによってオフラインで決定されてもよい。例えば、特定のタイプの遅延は、同一又は類似のタイプの大量の車両から発生する同じタイプの平均遅延に基づいて決定されることができる。
代案として、遅延321〜324は、遅延決定モジュール304によってリアルタイムで決定されたり測定されたりすることができる。しかし、このような方法は、オンライン走行の間に性能が低下したり、計算する時間が長くかかる可能性がある。これとは反対に、専用のデータ分析システムによってオフラインで遅延321〜324を算出することにより、オンラインで遅延321〜324を使用することができ、遅延321〜324を決定する時間を短縮することができる。一実施形態では、遅延321〜324は、自律走行車300内のオンライン測定及び/又はデータ分析システムによって様々な車両のオフライン遅延計算に基づいて定期的に更新されてもよい。
一実施形態では、システム遅延決定モジュール304は、ステアリング制御遅延321を決定するためのステアリング制御遅延決定モジュール(図示せず)を含む。ステアリング制御遅延321は、ステアリング制御コマンドが発行される時間と、車両300の1つ以上の車輪から応答が受信された時間との間で測定されることができる。ステアリング制御遅延321は、ステアリング制御コマンドが発行されることと、車両の車輪がステアリング制御コマンドによって指定される角度で位置決められることとの間の時間に基づいて測定されることができ、これは1つ以上のステアリングセンサによって感知されてもよい。
システム遅延決定モジュール304は、加速のとき、減速のとき又は同じ速度を維持するときの遅延を含む速度制御遅延322を決定するための速度制御遅延決定モジュール(図示せず)をさらに含むことができる。速度制御遅延322は、速度制御コマンド(例えば、加速、減速又は制動)を発行する時間と、車両が速度の変更を開始することを示す応答を車両の車輪から受信した時間との間で測定されてもよい。速度制御遅延322は、加速又はスロットルコマンドを発行する時間と、車両が加速を開始する時間との差を示す加速遅延を含む。速度制御遅延322は、減速又は制動コマンドを発行する時間と、車両が減速を開始する時間との差を示す減速遅延を含むことができる。
演算遅延323は、システム(例えば、計画モジュール301、制御モジュール302、車両制御システム111及びCANバスなどの通信バス)が制御コマンドを生成して発行するのにかかる演算時間を指す。演算遅延はスリープ時間をさらに含むことができる。例えば、演算が10ヘルツ(Hz)の周波数で実行される場合(例えば、運転パラメータを0.1秒ごとに演算する)、平均スリープ時間は50ミリ秒(ms)である。このスリープ時間は、演算遅延の一部としてみなされ、スリープ時間の間に、システムが如何なるコマンドや応答を処理する可能性が低いためである。通信遅延324は、制御システム、通信バスと車の間にコマンドを発行するおよび応答を受信する遅延又は通信コストを指す。演算遅延323及び通信遅延324は、同一又は類似のタイプの1つ以上の車両の前の動作に基づいて推定されることができる。
一実施形態では、システム遅延決定モジュール304は、予め決定された遅延アルゴリズムを使用して、ステアリング制御遅延321、速度制御遅延322、演算遅延323又は通信遅延324のうちの1つ以上の遅延に基づいて、全体又は最終システム遅延を算出する。一実施形態では、予め決定されたアルゴリズムは、加重アルゴリズムであり、計算においてかかるステアリング制御遅延321、速度制御遅延322、演算遅延323又は通信遅延324のそれぞれは、加重因子又は係数が割り当てられる。具体的な運転シナリオ又は環境によって、計算においてかかる個別の遅延のそれぞれの加重係数又は係数は異なってもよい。例えば、車両が曲がろうとすると、ステアリング制御遅延321に対応する加重係数をより高く調整することができる。車両が直進すると、速度制御遅延322に対応する加重係数を、特に、車両の現在速度と目標速度との差が比較的に大きいとき(例えば、予め決定されたしきい値よりも大きい場合)に、より高く調整ことができる。具体的な状況に応じて上記の調整をリアルタイムで適用することができる。算出されたシステム遅延は、制御コマンドを発行する時点と車両からの遅延応答の時点を補償するのに使用することができる。
例えば、ここで、図4を参照すると、車両が位置401にあると仮定する。システム遅延が考慮されると、制御コマンドが発行されるとき、車両は位置402で制御コマンドを受信し応答することができる。この遅延は、運転パラメータ(例えば、スロットル、ブレーキパラメータ)を決定するときに誤差を発生させる可能性があり、したがって、乗客に不快感を与える可能性がある。車両が制御コマンドを受信するとき、車両は、制御コマンドが決定された元の位置401に位置しない可能性がある。もっと正確に言えば、車両が位置402にある可能性がある。その結果、車両が受信された制御コマンドを実行するとき、たいへん遅くなる可能性があり、制御システムは、他のコマンドを発行することにより、このような状況を補正しなければならない。システム遅延を算出して了解することにより、システム遅延に基づいて制御コマンドに関連する時点及び運転パラメータを調整し計画して、システム遅延を補償することができる。たとえば、この例では、制御コマンドは、システム遅延を考慮してより早く発行されることができる。
図3を再び参照すると、一実施形態では、データ処理システム110は、図1のシステム103のようなデータ分析システムによってオフラインで生成されることができるシナリオ/遅延マッピングテーブル150をさらに維持(maintain)することができる。前述したように、異なる運転状況において、ステアリング、スロットルとブレーキの時間遅延は、大量の走行データに基づいて測定され、記録される。例えば、異なる運転状況は、100mにおいて時速5マイル(mph)で加速すること、速度を維持して100メートルを走行すること、100メートルにおいて10mphで減速すること、100mにおいて40mphで右車線に合流すること、アスファルト道路及びセメント道路で走行すること、30℃又は70℃温度下で動作すること、高性能のコンピュータ又は低性能のコンピュータで実行されるアルゴリズムを制御することなどを含むことができるが、これらに限定されない。スロットル圧力、ブレーキ圧力、ホイールの角度、ギアのような自律走行コマンドが記録されてもよい。現在速度、ホイールの角度などを含む状態が記録されてもよい。
シナリオ/遅延マッピングテーブル150は、複数のマッピングエントリを含む。各マッピングエントリは、特定の運転シナリオをシステム遅延にマッピングする。一実施形態に係るシナリオ/遅延マッピングテーブルの例が図5に示されている。運転シナリオは、特定の速度で特定の距離を走行すること、特定の速度及び特定の回転角度で曲がることのような具体的な走行パターンを指す。ガスペダル及び/又はブレーキペダルに与えられる圧力が記録されてもよい。また、各運転シナリオにおいて各車両がかかる制御コマンドを発行することに関連するシステム遅延(ステアリング制御遅延、速度制御遅延、演算遅延及び/又は通信遅延を含む)が決定又は推定される。その後、類似する運転シナリオ又は環境で自律走行車を計画及び制御する際に、シナリオ/遅延マッピングテーブル150は、リアルタイムの走行期間に適用されてシステム遅延を補償する。
一実施形態では、次のルート又はルートセグメントを計画するとき、計画モジュール301は、自律走行車の次のルートセグメント又はルートに対応する運転シナリオを決定する。ルックアップ動作はシナリオ/遅延マッピングテーブルで実行され、決定された運転シナリオとマッチングするマッピングエントリを位置決めする。その後、計画モジュール301及び/又は制御モジュール302は、その時点での運転シナリオに対応するシステム遅延を考慮して自律走行車を制御し、ここで、当該状況におけるシステム遅延を補償するためのタイミングに応じて、制御コマンドを発行することを含む。
これにより、オンライン走行の期間に、システムは、まず状況や運転シナリオをチェックして、例えば、シナリオ/遅延マッピングテーブルに検索することにより、オフラインデータ及びリアルタイム記録に基づいて、システムの時間遅延を決定する。そして、システムは、リアルタイムではなく、当該時間遅延を使用して、将来のステアリング、スロットル及びブレーキを計算する。たとえば、図6A及び図6Bを参照すると、点線で示すように、現在の走行計画は30mにおいて車線を右車線に変更することを仮定する。遅延補償なしにステアリング角度コマンド(この例では、5度)が発行されると、車両は0.1秒の遅延で応答し、図6Aに示される実線の通り、実際のルートは、予想又は計画されるルートから外れる。上記した技術を使用して、決定されたシステム遅延を考慮することにより、実際の行動をとるための0.1秒の遅延があるため(例えば、シナリオ/遅延マッピングテーブルからのマッチング運転シナリオに基づいて)、コマンドは0.9秒(きちんと1秒でない)に送られるべきである。その結果、図6Bに示すように、車両は期待どおりに応答して、実際のルートと計画ルートがだいたいマッチングすることができる。
類似して、図7A及び図7Bを参照すると、車両が回転するとき、システム遅延は、図7Aに示す実線で示されたように、車両に遅延された方式で反応させる可能性がある。ある状況では、車両が計画されたルートに従わないことを検出するとき、実線で示されたような過剰反応を行う可能性があり、乗客に不快感を引き起こす可能性がある。ルートを計画する際に、システム遅延及び他の運転パラメータ(例えば、速度、回転角度)を考慮することで、コマンドは早く及び/又は異なる回転角度で発行されることができるので、車が図7Bで示されたような計画されたルートを厳密に従うことができる。
図8は、本発明の一実施形態に係る自律走行車のシステム遅延を推定する手順を示すフローチャートである。手順800は、ソフトウェア、ハードウェア、又はこれらの組み合わせを含む処理ロジックによって実行されてもよい。例えば、手順800は、図3のシステム遅延決定モジュール304によって実行されてもよい。代案として、手順800は、様々な車両から収集された走行統計に基づいて、データ分析システム103によって実行されてもよい。図8を参照すると、ブロック801において、処理ロジックは、車両のステアリング制御遅延を測定する。ステアリング制御遅延はステアリング制御コマンドを発行する時間と車両のステアリングセンサから応答を受信した時間との差を示す。ブロック802において、処理ロジックは、車両の速度制御遅延を測定する。速度制御遅延は速度制御コマンド(例えば、加速、減速/制動、一定の速度を維持すること)を発行する時間と車両からの応答時間(例えば、加速、減速を開始する時間)との差を示す。
ブロック803において、処理ロジックは、車両の演算遅延を推定する。演算遅延は、車両の制御システムが制御コマンドを生成し発行するのにかかる時間を指す。ブロック804において、処理ロジックは、車両の通信遅延を推定する。通信遅延は、制御システム、通信バス(例えばCANバス)と車両の間にコマンドを発行するおよび応答を受信する遅延を示す。そして、ブロック805において、ステアリング制御遅延、速度制御遅延、演算遅延及び/又は通信遅延は、データ構造に記憶され、当該データ構造は、後続の制御コマンドを調整して、それらのコマンドを発行する時点を補償するために使用されることができる。
図9は、本発明の他の実施形態に係る自律走行車のシステム遅延を決定する手順を示すフローチャートである。手順900は、ソフトウェア、ハードウェア、又はこれらの組み合わせを含む処理ロジックによって実行されてもよい。例えば、手順900は、図3のシステム遅延決定モジュール304によって実行されてもよい。代案として、手順900は、様々な車両から収集された走行統計に基づいて、データ分析システム103によって実行されてもよい。図9を参照すると、ブロック901において、処理ロジックは、特定のタイプの自律走行車について複数の運転シナリオを決定する。ブロック902において、それぞれの運転シナリオについて、処理ロジックは、車両が同一又は類似する運転シナリオ又は運転条件において走行中のテアリング制御遅延を測定し記録する。
ブロック903において、処理ロジックは、車両が同一又は類似する運転シナリオ又は運転条件において走行しているときのスロットル制御遅延(例えば、加速遅延)を測定し記録する。ブロック904において、処理ロジックは、車両が同一又は類似する運転シナリオ又は運転条件において走行しているときのブレーキ制御遅延(例えば、減速遅延)を測定し記録する。ブロック905において、ステアリング制御遅延、スロットル制御遅延及びブレーキ制御遅延は、特定のタイプの自律走行車のシナリオ/遅延マッピングデータ構造に記憶される。前記動作は、同じタイプ又は類似するタイプの大量の車両に対して繰り返し実行されてもよい。そして、遅延は、様々な車両の平均遅延をもとに計算されることができる。
図10は、本発明の一実施形態に係る自律走行車を動作させる手順を示すフローチャートである。手順1000は、ソフトウェア、ハードウェア、又はこれらの組み合わせを含む処理ロジックによって実行されてもよい。例えば、手順1000は、図1のシステム110によって実行されてもよい。図10を参照すると、ブロック1001において、処理ロジックは、自律走行車に装着された様々なセンサのセンサデータに基づいて決定された、走行環境に対する感知に基づいて、運転シナリオを決定する。ブロック1002において、処理ロジックは、シナリオ/遅延マッピングテーブルにおいてルックアップ動作を実行して、運転シナリオに対応するマッピングエントリを位置決めする。シナリオ/遅延マッピングテーブルは、複数のマッピングエントリを含む。各マッピングエントリは、特定の運転シナリオを、同一又は類似する運転シナリオにおいて様々な車両によって測定された1つ以上の遅延セットにマッピングする。ブロック1003において、処理ロジックは、マッピングエントリからシステム遅延を検出して決定する。システム遅延は、前述したようなステアリング制御遅延、速度制御遅延、演算遅延及び通信遅延のうち少なくとも1つに基づいて決定されることができる。ブロック1004において、処理ロジックは、システム遅延を考慮してルート又はルートセグメントを計画し、計画及び制御データを生成する。ブロック1005において、処理ロジックは、計画及び制御データに基づいて、ルート又はルートセグメントに沿って自律走行車を走行させて制御する。
注意すべき点は、前記の示されたとともに記述された一部又は全部の構成要素は、ソフトウェア、ハードウェア又はその組み合わせで実現されることができる。例えば、このような構成要素は、永続記憶装置にインストールされるとともに記憶されたソフトウェアとして実現されてもよく、前記ソフトウェアは、本出願にわたって記載の手順又は動作を実施するように、プロセッサ(図示せず)でメモリにロードして実行されてもよい。あるいは、このような構成要素は、集積回路(例えば特定用途向けIC又はASIC)、デジタル信号プロセッサ(DSP)、又はフィールドプログラマブルゲートアレイ(FPGA、Field Programmable Gate Array)にプログラミングされ又は嵌め込みされた専用ハードウェアにおける実行可能なコードとして実現されてもよく、前記実行可能なコードは、対応するドライバープログラム及び/又はオペレーティングシステムによってアプリケーションからアクセスされてもよい。なお、このような構成要素は、プロセッサ又はプロセッサコアにおける特定のハードウェアロジックとして実現されてもよく、ソフトウェア構成要素が1つ以上の特定コマンドによってアクセス可能なコマンドセットの一部とする。
図11は、本発明の1つの実施形態と組み合わせて使用されるデータ処理システムを例示的に示すブロック図である。例えば、システム1500は、上記プロセス又は方法のいずれかを実行する上記任意のデータ処理システム(例えば、図1のデータ処理システム110、及びサーバ103〜104のいずれか)を示してもよい。システム1500は、多数の異なる構成要素を含んでもよい。これらの構成要素は、集積回路(IC)、集積回路の一部、分散型電子装置又は回路基板に適用された他のモジュール(例えばコンピュータシステムのマザーボード又はアドインカード)、又は他の方式でコンピュータシステムのシャシーに組み込まれた構成要素として実現されることできる。
さらに、システム1500は、コンピュータシステムの多数の構成要素の高レベルビューを示すことを目的とする。しかしながら、いくつかの実現形態では、付加的構成要素が存在する場合もあることを理解すべきである。また、他の実現形態において示される構成要素が異なる配置を有してもよい。システム1500は、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、サーバ、携帯電話、メディアプレーヤー、パーソナルディジタルアシスタント(PDA)、スマート腕時計、パーソナルコミュニケーター、ゲーム装置、ネットワークルータ又はハブ、無線アクセスポイント(AP)又はリピーター、セットトップボックス、又はそれらの組合せを示してもよい。また、単一の機器又はシステムのみを示したが、用語「機器」又は「システム」は、さらに、独立又は共同で1つ(又は複数)のコマンドセットを実行することにより本明細書に説明される任意の1種又は複数種の方法を実行する機器又はシステムの任意のセットを含むことを理解すべきである。
1つの実施形態において、システム1500は、バス又は相互接続部材1510によって接続されたプロセッサ1501、メモリ1503及び装置1505〜1508を備える。プロセッサ1501は、単一のプロセッサコア又は複数のプロセッサコアを含む単一のプロセッサ又は複数のプロセッサを示してもよい。プロセッサ1501は、マイクロプロセッサ、中央処理装置(CPU)等のような1つ又は複数の汎用プロセッサであってもよい。より具体的には、プロセッサ1501は、複雑コマンドセット計算(CISC)マイクロプロセッサ、縮小コマンドセットコンピュータ(RISC)マイクロプロセッサ、超長コマンド語(VLIW)マイクロプロセッサ、又は他のコマンドセットを実現するプロセッサ、又はコマンドセットの組合せを実現するプロセッサであってもよい。プロセッサ1501は、さらに、専用集積回路(ASIC)、セルラー又はベースバンドプロセッサ、フィールドプログラマブルゲートアレイ(FPGA)、デジタル信号プロセッサ(DSP)、グラフィックプロセッサ、ネットワークプロセッサ、通信プロセッサ、暗号プロセッサ、コプロセッサ、組み込みプロセッサのような1つ又は複数の専用プロセッサ、あるいはコマンド処理可能な任意の他のタイプのロジックであってもよい。
プロセッサ1501(超低電圧プロセッサのような低電力マルチコアプロセッサソケットであってもよい)は、前記システムの各種構成要素と通信するための主処理ユニット及び中央ハブとして用いられてもよい。このようなプロセッサは、システムオンチップ(SoC)として実現されることができる。プロセッサ1501は、コマンドを実行することにより本明細書に説明される動作及びステップを実行するためのコマンドを実行するように構成される。また、システム1500は、選択可能なグラフィックサブシステム1504と通信するグラフィックインターフェースをさらに含んでもよく、グラフィックサブシステム1504は、表示コントローラ、グラフィックプロセッサ及び/又は表示装置をさらに備えてもよい。
プロセッサ1501は、メモリ1503と通信してもよく、メモリ1503は、1つの実施形態において複数のメモリによって所定量のシステムメモリを提供する。メモリ1503は、ランダムアクセスメモリ(RAM)、ダイナミックRAM(DRAM)、シンクロナスDRAM(SDRAM)、スタティックRAM(SRAM)又は他のタイプの記憶装置のような1つ又は複数の揮発性記憶(又はメモリ)装置を備えてもよい。メモリ1503は、プロセッサ1501又は任意の他の装置により実行されるコマンド列を含む情報を記憶することができる。例えば、複数種のオペレーティングシステム、装置ドライバー、ファームウェア(例えば、基本入出力システム又はBIOS)及び/又はアプリケーションの実行可能なコード及び/又はデータはメモリ1503にロードされてもよく、プロセッサ1501により実行されてもよい。オペレーティングシステムは、ロボットオペレーティングシステム(ROS)、Microsoft(登録商標)会社からのWindows(登録商標)オペレーティングシステム、アップル会社からのMac OS(登録商標)/iOS(登録商標)、Google(登録商標)会社からのAndroid(登録商標)、Linux(登録商標)、Unix(登録商標)又は他のリアルタイム又は組み込みオペレーティングシステムのような任意のタイプのオペレーティングシステムであってもよい。
システム1500は、I/O装置、例えば装置1505〜1508をさらに備えてもよく、ネットワークインターフェース装置1505、選択可能な入力装置1506及び他の選択可能なI/O装置1507を備える。ネットワークインターフェース装置1505は、無線送受信機及び/又はネットワークインターフェースカード(NIC)を備えてもよい。前記無線送受信機は、WiFi送受信機、赤外送受信機、ブルートゥース(登録商標)送受信機、WiMax送受信機、無線セルラーホン送受信機、衛星送受信機(例えば、全地球測位システム(GPS)送受信機)又は他の無線周波数(RF)送受信機又はそれらの組合せであってもよい。NICはイーサネット(登録商標)カードであってもよい。
入力装置1506は、マウス、タッチパッド、タッチスクリーン(それは表示装置1504と集積されてもよい)、ポインタデバイス(例えばスタイラス)及び/又はキーボード(例えば、物理キーボード又はタッチスクリーンの一部として表示された仮想キーボード)を備えてもよい。例えば、入力装置1506は、タッチスクリーンに接続されるタッチスクリーンコントローラを含んでもよい。タッチスクリーン及びタッチスクリーンコントローラは、例えば複数種のタッチ感度技術(容量式、抵抗式、赤外式及び表面音波技術を含むが、それらに限定されない)のいずれか、及びタッチスクリーンの1つ又は複数の接触点を決定するための他の近接センサアレイ又は他の素子を用いてそのタッチ点及び移動又は断続を検出することができる。
I/O装置1507は音声装置を備えてもよい。音声装置は、スピーカー及び/又はマイクロフォンを含んでもよく、それにより音声認識、音声コピー、デジタル記録及び/又は電話機能のような音声サポートの機能を促進する。他のI/O装置1507は、汎用シリアルバス(USB)ポート、パラレルポート、シリアルポート、印刷機、ネットワークインターフェース、バスブリッジ(例えば、PCI−PCIブリッジ)、センサ(例えば、加速度計、ジャイロスコープ、磁力計、光センサ、コンパス、近接センサ等のような動きセンサ)又はそれらの組合せをさらに備えてもよい。装置1507は、結像処理サブシステム(例えば、カメラ)をさらに備えてもよく、前記結像処理サブシステムは、カメラ機能(例えば、写真及びビデオ断片の記録)を促進するための電荷カップリング装置(CCD)又は相補型金属酸化物半導体(CMOS)光学センサのような光学センサを備えてもよい。あるセンサは、センサハブ(図示せず)によって相互接続部材1510に接続されてもよく、キーボード又は熱センサのような他の装置は、組み込みコントローラ(図示せず)により制御されてもよく、これはシステム1500の特定配置又は設計により決められる。
データ、アプリケーション、1つ又は複数のオペレーティングシステム等のような情報の永久記憶を提供するために、大容量記憶装置(図示せず)は、プロセッサ1501に接続されてもよい。様々な実施形態において、薄型化と軽量化のシステム設計を実現し且つシステムの応答能力を向上させるために、このような大容量記憶装置は、ソリッドステート装置(SSD)によって実現されることができる。なお、他の実施形態において、大容量記憶装置は、主にハードディスクドライブ(HDD)で実現されてもよく、容量が小さいSSD記憶装置は、SSDキャッシュとして停電イベント期間にコンテキスト状態及び他のこのような情報の永久記憶を実現し、それによりシステム動作が再開するときに通電を速く実現することができる。さらに、フラッシュデバイスは、例えばシリアルペリフェラルインターフェース(SPI)によってプロセッサ1501に接続されてもよい。このようなフラッシュデバイスは、システムソフトウェアの不揮発性記憶に用いられてもよく、前記システムソフトウェアは、前記システムのBIOS及び他のファームウェアを備える。
記憶装置1508は、任意の1種又は複数種の本明細書に記載の方法又は機能を体現する1つ又は複数のコマンドセット又はソフトウェア(例えば、モジュール、ユニット及び/又はロジック1528)が記憶されるコンピュータアクセス可能な記憶媒体1509(機械可読記憶媒体又はコンピュータ可読媒体とも呼ばれる)を備えてもよい。モジュール/ユニット/ロジック1528は、計画モジュール301、制御モジュール302、システム遅延決定モジュール304、データコレクタ151又は分析モジュール152のような上記構成要素のいずれかを示してもよい。モジュール/ユニット/ロジック1528は、さらにデータ処理システム1500により実行される期間にメモリ1503内及び/又はプロセッサ1501内に完全又は少なくとも部分的に存在してもよく、ここで、メモリ1503及びプロセッサ1501も、機器アクセス可能な記憶媒体を構成する。処理モジュール/ユニット/ロジック1528は、さらにネットワークによってネットワークインターフェース装置1505を経由して送受信されてもよい。
コンピュータ可読記憶媒体1509は、以上に説明されたいくつかのソフトウェア機能を永続的に記憶してもよい。コンピュータ可読記憶媒体1509は、例示的な実施形態において単一の媒体として示されたが、用語「コンピュータ可読記憶媒体」は、前記1つ又は複数のコマンドセットが記憶される単一の媒体又は複数の媒体(例えば、集中型又は分散型データベース、及び/又は関連するキャッシュ及びサーバ)を備えることを理解すべきである。用語「コンピュータ可読記憶媒体」は、さらにコマンドセットを記憶又はコーディング可能な任意の媒体を備えることを理解すべきであり、前記コマンドセットは、機器により実行され且つ前記機器に本出願の任意の1種又は複数種の方法を実行させる。従って、用語「コンピュータ可読記憶媒体」は、ソリッドステートメモリ及び光学媒体と磁気媒体又は任意の他の非一時的機械可読媒体を備えるが、それらに限定されないことを理解すべきである。
本明細書に記載の処理モジュール/ユニット/ロジック1528、構成要素及び他の特徴は、ディスクリートハードウェア構成要素として実現されてもよく、又はハードウェア構成要素(例えばASIC、FPGA、DSP又は類似装置)の機能に統合されてもよい。さらに、処理モジュール/ユニット/ロジック1528は、ハードウェア装置内のファームウェア又は機能回路として実現されてもよい。また、処理モジュール/ユニット/ロジック1528は、ハードウェア装置及びソフトウェアコンポーネントの任意の組合せで実現されてもよい。
なお、システム1500は、データ処理システムの各種の構成要素を有するように示されているが、構成要素の相互接続のいかなる特定のアーキテクチャー又は方式を示すものではないことに注意すべきであり、それは、このような詳細が本出願の実施形態に密接な関係がないためである。また、より少ない構成要素又はより多くの構成要素を有するネットワークコンピュータ、ハンドヘルドコンピュータ、携帯電話、サーバ及び/又は他のデータ処理システムは、本出願の実施形態と共に使用されてもよい。
上記詳細な説明の一部は、コンピュータメモリにおけるデータビットに対する演算のアルゴリズム及び記号表現で示される。これらのアルゴリズムの説明及び表現は、データ処理分野における当業者によって使用される、それらの作業実質を所属分野の他の当業者に最も効果的に伝達する方法である。ここで、アルゴリズムは、通常、所望の結果につながる首尾一貫した動作列(sequence of operations)と考えられる。これらの動作とは、物理量に対して物理的動作を行う必要となるステップを指す。
ただし、これらの全て及び類似の用語は、いずれも適切な物理量に関連付けられ、且つただこれらの量に適用される適切なラベルであることに注意すべきである。特に断らない限り、本出願の全体にわたって用語(例えば、添付している特許請求の範囲に説明された用語)による説明とは、コンピュータシステム又は類似の電子計算装置の動作及び処理であり、前記コンピュータシステム又は電子計算装置は、コンピュータシステムのレジスタ及びメモリに物理(例えば、電子)量としてデータを示し、且つ前記データをコンピュータシステムメモリ又はレジスタ又は他のこのような情報記憶装置、伝送又は表示装置内において類似に物理量として示される他のデータに変換する。
本出願の実施形態は、さらに本明細書における動作を実行するための装置に関する。このようなコンピュータプログラムは、不揮発性のコンピュータ可読媒体に記憶される。機器可読媒体は、機器(例えば、コンピュータ)可読な形態で情報を記憶する任意の機構を備える。例えば、機器可読(例えば、コンピュータ可読)媒体は、機器(例えば、コンピュータ)可読記憶媒体(例えば、読み出し専用メモリ(「ROM」)、ランダムアクセスメモリ(「RAM」)、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリ)を備える。
上記図面に示される手順又は方法は、ハードウェア(例えば、回路、専用ロジック等)、ソフトウェア(例えば、不揮発性のコンピュータ可読媒体に具現化される)、又は両方の組合せを含む処理ロジックにより実行されてもよい。前記手順又は方法は、本明細書において特定の順序に応じて説明されるが、説明された動作の一部は、異なる順序に応じて実行されてもよい。また、いくつかの動作は、順番ではなく並行に実行されてもよい。
本出願の実施形態は、いずれかの特定のプログラミング言語を参照して説明されていないが、複数種のプログラミング言語で本明細書に記載の本出願の実施形態の教示を実現できることを理解すべきである。
以上の明細書では、本出願の具体的な例示的な実施形態を参照してその実施形態を説明した。明らかなように、添付している特許請求の範囲に記載の本出願のより広い趣旨及び範囲を逸脱しない限り、様々な変形が可能である。従って、限定的なものではなく例示的なものとして本明細書及び図面を理解すべきである。