(57)【要約】      （修正有）【課題】ホストシステムと、バスを介してホストシステムに接続された１つ又は複数の拡張デバイスを備えるデータ処理システムを提供する。【解決手段】ホストシステム４０１は、１以上のプロセッサと命令を格納するメモリを含む。命令は実行されると、自動運転車両（ＡＤＶ）を運転する自動運転操作をプロセッサに実行させる。各拡張システム４０２には、スイッチデバイス４１０と、スイッチデバイスに接続される１以上の処理モジュールを備える。各処理モジュールは、ホストシステムからオフロードされる自動運転操作の少なくとも１つを実行する。処理モジュールの少なくとも１つは、ホストシステムから受信した命令に応じて動作を実行するクライアントノード、あるいは、拡張デバイス内の別のクライアントノードにタスクを配布するホストノードとして構成できる。拡張デバイスにおけるホストノードはさらに、ホスト間接続によりホストシステムと協働できる。【選択図】図４
2020109619.tif 000002
【特許請求の範囲】
【請求項１】
自動運転で利用されるデータ処理システムであって、前記システムは、
１つ又は複数のホストプロセッサと、命令を格納するメモリとを備えるホストシステムであって、前記命令は前記ホストプロセッサによって実行されると、自動運転車両（ＡＤＶ）を運転するための自動運転操作を前記ホストプロセッサに実行させるホストシステムと、
前記ホストシステムから前記自動運転操作の少なくとも一部をオフロードするためにバスを介して前記ホストシステムに接続される拡張デバイスとを備え、
前記拡張デバイスは、
スイッチデバイスと、
前記スイッチデバイスに接続される複数の処理モジュールであって、前記処理モジュールのそれぞれは、前記ホストシステムからオフロードされた前記自動運転操作の少なくとも１つを実行するように構成され、前記処理モジュールの少なくとも１つは、前記拡張デバイス内の別のクライアントノードにタスクを割り当てるために、前記ホストシステム又はホスト処理ノードから受信された命令に応じて動作を実行するクライアント処理ノードとして構成されることができる複数の処理モジュールと、を備える
データ処理システム。
【請求項２】
前記拡張デバイスの初期化中に、前記拡張デバイスのファームウェアは、前記ホストシステムが前記拡張デバイスに接続されていることを検出するように構成され、
前記ファームウェアは、前記検出に応答して、前記ホストシステムが前記自動運転操作の少なくとも１つを前記少なくとも１つの処理モジュールにオフロードできるように、前記少なくとも１つの処理モジュールを前記ホストシステムに対するクライアントデバイスとして構成する請求項１に記載のシステム。
【請求項３】
前記ファームウェアは、前記ホストシステムの初期化中にバス列挙プロセスに応答するように構成されるとともに、前記少なくとも１つの処理モジュールが前記ホストシステムに対するクライアントデバイスとして表示されるように前記少なくとも１つの処理モジュールの１つ以上の制御レジスタを構成するように構成される請求項２に記載のシステム。
【請求項４】
前記拡張デバイスの初期化中に、前記拡張デバイスのファームウェアは、前記ホストシステムが前記拡張デバイスに接続されていないことを検出するように構成され、
前記ファームウェアは、前記検出に応答して、前記処理モジュールのうちの第１の処理モジュールを前記拡張デバイス内のホスト処理ノードとして構成するとともに、前記処理モジュールのうちの残りの処理モジュールを前記第１の処理モジュールのクライアント処理ノードとして構成する請求項１に記載のシステム。
【請求項５】
前記拡張デバイスはスタンドアロンシステムとして構成され、
前記第１の処理モジュールは、タスクを前記残りの処理モジュールによって実行するために前記残りの処理モジュールに割り当てるように構成される、請求項４に記載のシステム。
【請求項６】
前記複数の処理モジュールは、ホストノードとして構成される第１の処理モジュールと、前記ホストシステムに対するクライアントノードとして構成され、１つ又は複数の処理モジュールからなる第１組の処理モジュールと、前記第１の処理モジュールに対するクライアントノードとして構成され、１つ又は複数の処理モジュールからなる第２組のモジュールとを備える、請求項１に記載のシステム。
【請求項７】
前記ホストシステム及び前記第１組の処理モジュールは、第１の処理システムとして動作し、
前記第１の処理モジュール及び前記第２組の処理モジュールは、前記第１の処理システムと並行する第２の処理システムとして動作する、請求項６に記載のシステム。
【請求項８】
前記第１の処理モジュールはさらに、前記ホストシステムに対する第１のクライアントノードとして構成され、
前記スイッチデバイスを介して前記ホストシステムから受信されたリクエストに応じて、前記第１の処理モジュールは、第１の操作を実行し、前記スイッチデバイスを介して前記第１の操作の結果を第２の処理モジュールに送信し、
前記第２の処理モジュールは第２の操作を実行する、請求項６に記載のシステム。
【請求項９】
前記第２の処理モジュールは、前記第１の処理モジュールに対するクライアントノードとして構成される、請求項８に記載のシステム。
【請求項１０】
前記複数の処理モジュールは、前記ホストシステムに対するクライアントノードとして構成された第１の処理モジュール及び第２の処理モジュールを備え、
前記スイッチデバイスを介して前記ホストシステムから受信されたデータに応じて、前記第１の処理モジュールは、前記データに対して第１のデータ処理操作を実行するとともに、処理されたデータをピアツーピア転送により前記第２の処理モジュールに転送するように構成され、
前記第２の処理モジュールは、処理されたデータに対して第２のデータ処理操作を実行する、請求項１に記載のシステム。
【請求項１１】
前記第１の処理モジュールは、前記ホストシステムから受信されたデータに対してデータ圧縮又は暗号化を実行し、
前記第２の処理モジュールは、前記第１の処理モジュールによって処理されたデータを永続性記憶装置に格納するためのストレージモジュールである、請求項１０に記載のシステム。
【請求項１２】
前記バスは、周辺構成要素インターフェースエクスプレス（ＰＣＩｅ）バスであり、
前記スイッチデバイスは、ＰＣＩｅ互換スイッチであり、
前記処理モジュールの少なくとも１つは、中央処理装置（ＣＰＵ）、汎用処理装置（ＧＰＵ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）又はシステムオンチップ（ＳｏＣ）を備える、請求項１に記載のシステム。
【請求項１３】
自動運転で使用される拡張デバイスであって、前記デバイスは、
ホストシステムに接続されるホストインターフェースであって、前記ホストシステムは、１つ又は複数のホストプロセッサと、命令を格納するメモリとを備え、前記命令は前記ホストプロセッサによって実行されると、自動運転車両（ＡＤＶ）を運転するための自動運転操作を前記ホストプロセッサに実行させるホストインターフェースと、
前記ホストインターフェイスに接続されるスイッチデバイスと、
前記スイッチデバイスに接続される複数の処理モジュールであって、前記処理モジュールのそれぞれは、前記ホストシステムからオフロードされた自動運転操作の少なくとも１つを実行するように構成され、前記処理モジュールの少なくとも１つは、前記拡張デバイス内の別のクライアントノードにタスクを割り当てるために、前記ホストシステム又はホスト処理ノードから受信された命令に応じて動作を実行するクライアント処理ノードとして構成されることができる複数の処理モジュールと、を備える自動運転で使用される拡張デバイス。
【請求項１４】
前記拡張デバイスの初期化中に、前記拡張デバイスのファームウェアは、前記ホストシステムが前記拡張デバイスに接続されていることを検出するように構成され、
前記ファームウェアは、前記検出に応答して、前記ホストシステムが前記自動運転操作の少なくとも１つを前記少なくとも１つの処理モジュールにオフロードできるように、前記少なくとも１つの処理モジュールを前記ホストシステムに対するクライアントデバイスとして構成する請求項１３に記載のデバイス。
【請求項１５】
前記ファームウェアは、前記ホストシステムの初期化中にバス列挙プロセスに応答するように構成されるとともに、前記少なくとも１つの処理モジュールが前記ホストシステムに対するクライアントデバイスとして表示されるように前記少なくとも１つの処理モジュールの１つ以上の制御レジスタを構成するように構成される請求項１４に記載のデバイス。
【請求項１６】
前記拡張デバイスの初期化中に、前記拡張デバイスのファームウェアは、前記ホストシステムが前記拡張デバイスに接続されていないことを検出するように構成され、
前記ファームウェアは、前記検出に応答して、前記処理モジュールのうちの第１の処理モジュールを前記拡張デバイス内のホスト処理ノードとして構成するとともに、前記処理モジュールのうちの残りの処理モジュールを前記第１の処理モジュールのクライアント処理ノードとして構成する請求項１３に記載のデバイス。
【請求項１７】
前記拡張デバイスはスタンドアロンシステムとして構成され、
前記第１の処理モジュールは、タスクを前記残りの処理モジュールによって実行するために前記残りの処理モジュールに割り当てるように構成される、請求項１６に記載のデバイス。
【請求項１８】
前記複数の処理モジュールは、ホストノードとして構成される第１の処理モジュールと、前記ホストシステムに対するクライアントノードとして構成され、１つ又は複数の処理モジュールからなる第１組の処理モジュールと、前記第１の処理モジュールに対するクライアントノードとして構成され、１つ又は複数の処理モジュールからなる第２組の処理モジュールとを備える、請求項１３に記載のデバイス。
【請求項１９】
前記ホストシステム及び前記第１組の処理モジュールは、第１の処理システムとして動作し、
前記第１の処理モジュール及び前記第２組の処理モジュールは、前記第１の処理システムと並行する第２の処理システムとして動作する、請求項１８に記載のデバイス。
【請求項２０】
前記第１の処理モジュールはさらに、前記ホストシステムに対する第１のクライアントノードとして構成され、
前記スイッチデバイスを介して前記ホストシステムから受信されたリクエストに応じて、前記第１の処理モジュールは、第１の操作を実行し、前記スイッチデバイスを介して前記第１の操作の結果を第２の処理モジュールに送信し、
前記第２の処理モジュールは第２の操作を実行する、請求項１８に記載のデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の実施形態は、主にデータ処理システムに関する。より具体的には、本開示の実施形態は自動運転車両のための柔軟なホスト及びクライアント構成を備える計算及びストレージ拡張デバイスに関する。
【背景技術】
【０００２】
自動運転モードで走行する（例えば、ドライバーレス）車両は、乗員、特に運転手をいくつかの運転に関する責務から解放させることができる。車両は、自動運転モードで走行する時に、車載センサを利用して様々な位置までナビゲートすることができるので、ヒューマンマシンインタラクションが最も少ない場合、又は乗員がいない場合などに車両を運転することが可能となる。
【０００３】
自動運転の開発には、システム内の拡張可能で動的に構成可能なハードウェアコンピューティング及びストレージリソースが必要である。さらに、さまざまな機能とパフォーマンスの目標とアーキテクチャを対象とする場合、ホストとクライアントの構成とデータフローが異なる場合がある。従来の方法は、メインシステムに接続し、計算デバイスやストレージデバイスを追加した拡張デバイスを構築することである。このような方法は通常、メインシステムをホストに指定し、拡張デバイスはすべてクライアントであるか、異なる要件を満たすシステムを構築するために複数の異なるハードウェアデバイスを必要とする。
【発明の概要】
【０００４】
【図面の簡単な説明】
【０００５】
本開示の実施形態は、図面の各図において限定的ではなく例示的な形態で示され、図面における同様の符号が同様の素子を示す。
【０００６】
【図１】一実施形態に係るネットワーク化システムを示すブロック図である。
【０００７】
【図２】一実施形態に係る自動運転車両の一例を示すブロック図である。
【０００８】
【図３Ａ】一実施形態に係る自動運転車両と共に使用される感知・計画システムの一例を示すブロック図である。
【図３Ｂ】一実施形態に係る自動運転車両と共に使用される感知・計画システムの一例を示すブロック図である。
【０００９】
【図４】一実施形態に係るデータ処理システムの一例を示すブロック図である。
【００１０】
【図５Ａ】一実施形態に係るデータ処理システムの一例を示すブロック図である。
【００１１】
【図５Ｂ】一実施形態に係る、ホストシステムと拡張デバイスとの間でデータを処理するプロセスを示す処理図である。
【００１２】
【図６】一実施形態に係るデータ処理システムの一例を示すブロック図である。
【００１３】
【図７Ａ】一実施形態に係るデータ処理システムの一例を示すブロック図である。
【図７Ｂ】一実施形態に係るデータ処理システムの一例を示すブロック図である。
【００１４】
【図８】一実施形態に係る、ホストシステムと拡張デバイスとの間でデータを処理するプロセスを示す処理図である。
【発明を実施するための形態】
【００１５】
以下に説明される詳細を参照しながら本開示の様々な実施形態及び態様を説明し、添付図面には上記の各実施形態が示される。以下の説明及び図面は、本開示を説明するためのものであり、本開示を限定するものではないことを理解されたい。本開示の様々な実施形態を完全に把握するために、多数の特定の詳細を説明する。なお、本開示の実施形態を簡潔的に説明するように、周知又は従来技術の詳細について説明していない場合もある。
【００１６】
本明細書において、「一実施形態」又は「実施形態」とは、当該実施形態に基づいて説明された特定の特徴、構造又は特性が本開示の少なくとも一つの実施形態に含まれてもよいと意味する。「一実施形態では」という表現は、本明細書の全体において全てが同一の実施形態を指すとは限らない。
【００１７】
いくつかの実施形態によれば、例えば、自動運転システムの一部としての計算及びストレージ拡張デバイスにより、柔軟なホスト及びクライアント構成がクライアントデバイス、ホストデバイス、又はその両方として機能することが可能となる。このような拡張デバイスは、メインシステムに対するクライアントデバイスの補足として機能するか、又はホストデバイスとクライアントデバイスの両方を含むフルシステムとして機能することができ、かつ、別のフルシステムとはホスト間通信を実行できる。このような変更はファームウェアの更新のみを必要とするが、同じハードウェア実装で機能し、即ちハードウェアを変更する必要がない。すべての計算及びストレージモジュールは、ＰＣＩｅやイーサネット（登録商標）プロトコルなどのさまざまな入出力（ＩＯ）バスプロトコルを介してスイッチデバイスに接続される。そのようなスイッチデバイスは、計算モジュールとストレージモジュールとの間の通信だけでなく、拡張モジュールの外部のメインシステム又はホストシステムとの通信も可能にする。
【００１８】
本開示の一態様によれば、自動運転車両（ＡＤＶ）で使用可能なデータ処理システムには、ホストシステムと、バスを介してホストシステムに接続された１つ又は複数の拡張デバイスが備えられる。ホストシステムは、ＡＤＶの感知・計画システムの一部である場合がある。ホストシステムは、１つ又は複数のプロセッサと、命令を格納するメモリとを備えていてもよく、前記命令は実行されると、ＡＤＶを運転するための自動運転操作をプロセッサに実行させる。各拡張デバイスには、スイッチデバイスと、スイッチデバイスに接続される１つ又は複数の処理モジュールが備えられる。各処理モジュールは、ホストシステムからオフロードされる自動運転操作の少なくとも１つを実行するように構成できる。処理モジュールの少なくとも１つは、ホストシステムから受信した命令に応じて動作を実行するクライアントノードとして構成できる。あるいは、拡張デバイス内の別のクライアントノードにタスクを配布するホストノードとして構成できる。
【００１９】
一実施形態では、拡張デバイスの初期化中に、拡張デバイスのファームウェアは、ホストシステムが拡張デバイスに接続されていることをスキャン及び検出するように構成される。そのような検出に応じて、ファームウェアは、拡張デバイスの処理モジュールの少なくとも１つをホストシステムのクライアントデバイスとして構成する。そのような状況では、ホストシステムは、自動運転操作（例えば、感知、予測、決定、及び／又は計画プロセス）の少なくとも１つをクライアントデバイスとして構成された処理モジュールにオフロードできる。処理モジュールをホストシステムのクライアントデバイスとして構成する際、ファームウェアは、ホストシステムから（例えば、ＰＣＩ構成レジスタで適切なバス番号とデバイス番号を割り当てることにより）開始されたバス列挙プロセスに応答し、それによって処理モジュールは、ホストシステムに対するクライアントデバイスとして見られる。
【００２０】
ホストシステムが検出されていない場合、一実施形態によれば、拡張デバイスのファームウェアは、少なくとも１つの処理モジュールを選択してホストノード又はホスト処理モジュールとして構成し、残りの処理モジュールはホストノードに対するクライアントデバイスとして構成される。このような状況では、拡張デバイスは外部ホストシステムに対してスタンドアロンシステム又はピアシステムとして動作する。別の実施形態によれば、処理モジュールの第１の部分は、拡張デバイスの外部にあるホストシステムのクライアントノードとして構成される。処理モジュールの第２の部分は、少なくとも１つのホストノードと、１つ又は複数のクライアントノードを備える個別のシステムとして構成される。外部ホストシステム（拡張デバイスの処理モジュールの第１の部分とともに）及び拡張デバイスの処理モジュールの第２の部分は、ピアデータ処理システムとして動作する。
【００２１】
別の実施形態によれば、拡張の処理モジュールは、外部ホストシステムのクライアントノードとして構成することができ、拡張デバイス内の別の処理モジュールに対するホストノードとしても構成される。ホストシステムから受信されたデータに応じて、処理モジュールは、ホストシステムのクライアントノードとして、データのデータ処理操作（例えば、圧縮、暗号化、データマイニングなど）を実行する。その後、ホストノードとして動作する処理モジュールは、バスプロトコルを使用したスイッチデバイス経由のルーティング、又はピアツーピアトランザクション（例：ダイレクトメモリアクセス又はＤＭＡトランザクション）により、処理されたデータを拡張デバイスの別の処理モジュール（例えば、ストレージモジュールなど）に配信し、データに対して別のアクションを実行する（例えば、データを拡張デバイスのストレージデバイスに格納するなど）。
【００２２】
本開示の別の態様によれば、外部ホストシステムからデータ処理操作をオフロードするために使用できる拡張デバイスは、外部ホストシステムに接続可能なホストインターフェースと、スイッチデバイスと、スイッチデバイスに接続された１つ又は複数の処理モジュールとを備える。ホストシステムは、ＡＤＶを自動運転するための感知・計画システムであってもよい。ホストシステムは、１つ又は複数のホストプロセッサと、命令を格納するメモリとを備えていてもよく、前記命令はホストプロセッサによって実行されると、自動運転操作をプロセッサに実行させる。処理モジュールの少なくとも１つは、ホストシステムからオフロードされる自動運転操作の少なくとも１つを実行するクライアントデバイスとして構成できる。クライアントデバイスとして構成された他の処理モジュールにタスクを割り当てるために、処理モジュールの少なくとも１つはホストデバイスとして構成されてもよい。拡張デバイスは、上記の特徴又は構成要素をさらに備えていてもよい。
【００２３】
図１は、本開示の一実施形態に係る自動運転車両のネットワーク構成を示すブロック図である。図１に示すように、ネットワーク構成１００には、ネットワーク１０２を介して１つ又は複数のサーバ１０３〜１０４に通信可能に接続される自動運転車両１０１が備えられる。一台の自動運転車両のみが示されたが、複数の自動運転車両がネットワーク１０２を介して互いに接続され、及び／又はサーバ１０３〜１０４に接続されてもよい。ネットワーク１０２は、任意のタイプのネットワークであってもよく、例えば、有線又は無線のローカルエリアネットワーク（ＬＡＮ）、インターネットなどのワイドエリアネットワーク（ＷＡＮ）、セルラーネットワーク、衛星ネットワーク、又はそれらの組み合わせが挙げられる。サーバ１０３〜１０４は、任意のタイプのサーバ又はサーバクラスタであってもよく、例えば、ネットワーク又はクラウドサーバ、アプリケーションサーバ、バックエンドサーバ、又はそれらの組み合わせが挙げられる。サーバ１０３〜１０４は、データ解析サーバ、コンテンツサーバ、交通情報サーバ、地図・ポイントオブインタレスト（ＭＰＯＩ）サーバ又は位置サーバなどであってもよい。
【００２４】
自動運転車両とは、運転手からの入力が非常に少ない又はない場合に車両をナビゲートして環境を通過させる自動運転モードに構成可能な車両である。このような自動運転車両は、車両の走行環境に関連する情報を検出するように構成された１つ又は複数のセンサを有するセンサシステムを備えていてもよい。前記車両及びその関連コントローラは、検出された情報を使用して前記環境を通過するようにナビゲートする。自動運転車両１０１は、手動モード、完全自動運転モード、又は部分自動運転モードで走行することができる。
【００２５】
一実施形態において、自動運転車両１０１は、感知・計画システム１１０、車両制御システム１１１、無線通信システム１１２、ユーザインターフェースシステム１１３及びセンサシステム１１５を含むが、それらに限定されない。自動運転車両１０１には、一般車両に備えられているいくつかの一般的な構成要素、例えばエンジン、車輪、ステアリングホイール、変速機などが更に備えられてもよい。前記構成要素は、車両制御システム１１１及び／又は感知・計画システム１１０により複数種の通信信号及び／又はコマンドを使用して制御可能である。これらの複数種の通信信号及び／又はコマンドは、例えば、加速信号又はコマンド、減速信号又はコマンド、ステアリング信号又はコマンド、ブレーキ信号又はコマンドなどが挙げられる。
【００２６】
構成要素１１０〜１１５は、インターコネクタ、バス、ネットワーク又はこれらの組み合わせを介して互いに通信可能に接続されることができる。例えば、構成要素１１０〜１１５は、コントローラエリアネットワーク（ＣＡＮ）バスを介して互いに通信可能に接続されることができる。ＣＡＮバスは、ホストコンピュータなしのアプリケーションでマイクロコントローラ及びデバイスが相互に通信できるように設計された車両バス規格である。それは、もともと自動車内の多重電気配線のために設計されたメッセージに基づくプロトコルであるが、他の多くの環境にも用いられる。
【００２７】
ここで図２を参照し、一実施形態では、センサシステム１１５は、１つ又は複数のカメラ２１１、全地球測位システム（ＧＰＳ）ユニット２１２、慣性計測ユニット（ＩＭＵ）２１３、レーダユニット２１４及び光検出・測距（ＬＩＤＡＲ）ユニット２１５を含むが、それらに限定されない。ＧＰＳシステム２１２は、自動運転車両の位置に関する情報を提供するように動作可能な送受信機を含んでいてもよい。ＩＭＵユニット２１３は、慣性加速度に基づいて自動運転車両の位置及び配向の変化を感知することができる。レーダユニット２１４は、無線信号を利用して自動運転車両のローカル環境内のオブジェクトを感知するシステムを表すことができる。いくつかの実施形態では、オブジェクトを感知することに加えて、レーダユニット２１４は、更にオブジェクトの速度及び／又は進行方向を感知することができる。ＬＩＤＡＲユニット２１５は、自動運転車両の所在環境内のオブジェクトをレーザで感知することができる。ＬＩＤＡＲユニット２１５は、他のシステム構成要素のほかに、１つ又は複数のレーザ源、レーザスキャナ及び１つ又は複数の検出器を更に備えていてもよい。カメラ２１１は、自動運転車両の周囲環境の画像を取得するための１つ又は複数の装置を備えていてもよい。カメラ２１１は、スチルカメラ及び／又はビデオカメラであってもよい。カメラは、例えば、回転及び／又は傾斜のプラットフォームに取り付けられる機械的に移動可能なものであってもよい。
【００２８】
センサシステム１１５は、ソナーセンサ、赤外線センサ、ステアリングセンサ、スロットルセンサ、ブレーキセンサ及びオーディオセンサ（例えば、マイクロホン）などの他のセンサを更に含むことができる。オーディオセンサは、自動運転車両の周囲の環境から音声を取得するように構成されてもよい。ステアリングセンサは、ステアリングホイールの操舵角、車輪の回転角度又はそれらの組み合わせを感知するように構成されてもよい。スロットルセンサ及びブレーキセンサはそれぞれ車両のスロットル位置及びブレーキ位置を感知する。ある場合に、スロットルセンサ及びブレーキセンサは集積型スロットル／ブレーキセンサとして統合されてもよい。
【００２９】
一実施形態では、車両制御システム１１１は、ステアリングユニット２０１、スロットルユニット２０２（加速ユニットとも呼ばれる）及びブレーキユニット２０３を含むが、それらに限定されない。ステアリングユニット２０１は車両の方向又は進行方向を調整するために用いられる。スロットルユニット２０２はモータ又はエンジンの速度を制御するために用いられ、モータ又はエンジンの速度は更に車両の速度及び加速度を制御するために用いられる。ブレーキユニット２０３は、摩擦を与えることによって車両の車輪又はタイヤを減速させることで、車両を減速させる。なお、図２に示された構成要素は、ハードウェア、ソフトウェア又はそれらの組み合わせで実現されてもよい。
【００３０】
図１を再び参照して、無線通信システム１１２は、自動運転車両１０１と、デバイス、センサ、他の車両などのような外部システムとの通信を可能にする。例えば、無線通信システム１１２は、直接又は通信ネットワークを介して、１つ又は複数のデバイスと無線通信することができ、例えば、ネットワーク１０２を介してサーバ１０３〜１０４と通信することができる。無線通信システム１１２は、如何なるセルラー通信ネットワーク又は無線ローカルエリアネットワーク（ＷＬＡＮ）、例えばＷｉＦｉ（登録商標）を使用して他の構成要素又はシステムと通信することができる。無線通信システム１１２は、例えば赤外線リンク、ブルートゥース（登録商標）などを使用して、デバイス（例えば、乗員のモバイルデバイス、表示装置、車両１０１内のスピーカ）と直接通信することができる。ユーザインターフェースシステム１１３は、車両１０１内に実現された周辺装置の部分であってもよく、例えば、キーボード、タッチスクリーン表示装置、マイクロホン及びスピーカなどを含む。
【００３１】
自動運転車両１０１の機能のうちの一部又は全部は、特に自動運転モードで動作する場合に、感知・計画システム１１０により制御されるか、又は管理されることができる。感知・計画システム１１０は、センサシステム１１５、制御システム１１１、無線通信システム１１２及び／又はユーザインターフェースシステム１１３から情報を受信し、受信された情報を処理し、出発地から目的地までのルート又は経路を計画した後に、計画及び制御情報に基づいて車両１０１を運転するために、必要なハードウェア（例えば、プロセッサ、メモリ、記憶デバイス）並びにソフトウェア（例えば、オペレーティングシステム、計画・ルーティングプログラム）を備える。あるいは、感知・計画システム１１０は車両制御システム１１１と一体に統合されてもよい。
【００３２】
例えば、乗員であるユーザは、例えばユーザインターフェースを介して旅程の開始位置及び目的地を指定することができる。感知・計画システム１１０は旅程に関連するデータを取得する。例えば、感知・計画システム１１０は、ＭＰＯＩサーバから位置及びルート情報を取得することができる。前記ＭＰＯＩサーバは、サーバ１０３〜１０４の一部であってもよい。位置サーバは位置サービスを提供し、ＭＰＯＩサーバは地図サービス及び特定の位置のＰＯＩを提供する。あるいは、このような位置及びＭＰＯＩ情報は、感知・計画システム１１０の永続性記憶装置にローカルキャッシュされてもよい。
【００３３】
自動運転車両１０１がルートに沿って移動している場合に、感知・計画システム１１０は交通情報システム又はサーバ（ＴＩＳ）からリアルタイム交通情報を取得することもできる。なお、サーバ１０３〜１０４は第三者機関によって操作可能である。あるいは、サーバ１０３〜１０４の機能は、感知・計画システム１１０と一体に統合されてもよい。感知・計画システム１１０は、リアルタイム交通情報、ＭＰＯＩ情報及び位置情報、並びにセンサシステム１１５により検出又は感知されたリアルタイムローカル環境データ（例えば、障害物、オブジェクト、付近の車両）に基づいて、所定の目的地まで安全的且つ効率的に到達するために、最適なルートを計画し、且つ計画されたルートに従って例えば制御システム１１１によって車両１０１を運転することができる。
【００３４】
サーバ１０３は、様々なクライアントに対してデータ解析サービスを実行するデータ解析システムであってもよい。一実施形態において、データ解析システム１０３は、データコレクタ１２１と、機械学習エンジン１２２とを備える。データコレクタ１２１は、様々な車両（自動運転車両又は人間の運転手によって運転される一般車両）から運転統計データ１２３を収集する。運転統計データ１２３には、異なる時点で発行された運転コマンド（例えば、スロットルコマンド、ブレーキコマンド及びステアリングコマンド）と、車両のセンサにより捕獲された車両の応答（例えば、速度、加速、減速、方向）とを示す情報が含まれる。運転統計データ１２３には更に、異なる時点における運転環境を記述する情報、例えば、ルート（開始位置及び目的地位置を含む）、ＭＰＯＩ、道路状況、天気状況などが含まれてもよい。
【００３５】
機械学習エンジン１２２は、運転統計データ１２３に基づいて、さまざまな目的のためにルール、アルゴリズム及び／又は予測モデル１２４のセットを生成するか又は訓練する。一実施形態では、アルゴリズム１２４は、ＡＤＶを運転するための感知・計画アルゴリズムを含み得る。その後、アルゴリズム１２４を自動運転中にリアルタイムで利用するためにＡＤＶにアップロードすることができる。
【００３６】
図３Ａ及び図３Ｂは、一実施形態に係る自動運転車両と共に使用される感知・計画システムの一例を示すブロック図である。システム３００は、図１の自動運転車両１０１の一部として実現されてもよく、感知・計画システム１１０、制御システム１１１及びセンサシステム１１５を含むが、それらに限定されない。図３Ａ〜図３Ｂに示すように、感知・計画システム１１０は、測位モジュール３０１、感知モジュール３０２、予測モジュール３０３、決定モジュール３０４、計画モジュール３０５、制御モジュール３０６及びルーティングモジュール３０７を含むが、それらに限定されない。
【００３７】
モジュール３０１〜３０７のうちの一部又は全部は、ソフトウェア、ハードウェア又はそれらの組み合わせで実現されていてもよい。例えば、これらのモジュールは、永続性記憶装置３５２にインストールされ、メモリ３５１にロードされ、且つ１つ又は複数のプロセッサ（図示せず）により実行されてもよい。なお、これらのモジュールのうちの一部又は全部は、図２の車両制御システム１１１の一部又は全部のモジュールに通信可能に接続されるか、又はそれらと一体に統合されてもよい。モジュール３０１〜３０７のうちの一部は、集積モジュールとして一体に統合されてもよい。例えば、予測モジュール３０３、決定モジュール３０４、計画モジュール３０５、及び／又は制御モジュール３０６は、より少ないモジュール又は単一のモジュールに統合されてもよい。
【００３８】
測位モジュール３０１は、（例えば、ＧＰＳユニット２１２により）、自動運転車両３００の現在位置を確定し、ユーザの旅程又はルートに関連する如何なるデータを管理する。測位モジュール３０１（地図・ルートモジュールとも呼ばれる）は、ユーザの旅程又はルートに関連する如何なるデータを管理する。ユーザは、例えばユーザインターフェースを介してログインして、旅程の開始位置及び目的地を指定することができる。測位モジュール３０１は、自動運転車両３００における地図・ルート情報３１１のような他の構成要素と通信して旅程に関するデータを取得する。例えば、測位モジュール３０１は位置サーバと地図・ポイントオブインタレスト（ＭＰＯＩ）サーバから位置及びルート情報を取得することができる。位置サーバは位置サービスを提供し、ＭＰＯＩサーバは地図サービスと特定位置のＰＯＩを提供することにより、地図・ルート情報３１１の一部としてキャッシュされることができる。自動運転車両３００がルートに沿って移動する際に、測位モジュール３０１は交通情報システム又はサーバからリアルタイム交通情報を取得することもできる。
【００３９】
感知モジュール３０２は、センサシステム１１５により提供されたセンサデータと、測位モジュール３０１により取得された測位情報とに基づいて、周囲環境への感知を確定する。感知情報は、一般運転手が運転手により運転されている車両の周囲における感知すべきものを示すことができる。感知とは、例えばオブジェクトの形式で、車線構成、信号機信号、他の車両の相対位置、歩行者、建築物、横断歩道又は他の交通関連標識（例えば、止まれ標識、ゆずれ標識）などを含むことができる。車線構成は、例えば、車線の形状（例えば、直線又は湾曲）、車線の幅、道路内の車線数、一方向車線又は二方向車線、合流車線又は分流車線、退出車線など、１本又は複数の車線を記述する情報を含む。
【００４０】
感知モジュール３０２は、１つ又は複数のカメラによって取り込まれた画像を処理及び解析して、自動運転車両の環境内のオブジェクト及び／又は特徴を認識するためのコンピュータビジョンシステム又はコンピュータビジョンシステムの機能を含むことができる。前記オブジェクトは、交通信号、道路境界、他の車両、歩行者及び／又は障害物などを含んでいてもよい。コンピュータビジョンシステムは、オブジェクト認識アルゴリズム、ビデオトラッキング及び他のコンピュータビジョン技術を使用することができる。いくつかの実施形態では、コンピュータビジョンシステムは、環境地図の描画、オブジェクトの追跡、及びオブジェクトの速度の推定などができる。感知モジュール３０２は、レーダ及び／又はＬＩＤＡＲのような他のセンサにより提供される他のセンサデータに基づいてオブジェクトを検出することもできる。
【００４１】
各オブジェクトについて、予測モジュール３０３は、前記状況における前記オブジェクトの挙動を予測する。前記予測は、特定の時点で感知された運転環境の感知データに基づいて地図・ルート情報３１１と交通ルール３１２のセットを考慮した上で実行される。例えば、オブジェクトが反対方向に沿った車両で、且つ現在の運転環境に交差点が含まれている場合に、予測モジュール３０３は当該車両が直進するか又は曲がるかを予測する。感知データによって交差点に信号機がないことが示された場合、予測モジュール３０３は、交差点に入る前に当該車両が完全に停止する必要があると予測する可能性がある。当該車両が現在左折専用車線又は右折専用車線にあると感知データにより示された場合に、予測モジュール３０３は、当該車両がそれぞれ左折又は右折する可能性が高いと予測可能である。
【００４２】
オブジェクトごとに対して、決定モジュール３０４はオブジェクトをどのように処置するかを決定する。例えば、特定のオブジェクト（例えば、交差ルートにおける他の車両）及びオブジェクトを記述するメタデータ（例えば、速度、方向、曲がり角（ｔｕｒｎｉｎｇ  ａｎｇｌｅ））について、決定モジュール３０４は前記オブジェクトと遇うときに如何に対応するか（例えば、追い越し、道譲り、停止、追い抜き）を決定する。決定モジュール３０４は、交通ルール又は運転ルール３１２のような、永続性記憶装置３５２に格納可能なルールセットに基づいて、このような決定を下すことができる。
【００４３】
ルーティングモジュール３０７は、出発地から目的地までの１つ又は複数のルート又は経路を提供するように構成される。例えばユーザから受信した開始位置から目的地位置までの所定の旅程について、ルーティングモジュール３０７は、地図・ルート情報３１１を取得し、開始位置から目的地位置までの全ての走行可能なルート又は経路を確定する。ルーティングモジュール３０７は、開始位置から目的地位置が確定されたルートのそれぞれについて、基準線を地形図の形で生成することができる。基準線とは、他の車両、障害物又は交通状況などからの他の干渉を受けていない理想的なルート又は経路をいう。つまり、道路に他の車両、歩行者又は障害物がない場合、ＡＤＶは基準線に精確的に又は密接的に従うべきである。そして、地形図を決定モジュール３０４及び／又は計画モジュール３０５に提供することができる。決定モジュール３０４及び／又は計画モジュール３０５は、他のモジュールにより提供された他のデータ（例えば測位モジュール３０１からの交通状况、感知モジュール３０２により感知された運転環境及び予測モジュール３０３により予測された交通状况）に応じて、全ての走行可能なルートを調べて最適ルートの一つを選択及び補正する。ある時点における特定の運転環境に応じて、ＡＤＶを制御するための実際の経路又はルートは、ルーティングモジュール３０７によって提供された基準線に近いか又は異なっていてもよい。
【００４４】
感知されたオブジェクトのそれぞれに対する決定に基づいて、計画モジュール３０５は、ルーティングモジュール３０７によって提供された基準線をベースとし、自動運転車両に対して経路又はルート並びに運転パラメータ（例えば、距離、速度及び／又は操舵角）を計画する。特定のオブジェクトについて、決定モジュール３０４は当該オブジェクトに対して何をするかを決定し、計画モジュール３０５はどのようにするかを決定する。例えば、所定のオブジェクトについて、決定モジュール３０４は、前記オブジェクトを追い抜くかを決定することができ、計画モジュール３０５は前記オブジェクトを左側から追い抜くか又は右側から追い抜くかを判定することができる。計画及び制御データは、計画モジュール３０５により生成され、車両３００が次の移動周期（例えば、次のルート／経路区間）にはどのように移動するかを記述する情報を含む。例えば、計画及び制御データは、車両３００が３０マイル／時間（ｍｐｈ）の速度で１０メートル移動し、その後に２５ｍｐｈの速度で右車線に変更するように指示することができる。
【００４５】
制御モジュール３０６は、計画及び制御データに基づいて、計画及び制御データにより定義されたルート又は経路に応じて適当なコマンド若しくは信号を車両制御システム１１１に送信することにより自動運転車両を制御及び運転する。前記計画及び制御データは、経路又はルートに沿って異なる時点で適切な車両構成又は運転パラメータ（例えば、スロットル、ブレーキ、及びステアリングコマンド）を使用して、車両をルート又は経路の第１の点から第２の点まで運転するのに十分な情報を含む。
【００４６】
一実施形態では、計画段階は、複数の計画周期（運転周期ともいう）で、例えば、１００ミリ秒（ｍｓ）の時間間隔で実行される。計画周期又は運転周期ごとについて、計画及び制御データに基づいて１つ又は複数の制御コマンドを発する。すなわち、１００ｍｓごとに、計画モジュール３０５は、次のルートセグメント又は経路区間（例えば、目標位置及びＡＤＶが該目標位置に到着するのに必要な時間を含む）を計画する。あるいは、計画モジュール３０５は、具体的な速度、方向、及び／又は操舵角などを更に指定することができる。一実施形態では、計画モジュール３０５は、次の所定期間（例えば、５秒）のルートセグメント又は経路区間を計画する。各計画周期について、計画モジュール３０５は前の周期において計画された目標位置に基づいて現在の周期（例えば、次の５秒）のための目標位置を計画する。次に、制御モジュール３０６は、現在の周期における計画及び制御データに基づいて１つ又は複数の制御コマンド（例えば、スロットル制御コマンド、ブレーキ制御コマンド、ステアリング制御コマンド）を生成する。
【００４７】
なお、決定モジュール３０４及び計画モジュール３０５は、集積モジュールとして統合されてもよい。決定モジュール３０４／計画モジュール３０５は、自動運転車両の運転経路を決定するためのナビゲーションシステム又はナビゲーションシステムの機能を備えていてもよい。例えば、ナビゲーションシステムは、自動運転車両が最終的な目的地に通じる走行車線に基づく経路に沿って進行すると共に感知された障害物を実質的に回避するように、自動運転車両を経路に沿って移動させることを実現するための一連の速度及び進行方向を確定することができる。目的地は、ユーザインターフェースシステム１１３を経由して行われたユーザ入力によって設定されることができる。ナビゲーションシステムは、自動運転車両が走行していると同時に運転経路を動的に更新することができる。ナビゲーションシステムは、自動運転車両のための運転経路を決定するために、ＧＰＳシステム及び１つ又は複数の地図からのデータを統合することができる。
【００４８】
図４は、一実施形態に係るデータ処理システムのアーキテクチャの一例を示すブロック図である。プロセス４００は、図１の感知・計画システム１１０又は図３のシステム３００を表すことができる。図４を参照すると、システム４００は、１つ又は複数の拡張システム又は拡張デバイス４０２〜４０３に接続されるホストシステム４０１を備える。拡張システム４０２〜４０３のアーキテクチャは、同一又は類似のものとすることができる。ホストシステム４０１は、クライアント又はサーバなどの任意の種類のコンピュータとすることができる。ホストシステム４０１は、１つ又は複数のプロセッサと、実行可能な命令を格納するメモリとを備え、前記命令はプロセッサによって実行されると、図１〜図３に関して上述したような自動運転操作の少なくとも一部をプロセッサに実行させる。例えば、ホストシステム４０１は、そこで実行される構成要素３０１〜３０７をホストしてもよい。
【００４９】
１つ又は複数の拡張システム４０２〜４０３は、例えば、周辺構成要素インターフェースエクスプレス（ＰＣＩｅ）バスなどのバスを介してホストシステム４０１に接続されてもよい。一実施形態では、拡張システム（拡張デバイスとも呼ばれる）４０２〜４０３のそれぞれは、自動運転操作の少なくとも一部をホストシステム４０１からモジュール３０１〜３０７からオフロードするように構成することができる。例示の目的で、拡張デバイス４０２を詳細に説明する。ただし、同じ説明は、拡張デバイス４０３などの他の拡張デバイスにも適用できる。
【００５０】
一実施形態では、拡張デバイスには、スイッチデバイス４１０と、スイッチデバイス４１０に接続される１つ又は複数の処理モジュール４１１〜４１３が備えられる。処理モジュール４１１〜４１３のそれぞれは、プロセッサ、メモリ、及び／又はローカルストレージを含むことができ、ホストシステム４０１又は拡張デバイス４０２内の別のホストノードに代わってデータ処理集中操作などの１組の専用操作を実行するために１つ又は複数の命令を実行できる。処理モジュールは、データを保存するためのストレージデバイスを備えるストレージモジュールであってもよい。プロセッサは、中央処理装置（ＣＰＵ）、汎用処理装置（ＧＰＵ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、システムオンチップ（ＳｏＣ）、デジタルシグナルプロセッサ（ＤＳＰ）、マイクロコントローラ（例えば、ストレージコントローラ）、又は特定用途向け集積回路（ＡＳＩＣ）であってもよい。これらのモジュール又はプロセッサは、ＣＯＭ  Ｅｘｐｒｅｓｓ（ＣＯＭｅ）、ＰＣＩｅ、又はモバイルＰＣＩｅモジュール（ＭＸＭ）フォームファクター（ｆｏｒｍ  ｆａｃｔｏｒ）などのさまざまなフォームファクターで実装できる。これらのフォームファクターにより、ユーザは、カスタマイズされたデザイン又は商用オフザシェルフ（ＣＯＴＳ：Ｃｏｍｍｅｒｃｉａｌ  Ｏｆｆ  Ｔｈｅ  Ｓｈｅｌｆ）からのさまざまな製品を積み重ねて、拡張デバイスを構築できる。ストレージモジュールのストレージデバイスは、Ｕ．２又はＭ．２フォームファクターを有するソリッドステートデバイス（ＳＳＤ）、マルチメディアカード（ＭＭＣ）及びセキュアデジタル（ＳＤ）カード、ユニバーサルシリアルバス（ＵＳＢ）フラッシュドライブであってもよい。
【００５１】
一実施形態では、上述のように、オフロード又は加速することができるデータ処理操作は、ＡＤＶの運転環境を感知する感知プロセス、感知された障害物の動きを予測する予測プロセス（例えば、画像処理、ＬＩＤＡＲ点群処理）、ＡＤＶが何を行うべきかを決定する決定プロセス、ＡＤＶを適切に運転するための軌跡を計画する計画プロセスを備えていてもよい。これらの操作はどれも、並列、直列、又はパイプライン方式で実行するために、１つ又は複数の処理モジュール４１１〜４１３に割り当てられる。例えば、感知プロセスは第１の処理モジュールによって実行されることができ、結果は、図３Ｂに示すような予測プロセス、決定プロセス、及び／又は計画プロセスを実行するように構成された第２の処理モジュールにルーティングされることができる。上述のように、特定のニーズに応じて、処理モジュール４１１〜４１３の少なくともいくつかは、クライアントノード、ホストノード、又はその両方として構成されてもよい。
【００５２】
図５Ａは、一実施形態に係るクライアントデバイスに構成された拡張デバイスを示すブロック図である。図５Ａを参照すると、この例では、すべての処理モジュール４１１〜４１５は、ホストシステム４０１に対するクライアントデバイスとして構成されている。そのような構成は、拡張デバイス４０２の初期化中に実行することができる。具体的には、ホストシステム４０１がＰＣＩｅバスなどのバスを介して拡張デバイス４０２に接続されている場合、拡張デバイス４０２のファームウェアは、ホストシステム４０１から開始されたバス列挙（ｂｕｓ  ｅｎｕｍｅｒａｔｉｏｎ）に応答する。次に、ファームウェアは、処理モジュール４１１−４１５をルートノード又はルートデバイスとして使用するホストシステム４０１に対するクライアントデバイス又はエンドポイントノードになるように構成し、それによって処理モジュール４１１−４１５は、後続のメモリ及びホストシステム４０１から開始されるＩＯサイクルに応答できる。処理モジュール４１１−４１５がホストシステム４０１のクライアントデバイス（例えば、ＰＣＩバスサイクル）として構成されると、ホストシステム４０１はタスク、特に計算集中タスクを処理モジュール４１１−４１５に割り当てることができる。ホストシステム４０１は、拡張デバイス４０２の特定のクライアント処理モジュールのバス番号とデバイス番号を指定することにより、タスクを割り当てることができる。それに応じて、スイッチデバイス４１０は、タスクをターゲット処理モジュールにルーティングする。その後、操作の結果をホストシステム４０１に送信できる。ホストシステム４０１は、例えば、ストレージモジュール４１４〜４１５を介して、拡張デバイス４０２によって維持されるストレージデバイスを利用することもできる。
【００５３】
図５Ｂは、一実施形態に係る、ホストシステムとクライアントデバイスとしての拡張デバイスとの間のトランザクションを示すフローチャートである。図５Ｂを参照すると、処理モジュール４１１は、ホストシステム４０１に対するクライアントデバイスとして構成されていると想定される。操作５０１において、ホストシステム４０１は、データを処理するためのリクエストをスイッチデバイス４１０に送信する。該リクエストには、処理されるデータ、処理方法に関する命令、及びターゲットデバイス識別子（ＩＤ）（この例では、クライアント処理モジュール４１１のバス／デバイス番号）が含まれてもよい。該リクエストに応答して、スイッチデバイス４１０は、操作５０２により該リクエストをターゲットの処理モジュール４１１にルーティングする。次に、ブロック５０３で、処理モジュール４１１は、命令に応じてデータに対して必要な操作を実行し、操作の結果を生成する。該結果は、単純に戻りステータス又は処理されたデータ（例えば、圧縮されたデータ、暗号化されたデータなど）であってもよい。操作５０４において、処理モジュール４１１は該結果をスイッチデバイス４１０に送り返し、スイッチデバイス４１０は同じ結果を操作５０５によりホストシステム４０１にルーティングする。
【００５４】
一実施形態によれば、拡張デバイス４０２は、スタンドアロンシステムとして構成及び起動することもできる。例えば、拡張デバイス４０２は、ホストシステム４０１が拡張デバイス４０２に接続されていないと判断したことに応じて、スタンドアロンシステムとして起動することができる。このような構成では、処理モジュール４１１−４１５の少なくとも１つは、ホストデバイス（例えば、ルートコンプレックス）として構成され、残りの処理モジュールはクライアントデバイス（例えば、エンドポイント）として構成される。拡張デバイス４０２がスタンドアロンシステムとして起動すると、例えば内部テスト操作など、拡張デバイスに関するさまざまな操作を実行できる。別の実施形態では、複数の処理モジュールをホストノードとして構成することができ、ホストノードのそれぞれが拡張デバイス４０２内の別個のスタンドアロンシステムを表す。
【００５５】
別の実施形態によれば、図６に示すように、拡張デバイス４０２はハイブリッドモードで構成されることができ、ここで、処理モジュール４１１−４１５の第１の部分はホストシステム４０１に対するクライアントデバイスとして構成され、処理モジュール４１１−４１５の第２の部分は、スタンドアロンシステムとしてホストシステム４０１に対するピアシステムとして構成できる。図６を参照すると、この例では、処理モジュール４１３はホストノードとして構成されており、処理モジュール４１１−４１２及び４１４−４１５はクライアントデバイスとして構成されている。この例では、処理モジュール４１１及び４１４は、ホストシステム４０１に対するクライアントデバイスであり、システム６０１を形成する。処理モジュール４１２及び４１５は、ホストノードとしての処理モジュール４１３に対するクライアントデバイスであり、システム６０２を形成する。システム６０１及び６０２は、並行して又は独立して動作するピアシステムである。ホストノード４１３は、ホスト間接続により外部ホストシステム４０１と通信することができる。
【００５６】
さらなる実施形態によれば、処理モジュールは、ホストノード及びクライアントノードとして構成され得る。例えば、処理モジュールは、外部ホストシステムのクライアントデバイスとして構成でき、同じ処理モジュールはクライアントノードとして構成された別の処理モジュールのホストノードとしても構成できる。
【００５７】
図７Ａは、一実施形態に係るデータ処理システムのシステム構成の一例を示すブロック図である。図７Ａを参照すると、この例では、処理モジュール４１２は、クライアントノードとホストノードの両方として構成されている。一実施形態では、処理モジュール４１２は、外部ホストシステム４０１に対するクライアントノードとして構成される。また、処理モジュール４１２は、拡張デバイス４０２内の他のクライアントノードに関してホストノードとしても構成される。クライアントノードとして、処理モジュール４１２は、ホストシステム４０１から命令及びデータを受信し、命令に応じてデータに対してデータ処理操作を実行することができる。また、処理モジュール４１２は、処理モジュール４１５などのクライアントノードにタスクを割り当てることができる。例えば、ホストシステム４０１から受信されたデータは、ＡＤＶの運転統計データ（例えば、異なる時点で発行されたコマンドと車両の応答）をキャプチャする自動運転中にキャプチャ及び記録されたデータログのデータであってもよい。データは、処理モジュール４１２によって（ホストシステム４０１に対するクライアントノードとして）処理され、例えば、データ圧縮及び／又は暗号化が挙げられる。次いで、データをストレージデバイスに格納するために、処理されたデータを処理モジュール４１２（ホストノードとして）からストレージモジュールとしての処理モジュール４１５（クライアントノードとして）に送信する。
【００５８】
図７Ｂは、図７Ａに示されるシステムの特定の構成の一例を示している。図７Ｂを参照すると、一実施形態では、処理モジュール４１２は、スイッチデバイス４１０に接続されたエンドポイントポート７０１及びルートポート７０２を備える。ホストシステム４０１が拡張デバイス４０２内のクライアントデバイス、すなわち処理モジュール４１２にデータを送信するとき、処理モジュール４１２は、そのエンドポイントポート７０１から経路７１１を介してデータを受信する。次いで、処理モジュール４１２は、データ圧縮又はデータ暗号化などのデータ処理を行うことができる。次に、処理モジュール４１２は、処理されたデータを、経路７１２を介してそのルートポート７０２からそのクライアントノード、すなわち処理ノード４１５に転送し、対応するアップリンクをスイッチデバイス４１０に転送する。次に、スイッチデバイス４１０は、処理されたデータを経路７１３を介して処理モジュール４１５にルーティングする。あるいは、代替実施形態によれば、処理モジュール４１２は、処理されたデータをピアツーピアＤＭＡトランザクションなどのピアツーピア接続により処理モジュール４１５に送信してもよい。
【００５９】
図８は、一実施形態に係る、ホストシステムと拡張デバイスとの間でデータをルーティングするプロセスを示すフローチャートである。図８を参照すると、操作８０１において、ホストシステム４０１は、拡張デバイス４０２のスイッチデバイス４１０に命令及びデータを転送する。スイッチデバイス４１０は、操作８０２を介して、ホスト／クライアントノードとして構成される処理モジュール４１２にデータを再ルーティングする。操作８０３において、処理モジュール４１２は、データに対してデータ圧縮又は暗号化などのデータ処理操作を実行する。操作８０４において、処理モジュール４１２は、処理された処理されたデータをスイッチデバイス４１０に転送し、スイッチデバイス４１０は、操作８０５により処理済みデータを処理モジュール４１５に再ルーティングし、ここでは、処理モジュール４１５は処理モジュール４１２に対するクライアントデバイスとして構成されている。操作８０６において、処理モジュール４１５は、データに対して別のデータ処理操作を実行する（例えば、データを永続性記憶装置に格納する）。
【００６０】
なお、以上に例示及び説明された構成要素の一部又は全ては、ソフトウェア、ハードウェア、又はそれらの組み合わせで実現されることができる。例えば、このような構成要素は、永続性記憶装置にインストールされるとともに格納されるソフトウェアとして実現されてもよく、前記ソフトウェアは、本開示にわたって記載されたプロセス又は動作を実施するように、プロセッサ（図示せず）によってメモリにロードして実行されてもよい。あるいは、このような構成要素は、集積回路（例えば、特定用途向け集積回路又はＡＳＩＣ）、デジタルシグナルプロセッサ（ＤＳＰ）、又はフィールドプログラマブルゲートアレイ（ＦＰＧＡ）のような専用ハードウェアにプログラミングされたか又は埋め込まれた実行可能なコードとして実現されてもよく、前記実行可能なコードはアプリケーションからの対応するドライバー及び／又はオペレーティングシステムを介してアクセスすることができる。更に、このような構成要素は、ソフトウェア構成要素が１つ又は複数の特定の命令によってアクセス可能な命令セットの一部として、プロセッサ又はプロセッサコアにおける特定のハードウェアロジックとして実現されることができる。
【００６１】
上述した具体的な説明の一部は、既に、コンピュータメモリにおけるデータビットに対する演算のアルゴリズムと記号表現により示された。これらのアルゴリズムの説明及び表現は、データ処理分野における当業者によって使用される、それらの作業実質を所属分野の他の当業者に最も効果的に伝達する方法である。本明細書では、一般的に、アルゴリズムは、所望の結果につながるセルフコンシステントシーケンスと考えられる。これらの操作は、物理量の物理的処置が必要とされるものである。
【００６２】
しかしながら、念頭に置くべきなのは、これらの用語及び類似の用語の全ては、適切な物理量に関連付けられるものであり、これらの量を標識しやすくするためのものに過ぎない。以上の説明で他に明示的に記載されていない限り、本明細書の全体にわたって理解すべきなのは、用語（例えば、添付された特許請求の範囲に記載のもの）による説明とは、コンピュータシステム、又は類似の電子式計算装置の動作及び処理を指し、前記コンピュータシステム又は電子式計算装置は、コンピュータシステムのレジスタ及びメモリにおける物理（電子）量として示されたデータを制御するとともに、前記データをコンピュータシステムメモリ又はレジスタ又はこのようなその他の情報記憶装置、伝送又は表示装置において同様に物理量として示された別のデータに変換する。
【００６３】
本開示の実施形態は、本明細書の動作を実行するための装置にも関する。このようなコンピュータプログラムは、非一時的コンピュータ可読媒体に格納される。機械可読媒体は、機械（例えば、コンピュータ）により読み取り可能な形式で情報を格納するための任意のメカニズムを含む。例えば、機械可読（例えば、コンピュータ可読）媒体は、機械（例えば、コンピュータ）可読記憶媒体（例えば、読み出し専用メモリ（「ＲＯＭ」）、ランダムアクセスメモリ（「ＲＡＭ」）、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリデバイス）を含む。
【００６４】
上述した図面において説明されたプロセス又は方法は、ハードウェア（例えば、回路、専用ロジックなど）、ソフトウェア（例えば、非一時的コンピュータ可読媒体に具現化されるもの）、又は両方の組み合わせを含む処理ロジックにより実行されることができる。前記プロセス又は方法は、以上で特定の順序に応じて説明されたが、前記動作の一部が異なる順序で実行されてもよいことを理解されたい。また、一部の動作は、順番ではなく並行して実行されてもよい。
【００６５】
本開示の実施形態は、いずれの特定のプログラミング言語を参照することなく記載されている。理解すべきなのは、本明細書に記載の本開示の実施形態の教示を実現するために、様々なプログラミング言語を使用することができる。
【００６６】
前記明細書において、本開示の実施形態は、既にその具体的な例示的な実施形態を参照しながら記載された。明らかなように、添付された特許請求の範囲に記載された本開示のより広い趣旨及び範囲を逸脱しない限り、本開示に対して様々な変更を行うことができる。それゆえに、本明細書及び図面は、限定的な意味でなく、例示的な意味で理解されるべきである。
【図１】
2020109619.tif 000003
【図２】
2020109619.tif 000004
【図３Ａ】
2020109619.tif 000005
【図３Ｂ】
2020109619.tif 000006
【図４】
2020109619.tif 000007
【図５Ａ】
2020109619.tif 000008
【図５Ｂ】
2020109619.tif 000009
【図６】
2020109619.tif 000010
【図７Ａ】
2020109619.tif 000011
【図７Ｂ】
2020109619.tif 000012
【図８】
2020109619.tif 000013
【手続補正書】
【提出日】令和2年1月17日(2020.1.17)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の実施形態は、主にデータ処理システムに関する。より具体的には、本開示の実施形態は自動運転車両のための柔軟なホスト及びクライアント構成を備える計算及びストレージ拡張デバイスに関する。
【背景技術】
【０００２】
自動運転モードで走行する（例えば、ドライバーレス）車両は、乗員、特に運転手をいくつかの運転に関する責務から解放させることができる。車両は、自動運転モードで走行する時に、車載センサを利用して様々な位置までナビゲートすることができるので、ヒューマンマシンインタラクションが最も少ない場合、又は乗員がいない場合などに車両を運転することが可能となる。
【０００３】
自動運転の開発には、システム内の拡張可能で動的に構成可能なハードウェアコンピューティング及びストレージリソースが必要である。さらに、さまざまな機能とパフォーマンスの目標とアーキテクチャを対象とする場合、ホストとクライアントの構成とデータフローが異なる場合がある。従来の方法は、メインシステムに接続し、計算デバイスやストレージデバイスを追加した拡張デバイスを構築することである。このような方法は通常、メインシステムをホストに指定し、拡張デバイスはすべてクライアントであるか、異なる要件を満たすシステムを構築するために複数の異なるハードウェアデバイスを必要とする。
【発明の概要】
【０００４】
本願の一態様によれば、自動運転で利用されるデータ処理システムであって、前記システムは、１つ又は複数のホストプロセッサと、命令を格納するメモリとを備えるホストシステムであって、前記命令は前記ホストプロセッサによって実行されると、自動運転車両（ＡＤＶ）を運転するための自動運転操作を前記ホストプロセッサに実行させるホストシステムと、前記ホストシステムから前記自動運転操作の少なくとも一部をオフロードするためにバスを介して前記ホストシステムに接続される拡張デバイスとを備え、前記拡張デバイスは、スイッチデバイスと、前記スイッチデバイスに接続される複数の処理モジュールであって、前記処理モジュールのそれぞれは、前記ホストシステムからオフロードされた前記自動運転操作の少なくとも１つを実行するように構成され、前記処理モジュールの少なくとも１つは、前記拡張デバイス内の別のクライアントノードにタスクを割り当てるために、前記ホストシステム又はホスト処理ノードから受信された命令に応じて動作を実行するクライアント処理ノードとして構成されることができる複数の処理モジュールと、を備えるデータ処理システムを提供する。
【０００５】
本願の他の態様によれば、自動運転で使用される拡張デバイスであって、前記デバイスは、ホストシステムに接続されるホストインターフェースであって、前記ホストシステムは、１つ又は複数のホストプロセッサと、命令を格納するメモリとを備え、前記命令は前記ホストプロセッサによって実行されると、自動運転車両（ＡＤＶ）を運転するための自動運転操作を前記ホストプロセッサに実行させるホストインターフェースと、前記ホストインターフェイスに接続されるスイッチデバイスと、前記スイッチデバイスに接続される複数の処理モジュールであって、前記処理モジュールのそれぞれは、前記ホストシステムからオフロードされた自動運転操作の少なくとも１つを実行するように構成され、前記処理モジュールの少なくとも１つは、前記拡張デバイス内の別のクライアントノードにタスクを割り当てるために、前記ホストシステム又はホスト処理ノードから受信された命令に応じて動作を実行するクライアント処理ノードとして構成されることができる複数の処理モジュールと、を備える自動運転で使用される拡張デバイスを提供する。
【図面の簡単な説明】
【０００６】
本開示の実施形態は、図面の各図において限定的ではなく例示的な形態で示され、図面における同様の符号が同様の素子を示す。
【０００７】
【図１】一実施形態に係るネットワーク化システムを示すブロック図である。
【０００８】
【図２】一実施形態に係る自動運転車両の一例を示すブロック図である。
【０００９】
【図３Ａ】一実施形態に係る自動運転車両と共に使用される感知・計画システムの一例を示すブロック図である。
【図３Ｂ】一実施形態に係る自動運転車両と共に使用される感知・計画システムの一例を示すブロック図である。
【００１０】
【図４】一実施形態に係るデータ処理システムの一例を示すブロック図である。
【００１１】
【図５Ａ】一実施形態に係るデータ処理システムの一例を示すブロック図である。
【００１２】
【図５Ｂ】一実施形態に係る、ホストシステムと拡張デバイスとの間でデータを処理するプロセスを示す処理図である。
【００１３】
【図６】一実施形態に係るデータ処理システムの一例を示すブロック図である。
【００１４】
【図７Ａ】一実施形態に係るデータ処理システムの一例を示すブロック図である。
【図７Ｂ】一実施形態に係るデータ処理システムの一例を示すブロック図である。
【００１５】
【図８】一実施形態に係る、ホストシステムと拡張デバイスとの間でデータを処理するプロセスを示す処理図である。
【発明を実施するための形態】
【００１６】
以下に説明される詳細を参照しながら本開示の様々な実施形態及び態様を説明し、添付図面には上記の各実施形態が示される。以下の説明及び図面は、本開示を説明するためのものであり、本開示を限定するものではないことを理解されたい。本開示の様々な実施形態を完全に把握するために、多数の特定の詳細を説明する。なお、本開示の実施形態を簡潔的に説明するように、周知又は従来技術の詳細について説明していない場合もある。
【００１７】
本明細書において、「一実施形態」又は「実施形態」とは、当該実施形態に基づいて説明された特定の特徴、構造又は特性が本開示の少なくとも一つの実施形態に含まれてもよいと意味する。「一実施形態では」という表現は、本明細書の全体において全てが同一の実施形態を指すとは限らない。
【００１８】
いくつかの実施形態によれば、例えば、自動運転システムの一部としての計算及びストレージ拡張デバイスにより、柔軟なホスト及びクライアント構成がクライアントデバイス、ホストデバイス、又はその両方として機能することが可能となる。このような拡張デバイスは、メインシステムに対するクライアントデバイスの補足として機能するか、又はホストデバイスとクライアントデバイスの両方を含むフルシステムとして機能することができ、かつ、別のフルシステムとはホスト間通信を実行できる。このような変更はファームウェアの更新のみを必要とするが、同じハードウェア実装で機能し、即ちハードウェアを変更する必要がない。すべての計算及びストレージモジュールは、ＰＣＩｅやイーサネット（登録商標）プロトコルなどのさまざまな入出力（ＩＯ）バスプロトコルを介してスイッチデバイスに接続される。そのようなスイッチデバイスは、計算モジュールとストレージモジュールとの間の通信だけでなく、拡張モジュールの外部のメインシステム又はホストシステムとの通信も可能にする。
【００１９】
本開示の一態様によれば、自動運転車両（ＡＤＶ）で使用可能なデータ処理システムには、ホストシステムと、バスを介してホストシステムに接続された１つ又は複数の拡張デバイスが備えられる。ホストシステムは、ＡＤＶの感知・計画システムの一部である場合がある。ホストシステムは、１つ又は複数のプロセッサと、命令を格納するメモリとを備えていてもよく、前記命令は実行されると、ＡＤＶを運転するための自動運転操作をプロセッサに実行させる。各拡張デバイスには、スイッチデバイスと、スイッチデバイスに接続される１つ又は複数の処理モジュールが備えられる。各処理モジュールは、ホストシステムからオフロードされる自動運転操作の少なくとも１つを実行するように構成できる。処理モジュールの少なくとも１つは、ホストシステムから受信した命令に応じて動作を実行するクライアントノードとして構成できる。あるいは、拡張デバイス内の別のクライアントノードにタスクを配布するホストノードとして構成できる。
【００２０】
一実施形態では、拡張デバイスの初期化中に、拡張デバイスのファームウェアは、ホストシステムが拡張デバイスに接続されていることをスキャン及び検出するように構成される。そのような検出に応じて、ファームウェアは、拡張デバイスの処理モジュールの少なくとも１つをホストシステムのクライアントデバイスとして構成する。そのような状況では、ホストシステムは、自動運転操作（例えば、感知、予測、決定、及び／又は計画プロセス）の少なくとも１つをクライアントデバイスとして構成された処理モジュールにオフロードできる。処理モジュールをホストシステムのクライアントデバイスとして構成する際、ファームウェアは、ホストシステムから（例えば、ＰＣＩ構成レジスタで適切なバス番号とデバイス番号を割り当てることにより）開始されたバス列挙プロセスに応答し、それによって処理モジュールは、ホストシステムに対するクライアントデバイスとして見られる。
【００２１】
ホストシステムが検出されていない場合、一実施形態によれば、拡張デバイスのファームウェアは、少なくとも１つの処理モジュールを選択してホストノード又はホスト処理モジュールとして構成し、残りの処理モジュールはホストノードに対するクライアントデバイスとして構成される。このような状況では、拡張デバイスは外部ホストシステムに対してスタンドアロンシステム又はピアシステムとして動作する。別の実施形態によれば、処理モジュールの第１の部分は、拡張デバイスの外部にあるホストシステムのクライアントノードとして構成される。処理モジュールの第２の部分は、少なくとも１つのホストノードと、１つ又は複数のクライアントノードを備える個別のシステムとして構成される。外部ホストシステム（拡張デバイスの処理モジュールの第１の部分とともに）及び拡張デバイスの処理モジュールの第２の部分は、ピアデータ処理システムとして動作する。
【００２２】
別の実施形態によれば、拡張の処理モジュールは、外部ホストシステムのクライアントノードとして構成することができ、拡張デバイス内の別の処理モジュールに対するホストノードとしても構成される。ホストシステムから受信されたデータに応じて、処理モジュールは、ホストシステムのクライアントノードとして、データのデータ処理操作（例えば、圧縮、暗号化、データマイニングなど）を実行する。その後、ホストノードとして動作する処理モジュールは、バスプロトコルを使用したスイッチデバイス経由のルーティング、又はピアツーピアトランザクション（例：ダイレクトメモリアクセス又はＤＭＡトランザクション）により、処理されたデータを拡張デバイスの別の処理モジュール（例えば、ストレージモジュールなど）に配信し、データに対して別のアクションを実行する（例えば、データを拡張デバイスのストレージデバイスに格納するなど）。
【００２３】
本開示の別の態様によれば、外部ホストシステムからデータ処理操作をオフロードするために使用できる拡張デバイスは、外部ホストシステムに接続可能なホストインターフェースと、スイッチデバイスと、スイッチデバイスに接続された１つ又は複数の処理モジュールとを備える。ホストシステムは、ＡＤＶを自動運転するための感知・計画システムであってもよい。ホストシステムは、１つ又は複数のホストプロセッサと、命令を格納するメモリとを備えていてもよく、前記命令はホストプロセッサによって実行されると、自動運転操作をプロセッサに実行させる。処理モジュールの少なくとも１つは、ホストシステムからオフロードされる自動運転操作の少なくとも１つを実行するクライアントデバイスとして構成できる。クライアントデバイスとして構成された他の処理モジュールにタスクを割り当てるために、処理モジュールの少なくとも１つはホストデバイスとして構成されてもよい。拡張デバイスは、上記の特徴又は構成要素をさらに備えていてもよい。
【００２４】
図１は、本開示の一実施形態に係る自動運転車両のネットワーク構成を示すブロック図である。図１に示すように、ネットワーク構成１００には、ネットワーク１０２を介して１つ又は複数のサーバ１０３〜１０４に通信可能に接続される自動運転車両１０１が備えられる。一台の自動運転車両のみが示されたが、複数の自動運転車両がネットワーク１０２を介して互いに接続され、及び／又はサーバ１０３〜１０４に接続されてもよい。ネットワーク１０２は、任意のタイプのネットワークであってもよく、例えば、有線又は無線のローカルエリアネットワーク（ＬＡＮ）、インターネットなどのワイドエリアネットワーク（ＷＡＮ）、セルラーネットワーク、衛星ネットワーク、又はそれらの組み合わせが挙げられる。サーバ１０３〜１０４は、任意のタイプのサーバ又はサーバクラスタであってもよく、例えば、ネットワーク又はクラウドサーバ、アプリケーションサーバ、バックエンドサーバ、又はそれらの組み合わせが挙げられる。サーバ１０３〜１０４は、データ解析サーバ、コンテンツサーバ、交通情報サーバ、地図・ポイントオブインタレスト（ＭＰＯＩ）サーバ又は位置サーバなどであってもよい。
【００２５】
自動運転車両とは、運転手からの入力が非常に少ない又はない場合に車両をナビゲートして環境を通過させる自動運転モードに構成可能な車両である。このような自動運転車両は、車両の走行環境に関連する情報を検出するように構成された１つ又は複数のセンサを有するセンサシステムを備えていてもよい。前記車両及びその関連コントローラは、検出された情報を使用して前記環境を通過するようにナビゲートする。自動運転車両１０１は、手動モード、完全自動運転モード、又は部分自動運転モードで走行することができる。
【００２６】
一実施形態において、自動運転車両１０１は、感知・計画システム１１０、車両制御システム１１１、無線通信システム１１２、ユーザインターフェースシステム１１３及びセンサシステム１１５を含むが、それらに限定されない。自動運転車両１０１には、一般車両に備えられているいくつかの一般的な構成要素、例えばエンジン、車輪、ステアリングホイール、変速機などが更に備えられてもよい。前記構成要素は、車両制御システム１１１及び／又は感知・計画システム１１０により複数種の通信信号及び／又はコマンドを使用して制御可能である。これらの複数種の通信信号及び／又はコマンドは、例えば、加速信号又はコマンド、減速信号又はコマンド、ステアリング信号又はコマンド、ブレーキ信号又はコマンドなどが挙げられる。
【００２７】
構成要素１１０〜１１５は、インターコネクタ、バス、ネットワーク又はこれらの組み合わせを介して互いに通信可能に接続されることができる。例えば、構成要素１１０〜１１５は、コントローラエリアネットワーク（ＣＡＮ）バスを介して互いに通信可能に接続されることができる。ＣＡＮバスは、ホストコンピュータなしのアプリケーションでマイクロコントローラ及びデバイスが相互に通信できるように設計された車両バス規格である。それは、もともと自動車内の多重電気配線のために設計されたメッセージに基づくプロトコルであるが、他の多くの環境にも用いられる。
【００２８】
ここで図２を参照し、一実施形態では、センサシステム１１５は、１つ又は複数のカメラ２１１、全地球測位システム（ＧＰＳ）ユニット２１２、慣性計測ユニット（ＩＭＵ）２１３、レーダユニット２１４及び光検出・測距（ＬＩＤＡＲ）ユニット２１５を含むが、それらに限定されない。ＧＰＳシステム２１２は、自動運転車両の位置に関する情報を提供するように動作可能な送受信機を含んでいてもよい。ＩＭＵユニット２１３は、慣性加速度に基づいて自動運転車両の位置及び配向の変化を感知することができる。レーダユニット２１４は、無線信号を利用して自動運転車両のローカル環境内のオブジェクトを感知するシステムを表すことができる。いくつかの実施形態では、オブジェクトを感知することに加えて、レーダユニット２１４は、更にオブジェクトの速度及び／又は進行方向を感知することができる。ＬＩＤＡＲユニット２１５は、自動運転車両の所在環境内のオブジェクトをレーザで感知することができる。ＬＩＤＡＲユニット２１５は、他のシステム構成要素のほかに、１つ又は複数のレーザ源、レーザスキャナ及び１つ又は複数の検出器を更に備えていてもよい。カメラ２１１は、自動運転車両の周囲環境の画像を取得するための１つ又は複数の装置を備えていてもよい。カメラ２１１は、スチルカメラ及び／又はビデオカメラであってもよい。カメラは、例えば、回転及び／又は傾斜のプラットフォームに取り付けられる機械的に移動可能なものであってもよい。
【００２９】
センサシステム１１５は、ソナーセンサ、赤外線センサ、ステアリングセンサ、スロットルセンサ、ブレーキセンサ及びオーディオセンサ（例えば、マイクロホン）などの他のセンサを更に含むことができる。オーディオセンサは、自動運転車両の周囲の環境から音声を取得するように構成されてもよい。ステアリングセンサは、ステアリングホイールの操舵角、車輪の回転角度又はそれらの組み合わせを感知するように構成されてもよい。スロットルセンサ及びブレーキセンサはそれぞれ車両のスロットル位置及びブレーキ位置を感知する。ある場合に、スロットルセンサ及びブレーキセンサは集積型スロットル／ブレーキセンサとして統合されてもよい。
【００３０】
一実施形態では、車両制御システム１１１は、ステアリングユニット２０１、スロットルユニット２０２（加速ユニットとも呼ばれる）及びブレーキユニット２０３を含むが、それらに限定されない。ステアリングユニット２０１は車両の方向又は進行方向を調整するために用いられる。スロットルユニット２０２はモータ又はエンジンの速度を制御するために用いられ、モータ又はエンジンの速度は更に車両の速度及び加速度を制御するために用いられる。ブレーキユニット２０３は、摩擦を与えることによって車両の車輪又はタイヤを減速させることで、車両を減速させる。なお、図２に示された構成要素は、ハードウェア、ソフトウェア又はそれらの組み合わせで実現されてもよい。
【００３１】
図１を再び参照して、無線通信システム１１２は、自動運転車両１０１と、デバイス、センサ、他の車両などのような外部システムとの通信を可能にする。例えば、無線通信システム１１２は、直接又は通信ネットワークを介して、１つ又は複数のデバイスと無線通信することができ、例えば、ネットワーク１０２を介してサーバ１０３〜１０４と通信することができる。無線通信システム１１２は、如何なるセルラー通信ネットワーク又は無線ローカルエリアネットワーク（ＷＬＡＮ）、例えばＷｉＦｉ（登録商標）を使用して他の構成要素又はシステムと通信することができる。無線通信システム１１２は、例えば赤外線リンク、ブルートゥース（登録商標）などを使用して、デバイス（例えば、乗員のモバイルデバイス、表示装置、車両１０１内のスピーカ）と直接通信することができる。ユーザインターフェースシステム１１３は、車両１０１内に実現された周辺装置の部分であってもよく、例えば、キーボード、タッチスクリーン表示装置、マイクロホン及びスピーカなどを含む。
【００３２】
自動運転車両１０１の機能のうちの一部又は全部は、特に自動運転モードで動作する場合に、感知・計画システム１１０により制御されるか、又は管理されることができる。感知・計画システム１１０は、センサシステム１１５、制御システム１１１、無線通信システム１１２及び／又はユーザインターフェースシステム１１３から情報を受信し、受信された情報を処理し、出発地から目的地までのルート又は経路を計画した後に、計画及び制御情報に基づいて車両１０１を運転するために、必要なハードウェア（例えば、プロセッサ、メモリ、記憶デバイス）並びにソフトウェア（例えば、オペレーティングシステム、計画・ルーティングプログラム）を備える。あるいは、感知・計画システム１１０は車両制御システム１１１と一体に統合されてもよい。
【００３３】
例えば、乗員であるユーザは、例えばユーザインターフェースを介して旅程の開始位置及び目的地を指定することができる。感知・計画システム１１０は旅程に関連するデータを取得する。例えば、感知・計画システム１１０は、ＭＰＯＩサーバから位置及びルート情報を取得することができる。前記ＭＰＯＩサーバは、サーバ１０３〜１０４の一部であってもよい。位置サーバは位置サービスを提供し、ＭＰＯＩサーバは地図サービス及び特定の位置のＰＯＩを提供する。あるいは、このような位置及びＭＰＯＩ情報は、感知・計画システム１１０の永続性記憶装置にローカルキャッシュされてもよい。
【００３４】
自動運転車両１０１がルートに沿って移動している場合に、感知・計画システム１１０は交通情報システム又はサーバ（ＴＩＳ）からリアルタイム交通情報を取得することもできる。なお、サーバ１０３〜１０４は第三者機関によって操作可能である。あるいは、サーバ１０３〜１０４の機能は、感知・計画システム１１０と一体に統合されてもよい。感知・計画システム１１０は、リアルタイム交通情報、ＭＰＯＩ情報及び位置情報、並びにセンサシステム１１５により検出又は感知されたリアルタイムローカル環境データ（例えば、障害物、オブジェクト、付近の車両）に基づいて、所定の目的地まで安全的且つ効率的に到達するために、最適なルートを計画し、且つ計画されたルートに従って例えば制御システム１１１によって車両１０１を運転することができる。
【００３５】
サーバ１０３は、様々なクライアントに対してデータ解析サービスを実行するデータ解析システムであってもよい。一実施形態において、データ解析システム１０３は、データコレクタ１２１と、機械学習エンジン１２２とを備える。データコレクタ１２１は、様々な車両（自動運転車両又は人間の運転手によって運転される一般車両）から運転統計データ１２３を収集する。運転統計データ１２３には、異なる時点で発行された運転コマンド（例えば、スロットルコマンド、ブレーキコマンド及びステアリングコマンド）と、車両のセンサにより捕獲された車両の応答（例えば、速度、加速、減速、方向）とを示す情報が含まれる。運転統計データ１２３には更に、異なる時点における運転環境を記述する情報、例えば、ルート（開始位置及び目的地位置を含む）、ＭＰＯＩ、道路状況、天気状況などが含まれてもよい。
【００３６】
機械学習エンジン１２２は、運転統計データ１２３に基づいて、さまざまな目的のためにルール、アルゴリズム及び／又は予測モデル１２４のセットを生成するか又は訓練する。一実施形態では、アルゴリズム１２４は、ＡＤＶを運転するための感知・計画アルゴリズムを含み得る。その後、アルゴリズム１２４を自動運転中にリアルタイムで利用するためにＡＤＶにアップロードすることができる。
【００３７】
図３Ａ及び図３Ｂは、一実施形態に係る自動運転車両と共に使用される感知・計画システムの一例を示すブロック図である。システム３００は、図１の自動運転車両１０１の一部として実現されてもよく、感知・計画システム１１０、制御システム１１１及びセンサシステム１１５を含むが、それらに限定されない。図３Ａ〜図３Ｂに示すように、感知・計画システム１１０は、測位モジュール３０１、感知モジュール３０２、予測モジュール３０３、決定モジュール３０４、計画モジュール３０５、制御モジュール３０６及びルーティングモジュール３０７を含むが、それらに限定されない。
【００３８】
モジュール３０１〜３０７のうちの一部又は全部は、ソフトウェア、ハードウェア又はそれらの組み合わせで実現されていてもよい。例えば、これらのモジュールは、永続性記憶装置３５２にインストールされ、メモリ３５１にロードされ、且つ１つ又は複数のプロセッサ（図示せず）により実行されてもよい。なお、これらのモジュールのうちの一部又は全部は、図２の車両制御システム１１１の一部又は全部のモジュールに通信可能に接続されるか、又はそれらと一体に統合されてもよい。モジュール３０１〜３０７のうちの一部は、集積モジュールとして一体に統合されてもよい。例えば、予測モジュール３０３、決定モジュール３０４、計画モジュール３０５、及び／又は制御モジュール３０６は、より少ないモジュール又は単一のモジュールに統合されてもよい。
【００３９】
測位モジュール３０１は、（例えば、ＧＰＳユニット２１２により）、自動運転車両３００の現在位置を確定し、ユーザの旅程又はルートに関連する如何なるデータを管理する。測位モジュール３０１（地図・ルートモジュールとも呼ばれる）は、ユーザの旅程又はルートに関連する如何なるデータを管理する。ユーザは、例えばユーザインターフェースを介してログインして、旅程の開始位置及び目的地を指定することができる。測位モジュール３０１は、自動運転車両３００における地図・ルート情報３１１のような他の構成要素と通信して旅程に関するデータを取得する。例えば、測位モジュール３０１は位置サーバと地図・ポイントオブインタレスト（ＭＰＯＩ）サーバから位置及びルート情報を取得することができる。位置サーバは位置サービスを提供し、ＭＰＯＩサーバは地図サービスと特定位置のＰＯＩを提供することにより、地図・ルート情報３１１の一部としてキャッシュされることができる。自動運転車両３００がルートに沿って移動する際に、測位モジュール３０１は交通情報システム又はサーバからリアルタイム交通情報を取得することもできる。
【００４０】
感知モジュール３０２は、センサシステム１１５により提供されたセンサデータと、測位モジュール３０１により取得された測位情報とに基づいて、周囲環境への感知を確定する。感知情報は、一般運転手が運転手により運転されている車両の周囲における感知すべきものを示すことができる。感知とは、例えばオブジェクトの形式で、車線構成、信号機信号、他の車両の相対位置、歩行者、建築物、横断歩道又は他の交通関連標識（例えば、止まれ標識、ゆずれ標識）などを含むことができる。車線構成は、例えば、車線の形状（例えば、直線又は湾曲）、車線の幅、道路内の車線数、一方向車線又は二方向車線、合流車線又は分流車線、退出車線など、１本又は複数の車線を記述する情報を含む。
【００４１】
感知モジュール３０２は、１つ又は複数のカメラによって取り込まれた画像を処理及び解析して、自動運転車両の環境内のオブジェクト及び／又は特徴を認識するためのコンピュータビジョンシステム又はコンピュータビジョンシステムの機能を含むことができる。前記オブジェクトは、交通信号、道路境界、他の車両、歩行者及び／又は障害物などを含んでいてもよい。コンピュータビジョンシステムは、オブジェクト認識アルゴリズム、ビデオトラッキング及び他のコンピュータビジョン技術を使用することができる。いくつかの実施形態では、コンピュータビジョンシステムは、環境地図の描画、オブジェクトの追跡、及びオブジェクトの速度の推定などができる。感知モジュール３０２は、レーダ及び／又はＬＩＤＡＲのような他のセンサにより提供される他のセンサデータに基づいてオブジェクトを検出することもできる。
【００４２】
各オブジェクトについて、予測モジュール３０３は、前記状況における前記オブジェクトの挙動を予測する。前記予測は、特定の時点で感知された運転環境の感知データに基づいて地図・ルート情報３１１と交通ルール３１２のセットを考慮した上で実行される。例えば、オブジェクトが反対方向に沿った車両で、且つ現在の運転環境に交差点が含まれている場合に、予測モジュール３０３は当該車両が直進するか又は曲がるかを予測する。感知データによって交差点に信号機がないことが示された場合、予測モジュール３０３は、交差点に入る前に当該車両が完全に停止する必要があると予測する可能性がある。当該車両が現在左折専用車線又は右折専用車線にあると感知データにより示された場合に、予測モジュール３０３は、当該車両がそれぞれ左折又は右折する可能性が高いと予測可能である。
【００４３】
オブジェクトごとに対して、決定モジュール３０４はオブジェクトをどのように処置するかを決定する。例えば、特定のオブジェクト（例えば、交差ルートにおける他の車両）及びオブジェクトを記述するメタデータ（例えば、速度、方向、曲がり角（ｔｕｒｎｉｎｇ  ａｎｇｌｅ））について、決定モジュール３０４は前記オブジェクトと遇うときに如何に対応するか（例えば、追い越し、道譲り、停止、追い抜き）を決定する。決定モジュール３０４は、交通ルール又は運転ルール３１２のような、永続性記憶装置３５２に格納可能なルールセットに基づいて、このような決定を下すことができる。
【００４４】
ルーティングモジュール３０７は、出発地から目的地までの１つ又は複数のルート又は経路を提供するように構成される。例えばユーザから受信した開始位置から目的地位置までの所定の旅程について、ルーティングモジュール３０７は、地図・ルート情報３１１を取得し、開始位置から目的地位置までの全ての走行可能なルート又は経路を確定する。ルーティングモジュール３０７は、開始位置から目的地位置が確定されたルートのそれぞれについて、基準線を地形図の形で生成することができる。基準線とは、他の車両、障害物又は交通状況などからの他の干渉を受けていない理想的なルート又は経路をいう。つまり、道路に他の車両、歩行者又は障害物がない場合、ＡＤＶは基準線に精確的に又は密接的に従うべきである。そして、地形図を決定モジュール３０４及び／又は計画モジュール３０５に提供することができる。決定モジュール３０４及び／又は計画モジュール３０５は、他のモジュールにより提供された他のデータ（例えば測位モジュール３０１からの交通状况、感知モジュール３０２により感知された運転環境及び予測モジュール３０３により予測された交通状况）に応じて、全ての走行可能なルートを調べて最適ルートの一つを選択及び補正する。ある時点における特定の運転環境に応じて、ＡＤＶを制御するための実際の経路又はルートは、ルーティングモジュール３０７によって提供された基準線に近いか又は異なっていてもよい。
【００４５】
感知されたオブジェクトのそれぞれに対する決定に基づいて、計画モジュール３０５は、ルーティングモジュール３０７によって提供された基準線をベースとし、自動運転車両に対して経路又はルート並びに運転パラメータ（例えば、距離、速度及び／又は操舵角）を計画する。特定のオブジェクトについて、決定モジュール３０４は当該オブジェクトに対して何をするかを決定し、計画モジュール３０５はどのようにするかを決定する。例えば、所定のオブジェクトについて、決定モジュール３０４は、前記オブジェクトを追い抜くかを決定することができ、計画モジュール３０５は前記オブジェクトを左側から追い抜くか又は右側から追い抜くかを判定することができる。計画及び制御データは、計画モジュール３０５により生成され、車両３００が次の移動周期（例えば、次のルート／経路区間）にはどのように移動するかを記述する情報を含む。例えば、計画及び制御データは、車両３００が３０マイル／時間（ｍｐｈ）の速度で１０メートル移動し、その後に２５ｍｐｈの速度で右車線に変更するように指示することができる。
【００４６】
制御モジュール３０６は、計画及び制御データに基づいて、計画及び制御データにより定義されたルート又は経路に応じて適当なコマンド若しくは信号を車両制御システム１１１に送信することにより自動運転車両を制御及び運転する。前記計画及び制御データは、経路又はルートに沿って異なる時点で適切な車両構成又は運転パラメータ（例えば、スロットル、ブレーキ、及びステアリングコマンド）を使用して、車両をルート又は経路の第１の点から第２の点まで運転するのに十分な情報を含む。
【００４７】
一実施形態では、計画段階は、複数の計画周期（運転周期ともいう）で、例えば、１００ミリ秒（ｍｓ）の時間間隔で実行される。計画周期又は運転周期ごとについて、計画及び制御データに基づいて１つ又は複数の制御コマンドを発する。すなわち、１００ｍｓごとに、計画モジュール３０５は、次のルートセグメント又は経路区間（例えば、目標位置及びＡＤＶが該目標位置に到着するのに必要な時間を含む）を計画する。あるいは、計画モジュール３０５は、具体的な速度、方向、及び／又は操舵角などを更に指定することができる。一実施形態では、計画モジュール３０５は、次の所定期間（例えば、５秒）のルートセグメント又は経路区間を計画する。各計画周期について、計画モジュール３０５は前の周期において計画された目標位置に基づいて現在の周期（例えば、次の５秒）のための目標位置を計画する。次に、制御モジュール３０６は、現在の周期における計画及び制御データに基づいて１つ又は複数の制御コマンド（例えば、スロットル制御コマンド、ブレーキ制御コマンド、ステアリング制御コマンド）を生成する。
【００４８】
なお、決定モジュール３０４及び計画モジュール３０５は、集積モジュールとして統合されてもよい。決定モジュール３０４／計画モジュール３０５は、自動運転車両の運転経路を決定するためのナビゲーションシステム又はナビゲーションシステムの機能を備えていてもよい。例えば、ナビゲーションシステムは、自動運転車両が最終的な目的地に通じる走行車線に基づく経路に沿って進行すると共に感知された障害物を実質的に回避するように、自動運転車両を経路に沿って移動させることを実現するための一連の速度及び進行方向を確定することができる。目的地は、ユーザインターフェースシステム１１３を経由して行われたユーザ入力によって設定されることができる。ナビゲーションシステムは、自動運転車両が走行していると同時に運転経路を動的に更新することができる。ナビゲーションシステムは、自動運転車両のための運転経路を決定するために、ＧＰＳシステム及び１つ又は複数の地図からのデータを統合することができる。
【００４９】
図４は、一実施形態に係るデータ処理システムのアーキテクチャの一例を示すブロック図である。プロセス４００は、図１の感知・計画システム１１０又は図３のシステム３００を表すことができる。図４を参照すると、システム４００は、１つ又は複数の拡張システム又は拡張デバイス４０２〜４０３に接続されるホストシステム４０１を備える。拡張システム４０２〜４０３のアーキテクチャは、同一又は類似のものとすることができる。ホストシステム４０１は、クライアント又はサーバなどの任意の種類のコンピュータとすることができる。ホストシステム４０１は、１つ又は複数のプロセッサと、実行可能な命令を格納するメモリとを備え、前記命令はプロセッサによって実行されると、図１〜図３に関して上述したような自動運転操作の少なくとも一部をプロセッサに実行させる。例えば、ホストシステム４０１は、そこで実行される構成要素３０１〜３０７をホストしてもよい。
【００５０】
１つ又は複数の拡張システム４０２〜４０３は、例えば、周辺構成要素インターフェースエクスプレス（ＰＣＩｅ）バスなどのバスを介してホストシステム４０１に接続されてもよい。一実施形態では、拡張システム（拡張デバイスとも呼ばれる）４０２〜４０３のそれぞれは、自動運転操作の少なくとも一部をホストシステム４０１からモジュール３０１〜３０７からオフロードするように構成することができる。例示の目的で、拡張デバイス４０２を詳細に説明する。ただし、同じ説明は、拡張デバイス４０３などの他の拡張デバイスにも適用できる。
【００５１】
一実施形態では、拡張デバイスには、スイッチデバイス４１０と、スイッチデバイス４１０に接続される１つ又は複数の処理モジュール４１１〜４１３が備えられる。処理モジュール４１１〜４１３のそれぞれは、プロセッサ、メモリ、及び／又はローカルストレージを含むことができ、ホストシステム４０１又は拡張デバイス４０２内の別のホストノードに代わってデータ処理集中操作などの１組の専用操作を実行するために１つ又は複数の命令を実行できる。処理モジュールは、データを保存するためのストレージデバイスを備えるストレージモジュールであってもよい。プロセッサは、中央処理装置（ＣＰＵ）、汎用処理装置（ＧＰＵ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、システムオンチップ（ＳｏＣ）、デジタルシグナルプロセッサ（ＤＳＰ）、マイクロコントローラ（例えば、ストレージコントローラ）、又は特定用途向け集積回路（ＡＳＩＣ）であってもよい。これらのモジュール又はプロセッサは、ＣＯＭ  Ｅｘｐｒｅｓｓ（ＣＯＭｅ）、ＰＣＩｅ、又はモバイルＰＣＩｅモジュール（ＭＸＭ）フォームファクター（ｆｏｒｍ  ｆａｃｔｏｒ）などのさまざまなフォームファクターで実装できる。これらのフォームファクターにより、ユーザは、カスタマイズされたデザイン又は商用オフザシェルフ（ＣＯＴＳ：Ｃｏｍｍｅｒｃｉａｌ  Ｏｆｆ  Ｔｈｅ  Ｓｈｅｌｆ）からのさまざまな製品を積み重ねて、拡張デバイスを構築できる。ストレージモジュールのストレージデバイスは、Ｕ．２又はＭ．２フォームファクターを有するソリッドステートデバイス（ＳＳＤ）、マルチメディアカード（ＭＭＣ）及びセキュアデジタル（ＳＤ）カード、ユニバーサルシリアルバス（ＵＳＢ）フラッシュドライブであってもよい。
【００５２】
一実施形態では、上述のように、オフロード又は加速することができるデータ処理操作は、ＡＤＶの運転環境を感知する感知プロセス、感知された障害物の動きを予測する予測プロセス（例えば、画像処理、ＬＩＤＡＲ点群処理）、ＡＤＶが何を行うべきかを決定する決定プロセス、ＡＤＶを適切に運転するための軌跡を計画する計画プロセスを備えていてもよい。これらの操作はどれも、並列、直列、又はパイプライン方式で実行するために、１つ又は複数の処理モジュール４１１〜４１３に割り当てられる。例えば、感知プロセスは第１の処理モジュールによって実行されることができ、結果は、図３Ｂに示すような予測プロセス、決定プロセス、及び／又は計画プロセスを実行するように構成された第２の処理モジュールにルーティングされることができる。上述のように、特定のニーズに応じて、処理モジュール４１１〜４１３の少なくともいくつかは、クライアントノード、ホストノード、又はその両方として構成されてもよい。
【００５３】
図５Ａは、一実施形態に係るクライアントデバイスに構成された拡張デバイスを示すブロック図である。図５Ａを参照すると、この例では、すべての処理モジュール４１１〜４１５は、ホストシステム４０１に対するクライアントデバイスとして構成されている。そのような構成は、拡張デバイス４０２の初期化中に実行することができる。具体的には、ホストシステム４０１がＰＣＩｅバスなどのバスを介して拡張デバイス４０２に接続されている場合、拡張デバイス４０２のファームウェアは、ホストシステム４０１から開始されたバス列挙（ｂｕｓ  ｅｎｕｍｅｒａｔｉｏｎ）に応答する。次に、ファームウェアは、処理モジュール４１１−４１５をルートノード又はルートデバイスとして使用するホストシステム４０１に対するクライアントデバイス又はエンドポイントノードになるように構成し、それによって処理モジュール４１１−４１５は、後続のメモリ及びホストシステム４０１から開始されるＩＯサイクルに応答できる。処理モジュール４１１−４１５がホストシステム４０１のクライアントデバイス（例えば、ＰＣＩバスサイクル）として構成されると、ホストシステム４０１はタスク、特に計算集中タスクを処理モジュール４１１−４１５に割り当てることができる。ホストシステム４０１は、拡張デバイス４０２の特定のクライアント処理モジュールのバス番号とデバイス番号を指定することにより、タスクを割り当てることができる。それに応じて、スイッチデバイス４１０は、タスクをターゲット処理モジュールにルーティングする。その後、操作の結果をホストシステム４０１に送信できる。ホストシステム４０１は、例えば、ストレージモジュール４１４〜４１５を介して、拡張デバイス４０２によって維持されるストレージデバイスを利用することもできる。
【００５４】
図５Ｂは、一実施形態に係る、ホストシステムとクライアントデバイスとしての拡張デバイスとの間のトランザクションを示すフローチャートである。図５Ｂを参照すると、処理モジュール４１１は、ホストシステム４０１に対するクライアントデバイスとして構成されていると想定される。操作５０１において、ホストシステム４０１は、データを処理するためのリクエストをスイッチデバイス４１０に送信する。該リクエストには、処理されるデータ、処理方法に関する命令、及びターゲットデバイス識別子（ＩＤ）（この例では、クライアント処理モジュール４１１のバス／デバイス番号）が含まれてもよい。該リクエストに応答して、スイッチデバイス４１０は、操作５０２により該リクエストをターゲットの処理モジュール４１１にルーティングする。次に、ブロック５０３で、処理モジュール４１１は、命令に応じてデータに対して必要な操作を実行し、操作の結果を生成する。該結果は、単純に戻りステータス又は処理されたデータ（例えば、圧縮されたデータ、暗号化されたデータなど）であってもよい。操作５０４において、処理モジュール４１１は該結果をスイッチデバイス４１０に送り返し、スイッチデバイス４１０は同じ結果を操作５０５によりホストシステム４０１にルーティングする。
【００５５】
一実施形態によれば、拡張デバイス４０２は、スタンドアロンシステムとして構成及び起動することもできる。例えば、拡張デバイス４０２は、ホストシステム４０１が拡張デバイス４０２に接続されていないと判断したことに応じて、スタンドアロンシステムとして起動することができる。このような構成では、処理モジュール４１１−４１５の少なくとも１つは、ホストデバイス（例えば、ルートコンプレックス）として構成され、残りの処理モジュールはクライアントデバイス（例えば、エンドポイント）として構成される。拡張デバイス４０２がスタンドアロンシステムとして起動すると、例えば内部テスト操作など、拡張デバイスに関するさまざまな操作を実行できる。別の実施形態では、複数の処理モジュールをホストノードとして構成することができ、ホストノードのそれぞれが拡張デバイス４０２内の別個のスタンドアロンシステムを表す。
【００５６】
別の実施形態によれば、図６に示すように、拡張デバイス４０２はハイブリッドモードで構成されることができ、ここで、処理モジュール４１１−４１５の第１の部分はホストシステム４０１に対するクライアントデバイスとして構成され、処理モジュール４１１−４１５の第２の部分は、スタンドアロンシステムとしてホストシステム４０１に対するピアシステムとして構成できる。図６を参照すると、この例では、処理モジュール４１３はホストノードとして構成されており、処理モジュール４１１−４１２及び４１４−４１５はクライアントデバイスとして構成されている。この例では、処理モジュール４１１及び４１４は、ホストシステム４０１に対するクライアントデバイスであり、システム６０１を形成する。処理モジュール４１２及び４１５は、ホストノードとしての処理モジュール４１３に対するクライアントデバイスであり、システム６０２を形成する。システム６０１及び６０２は、並行して又は独立して動作するピアシステムである。ホストノード４１３は、ホスト間接続により外部ホストシステム４０１と通信することができる。
【００５７】
さらなる実施形態によれば、処理モジュールは、ホストノード及びクライアントノードとして構成され得る。例えば、処理モジュールは、外部ホストシステムのクライアントデバイスとして構成でき、同じ処理モジュールはクライアントノードとして構成された別の処理モジュールのホストノードとしても構成できる。
【００５８】
図７Ａは、一実施形態に係るデータ処理システムのシステム構成の一例を示すブロック図である。図７Ａを参照すると、この例では、処理モジュール４１２は、クライアントノードとホストノードの両方として構成されている。一実施形態では、処理モジュール４１２は、外部ホストシステム４０１に対するクライアントノードとして構成される。また、処理モジュール４１２は、拡張デバイス４０２内の他のクライアントノードに関してホストノードとしても構成される。クライアントノードとして、処理モジュール４１２は、ホストシステム４０１から命令及びデータを受信し、命令に応じてデータに対してデータ処理操作を実行することができる。また、処理モジュール４１２は、処理モジュール４１５などのクライアントノードにタスクを割り当てることができる。例えば、ホストシステム４０１から受信されたデータは、ＡＤＶの運転統計データ（例えば、異なる時点で発行されたコマンドと車両の応答）をキャプチャする自動運転中にキャプチャ及び記録されたデータログのデータであってもよい。データは、処理モジュール４１２によって（ホストシステム４０１に対するクライアントノードとして）処理され、例えば、データ圧縮及び／又は暗号化が挙げられる。次いで、データをストレージデバイスに格納するために、処理されたデータを処理モジュール４１２（ホストノードとして）からストレージモジュールとしての処理モジュール４１５（クライアントノードとして）に送信する。
【００５９】
図７Ｂは、図７Ａに示されるシステムの特定の構成の一例を示している。図７Ｂを参照すると、一実施形態では、処理モジュール４１２は、スイッチデバイス４１０に接続されたエンドポイントポート７０１及びルートポート７０２を備える。ホストシステム４０１が拡張デバイス４０２内のクライアントデバイス、すなわち処理モジュール４１２にデータを送信するとき、処理モジュール４１２は、そのエンドポイントポート７０１から経路７１１を介してデータを受信する。次いで、処理モジュール４１２は、データ圧縮又はデータ暗号化などのデータ処理を行うことができる。次に、処理モジュール４１２は、処理されたデータを、経路７１２を介してそのルートポート７０２からそのクライアントノード、すなわち処理ノード４１５に転送し、対応するアップリンクをスイッチデバイス４１０に転送する。次に、スイッチデバイス４１０は、処理されたデータを経路７１３を介して処理モジュール４１５にルーティングする。あるいは、代替実施形態によれば、処理モジュール４１２は、処理されたデータをピアツーピアＤＭＡトランザクションなどのピアツーピア接続により処理モジュール４１５に送信してもよい。
【００６０】
図８は、一実施形態に係る、ホストシステムと拡張デバイスとの間でデータをルーティングするプロセスを示すフローチャートである。図８を参照すると、操作８０１において、ホストシステム４０１は、拡張デバイス４０２のスイッチデバイス４１０に命令及びデータを転送する。スイッチデバイス４１０は、操作８０２を介して、ホスト／クライアントノードとして構成される処理モジュール４１２にデータを再ルーティングする。操作８０３において、処理モジュール４１２は、データに対してデータ圧縮又は暗号化などのデータ処理操作を実行する。操作８０４において、処理モジュール４１２は、処理された処理されたデータをスイッチデバイス４１０に転送し、スイッチデバイス４１０は、操作８０５により処理済みデータを処理モジュール４１５に再ルーティングし、ここでは、処理モジュール４１５は処理モジュール４１２に対するクライアントデバイスとして構成されている。操作８０６において、処理モジュール４１５は、データに対して別のデータ処理操作を実行する（例えば、データを永続性記憶装置に格納する）。
【００６１】
なお、以上に例示及び説明された構成要素の一部又は全ては、ソフトウェア、ハードウェア、又はそれらの組み合わせで実現されることができる。例えば、このような構成要素は、永続性記憶装置にインストールされるとともに格納されるソフトウェアとして実現されてもよく、前記ソフトウェアは、本開示にわたって記載されたプロセス又は動作を実施するように、プロセッサ（図示せず）によってメモリにロードして実行されてもよい。あるいは、このような構成要素は、集積回路（例えば、特定用途向け集積回路又はＡＳＩＣ）、デジタルシグナルプロセッサ（ＤＳＰ）、又はフィールドプログラマブルゲートアレイ（ＦＰＧＡ）のような専用ハードウェアにプログラミングされたか又は埋め込まれた実行可能なコードとして実現されてもよく、前記実行可能なコードはアプリケーションからの対応するドライバー及び／又はオペレーティングシステムを介してアクセスすることができる。更に、このような構成要素は、ソフトウェア構成要素が１つ又は複数の特定の命令によってアクセス可能な命令セットの一部として、プロセッサ又はプロセッサコアにおける特定のハードウェアロジックとして実現されることができる。
【００６２】
上述した具体的な説明の一部は、既に、コンピュータメモリにおけるデータビットに対する演算のアルゴリズムと記号表現により示された。これらのアルゴリズムの説明及び表現は、データ処理分野における当業者によって使用される、それらの作業実質を所属分野の他の当業者に最も効果的に伝達する方法である。本明細書では、一般的に、アルゴリズムは、所望の結果につながるセルフコンシステントシーケンスと考えられる。これらの操作は、物理量の物理的処置が必要とされるものである。
【００６３】
しかしながら、念頭に置くべきなのは、これらの用語及び類似の用語の全ては、適切な物理量に関連付けられるものであり、これらの量を標識しやすくするためのものに過ぎない。以上の説明で他に明示的に記載されていない限り、本明細書の全体にわたって理解すべきなのは、用語（例えば、添付された特許請求の範囲に記載のもの）による説明とは、コンピュータシステム、又は類似の電子式計算装置の動作及び処理を指し、前記コンピュータシステム又は電子式計算装置は、コンピュータシステムのレジスタ及びメモリにおける物理（電子）量として示されたデータを制御するとともに、前記データをコンピュータシステムメモリ又はレジスタ又はこのようなその他の情報記憶装置、伝送又は表示装置において同様に物理量として示された別のデータに変換する。
【００６４】
本開示の実施形態は、本明細書の動作を実行するための装置にも関する。このようなコンピュータプログラムは、非一時的コンピュータ可読媒体に格納される。機械可読媒体は、機械（例えば、コンピュータ）により読み取り可能な形式で情報を格納するための任意のメカニズムを含む。例えば、機械可読（例えば、コンピュータ可読）媒体は、機械（例えば、コンピュータ）可読記憶媒体（例えば、読み出し専用メモリ（「ＲＯＭ」）、ランダムアクセスメモリ（「ＲＡＭ」）、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリデバイス）を含む。
【００６５】
上述した図面において説明されたプロセス又は方法は、ハードウェア（例えば、回路、専用ロジックなど）、ソフトウェア（例えば、非一時的コンピュータ可読媒体に具現化されるもの）、又は両方の組み合わせを含む処理ロジックにより実行されることができる。前記プロセス又は方法は、以上で特定の順序に応じて説明されたが、前記動作の一部が異なる順序で実行されてもよいことを理解されたい。また、一部の動作は、順番ではなく並行して実行されてもよい。
【００６６】
本開示の実施形態は、いずれの特定のプログラミング言語を参照することなく記載されている。理解すべきなのは、本明細書に記載の本開示の実施形態の教示を実現するために、様々なプログラミング言語を使用することができる。
【００６７】
前記明細書において、本開示の実施形態は、既にその具体的な例示的な実施形態を参照しながら記載された。明らかなように、添付された特許請求の範囲に記載された本開示のより広い趣旨及び範囲を逸脱しない限り、本開示に対して様々な変更を行うことができる。それゆえに、本明細書及び図面は、限定的な意味でなく、例示的な意味で理解されるべきである。
【外国語明細書】
2020109619000001.pdf
2020109619000002.pdf
2020109619000003.pdf
2020109619000004.pdf