(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024137869
(43)【公開日】2024-10-07
(54)【発明の名称】データの選択的ストリーミングのためのファイルフォーマット
(51)【国際特許分類】
G06F 11/36 20060101AFI20240927BHJP
G06F 11/30 20060101ALI20240927BHJP
B60R 16/02 20060101ALI20240927BHJP
【FI】
G06F11/36 164
G06F11/30 140D
B60R16/02 650J
【審査請求】未請求
【請求項の数】20
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2024044622
(22)【出願日】2024-03-21
(31)【優先権主張番号】18/124,817
(32)【優先日】2023-03-22
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】523360544
【氏名又は名称】エンバーク トラックス インコーポレーテッド
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100229448
【弁理士】
【氏名又は名称】中槇 利明
(72)【発明者】
【氏名】キャレブ フォースト
(72)【発明者】
【氏名】リアム ベンソン
(72)【発明者】
【氏名】カシシュ ジェイン
(72)【発明者】
【氏名】ブレンダン ゲック
【テーマコード(参考)】
5B042
【Fターム(参考)】
5B042GB08
5B042HH07
5B042MA08
5B042MC06
(57)【要約】 (修正有)
【課題】新しいバイナリファイルフォーマットを使用して、コンテンツを選択的にストリーミングする方法及びコンピューティングシステムを提供する。
【解決手段】方法は、複数のバイナリファイルを保管するステップと、ネットワークを介して、コンピューティングシステムとコンピューティング端末との間のネットワーク通信セッションを確立するステップと、ネットワーク通信セッションを介して、コンピューティング端末から1つ以上の時間間隔の識別子を受信するステップと、バイナリファイルの中のインデックスに基づいて、1つ以上の時間間隔の識別子にマッピングされている、メモリに保管されたバイナリファイルのデータセクションの中のデータのサブセットを識別するステップと、ネットワーク通信セッションを介して、識別されたデータのサブセットを含むストリームを、コンピューティング端末に送信するステップと、を含む。
【選択図】
図8
【特許請求の範囲】
【請求項1】
コンピューティングシステムであって、
複数のバイナリファイルを保管するように構成されているメモリ、および、
プロセッサ、を含み、
前記プロセッサは、
ネットワークを介して、前記コンピューティングシステムとコンピューティング端末との間のネットワーク通信セッションを確立し、
前記ネットワーク通信セッションを介して、前記コンピューティング端末から1つ以上の時間間隔の識別子を受信し、
前記バイナリファイルの中のインデックスに基づいて、前記1つ以上の時間間隔の識別子にマッピングされている、メモリに保管されたバイナリファイルのデータセクションの中のデータのサブセットを識別し、かつ、
前記ネットワーク通信セッションを介して、前記識別されたデータのサブセットを含むストリームを、前記コンピューティング端末に送信する、
ように構成されている、
コンピューティングシステム。
【請求項2】
前記インデックスは、複数の時間間隔と、前記複数の時間間隔でキャプチャされたデータオブジェクトが、それぞれに、保管されている、前記バイナリファイルのデータセクションの中の複数のバイト位置との間のマッピングを含む、
請求項1に記載のコンピューティングシステム。
【請求項3】
データセクションは、その中に保管されたビデオを含み、かつ、
前記プロセッサは、前記1つ以上の時間間隔の受信された識別子に基づいて、再生する前記ビデオのサブセットを識別する、ように構成されている、
請求項1に記載のコンピューティングシステム。
【請求項4】
前記識別子は、2つの非連続的な時間間隔の識別子を含み、かつ、
前記プロセッサは、前記ビデオを再生するときに、前記2つの非連続的な時間間隔の間に存在する、前記ビデオの中の1つ以上の中間の時間間隔をジャンプする、ように構成されている、
請求項3に記載のコンピューティングシステム。
【請求項5】
前記プロセッサは、
前記1つ以上の時間間隔の識別子を伴うストリーミング要求を受信し、かつ、
それに応答して、前記バイナリファイルの前記データセクションの中の1つ以上のデータポケットのみから、マルチメディアコンテンツをストリーミングする、
ように構成されている、請求項1に記載のコンピューティングシステム。
【請求項6】
前記プロセッサは、
前記1つ以上の時間間隔の識別子を受信する以前に、前記バイナリファイルの前記インデックスを、前記コンピューティング端末に送信する、
ように構成されている、請求項1に記載のコンピューティングシステム。
【請求項7】
前記プロセッサは、さらに、
マルチメディアコンテンツが保管されているロボットオペレーティングシステム(ROS)ファイルを、関連付けられたインデックス、および、前記バイナリファイルのデータセクションの中に保管された前記マルチメディアコンテンツを含む、前記バイナリファイルへと変換する、
ように構成されている、請求項1に記載のコンピューティングシステム。
【請求項8】
前記インデックスは、前記マルチメディアコンテンツ内の複数の時点に対応する複数の時間間隔を含み、かつ、
前記インデックスは、前記複数の時間間隔の間で、前記データセクションの中のマルチメディアコンテンツの複数のポケットに対するマッピングを、それぞれに、含んでいる、
請求項7に記載のコンピューティングシステム。
【請求項9】
複数のバイナリファイルを保管するステップと、
ネットワークを介して、コンピューティングシステムとコンピューティング端末との間のネットワーク通信セッションを確立するステップと、
前記ネットワーク通信セッションを介して、前記コンピューティング端末から1つ以上の時間間隔の識別子を受信するステップと、
前記バイナリファイルの中のインデックスに基づいて、前記1つ以上の時間間隔の識別子にマッピングされている、メモリに保管されたバイナリファイルのデータセクションの中のデータのサブセットを識別するステップと、
前記ネットワーク通信セッションを介して、前記識別されたデータのサブセットを含むストリームを、前記コンピューティング端末に送信するステップと、
を含む、方法。
【請求項10】
前記インデックスは、複数の時間間隔と、前記複数の時間間隔でキャプチャされたデータオブジェクトが、それぞれに、保管されている、前記バイナリファイルのデータセクションの中の複数のバイト位置との間のマッピングを含む、
請求項9に記載の方法。
【請求項11】
データセクションは、その中に保管されたビデオを含み、かつ、
前記識別するステップは、
前記1つ以上の時間間隔の受信された識別子に基づいて、再生する前記ビデオのサブセットを識別するステップ、
を含む、
請求項9に記載の方法。
【請求項12】
前記識別子は、2つの非連続的な時間間隔の識別子を含み、かつ、
前記方法は、さらに、
前記ビデオを再生するときに、前記2つの非連続的な時間間隔の間に存在する、前記ビデオの中の1つ以上の中間の時間間隔をジャンプするステップ、
を含む、
請求項11に記載の方法。
【請求項13】
前記受信するステップは、
前記コンピューティング端末から前記1つ以上の時間間隔の識別子を伴うストリーミング要求を受信するステップと、
それに応答して、前記バイナリファイルの前記データセクションの中の1つ以上のデータポケットのみから、マルチメディアコンテンツをストリーミングするステータスと、
を含む、請求項9に記載の方法。
【請求項14】
前記方法は、さらに、
前記1つ以上の時間間隔の識別子を受信する以前に、前記バイナリファイルの前記インデックスを、前記コンピューティング端末に送信するステップ、
を含む、請求項9に記載の方法。
【請求項15】
前記方法は、さらに、
マルチメディアコンテンツが保管されているロボットオペレーティングシステム(ROS)ファイルを、関連付けられたインデックス、および、前記バイナリファイルのデータセクションの中に保管された前記マルチメディアコンテンツを含む、前記バイナリファイルへと変換するステップ、
を含む、請求項9に記載の方法。
【請求項16】
前記インデックスは、前記マルチメディアコンテンツ内の複数の時点に対応する複数の時間間隔を含み、かつ、
前記インデックスは、前記複数の時間間隔の間で、前記データセクションの中のマルチメディアコンテンツの複数のポケットに対するマッピングを、それぞれに、含んでいる、
請求項15に記載の方法。
【請求項17】
命令を備えるコンピュータ可読記憶媒体であって、前記命令は、プロセッサによって実行されると、コンピュータに、
複数のバイナリファイルを保管するステップと、
ネットワークを介して、コンピューティングシステムとコンピューティング端末との間のネットワーク通信セッションを確立するステップと、
前記ネットワーク通信セッションを介して、前記コンピューティング端末から1つ以上の時間間隔の識別子を受信するステップと、
前記バイナリファイルの中のインデックスに基づいて、前記1つ以上の時間間隔の識別子にマッピングされている、メモリに保管されたバイナリファイルのデータセクションの中のデータのサブセットを識別するステップと、
前記ネットワーク通信セッションを介して、前記識別されたデータのサブセットを含むストリームを、前記コンピューティング端末に送信するステップと、
を含む方法を実施させる、
コンピュータ可読記憶媒体。
【請求項18】
前記インデックスは、複数の時間間隔と、前記複数の時間間隔でキャプチャされたデータオブジェクトが、それぞれに、保管されている、前記バイナリファイルのデータセクションの中の複数のバイト位置との間のマッピングを含む、
請求項17に記載のコンピュータ可読記憶媒体。
【請求項19】
データセクションは、その中に保管されたビデオを含み、かつ、
前記識別するステップは、
前記1つ以上の時間間隔の受信された識別子に基づいて、再生する前記ビデオのサブセットを識別するステップ、
を含む、
請求項17に記載のコンピュータ可読記憶媒体。
【請求項20】
前記識別子は、2つの非連続的な時間間隔の識別子を含み、かつ、
前記方法は、さらに、
前記ビデオを再生するときに、前記2つの非連続的な時間間隔の間に存在する、前記ビデオの中の1つ以上の中間の時間間隔をジャンプするステップ、
を含む、
請求項19に記載のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【背景技術】
【0001】
車両、トラック、および他のタイプの自律輸送に見られるような、自律運転システムは、シミュレーションソフトウェアに依存する。例えば、シミュレーションソフトウェアは、自律運転システムを開発し、トレーニングし、そして、検証するために使用され得る。多くのシミュレーションシステムは、カメラデータ、ライダデータ(lidar data)、GPSデータ、ルーティングデータ、自律運転システムによって行われた決定、等といった、走行中に車両によってキャプチャされた運転データを使用する。データは、車両がルートに沿って運転している間にキャプチャされ、そして、次いで、車両が道路に戻ることを必要とすることなく、ソフトウェアを通して車両の追加の走行を試験するためにシミュレーションシステムによって使用され得る。
【0002】
「バッグ(“bag”)」または「ROSバッグ(“ROS bag”)」と称されるロボットオペレーティングシステム(robotic operating system、ROS)ファイルは、運転データを保管(store)するために使用される最も一般的なタイプのファイルのうちの1つである。車両上の異なるシステムによってキャプチャされたメッセージは、バッグファイル内のデータのチャンク(chunck)として一緒に保管され得る。しかしながら、バッグファイルからのデータ(その中に保管されたビデオファイルの小部分のみ、といったもの)を選択的に再生するためには、バッグファイル全体が開かれ、そして、ストリーミングデバイスにダウンロードされなければならない。これは、ユーザデバイスがファイルの小さな部分を再生することにしか関心がないことを考慮すると、かなりの量の時間および帯域幅を消費する。従って、必要とされるのは、コンテンツをストリーミングするためのより良いファイルフォーマットである。
【発明の概要】
【0003】
例示的な実施形態は、本明細書で「ポケット(“pocket”)」ファイルと称される新しいタイプのファイルフォーマットを対象とする。ポケットファイルは、マルチメディアコンテンツ、ビデオコンテンツ、オーディオコンテンツ、画像、GPSコンテンツ、ルートデータ、計画データ、等といったシミュレーションコンテンツを保管するインデックス付きデータセクションを含むバイナリファイルである。ポケットファイル内には、ポケットファイルのデータセクション内のデータの小さな部分(ポケット)を迅速に識別するために使用され得る、保管されたインデックスを伴うヘッダがある。例えば、データセクション内のデータの小さなポケットは、データセクションをロードする必要なく、同様に、ポケットファイルからインデックス(またはヘッダ)のみをロードすることによって識別され得る。従って、サーバまたは要求端末(requesting terminal)は、所望のデータ間隔(intervals of data)を迅速に見つけ、そして、 ホストプラットフォームからそれらのデータ間隔を要求することができる。これに応答して、ホットスポットプラットフォームは、データセクション全体ではなく、選択されたデータのポケットのみを選択的にダウンロード/ストリーミングすることができる。それに応じて、ロードされ、かつ、ストリーミングされるデータの量は、例示的な実施形態によって著しく低減される。
【0004】
一つの例として、インデックスは、データセクション内に保管されたマルチメディアコンテンツにおける時間間隔(intervals of time)に基づいて生成され得る。例えば、新しい時間間隔は、毎秒、二分の一(half)秒、四分の一(quarter)秒、等でインデックスに保管され得る。インデックスは、キャプチャされたデータに対応しているデータセクション内のバイト位置への時間間隔のマッピングである。従って、データは、ファイル全体をストリーミングすることなく、コンテンツ内のその時点に基づいて選択的に識別(および、再生/ストリーミング)され得る。別の利点は、ホストシステムが、マルチメディアコンテンツを再生するときに、他の時間間隔で他のデータセクションを越えて「ジャンプ(“jump”)」することができることである。例えば、ホストプラットフォームが要求端末から2つの非連続的な時間間隔を受信する場合、ホストプラットフォームは、マルチメディアコンテンツ内の非連続的な時間間隔の間のマルチメディアコンテンツの中間間隔に対応するファイル内の時点(points in time)からコンテンツを再生することをスキップし、または、そうでなければ、回避することができる。
【0005】
例示的な実施形態に従って、複数のバイナリファイルを保管するように構成されているメモリ、および、プロセッサが提供される。プロセッサは、ネットワークを介して、コンピューティングシステムとコンピューティング端末との間のネットワーク通信セッションを確立し、前記ネットワーク通信セッションを介して、前記コンピューティング端末から1つ以上の時間間隔の識別子を受信し、前記バイナリファイルの中のインデックスに基づいて、前記1つ以上の時間間隔の識別子にマッピングされている、メモリに保管されたバイナリファイルのデータセクションの中のデータのサブセットを識別し、かつ、前記ネットワーク通信セッションを介して、前記識別されたデータのサブセットを含むストリームを、前記コンピューティング端末に送信する、ように構成されている。
【0006】
別の例示的な実施形態に従って、以下のステップが提供される。複数のバイナリファイルを保管するステップと、ネットワークを介して、コンピューティングシステムとコンピューティング端末との間のネットワーク通信セッションを確立するステップと、前記ネットワーク通信セッションを介して、前記コンピューティング端末から1つ以上の時間間隔の識別子を受信するステップと、前記バイナリファイルの中のインデックスに基づいて、前記1つ以上の時間間隔の識別子にマッピングされている、メモリに保管されたバイナリファイルのデータセクションの中のデータのサブセットを識別するステップと、前記ネットワーク通信セッションを介して、前記識別されたデータのサブセットを含むストリームを、前記コンピューティング端末に送信するステップ。
【0007】
別の例示的な実施形態に従って、命令を備えるコンピュータ可読媒体が提供される。前記命令は、プロセッサによって実行されると、コンピュータに、以下のステップを実施させる。複数のバイナリファイルを保管するステップと、ネットワークを介して、コンピューティングシステムとコンピューティング端末との間のネットワーク通信セッションを確立するステップと、前記ネットワーク通信セッションを介して、前記コンピューティング端末から1つ以上の時間間隔の識別子を受信するステップと、前記バイナリファイルの中のインデックスに基づいて、前記1つ以上の時間間隔の識別子にマッピングされている、メモリに保管されたバイナリファイルのデータセクションの中のデータのサブセットを識別するステップと、前記ネットワーク通信セッションを介して、前記識別されたデータのサブセットを含むストリームを、前記コンピューティング端末に送信するステップ。
【図面の簡単な説明】
【0008】
例示的な実施形態の特徴と利点、および、それらが達成される方法は、添付の図面と併せて、以下の詳細な説明を参照することによって、より容易に明らかになるだろう。
【
図1】
図1は、例示的な実施形態に従った、
図2Aから
図2Cまでに示されるセミトラックといった車両に配置され得る制御システムを示す図である。
【
図2A】
図2Aは、例示的な実施形態に従った、使用され得るセミトラックの外観を示す図である。
【
図2B】
図2Bは、例示的な実施形態に従った、使用され得るセミトラックの外観を示す図である。
【
図2C】
図2Cは、例示的な実施形態に従った、使用され得るセミトラックの外観を示す図である。
【
図3A】
図3Aは、例示的な実施形態に従った、ポケットファイルフォーマットの一つの例を示す図である。
【
図3B】
図3Bは、例示的な実施形態に従った、ポケットファイルフォーマットの一つの例を示す図である。
【
図4A】
図4Aは、例示的な実施形態に従った、ポケットファイルに基づいてコンテンツをストリーミングするプロセスを示す図である。
【
図4B】
図4Bは、例示的な実施形態に従った、ポケットファイルに基づいてコンテンツをストリーミングするプロセスを示す図である。
【
図4C】
図4Cは、例示的な実施形態に従った、ポケットファイルに基づいてコンテンツをストリーミングするプロセスを示す図である。
【
図4D】
図4Dは、例示的な実施形態に従った、ポケットファイルに基づいてコンテンツをストリーミングするプロセスを示す図である。
【
図5】
図5は、例示的な実施形態に従った、コンテンツをストリーミングする際に使用するためのユーザインターフェイスを示す図である。
【
図6A】
図6Aは、例示的な実施形態に従った、ROSファイルをポケットファイルに変換するプロセスを示す図である。
【
図6B】
図6Bは、例示的な実施形態に従った、ROSファイルをポケットファイルに変換するプロセスを示す図である。
【
図7】
図7は、例示的な実施形態に従った、クライアントアプリケーションを介して、サーバから時間ベースのデータをロードするプロセスを示す図である。
【
図8】
図8は、例示的な実施形態に従った、バイナリファイルからコンテンツを選択的にストリーミングする方法を示す図である。
【0009】
図面および詳細な説明の全体を通して、特に記載のない限り、同じ図面参照番号は、同じ要素、特徴、および構造を指すものと理解される。これらの要素の相対的なサイズおよび描写は、明確性、図解、及び/又は、便宜のために、誇張または調整され得る。
【発明を実施するための形態】
【0010】
以下の説明では、様々な例示的な実施形態の完全な理解を提供するために、具体的な詳細が説明される。実施形態に対する様々な修正は、当業者にとって容易に明らかでなり、そして、本明細書で定義された一般原理は、本開示の趣旨および範囲から逸脱することなく、他の実施形態およびアプリケーションに対して適用され得ることが正しく理解されるべきである。さらに、以下の説明では、説明の目的で多数の詳細が記載されている。しかしながら、当業者であれば、これらの具体的な詳細を使用することなく、実施形態を実施し得ることが理解されるべきである。他のインスタンスでは、不必要な詳細によって説明を不明瞭にしないように、周知の構造およびプロセスは示されず、または、説明されていない。従って、本開示は、示された実施形態に限定されるように意図されたものではなく、本明細書で開示された原理および特徴と一致する最も広い範囲を与えられるべきである。
【0011】
例示的な実施形態は、ホストシステム(クラウドプラットフォームまたは他のコンテンツ配信プラットフォームといったもの)と、コンテンツをダウンロードし、そして、再生/ストリーミングしているユーザデバイスまたは他のコンピューティング端末との間のストリーミングセッションを、より効率的に処理するために使用され得る、新しいタイプのファイルフォーマットを対象とする。本ファイルフォーマットは、インデックス付きデータセクション(indexed data section)を伴うバイナリファイルフォーマットである。インデックス付け(indexing)は、インデックス付きデータセクションに保管された再生可能コンテンツ内の時間の単位に基づいている。例えば、ビデオ内の第1時間間隔(例えば、最初の1秒(first second of time))で再生されるコンテンツ、および、ビデオ内の次の時間間隔(例えば、次の1秒、等)で再生されるコンテンツは、インデックス内で別々に識別されてよく、そして、従って、データセクション全体をロードする必要なく、ストリーミングセッションの最中に選択的に抽出され、そして、再生され得る。
【0012】
いくつかの実施形態において、本明細書で説明されるストリーミングプラットフォームは、自律車両開発のためのストリーミングサービスをホストするために使用され得る。ストリーミングサービスは、車両の運転環境をシミュレートするシミュレーションソフトウェアによって呼び出す(call)ことができる。例えば、シミュレーションソフトウェアは、バグおよび修正についてソフトウェアをテストするために、車両から取得された実際の運転データを、車両用に開発されているソフトウェアに対して再生することができる。本明細書で説明されるポケットファイルは、GPSデータ、撮像データ(imaging data)、経路データ(routing data)、計画データ、等の車両シミュレーションに使用され得る、複数のタイプのデータを保管することができる。このデータの全ては、インデックス化され、そして、ヘッダに保管されたインデックスによって、ファイル全体を開く必要なく、迅速に一緒に引き出され得る。その代わり、ユーザは、テストシミュレーションの最中にファイルのどの部分を使用したいかを識別するために、ヘッダを開くことを必要とするだけである。ユーザは、また、インデックスに基づいて、ファイルに保管されたマルチメディアコンテンツにおける間隔の間を「ジャンプ」することもできる。
【0013】
説明の便宜および容易さのために、本明細書ではいくつかの用語を使用される。例えば、「セミトラック(“semi-track”)」という用語は、例示的な実施形態のシステムが使用され得る車両を指すために使用される。「セミトラック」、「トラック(“track”)」、「トラクタ(“tractor”)」、「車両(“vehicle”)」、および「セミ(“semi”)」という用語は、本明細書では互換的に使用され得る。例示的な実施形態は、自律型セミトラックに限定されるものではなく、むしろ、道路に沿って移動し得る全てのタイプの車両、トラック、バン、オートバイなどであることも、また、理解されるべきである。
【0014】
光検出および測距(ライダ)センサは、ライダセンサからの光ビームによって測定される、点群(point cloud)内の点までの距離を使用して、疎な(sparse)点群を取得することによって、周囲領域を測定するために、車両によって使用される。照明は、周囲光とは無関係に機能し、そして、任意の条件で使用することができる。さらに、ライダセンサは、三次元(3D)で世界のマップを生成するために使用され得るデータをキャプチャすることができる。車両の周囲のオブジェクトおよび他の障害物を識別するために、電波探知および測距(レーダ(radar))センサが、車両によって使用される。レーダセンサは、障害物に遭遇したときに反射する(かつ、反射波を戻す)電磁波を放射することができる。一方で、車両カメラは、車両の周囲の世界の画像(例えば、RGB画像、白黒画像、等)をキャプチャし、そして、ライダセンサによってキャプチャされたライダデータに対して補完データを提供することができる。例えば、カメラは、色、テクスチャ、外観、等といったデータをキャプチャすることができ、一方で、ライダは、データの構造的な態様(aspect)側面をキャプチャし、かつ、モデル化することが可能である。ライダセンサ、レーダセンサ、および、カメラは、自律走行車(AV)といった、本明細書で説明される車両における例示的なセンサである。
【0015】
多くの車両において、車両の知覚は、ライダセンサからのライダデータとカメラによってキャプチャされた画像データとの組み合わせに基づいて(すなわち、共同して)生成されている。正確な知覚のために、これら2つのシステムは、相互に対して整列(aligned)されなければならない。較正は、ライダセンサの座標フレームとカメラの座標フレームとの間の回転および並進といった、外部パラメータを変更することによって、ライダセンサの座標フレームをカメラの座標フレームと整列するように実行することができる。これらの外部パラメータは、車両を視覚化することが道路からの視覚データを解釈するときに、ライダセンサおよび画像センサからの情報を融合するために使用され得る。
【0016】
較正されたセンサを用いて、車両は、車両を取り囲む領域の画像およびライダ読取り値(readings)をキャプチャし、そして、車両のコンピュータの中に内部的に(または、ウェブサーバを介して遠隔的に)保管されている三次元マップを構築/修正することができる。車両は、マップ内で自身を位置特定(localize)し、そして、マップの中の他のオブジェクト、車線ライン、進入車線、退出車線、等に基づいて、どのように操舵、旋回、減速、等を行うかを決定することができる。自律走行車は、ユーザ入力なしで自律的に移動するように車両を制御するために、1つ以上のコンピュータシステムを使用し得る。例えば、車両は、マップ内の他のオブジェクト、車線、進入車線、および退出車線に基づいて、エンジン、ステアリングホイール、ブレーキ、などを制御するための信号を生成する、自律走行車(AV)システムを搭載することができる。
【0017】
様々な実施形態に従って、運転データは、道路を走行する車両によってキャプチャされ、そして、第1タイプのファイル、例えば、「バッグ」ファイルとしても、また、知られているロボットオペレーティングシステム(ROS)ファイルを使用して保管され得る。ROSバッグの中で、車両によってキャプチャされたデータはインデックス付けされない。その代わりに、データは、インデックス付けすることなく「チャンク」として保管される。データは、GPSデータ、撮像データ、ライダデータ、レーダデータ、ルーティングおよび計画システムデータ、マップデータ、などを含む、複数のタイプのデータの混合を含み得る。チャンクは、次いで、エンコーディングされ、そして、チャンクを識別するためにメタデータがファイルに追加される。チャンクに保管されたコンテンツ(例えば、ビデオ、等)が再生されるためには、ROSバッグファイル全体がクライアントデバイスにダウンロードされ、かつ、開かれなければならない。クライアントが単にビデオの小さな部分を見たいだけの場合に、このプロセスは、ファイル全体をダウンロードしなければならないので、全く非効率的である。
【0018】
対照的に、本出願では、ポケットファイルが提供され、そして、ホストプラットフォームが、ファイルのデータセクション全体をクライアントにダウンロードすることなく、ファイルのデータセクションからビデオ(および、他のマルチメディアコンテンツ)の選択的な部分のみをクライアントにダウンロードすることを可能にする。従って、クライアントは、ダウンロード全体が行われるのを待つ必要、または、ローカルシステム上でファイル全体を開く必要もない。その代わり、クライアントは、(ポケットファイルのヘッダに保管されている)ポケットファイルのインデックスをダウンロードし、そして、(例えば、時間間隔によって)関心のあるビデオの1つ以上の部分を選択することができる。これに応答して、ホストプラットフォームは、インデックスを使用して、ファイルのデータセクションからビデオのそれらの選択された部分のみをダウンロードすることができる。
【0019】
別の言葉で言えば、選択されたコンテンツが再生されるために、ポケットファイルのデータセクションの小さな部分のみがクライアントデバイスにダウンロードされ、かつ、開かれなければならない。クライアントが、ビデオの小さな部分を視聴することを単に望むだけの場合に、このプロセスは、ビデオの小さい部分のみをダウンロードし、そして、視聴するので、非常に効率的である。この例においてビデオが使用されているが、他のタイプの時間ベースのデータを取り出すことができる。エンジン、ブレーキシステム、ステアリングシステム、などのうち1つ以上に関連付けられた、車両上のセンサによって取り込まれたセンサデータ、といったものである。データの他の例は、ルート計画およびガイダンスデータ、などを含んでいる。それらは、また、ビデオの1つの部分から、ビデオの1つ以上の中間部分を越えて、ビデオの非連続部分にジャンプすることもでき、ビデオの介在部分をダウンロードする必要はない。従って、ポケットファイルのインデックス付きデータセクションに基づいて、ホストプラットフォーム/ストリーミングサービスは、ROSファイルを使用する従来のストリーミングサービスと比較して、ダウンロードされるデータの量を低減することができる。このことは、また、一般的にホストプラットフォームおよびネットワークの帯域幅も改善する。
【0020】
一つの例として、クライアントは、ハイパーテキスト転送プロトコル(HTTP)範囲要求を使用するなどして、クライアントアプリケーションがファイルからコンテンツのサブセットを要求することを可能にするバッファを伴うクライアントアプリケーションを、含み得る。クライアントアプリケーションからのHTTP範囲要求は、ファイル内の時間の間隔または範囲(しかし、全ての時間ではない)を識別することができる。ここで、サーバは、ファイル内のその時間間隔からのコンテンツだけを用いてHTTP範囲要求に応答することができる。
【0021】
図1は、例示的な実施形態に従った、
図2Aから
図2Cまでに示されるセミトラックといった車両に配置され得る制御システム100を示している。
図1を参照すると、制御システム100は、例えば、ゲートウェイ180を介して車両のコンポーネントを制御する制御動作を含む動作を実行するために、コンピュータシステム140に提供されるデータおよび情報を収集する複数のセンサ110を含み得る。いくつかの実施形態に従って、ゲートウェイ180は、コンピュータシステム140が異なる製造業者からのいくつかの異なるコンポーネントを制御することを可能にするように構成される。
【0022】
コンピュータシステム140は、本明細書のどこか他のところに記載されている本発明の実施形態の特徴を実装する処理を含む処理を実行し、並びに、車両のシステムに関連付けられた1つ以上のアクチュエータまたは他のコントローラ(例えば、スロットル184、ステアリングシステム186、ブレーキ188などの制御を可能にするアクチュエータまたはコントローラを含む)を制御する制御信号を生成する際に使用するためのセンサ110からのセンサデータを受信するために、1つ以上の中央処理装置(CPU)142を用いて構成され得る。一般的に、制御システム100は、自律(または、半自律)動作モードでセミトラック(semi-track)200を動作させるように構成され得る。いくつかの実施形態において、コンピュータシステム140は、システムを制御するためのAVシステム143を含み得る。例えば、AVシステム143は、コンピュータシステム140の中に設置され得る。
【0023】
動作中に、制御システム100は、セミトラック200の様々な位置に取り付けられた1つ以上のカメラ112から画像を取り込み、そして、それらの画像に対して処理(画像処理といったもの)を実行して、セミトラック200の経路に近接し、または、経路中にあるオブジェクトを識別するように動作され得る。さらに、ライダ114およびレーダ116は、セミトラック200の経路に近接し、または、経路中のオブジェクトの存在およびボリュームを感知または検出するように位置決めされ得る。他のセンサも、また、位置データといった他の情報をキャプチャするために、セミトラック200の様々な位置に配置され、または、取り付けされ得る。例えば、センサは、1つ以上の衛星測位センサ、及び/又は、GNSS/IMUセンサ118といった慣性ナビゲーションシステムを含み得る。全地球的航法衛星システム(GNSS)は、地球上またはその近くのどこにおいても、全ての気象条件における位置情報(経度、緯度、高度)および時間情報を、GNSS受信器と称されるデバイスに提供する、衛星の宇宙ベースのシステムである。GPSは、世界で最も使用されているGNSSシステムである。慣性測定ユニット(「IMU」)は、慣性航法システムである。一般的に、慣性航法システム(「INS」)は、移動オブジェクトの向き、位置、速度、および加速度を測定し、そして、積分する。INSは、測定されたデータを統合し、ここで、GNSSは、INS方向計算の統合誤差に対する補正として使用される。任意の数の異なるタイプのGNSS/IMUセンサ118が、本発明の特徴と併せて使用され得る。これらのセンサそれぞれによって収集されたデータは、セミトラック200の動作を制御する制御信号を生成するために、コンピュータシステム140によって処理され得る。画像および位置情報は、セミトラック200の経路の周囲または経路中のオブジェクトを識別または検出するために処理されてよく、そして、セミトラック200を安全に動作させるために、必要に応じてスロットル184、ステアリングシステム186、またはブレーキ188を調整するために制御信号が発せられてよい。例示的なセンサおよびアクチュエータまたは車両システムが
図1に示されているが、当業者であれば、本開示を読めば、他のセンサ、アクチュエータ、またはシステムも、また、使用され得ることを理解するだろう。例えば、いくつかの実施形態において、セミトラック200のトランスミッションの制御を可能にするアクチュエータも、また、提供され得る。
【0024】
制御システム100は、1つ以上のソフトウェアまたは制御アプリケーション(項目(item)160から182まで、といったもの)が本明細書で説明される処理を実施するために実行され得るコンピューティング環境を提供するように構成された、コンピュータシステム140(コンピュータサーバといったもの)を含み得る。いくつかの実施形態において、コンピュータシステム140は、セミトラック200上に配置されたコンポーネントを含んでいる(例えば、
図2Cに示されるように、睡眠コンパートメント(sleeper compartment)212の中に配置されたシステムラック240内に配置されてよい)。コンピュータシステム140は、セミトラック200から遠隔にあり得る他のコンピュータシステム(図示なし)と通信し得る(例えば、コンピュータシステムは、ネットワーク接続を介して通信し得る)。
【0025】
いくつかの例において、コンピュータシステム140は、サーバとして実装され得る。さらに、コンピュータシステム140は、これらに限定されるわけではないが、パーソナルコンピュータシステム、クラウドプラットフォーム、サーバコンピュータシステム、シンクライアント、シッククライアント、ハンドヘルドまたはラップトップデバイス、タブレット、スマートフォン、データベース、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブル家庭用電化製品、ネットワークPC、ミニコンピュータシステム、メインフレームコンピュータシステム、分散クラウドコンピューティング環境など、上記のシステムまたはデバイスなどの任意のものを含み得るもの、といった、いくつかのよく知られているコンピューティングシステム、環境、及び/又は、構成のいずれかを使用して構成され得る。
【0026】
コンピュータシステム140および制御システム100によって、いくつかの異なるソフトウェアアプリケーションまたはコンポーネントが実行され得る。例えば、図示されるように、1つ以上のカメラ112によってキャプチャされた画像、および、ライダ114によって取得された情報を処理するために能動学習機械処理(active learning machine processing)(能動学習コンポーネント160)を実行するアプリケーションが提供され得る。例えば、画像データは、それらの画像内の関心のあるオブジェクト(例えば、他の車両、建設標識、等といったもの)を識別するために、ディープラーニングセグメンテーションモデル162を使用して処理され得る。ライダデータは、ライダセンサによって位置特定された関心オブジェクトを識別するように、画像データ上に境界ボックスを描画または識別するために、機械学習アプリケーション164によって処理され得る。機械学習アプリケーションから出力された情報は、他の道路ユーザのアクションを予測し、かつ、リアルタイムでローカル車両の姿勢をグローバルマップジオメトリと融合するために、処理を実行することができる、オブジェクト融合168およびビジョンマップ融合170ソフトウェアコンポーネントへの入力として提供されてよく、オンザフライマップ補正を可能にしている。機械学習アプリケーションからの出力は、レーダ116および地図位置特定166アプリケーションデータからの情報(並びに、測位データ)を用いて補完され得る。これらのアプリケーションにより、制御システム100は、マップに依存することが少なくなり、そして、絶えず変化する道路環境を扱うことが、より可能になる。さらに、任意のマップエラーをオンザフライで補正することによって、制御システム100は、代替的なマップ中心(map-centric)アプローチと比較して、より安全で、よりスケーラブルで、かつ、より効率的な動作を促進することができる。情報は、軌道計画174コンポーネントに入力を提供する、予測および計画アプリケーション172に対して提供され、軌道176が、環境内のセミトラック200と他の関連車両との間の相互作用および予測される相互作用に基づいて、リアルタイムで生成されることを可能にする。いくつかの実施形態において、例えば、制御システム100は、60秒の計画ホライズン(planning horizon)を生成し、関連するアクタおよび利用可能な軌道を分析する。複数の基準(安全性、快適性、および、ルートの好み(preference)を含む)に最も適合する計画が選択され、そして、計画を実施するために必要な任意の関連する制御入力がコントローラ182に提供されて、セミトラック200の移動を制御する。
【0027】
これらのアプリケーションまたはコンポーネント(並びに、本明細書で説明される他のコンポーネントまたはフロー)は、ハードウェアで、プロセッサによって実行されるコンピュータプログラムで、ファームウェアで、または、上記の組合せで実装され得る。コンピュータプログラムは、ストレージ媒体またはストレージ装置といった、コンピュータ可読媒体において具現化され得る。例えば、コンピュータプログラムは、ランダムアクセスメモリ(「RAM」)、フラッシュメモリ、リードオンリーメモリ(「ROM」)、消去可能プログラマブルリードオンリーメモリ(「EPROM」)、電気的消去可能プログラマブルリードオンリーメモリ(「EEPROM」)、レジスタ、ハードディスク、リムーバブルディスク、コンパクトディスクリードオンリーメモリ(「CD-ROM」)、または、当技術分野で知られている任意の他の形態のストレージ媒体に存在し得る。
【0028】
ストレージ媒体は、プロセッサがストレージ媒体から情報を読み取り、そして、ストレージ媒体に情報を書き込むことができるように、プロセッサに結合され得る。代替として、ストレージ媒体は、プロセッサに一体化されてよい。プロセッサおよびストレージ媒体は、特定用途向け集積回路(「ASIC」)内に存在し得る。代替として、プロセッサおよびストレージ媒体は、ディスクリートコンポーネントとして存在し得る。例えば、
図1は、上述のコンポーネント、等のいずれかを表し、または、その中に統合され得る、例示的コンピュータシステム140を図示する。
図1は、本明細書で説明される本出願の実施形態の使用または機能性の範囲に関して、いかなる限定も示唆するように意図されていない。コンピュータシステム140は、上記で明らかにされた機能のいずれかを実装及び/又は実行することができる。
【0029】
コンピュータシステム140は、コンピュータシステムによって実行される、プログラムモジュールといった、コンピュータシステム実行可能命令の一般的なコンテキストにおいて説明することができる。一般的に、プログラムモジュールは、特定のタスクを実行し、または、特定の抽象データ型(abstract data type)を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造、などを含み得る。コンピュータシステム140は、分散クラウドコンピューティング環境において実施されてよく、ここでは、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される。分散クラウドコンピューティング環境において、プログラムモジュールは、メモリストレージ装置を含むローカルおよびリモートの両方のコンピュータシステムストレージ媒体に配置されてよい。
【0030】
図1に示されるように、コンピュータシステム140は、汎用コンピューティングデバイスの形態で示されている。コンピュータシステム140のコンポーネントは、1つ以上のプロセッサ(CPU 142およびGPU 144といったもの)、通信インターフェイス146、1つ以上の入力/出力インターフェイス148、および、保管デバイス216を含み得るが、これらに限定されない。図示されてはいないが、コンピュータシステム140は、また、システムメモリを含む様々なシステムコンポーネントをCPU 142に結合する、システムバスも含み得る。いくつかの実施形態において、入力/出力インターフェイス148は、また、ネットワークインターフェイスも含み得る。例えば、いくつかの実施形態において、制御システム100のコンポーネントの一部または全部は、コントローラエリアネットワーク(「CAN」)バスなどを介して通信し得る。
【0031】
ストレージ装置150は、様々なタイプおよび形態のコンピュータ可読媒体を含み得る。そうした媒体は、コンピュータシステム/サーバによってアクセス可能な任意の利用可能な媒体であってよく、そして、揮発性および不揮発性媒体、取り外し可能および取り外し不能媒体の両方を含んでよい。システムメモリは、一つの実施形態において、他の図のフローチャート(flow diagram)を実施する。システムメモリは、ランダムアクセスメモリ(RAM)及び/又はキャッシュメモリといった、揮発性メモリの形態のコンピュータシステム可読媒体を含み得る。別の例として、ストレージ装置150は、取り外し不能な不揮発性磁気媒体(図示なし、そして、典型的には「ハードドライブ」と称されるもの)に対して読み出し、および、書き込みすることができる。図示されていないが、ストレージ装置150は、磁気、テープ、または光ディスクドライブといった、1つ以上の取外し可能な不揮発性ディスクドライブを含み得る。そうした場合、それぞれが、1つ以上のデータ媒体インターフェイスによってバスに接続され得る。ストレージ装置150は、本出願の様々な実施形態の機能を実行するように構成されたプログラムモジュールのセットを有する(例えば、少なくとも1つ)少なくとも1つのプログラム製品を含み得る。
【0032】
図2Aから
図2Cまでは、例示的な実施形態に従った、使用され得るセミトラック200の外観を示す図である。
図2Aから
図2Cまでを参照すると、セミトラック200は、例示の目的のためだけに示されており、-当業者は、本開示を読めば、実施形態がいくつかの異なるタイプの車両とともに使用され得ることを理解するだろう。
図2Aから
図2Cまでに示される例示的なセミトラック200は、一般的な北米スタイルで構成されたものであり、運転室(cab)202の前方にエンジン206、操舵車軸(steering axle)214、および、駆動車軸(drive axle
)216を有する。トレーラ(図示なし)が、駆動車軸216の上に位置決めされたフレーム218に備えられた第5ホイールトレーラカップリング(fifth-wheel trailer coupling)を介してセミトラック200に取り付けられる。睡眠コンパートメント212は、運転室202の背後に配置されている。いくつかのセンサが、セミトラック200の異なる位置に配置されている。例えば、センサは、センサラック220の上で運転室202の屋根に取り付けられてよい。センサは、サイドミラー210の上、並びに、他の位置に取り付けられてよい。
【0033】
後述するように、センサは、バンパー204上、並びに、運転室202の側面または他の位置に取り付けられてよい。例えば、
図2Aでは、後向きレーダ(rear-facing radar)236が運転室202の側面に取り付けられているものとして示されている。実施形態は、トラックまたは他の車両の他の構成(例えば、キャブオーバーまたはキャブフォワード構成などを有するセミトラックといったもの)と共に使用され得る。一般的に、そして、本発明の実施形態を限定することなく、本発明の特徴は、長距離セミトラックルートといった、長距離にわたり貨物を運搬する車両において望ましい結果を伴って使用され得る。
【0034】
図2Bは、セミトラック200の正面図であり、いくつかのセンサおよびセンサ位置を示している。センサラック220は、長距離ライダ222、長距離カメラ224、GPSアンテナ234、および、中距離前向きカメラ226を含む、いくつかのセンサを固定し、かつ、位置決めすることができる。サイドミラー210は、後向きカメラ228および中距離ライダ230のための取り付け位置を提供し得る。前方レーダ232は、バンパー204に取り付けられてよい。他のセンサは、他の位置に取り付けられ、または、設置されてよく、-
図2Aから
図2Cまでに示される位置およびマウントは、例示の目的のためだけのものである。これから
図2Cを参照すると、運転室202および睡眠コンパートメント212の内部を示す、セミトラック200の部分的な図が示されている。いくつかの実施形態において、
図1の制御システム100の一部は、睡眠コンパートメント212におけるシステムラック240内に配備されており、保守および動作のための制御システム100のコンポーネントへの容易なアクセスを可能にしている。
【0035】
図3Aは、例示的な実施形態に従った、ポケットファイル300のフォーマットの一つの例を示している。
図3Aを参照すると、ポケットファイル300は、ヘッダ310、および、インデックス付けされたデータセクション320を含む、バイナリファイルである。データセクション320は、オーディオ、画像フレーム、GPSデータ、センサデータ、ライダデータ、レーダデータ、経路案内データ、等といったマルチメディアコンテンツを保管し得る。例えば、データセクション320は、再生可能(playable)なコンテンツを保管することができ、そして、ポケットファイル300は、運転シミュレーションまたは任意の他の種類のストリーミングセッションといったストリーミングセッションの最中に再生され得る。データまたはコンテンツは、メッセージの形態で保管され得る。
【0036】
車両の中では、GPS、エンジン、ブレーキシステム、アクセル、制御システム、経路指定システム、誘導システム、計画システム、等といった、異なるシステムが、車両のコンピュータにメッセージを発行することができ、それは、次いで、ファイルに保管される。いくつかの場合に、データは、本明細書で説明されるようにポケットファイルに保管されてよい。別の例として、データは、最初に、ROSファイルといったインデックス付けされていないファイルに保管され、そして、その後、ポケットファイルへと変換され得る。ROSファイルをポケットファイルへと変換する一つの例は、
図6Aから
図6Bまでの実施例において説明されている。
【0037】
再び
図3Aを参照すると、データセクション320内のインデックス付けは、データセクション320に保管された時間ベースのデータの中の時間間隔に基づいてよい。例えば、インデックス312は、等しく離れて置かれた間隔で、いくつかのインデックスを用いて作成されてよい。例えば、0.5秒、1.0秒、5.0秒毎である。インデックス312内の各時間間隔は、データセクション320内の対応するデータのバイト位置322に対してマッピングされ得る。バイト位置322は、データセクション320のストレージ構造の中のアドレスまたは位置である。ここで、時間間隔に対してマッピングされるアドレスは、その時間間隔で再生されるデータがデータセクション320において保管される場所である。従って、インデックス312は、複数の時間間隔が、マルチメディアコンテンツの中の時間ベースのデータの複数のセクションに対応するデータセクション320の中の複数のバイトロケーションに対してマッピングされるように、生成され得る。
【0038】
例えば、
図3Bは、一つの例示的な実施形態に従った、インデックス312の追加の例を示している。
図3Bを参照すると、インデックス312は、ポケットファイル300のデータセクション320における複数のバイト位置334(アドレス)に対してマッピングされた複数のタイミング識別子332(時間間隔)を含んでいる。この例において、インデックス312は、時間に基づいてデータセクション320野中に保管されている、マルチメディアコンテンツのインデックス付きビューを保管することができる。従って、インデックス312は、時間に基づいてデータセクション320から再生されるコンテンツのサブセットを選択的に識別するために、使用され得る。
【0039】
図4Aから
図4Dまでは、例示的な実施形態に従った、ポケットファイルに基づいてコンテンツをストリーミングするプロセスを示している。
図4Aを参照すると、プロセス400Aが示されており、そこでは、コンピューティング端末410が、インターネットなど、といったコンピュータネットワークを介して、ホストプラットフォーム420とネットワーク通信チャネルを確立する。コンピューティング端末410は、デスクトップコンピュータ、ラップトップコンピュータ、タブレット、スマートウェアラブル、モバイルデバイス、車両など、であり得る。ホストプラットフォーム420は、クラウドプラットフォーム、ウェブサーバ、データベース、コンテンツ配信サービス、等といった任意のタイプのホストシステムを指し得る。ホストプラットフォーム420は、また、
図3Aおよび
図3Bの例で説明したように、ポケットファイルフォーマットを有しているファイルを保管する、ファイルストレージ422も含んでいる。
【0040】
図4Aの例において、ユーザは、再生することができるコンテンツに対するアクセスを提供する、ユーザインターフェイス412を開くことができる。最初に、ユーザは、開きたいファイルを識別し、そして、ユーザインターフェイス412を介してホストプラットフォーム420に対して選択をサブミットすることができる。これに応答して、ホストプラットフォーム420は、ユーザがファイルストレージ422から開くことを望むファイルに対応する、ポケットファイル430を識別することができる。例えば、
図4Bは、ホストプラットフォーム420がポケットファイル430を識別し、そして、データセクション434ではなく、ポケットファイル430からヘッダ432のみをダウンロードするプロセス400Bを示している。ヘッダ432は、
図3Aおよび
図3Bの例で説明したようなインデックスを含んでおり、そして、ポケットファイル430のデータセクション434の中に保管されているコンテンツのインデックス付きビューを提供する。
【0041】
図4Cは、コンピューティング端末410のプロセス400Cを示しており、ホストプラットフォームからヘッダ432を受信し、そして、ポケットファイル430のデータセクション434から再生されるコンテンツを選択する。例えば、ユーザインターフェイス412は、ホストプラットフォーム420からダウンロードされたヘッダ432に含まれるインデックスを表示し得る。インデックスは、どの時間間隔がビデオのどの部分に対応するかに関する情報を含み得る。ユーザインターフェイス412は、どのコンテンツを再生するかを決定するときにユーザによって使用され得る、各間隔で保管されたコンテンツのタイプ(例えば、ライダ、GPS、カメラ、速度、等)の識別子を含み得る。ユーザは、ユーザインターフェイス412にコマンドを入力し、そして、ポケットファイル430のデータセクション434から再生される1つ以上の時間間隔を選択することができる。
【0042】
これから
図4Dを参照すると、ホストプラットフォーム420のプロセス400Dが示されており、
図4Cのプロセスで実行された選択に応答して、ポケットファイル430からコンピューティング端末410に選択コンテンツをダウンロードする。ここで、ホストプラットフォーム420は、ヘッダ432に保管されたインデックスに基づいて、データセクション434からコンテンツをプル(pull)するために使用され得る、識別子を受信することができる。ここで、コンピューティング端末410から受信される識別子は、ユーザが再生したいタイミング識別子(時間間隔)を含み得る。これに応答して、ホストプラットフォーム420は、データセクション434の中どのバイト位置が、それらの時間間隔で再生される対応するデータを含むかを識別し、そして、ポケットファイル430のデータセクション434をダウンロードすることなく、それらの識別されたバイト位置に保管されたデータのみを選択的にダウンロードすることができる。
【0043】
ユーザ側においてでは、コンピューティング端末410は、2つの時間間隔がオリジナルデータにおいて連続していない場合であっても、時間ベースのデータの時間間隔を連続して再生することができる。
図4Dの例においては、第4時間間隔(例えば、4秒目)からの時間ベースのデータが、第9時間間隔(例えば、9秒目)からの時間ベースのデータと連続して再生される。ここで、コンピューティング端末410は、ポケットファイル430の中に保管された時間ベースのデータの4秒目および9秒目からのコンテンツのみをホストプラットフォーム420が再生することを、要求し得る。これに応答して、ホストプラットフォーム420は、コンテンツの4秒目および9秒目を再生するために必要なデータのみをダウンロードすることができ、一方、ビデオの第1時間間隔から第3時間間隔までの時間ベースのデータ、ビデオの第5時間間隔から第8時間間隔までの時間ベースのデータ、および、第9時間間隔の後の任意の時間間隔からの時間ベースのデータといった、他のコンテンツのための介在する時間間隔をダウンロードしなくてよい。コンピューティング端末410が車両であった場合、車両は、本明細書に記載されたプロセスを使用して、選択的な方法でファイルからのコンテンツをシミュレートすることができる。開始点および停止点を含む、データの範囲(時間間隔)が要求され得ることも、また、理解されるべきである。
【0044】
図5は、
図4Aから
図4Dまでの例に示されたユーザインターフェイス412に対応するユーザインターフェイス500を示している。
図5を参照すると、ユーザインターフェイス500は、表示領域(viewing area)510、および、表示領域510内に表示されたデータに基づいて選択を制御し、かつ、行うためのコマンド521、522、等を伴う制御セクション520を含んでいる。
図5の例においては、表示領域510が、ポケットファイルのヘッダからダウンロードされ、そして、ユーザインターフェイス500を見ている視聴者(人)が理解できる視覚的フォーマットへと変換され得るインデックスの例を表示している。
【0045】
この実施例において、インデックスは、対応する時間間隔でポケットファイルのデータセクションの中に保管されているコンテンツのコンテンツ記述に対してマッピングされた時間間隔を含む、人間が読み取り可能なバージョンである。コンテンツ記述は、コンテンツと共に対応するデータメッセージを投稿(post)した、システムの識別子といったデータのトピックの識別子を含み得る。一つの例として、トピックは、GPS、エンジン、ブレーキシステム、アクセル、制御システム、プランナー、等を含み得るが、これらに限定されない。トピックは、各間隔で保管されているコンテンツの理解をユーザに与えるために使用することができる。例えば、データセクションに保管されたデータは、それぞれの時間間隔で車両内の様々なシステムによって公開され、または、そうでなければ、投稿されたメッセージに対応し得る。トピックは、コンテンツ記述として使用され得る。ここで、トピックは、しばしば、メッセージを投稿したシステムのタイプを識別し、それによって、ビデオ内にその間隔で保管されたコンテンツのタイプを容易に理解することを可能にしている。
【0046】
図6Aから
図6Bまでは、例示的な実施形態に従った、ROSファイルをポケットファイルに変換するプロセスを示している。例えば、
図6Aを参照すると、様々な実施形態に従った、ロボットオペレーティングシステム(ROS)ファイルをポケットファイル630へと変換するプロセス600が示されている。
図6Aを参照すると、ホストプロセス620は、ROSファイル610をその元の形態(original form)で取り込む(ingest)ことができる。ROSファイル610は、メタデータセクション612、および、データチャンク614を含んでよく、GPSシステム、ブレーキシステム、エンジン、アクセル、計画および経路案内システムなどを含む、車両の様々なシステムからエンコーディングされたデータを含み得る。ROSファイル610の中のデータチャンク614は、その中にタイミング情報を含み得るが、システムが、ROSファイル610に基づいて、時間ベースのデータの非介在セグメント間を直接的にジャンプする方法は存在しない。従って、ユーザが、ファイル/データに保管された時間ベースのデータの小さなサブセットを再生したいだけである場合でさえても、ファイル/データ全体をロードし、再生しなければならない。
【0047】
データチャンク614は、車両の異なるシステムによって発行されるデータのメッセージ616を含み得る。メッセージ616は、データチャンク614の中に保管されたメッセージ616から識別することができる、異なるトピックに対して発行され得る。ホストプロセス620は、これらのメッセージ616、および、それに関連するトピックを使用して、メッセージのそれぞれに保管されているコンテンツを理解することができる。さらに、ホストプロセス620は、データキャプチャの開始タイムスタンプ、データキャプチャの停止タイムスタンプなど、といった、メッセージ616の中のタイムスタンプを識別し得る。メッセージ616のタイムスタンプおよびトピックは、ポケットファイル630のヘッダ632に保管されるインデックスを構築するために使用され得る。
【0048】
例えば、データチャンク614に保管されているメッセージ616は、時間に基づいて、構文解析され(parsed)、そして、データのサブセット(または、ポケット)へと変換され得る。例えば、同じ時間間隔で投稿されたメッセージそれぞれは、ポケットファイル630のデータセクション634の中のデータのポケットに一緒に保管され得る。さらに、各時間間隔、および、それに関連する対応するデータは、ポケットファイル630のデータセクション634の異なるそれぞれのバイト位置に保管され得る。さらに、対応するバイト位置および時間間隔は、相互にマッピングされ、そして、ポケットファイル630のヘッダ632内のインデックスの中に保管され得る。ヘッダ632は、また、ヘッダサイズの識別子、各ポケットサイズの識別子、メッセージ616のスキーマの識別子、メッセージ616に関連付けられたトピックの識別子、などを含む、他のデータ属性を含むこともできる。ヘッダ632(および、その中に含まれるインデックス)は、CBORにおいてエンコーディングされ得る。この例においては、メッセージスキーマが存在し、そして、エンドユーザ(例えば、クライアントアプリケーション、等)が各メッセージの意味を理解し、そして、メッセージの中のデータを解読するのを助ける。例えば、メッセージは、値のフィールドを保管することができ、そして、クライアントアプリケーションは、スキーマに基づいて、どのフィールドがどの値を保持するかを理解することができる。
【0049】
図6Bは、
図6AにおけるROSファイル610のデータチャンク614からデータを抽出し、そして、それをポケットファイル630のデータセクション634のポケット636へとロードするプロセス640を示している。ポケット636は、データセクション634の中にバイトのサブセットを含んでよく、それは、インデックスに保管され、そして、コンテンツがそこからのものであるビデオの時間間隔に対応する時間間隔に対してマッピングされ得る。この例において、データチャンク614からプルされたデータは、フィールド名に基づいて選択的にプルされ得る。例えば、データチャンク614内のメッセージ616Aは、車両のGPSシステムによって投稿されてよい。ここで、メッセージのトピックは、そこから識別され、それはコンテンツを分類するために使用され得る。ホストプロセス620は、データメッセージからデータの特定のフィールドをプルするように(例えば、ユーザインターフェイス500を介してユーザによって、等)構成されてよく、一方で、データの他のフィールドを持ち込むことなく、ポケットファイル630に対して残している。
【0050】
例えば、ホストプロセス620は、メッセージ616からフィールド641および642を選択してよく、一方で、メッセージから残りのフィールドを除外している。従って、フィールド641および642からのデータのみが、ポケットファイル630にプルされ得る。同様に、データメッセージ616Bからのフィールド651のみを引き出し、そして、ポケットファイル630の中に入れることができる。ここで、これらのメッセージ616Aおよび616Bの両方は、メッセージ616Aおよび616Bのタイムスタンプから識別され得る同じ時間間隔でポストされる。ホストプロセス620は、これらのメッセージからのコンテンツを、ポケットファイル630のデータセクション634と同じポケット636に入れることができる。
【0051】
図7は、例示的な実施形態に従った、クライアントアプリケーションを介して、サーバから時間ベースのデータをロードするプロセス700を示している。
図7を参照すると、クライアントアプリケーション710は、ラップトップ、デスクトップコンピュータ、モバイルデバイス、サーバ、車両といったデバイスにインストールされ得る。デバイスは、サーバにネットワーク接続され得る。この例において、クライアントアプリケーション710は、サーバ上でホストされるファイル730に保管されたデータを再生している。サーバは、クライアントアプリケーション710から(例えば、フェッチモジュール714から、など)データの要求を受信することができる、ホストサービス720を含んでいる。例えば、フェッチモジュール714は、ファイル730からのデータの間隔に対する要求を伴い、HTTP範囲要求を、ホストサービス720に送信し得る。この例において、ファイル730は、ホストサービス720によって、選択的に抽出され、そして、クライアントアプリケーション710に配信され得る、複数の「ポケット」またはデータのチャンクを含む、ポケットファイルと称される。
【0052】
様々な実施形態に従って、クライアントアプリケーション710は、クライアントアプリケーション710がデータのチャンク732および733を一時的に保持することを可能にするバッファ712を含んでよく、一方で、ホストサービス720を介してファイル730からプルされてきたデータのチャンク731を同時に再生している。この例において、データのチャンク731は、ファイル730内の第1時間間隔に対応し、データのチャンク732は、ファイル730内の第4時間間隔に対応し、データのチャンク733は、ファイル730内の第7時間間隔に対応し、そして、データのチャンク734は、ファイル730内の第10時間間隔に対応している。
【0053】
バッファ712を使用して、クライアントアプリケーション710は、実行/再生される準備が未だできていない追加的なデータのチャンクを同時にフェッチおよび保管することができ、データのチャンクが、ファイル730に保管された時間ベースのデータの中の非連続的な時間間隔からのものであってさえ、データのチャンクのシームレスな再生を保証している。データ731、732、733、および734の各チャンクは、ファイル730内の非連続的な時間間隔からのコンテンツの非連続的なチャンクに対応している。従って、クライアントアプリケーション710は、ファイルからの非連続的な時間間隔に対応している時間間隔を、順次/連続的な順序で選択的に再生することができる。
【0054】
図8は、例示的な実施形態に従った、バイナリファイルからコンテンツを選択的にストリーミングする方法800を示している。例えば、方法800は、ウェブサーバ、コンテンツ配信システム/ネットワーク、クラウドプラットフォーム、オンプレミスサーバ、などによって実行され得る。
図8を参照すると、810において、本方法は、複数のバイナリファイルを保管するステップを含み得る。バイナリファイルは、本明細書では「ポケット」ファイルと呼ばれ、そこでは、ポケットファイル全体を開く、かつ/あるいは、ダウンロードする必要なく、データのポケットが選択的にストリーミングされ得る。820において、本方法は、ネットワークを介して、コンピューティングシステムとコンピューティング端末との間にネットワーク通信セッションを確立するステップを含み得る。例えば、認証または他のハンドシェイクが実行され得る。
【0055】
830において、本方法は、ネットワーク通信セッションを介して、コンピューティング端末から1つ以上の時間間隔の識別子を受信するステップを含み得る。一つの例として、本方法は、HTTPメッセージの一部のみをクライアントアプリケーションに返信するようにサーバに要求する、コンピューティング端末上で実行されているクライアントアプリケーションから、HTTP範囲要求を受信するステップを含み得る。840において、本方法は、バイナリファイルの中のインデックスに基づいて、1つ以上の時間間隔(例えば、HTTP範囲要求における時間の範囲、等)の識別子にマッピングされた、メモリに保管されているバイナリファイルのデータセクションの中のデータのサブセットを識別するステップを含み得る。850において、本方法は、ネットワーク通信セッションを介して、データの識別されたサブセットを含んでいるストリームを、コンピューティング端末に送信するステップを含み得る。いくつかの実施形態において、インデックスは、複数の時間間隔と、複数の時間間隔でキャプチャされたデータオブジェクトが保管されている、バイナリファイルのデータセクションの中の複数のバイト位置との間のマッピングを含み得る。
【0056】
様々な実施形態に従って、バイナリファイルのデータセクションは、その中に保管されたビデオを含み、そして、識別するステップは、1つ以上の時間間隔の受信された識別子に基づいて、再生するビデオのサブセットを識別することを含み得る。いくつかの実施形態において、識別子は、2つの非連続的な時間間隔の識別子を含んでよく、そして、本方法は、さらに、ビデオを再生するときに、2つの非連続的な時間間隔の間にある、ビデオの中の1つ以上の中間の時間間隔をジャンプすることを含む。いくつかの実施形態において、受信するステップは、コンピューティング端末から1つ以上の時間間隔の識別子を有するストリーミング要求を受信すること、および、それに応答して、バイナリファイルのデータセクションの中の1つ以上のデータポケットのみからマルチメディアコンテンツをストリーミングすること、を含み得る。
【0057】
いくつかの実施形態において、本方法は、さらに、1つ以上の時間間隔の識別子を受信する以前に、バイナリファイルのインデックスをコンピューティング端末に送信するステップを含み得る。いくつかの実施形態において、本方法は、さらに、マルチメディアコンテンツが保管されたロボットオペレーティングシステム(ROS)ファイルを、それに関連付けられたインデックス、および、バイナリファイルのデータセクションの中に保管されたマルチメディアコンテンツを含む、バイナリファイルへと変換することを含み得る。いくつかの実施形態において、インデックスは、マルチメディアコンテンツ内の複数の時点に対応している複数の時間間隔を含んでよく、そして、インデックスは、複数の時間間隔との間で、データセクションの中のマルチメディアコンテンツの複数のポケットに対するマッピングを、それぞれに、含んでいる。
【0058】
前述の明細書に基づいて理解されるように、本開示の上述の例は、コンピュータソフトウェア、ファームウェア、ハードウェア、または、それらの任意の組合せ、もしくは、サブセットを含む、コンピュータプログラミングまたはエンジニアリング技法を使用して実装され得る。コンピュータ可読コードを有している、任意のそうした結果として生じるプログラムは、1つ以上の非一時的コンピュータ可読媒体内で具現化または提供されてよく、それによって、本開示の説明された実施例に従った、コンピュータプログラム製品、すなわち、製造品を作製している。例えば、非一時的コンピュータ可読媒体は、これらに限定されるわけではないが、固定ドライブ、ディスケット、光ディスク、磁気テープ、フラッシュメモリ、外部ドライブ、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)といった半導体メモリ、などであり得る。コンピュータコードを含む製造品は、1つの媒体から直接コードを実行することによって、1つの媒体から別の媒体にコードをコピーすることによって、または、ネットワークを介してコードを送信することによって、作成及び/又は使用され得る。
【0059】
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、「アプリ」、またはコードとも、また、呼ばれる)は、プログラマブルプロセッサのための機械命令を含んでよく、そして、高レベル手続き型及び/又はオブジェクト指向プログラミング言語で、及び/又は、アセンブリ/機械言語で実装され得る。本明細書で使用される場合、「機械可読媒体(“machine-readable medium”)」および「コンピュータ可読媒体(“computer-readable medium”)」という用語は、機械命令を機械可読信号として受信する機械可読媒体を含む、機械命令及び/又はデータをプログラマブルプロセッサに提供するために使用される、任意のコンピュータプログラム製品、装置、クラウドストレージ、及び/又は、デバイス(例えば、磁気ディスク、光ディスク、メモリ、プログラマブル論理デバイス(PLD))を指す。「機械可読媒体」および「コンピュータ可読媒体」は、しかしながら、一時的信号を含まない。「機械可読信号(“machine-readable signal”)」という用語は、機械命令及び/又は任意の他の種類のデータをプログラマブルプロセッサに提供するために使用され得る、任意の信号を指す。
【0060】
本明細書におけるプロセスの上記の説明および例示は、プロセスステップを実行するための固定された順序を暗示するものと見なされるべきではない。むしろ、プロセスステップは、少なくともいくつかのステップの同時実行を含む、実行可能な任意の順序で実行され得る。本開示は、特定の例に関連して説明されたが、添付の特許請求の範囲に記載される本開示の趣旨および範囲から逸脱することなく、当業者に対して明らかな様々な変更、置換、および改変が、開示された実施形態に対して行われ得ることが理解されるべきである。
【外国語明細書】