これから検討される詳細を参照しながら本発明の各々の実施形態および態様を記述し、添付図面に前記様々な実施形態を示す。以下の記述及び図面は、本発明を限定するものではなく、本発明を説明するためのものである。本発明の様々な実施形態が完全に把握できるように、特定の詳細を多く記述しているが、本発明の実施形態に対する簡潔的な説明を提供するように、周知又は従来技術の詳細について説明しない場合もある。
本明細書において、「一実施形態」又は「実施形態」とは、当該実施形態を参照しながら説明する特定の特徴、構造又は特性は、本発明の少なくとも一実施形態に含まれてもよいことを意味する。「一実施形態では」という語句は、本明細書全体において同一の実施形態を指すとは限らない。
リアルタイムクロック(RTC)は時間に追従するコンピュータクロックである。RCTは、精確な時刻維持を必要とされるほとんどの電子機器に存在する。ほとんどのRTCには石英結晶の水晶発振器を使用する。水晶発振器は、圧電部材である振動結晶の機械的共振に用いられる電子発振器集積回路(IC)である。水晶発振器は、所与の周波数を有する電子信号を発生可能である。RTC ICは、100ピーピーエム(PPM)程度の精度を有し得るが、一般的に、精度が高い程、コストが高くなる。RTC ICは、精度が異なれば、例えばカウント時間がやや異なるため、最初に正確に設定されていたとしても、時間が経つことにつけて、クロックドリフトによって異なることになる。
一局面によれば、時刻生成システムは、センサユニットにて自動運転車両(ADV)のGPSセンサからの全地球測位システム(GPS)のパルス信号を受信しており、ここで、GPSパルス信号は、衛星からGPSセンサに送信されたRF信号であり、センサユニットは、ホストシステムとADVに装着された複数のセンサとに接続されており、ホストシステムは、センサから取得され且つセンサユニットの処理モジュールにより処理されたセンサデータに基づいてADV周辺の運転環境を感知する感知モジュールと、感知データに基づいて、ADVを自動運転するための経路を計画する計画・制御モジュール(PNC)とを含む。システムは、ローカル発振器からの第1ローカル発振信号を受信する。システムは、第1ローカル発振信号をGPS信号とリアルタイムに同期させるようにし、ここで、GPSパルス信号に基づき第1ローカル信号を修正することが含まれる。システムは、同期された第1ローカル発振信号に基づき、複数のセンサのうちの少なくとも一つへ時刻を提供する第2発振信号を生成する。
一実施形態において、システムは、前記ローカル発振器を使用して、第1粒度の第1カウンタを生成する。システムは、GPSパルス信号の時間間隔を満たす第1粒度の振動の回数をカウントする第1カウンタをモニタリングしており、ここで、1カウントが一回の第1粒度の振動を表す。システムは、モニタリングされる第1粒度の第1カウンタによる第1カウント値を算出する。システムは、算出された第1カウント値に基づき、1カウントが第1粒度の振動の一部を表すように第1カウンタを修正することで、第1粒度のローカル発振器を同期させる。
他の実施形態において、システムは、ローカル発振器を使用して第2粒度の第2カウンタを生成する。システムは、GPSパルス信号の時間間隔を満たす第2粒度の振動の回数をカウントする第2カウンタをモニタリングしており、ここで、1カウントが一回の第2粒度の振動を表す。システムは、モニタリングされる第2粒度の第2カウンタによる第2カウント値を算出する。システムは、算出された第2カウント値に基づき、1カウントが第2粒度の振動の一部を表すように第2カウンタを修正することで、第2粒度のローカル発振器を同期させる。
他の実施形態において、システムは、ローカル発振器を使用して第3粒度の第3カウンタを生成する。システムは、GPSパルス信号の時間間隔を満たす第3粒度の振動の回数をカウントする第3カウンタをモニタリングしており、ここで、1カウントが一回の第3粒度の振動を表す。システムは、モニタリングされる第3粒度の第3カウンタによる第3カウント値を算出する。システムは、算出された第3カウント値に基づき、1カウントが第3粒度の振動の一部を表すように第3カウンタを修正することで、第3粒度のローカル発振器を同期させる。
他の実施形態において、第1粒度をミリ秒の粒度、第2粒度をマイクロ秒の粒度、第3粒度をナノ秒の粒度とする。他の実施形態において、システムは、同期のための上記第1カウンタ、第2カウンタ、又は第3カウンタのうちのいずれか1つの生成を禁止する。他の実施形態において、GPSセンサ信号が失った場合、システムは、GPSセンサ信号が取り直されるまで、第1カウント値、第2カウント値及び第3カウント値を保持する。
第二局面によれば、ADVにセンサユニットを使用する。センサユニットは、ADVにおける複数の部位に装着された複数のセンサに接続されるセンサインタフェースを含む。センサユニットは、ホストシステムに接続されるホストインタフェースを含み、ホストシステムが、センサから取得されたセンサデータに基づいてADV周辺の運転環境を感知し、ADVを自動運転するための経路を計画する。センサユニットは、センサインタフェースに接続される時刻同期ハブ装置を含む。時刻同期ハブ装置は、タイムソースに接続される一つ又は複数の伝送(TX)タイムスタンプ生成器を含み、ここで、TXタイムスタンプ生成器は、タイムソースから取得された時刻に基づき、センサがセンサデータをホストインタフェースからホストシステムに送信する時刻を示すTXタイムスタンプを生成して、一つ又は複数のセンサへ提供する。時刻同期ハブ装置は、タイムソースに接続される一つ又は複数の伝送(RX)タイムスタンプ生成器を含み、ここで、RXタイムスタンプ生成器は、タイムソースから取得された時刻に基づき、センサからセンサデータを受信した時刻を示すRXタイムスタンプを生成して、一つ又は複数のセンサへ提供するものである。
一実施形態において、第1センサ(例えば、タイム情報入力を受け取るとともに、タイム情報を有するセンサデータを出力するセンサ)が、TXタイムスタンプ生成器とRXタイムスタンプ生成器とに接続され、ここで、センサは、TXタイムスタンプ生成器からのTXタイムスタンプを受信するとともに、センサデータと、TXタイムスタンプを含むメタデータとを、電気回路に伝送するものであり、RXタイムスタンプ生成器は、電気回路がセンサデータを受信した時刻を示すRXタイムスタンプを生成して伝送のメタデータに付加するものである。
一実施形態において、第2センサ(例えば、タイム情報入力を受け取ることが可能であり、また、タイム情報入力を受け取らず、センサデータ出力のみを実行可能であるセンサ)が、TXタイムスタンプ生成器ではなく、RXタイムスタンプ生成器に接続されており、ここで、センサは、センサデータを伝送タイムスタンプ情報なしのままに電気回路に伝送するものであり、RXタイムスタンプ生成器は、電気回路がセンサデータを受信した時刻を示すRXタイムスタンプを生成して伝送のメタデータに付加するものである。
一実施形態において、第3センサ(例えば、タイム情報入力を受けとるとともに、そのままホストシステムに出力するセンサ)が、RXタイムスタンプ生成器に接続されず、TXタイムスタンプ生成器とホストシステムとに接続されており、ここで、センサは、TXタイムスタンプ生成器からのTXタイムスタンプを受信するものであり、第3センサは、センサデータと、電気回路によりセンサデータが受信された時刻を示すTXタイムスタンプを含むメタデータとを、そのままホストシステムに伝送する。
一実施形態において、同期ハブ装置は、ホストシステムと接続されて、ホストシステムの時刻へ同期される。他の実施形態において、同期ハブ装置は、ペリフェラルコンポーネントインターコネクト(PCIe)バスを介し、ホストシステムに接続される。
一実施形態において、TXタイムスタンプ生成器に接続されるカメラセンサ用のメタデータは、カメラトリガタイムスタンプ情報を含む。一実施形態において、TXタイムスタンプ又はRXタイムスタンプのタイムスタンプフォーマットは、ms:us:ns:mm:ss:hh:month:day:year、又はmm:ss:hh:month:day:yearがある。他の実施形態において、センサユニットは、タイムスタンプをあるフォーマットから他のフォーマットへ変換ユニットするフォーマット変換ユニットユニットを含む。
第3局面によれば、システムは、センサとリアルタイムクロック(RTC)を含む複数のタイムソースから、複数の時刻を受信するようにし、ここで、センサは、ADVと通信可能であり、かつ、少なくともGPSセンサを有し、RTCは、少なくとも中央処理装置リアルタイムクロック(CPU−RTC)を有する。システムは、各タイムソースの時刻に基づき、GPSセンサの時刻と、他のセンサ及びRTCのそれぞれの時刻との間の差を表す差異ヒストグラムを作成する。システムは、差異ヒストグラムに応じてセンサ及びRTCに対しランキングする。システムは、センサ又はRTCのうち、GPSセンサに対する時間差の最も小さい1つをタイムソースとして選択する。システムは、選択されたタイムソースに基づきタイムスタンプを生成して、ADVのセンサユニットのセンサデータにタイムスタンプを付加する。
一実施形態において、差異ヒストグラムは、GPSセンサと他のセンサやRTCのそれぞれとの平均時間差の分布を含む平均差異ヒストグラムを含む。一実施形態において、差異ヒストグラムが利用できない場合に、システムは、センサ又はRTCのデフォルトランキングリストを取る。
一実施形態において、システムは、CPU−RTCとGPSセンサの時刻との時間差を含むCPU−RTCのタイム情報をログファイルに格納する。システムは、CPU−RTCとGPSセンサの時刻との時間差をモニタリングする。システムは、モニタリングした時間差に基づいてログファイルにおけるタイム情報を更新する。一実施形態において、タイムソースは、LTE、WIFI(登録商標)、CPU RTC、FPGA RTC、FM受信器、V2Xセンサ、又はGPSセンサを含む。一実施形態において、システムは、差異ヒストグラムと、センサ及びRTCのランキングとをログバッファに格納する。
第4局面によれば、システムは、ローカルタイムソースとGPSセンサの時刻との間の時間差を確定する。システムは、差異の最大限と、平滑化タイムソース回復の場合の最大回復インクリメント或いは最大回復時間間隔を決定する。システムは、ローカルタイムソースとGPSセンサの時刻との間の差異が最大限よりも小さくなると判定する。システムは、最大回復時間間隔以内で、ローカルタイムソースを、GPSセンサ時刻に収める(整列する)ように、平滑化タイムソース回復を計画する。システムは、回復されたタイムソースに基づいてタイムスタンプを生成して、ADVのセンサユニットのセンサデータに対しタイムスタンプを付加する。
一実施形態において、、システムは、ローカルタイムソースとGPSセンサの時刻との差が最大限よりも大きくなると判定する。システムは、ローカルタイムソースに対し、GPSセンサの時刻を割り当てるように、タイムソースの突発的な回復を計画する。
システムは、回復インクリメントの最大限と異なる所定のタイムインクリメント或いは設定されたタイムインクリメントで、ローカルタイムソースを、GPSセンサ時刻に収めるように、平滑化タイムソース回復を計画する。一実施形態において、所定のタイムインクリメントは、1クロックサイクルの間隔である。一実施形態において、1クロックサイクルの間隔は、10ナノ秒である。
一実施形態において、最大限、回復インクリメント又は最大回復時間間隔は、ユーザにより予め設定されている。一実施形態において、システムは、GPSセンサからの信号の回復を検出すると、ローカルタイムソースとGPSセンサの時刻との間の時間差を確定する。
図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、インフォティメントシステム114およびセンサシステム115が含まれるが、これらに限定されない。自動運転車両101には、通常の車両に備えられているいくつかの一般的な構成要素、例えばエンジン、車輪、ステアリングホイール、変速機などが更に備えられてもよい。前記構成要素は、車両制御システム111及び/又は感知・計画システム110により複数種の通信信号及び/又はコマンドを使用して制御可能である。当該複数種の通信信号及び/又はコマンドは、例えば、加速信号又はコマンド、減速信号又はコマンド、ステアリング信号又はコマンド、ブレーキ信号又はコマンドなどである。
構成要素110〜115は、インターコネクタ、バス、ネットワーク又はこれらの組み合わせを介して互いに通信可能に接続されることができる。例えば、構成要素110〜115は、コントローラローカルエリアネットワーク(CAN)バスを介して互いに通信可能に接続されることができる。CANバスは、ホストコンピュータなしのアプリケーションでマイクロコントローラおよびデバイスが相互に通信できるように設計された車両バス規格である。それは、もともと自動車内の多重電気配線のために設計されたメッセージに基づくプロトコルであるが、他の多くの環境にも用いられる。
ここでは図2を参照すると、一実施形態では、センサシステム115は、1つまたは複数のカメラ211、全地球測位システム(GPS)ユニット212、慣性計測ユニット(IMU)213、レーダユニット214並びに光検出・測距(LIDAR)ユニット215を含むが、それらに限定されない。GPSユニット212は、自動運転車両の位置に関する情報を提供するように動作可能な送受信機を含んでもよい。IMUユニット213は、慣性加速度に基づいて自動運転車両の位置及び配向の変化を感知することができる。レーダユニット214は、無線信号を利用して自動運転車両のローカル環境内のオブジェクトを感知するシステムを表してもよい。いくつかの実施形態では、オブジェクトを感知することに加えて、レーダユニット214は、更にオブジェクトの速度及び/又は進行方向を感知することができる。LIDARユニット215は、自動運転車両の所在環境内のオブジェクトをレーザで感知することができる。他のシステム構成要素に加えて、LIDARユニット215は、更に1つまたは複数のレーザ光源、レーザスキャナ、1つまたは複数の検出器を含んでもよい。カメラ211は、自動運転車両の周囲環境の画像を取得するための1つ又は複数の装置を含んでもよい。カメラ211はスチルカメラ及び/又はビデオカメラであってもよい。カメラは、例えば、回転および/または傾斜のプラットフォームに取り付けることによって、機械的に移動されていてもよい。
センサシステム115には、他のセンサ、例えばソナーセンサ、赤外線センサ、ステアリングセンサ、スロットルセンサ、ブレーキセンサ及びオーディオセンサ(例えば、マイクロホン)が含まれてもよい。オーディオセンサは、自動運転車両の周囲の環境から音声を取得するように配置されてもよい。ステアリングセンサは、ステアリングホイール、車両の車輪又はこれらの組み合わせの操舵角を感知するように配置されてもよい。スロットルセンサ及びブレーキセンサはそれぞれ車両のスロットル位置及びブレーキ位置を感知する。ある場合に、スロットルセンサ及びブレーキセンサは集積型スロットル/ブレーキセンサとして統合されてもよい。
一実施形態では、車両制御システム111はステアリングユニット201、スロットルユニット202(加速ユニットともいう)及びブレーキユニット203を含むが、これらに限定されない。ステアリングユニット201は車両の方向又は進行方向を調整するために用いられる。スロットルユニット202は電動機またはエンジンの速度を制御するために用いられ、電動機またはエンジンの速度に応じて、更に車両の速度および加速度を制御するために用いられる。ブレーキユニット203は、摩擦を与えることによって車両の車輪又はタイヤを減速させることで、車両を減速させる。なお、図2に示された構成要素は、ハードウェア、ソフトウェアまたはそれらの組み合わせで実現されることが可能である。
図1を再び参照して、無線通信システム112は、自動運転車両101と、装置、センサ、他の車両などのような外部システムとの通信を可能にする。例えば、無線通信システム112は、直接または通信ネットワークを介して、1つまたは複数の装置と無線通信することができ、例えば、ネットワーク102を介してサーバ103〜104と通信することができる。無線通信システム112は、如何なるセルラー通信ネットワーク又は無線ローカルエリアネットワーク(WLAN)、例えばWiFi(登録商標)を使用して他の構成要素又はシステムと通信することができる。無線通信システム112は、例えば赤外線リンク、ブルートゥース(登録商標)などを使用して、装置(例えば、乗客のモバイルデバイス、表示装置、車両101内のスピーカ)と直接通信することができる。ユーザインターフェースシステム113は、車両101内に実現された周辺装置の部分(例えば、キーボード、タッチスクリーン表示装置、マイクロホン、及びスピーカなどを含む)であってもよい。
自動運転車両101の機能のうちの一部又は全部は、特に自動運転モードで動作する場合に、感知・計画システム110により制御されるか、又は管理されることができる。感知・計画システム110は、センサシステム115、制御システム111、無線通信システム112及び/又はユーザインターフェースシステム113から情報を受信し、受信された情報を処理し、出発地から目的地までのルート又は経路を計画した後に、計画及び制御情報に基づいて車両101を運転するために、必要なハードウェア(例えば、プロセッサ、メモリ、記憶デバイス)並びにソフトウェア(例えば、オペレーティングシステム、計画・ルーティングプログラム)を含む。あるいは、感知・計画システム110は車両制御システム111と一体に集積されてもよい。
例えば、乗客であるユーザは、例えばユーザインターフェースを介して旅程の出発地位置及び目的地を指定することができる。感知・計画システム110は旅程に関連するデータを取得する。例えば、感知・計画システム110は、MPOIサーバから位置・ルート情報を取得することができる。前記MPOIサーバは、サーバ103〜104の一部であってもよい。位置サーバは位置サービスを提供し、MPOIサーバは地図サービス及び特定位置のPOIを提供する。あるいは、このような位置及びMPOI情報は、感知・計画システム110の永続性記憶装置にローカルキャッシュされてもよい。
自動運転車両101がルートに沿って移動している場合に、感知・計画システム110は交通情報システム又はサーバ(TIS)からリアルタイム交通情報を取得することもできる。なお、サーバ103〜104は第三者機関により動作可能である。あるいは、サーバ103〜104の機能は、感知・計画システム110と一体に集積されてもよい。感知・計画システム110は、リアルタイム交通情報、MPOI情報及び位置情報、並びにセンサシステム115により検出又は感知されたリアルタイムローカル環境データ(例えば、障害物、オブジェクト、付近の車両)に基づいて、所定の目的地まで安全的且つ効率的に到達するために、最適なルートを計画し、且つ計画されたルートに従って例えば制御システム111を介して車両101を運転することができる。
サーバ103は、様々なクライアントに対してデータ解析サービスを実行するデータ解析システムであってもよい。一実施形態では、データ解析システム103は、データコレクタ121と、機械学習エンジン122とを含む。データコレクタ121は、様々な車両(自動運転車両又は人間の運転手によって運転される一般車両)から運転統計データ123を収集する。運転統計データ123は、異なるタイミングで発行された運転コマンド(例えば、スロットル、ブレーキ、ステアリングコマンド)及び車両のセンサにより捕捉された車両の応答(例えば、速度、加速度、減速度、方向)を指示する情報を含む。運転統計データ123は更に、異なるタイミングにおける運転環境を記述する情報、例えば、ルート(出発地位置及び目的地位置を含む)、MPOI、道路状況、天気状況などを含んでもよい。
機械学習エンジン122は、運転統計データ123に基づいて、様々な目的に応じて1セットのルール、アルゴリズム及び/又は予測モデル124を生成するか又は訓練する。一実施形態において、アルゴリズム124は、プロセスを感知、予測、決定、計画及び/又は制御するためのルール又はアルゴリズムを含む可能であり、詳細は、後述する。そして、自動運転のためにアルゴリズム124をADVにリアルタイムにアプロード可能である。
図3A〜図3Bは、一実施形態に係る自動運転車両と共に使用される感知・計画システムの一例を示すブロック図である。システム300は、図1の自動運転車両101の一部として実現されてもよく、感知・計画システム110、制御システム111及びセンサシステム115を含むが、これらに限定されない。図3A〜図3Bに示すように、感知及び計画システム110は、測位モジュール301、感知モジュール302、予測モジュール303、決定モジュール304、計画モジュール305、制御モジュール306及びルーティングモジュール307を含むが、これらに限定されない。
モジュール301〜307のうちの一部または全部は、ソフトウェア、ハードウェアまたはそれらの組み合わせで実現されていてもよい。例えば、これらのモジュールは、永続性記憶装置352にインストールされ、メモリ351にロードされ、且つ1つまたは複数のプロセッサ(図示せず)により実行されてもよい。注意すべきなのは、これらのモジュールのうちの一部又は全部は、図2の車両制御システム111の一部又は全部のモジュールに通信可能に接続されるか、又はそれらと一体に統合されてもよい。モジュール301〜307のうちの一部は、集積モジュールとして一体に統合されてもよい。
測位モジュール301は、自動運転車両300の現在位置を(例えば、GPSユニット212により)特定し、ユーザの旅程又はルートに関する如何なるデータを管理する。測位モジュール301(地図・ルートモジュールともいう)は、ユーザの旅程又はルートに関連する如何なるデータを管理する。ユーザは、例えばユーザインターフェースを経由してログインして旅程の出発地位置及び目的地を指定することができる。測位モジュール301は、自動運転車両300における地図・ルート情報311のような他の構成要素と通信して旅程に関するデータを取得する。例えば、測位モジュール301は、位置サーバ並びに地図・POI(MPOI)サーバから位置及びルート情報を取得することができる。位置サーバは位置サービスを提供し、MPOIサーバは地図サービス及び特定位置のPOIを提供することにより、地図・ルート情報311の一部としてキャッシュされることができる。自動運転車両300がルートに沿って移動する際に、測位モジュール301は交通情報システム又はサーバからリアルタイム交通情報を取得することもできる。
感知モジュール302は、センサシステム115により提供されたセンサデータと、測位モジュール301により取得された測位情報とに基づいて、周辺の環境への感知を決定する。感知情報は、一般の運転手が運転手により運転されている車両の周辺における感知すべきものを示すことができる。感知とは、例えばオブジェクトの形式で、車線配置、信号機信号、他の車両の相対位置、歩行者、建築物、横断歩道又は他の交通関連標識(例えば、止まれ標識、ゆずれ標識)などを含むことができる。車線構成は、例えば、車線の形状(例えば、直線または湾曲)、車線の幅、道路内の車線数、一方向または二方向車線、合流車線または分流車線、退出車線など、1つまたは複数の車線を記述する情報を含む。
感知モジュール302は、1つ又は複数のカメラにより取り込まれた画像を処理し解析して自動運転車両の環境内のオブジェクト及び/又は特徴を識別するように、コンピュータビジョンシステム又はコンピュータビジョンシステムの機能を含むことができる。前記オブジェクトは、交通信号、道路の境界、他の車両、歩行者及び/又は障害物などを含むことができる。コンピュータビジョンシステムは、オブジェクト認識アルゴリズム、ビデオトラッキング及び他のコンピュータビジョン技術を使用することができる。いくつかの実施形態では、コンピュータビジョンシステムは、環境地図を描画し、オブジェクトを追跡し、及びオブジェクトの速度などを推定することができる。感知モジュール302は、レーダ及び/又はLIDARのような他のセンサにより提供される他のセンサデータに基づいてオブジェクトを検出することもできる。
各オブジェクトについて、予測モジュール303は、その場合にオブジェクトがどのように挙動するかを予測する。予測は地図及びルート情報311と運転/交通ルール312のセットを考慮した上でタイミングで運転環境が感知された感知データに応じて実行される。例えば、オブジェクトが反対方向の車両であり、かつ現在の運転環境が交差点を含む場合、予測モジュール303は、車両が直進するかまたは旋回するかを予測する。交差点に信号機がないと感知データにより示された場合に、予測モジュール303は、車両が交差点に入る前に完全に停車する必要があると予測可能である。車両が現在左折専用車線又は右折専用車線にあると感知データにより示された場合に、予測モジュール303は、車両がそれぞれ左折又は右折する可能性が高いと予測可能である。
オブジェクトごとに対して、決定モジュール304はオブジェクトをどのように処置するかを決定する。例えば、特定のオブジェクト(例えば、交差のルートにおける他の車両)およびオブジェクトを記述するメタデータ(例えば、速度、方向、操舵角)について、決定モジュール304は前記オブジェクトと遇うときに如何に対応するか(例えば、追い越し、道譲り、停止、追い抜き)を決定する。決定モジュール304は、運転/交通ルール312のような、永続性記憶装置352に記憶可能なルールセットに基づいて、このような決定を下すことができる。
ルーティングモジュール307は、出発地から目的地までの1つ以上のルート又は経路を提供するように構成される。(例えばユーザから受信した)出発地位置から目的地位置までの所定の行程について、ルーティングモジュール307はルート及び地図情報311を取得し、出発地位置から目的地位置までの全ての走行可能なルート又は経路を決定する。ルーティングモジュール307は、決定された出発地位置から目的地位置までの各ルートに対して地形図の形で基準線を生成することができる。基準線とは、他の車両、障害物又は交通状況などから他の干渉を受けていない理想的なルート又は経路を指す。つまり、道路に他の車両、歩行者または障害物がない場合、ADVは基準線に精確的にまたは密接的に従うべきである。そして、地形図は、決定モジュール304及び/又は計画モジュール305に提供される。決定モジュール304及び/又は計画モジュール305は、他のモジュールにより提供された他のデータ(例えば測位モジュール301からの交通状况、感知モジュール302により感知された運転環境及び予測モジュール303により予測された交通状况)に応じて、全ての走行可能なルートを検査して最適なルートのうちの一つを選択及び補正する。ADVを制御するための実際の経路又はルートは、その時点における特定の運転環境に応じて、ルーティングモジュール307によって提供された基準線に接近したか又は異なっていてもよい。
計画モジュール305は、感知されたオブジェクトのそれぞれに対する決定に基づいて、ルーティングモジュール307からの基準線を基準として、自動運転車両に経路又はルート並びに運転パラメータ(例えば、距離、速度及び/又は操舵角)を計画する。言い換えれば、特定のオブジェクトについて、決定モジュール304は当該オブジェクトに対して何をするかを決定し、計画モジュール305はどのようにするかを決定する。例えば、所定のオブジェクトについて、決定モジュール304は、前記オブジェクトを追い抜くかを決定することができ、計画モジュール305は前記オブジェクトを左側から追い抜くか又は右側から追い抜くかを決定することができる。計画及び制御データは、計画モジュール305により生成され、車両300が次の移動周期(例えば、次のルート/経路セグメント)にはどのように移動するかを記述する情報を含む。例えば、計画及び制御データは、車両300が30マイル/時間(mph)の速度で10メートル移動し、その後に25mphの速度で右側の車線に変更するように指示することができる。
制御モジュール306は、計画及び制御データに基づいて、計画及び制御データにより限定されたルートまたは経路に応じて適当なコマンド若しくは信号を車両制御システム111に送信することにより自動運転車両を制御および走行させる。前記計画及び制御データは、経路またはルートに沿って異なる時点で適切な車両構成または運転パラメータ(例えば、スロットル、ブレーキおよびステアリングコマンド)を使用して、車両をルートまたは経路の第1の点から第2の点まで走行させるのに十分な情報を含む。
一実施形態では、計画段階は、コマンドサイクルともいう複数の計画周期(例えば、時間間隔が100ミリ秒(ms)ごと)で実行される。計画周期または運転周期のそれぞれについて、計画及び制御データに基づいて1つまたは複数の制御コマンドを発する。すなわち、100msごとに、計画モジュール305は、次のルートセグメントまたは経路セグメント(例えば、目標位置およびADVが目標位置に到着するのに必要な時間が含まれる)を計画する。あるいは、計画モジュール305は更に具体的な速度、方向及び/又は操舵角などを計画することもできる。一実施形態では、計画モジュール305は、次の所定期間(例えば、5秒)のルート区間又は経路区間を計画する。各計画周期について、計画モジュール305は前の周期において計画された目標位置に基づいて現在の周期(例えば、次の5秒)における目標位置を計画する。そして、制御モジュール306は、現在の周期における計画及び制御データに基づいて一つ又は複数の制御コマンド(例えば、スロットル、ブレーキ、ステアリングの制御コマンド)を生成する。
なお、決定モジュール304及び計画モジュール305は、集積モジュールとして一体化されてもよい。決定モジュール304/計画モジュール305は、自動運転車両の走行経路を決定するために、ナビゲーションシステム又はナビゲーションシステムの機能を具備することができる。例えば、ナビゲーションシステムは、自動運転車両が下記の経路に沿って移動することを実現するための一連の速度及び進行方向を決定することができる。前記経路では、自動運転車両が最終的な目的地に通じる走行車線に基づく経路に沿って進行すると共に、感知された障害物を実質的に回避できる。前記経路は、自動運転車両を最終の目的地まで走行させる車線による経路に沿って進行させると共に、基本的に検知された障害物を回避する。目的地は、ユーザインターフェースシステム113を経由して行われたユーザ入力に基づいて設定されても良い。ナビゲーションシステムは自動運転車両が運転していると同時に動的に運転経路を更新することができる。
図4は、一実施形態に係る自動運転車両のシステムアーキテクチャを示すブロック図である。システムアーキテクチャ400は、図3A、図3Bに示す自動運転システムのシステムアーキテクチャを示しても良い。図4を参照すると、システムアーキテクチャ400は、アプリケーション層401と、計画・制御(PNC)層402と、感知層403と、ドライブ層404と、ファームウェア層405と、ハードウェア層406とを含み、これらに限定されない。アプリケーション層401は、例えば、ユーザインターフェースシステム113に関連する機能などのような、自動運転車両のユーザ又は乗客とやり取りするためのユーザインターフェース又はコンフィギュレーションアプリケーションを含んでも良い。PNC層402は、少なくとも計画モジュール305と制御モジュール306とを含んでも良い。感知層403は、少なくとも、感知モジュール302の機能を有しても良い。一実施形態において、予測モジュール303及び/又は決定モジュール305の機能を有する付加層が備えられる。或いは、そのような機能は、PNC層402及び/又は感知層403に含まれても良い。システムアーキテクチャ400は、ドライブ層404と、ファームウェア層405と、ハードウェア層406とをさらに含む。ファームウェア層405は、少なくとも、センサシステム115の機能を表すことが可能であり、該機能は、フィールドプログラマブルゲートアレイ(FPGA)として実現可能である。ハードウェア層406は、例えば、制御システム111及び/又はセンサシステム115などのような自動運転車両のハードウェアを表しても良い。層401〜403は、装置ドライブ層404を介し、ファームウェア層405及びハードウェア層4−6と通信可能である。
図5は、本開示の一実施形態に係るセンサシステムの一例を示すブロック図である。図5を参照すると、センサシステム115は、複数のセンサ510と、ホストシステム110に接続されたセンサユニット500を含む。ホストシステム110は、上記した計画・制御システムを示しており、前記計画・制御システムは、少なくとも、図3Aと図3Bに示すような幾つかのモジュールを含んでも良い。センサユニット500は、FPGA装置又はASIC(専用集積電気回路)装置として実施可能である。一実施形態において、センサユニット500は、特に、一つ以上のセンサ処理モジュール501(単にセンサ処理モジュールとも呼ばれる)と、データ伝送モジュール502と、センサ制御モジュール/ロジック503とを含む。モジュール501〜503は、センサインタフェース504を通じセンサ510と通信可能であり、ホストインタフェースを通じホストシステム110と通信可能である。選択的に、データを、処理のために内部バッファ又は外部バッファ506によりバッファリングしてもよい。
一実施形態において、受信経路又は上流方向について、センサ処理モジュール501は、センサインタフェース504を介してセンサからセンサデータを受信し処理(例えば、フォーマット変換、エラー検出)するように構成されており、センサデータは、バッファ506に一時格納可能である。データ伝送モジュール502は、ホストインタフェース505と適合する通信プロトコルにより、処理済みデータをホストシステムへ伝送するように構成される。同様に、伝送経路又は下流方向について、データ伝送モジュール502は、ホストシステム110からのデータまたは指令を受信するように構成される。そして、センサ処理モジュール501により、データが、相応するセンサに適合するフォーマットとするように処理される。その後、処理されたデータは、センサ―へ伝送される。
一実施形態において、センサ制御モジュール/ロジック503は、ホストシステム(例えば、感知モジュール302)からホストインタフェース505より受信された指令に応答して、センサ510の特定の動作(例えば、センサデータ採集を起動するタイミング)を制御するように構成される。ホストシステム110は、任意の時点で、センサデータを使用して車両周囲の運転環境を感知し得るために、協調的に及び/又は同期的にセンサデータを収集するようにセンサ510を設定してもよい。
センサインタフェース504は、イーサネット(登録商標)、USB(ユニバーサルシリアルバス)、LTE(長期間エボルーション)又はハニカム、WiFi、GPS、カメラ、CAN、シリアル(例えば、汎用非同期受信・送信機や、UART)のうちの一つ又は複数、SIMカード、及び他の汎用入力/出力(GPIO)インターフェースを含んでも良い。ホストインタフェース505は、例えば、PCIeなどのような任意の高速インターフェース又は広帯域幅インターフェースを使用しても良い。センサ510には、例えば、カメラ、LIDAR装置、RADAR装置、GPS受信機、IMU、超音波トランスデューサ、GNSS(全地球導航法衛星系統)受信機、LTE或いはハニカムSIMカード、車両センサ(例えば、スロットルセンサ、ブレーキセンサ、ステアリングセンサ)とシステムセンサ(例えば、温度センサ、湿度センサ、圧力センサ)などのような、自動運転車両に使用される様々なセンサが含まれてもよい。
例えば、カメラは、イーサネット又はGPIOインターフェースを介して接続されても良い。GPSセンサは、USB又は特定のGPSインターフェースを介して接続されてもよい。車両センサは、CANインターフェースを介して接続されてもよい。RADARセンサ又は超音波センサーは、GPIOインターフェースを介して接続されてもよい。LIDAR装置は、イーサネットインターフェースを介して接続されてもよい。外部SIMモジュールは、LTEインターフェースを介して接続されてもよい。同様に、内部SIMモジュールがセンサユニット500のSIMソケットに挿入されても良い。UARTというようなシリアルインターフェイスは、ディバッグのために、コンソールシステムに接続されても良い。
なお、センサ510は、様々なベンダや開発者により提供される任意のタイプなものとしても良い。センサ処理モジュール501は、異なるタイプのセンサとそれらのデータフォーマット及び通信プロトコルに応じた処理を行う。一実施形態によれば、各センサ510は、センサデータを処理し且つ処理されたセンサデータをホストシステム110及び対応するセンサの間に伝送するための特定のチャンネルに関連付けられる。各チャンネルは、対応するセンサデータ及びプロトコルを処理するように配置される又はプログラミングされた、特定のセンサ処理モジュール及び特定のデータ伝送モジュールを含む。
一実施形態において、センサユニット500は、高精度時刻生成回路517を含む。図6A〜図6Bに示すように、センサデータが何時センサ510により伝送されるか、又は何時キャプチャー/トリガされるか、及び/又は、センサデータが何時センサユニット500に受信されるかについて追従するために、高精度時刻生成回路517は、各センサ510に使用される時刻及び又は/タイムスタンプを生成可能である。
これから、図6Aを参照すると、高精度時刻生成回路517は、時刻同期ユニット550と、GPSセンサ551とローカルタイマー553を含んでも良い。時刻同期ユニット550は、ローカルタイマー553の時刻を、GPSセンサ551のPPS(Pulse Per Second)信号から導出された時刻に同期させることができる。PPSは、ナノ秒程度の精度で時間計測を行うためにローカルタイマー553を整列することに用いられる。GPSセンサ551は、図2のセンサシステム115のGPSユニット212の一部であっても良いし、高精度時刻生成回路517の内に集積された専用GPSセンサであってもよい。ローカルタイマー553は、センサユニット500のために時刻を生成可能である。ローカルタイマー553は、任意のローカルRTC(例えば、CPU RTCや、FPGA RTC)又はセンサユニット500からのタイマーであっても良く、或いは、ハニカムソースのような外部ソース(例えば、4G、長期間エボルーション(LTE))、5G、WIFI信号源、FM受信機)から得られるタイマーであっても良い。
図6Bを参照すると、時刻同期ユニット550は、モニタモジュール555と、調整モジュール557と、ミリ秒生成器603と、マイクロ秒生成器605と、ナノセカンド607と、デマルチプレクサ609と、コンフィギュレーション611とを含んでも良い。ミリ秒生成器603、マイクロ秒生成器605、ナノセカンド607は、ローカルタイマー553の発振器に基づき、それぞれ、ミリ秒、マイクロ秒、ナノ秒の発振周期(例えば、異なった粒度の三つの発信器タイマー)を生成可能である。コンフィギュレーション611は、ミリ秒生成器603、マイクロ秒生成器605、ナノセカンド607の中のどれがモニタモジュール555へルーティングされるかについて選択するための選択信号を配置することができる。モニタモジュール555は、生成された発振周期をモニタリングして、当該周期をカウントすることが可能である。調整モジュール557は、ローカルタイマー553をGPSセンサ551からのPPS信号と同期させるように、カウントを調整(或いはカウント表示を修正)することができる。一実施形態において、コンフィギュレーション611に用いられる選択信号は、センサユニット500のユーザ或いはフィードバック回路におけるモニタ555/調整モジュール557によりプログラミング可能である。例えば、ローカルタイマー553が相対的に精確であると確定された場合、ユーザは、ミリ秒生成器を禁止とするように配置可能である。
ローカルタイマー553は、使用される水晶発振器のタイプによって、0.1〜100ppmの精度を有することが可能であり、例えば、いずれのパルスも、0.1〜100マイクロ秒だけずれる可能性があり、GPSセンサ551からのPPS信号は、0.1ppm未満の精確度を有し、或いは、毎秒のパルス毎に、その偏差が0.1マイクロ秒未満となる。0.1ppmのGPS PPS信号について、GPSセンサ551からの受信PPS信号は、連続パルスを毎秒999,999.9〜1,000,000.1マイクロ秒だけ維持可能であるが、典型的なものである100ppmのローカルタイマー553は、連続パルスを毎秒999,900〜1,000,100マイクロ秒だけ維持可能である。また、ローカルタイマー553は、使用される水晶発振器ICの環境温度が変わることによって、ローカルタイマー553のパルス偏差の変動はリアルタイムに変化可能である。そこで、ローカルタイマー553をリアルタイムに調整し、又はローカルタイマー553をGPSセンサ551と一致するように同期させることを目的とする。
ローカルタイマー553をGPSセンサ551と同期させるために、一実施形態において、GPSセンサ551により、GPSパルス信号(PPS)が受信され、上記GPSパルス信号は、例えば<0.1ppmとの一定の精確度でスペースの中をブロードキャストする衛星伝送のRF信号である。幾つかの実施形態において、GPSセンサ551により、第1GPS衛星からPPS信号が受信され、第1GPS衛星が範囲を超えた場合、第2GPS衛星からのPPS信号が受信される。GPS衛星には自らの精確な時間尺度が使用され、且つ、各衛星にはそれぞれに搭載された原子時計組が備えられるので、GPS衛星からのPPS信号は、一つ又は複数の基準タイマーとして取り扱うことができる。しかしながら、注意すべきなのは、ローカルタイマー553が、いずれか一つのGPS PPS信号に一致するようにリアルタイムに調整されるため、二つ又は複数の異なるGPS PPS信号がある場合、何れの時間差も問題にならず、これは、ローカルタイマー553がリアルタイムに平滑的に同期可能であるからである。
モニタモジュール555は、GPS PPS信号を受信すると、pps信号の時刻とローカルタイマー553の時刻との間の如何なるずれを特定可能であり、且つ、特定されたずれに基づいて第2ローカルリアルタイムクロック/タイマーを生成可能である例えば、PPS信号に基づき、最初に、GPS NMEA(National Marine Electronics Association)データ情報により、秒程度の精度の日時及びタイム情報(協定世界時間或いはUTCフォーマット)が提供されてもよい。次に、一実施形態において、ミリ秒生成器603は、ローカルタイマー553を使用して1ミリ秒に接近した発振カウント(例えば、第1粒度)を生成することができる。分周回路を使用して1ミリ秒に接近した発振カウントを生成して、ローカルタイマー553の信号周波数を分割することが可能である。その後、モニタモジュール555は、ミリ秒生成器603から、1秒のGPS PPS信号の時間間隔に用いられる複数のサイクル(例えば、9999サイクル)を検出、又はカウントすることができ、例えば、ローカルタイマー553は、GPS PPS信号を約1ミリ秒だけ遅延したものとする。ミリ秒生成器603がGPS PPS信号よりも遅延されるため、一実施形態において、調整モジュール557は、毎回1.001ミリ秒だけ振動することを表すようにミリ秒生成器の出力を調整する。続いで、ミリ秒生成器603は、1秒毎に0.000,1.001,2.002,......,999.999及び1001ミリ秒を含む1000個の振動表示を生成する。これにより、ミリ秒生成器603からの第999サイクルは、999.999ミリ秒までカウントする。
続いで、マイクロ秒生成器605は、ローカルタイマー553を使用して1マイクロ秒に接近した発振カウントを生成することができる。第2分周回路を使用して1マイクロ秒に接近した発振カウント(例えば、第2粒度)を生成して、ローカルタイマー553の信号周波数を分割することが可能である。モニタモジュール555は、マイクロセグメンテーション605から、998サイクルをカウントするか、又は、1ミリ秒のGPS PPS時間間隔毎に、2マイクロ秒のずれをカウントすることが可能である。同様に、マイクロ秒生成器605がGPS PPS信号よりも遅れるため、調整モジュール557は、1回に1.002マイクロ秒だけ振動することを表すようにマイクロ秒生成器の出力を調整する。マイクロ秒生成器603は、その後、1秒毎に0.000,1.002,2.004,......,999.996,1000.998及び1002マイクロ秒を含む1000個の振動表示を生成する。これにより、第998サイクルは、999.996マイクロ秒までカウントする。
続いで、ナノ秒生成器607は、ローカルタイマー553を使用して、1ナノ秒に接近した発振カウントを生成することができる。第3分周回路を使用して1ナノ秒に接近した発振カウント(例えば、第3粒度)を生成して、ローカルタイマー553の信号周波数を分割することが可能である。モニタモジュール555は、ナノセグメンテーション607から、997サイクルをカウントするか、又は、1マイクロ秒のGPS PPS時間間隔毎に、3ナノ秒のずれをカウントすることが可能である。同様に、調整モジュール557は、1回に1.003ナノ秒だけ振動することを表すようにナノ秒生成器の出力を調整する。ナノ秒生成器607は、その後、1マイクロ秒ごとに0.000,1.003,2.006,......,999.991,1000.994,1001.997及び1003ナノ秒を含む1000個の振動表示を生成する。これにより、ナノ秒生成器607からの第997サイクルは、999.991ミリ秒までカウントする。そうすると、任意のジェネレータの出力(例えば、表示)又はそれらの組み合わせは、高精度時刻をルタイムに生成することができる。その後、高精度時刻は、センサユニット500のセンサに提供可能である。上記の例では、ナノ秒生成器が使用され、その生成される時刻は、1ナノ秒程度の精度を有する。なお、三つのジェネレータ(例えば、三つの粒度)を記述したが、任意の数のジェネレータ及び粒度で高精度時刻を生成することができる。
幾つかの実施形態において、コンフィギュレーション611は、デマルチプレクサ609を通じてジェネレータ603〜607のうちのいずれか一つを選択的に起用/禁止することが可能である。上記選択により、任意のジェネレータをオン/オフとすることができる。出力のサブセットしか必要とされない場合に、当該選択により、ジェネレータ(例えば、ナノ秒生成器のみ)の出力を選択することができる。他の実施形態において、モニタモジュール555は、異なる粒度のずれをバッファリングし(例えば、保存し)、且つ、GPSセンサ信号が失った場合に、GPSセンサ信号が取り直されるまで、第1カウント値、第2カウント値及び第3カウント値(例えば、振動ごとの値の表示)を保持する。
図7は、一実施形態に係る方法を示すフローチャートである。プロセス700は、処理ロジックにより実行可能であり、前記処理ロジックはソフトウェア、ハードウェア、又はそれらの組み合わせを含んでもよい。例えば、プロセス700は、図5のセンサユニット500により実行可能である。図7を参照して説明すると、ブロック701において、処理ロジックは、センサユニットにおいてADVのGPSセンサからの全地球測位システム(GPS)のパルス信号を受信し、GPSパルス信号は、衛星からGPSセンサへ送信されたRF信号であり、センサユニットは、ADVに装着された複数のセンサとホストシステムとに接続され、ホストシステムは、センサから取得されかつセンサユニットの処理モジュールにより処理されたセンサデータに基づいてADV周辺の運転環境を感知する感知モジュールと、感知データに基づいて、ADVを自動運転するための経路を計画する計画・制御モジュール(PNC)を含む。ブロック702において、処理ロジックは、センサユニットにおけるローカル発振器からの第1発振信号を受信する。ブロック703において、処理ロジックは、第1ローカル発振信号をGPS信号とリアルタイムに同期させるようにし、GPSパルス信号に基づき第1ローカル信号を修正することが含まれる。ブロック704において、処理ロジックは、同期された第1ローカル発振信号に基づき、センサユニットの操作に用いられるクロック信号として少なくとも一つのセンサへ提供される第2発振信号を生成する。
一実施形態において、ローカル発振器を同期させることは、ローカル発振器を使用して第1粒度を有する第1カウンタを生成し、GPSパルス信号の時間間隔を満たす第1粒度の振動の回数をカウントする第1カウンタをモニタリングすることであって、1カウントが第1粒度の振動回数を表すものであり、モニタリングされた第1粒度の第1カウンタによる第1カウント値を算出し、算出された第1カウント値に基づき、1カウンタが第1粒度の振動の一部を表すように第1カウンタを修正することで、第1粒度のローカル発振器を同期させることを含む。
一実施形態において、ローカル発振器を同期させることは、ローカル発振器を使用して第2粒度を有する第2カウンタを生成し、GPSパルス信号の時間間隔を満たす第2粒度の振動の回数をカウントする第2カウンタをモニタリングすることであって、1カウントが第2粒度の振動回数を表すものであり、モニタリングされた第2粒度の第2カウンタによる第2カウント値を算出し、算出された第2カウント値に基づき、1カウンタが第2粒度の振動の一部を表すように第2カウンタを修正することで、第1粒度のローカル発振器を同期させることを含む。
一実施形態において、ローカル発振器を同期させることは、ローカル発振器を使用して第3粒度を有する第3カウンタを生成し、GPSパルス信号の時間間隔を満たす第3粒度の振動の回数をカウントするように第3カウンタをモニタリングすることであって、1カウントが第3粒度の振動回数を表すものであり、モニタリングされた第3粒度の第3カウンタによる第2カウント値を算出し、算出された第3カウント値に基づき、1カウンタが第3粒度の振動の一部を表すように第3カウンタを修正することで、第3粒度のローカル発振器を同期させることを含む。他の実施形態において、第1粒度をミリ秒の粒度、第2粒度をマイクロ秒の粒度、第3粒度をナノ秒の粒度とする。
他の実施形態において、処理ロジックは、さらに、同期のための上記第1カウンタ、第2カウンタ、又は第3カウンタのうちのいずれか1つの生成を禁止させる。他の実施形態において、GPSセンサ信号が失った場合に、システムは、GPSセンサ信号が取り直されるまで、第1カウント値、第2カウント値及び第3カウント値を保持する。
図8は、一実施形態に係るセンサユニットの一例を示すブロック図である。図8は、タイムスタンプ同期ハブ装置519を追加する点以外、図5と同じである。タイムスタンプ同期ハブ装置519は、任意のセンサについて1つ又は複数のタイムスタンプ(例えば、出力RXタイムスタンプ、伝送TXタイムスタンプお及び/又はトリガタイムスタンプ)を生成し、或いは、単に、任意のセンサ510にタイム情報を提供することができる。タイムスタンプ同期ハブ装置519は、様々な方式で各センサへ接続可能であり、各センサが、TXタイムスタンプ生成器や、RXタイムスタップジェネレータと接続され、又は両者と接続可能である。センサデータの収集時刻を追跡するには、RXタイムスタンプ/TXタイムスタンプ及びトリガタイムスタンプの正確度は極めて重要である。
図9は、一実施形態に係るタイムスタンプ同期ハブ装置の一例を示すブロック図である。タイムスタンプ同期ハブ装置519は、時刻生成ユニット又はGPSパルスユニット901と、タイムスタンプフォーマット変換ユニット903と、TXタイムスタンプ生成器911〜913と、RXタイムスタンプ生成器921〜923とを含む。タイムスタンプ同期ハブ装置519は、センサへTXタイムスタンプ/RXタイムスタンプ及び/又はトリガタイムスタンプを提供するために、複数のセンサ(例えば、S1と、S2と、S3)と接続される。時刻生成ユニット又はGPSパルスユニット901は、センサS1〜S3について、時刻を生成するか、又はGPSパルスを提供することができる。タイムスタンプフォーマット変換ユニット903は、あるタイムスタンプフォーマットを他のタイムスタンプフォーマットに変換可能であり、例えば、タイムスタンプを、ms:us:ns:mm:ss:hh:month:day:yearのフォーマットから、mm:ss:hh:month:day:yearのフォーマットに変換可能である。タイムスタンプフォーマットは、年、月、日、時、分、秒、ミリ秒、マイクロ秒及びナノ秒の任意の組み合わせ及び/又はランキングを含んでも良い。よって、タイムスタンプフォーマット変換部903は、幾つかのセンサ(例えばセンサS1、S3)の時刻入力パラメータの要求に応じて、あるフォーマットから他のフォーマットへ変換可能である。
TXタイムスタンプ生成器911〜013は、センサユニットにおけるセンサについて、伝送タイムスタンプを生成可能である。一実施形態において、TXタイムスタンプ生成器は、単に、GPS PPSを一つ又は複数のセンサにルーティングして、センサ(例えば、S1)にGPS PPS信号を提供する。S1センサの例として、GPSタイム情報を入力として受信するウィリデン(Velodyne)のLIDARセンサが挙げられる。GPS時刻入力情報は、LIDARセンサをGPSクロックと同期させるに使用される。センサが同期された後、LIDARセンサは、奥行き画像をトリガ/キャプチャー可能であり、且つ、奥行き画像を有するトリガタイムスタンプを含む。第2タイムスタンプは、センサS1によりセンサデータがS1からセンサユニット500へ伝送される時刻を表す伝送タイムスタンプであっても良い。ここで、トリガタイムスタンプ及び/又は伝送タイムスタンプは、メタデータとして、センサS1からの奥行き画像と共にセンサユニット500へ送信可能である。
S1センサの別の例として、mm:ss:hh:month:day:yearフォーマット化のタイム情報を入力パラメータとして受信可能なカメラセンサが挙げられる。この場合では、TXタイムスタンプ生成器がカメラセンサへ発送しようとするmm:ss:hh:month:day:yearフォーマットのTXタイムスタンプ(時刻生成ユニット901から提供される)を生成する。カメラセンサは、トリガタイムスタンプを有するRGB画像をトリガ/キャプチャー可能であり、前記トリガタイムスタンプは、TXタイムスタンプから(例えば、その間の如何なる遅れを考慮する)導出可能である。センサデータが何時センサユニットまで伝送するかを表す第2タイムスタンプ(伝送タイムスタンプ)は、タイム情報メタデータとしてトリガタイムスタンプを含んでも良い。センサデータは、その後、タイム情報メタデータとともに、カメラセンサからセンサユニット500に伝送可能である。S1センサの別の例として、RADARセンサと、SONARセンサと、時刻入力パラメタを受信する如何なるセンサとが挙げられる。
他の実施形態において、TXタイムスタンプ生成器は、mm:ss:hh:month:day:yearフォーマットのタイムスタンプを生成し、生成されたタイムスタンプを一つ又は複数のセンサへ提供し、mm:ss:hh:month:day:yearタイムスタンプがGPS PPS信号に同期したものである。それらのセンサ(例えば、S3)は、センサデータとタイムスタンプデータ(変化していない)をそのままホストシステム110に伝送可能である。使用可能な通信チャンネルが無くなった場合や、センサデータは低い帯域幅のみが必要とされる場合に、ホストシステムとの間に、例えばイーサネット接続というようなの直接的な接続を確立することができる。S3センサの例として、イーサネットと、カメラセンサ及び/又はRADARセンサが挙げられる。
RXタイムスタンプ生成器921〜923は、センサユニット500によりセンサデータが受信されると、受信タイムスタンプを生成し、生成された受信タイムスタンプを時刻メタデータとしてセンサデータに追加することができる。これにより、ホストシステム110に送信されたセンサデータは、センサユニット500によりセンサデータが取得された時刻に関する使用可能な情報を有する。RXタイムスタンプ生成器を使用するセンサの例として、S1とS2がある。S1とS2との区別は、S1が伝送(TX)タイムスタンプ情報及び/又はトリガタイムスタンプ情報をさらに提供するに対し、S2が受信(RX)タイムスタンプ情報のみを提供する点にある。S2センサの例として、LIDARと、カメラセンサ及び/又はRADARセンサが挙げられる。
別の実施形態において、タイムスタンプ同期ハブ装置519は、タイム情報(例えば、タイマー情報/タイムスタンプ313)をホストシステム110に提供するために、ホストシステム110に(例えば、PCIeバスを介して)接続される。提供されるタイム情報により、ホストシステム110が、ホストシステム110のRTC(例えば、CPU−RTC)を、提供される時刻に同期させることができ、センサユニット500とホストシステム110とは唯一のクローバルタイムを使用することができる。その後、ADVに用いられるホストシステム110の計画・制御モジュールは、センサユニット500と同期されたホストシステム110のローカルRTCを使用し、ADVを自動的に計画、制御することができる。
図10は、一実施形態に係るセンサユニットの一例を示すブロック図である。図10は、タイムソースランキングモジュール521を追加する点以外、図8と同じである。タイムソースランキングモジュール521は、ローカルRTC(例えば、図6Aに示すローカルタイマー553)に使用されるタイムソースの適合性に従い、幾つかの使用可能なタイムソースをランキングすることができる。
図11は、一実施形態に係るタイムソースランキング回路の一例を示すブロック図である。図11を参照すると、タイムソースランキングモジュール521は、例えば、受信モジュール1101、ヒストグラム生成器1103、ヒストグラムランキングモジュール1105、ヒストグラム選択モジュール1107、タイムスタンプ生成器1109、CPU−RTCモニタモジュール1111、レコーダ1113などのサブモジュールを有しても良い。タイムソース1120は、GPSセンサ、LTE、CPU RTC、WIFI、FPGA RTC、FM受信機とV2Xセンサを含んでも良い。
受信モジュール1101は、異なるタイムソース1120からタイムスタンプ或いはタイム情報を受信可能である。受信モジュール1103は、異なるタイムソース1120から受信されたタイムスタンプ或いはタイム情報に基づき、差異ヒストグラムを生成可能である。一実施形態において、差異ヒストグラムは、ある時間帯、例えば何時間か、或いは一日間において平均化された差異ヒストグラムとしても良い。一実施形態において、差異ヒストグラムは、ある時間帯おける平均的な差異ヒストグラムは、運行平均値としても良い。ヒストグラムランキングモジュール1105は、GPSセンサタイムソースを基準タイムソースとして使用し、タイムソースをランキングすることが可能であり、例えば、GPSセンサの時刻に対する時間差の小さい順で、タイムソースをランキングすることが可能である。ヒストグラフ選択モジュール1107は、GPSセンサのタイムソースに対する時間差が最も小さい時刻を有するタイムソースを選択することができる。タイムスタンプ生成器1109は、選択されたタイムソースに基づきタイム情報又はタイムスタンプを生成可能である。CPU−RTCモニタモジュール1111は、CPU−RTC及びGPSセンサの時刻とは異なる時刻をモニタリング可能である。レコーダ1113は、例えばCPU−RTC及びGPSセンサのデルタタイムや、時刻の時間差などのCPU−RTCのタイム情報をログファイルに格納することができる。
地下駐車場でADVの着火装置を着火する場合(例えば、GPS信号がない場合)、ADVは、タイムソース単キングモジュール521を使用する。一実施形態において、センサユニット500又はホストシステム110は、タイムスタンプ生成のために、あいかわらず相対的に精確な時刻を必要とするため、センサユニット500又はADVに係る使用可能なタイムソース情報が欠ける場合に、ディフォルトのタイムソースランキイングリストを利用して好ましいタイムソースを特定可能である。ディフォルトのランキングリストの例として、例えば、GPS、FPGA RTC、WIFI、LTEとCPU RTCの順番で、各タイムソースをランキングすることができる。この場合、唯一の利用可能なタイムソースがFPGA RTC和WIFIからである場合、FPGA RTCタイムソースが最高優先度を有し、且つ、ローカルタイムを確立するための好ましいタイムソースであり、例えば、図6Aにおけるローカルタイマー553のローカル時間である。しかしながら、一旦、GPSセンサからの信号が可用であれば、一実施形態において、タイムソースランキングモジュール521は、ランキングシステムに基づき、可用の異なるタイムソースの正確度を確定する。
一実施形態において、タイムソースランキングモジュール521は、ランキングシステムにより、多くの可用なタイムソースの絶対的な差値に基づきヒストグラフを生成する。何回か繰り返してヒストグラフ或いは差異ヒストグラフを生成してもよいし、それらのヒストグラフは所定の時間帯において平均化されてもよく、又は、GPS信号のみが可用であればよい。差異ヒストグラフにより特定されたGPSセンサに最も接近した(例えば、最小差異)タイムソースが、GPSセンサが不可用の場合(例えば、次回に地下駐車場で着火する場合)に使用される最も好ましいタイムソースとして選択される。一実施形態において、CPU RTCは、予めに好ましいタイムソースとして設けられておく。この場合、レコーダ1113は、CPU RTの差異ヒストグラフ、デルタタイム或いは平均デルタタイムをログファイル或いはログバッファエリアへ書き入れる。差異ヒストグラフ、デルタタイム或いは平均デルタタイムは、CPU RTCとGPSタイムとの時間差を記録しているものである。次回にGPS信号のない状況で着火する場合に、センサユニット500は、デルタタイムに基づきCPU RTCを調整し、調整されたCPU RTCをローカルタイムとする。一実施形態において、GPS信号が利用可能な場合、デルタタイムをCPU RTCのすべての偏差を表すように更新する。
図12は、一実施形態に係るタイムソースをランキングする方法を示すフローチャートである。プロセス1200は、処理ロジックにより実行可能であり、前記処理ロジックはソフトウェア、ハードウェア、又はそれらの組み合わせを含んでもよい。例えば、プロセス1200は、図11のタイムソースランキングモジュール521により実行可能である。図12を参照すると、ブロック1201において、処理ロジックは、センサとRTCを含む複数のタイムソースから、複数の時刻を受信し、センサは、ADVと通信中にあり、且つ少なくともGPSセンサを含み、RTCは、少なくとも中央処理装置リアルタイムクロック(CPU−RTC)を含む。なお、CPU−RTCは、センサユニットにおけるCPUのRTCである。RTC及びセンサタイムソースの例として、、GPSセンサ、LTE、CPU RTC、WIFI、FPGA RTC、FM受信機とV2Xセンサが挙げられる。ブロック1202において、処理ロジックは、各タイムソースの時刻に基づき、GPSセンサの時刻と他のセンサ及びRTCそれぞれの時刻との間の差を表す差異ヒストグラムを作成する。ブロック1203において、処理ロジックは、差異ヒストグラムに基づきセンサとRTCに対してランキングする。ブロック1204において、処理ロジックは、センサとRTCのうちの、GPSセンサに対する時間差の最も小さいものから、タイムソースを選択する。ブロック1205において、処理ロジックは、選択されたタイムソースに基づいてタイムスタンプを生成して、ADVのセンサユニットのセンサデータにタイムスタンプを付加する。
一実施形態において、差異ヒストグラムは、GPSセンサと他のセンサやRTCとの平均時間差の分布を含む平均差異ヒストグラムを含む。一実施形態において、差異ヒストグラムは適用し得ない場合に、処理ロジックは、センサ又はRTCのデフォルトランキングリストを取る。
一実施形態において、処理ロジックは、さらに、CPU−RTCとGPSセンサの時刻との時間差を含むCPU−RTCのタイム情報をログファイル(CPU−RTCとGPSセンサの時刻との時間差を含む)に格納し、CPU−RTCとGPSセンサの時刻との時間差をモニタリングし、モニタリングされた時間差に基づき、ログファイルにおけるタイム情報を更新する。他の実施形態において、タイム情報は、バイナリデータとして格納されている。一実施形態において、タイム情報は、ログバッファに格納されている。一実施形態において、タイムソースは、LTE、WIFI、CPU RTC、FPGA RTC、FM受信器、V2Xセンサ、又はGPSセンサを含む。一実施形態において、処理ロジックは、さらに、差異ヒストグラムと、センサ及びRTCのランキングとをログバッファに記録する。
図13は、一実施形態に係るセンサユニットの一例を示すブロック図である。図13は、タイムソース回復モジュール523を追加する点以外、図10と同じである。GPS信号が一定期間で利用できなくなってから利用可能になった場合、タイムソース回復モジュール523は、ローカルタイムソースを回復可能であり、例えば、ローカルタイムソースとGPSタイムソースとの間の時間差が一定期間における累積又はクロックドリフトを回復可能である。
図14は、一実施形態に係るタイムソース回復回路の一例を示すブロック図である。図14を参照すると、タイムソース回復モジュール523は、例えば、時間差確定モジュール1401、最大限度/ステップ幅確定モジュール1403、平滑化回復モジュール1405、突発回復モジュール1407及びGPSセンサ回復検出器1409などのサブモジュールを含む。
時間差確定モジュール1401は、ローカルタイムソースとGPSタイムソースとの間の時間差又は時間差異を確定可能である。最大限度/ステップ幅確定モジュール1403は、タイム回復が急激ではなく、平滑的に実行されようとする場合の時間差異の最大限度を確定することができる。例えば、時間差異は、所定の最大限度より低くなると、平滑化ロジックに従いタイム回復を実行する。時間差異が最大限度よりも大きくなると、突発ロジックに従いタイム回復を実行し、例えば、すぐにローカルタイムをGPSタイムに合わせるようにする。最大限度/ステップ幅確定モジュール1403は、さらに、平滑化ロジックに従い、平滑化タイムソース回復に使用される回復インクリメント/ステップ幅(或いは回復時間間隔)を確定することもできる。平滑化回復モジュール1405は、平滑化ロジックを含み、平滑化タイムソース回復を実行可能である。平滑化回復とは、ローカルタイムソースが所定のステップ幅で所定の期間内にGPSの時刻に追及するか、又は合わせることを指す。突発回復モジュール1407は、突発タイムソース回復を実行可能であり、例えば、突然に、又は、すぐにタイムソースの時刻をGPSの時刻と合わせることである。GPS信号が利用できない状態から利用可能への変換の時及び/又はGPS信号が利用可能から利用できないへの変換の時、GPSセンサ回復検出器1409は、GPS信号の変換を検出可能である。
説明の便宜上、ADVが地上の道路にあり、且つ利用可能なGPS信号にアクセス可能である場合に、ローカルタイム(或いはローカルクロック)は、GPS PPSにより取得、及び同期することができる。ADV、トンネルに入ると、GPS信号が利用できなくなる可能性があり、且つ、CPU RTCのようなローカルRTC又はセンサは、タイムソースの機能を引き継ぐことができる。トンネルの範囲内において、ローカルタイムソースは不正確となる可能性があるため、クロックドリフトによって時間差異(例えば、ローカルタイムソースの時刻とGPSタイムとの時間差)が生じる。ADVがトンネルを離れると、GPSセンサ回復検出器1409により、GPS信号の変換が検出される。その後、時間差確定モジュール1401は、ローカルタイムソース(上述したタイムソース差異ヒストグラフに基づきローカルソースを選択可能である)とGPSタイムの間の時間差異を確定可能である。最後に、最大限度/ステップ幅確定モジュール1403は、時間差と最大限度(最大限度がユーザにより予め設定可能である)とを比較し、時間差が最大限度よりも大きい場合、ローカルタイムソースに対し平滑化ロジックを適用することで、ローカルタイムソースをGPSタイムに合わせるようにする。そうではない場合、ローカルタイムソースに対し、突発ロジックを適用することにより、ローカルタイムソースをGPSタイムに合わせるようにする。
図15は、一実施形態に係る平滑化タイムソース回復の一例を示す図である。図15を参照すると、時刻=0において、GPS信号が利用できない状態から利用可能への変換が検出された場合(例えば利用可能になった場合)、初期時間差が200ナノ秒だけ遅れると確定される。初期時間差が、所定の最大限度(例えば)、500ms)と比較して、それが最大限度よりも小さくなると判定する。この場合、初期時間差が最大限度よりも小さくなることが判定されたため、平滑化ロジックが適用される。また、ローカルタイムソースがGPSタイムより遅れているため、ローカルタイムソースは、GPSタイムに追及するように(予め設定されたステップインクリメント又は最大インクリメント間隔に基づき)逓増して増加する。一実施形態において、センサユニットのデジットクロックのデジットクロックサイクルの時間間隔に基づき、ステップ幅のインクリメントを予め定める。例えば、ステップ幅のインクリメントは、10nsとされてもよく、それは、センサユニットのクロックサイクルが10nsの時間間隔を有するからである。この場合、各デジットクロックサイクル(例えば、10ns)について、ローカルタイムソースは、その時刻に対し、サイクル間隔及びインクリメントを加え、例えば、20nsを加える。20個のデジットクロックサイクル(或いは200ns)の後、ローカルタイムソースはGPSタイムに合わせられることになる。なお、ステップ幅のインクリメントが10nsの500msの最大限度は、500msの最大タイム回復サイクルを提供する。ここで、平滑化回復時間間隔を早くするか、又は遅くするために、ステップ幅のインクリメントを調整することができる。
初期時間差が500msよりも大きいことが確定された場合、ローカルタイムソースは、いずれの平滑化ロジックも必要とせずに急激にGPSに合わせられる。なお、タイムソースの調整は、センサユニットのローカルデジットクロックへの干渉とはならないが、センサユニットにおける一つ又は複数のセンサがTX/RX及びトリガタイムスタンプのタイムスタンプクロックソースを提供するように調整する。500ms及び10nsは、それぞれ最大限度及び回復インクリメント/ステップ幅として記述されたが、何れの時間間隔も最大限度及び時間インクリメントとして使用することができる。
図16は、一実施形態に係るタイムソース回復の方法を示すフローチャートである。プロセス1600は、処理ロジックにより実行可能であり、前記処理ロジックはソフトウェア、ハードウェア、又はそれらの組み合わせを含んでもよい。例えば、プロセス1600は、図14のタイムソース回復モジュール523により実行可能である。図6を参照すると、ブロック1601において、処理ロジックは、ローカルタイムソースとGPSセンサの時刻との間の時間差を確定する。ブロック1602において、処理ロジックは、差の最大限と、平滑化タイムソース回復のための最大回復インクリメント、或いは最大回復時間間隔を確定する。ブロック1603において、処理ロジックは、ローカルタイムソースとGPSセンサの時刻との間の差異が最大限度よりも小さいことを判定する。ブロック1604において、処理ロジックは、最大回復時間間隔以内で、ローカルタイムソースを、GPSセンサの時刻に収めるように、平滑化タイムソース回復を計画する。ブロック1605において、処理ロジックは、回復されたタイムソースに基づいてタイムスタンプを生成して、ADVのセンサユニットのセンサデータにタイムスタンプを付加する。
第4局面によれば、処理ロジックは、ローカルタイムソースとGPSセンサの時刻との差が最大限よりも大きいことを判定する。処理ロジックは、その後、ローカルタイムソースに対し、GPSセンサの時刻として割り当てるように、タイムソースの突発的な回復を計画する。処理ロジックは、さらに、最大回復インクリメントと異なる所定のタイムインクリメントで、ローカルタイムソースを、GPSセンサの時刻に収めるように、平滑化タイムソース回復を計画する。
一実施形態において、所定のタイムインクリメント(或いはステップ幅)は、センサユニットの1クロックサイクルの間隔である。一実施形態において、1クロックサイクルの間隔は、10ナノ秒である。一実施形態において、最大限、回復インクリメント又は最大回復時間間隔は、ユーザにより予め設定されている。一実施形態において、システムは、GPSセンサからの信号の回復を検出すると、ローカルタイムソースとGPSセンサの時刻との時間差を確定する。
図17は、本発明の一実施形態と組み合わせて使用可能なデータ処理システムを例示的に示すブロック図である。例えば、システム1500は、図1の感知・計画システム110、又はサーバ103〜104のいずれかのような、上述した前記プロセス又は方法のいずれかを実行するデータ処理システムのいずれかを表すことができる。システム1500は、いくつかの異なる構成要素を含んでもよい。これらの構成要素は、集積回路(IC)、集積回路の一部、ディスクリート型電子デバイス、又は回路基板(例えば、コンピュータシステムのマザーボード又はアドインカード)に適するその他のモジュールとして実現されることができ、又は、他の形態でコンピュータシステムのシャーシ内に組み込まれた構成要素として実現されることができる。
なお、システム1500は、コンピュータシステムのいくつかの構成要素の高レベルビューを示すことを意図している。しかしながら、理解すべきなのは、いくつかの実施例において付加的構成要素が存在してもよく、また、その他の実施例において示された構成要素を異なる配置にすることが可能である。システム1500は、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、サーバ、携帯電話、メディアプレーヤ、パーソナルデジタルアシスタント(PDA)、スマートウォッチ、パーソナルコミュニケーター、ゲーム装置、ネットワークルーター又はハブ、無線アクセスポイント(AP)又はリピーター、セット・トップ・ボックス、又はそれらの組み合わせを表すことができる。また、単一の機械又はシステムのみが示されたが、「機械」又は「システム」という用語は、本明細書で説明されるいずれか1つまたは複数の方法を実行するための、単独で又は共同で1つ(又は複数)の命令セットを実行する機械又はシステムの任意の組み合わせも含まれることを理解されたい。
一実施形態では、システム1500は、バスまたはインターコネクト1510を介して接続される、プロセッサ1501と、メモリ1503と、装置1505〜1508とを含む。プロセッサ1501は、単一のプロセッサコアまたは複数のプロセッサコアが含まれる単一のプロセッサまたは複数のプロセッサを表すことが可能である。プロセッサ1501は、マイクロプロセッサ、中央処理装置(CPU)などのような、1つまたは複数の汎用プロセッサを表すことができる。より具体的には、プロセッサ1501は、複雑命令セットコンピューティング(CISC)マイクロプロセッサ、縮小命令セットコンピューティング(RISC)マイクロプロセッサ、超長命令語(VLIW)マイクロプロセッサ、またはその他の命令セットを実行するプロセッサ、または命令セットの組み合わせを実行するプロセッサであってもよい。プロセッサ1501は更に、例えば、特定用途向け集積回路(ASIC)、セルラー若しくはベースバンドプロセッサ、フィールドプログラマブルゲートアレイ(FPGA)、デジタルシグナルプロセッサ(DSP)、ネットワークプロセッサ、グラフィックプロセッサ、通信プロセッサ、暗号化プロセッサ、コプロセッサ、組込みプロセッサ、または命令を処理可能な任意の他のタイプのロジックのような、1つまたは複数の専用プロセッサであってもよい。
プロセッサ1501は、超低電圧プロセッサのような低電力マルチコアプロセッサソケットであってもよく、前記システムの様々な構成要素と通信するための主処理ユニットおよび中央ハブとして機能することができる。このようなプロセッサは、システムオンチップ(SoC)として実装されてもよい。プロセッサ1501は、本明細書で説明される動作およびステップを実行するための命令を実行するように構成される。システム1500は、更に任意選択グラフィックサブシステム1504と通信するグラフィックインターフェースを含むことができ、グラフィックサブシステム1504は、表示コントローラ、グラフィックプロセッサ、及び/又は表示装置を含むことができる。
プロセッサ1501は、メモリ1503と通信することができ、メモリ1503は、一実施形態では、所定量のシステムメモリを提供するための複数のメモリ装置によって実現されることができる。メモリ1503は、例えば、ランダムアクセスメモリ(RAM)、ダイナミックRAM(DRAM)、シンクロナスDRAM(SDRAM)、スタティックRAM(SRAM)、又はその他のタイプの記憶装置のような、1つまたは複数の揮発性記憶(又はメモリ)装置を含むことができる。メモリ1503は、プロセッサ1501又はその他の任意の装置により実行される命令シーケンスを含む情報を記憶することができる。例えば、様々なオペレーティングシステム、デバイスドライバ、ファームウェア(例えば、ベーシックインプット/アウトプットシステム又はBIOS)、及び/又はアプリケーションの実行可能なコード及び/又はデータは、メモリ1503にロードされ、プロセッサ1501により実行されることができる。オペレーティングシステムは、例えば、ロボットオペレーティングシステム(ROS)、Microsoft(登録商標)社のWindows(登録商標)オペレーティングシステム、アップル社のMacOS(登録商標)/iOS(登録商標)、Google(登録商標)社のAndroid(登録商標)、LINUX(登録商標)、UNIX(登録商標)、またはその他のリアルタイム若しくは組込みオペレーティングシステムのような、任意のタイプのオペレーティングシステムであってもよい。
システム1500は、例えば、ネットワークインターフェース装置1505、任意選択入力装置1506、及びその他の任意選択IO装置1507を含む装置1505〜1508のようなIO装置を更に含むことができる。ネットワークインターフェース装置1505は、無線送受信機及び/又はネットワークインターフェースカード(NIC)を含むことができる。前記無線送受信機は、WiFi送受信機、赤外線送受信機、ブルートゥース(登録商標)送受信機、WiMax送受信機、無線携帯電話送受信機、衛星送受信機(例えば、全地球測位システム(GPS)送受信機)、またはその他の無線周波数(RF)送受信機、またはそれらの組み合わせであってもよい。NICは、イーサネットカードであってもよい。
入力装置1506は、マウス、タッチパネル、タッチスクリーン(表示装置1504と統合されてもよい)、ポインター装置(例えば、スタイラス)、及び/又はキーボード(例えば、物理キーボード又はタッチスクリーンの一部として表示された仮想キーボード)を含むことができる。例えば、入力装置1506は、タッチスクリーンと接続するタッチスクリーンコントローラを含むことができる。タッチスクリーンおよびタッチスクリーンコントローラは、例えば、様々なタッチ感応技術(コンデンサ、抵抗、赤外線、および表面弾性波の技術を含むが、それらに限定されない)のいずれか、並びにその他の近接センサアレイ、または、タッチスクリーンと接触する1つまたは複数の点を確定するためのその他の素子を用いて、それらの接触、移動または中断を検出することができる。
IO装置1507は、音声装置を含むことができる。音声装置は、例えば、音声認識、音声複製、デジタル記録、及び/又は電話機能のような音声サポートの機能を促進するために、スピーカ及び/又はマイクロホンを含んでもよい。その他のIO装置1507は、ユニバーサルシリアルバス(USB)ポート、パラレルポート、シリアルポート、プリンタ、ネットワークインターフェース、バスブリッジ(例えば、PCI−PCIブリッジ)、センサ(例えば、加速度計のようなモーションセンサ、ジャイロスコープ、磁力計、光センサ、コンパス、近接センサなど)、又はそれらの組み合わせを更に含むことができる。装置1507は、更に結像処理サブシステム(例えば、カメラ)を含むことができ、前記結像処理サブシステムは、カメラ機能(例えば、写真及びビデオ断片を記録する)を促進するための光学センサを含むことができ、例えば、電荷結合素子(CCD)又は相補型金属酸化物半導体(CMOS)光学センサが挙げられる。特定のセンサは、センサハブ(図示せず)を介してインターコネクト1510に接続されることができ、キーボード又はサーマルセンサのようなその他の装置はシステム1500の具体的な配置又は設計により、組込みコントローラ(図示せず)により制御されることができる。
データ、アプリケーション、1つまたは複数のオペレーティングシステムなどの情報の永続性記憶を提供するために、プロセッサ1501には、大容量記憶装置(図示せず)が接続されることもできる。様々な実施形態において、より薄くてより軽量なシステム設計を可能にしながら、システムの応答性を向上するために、このような大容量記憶装置は、ソリッドステートデバイス(SSD)によって実現されることができる。しかしながら、その他の実施形態では、大容量記憶装置は、主にハードディスクドライブ(HDD)を使用して実現されることができ、より小さい容量のSSD記憶装置をSSDキャッシュとして機能することで、停電イベントの間にコンテキスト状態及び他のそのような情報の不揮発性記憶を可能にし、それによりシステム動作が再開するときに通電を速く実現することができる。また、フラッシュデバイスは、例えば、シリアルペリフェラルインターフェース(SPI)を介してプロセッサ1501に接続されることができる。このようなフラッシュデバイスは、前記システムのBIOS及びその他のファームウェアを含むシステムソフトウェアの不揮発性記憶のために機能することができる。
記憶装置1508は、コンピュータアクセス可能な記憶媒体1509(機械可読記憶媒体又はコンピュータ可読媒体ともいう)を含むことができ、前記コンピュータアクセス可能な記憶媒体1509には、本明細書で記載されたいずれか1つまたは複数の方法又は機能を具現化する1つまたは複数の命令セット又はソフトウェア(例えば、モジュール、ユニット及び/又はロジック1528)が記憶されている。処理モジュール/ユニット/論理回路1528は、例えば、感知モジュール302、計画モジュール305、制御モジュール306、及び/又はセンサユニットモジュール500のような、前記構成要素のいずれかを表すことができる。処理モジュール/ユニット/ロジック1528は、更に、データ処理システム1500、メモリ1503、およびプロセッサ1501による実行中に、メモリ1503内および/またはプロセッサ1501内に完全的にまたは少なくとも部分的に存在してもよく、データ処理システム1500、メモリ1503およびプロセッサ1501も機械アクセス可能な記憶媒体を構成する。処理モジュール/ユニット/ロジック1528は、更に、ネットワークを介してネットワークインターフェース装置1505を経由して送受信されてもよい。
コンピュータ可読記憶媒体1509は、以上に説明されたいくつかのソフトウェア機能を永続的に記憶するために用いることができる。コンピュータ可読記憶媒体1509は、例示的な実施形態において単一の媒体として示されるが、「コンピュータ可読記憶媒体」という用語は、前記1つまたは複数の命令セットが記憶される単一の媒体または複数の媒体(例えば、集中型または分散型データベースおよび/または関連するキャッシュとサーバ)を含むと解釈されるものとする。「コンピュータ可読記憶媒体」という用語は、更に、命令セットを記憶または符号化できる任意の媒体を含むと解釈されるものであり、前記命令セットは機械により実行され、本発明のいずれか1つまたは複数の方法を前記機械に実行させるためのものである。それゆえに、「コンピュータ可読記憶媒体」という用語は、ソリッドステートメモリ、光学媒体および磁気媒体、またはその他の任意の非一時的機械可読媒体を含むが、それらに限定されないと解釈されるものとする。
本明細書に記載の処理モジュール/ユニット/ロジック1528、構成要素及びその他の特徴は、ディスクリートハードウェア構成要素として実現されてもよく、又はASICS、FPGA、DSP又は類似の装置のようなハードウェア構成要素の機能に統合されてもよい。更に、処理モジュール/ユニット/ロジック1528は、ハードウェア装置におけるファームウェア又は機能性回路として実現されてもよい。更に、処理モジュール/ユニット/ロジック1528は、ハードウェア装置とソフトウェア構成要素の任意の組み合わせで実現されてもよい。
なお、システム1500は、データ処理システムの様々な構成要素を有するものとして示されているが、構成要素を相互接続する任意の特定のアーキテクチャまたは方式を表すことを意図するものではなく、そのような詳細は、本発明の実施形態とは密接な関係がない。また、より少ない構成要素又はより多くの構成要素を有するネットワークコンピュータ、ハンドヘルドコンピュータ、携帯電話、サーバ、及び/又はその他のデータ処理システムも、本発明の実施形態と共に使用することができることを理解されたい。
前記具体的な説明の一部は、既に、コンピュータメモリにおけるデータビットに対する演算のアルゴリズムと記号表現で示された。これらのアルゴリズムの説明および表現は、データ処理分野における当業者によって使用される、それらの作業実質を所属分野の他の当業者に最も効果的に伝達する方法である。本明細書では、一般的に、アルゴリズムは、所望の結果につながるセルフコンシステントシーケンスと考えられる。これらの動作は、物理量の物理的処置が必要なものである。
しかしながら、念頭に置くべきなのは、これらの用語および類似の用語の全ては、適切な物理量に関連付けられるものであり、これらの量を標識しやすくするためのものに過ぎない。以上の説明で他に明示的に記載されていない限り、本明細書の全体にわたって理解するべきのは、添付された特許請求の範囲に記載するもののような用語による説明とは、コンピュータシステム、又は類似の電子計算装置の動作及びプロセスを指し、前記コンピュータシステム又は電子計算装置は、コンピュータシステムのレジスタ及びメモリにおける物理(電子)量として示されるデータを制御するとともに、前記データをコンピュータシステムメモリ又はレジスタ又はこのようなその他の情報記憶装置、伝送又は表示装置において同様に物理量として示される別のデータに変換する。
本発明の実施形態は、本明細書の動作を実行するための装置にも関する。このようなコンピュータプログラムは、非一時的コンピュータ可読媒体に記憶される。機械可読媒体は、機械(例えば、コンピュータ)により読み取り可能な形式で情報を記憶するための任意のメカニズムを含む。例えば、機械可読(例えば、コンピュータ可読)媒体は、機械(例えば、コンピュータ)可読記憶媒体(例えば、読み出し専用メモリ(「ROM」)、ランダムアクセスメモリ(「RAM」)、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリ装置)を含む。
上述した図面において説明されたプロセス又は方法は、ハードウェア(例えば、回路、専用ロジックなど)、ソフトウェア(例えば、非一時的コンピュータ可読媒体に具現化されるもの)、又は両方の組み合わせを含む処理ロジックにより実行されることができる。前記プロセス又は方法は、以上で特定の順序に応じて説明されたが、前記動作の一部が異なる順序で実行されてもよいことを理解されたい。また、一部の動作は、順番ではなく並行して実行されてもよい。
本発明の実施形態は、いずれの特定のプログラミング言語を参照することなく記載されている。理解すべきなのは、本明細書に記載の本発明の実施形態の教示を実現するために、様々なプログラミング言語を使用することができる。
前記明細書において、本発明の実施形態は、既にその具体的な例示的な実施形態を参照しながら記載された。明らかなように、添付された特許請求の範囲に記載された本開示のより広い趣旨及び範囲を逸脱しない限り、本開示に対して様々な変更を行うことができる。それゆえに、本明細書および図面は、限定的な意味でなく、例示的な意味で理解されるべきである。