以下に説明される詳細を参照しながら本開示の様々な実施形態及び態様を説明し、添付図面には上記の各実施形態が示される。以下の説明及び図面は、本開示を説明するためのものであり、本開示を限定するものではないことを理解されたい。本開示の様々な実施形態を完全に把握するために、多数の特定の詳細を説明する。なお、本開示の実施形態を簡潔的に説明するように、周知又は従来技術の詳細について説明していない場合もある。
本明細書において、「一実施形態」又は「実施形態」とは、当該実施形態に基づいて説明された特定の特徴、構造又は特性が本開示の少なくとも一つの実施形態に含まれてもよいと意味する。「一実施形態において」という表現は、本明細書の全体において必ずしも全てが同一の実施形態を指すとは限らない。
いくつかの実施形態によれば、センサーユニットの機能をテストするコンピュータ実施方法は、センサーユニットのテストボードが第1のエミュレートされたセンサーに対応する第1のチャネルを介して第1のエミュレートされたセンサーのデータをセンサーユニットのテストボードに送信することを含む。センサーユニットが正常に動作している場合、センサーユニットはセンサーユニットの時間モジュールから時間値を回復(retrieve)し、第1のエミュレートされたセンサーのデータを時間値とともにセンサーユニットのテストボードに送り返す。一実施形態において、センサーユニットは、所定の規則に従って、受信された第1のエミュレートされたセンサデータを変換することができる。例えば、センサーユニットは、受信された第1のエミュレートされたセンサデータに対してフォーマット変換及び/又はエラーチェックを実行できる。第2のエミュレートされたセンサーのデータは、センサーユニットが受信した第1のエミュレートされたセンサーのデータを変換しない場合の第1のエミュレートされたセンサーのデータ、又は受信した第1のエミュレートされたセンサーのデータを変換した場合のデータを示すことができる。次に、第2のエミュレートされたセンサーのデータをセンサーユニットのテストボードに送り返すことができる。センサーユニットから返された第2のエミュレートされたセンサーのデータ又は第1の時間値から1つ以上のエラーがセンサーユニットのテストボードにより検出されたことに応じて、テスト対象のセンサーユニットの第1のチャネル及び第1のエミュレートされたセンサーのデータに関連付けられた少なくとも1つの第1の失敗表示を表示及び/又は記録する。一実施形態では、1つ以上のエラーを検出することは、センサーユニットのテストボードのチェッカーモジュールによって、センサーユニットから返された第2のエミュレートされたセンサーのデータとセンサーユニットのテストボードからセンサーユニットに送信された第1のエミュレートされたセンサーのデータとが同一であることを検証することを含むことができる。一実施形態では、1つ以上のエラーを検出することは、センサーユニットから返された第2のエミュレートされたセンサーのデータのフォーマットが第1のエミュレートされたセンサーに対応する実際の第1のセンサー(例えば、GPS、LIDAR、カメラなど)のデータフォーマットと一致するか否かを判定することも含むことができる。別の実施形態において、1つ以上のエラーを検出することは、センサーユニットによって生成され、センサーユニットのテストボードによって受信される時間値のフォーマット、及び時間値の範囲のうちの1つ以上を検証することをさらに含むことができる。センサーユニットのテストボード上の第1のエミュレートされたセンサーは、エミュレートされた全地球測位衛星(GPS)のセンサーであり得る。その他のエミュレートされたセンサーには、LIDARのセンサー、RADARのセンサー、慣性測定ユニット(IMU)のセンサー、超音波センサー、全地球航法衛星システム(GNSS)、ロングタームエボリューション(LTE)セルラートランシーバー、カメラ、温度センサー、湿度センサー、圧力センサー、並びに、スロットル位置、ブレーキ位置及びステアリング位置のいずれか/すべてのための位置センサーが含まれ得る。一実施形態において、第2/後続のエミュレートされたセンサーからのエミュレートされた出力が第1及び/又は第2のエミュレートされたセンサーの出力に関連付けられるように、第1のエミュレートされたセンサーの出力は、第2のエミュレートされたセンサー及び1つ以上の後続のセンサーに送信され得る。例えば、エミュレートされたGPSのセンサーの出力は、エミュレートされたLIDARの出力、エミュレートされたカメラの出力などのうち、1つ以上の出力に関連付けられ得る。第2/後続のエミュレートされたセンサーの出力は、少なくとも第2のエミュレートされたセンサーの出力に関連付けられた時間値を介して、第1又は第2のエミュレートされたセンサーの出力に関連付けられ得る。一実施形態において、第3のエミュレートされたセンサーのデータは、センサーユニットのテストボードによって生成され得、LIDARセンサーなどの第2のエミュレートされたセンサー(例えば、LIDARセンサー)に対応する第2のチャネルを介して、テスト対象のセンサーユニットに転送され得る。テスト対象のセンサーユニットは、第2のチャネル経由で第3のエミュレートされたセンサーのデータを受信でき、テスト対象のセンサーユニットは、第2の時間値と、受信された第3のエミュレートされたセンサーのデータとを関連付けることができる。一実施形態において、第2の時間値は、第1の時間値、又はテスト対象のセンサーユニットの時間モジュールから読み取られた新しい時間値であり得る。一実施形態において、センサーユニットは、所定の規則に従って、受信された第3のエミュレートされたセンサーのデータを変換することができる。例えば、センサーユニットは、受信された第3のエミュレートされたセンサーのデータに対してフォーマット変換及び/又はエラーチェックを実行できる。第4のエミュレートされたセンサーのデータは、センサーユニットが受信した第3のエミュレートされたセンサーのデータを変換しない場合の第3のエミュレートされたセンサーのデータ、又は受信した第3のエミュレートされたセンサーのデータを変換した場合のデータを示すことができる。次に、第4のエミュレートされたセンサーのデータをセンサーユニットのテストボードに送り返すことができる。テスト対象のセンサーユニットは、第4のエミュレートされたセンサーのデータと第2の時間値をセンサーユニットのテストボードに送り返すことができる。受信された第4のエミュレートされたセンサーのデータ又は前記第2の時間値から1つ以上のエラーがセンサーユニットのテストボードによって検出されたことに応じて、センサーユニットのテストボードは、前記テスト対象のセンサーユニットの第2のチャネル及び第3のエミュレートされたセンサーのデータに関連付けられる少なくとも1つの第2の失敗表示を表示することができる。任意の数のチャネル及びエミュレートされたセンサーに対して、例えば、テスト対象のセンサーユニット及びセンサーユニットのテストボードの構成に応じて構成することなど、第2のエミュレートされたセンサーに関するプロセスを繰り返すことができる。
いくつかの実施形態によれば、テスト対象のセンサーユニットは、複数のI/Oのチャネル、少なくとも2つのI/Oのインターフェース、及び時間モジュールを含むセンサーユニットである。一実施形態において、ホストコンピューティングシステムは、テスト対象のセンサーユニットの一部であり得る。テスト対象のセンサーユニット上の第1のインターフェイスは、ホストコンピューティングシステムに接続できる。ホストコンピューティングシステムにより、オペレーターはテスト対象のセンサーユニットへのテストを起動、監視、及び記録できる。一実施形態において、ホストコンピューティングシステムは、テスト対象のセンサーユニットの一部を形成することができる。テスト対象のセンサーユニットの第2のインターフェイスは、センサーユニットのテストボードに接続できる。センサーユニットのテストボードは、複数のタイプのセンサーのためのエミュレートされたセンサーのデータを生成し、そのエミュレートされたセンサーのデータの有効性をチェックする機能を含むことができる。センサーユニットのテストボード上の各センサーのエミュレーターについて、センサーユニットのテストボードは、エミュレートされたセンサーの出力を転送し、センサーの出力のフォーマットとコンテンツを検証できる。テスト対象のセンサーユニットにおけるテストソフトウェアは、テスト用のI/Oのチャネルを選択できるように、テスト対象のセンサーユニットを構成できる。一実施形態において、センサーユニットは、特定のI/Oのチャネルに対してエミュレートされたセンサーの出力を提供するために、センサーユニットのテストボードを「ピン(ping)」することができる。一実施形態において、センサーユニットのテストボードは、エミュレートされたセンサーとともに使用するように構成されたI/Oのチャネルを介して、周期的なインターフェースで各センサーのためのエミュレートされたセンサーのデータを連続的に出力できる。例えば、エミュレートされたGPSの出力を生成し、I/Oのチャネル1を介してテスト対象のセンサーユニットに送信できる。エミュレートされたLIDARの出力を生成し、I/Oのチャネル2を介してテスト対象のセンサーユニットに送信できる。例えば、チャネル3を介してエミュレートされたRADARに、チャネル4を介してエミュレートされたIMUに、チャネル5を介してエミュレートされた超音波出力に、チャネル6を介してエミュレートされたGNSSのデータに、チャネル7を介してエミュレートされたカメラのデータに対して、並びにそれぞれが対応する割り当てられた番号のI/Oのチャネルを介して温度センサー、湿度センサー、圧力センサー、及びスロットル、ブレーキ、ステアリングのための車両センサーのうちの1つ以上に対して同じ動作を実行することができる。テスト対象のセンサーユニットの各I/Oのチャネルについて、テスト対象のセンサーユニットは、センサーユニットのテストボードからエミュレートされたセンサーの出力を受信することができる。オプションで、例えば、テスト対象のセンサーユニットにおける時間モジュールから時間値を回復し、それぞれのI/Oのチャネルを介して時間値と受信されたエミュレートされたセンサー出力をセンサーユニットのテストボードに送り返すことができる。テスト対象のセンサーユニットは、ユーザーインターフェースにおける対応するI/Oのチャネルを介してホストコンピューティングシステムに同じデータを送信することもできるため、ホストコンピューティングシステムは、エミュレートされたセンサー及びI/Oのチャネルのための受信されたエミュレートされたテストデータを記録できる。このプロセスは、任意の数の構成済みI/Oのチャネル、センサーユニットのテストボードエミュレーター及び有効性チェッカーに対して繰り返すことができる。
一実施形態において、非一時的コンピュータ可読媒体は、少なくとも1つのハードウェアプロセッサを有する処理システムによって実行されると、上記の機能のいずれかを実行できる実行可能な命令を格納できる。
別の実施形態において、少なくとも1つのハードウェアプロセッサを有する処理システムは、実行可能な命令でプログラムされたメモリに結合され、前記命令は処理システムによって実行されると、上記の機能のいずれかを実行できる。
本明細書で記載されるいくつかの実施形態は、1つ以上のインターフェースを介して呼び出される他のプログラムコードと相互作用するプログラムコードを呼び出す環境において、1つ以上のアプリケーションプログラミングインターフェース(API)を含むことができる。さまざまな種類のパラメーターをさらに含み得るさまざまな関数呼び出し(function calls)、メッセージ又は起動(invocation)は、呼び出しプログラムと呼び出されるコードの間でAPIを介して転送できる。さらに、APIは、APIで定義され、呼び出されたプログラムコードで実装されたデータタイプ又はクラスを使用する能力を、呼び出されるプログラムコードに提供することができる。
図1は、本開示の一実施形態に係る自動運転車両のネットワーク構成を示すブロック図である。図1に示すように、ネットワーク構成100には、ネットワーク102を介して1つ以上のサーバ103~104に通信可能に接続される自動運転車両101が備えられる。一台の自動運転車両のみが示されたが、複数の自動運転車両がネットワーク102を介して互いに接続され、及び/又はサーバ103~104に接続されてもよい。ネットワーク102は、任意のタイプのネットワークであってもよく、例えば、有線又は無線のローカルエリアネットワーク(LAN)、インターネットなどのワイドエリアネットワーク(WAN)、セルラーネットワーク、衛星ネットワーク、又はそれらの組み合わせが挙げられる。サーバ103~104は、任意のタイプのサーバ又はサーバクラスタであってもよく、例えば、Web又はクラウドサーバ、アプリケーションサーバ、バックエンドサーバ、又はそれらの組み合わせが挙げられる。サーバ103~104は、データ解析サーバ、コンテンツサーバ、交通情報サーバ、地図・ポイントオブインタレスト(MPOI)サーバ又は位置サーバなどであってもよい。
自動運転車両とは、運転手からの入力が非常に少ない又はない場合に車両をナビゲートして環境を通過させる自動運転モードに配置可能な車両である。このような自動運転車両は、車両の走行環境に関連する情報を検出するように構成された1つ以上のセンサを有するセンサーシステムを備えていてもよい。前記車両及びその関連コントローラは、検出された情報を使用して前記環境を通過するようにナビゲートする。自動運転車両101は、手動モード、完全自動運転モード、又は部分自動運転モードで走行することができる。
一実施形態では、自動運転車両101には、感知・計画システム110、車両制御システム111、無線通信システム112、ユーザインターフェースシステム113、インフォティメントシステム及びセンサーシステム115が含まれるが、これらに限定されない。自動運転車両101には、一般車両に備えられているいくつかの一般的な構成要素、例えばエンジン、車輪、ステアリングホイール、変速機などが更に備えられてもよい。前記構成要素は、車両制御システム111及び/又は感知・計画システム110により複数種の通信信号及び/又はコマンドを使用して制御可能である。これらの複数種の通信信号及び/又はコマンドは、例えば、加速信号又はコマンド、減速信号又はコマンド、ステアリング信号又はコマンド、ブレーキ信号又はコマンドなどが挙げられる。
構成要素110~115は、インターコネクタ、バス、ネットワーク又はこれらの組み合わせを介して互いに通信可能に接続されることができる。例えば、構成要素110~115は、コントローラエリアネットワーク(CAN)バスを介して互いに通信可能に接続されることができる。CANバスは、ホストコンピュータなしのアプリケーションでマイクロコントローラ及びデバイスが相互に通信できるように設計された車両バス規格である。それは、もともと自動車内の多重電気配線のために設計されたメッセージに基づくプロトコルであるが、他の多くの環境にも用いられる。
ここで図2を参照し、一実施形態において、センサーシステム115は、1つ以上のカメラ211、全地球測位システム(GPS)ユニット212、慣性計測ユニット(IMU)213、レーダーユニット214及び光検出・測距(LIDAR)ユニット215を含むが、それらに限定されない。GPSシステム212は、自動運転車両の位置に関する情報を提供するように動作可能な送受信機を含んでいてもよい。IMUユニット213は、慣性加速度に基づいて自動運転車両の位置及び配向の変化を感知することができる。レーダーユニット214は、無線信号を利用して自動運転車両のローカル環境内のオブジェクトを感知するシステムを表すことができる。いくつかの実施形態において、オブジェクトを感知することに加えて、レーダーユニット214は、更にオブジェクトの速度及び/又は進行方向を感知することができる。LIDARユニット215は、自動運転車両の所在環境内のオブジェクトをレーザで感知することができる。LIDARユニット215は、他のシステム構成要素のほかに、1つ以上のレーザ源、レーザスキャナ及び1つ以上の検出器を更に備えていてもよい。カメラ211は、自動運転車両の周囲の環境の画像を取得するための1つ以上の装置を備えていてもよい。カメラ211は、スチルカメラ及び/又はビデオカメラであってもよい。カメラは、例えば、回転及び/又は傾斜のプラットフォームに取り付けられる機械的に移動可能なものであってもよい。
センサーシステム115は、ソナーセンサ、赤外線センサ、ステアリングセンサ、スロットルセンサ、ブレーキセンサ及びオーディオセンサ(例えば、マイクロホン)などの他のセンサを更に備えることができる。オーディオセンサは、自動運転車両の周囲の環境から音声を取得するように構成されてもよい。ステアリングセンサは、ステアリングホイールの操舵角、車輪の転舵角又はそれらの組み合わせを感知するように構成されてもよい。スロットルセンサ及びブレーキセンサはそれぞれ車両のスロットル位置及びブレーキ位置を感知する。ある場合に、スロットルセンサ及びブレーキセンサは集積型スロットル/ブレーキセンサとして統合されてもよい。
一実施形態において、車両制御システム111はステアリングユニット201、スロットルユニット202(加速ユニットとも呼ばれる)及びブレーキユニット203を含むが、それらに限定されない。ステアリングユニット201は車両の方向又は進行方向を調整するために用いられる。スロットルユニット202はモータ又はエンジンの速度を制御するために用いられ、モータ又はエンジンの速度は更に車両の速度及び加速度を制御するために用いられる。ブレーキユニット203は、車両の車輪又はタイヤを減速させるように摩擦を与えることで、車両を減速させる。なお、図2に示された構成要素は、ハードウェア、ソフトウェア又はそれらの組み合わせで実現されてもよい。
図1を再び参照して、無線通信システム112は、自動運転車両101と、装置、センサー、他の車両などのような外部システムとの通信を可能にする。例えば、無線通信システム112は、直接又は通信ネットワークを介して1つ以上のデバイスと無線通信することができ、例えば、ネットワーク102を介してサーバ103~104と通信することができる。無線通信システム112は、如何なるセルラー通信ネットワーク又は無線ローカルエリアネットワーク(WLAN)、例えばWiFiを使用して他の構成要素又はシステムと通信することができる。無線通信システム112は、例えば赤外線リンク、ブルートゥース(登録商標)などを使用して、デバイス(例えば、乗員のモバイルデバイス、表示装置、車両101内のスピーカ)と直接通信することができる。ユーザインターフェースシステム113は、車両101内に実現された周辺装置の部分であってもよく、例えば、キーボード、タッチスクリーン表示装置、マイクロホン及びスピーカなどを含む。
自動運転車両101の機能のうちの一部又は全部は、特に自動運転モードで動作する場合に、感知・計画システム110により制御されるか、又は管理されることができる。感知・計画システム110は、センサーシステム115、制御システム111、無線通信システム112及び/又はユーザインターフェースシステム113から情報を受信し、受信された情報を処理し、出発地から目的地までのルート又は経路を計画した後に、計画及び制御情報に基づいて車両101を運転するために、必要なハードウェア(例えば、プロセッサ、メモリ、記憶デバイス)並びにソフトウェア(例えば、オペレーティングシステム、計画・ルーティングプログラム)を備える。あるいは、感知・計画システム110は車両制御システム111と一体に統合されてもよい。
例えば、乗員であるユーザは、例えばユーザインターフェースを介して旅程の開始位置及び目的地を指定することができる。感知・計画システム110は旅程に関連するデータを取得する。例えば、感知・計画システム110は、MPOIサーバから位置及びルート情報を取得することができる。前記MPOIサーバは、サーバ103~104の一部であってもよい。位置サーバ(location server)は位置サービスを提供し、MPOIサーバは地図サービス及び特定の位置のPOIを提供する。あるいは、このような位置及びMPOI情報は、感知・計画システム110の永続性記憶装置にローカルキャッシュされてもよい。
自動運転車両101がルートに沿って移動している場合に、感知・計画システム110は交通情報システム又はサーバ(TIS)からリアルタイム交通情報を取得することもできる。なお、サーバ103~104は第三者機関によって操作可能である。あるいは、サーバ103~104の機能は、感知・計画システム110と一体に統合されてもよい。感知・計画システム110は、リアルタイム交通情報、MPOI情報及び位置情報、並びにセンサーシステム115により検出又は感知されたリアルタイムローカル環境データ(例えば、障害物、オブジェクト、付近の車両)に基づいて、所定の目的地まで安全的且つ効率的に到達するために、最適なルートを計画し、且つ計画されたルートに従って例えば制御システム111によって車両101を運転することができる。
サーバ103は、様々なクライアントに対してデータ解析サービスを実行するデータ解析システムであってもよい。一実施形態において、データ解析システム103は、データコレクタ121と、機械学習エンジン122とを備える。データコレクタ121は、様々な車両(自動運転車両又は人間の運転手によって運転される一般車両)から運転統計データ123を収集する。運転統計データ123には、異なる時点で発行された運転コマンド(例えば、スロットルコマンド、ブレーキコマンド及びステアリングコマンド)と、車両のセンサによりキャプチャされた車両の応答(例えば、速度、加速、減速、方向)とを示す情報が含まれる。運転統計データ123には更に、異なる時点における運転環境を記述する情報、例えば、ルート(開始位置及び目的地位置を含む)、MPOI、道路状況、天気状況などが含まれてもよい。
機械学習エンジン122は、運転統計データ123に基づいて、様々な目的に応じてルールセット、アルゴリズム及び/又は予測モデル124を生成するか又は訓練する。その後、アルゴリズム124を自動運転中にリアルタイムで利用するために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は、(例えば、GPSユニット212により)、システム300を含む自動運転車両の現在位置を特定し、ユーザの旅程又はルートに関連する如何なるデータを管理する。測位モジュール301(地図・ルートモジュールとも呼ばれる)は、ユーザの旅程又はルートに関連する如何なるデータを管理する。ユーザは、例えばユーザインターフェースを介してログインして、旅程の開始位置及び目的地を指定することができる。測位モジュール301は、システム300を含む自動運転車両における地図・ルート情報311のような他の構成要素と通信して旅程関連データを取得する。例えば、測位モジュール301は位置サーバと地図・ポイントオブインタレスト(MPOI)サーバから位置及びルート情報を取得することができる。位置サーバは位置サービスを提供し、MPOIサーバは地図サービス及び特定位置のPOIを提供し、これらのサービス及びPOIは、地図・ルート情報311の一部としてキャッシュされることができる。システム300を含む自動運転車両がルートに沿って移動する際に、測位モジュール301は交通情報システム又はサーバからリアルタイム交通情報を取得することもできる。
感知モジュール302は、センサーシステム115により提供されたセンサデータと、測位モジュール301により取得された測位情報とに基づいて、周囲の環境への感知を決定する。感知情報は、一般運転手が運転手により運転されている車両の周囲における感知すべきものを示すことができる。感知とは、例えばオブジェクトの形式で、車線配置、信号機信号、他の車両の相対位置、歩行者、建築物、横断歩道又は他の交通関連標識(例えば、止まれ標識、ゆずれ標識)などを含むことができる。車線構成は、例えば、車線の形状(例えば、直線又は湾曲)、車線の幅、道路内の車線数、一方向車線又は二方向車線、合流車線又は分流車線、退出車線など、1本以上の車線を記述する情報を含む。
感知モジュール302は、1つ以上のカメラにより取り込まれた画像を処理し解析して自動運転車両の環境内におけるオブジェクト及び/又は特徴を認識するために、コンピュータビジョンシステム又はコンピュータビジョンシステムの機能を含むことができる。前記オブジェクトは、交通信号、道路境界線、他の車両、歩行者及び/又は障害物などを含むことができる。コンピュータビジョンシステムは、オブジェクト認識アルゴリズム、映像追跡及び他のコンピュータビジョン技術を使用することができる。いくつかの実施形態において、コンピュータビジョンシステムは、環境地図の描画、オブジェクトの追跡、及びオブジェクトの速度の推定などができる。感知モジュール302は、レーダ及び/又はLIDARのような他のセンサにより提供される他のセンサデータに基づいてオブジェクトを検出することもできる。
各オブジェクトについて、予測モジュール303は、前記状況における前記オブジェクトの挙動を予測する。前記予測は、特定の時点で感知された運転環境の感知データに基づいて地図・ルート情報311と交通ルール312のセットを考慮した上で実行される。例えば、オブジェクトが反対方向に沿った車両で、且つ現在の運転環境に交差点が含まれている場合に、予測モジュール303は当該車両が直進する可能性があるか又は曲がる可能性があるかを予測する。感知データによって交差点に信号機がないことが示された場合、予測モジュール303は、交差点に入る前に当該車両が完全に停止する必要があると予測する可能性がある。当該車両が現在左折専用車線又は右折専用車線にあると感知データにより示された場合に、予測モジュール303は、当該車両がそれぞれ左折又は右折する可能性が高いと予測可能である。
オブジェクトごとに対して、決定モジュール304はオブジェクトをどのように処置するかを決定する。例えば、特定のオブジェクト(例えば、交差ルートにおける他の車両)及びオブジェクトを記述するメタデータ(例えば、速度、方向、曲がり角)について、決定モジュール304は前記オブジェクトと遇うときに如何に対応するか(例えば、追い越し、道譲り、停止、追い抜き)を決定する。決定モジュール304は、永続性記憶装置352に格納可能な、交通ルール又は運転ルール312のようなルールセットに基づいて、このような決定を下すことができる。
ルーティングモジュール307は、出発地から目的地までの1つ以上のルート又は経路を提供するように構成される。例えばユーザから受信した開始位置から目的地位置までの所定の旅程について、ルーティングモジュール307は、地図・ルート情報311を取得し、開始位置から目的地位置までの全ての走行可能なルート又は経路を確定する。ルーティングモジュール307は、開始位置から目的地位置が確定されたルートのそれぞれについて、基準線を地形図の形で生成することができる。基準線とは、他の車両、障害物又は交通状況などからの如何なる干渉を受けていない理想的なルート又は経路をいう。つまり、道路に他の車両、歩行者又は障害物がない場合、ADVは基準線に精確的に又は密接的に従うべきである。そして、地形図を決定モジュール304及び/又は計画モジュール305に提供することができる。決定モジュール304及び/又は計画モジュール305は、他のモジュールにより提供された他のデータ(例えば、測位モジュール301からの交通状况、感知モジュール302により感知された運転環境及び予測モジュール303により予測された交通状况)に応じて、全ての走行可能なルートを調べて最適ルートの一つを選択及び修正する。ある時点における特定の運転環境に応じて、ADVを制御するための実際の経路又はルートは、ルーティングモジュール307によって提供された基準線に近いか又は異なっていてもよい。
感知されたオブジェクトのそれぞれに対する決定に基づいて、計画モジュール305は、ルーティングモジュール307によって提供された基準線をベースとし、自動運転車両に対して経路又はルート並びに運転パラメータ(例えば、距離、速度及び/又は曲がり角)を計画する。つまり、特定のオブジェクトについて、決定モジュール304はオブジェクトに対して何をするかを決定し、計画モジュール305はどのようにするかを確定する。例えば、特定のオブジェクトについて、決定モジュール304は、前記オブジェクトを追い抜くかを決定することができ、計画モジュール305は前記オブジェクトを左側から追い抜くか又は右側から追い抜くかを判定することができる。計画及び制御データは、計画モジュール305により生成され、システム300を含む車両が次の移動周期(例えば、次のルート/経路区間)にはどのように移動するかを記述する情報を含む。例えば、計画及び制御データは、システム300を含む車両が30マイル/時間(mph)の速度で10メートル移動し、その後に25mphの速度で右側の車線に変更することを示すことができる。
制御モジュール306は、計画及び制御データに基づいて、計画及び制御データにより定義されたルート又は経路に応じて適当なコマンド若しくは信号を車両制御システム111に送信することにより自動運転車両を制御及び運転する。前記計画及び制御データは、経路又はルートに沿って異なる時点で適切な車両構成又は運転パラメータ(例えば、スロットルコマンド、ブレーキコマンド、及びステアリングコマンド)を使用して、車両をルート又は経路の第1の点から第2の点まで運転するのに十分な情報を含む。
一実施形態において、計画段階は、複数の計画周期(運転周期とも呼ばれる)で、例えば、100ミリ秒(ms)の時間間隔で実行される。計画周期又は運転周期ごとについて、計画及び制御データに基づいて1つ以上の制御コマンドを発行する。すなわち、100msごとに、計画モジュール305は、次のルート区間又は経路区間(例えば、目標位置及びADVが目標位置に到着するのに必要な時間を含む)を計画する。あるいは、計画モジュール305は、具体的な速度、方向、及び/又は操舵角などを更に指定することができる。一実施形態において、計画モジュール305は、次の所定期間(例えば、5秒)のルートセグメント又は経路区間を計画する。各計画周期について、計画モジュール305は前の周期において計画された目標位置に基づいて現在の周期(例えば、次の5秒)のための目標位置を計画する。次に、制御モジュール306は、現在の周期における計画及び制御データに基づいて1つ以上の制御コマンド(例えば、スロットル制御コマンド、ブレーキ制御コマンド、ステアリング制御コマンド)を生成する。
なお、決定モジュール304及び計画モジュール305は、集積モジュールとして統合されてもよい。決定モジュール304/計画モジュール305は、自動運転車両の運転経路を決定するためのナビゲーションシステム又はナビゲーションシステムの機能を備えていてもよい。例えば、ナビゲーションシステムは、自動運転車両が最終的な目的地に通じる走行車線に基づく経路に沿って進行すると共に感知された障害物を実質的に回避するように、自動運転車両を経路に沿って移動させることを実現するための一連の速度及び進行方向を決定することができる。目的地は、ユーザインターフェースシステム113を経由して行われたユーザ入力によって設定されることができる。ナビゲーションシステムは、自動運転車両が走行していると同時に運転経路を動的に更新することができる。ナビゲーションシステムは、自動運転車両のための運転経路を決定するために、GPSシステム及び1つ以上の地図からのデータを統合することができる。
センサーシステム115には、センサーシステム115内の複数のセンサーのセンサーのデータを受信するための1つ以上の入出力(I/O)のチャネルを含むセンサーユニットが統合されることができる。センサーのデータは、感知・計画システム110に提供され得る。一実施形態において、いくつかのセンサーのデータは、制御システム111、無線通信システム112、及びユーザインターフェースシステム113のうちの1つ以上から収集されるか、又は制御システム111、無線通信システム112、及びユーザインターフェースシステム113のうちの1つ以上に提供され得る。センサーユニットのテストボードは、センサーユニットのテストに使用でき、該センサーユニットのテストボードは、少なくとも上記のセンサーをエミュレートし、エミュレートされたセンサーのデータをセンサーユニットに送信し、センサーユニットは、時間値をセンサーのデータに追加し、検証のためにセンサーのデータをセンサーユニットのテストボードに送り返す。一実施形態では、センサーユニットの試験中に、センサーユニットは、1つ以上のチャネルにおけるエミュレートされたセンサーのデータを自動運転車両のホストコンピューティングシステムに送信することもできる。
ステアリングユニット201、スロットルユニット202、及びブレーキユニット203は、センサーシステム115の集積回路基板(「センサーユニット」)によって受信され得るセンサー入力をセンサーシステム115に提供することができる。センサーユニットは、センサー出力(ステアリングユニット201、スロットルユニット202、及びブレーキユニット203からの位置出力を含む)をエミュレートするように構成されたセンサーユニットのテストボードを使用して工場でテストされることができる。
無線通信システム112は、センサーシステム115の集積回路基板(「センサーユニット」)によって受信され得るセンサー入力をセンサーシステム115に提供することができる。センサーユニットは、センサー出力(無線通信システム112からの通信出力を含む)をエミュレートするように構成されたセンサーユニットのテストボードを使用して工場でテストされることができる。
図4は、一実施形態に係る自動運転のためのシステムアーキテクチャ400を示すブロック図である。システムアーキテクチャ400は、図3A及び図3Bに示すような自動運転システムのシステムアーキテクチャを表すことができる。図4を参照すると、システムアーキテクチャ400は、アプリケーション層401、計画・制御(PNC)層402、感知層403、ドライバ層404、ファームウェア層405及びハードウェア層406を含むが、それらに限定されない。アプリケーション層401は、例えばユーザインターフェースシステム113に関連付けられる機能のような、自動運転車両のユーザ又は乗員と対話するユーザインターフェース又は構成アプリケーションを含むことができる。PNC層402は、少なくとも計画モジュール305及び制御モジュール306の機能を含むことができる。感知層403は、少なくとも感知モジュール302の機能を含むことができる。一実施形態において、予測モジュール303及び/又は決定モジュール304の機能を含む付加層がある。あるいは、このような機能は、PNC層402及び/又は感知層403に含まれてもよい。システムアーキテクチャ400は、ドライバ層404、ファームウェア層405、及びハードウェア層406をさらに含む。ファームウェア層405は、フィールドプログラマブルゲートアレイ(FPGA)で実施可能な少なくともセンサーシステム115の機能を表すことができる。ハードウェア層406は、制御システム111のような自動運転車両のハードウェアを表すことができる。層401~層403は、デバイスドライバ層404を介してファームウェア層405及びハードウェア層406と通信することができる。
図5Aは、本開示の一実施形態に係るセンサーユニット500の一例を示すブロック図である。図5Aを参照すると、センサーシステム115は、ホストシステム110に接続されるセンサーユニット500と複数のセンサーと、を備える。センサーユニット500は、センサーユニット500の製造テストを補助するために、センサーユニットのテストボード590に結合され得る。ホストシステム110は、上述したような計画・制御システムを表し、計画・制御システムは図3A及び図3Bに示されるモジュールの少なくとも一部を含み得る。一実施形態において、ホストシステム110は、センサーシステム115に統合され得る。ホストシステム110は、製造テストオペレータによって、センサーユニットのテストボード590を利用するセンサーユニット500の製造テストの実行に使用されることもできる。代わりに、又は、追加的に、モニターシステム594を使用して、センサーユニット500の製造テストを補助することができる。ホストシステム110及びモニターシステム594は、図11を参照して以下に説明するハードウェアを含み得る。センサーユニット500は、製造テストのためのセンサーユニット500を構成するセンサーユニットテストソフトウェア593を含み得る。
センサーユニット500は、FPGAデバイス又は特定用途向け集積回路(ASIC)デバイスの形態で実現され得る。一実施形態において、センサーユニット500は、特に、1つ以上のセンサーのデータ処理モジュール501(単にセンサー処理モジュールとも呼ばれる)、データ転送モジュール502、及びセンサー制御モジュール又はロジック503を備える。モジュール501~503は、センサーインターフェース504を介してセンサーと通信することができ、ホストインターフェース505を介してホストシステム110と通信することができる。任意選択で、処理用のデータをバッファリングするために内部又は外部バッファ506を利用することができる。
一実施形態において、受信経路又は上流方向に関して、センサー処理モジュール501は、センサーインターフェース504を介してセンサーからセンサーのデータを受信して処理(例えば、フォーマット変換、エラー検査)するように構成され、センサーのデータはバッファ506に一時的に格納可能である。データ転送モジュール502は、ホストインターフェース505と互換性のある通信プロトコルを使用して処理済みデータをホストシステム110に転送するように構成される。同様に、転送経路又は下流方向に関して、データ転送モジュール502は、ホストシステム110からデータ又はコマンドを受信するように構成される。次いで、前記データは、センサー処理モジュール501によって、対応するセンサと互換性のあるフォーマットに処理される。次いで、処理済みデータはセンサーに送信される。
一実施形態において、センサー制御モジュール又はロジック503は、ホストインターフェース505を介してホストシステム(例えば、感知モジュール302)から受信したコマンドに応答して、センサーの特定の動作(例えば、センサーのデータをキャプチャする起動タイミング)を制御するように構成される。ホストシステム110は、任意の時点で車両の周囲の運転環境を感知するためにセンサーのデータを利用可能にするように、センサーのデータを協調的及び/又は同期的にキャプチャするようにセンサーを構成することができる。
センサーインターフェース504は、イーサネットインターフェース、ユニバーサルシリアルバス(USB)インターフェース、ロングタームエボリューション(LTE)又はセルラーインターフェース、WiFiインターフェース、GPSインターフェース、カメラインターフェース、CANインターフェース、シリアル(例えば、ユニバーサル非同期送受信機又はUART)インターフェース、加入者識別モジュール(SIM)カードインターフェース、及びその他の汎用入出力(GPIO)インターフェースのうちの1つ以上を含み得る。ホストインターフェース505は、PCIエクスプレス(PCI express又はPCIe)インターフェースのような任意の高速又は高帯域幅インターフェースであり得る。センサーは、自動運転車両で利用される様々なセンサーを含むことができ、例えば、カメラ、LIDARデバイス、RADARデバイス、GPS受信機、IMU、超音波センサー、全地球航法衛星システム(GNSS)受信機、LTE又はセルラーSIMカード、車両センサー(例えば、スロットルセンサー、ブレーキセンサー、ステアリングセンサー)及びシステムセンサー(例えば、温度センサー、湿度センサー、圧力センサー)などが挙げられる。
例えば、カメラは、イーサネットインターフェース又はGPIOインターフェースを介して結合(coupled)されることができる。GPSのセンサーは、USBインターフェース又は特定のGPSインターフェイスを介して結合されることができる。車両センサーはCANインターフェースを介して結合されることができる。RADARセンサー又は超音波センサーは、GPIOインターフェースを介して結合されることができる。LIDARデバイスは、イーサネットインターフェイスを介して結合されることができる。外部のSIMモジュールはLTEインターフェースを介して結合されることができる。同様に、内部SIMモジュールは、センサーユニット500のSIMソケットに挿入可能である。UARTなどのシリアルインターフェースは、デバッグ目的でコンソールシステム(console system)と結合されることができる。
エミュレートされたセンサー591は、図2を参照して上述したセンサー115のセンサー211~215と同様の機能を提供する。なお、エミュレートされたセンサ591は、様々な販売業者又は供給業者によって提供される任意のタイプのセンサーとすることができる。センサー処理モジュール501は、異なるタイプのセンサー並びにそれらの対応するデータフォーマット及び通信プロトコルを処理するように構成される。一実施形態によれば、エミュレートされたセンサー591のそれぞれは、センサーのデータを処理し、ホストシステム110と対応するセンサーとの間で処理済みセンサーのデータを転送するための特定のチャネルに関連付けられる。各チャネルは、図5Bに示すように、対応するセンサーのデータ及びプロトコルを処理するように構成又はプログラムされた特定のセンサー処理モジュール及び特定のデータ転送モジュールを備える。
ここで図5Bを参照すると、センサー処理モジュール501A~501Cは具体的にセンサーユニット500の製造テスト中に、それぞれセンサーユニットのテストボード590のエミュレートされたセンサー591A~591Cから取得されたセンサーのデータを処理するように構成される。センサーユニット500がADV100に統合されるとき、該センサーユニットは、エミュレートされたセンサー591A~591Cに対応する実際の実世界のセンサーに結合される。なお、エミュレートされたセンサー591A~591Cは、同じタイプ又は異なるタイプのセンサーであってもよい。センサー処理モジュール501A~501Cは、異なるタイプのセンサーに対して異なるセンサープロセスを処理するように構成されることができる(例えば、ソフトウェア構成可能である)。例えば、エミュレートされたセンサー591Aがカメラである場合、処理モジュール501Aは、カメラ591Aによってキャプチャされた画像を表す特定の画素データに対して画素処理動作を行うように構成され得る。同様に、エミュレートされたセンサー591AがLIDARデバイスである場合、処理モジュール501Aは、特にLIDARデータを処理するように構成される。言い換えると、一実施形態によれば、特定のタイプの特定のセンサに応じて、その対応する処理モジュールは、センサーのデータのタイプに対応する特定のプロセス又は方法を使用して対応するセンサーのデータを処理するように構成され得る。
同様に、異なるタイプのセンサーのデータが異なる速度又はタイミング要件を必要とする異なるサイズ又は感度を有する可能性があるため、データ転送モジュール502A~502Cは、異なるモードで動作するように構成され得る。一実施形態によれば、データ転送モジュール502A~502Cのそれぞれは、低遅延モード、高帯域幅モード、及びメモリモード(固定メモリモードとも呼ばれる)のうちの1つのモードで動作するように構成され得る。
一実施形態によれば、低遅延モードで動作しているとき、データ転送モジュール(例えば、データ転送モジュール502)は、センサーから受信したセンサーのデータを遅延伴わずに又は最小遅延で可能な限り早くホストシステムに送信するように構成される。センサーのデータの一部は、タイミングの点で非常に敏感で、できるだけ早く処理する必要がある。そのようなセンサーのデータの例としては、車速、加速度、操舵角などのような車両状態を含む。
一実施形態によれば、高帯域幅モードで動作しているとき、データ転送モジュール(例えば、データ転送モジュール502)は、センサーから受信したセンサーのデータを所定の量まで累積するように構成されるが、依然としてデータ転送モジュールとホストシステム110との間の接続の帯域幅内にある。次いで、累積されたセンサーのデータは、データ転送モジュールとホストシステム110との間の接続の帯域幅を最大するバッチ(batch)でホストシステム110に転送される。通常、高帯域幅モードは、大量のセンサーのデータを生成するセンサーに利用される。そのようなセンサーのデータの例としては、カメラの画素データが挙げられる。
一実施形態によれば、メモリモードで動作するとき、データ転送モジュールは、センサーから受信したセンサーのデータをホストシステム110の共有メモリページと同様なマップメモリのメモリ位置に直接書き込むように構成される。メモリモードを使用して転送されるセンサーのデータの例には、温度、ファン速度などのシステムステータスデータが含まれる。
同様に、各チャネルは、対応するセンサーの動作を制御又はトリガーするように構成されたセンサー制御モジュール503などの特定のセンサー制御モジュールに関連付けることができる。時間モジュール520は、タイムスタンプなどの時間サービスを、チャネルのセンサー及びその対応するセンサー処理モジュール、センサー制御モジュール、及び/又はデータ転送モジュールに提供するために、チャネルのそれぞれにおけるコンポーネントに結合される。
一実施形態によれば、各データ転送モジュールは、送信(TX)モジュール及び受信(RX)モジュールを含む。TXモジュールは、データ又はコマンドをホストシステム110からセンサーへ転送する役割を果たす。RXモジュールは、センサーからセンサーのデータを受信し、受信したセンサーのデータをホストシステム110に送信する役割を果たす。一実施形態によれば、データ及び/又はコマンドをセンサーに送信する要求に応じて、TXモジュールは、ホストシステムによってセットアップされたTX記述子バッファを指すポインタを要求し、受信する。前記ポインタは、TX記述子バッファー情報の一部として格納され得る。記述子バッファ情報は、ホストシステム110のホストシステムメモリにマッピングされたTXバッファを記述するメタデータを含む。マッピングされたメモリ領域は、センサーに送信されるべきデータ及び/又はコマンドを格納するように構成される。一実施形態において、TX記述子は、1つ以上のメモリブロックエントリを含む。各メモリブロックエントリには、メモリブロックの開始アドレスとメモリブロックのサイズを指定する情報が含まれている。送信されるべきデータは、バッファ506に一時的に格納されてもよく、前記データは、対応するセンサー処理モジュールによってさらに処理されてもよい。あるいは、センサー処理モジュールは、記述子バッファーを介して、マッピングされたホストメモリからのデータを直接処理できる。
一実施形態によれば、センサーから生成されたセンサーのデータがあり、対応するセンサー処理モジュールによって処理され得ることを示す信号が受信されると、RXモジュールは、センサーから生成されたデータを受信するために割り当てられるメモリページを要求するリクエストをホストシステム110に送信する。次に、RXモジュールは、ホストシステム110からRXバッファテーブルを受信する。RXバッファテーブルは、複数のレベル(例えば、Nレベル)のマッピングテーブルを含むことができる。一実施形態において、トップレベルバッファテーブルはRXページディレクトリテーブルを含む。一実施形態において、RXページディレクトリテーブルは、1つ以上のページテーブルエントリを含む。各ページテーブルエントリは、特定のページテーブル(例えば、次のレベルのテーブル)のメモリアドレスを格納する。各ページテーブルエントリは、ホストシステム110のホストメモリのメモリページ(例えば、次のレベルのテーブルとしての固定メモリページ)の開始アドレスを指定する情報を含む。ホストシステム110のホストメモリのメモリページと、トップレベルテーブルとの間にNレベルのリンクテーブルがあり得る。各親レベルテーブルは、階層構造で子レベルテーブルを参照するアドレス又はリンクを含む。
センサーユニットテストソフトウェア593が製造テストモードでセンサーユニット500を構成するとき、センサーユニット500は、テストするためにセンサーインターフェース504のI/Oのチャネルを選択することができる。選択されたI/Oのチャネル(例えば、I/Oのチャネル1)は、エミュレートされたセンサー591Aなどの特定のエミュレートされたセンサーに関連付けられることができる。一実施形態では、エミュレートされたセンサー591Aは、GPSセンサーであり得る。一実施形態では、エミュレートされたセンサー591A~591Cがエミュレートされたセンサー出力データを生成して前記エミュレートされたセンサー出力データを選択されたI/Oのチャネルを介してセンサーユニット500に送信するために、センサーユニット500は、選択されたI/Oのチャネルに関連付けられたエミュレートされたセンサー591A~591Cを「ピン(ping)」することができる。センサーユニットのテストボード590はタイマーを設定できる。前記タイマーは、センサーユニット500が選択されたI/Oのチャネルにおいてセンサーユニットのテストボード590へ応答できないと判断される前に、センサーユニットのテストボード590が選択されたI/Oのチャネルにおいてセンサーユニット500からの応答を待つ(「リッスンする」)時間を示す。タイムアウトが発生した場合、センサーユニットのテストボード590は、センサーユニット500が選択されたI/Oのチャネルのテストに失敗したことを示す視覚表示(例えば、センサーユニットのテストボード上のLEDを赤に設定)を設定できる。応答時間の間、センサーユニット500は、選択されたI/Oのチャネルを介してエミュレートされたセンサー出力を受信することができる。一実施形態において、センサーユニットは、時間モジュール520から時間値を回復することができる。次いで、センサーユニット500は、選択されたI/Oのチャネルを介してセンサーユニットのテストボード590から受信したエミュレートされたセンサーのデータを時間値とともにセンサーユニットのテストボード590に送り返すことができる。一実施形態では、センサーユニット500は、ロギングのために、センサーユニットのテストボードから受信したエミュレートされたセンサーのデータをホストシステム110及び/又はモニタシステム594にも送信するように構成することができる。次に、センサーユニットのテストボード590は、選択されたI/Oのチャネルを介して、エミュレートされたセンサーのデータと時間値をセンサーユニット500から受信でき、センサーユニットのテストボード590は、受信したデータの有効性検査を実行して、センサーユニット500が有効なデータを転送しているか、それによってセンサーユニット500が適切に機能しているかどうかを判定する。
一実施形態では、各エミュレートされたセンサーは、エミュレートされているセンサーのタイプに適した異なるフォーマットのデータを生成する。従って、各エミュレートされたセンサーには、特定のエミュレートされたセンサー591A~591Cに関連付けられた有効性チェッカーがある。例えば、エミュレートされたGPS信号のための有効性チェッカーは、GPSデータの有効なフォーマット、GPSデータのサブフィールドの有効な範囲、有効なチェックサム又はその他のデータ転送の有効性検査方法を検査できる。
エミュレートされたLIDARのセンサーの場合、データは、ヘッダーブロック、可変長データレコード、ポイントデータレコード、及び拡張可変長レコードを含み得る共通Lidarデータ交換フォーマット(Common Lidar Data Exchange Format,LAS、例えばLAS仕様1.4-R13、2013年7月15日)に従う場合に有効であり得る。生データであるLIDARのセンサーのデータは、メーカーによって異なる場合があり、タイム・オブ・フライト値を含めることができ、さらにピッチ(pitch)、ヨー(yaw)、サイドライン(sideline)の歪みを含めることができる。
エミュレートされたRADARのセンサーについては、データがユーロコントロールアステリックスフォーマットに従う場合、前記データは有効であり得る。有効性は、センサーのデータのサブフィールドの有効範囲値に基づいて決定することもできる。
エミュレートされた慣性測定ユニット(IMU)のセンサの場合、IMUデータのサブフィールドが、ピッチ(pitch)、ロール(roll)、及びヨー(yaw)の値を含むADV100の妥当な値の範囲内にある場合、センサーのデータは有効であり得る。
カメラデータを生成するエミュレートされたセンサーの場合、データが有効なカメラ画像ファイルフォーマット(CIFF)又はCR2(例えば、Canon(R)によるもの)に従う場合、データは有効であり得る。エミュレートされたカメラのセンサーのデータは、JPG、JPEG、TIFF、PNG、又はその他のファイルフォーマットなどの認識可能なファイルフォーマットであってもよい。エミュレートされたセンサーのデータの有効性チェッカーはメーカー固有であってもよく、エミュレートされたセンサー有効性チェッカー内で構成されてもよい。
エミュレートされた車両のセンサーのデータ(例えば、スロットル位置、ブレーキ位置、及びステアリング位置)については、施されたブレーキ又はスロットルの割合(0~100%)、施されたステアリング入力の量(0~100%)、左向き又は右向き、又はその他の形式など、独自の形式に従って有効性を検査できる。
エミュレートされた温度のセンサー、湿度センサー、及び圧力センサーの場合、出力(例えば、センサーのアナログ出力値)から実際の値への如何なる既知のマッピングにより、データは、湿度の割合、温度の値、圧力のポンド数のマッピングを使用して検証でき、それから範囲が妥当であるか否かを検査する。例えば、湿度が100%を超えると無効になる場合がある。150oFを超える温度は無効である可能性がある。約50PSI(毎平方インチ当たりポンド)の圧力は無効である可能性がある。
センサーユニットのテストボード590が応答のためのタイマー内にエミュレートされたセンサーのデータを受信し、且つ受信したデータが有効である場合に、例えば、緑色の表示のLEDを点灯させることで、センサーユニット500が選択されたI/Oのチャネルにおいてテストに成功したことを示すように視覚表示を設定できる。それ以外の場合、例えば、赤色の表示のLEDを点灯させることで、視覚表示に失敗を示すことができる。一実施形態では、少なくとも、例えば、第1のエミュレートされたセンサー(例えば、エミュレートされたGPS)に対応する第1の選択されたI/Oのチャネルについて、センサーユニットのテストボード590は、第1の選択されたI/Oのチャネルのエミュレートされたセンサー出力データと、センサーユニット500から受信した時間値とを、1つ以上の他のエミュレートされたセンサー591B~591Cに複製できる。エミュレートされたセンサー591B~591Cの有効性チェッカーは、エミュレートされたセンサー591Aの複製データを、I/Oのチャネル2~I/OのチャネルN(ここで、Nはセンサーユニットのテストボード590でテストするべき構成済みI/Oのチャネルの数である)についてセンサーユニット500から受信したエミュレートされたセンサーのデータと時間値の追加の有効性チェックとして使用できる。センサーユニットのテストボード590に構成されたすべてのI/Oのチャネルがテストされた後、センサーユニット500のセンサーのI/Oのチャネル1~I/OのチャネルNのいずれかが失敗した場合、視覚表示(例えば、赤色のLEDを点灯させること)によってセンサーユニット500全体がテストに失敗したことを示すことができる。センサーユニット500のいずれのI/Oのチャネルもテストに失敗しなかった場合、視覚表示(例えば、緑色のLEDを点灯させること)によってセンサーユニット500全体がテストに成功したことを示すことができる。代わりに、又は、追加的に、センサーユニット500全体がテストに成功したか又は失敗したかを、ホストシステム110及び/又はモニターシステム594上に示すことができる。
図6は、一実施形態に係る時間モジュールの一例を示すブロック図である。図6を参照すると、時間モジュール520は、時間ジェネレータ601、タイムスタンプモジュール602、タイムソースセレクタ(time source selector)603、及び時間回復モジュール604を含むが、これらに限定されない。時間ジェネレータ601は、時間ソースに基づいて時間を生成するように構成され、前記時間は、センサー処理モジュールやセンサー制御モジュールなど、他のコンポーネントによって利用できる。タイムスタンプモジュール602は、時間ジェネレータ601によって提供される時間に基づいて、タイムスタンプを生成して、他のコンポーネントに提供するように構成される。主な時間ソースが利用できない場合、タイムソースセレクタ603は、代替時間ソースを選択して時間を生成するように構成される。利用可能な時間ソースがない場合、時間回復モジュール604は、時間ソースが利用可能になるとき、時間を回復するように構成される。
図7は、一実施形態に係る時間ジェネレータの一例を示すブロック図である。図7を参照すると、時間ジェネレータ601は、モニターモジュール755、調整モジュール757、ミリセカンドジェネレータ703、マイクロセカンドジェネレータ705、ナノセカンドジェネレータ707、デマルチプレクサ709、及びコンフィギュレーション711を含むことができる。ミリセカンドジェネレータ703、マイクロセカンドジェネレータ705、及びナノセカンドジェネレーター707は、ローカルタイマー753のオシレーターに基づいて、それぞれミリ秒、マイクロ秒、ナノ秒の発振サイクル(例えば、3つの異なる粒度のオシレーターカウンターなど)を生成できる。コンフィギュレーション711は、ミリセカンドジェネレータ703、マイクロセカンドジェネレータ705及びナノセカンドジェネレータ707の出力のうちのどれを、モニターモジュール755にルーティングするかを選択する選択信号を構成することができる。モニターモジュール755は、生成された発振サイクルを監視して、これらのサイクルをカウントすることができる。調整モジュール757は、ローカルタイマー753をGPSセンサー751からのPPS信号と同期させるようにカウントを調整(又はカウント表現を修正)することができる。一実施形態において、コンフィギュレーション711のための選択信号は、センサーユニット500のユーザ又はフィードバックループ内のモニターモジュール755/調整モジュール757によってプログラムすることができる。例えば、ローカルタイマー753が比較的正確であると判断された場合、ユーザはミリセカンドジェネレーターを無効にするように構成できる。
使用される水晶発振器のタイプによって、ローカルタイマー753は、0.1ppmから100ppmの範囲の精度を有することができ、例えば、あらゆるパルスは0.1μsから100μsだけオフセットすることができ、GPSセンサー751からのパルス毎秒(PPS)信号の精度が、0.1ppm未満、又はパルスごとに毎秒の偏差が0.1μs未満である。0.1ppmのGPS PPS信号の場合、GPSセンサー751から受信したPPS信号は、毎秒999,999.9~1,000,000.1μsの連続パルスをアサート(assert)でき、通常の100ppmローカルタイマー753は、毎秒999,900~1,000,100μsの連続パルスをアサートできる。さらに、ローカルタイマー753によって使用される水晶発振器ICの周囲温度の変化により、ローカルタイマー753のパルスの偏差の変動は、リアルタイムで変化することが可能である。従って、目標は、GPSセンサー751に一致するようにローカルタイマー753をリアルタイムで調整又は同期することである。
ローカルタイマー753をGPSセンサー751に同期させるために、一実施形態において、GPSセンサー751は、GPSパルス信号(PPS)を受信する。ここで、該GPSパルス信号は、衛星によって特定の精度(例えば、0.1ppm未満)で空間内でその信号をブロードキャスティングすることで送信されるRF信号である。いくつかの実施形態において、GPSセンサー751は、第1のGPS衛星からPPS信号を受信し、その後、第1のGPS衛星が範囲外にある場合、第2のGPS衛星からのPPS信号を受信する。GPS衛星が独自の正確な時間測定を使用し、各衛星には独自の原子時計セットが搭載されているため、GPS衛星からのPPS信号は1つ以上の基準タイマーとして考えられる。ただし、あらゆるGPS PPS信号に一致するようにローカルタイマー753がリアルタイムで調整されたため、2つ以上の異なるGPS衛星のGPS PPS信号があると、ローカルタイマー753は以下でさらに説明するように、リアルタイムでスムーズに同期されることができるため、あらゆる時間差は問題にならない。
GPS PPS信号が受信されると、モニターモジュール755は、PPS信号の時間及びローカルタイマー753の時間のあらゆるオフセットを確定でき、確定されたオフセットに基づいて第2のローカルリアルタイムクロック/タイマーを生成できる。例えば、PPS信号に基づいて、最初にGPS米国海洋電子機器協会(National Marine Electronics Association,NMEA)データ情報によって最大数秒までの正確な日付と時刻の情報(協定世界時又はUTCフォーマット)を提供できる。次に、一実施形態において、ミリセカンドジェネレータ703は、ローカルタイマー753を使用して、1msに近い発振カウント(例えば、第1の粒度)を生成することができる。ローカルタイマー753の信号周波数を分周するために、分周器回路を使用して前記1msに近い発振カウントを生成することができる。次いで、モニターモジュール755は、1秒のGPS PPS信号時間間隔について(例えば、ローカルタイマー753はGPS PPS信号より約1ms遅延する)、ミリセカンドジェネレータ703からのサイクル数(例えば、999サイクル)を検出又はカウントすることができる。ミリセカンドジェネレータ703がGPS PPSより遅延しているため、一実施形態において、調整モジュール757は、ミリセカンドジェネレータの出力を、発振ごとに1.001msで表すように調整する。次に、ミリセカンドジェネレータ703は、1sごとに次の1000個の発振表示:0.000、1.001、2.002、…、999.999、及び1001msを生成する。従って、ミリセカンドジェネレータ703からの999番目のサイクルは999.999msまでカウントされる。
次に、マイクロセカンドジェネレータ705は、ローカルタイマー753を使用して、1μsに近い発振カウントを生成することができる。ローカルタイマー753の信号周波数を分周するために、第2の分周器回路を使用して1μsに近い発振カウント(例えば、第2の粒度)を生成することができる。モニターモジュール755は、マイクロセカンドジェネレータ705から998サイクル、又は1msのGPS PPS時間間隔に対して2μsのオフセットをカウントすることができる。同様に、マイクロセカンドジェネレータ705がGPS PPSより遅延しているため、調整モジュール757はマイクロセカンドジェネレータの出力を、発振ごとに1.002μsで表すように調整する。次に、マイクロセカンドジェネレータ705は、1msごとに次の1000個の振動表示:0.000、1.002、2.004、…、999.996、1000.998、及び1002μsを生成する。従って、998番目のサイクルは999.996μsまでカウントされる。
次に、ナノセカンドジェネレータ707は、ローカルタイマー753を使用して、1nsに近い発振カウントを生成することができる。ローカルタイマー753の信号周波数を分周するために、第3の分周器回路を使用して1nsに近い発振カウント(例えば、第3の粒度)を生成することができる。モニターモジュール755は、ナノセカンドジェネレータ707から997サイクルをカウントするか、又は1μsのGPS PPS信号時間間隔に対して3nsのオフセットを検出することができる。同様に、調整モジュール757は、ナノセカンドジェネレータの出力を、発振ごとに1.003nsで表すように調整することができる。次に、ナノセカンドジェネレータ707は、1μsごとに次の1000個の振動表示:0.000、1.003、2.006、…、999.991、1000.994、1001.997、及び1003nsを生成する。従って、ナノセカンドジェネレータ707からの997番目のサイクルは999.991nsまでカウントされる。このようにして、いずれのジェネレータの出力(例えば、表示など)又はそれらの組み合わせにより、リアルタイムで時間を高精度に生成できる。次いで、高精度に生成された時間をセンサーユニット500のセンサーに提供することができる。上記の例では、ナノセカンドジェネレータ707を使用して生成された時間は、最大1nsの精度を有する。なお、3つのジェネレータ(例えば、3つの粒度)について説明したが、任意の数のジェネレータと粒度を使用して、時間を高精度に生成できる。
いくつかの実施形態において、コンフィギュレーション711は、デマルチプレクサ709を介して、ジェネレータ703~707のいずれかを選択的に有効化/無効化することができる。該選択により、いずれのジェネレータのオン/オフを切り替えることができる。出力のサブセットのみが必要な場合に、該選択により、ジェネレータから出力されたサブセット(例えば、ナノセカンドジェネレータのみ)を選択する。別の実施形態において、モニターモジュール755は、異なる粒度のオフセットをバッファリング(例えば、保存)し、GPSセンサー信号が失われた場合、GPSセンサー信号が再び取得されるまで、第1、第2、及び第3のカウント値(例えば、発振ごとの値表示)を維持する。
図8は、一実施形態に係るタイムスタンプモジュールの一例を示すブロック図である。図8を参照すると、タイムスタンプ同期ハブデバイスとも呼ばれるタイムスタンプモジュール602は、時間生成又はGPSパルスユニット801、タイムスタンプフォーマットコンバータ803、TXタイムスタンプジェネレータ811~813、及びRXタイムスタンプジェネレータ821~823を含む。なお、これらのモジュール又はコンポーネントの一部又はすべてを、より少ない数のモジュールに統合できる。タイムスタンプ同期ハブデバイス602は、多数のセンサー(例えば、S1、S2、及びS3)に結合されて、センサーにTX/RX及び/又はトリガータイムスタンプを提供する。時間生成又はGPSパルスユニット801は、時間を生成するか、センサーS1~S3にGPSパルスを提供することができる。タイムスタンプフォーマットコンバータ803は、あるタイムスタンプフォーマットを別のタイムスタンプフォーマットに変換することができ、例えば、タイムスタンプは、ms:us:ns:mm:ss:hh:month:day:yearのフォーマットからmm:ss:hh:month:day:yearのフォーマットに変換され得る。タイムスタンプフォーマットには、年、月、日、時間、分、秒、ミリ秒、マイクロ秒、ナノ秒が任意の組み合わせ又は順序で含まれることができる。従って、タイムスタンプフォーマットコンバータ803は、センサーS1及びS3などのいくつかのセンサーの時間入力パラメータの要求によって、1つのフォーマットを別のフォーマットに変換することができる。
TXタイムスタンプジェネレータ811~813は、センサーユニットのセンサーのための送信タイムスタンプを生成することができる。一実施形態において、TXタイムスタンプジェネレータは、GPS PPSを1つ以上のセンサーに単にルーティングして、GPS PPS信号をセンサー(例えば、S1)に提供することができる。S1センサーの例には、入力としてGPS時間情報を受信するベロダイン(Velodyne)LIDARセンサーが含まれる。GPS時間入力情報は、LIDARセンサーをGPSクロックに同期するために使用される。センサーが同期された後、LIDARセンサーは奥行き画像をトリガー/キャプチャし、奥行き画像を有するトリガータイムスタンプを含むことができる。第2のタイムスタンプは、センサーS1がセンサーのデータをS1からセンサーユニット500に送信する時間を表す送信タイムスタンプ(Transmit Timestamp)であり得る。ここで、トリガータイムスタンプ及び/又は送信タイムスタンプは、メタデータとして奥行き画像とともにセンサーS1からセンサーユニット500へ送信されてもよい。
S1センサーの別の例は、mm:ss:hh:month:day:yearフォーマットの時間情報を入力パラメータとして受信できるカメラセンサーを含む。この場合、TXタイムスタンプジェネレータは、mm:ss:hh:month:day:yearフォーマットのTXタイムスタンプ(例えば、時間生成ユニット801によって提供される)を生成して、カメラセンサーに送信する。カメラセンサーは、TXタイムスタンプから導出可能なトリガータイムスタンプを有するRGB画像をトリガー/キャプチャできる(例えば、その間のいずれの遅延を考慮する)。センサーのデータがセンサーユニットに送信されるタイミングを表す第2のタイムスタンプ(送信タイムスタンプ)は、時間情報メタデータとしてトリガータイムスタンプを含み得る。次いで、時間情報メタデータと共にセンサーのデータをカメラセンサーからセンサーユニット500に送信することができる。S1センサーの他の例には、RADARセンサー、SONARセンサー、及び時間入力パラメーターを受信するあらゆるセンサーが含まれる。
別の実施形態において、TXタイムスタンプジェネレータは、mm:ss:hh:month:day:yearの形式でタイムスタンプを生成し、生成されたタイムスタンプを1つ以上のセンサーに提供する。ここで、mm:ss:hh:month:day:yearタイムスタンプがGPS PPS信号と同期されている。これらのセンサー(例えば、S3)は、センサーのデータとタイムスタンプメタデータ(変更されていないもの)をホストシステム110に直接送信できる。ホストシステム110への直接結合は、利用可能な通信チャネルがなくなったとき、又はセンサーのデータが低帯域幅しか必要としないときに確立され得る(例えば、イーサネット接続など)。S3センサーの例には、イーサネット、カメラ及び/又はRADARセンサーなどが含まれる。
RXタイムスタンプジェネレータ821-823は、センサーユニット500がセンサーのデータを受信したときに受信タイムスタンプを生成し、生成された受信タイムスタンプを時間メタデータとしてセンサーのデータに追加することができる。従って、センサーのデータがホストシステム110に送信されると、センサーユニット500がセンサーのデータを取得した時間に関する利用可能な情報がある。RXタイムスタンプジェネレータを使用するセンサーの例は、S1及びS2である。S1とS2の違いは、S1が送信(TX)及び/又はトリガータイムスタンプ情報を提供するのに対し、S2は受信(RX)タイムスタンプ情報のみを提供することである。S2センサーの例には、LIDAR、カメラ及び/又はRADARセンサーなどが含まれる。
別の実施形態において、タイムスタンプ同期ハブデバイス602は、ホストシステム110に(例えば、PCIeバスを介して)結合され、ホストシステム110に時間情報(例えば、時間情報/タイムスタンプ313)を提供する。提供された時間情報により、ホストシステム110は、ホストシステム110のRTC(例えばCPU-RTC)を提供された時間に同期させ、センサーユニット500とホストシステム110の間で単一のグローバル時間を使用できるようにする。その後、ADVのためのホストシステム110の計画・制御モジュールは、センサーユニット500に同期されるホストシステム110のローカルRTCを使用してADVを自律的に計画及び制御することができる。
地下駐車場でADVイグニッションがオンにされるとき(例えば、GPS信号がないとき)、ADVはタイムソースセレクタ603を使用する。一実施形態において、センサーユニット500又はホストシステム110は、タイムスタンプを生成するために依然として比較的正確な時間を必要とするため、センサーユニット500又はADVの利用可能な時間ソースの精度に関する情報がない場合、時間ソースのデフォルトランキングリストを使用して望ましい時間ソースを決定することができる。デフォルトランキングリストの例では、GPS、FPGA RTC、WIFI、LTE及びCPU RTCなどの順序でさまざまな時間ソースをランク付けできる。この場合、利用可能な唯一の時間ソースがFPGA RTCとWIFI信号である場合、FPGA RTC時間ソースが優先され、図7のローカルタイマー753のローカル時間など、ローカル時間を確立するための望ましい時間ソースになる。しかし、一実施形態において、GPSセンサーからの信号が利用可能になると、タイムソースセレクタ603は、ランキングシステムに基づいて異なる利用可能な時間ソースの精度を確定する。
一実施形態において、タイムソースセレクタ603は、ランキングシステムにより、多くの利用可能な時間ソースの絶対差分値に基づいてヒストグラムを生成する。ヒストグラム又は差分ヒストグラムは、数ラウンド生成され得、又は、これらのヒストグラムは、所定の期間にわたって平均化されるか、又はGPS信号が利用可能であれば、平均化可能となる。差分ヒストグラムによって確定されるGPSセンサーに最も近い時間ソース(例えば、最小の差)は、GPS信号が利用できないとき(例えば、次回地下駐車場でADVイグニッションがオンにされるときに)使用するべき最適な時間ソースとして選択される。一実施形態において、CPU RTCは、好ましい時間ソースになるように事前に構成されている。この場合、CPU RTCの差分ヒストグラム、デルタタイム、又は平均デルタタイムは、ロガーによってログファイル又はログバッファーに書き込まれる。差分ヒストグラム、デルタタイム、又は平均デルタタイムは、CPU RTCとGPSタイムの時間差を記録する。GPS信号なしの次の点火で、センサーユニット500はデルタタイムに基づいてCPU RTCを調整し、調整されたCPU RTCを現地時間として使用することができる。一実施形態において、GPS信号が利用可能な場合、CPU RTCのあらゆる偏差を反映するためにデルタタイムを更新することができる。
なお、以上に例示及び説明された構成要素の一部又は全ては、ソフトウェア、ハードウェア、又はこれらの組み合わせで実現されることができる。例えば、このような構成要素は、永続性記憶装置にインストールされるとともに格納されるソフトウェアとして実現されてもよく、前記ソフトウェアは、本開示にわたって記載されたプロセス又は動作を実施するように、メモリにロードしてプロセッサ(図示せず)によって実行されてもよい。あるいは、このような構成要素は、集積回路(例えば、特定用途向け集積回路又はASIC)、デジタルシグナルプロセッサ(DSP)、又はフィールドプログラマブルゲートアレイ(FPGA)のような専用ハードウェアにプログラムされたか又は埋め込まれた実行可能なコードとして実現されてもよく、前記実行可能なコードはアプリケーションからの対応するドライバー及び/又はオペレーティングシステムを介してアクセスされることができる。更に、このような構成要素は、ソフトウェアコンポーネントが1つ以上の特定の命令によってアクセス可能な命令セットの一部として、プロセッサ又はプロセッサコアにおける特定のハードウェアロジックとして実現されることができる。
図9は、センサーユニットのテストボード590(テストボード)を使用してセンサーユニット500をテストする方法900を示すブロック図である。方法900は、ホストコンピュータ110又はモニターコンピュータ594(集合的又は個別に「モニターコンピュータ」と呼ばれる)が、方法900を使用してテストされるセンサーユニット500に接続され、テスト対象のセンサーユニット500もセンサーユニットのテストボード590に結合されており、すべてのデバイスの電源がオンになっていて、それぞれの電源オンセルフテストが実行されていると仮定する。
動作905において、モニターコンピュータは、例えば、ホストインターフェース505を介して、センサーユニット500上のセンサーユニットテストソフトウェア593にメッセージを送信することにより、センサーユニット500との通信を試みることができる。前記メッセージは「ping」のように簡単な場合があり、キャリッジリターン又はその他の公称メッセージ(nominal message)であってもよく、センサーユニットのテストソフトウェア593はこのメッセージへの応答を提供することが期待される。モニターコンピュータとセンサーユニットのテストソフトウェア593との間に前記通信を確立して、センサーユニットに架けられているホストインターフェイス505が正常に機能するために、前記応答は、確認(「ACK」)、又は「:」などのコマンドラインプロンプト文字と同じくらい簡単にモニターコンピューターに返され得る。モニターコンピュータとセンサーユニットのテストソフトウェアとの間で通信を確立できない場合、センサーユニット500はテストに失敗し、方法900は終了する。
動作910において、センサーユニット500のセンサーユニットのテストソフトウェア593は、センサーユニット500の時間モジュール520の構成を試みる。構成とは、時間モジュールを初期構成するレジスタに書き込むことを含むことができ、これは、方法900を使用してテストされたすべてのセンサーユニット500に対して既知の値であり得る。時間モジュール520の構成後、センサーユニットのテストソフトウェア593は時間モジュール520を読み取り、時間モジュール520がアクセス可能かどうか、時間モジュールを構成できたかどうか、及び時間モジュールがセンサーユニットのテストソフトウェア593に所望の値を返したかどうかを判断する。所望の時間値がセンサーユニットのテストソフトウェア593に返されなかった場合、センサーユニット500がテストに失敗した。センサーユニットのテストソフトウェア593は、モニターコンピュータに「例えば、センサーユニット500:時間モジュール520の構成が失敗した」という失敗メッセージを書き込むことができ、方法900は終了する。
動作915において、センサーユニット500は、センサーユニットのテストボード590との通信をテストする。一実施形態において、このテストは、モニターコンピュータとセンサーユニットのテストソフトウェア593との間の動作905のテストと同様であり得る。センサーユニットテストソフトウェア593は、「ping」をセンサーユニットのテストボード590に送信することができる。センサーユニットのテストボード590は、任意の所定の文字(例えば「>」)の簡単な確認(「ACK」)で応答することができる。このテストに失敗した場合、センサーユニットのテストソフトウェア593は、センサーユニット500とセンサーユニットのテストボード590との間のセンサーインターフェース504を介した通信が失敗したという通知をモニターコンピュータに送信することができ、方法900は終了する。そうでない場合、方法900は動作1000に進む。
以下で、図10に関して動作1000を詳細に説明する。動作1000は、センサーユニットのテストボード590によって提供されるエミュレートされたセンサーのデータ591A~591Cを使用して、各センサーチャネル1~N、ならびにそれぞれのセンサー処理モジュール501A~501C及びデータ転送モジュール502A~502Cをテストする。センサーインターフェース504を介して各I/Oのチャネル及び各エミュレートされたセンサーをテストする間に、各I/Oのチャネルのテストステータスが表示される。一実施形態において、前記表示とは、検証に失敗した各センサーチャネルの赤色LEDを点灯し、検証に成功した各センサーチャネルの緑色LEDを点灯することと、すべてのセンサーチャネルが検証に成功した場合に緑色LEDを点灯し、いずれのセンサーチャネルが検証に失敗した場合に赤色LEDを点灯することを含み得る。
動作920において、センサーユニットのテストソフトウェア593は、すべてのセンサーチャネル及び/又は各センサーチャネルの成功又は失敗をモニターコンピュータ及び/又はホストコンピュータに報知することができる。
図10は、センサーユニットのテストボード590を使用してセンサーユニット500をテストする方法1000を示すブロック図である。センサーユニット500のテスト機能は図10の左側に示され、センサーユニットのテストボード590の機能は右側に示され、両者の間の相互作用が発生する部分に点線で示されている。方法1000では、各センサーチャネルを1つずつテストして、センサーチャネルが通常に機能しているかどうかを判断する。
動作1005において、センサーユニット500内のテストソフトウェア593は、テスト対象のI/Oのチャネルを選択する。一実施形態において、テストのために選択された第1のI/OのチャネルはGPSのセンサーのチャネルである。一実施形態において、センサーユニットのテストボード590のすべてのセンサーチャネルは、それぞれのセンサーのエミュレータに関連付けられたI/Oのチャネルを介して、それぞれのセンサーのエミュレータのエミュレートされたセンサーのデータを定期的に送信でき、各I/Oのチャネルを評価(一回に1つを評価)できる。一実施形態において、センサーユニット500のセンサーユニットのテストソフトウェア593は、テスト対象のI/Oのチャネルの選択(一回に1つを選択する)を管理する。これは、本明細書で説明される実施形態である。
動作1010において、オプションとして、センサーユニット500は、センサーユニットのテストソフトウェア593を介して、選択されたI/Oのチャネルの識別を、センサーユニットのテストボード590及びモニターコンピュータの一方又は両方に送信することができる。動作1010において、センサーユニットテストソフトウェア593は、選択的にセンサーインターフェース504を介して選択されたI/Oのチャネルを「ピン(ping)」し、選択されたI/Oのチャネルに対応するセンサーユニットのテストボード590のエミュレートされたセンサー591A~591Cがセンサーインターフェース504を介してエミュレートされたセンサーのデータをパケット化してセンサーユニット500に送信するように提示することができる。
動作1015において、センサーユニットのテストソフトウェア593は、タイマーを選択されたI/Oのチャネルに対応するエミュレートされたセンサー591A~591Cからの応答を待つための最大時間に設定することができる。
動作1020において、エミュレートされたセンサーに対して選択されたI/Oのチャネルにおいて応答が受信される前にタイマーが無効になったかどうかを判定することができる。そうである場合、方法1000は動作1040に進み、そうでない場合、方法1000は動作1025に進む。
動作1025において、選択されたI/Oのチャネルに対応するセンサ処理モジュール501A~501Cは、選択されたI/Oのチャネルにおいてセンサーユニットのテストボード590の591A~591Cの1つからのエミュレートされたセンサーのデータを受信する。動作1025に対応するセンサーユニットのテストボード590の機能については、以下で説明する動作1050を参照されたい。
動作1030において、センサーユニットのテストソフトウェア593は、時間モジュール520から時間値を取得し、動作1025において受信されたエミュレートされたセンサーのデータ、及び時間モジュール520から取得された時間値を、選択されたI/Oのチャネルの591A~591Cのためのエミュレートされたセンサー有効性チェッカーに送信できる。一実施形態において、送信とは、チェックサム、パリティビット、ハミングコード、又は他のデータインテグリティチェックなどのインテグリティチェックを含むことができる。動作1030に対応するセンサーユニットのテストボード590の機能については、以下で説明する動作1065を参照されたい。
動作1035において、オプションとして、センサーユニットのテストソフトウェア593は、データ転送モジュール502A~502Cに、エミュレートされたセンサーのデータをホストインターフェースを介してモニターコンピュータに送信させるようにすることができる。
動作1040において、テストするべきI/Oのチャネルがさらにあるかどうかを判定することができる。そうである場合、方法1000は動作1005に進み、そうでない場合、以下で説明する動作1065~1090の完了後に、方法1000は終了する。
次に、センサーユニットのテストボード590(「テストボード590」)の機能を説明する図10の右側を参照する。動作1050において、テストボード590は、選択されたI/Oのチャネルのためのエミュレートされたセンサーのデータをセンサーユニット500に送信する。前記エミュレートされたセンサーのデータは、動作1025で上述したように、センサーユニット500によって受信される。
動作1055において、テストボード590がエミュレートされたセンサーのデータをセンサーユニット500に送信することに応じて、テストボード590は、センサーユニット500からのエミュレートされたセンサーのデータと時間値の受信を待つ時間を設定する。
動作1060において、タイマーが切れ、センサーユニット500から応答が受信されなかった場合、方法1000は動作1085に進み、そうでない場合、方法1000は動作1065に進む。
動作1065において、テストボード590は、選択されたI/Oのチャネルにおいてセンサーユニット500からのエミュレートされたセンサーのデータ及び時間値を受信する。選択されたI/Oのチャネル用に構成されたエミュレートされたセンサー591A~591Cは、動作1030で前述したセンサーユニット500によって送信されたエミュレートされたセンサーのデータ、時間値、及びオプションで、パリティ、チェックサム、ハミングコードなどのインテグリティチェックを受信する。
動作1070において、テストボード590は、受信されたエミュレートされたセンサーのデータ、時間値、及びインテグリティチェックの有効性チェックを実行する。前記有効性チェックは、選択されたI/Oのチャネルに対応するエミュレートされたセンサー591A~591Cの有効性チェッカーによって実行される。有効性チェックについては、図5A及び図5Bを参照して上記で詳細に説明した。
動作1075において、オプションとして、選択されたセンサーがGPSである場合、テストボード590は、受信されたエミュレートされたGPSのセンサーのデータ、及び/又は時間値を、テスト対象の後続のI/Oのチャネルに対応する1つ以上のエミュレートされたセンサー591B~591Cに提供することができる。
動作1080において、選択されたI/Oのチャネルに対応するエミュレートされたセンサーの有効性チェッカーによって如何なる有効性チェックエラーが発見されたかどうかを判定することができる。そうである場合、方法1000は動作1085に進み、そうでない場合、方法1000は動作1090に進む。
動作1085において、I/Oのチャネルの失敗表示を示すことができ、例えば、テストしたばかりのI/Oのチャネルに関連付けられたセンサーユニットのテストボード590における赤色LEDを点灯させることができる。一実施形態において、このI/Oのチャネルの失敗表示は、例えばテキスト形式でモニターコンピュータに送信されることもできる。方法1000のテストボード590部分は、このI/Oのチャネルで終了する。上記の動作1040において、すべてのI/Oのチャネルを反復するためのループ制御は、センサーユニット500により制御される。
動作1090において、I/Oのチャネルの成功表示を示すことができ、例えば、テストしたばかりのI/Oのチャネルに関連付けられたセンサーユニットのテストボード590における緑色LEDを点灯させることができる。一実施形態において、このI/Oのチャネルの成功表示は、例えばテキスト形式でモニターコンピュータに送信されることもできる。方法1000のテストボード590部分は、このI/Oのチャネルで終了する。上記の動作1040において、すべてのI/Oのチャネルを反復するためのループ制御は、センサーユニット500により制御される。
図11は、本開示の一実施形態と共に使用可能なデータ処理システムの一例を示すブロック図である。例えば、システム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は更に1つ以上の専用プロセッサであってもよい。例えば、特定用途向け集積回路(ASIC)、セルラー又はベースバンドプロセッサ、フィールドプログラマブルゲートアレイ(FPGA)、デジタルシグナルプロセッサ(DSP)、ネットワークプロセッサ、グラフィックプロセッサ、通信プロセッサ、暗号プロセッサ、コプロセッサ、組み込みプロセッサ、又は命令を処理可能な任意の他のタイプのロジックが挙げられる。
プロセッサ1501は、超低電圧プロセッサのような低電力マルチコアプロセッサソケットであってもよく、前記システムの様々な構成要素と通信するための主処理ユニット及び中央ハブとして機能することができる。このようなプロセッサは、システムオンチップ(SoC)として実装されてもよい。プロセッサ1501は、本明細書で説明される動作及びステップを実行するための命令を実行するように構成される。システム1500は、更に任意選択グラフィックサブシステム1504と通信するグラフィックインターフェースを含むことができ、グラフィックサブシステム1504は、表示コントローラ、グラフィックプロセッサ及び/又は表示装置を含んでいてもよい。
プロセッサ1501は、メモリ1503と通信することができ、メモリ1503は、一実施形態では、所定量のシステムメモリを提供するための複数のメモリデバイスによって実現されることができる。メモリ1503は、ランダムアクセスメモリ(RAM)、ダイナミックRAM(DRAM)、シンクロナスDRAM(SDRAM)、スタティックRAM(SRAM)、又はその他のタイプの記憶装置のような、1つ以上の揮発性記憶(又はメモリ)装置を含むことができる。メモリ1503は、プロセッサ1501又はその他の任意のデバイスにより実行される命令シーケンスを含む情報を格納することができる。例えば、様々なオペレーティングシステム、デバイスドライバ、ファームウェア(例えば、ベーシックインプット/アウトプットシステム又はBIOS)、及び/又はアプリケーションの実行可能なコード及び/又はデータは、メモリ1503にロードされ、プロセッサ1501により実行されることができる。オペレーティングシステムは、例えば、ロボットオペレーティングシステム(ROS)、Microsoft(登録商標)社のWindows(登録商標)オペレーティングシステム、アップル社のMacOS(登録商標)/iOS(登録商標)、Google(登録商標)社のAndroid(登録商標)、LINUX、UNIX(登録商標)、又はその他のリアルタイム若しくは組込みオペレーティングシステムのような、任意のタイプのオペレーティングシステムであってもよい。
システム1500は、更に、ネットワークインターフェースデバイス1505、任意選択入力デバイス1506、及びその他の任意選択されたI/Oデバイス1507を含むデバイス1505~1508のようなI/Oデバイスを含むことができる。ネットワークインターフェースデバイス1505は、無線送受信機及び/又はネットワークインターフェースカード(NIC)を含むことができる。前記無線送受信機は、WiFi送受信機、赤外線送受信機、ブルートゥース(登録商標)送受信機、WiMax送受信機、無線携帯電話送受信機、衛星送受信機(例えば、全地球測位システム(GPS)送受信機)、又はその他の無線周波数(RF)送受信機、又はそれらの組み合わせであってもよい。NICは、イーサネットカードであってもよい。
入力デバイス1506は、マウス、タッチパッド、タッチスクリーン(表示装置1504と統合されてもよい)、ポインターデバイス(例えば、スタイラス)、及び/又はキーボード(例えば、物理キーボード又はタッチスクリーンの一部として表示された仮想キーボード)を含むことができる。例えば、入力デバイス1506は、タッチスクリーンと接続されるタッチスクリーンコントローラを含むことができる。タッチスクリーン及びタッチスクリーンコントローラは、例えば、様々なタッチ感応技術(コンデンサ、抵抗、赤外線、及び表面弾性波の技術を含むが、それらに限定されない)のいずれか、並びにその他の近接センサアレイ、又は、タッチスクリーンと接触する1つ以上の点を確定するためのその他の素子を用いて、それらの接触、移動又は中断を検出することができる。
I/Oデバイス1507は、音声装置を含むことができる。音声装置は、音声認識、音声複製、デジタル記録、及び/又は電話機能のような音声サポート機能を促進するために、スピーカ及び/又はマイクロホンを含んでもよい。その他のI/O装置1507は、更に、ユニバーサルシリアルバス(USB)ポート、パラレルポート、シリアルポート、プリンタ、ネットワークインターフェース、バスブリッジ(例えば、PCI-PCIブリッジ)、センサ(例えば、加速度計、ジャイロスコープ、磁力計、光センサ、コンパス、近接センサなどのモーションセンサ)、又はそれらの組み合わせを含むことができる。デバイス1507は、結像処理サブシステム(例えば、カメラ)を更に含むことができ、前記結像処理サブシステムは、写真及びビデオ断片の記録のようなカメラ機能を促進するための、電荷接続素子(CCD)又は相補型金属酸化物半導体(CMOS)光学センサのような光学センサを含むことができる。システム1500の具体的な構成又は設計に応じて、いくつかのセンサは、センサハブ(図示せず)を介してインターコネクト1510に接続されることができ、キーボード又はサーマルセンサのようなその他の装置は組込みコントローラ(図示せず)により制御されることができる。
データ、アプリケーション、1つ以上のオペレーティングシステムなどの情報の永続性記憶を提供するために、プロセッサ1501には、大容量記憶装置(図示せず)が接続されることもできる。様々な実施形態において、より薄くてより軽量なシステム設計を可能にしながら、システムの応答性を向上するために、このような大容量記憶装置は、ソリッドステートデバイス(SSD)によって実現されることができる。しかしながら、その他の実施形態では、大容量記憶装置は、主にハードディスクドライブ(HDD)を使用して実現されることができ、より小さい容量のSSD記憶装置をSSDキャッシュとして機能することで、停電イベントの間にコンテキスト状態及び他のそのような情報の不揮発性記憶を可能にし、それによりシステム動作が再開するときに通電を速く実現することができる。また、フラッシュデバイスは、例えば、シリアルペリフェラルインターフェース(SPI)を介してプロセッサ1501に接続されることができる。このようなフラッシュデバイスは、前記システムのBIOS及びその他のファームウェアを含むシステムソフトウェアの不揮発性記憶のために機能することができる。
記憶デバイス1508は、本明細書に記載の方法又は機能のいずれか1つ以上を具現化する1つ以上の命令セット又はソフトウェア(例えば、モジュール、ユニット及び/又はロジック1528)が格納されているコンピュータアクセス可能な記憶媒体1509(機械可読記憶媒体又はコンピュータ可読媒体とも呼ばれる)を備えてもよい。処理モジュール/ユニット/ロジック1528は、感知モジュール302、計画モジュール305、制御モジュール306及び/又はセンサーユニット500のような、前記構成要素のいずれかを表すことができる。処理モジュール1528は、センサーユニットテストソフトウェア593、様々なタイプのエミュレートされたセンサのためのエミュレートされたセンサーのデータの有効性チェッカー、及び本明細書で説明される機能を実施する他のロジックをさらに含むことができる。処理モジュール/ユニット/ロジック1528は、更に、データ処理システム1500、メモリ1503、及びプロセッサ1501による実行中に、メモリ1503内及び/又はプロセッサ1501内に完全的に又は少なくとも部分的に存在してもよく、データ処理システム1500、メモリ1503及びプロセッサ1501も機械アクセス可能な記憶媒体を構成する。処理モジュール/ユニット/ロジック1528は、更に、ネットワークを介してネットワークインターフェースデバイス1505を経由して送受信されてもよい。
コンピュータ可読記憶媒体1509は、以上に説明されたいくつかのソフトウェア機能を永続的に格納するために用いることができる。コンピュータ可読記憶媒体1509は、例示的な実施形態において単一の媒体として示されるが、「コンピュータ可読記憶媒体」という用語は、前記1つ以上の命令セットが格納される単一の媒体以上の媒体(例えば、集中型又は分散型データベース及び/又は関連するキャッシュとサーバ)を含むと解釈されるものとする。「コンピュータ可読記憶媒体」という用語は、更に、命令セットを格納又は符号化できる任意の媒体を含むと解釈されるものであり、前記命令セットは機械により実行され、本開示のいずれか1つ以上の方法を前記機械に実行させるためのものである。それゆえに、「コンピュータ可読記憶媒体」という用語は、ソリッドステートメモリ、光学媒体及び磁気媒体、又はその他の任意の非一時的機械可読媒体を含むが、それらに限定されないと解釈されるものとする。
本明細書に記載された処理モジュール/ユニット/ロジック1528、構成要素及びその他の特徴は、ディスクリートハードウェア構成要素として実現されてもよく、又はASICS、FPGA、DSP又は類似のデバイスのようなハードウェア構成要素の機能に統合されてもよい。更に、処理モジュール/ユニット/ロジック1528は、ハードウェアデバイスにおけるファームウェア又は機能性回路として実現されてもよい。更に、処理モジュール/ユニット/ロジック1528は、ハードウェアデバイスとソフトウェア構成要素の任意の組み合わせで実現されてもよい。
なお、システム1500は、データ処理システムの様々な構成要素を有するものとして示されているが、構成要素を相互接続する任意の特定のアーキテクチャ又は方式を表すことを意図するものではなく、そのような詳細は、本開示の実施形態とは密接な関係がない。また、より少ない構成要素又はより多くの構成要素を有するネットワークコンピュータ、ハンドヘルドコンピュータ、携帯電話、サーバ、及び/又はその他のデータ処理システムも、本開示の実施形態と共に使用することができることを理解されたい。
上述した具体的な説明の一部は、既に、コンピュータメモリにおけるデータビットに対する演算のアルゴリズムと記号表現により示された。これらのアルゴリズムの説明及び表現は、データ処理分野における当業者によって使用される、それらの作業実質を所属分野の他の当業者に最も効果的に伝達する方法である。本明細書では、一般的に、アルゴリズムは、所望の結果につながるセルフコンシステントシーケンスと考えられる。これらの操作は、物理量の物理的処置が必要とされるものである。
しかしながら、念頭に置くべきなのは、これらの用語及び類似の用語の全ては、適切な物理量に関連付けられるものであり、これらの量を標識しやすくするためのものに過ぎない。以上の説明で他に明示的に記載されていない限り、本明細書の全体にわたって理解するべきなのは、添付された特許請求の範囲に記載するもののような用語による説明とは、コンピュータシステム、又は類似の電子計算装置の動作及びプロセスを指し、前記コンピュータシステム又は電子計算装置は、コンピュータシステムのレジスタ及びメモリにおける物理(電子)量として示されるデータを制御するとともに、前記データをコンピュータシステムメモリ又はレジスタ又はこのようなその他の情報記憶装置、伝送又は表示装置において同様に物理量として示される別のデータに変換する。
本開示の実施形態は、本明細書の動作を実行するための装置にも関する。このようなコンピュータプログラムは、非一時的コンピュータ可読媒体に格納される。機械可読媒体は、機械(例えば、コンピュータ)により読み取り可能な形式で情報を格納するための任意のメカニズムを含む。例えば、機械可読(例えば、コンピュータ可読)媒体は、機械(例えば、コンピュータ)可読記憶媒体(例えば、読み出し専用メモリ(「ROM」)、ランダムアクセスメモリ(「RAM」)、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリデバイス)を含む。
上述した図面において説明されたプロセス又は方法は、ハードウェア(例えば、回路、専用ロジックなど)、ソフトウェア(例えば、非一時的コンピュータ可読媒体に具現化されるもの)、又は両方の組み合わせを含む処理ロジックにより実行されることができる。前記プロセス又は方法は、以上で特定の順序に応じて説明されたが、前記動作の一部が異なる順序で実行されてもよいことを理解されたい。また、一部の動作は、順番ではなく並行して実行されてもよい。
本開示の実施形態は、いずれの特定のプログラミング言語を参照することなく記載されている。理解すべきなのは、本明細書に記載の本開示の実施形態の教示を実現するために、様々なプログラミング言語を使用することができる。
本明細書において、本開示の実施形態は、既にその具体的な例示的な実施形態を参照しながら記載された。明らかなように、添付された特許請求の範囲に記載された本開示のより広い趣旨及び範囲を逸脱しない限り、本開示に対して様々な変更を行うことができる。それゆえに、本明細書及び図面は、限定的な意味でなく、例示的な意味で理解されるべきである。