(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-06-24
(45)【発行日】2022-07-04
(54)【発明の名称】位置情報サービスの提供ための分散処理システムと方法
(51)【国際特許分類】
G06F 9/52 20060101AFI20220627BHJP
G06F 9/54 20060101ALI20220627BHJP
G06F 9/46 20060101ALI20220627BHJP
H04W 4/02 20180101ALI20220627BHJP
【FI】
G06F9/52 150B
G06F9/54 Z
G06F9/46 420A
H04W4/02
(21)【出願番号】P 2020537742
(86)(22)【出願日】2019-01-08
(86)【国際出願番号】 IB2019050133
(87)【国際公開番号】W WO2019135207
(87)【国際公開日】2019-07-11
【審査請求日】2020-07-08
(32)【優先日】2018-01-08
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】517222096
【氏名又は名称】ヘーレ グローバル ベスローテン フェンノートシャップ
(74)【代理人】
【識別番号】100099759
【氏名又は名称】青木 篤
(74)【代理人】
【識別番号】100123582
【氏名又は名称】三橋 真二
(74)【代理人】
【識別番号】100114018
【氏名又は名称】南山 知広
(74)【代理人】
【識別番号】100165191
【氏名又は名称】河合 章
(74)【代理人】
【識別番号】100133835
【氏名又は名称】河野 努
(74)【代理人】
【識別番号】100196601
【氏名又は名称】酒井 祐市
(72)【発明者】
【氏名】ダニエル ロルフ
(72)【発明者】
【氏名】ラウル カイアス
(72)【発明者】
【氏名】アレクサンダー ゴノポルスキー
【審査官】久保 光宏
(56)【参考文献】
【文献】国際公開第2017/021420(WO,A1)
【文献】特開2005-134350(JP,A)
【文献】特開2002-318132(JP,A)
【文献】特開2016-164570(JP,A)
【文献】特開2015-121416(JP,A)
【文献】特開2015-149761(JP,A)
【文献】国際公開第2014/055446(WO,A1)
【文献】柳沢 信成(外1名),「DDNSを利用したターゲットの位置情報表示システム」,情報処理学会第66回(平成16年)全国大会講演論文集(3),日本,社団法人情報処理学会,2004年03月09日,第3-415~3-416頁.
【文献】河中 祥吾(外5名),「自転車競技向け参加型位置共有システムにおけるBLEビーコンの出力変化による捕捉率の影響」,情報処理学会研究報告,日本,[online], 情報処理学会,2017年03月02日,Vol.2017-UBI-53, No.1,第1~8頁,[平成29年7月6日検索],インターネット,<URL: http://id.nii.ac.jp/1001/00178112/>,ISSN: 2188-8698.
【文献】岡村 秀昭,「Googleマップを使いこなす 第3回 現在地を共有して楽々待ち合わせ」,日経パソコン,日本,日経BP社,2017年05月08日,No.769,第54~57頁,ISSN: 0287-9506.
【文献】稲田 修一 監修,富田 二三彦(外2名)編,「M2M/IoT教科書」,初版,日本,株式会社インプレス,2015年05月01日,第97-99,122-128,243-246,260-274頁,ISBN: 978-4-8443-3785-0.
【文献】日経コンピュータ(外3名)編,「日経BPムック すべてわかるIoT大全 2016」,日本,日経BP社,2016年01月13日,第67~70,258頁,ISBN: 978-4-8222-7182-4.
【文献】瀧本 往人,「基礎からわかる「IoT」と「M2M」」,初版,日本,株式会社 工学社,2016年03月25日,第86~91頁,ISBN: 978-4-7775-1942-2.
【文献】SeaGate,「AutoCAD VBAで行こう! 第13回 Microsoft Excelとの連携(1)」,月刊CAD & CGマガジン,日本,(株)エクスナレッジ,2005年08月01日,2005年8月号,第138~141頁.
【文献】田中 慎司(外2名),「次世代ネットワークにおけるOpenAPIを利用したIP系サービスのリソース制御方式」,電子情報通信学会技術研究報告,日本,社団法人 電子情報通信学会,2001年03月02日,Vol.100, No.672,第347~352頁,ISSN: 0913-5685.
【文献】A. Roxin, et al.,"TransportML: a middleware for Location-Based Services collaboration",Proceedings of 2009 3rd International Conference on New Technologies, Mobility and Security,IEEE,2009年12月23日,Pages 1-6,ISBN: 978-1-4244-6273-5, <DOI: 10.1109/NTMS.2009.5384734>.
(58)【調査した分野】(Int.Cl.,DB名)
G06F9/46-9/54
H04W4/00-99/00
G01C21/26-21/36
CSDB(日本国特許庁)
IEEEXplore(IEEE)
(57)【特許請求の範囲】
【請求項1】
位置情報サービスを提供するための分散処理システムであって、
少なくとも1つのエッジデバイスおよび少なくとも1つのクラウドコンピューティングデバイスを含む複数のコンピューティングデバイスであって、それぞれが、
前記コンピューティングデバイスのメモリデバイスによって記憶されて、かつそれぞれの前記コンピューティングデバイスのプロセッサによって実行される、複数のコンピュータプログラム命令によって定義されるコアコンポーネントと、
1つ以上のサービスと
を含む、コンピューティングデバイスを含み、
1つのコンピューティングデバイスの前記1つ以上のサービスのインスタンスは、異なるコンピューティングデバイスの前記1つ以上のサービスのインスタンスと異なっており、前記サービスの1つ以上が位置情報サービスを提供するように構成されており、
前記サービスの状態が更新されたとき、各コンピューティングデバイスの前記コアコンポーネントは、
別のコンピューティングデバイスのコアコンポーネントとデータを共有して、異なるコアコンポーネント上の前記サービスの前記インスタンス間でデータを同期するために、前記それぞれのコンピューティングデバイスの前記1つ以上のサービスと、ならびに、前記別のコンピューティングデバイスの少なくとも1つの前記コアコンポーネントと、通信するように構成されている、
分散処理システム。
【請求項2】
前記1つ以上のサービスが、ステートフルパイプラインおよびステートレスマイクロサービスからなるグループから選択される、請求項1に記載の分散処理システム。
【請求項3】
前記パイプラインが、シーケンシャルな方法で実行されて、前記パイプラインの状態として維持される値を生成するように構成されている複数の計算を含む、請求項2に記載の分散処理システム。
【請求項4】
前記パイプラインを含むそれぞれのコンピューティングデバイスの前記コアコンポーネントが、前記パイプラインの前記状態を維持するように構成されている、請求項3に記載の分散処理システム。
【請求項5】
前記1つ以上のサービスがアプリケーションとして配置されるルーティングマイクロサービスおよびガイダンスマイクロサービスを含み、それぞれのコンピューティングデバイスの前記コアコンポーネントが前記ルーティングマイクロサービスの出力を前記ガイダンスマイクロサービスに提供するように構成されている、請求項2から4のいずれか一項に記載の分散処理システム。
【請求項6】
それぞれのコンピューティングデバイスの前記コアコンポーネントが、データを共有して前記パイプラインの実行を調整するために、別のコンピューティングデバイスの前記コアコンポーネントと通信するように構成されている、請求項2から5のいずれか一項に記載の分散処理システム。
【請求項7】
各コンピューティングデバイスの前記コアコンポーネントが前記1つ以上のサービスのためにデータのキャッシュ管理を提供するように構成されている、請求項1から6のいずれか一項に記載の分散処理システム。
【請求項8】
それぞれのコンピューティングデバイスの前記コアコンポーネントが別のコアコンポーネントからの1つ以上の機能呼出しに応答するように構成されており、前記それぞれのコンピューティングデバイスの前記コアコンポーネントによって受信された前記機能呼出しがユーザトークンと関連付けられており、前記それぞれのコンピューティングデバイスの前記コアコンポーネントが、ユーザトークンと関連付けられたユーザに排他的に割り当てられる安全な領域の中で前記機能呼出しに応答してデータに1つ以上の動作を実行するようにさらに構成されている、請求項1から
7のいずれか一項に記載の分散処理システム。
【請求項9】
前記複数のコンピューティングデバイスの前記コアコンポーネントが競合のない複製データ型(conflict-free replicated data type,CRDT)を有するデータを共有するように構成されている、請求項1から
8のいずれか一項に記載の分散処理システム。
【請求項10】
位置情報サービスを提供する装置であって、
1つ以上のサービスのユーザ選択を受信するための手段
と、ここで、少なくとも1つのサービスは
、それぞれのコンピューティングデバイスのメモリデバイスによって記憶されて、かつ前記それぞれのコンピューティングデバイスのプロセッサによって実行される、複数のコンピュータプログラム命令によって定義されるコアコンポーネントと関連付けられており、そして位置情報サービスを提供するように構成されている
、
前記サービスの状態が更新されたとき、別のコンピューティングデバイスのコアコンポーネントとデータを共有して、
異なるコアコンポーネント上の前記サービスの前記インスタンス間でデータを同期させるために、前記1つ以上のサービスと、ならびに前記別のコンピューティングデバイスのコアコンポーネントと通信するための手段
と、ここで、前記装置は前記位置情報サービスが基にしている前記データを取得するために通信させられ
、前記少なくとも1つのサービスのインスタンスは、前記別のコンピューティングデバイスの1つ以上のサービスのインスタンスとは異なる、
選択された前記少なくとも1つのサービスの実行後に選択された前記サービスと関連付けられた前記コアコンポーネントにおいて、選択された前記少なくとも1つのサービスの状態を記憶するための手段と
を含む装置。
【請求項11】
前記1つ以上のサービスがステートフルパイプラインおよびステートレスマイクロサービスからなるグループから選択される、請求項
10に記載の装置。
【請求項12】
前記パイプラインが、シーケンシャルな方法で実行されて前記パイプラインの状態として維持される値を生成するように構成されている複数の計算を含む、請求項
11に記載の装置。
【請求項13】
前記パイプラインと関連付けられている前記コアコンポーネントが前記パイプラインの前記状態を維持するように構成されている、請求項
12に記載の装置。
【請求項14】
前記1つ以上のサービスがアプリケーションとして配置されるルーティングマイクロサービスおよびガイダンスマイクロサービスを含み、前記1つ以上のサービスと関連付けられた前記コアコンポーネントが前記ルーティングマイクロサービスの出力を前記ガイダンスマイクロサービスに提供するように構成されている、請求項
11から
13のいずれか一項に記載の装置。
【請求項15】
少なくとも1つのサービスの前記状態を記憶するための前記手段が前記1つ以上のサービスのために前記データのキャッシュ管理を提供する、請求項
10から
14のいずれか一項に記載の装置。
【請求項16】
別のコアコンポーネントからの1つ以上の機能呼出しを受信するための手段であって、受信される前記機能呼出しはユーザトークンに関連付けられている、手段と、
前記ユーザトークンと関連付けられたユーザに排他的に割り当てられる安全な領域の中で前記機能呼出しに応答してデータに1つ以上の動作を実行するための手段と
をさらに含む、請求項
10から
15のいずれか一項に記載の装置。
【請求項17】
前記1つ以上のサービスの少なくともいくつかのために、それぞれのサービスがエッジデバイスによって実行されるか、またはクラウドで実行されるかに関するユーザ選択を受信するための手段と、
前記それぞれのサービスが前記エッジデバイスによって実行されるか、または前記クラウドで実行されるかに基づいてフィードバックを提供するための手段であって、前記フィードバックは、プロセッサ使用状況、メモリ使用状況、モバイルデータの消費、プロセス数またはスレッド数に関する1つ以上のパラメータを含む、手段と
をさらに含む、請求項
10から
16のいずれか一項に記載の装置。
【請求項18】
1つ以上のサービスの実行後に、プロセッサ使用状況、メモリ使用状況、モバイルデータの消費、プロセス数またはスレッド数に関する追加のフィードバックを提供するための手段をさらに含む、請求項
10から
17のいずれか一項に記載の装置。
【請求項19】
前記別のコンピューティングデバイスの前記コアコンポーネントと通信することは、競合のない複製データ型(CRDT)を有するデータを共有することを含む、請求項10から18のいずれか一項に記載の装置。
【請求項20】
位置情報サービスを提供するための方法であって、
1つ以上のサービスのユーザ選択を受信すること
と、ここで、少なくとも1つのサービスは
、それぞれのコンピューティングデバイスのメモリデバイスによって記憶されて、かつ前記それぞれのコンピューティングデバイスのプロセッサによって実行される、複数のコンピュータプログラム命令によって定義されるコアコンポーネントと関連付けられており、そして位置情報サービスを提供するように構成されている、
前記サービスの状態が更新されたとき、別のコンピューティングデバイスのコアコンポーネントとデータを共有して
、異なるコアコンポーネント上の前記サービスの前記インスタンス間でデータを同期させるために、前記1つ以上のサービスと、ならびに
前記別のコンピューティングデバイスのコアコンポーネントと通信すること
と、ここで、前記通信することは前記位置情報サービスが基にしている前記データを取得するために通信することを含
み、前記少なくとも1つのサービスのインスタンスは、前記別のコンピューティングデバイスの1つ以上のサービスのインスタンスとは異なる、
選択された前記少なくとも1つのサービスの実行後に選択された前記サービスと関連付けられた前記コアコンポーネントにおいて、選択された前記少なくとも1つのサービスの状態を記憶することと
を含む方法。
【請求項21】
前記1つ以上のサービスがステートフルパイプラインおよびステートレスマイクロサービスからなるグループから選択される、請求項
20に記載の方法。
【請求項22】
前記パイプラインが、シーケンシャルな方法で実行されて前記パイプラインの状態として維持される値を生成するように構成されている複数の計算を含む、請求項
21に記載の方法。
【請求項23】
前記パイプラインと関連付けられている前記コアコンポーネントが前記パイプラインの前記状態を維持するように構成されている、請求項
22に記載の方法。
【請求項24】
前記1つ以上のサービスがアプリケーションとして配置されるルーティングマイクロサービスおよびガイダンスマイクロサービスを含み、前記1つ以上のサービスと関連付けられた前記コアコンポーネントが前記ルーティングマイクロサービスの出力を前記ガイダンスマイクロサービスに提供するように構成されている、請求項
21から
23のいずれか一項に記載の方法。
【請求項25】
前記少なくとも1つのサービスの前記状態を記憶することが、前記1つ以上のサービスのために前記データのキャッシュ管理を提供することを含む、請求項
20から
24のいずれか一項に記載の方法。
【請求項26】
別のコアコンポーネントからの機能呼出しに応答してデータに1つ以上の動作を実行することをさらに含み、受信される前記機能呼出しがユーザトークンと関連付けられており、前記1つ以上の動作が前記ユーザトークンと関連付けられたユーザに排他的に割り当てられる安全な領域の中で実行される、請求項
20から
25のいずれか一項に記載の方法。
【請求項27】
前記1つ以上のサービスの少なくともいくつかのために、それぞれのサービスがエッジデバイスによって実行されるか、またはクラウドで実行されるかに関してユーザ選択を受信することと、
前記それぞれのサービスが前記エッジデバイスによって実行されるか、または前記クラウドで実行されるかに基づいてフィードバックを提供することであって、前記フィードバックは、プロセッサ使用状況、メモリ使用状況、モバイルデータの消費、プロセス数またはスレッド数に関する1つ以上のパラメータを含む、提供することと
をさらに含む、請求項
20から
26のいずれか一項に記載の方法。
【請求項28】
1つ以上のサービスの実行後に、プロセッサ使用状況、メモリ使用状況、モバイルデータの消費、プロセス数またはスレッド数に関する追加のフィードバックを提供することをさらに含む、請求項
20から
27のいずれか一項に記載の方法。
【請求項29】
前記別のコンピューティングデバイスの前記コアコンポーネントと通信することは、競合のない複製データ型(CRDT)を有するデータを共有することを含む、請求項20から28のいずれか一項に記載の方法。
【請求項30】
位置情報サービスを提供するように構成されているコンピュータプログラム製品であって、前記コンピュータプログラム製品は、中に記憶されるコンピュータ実行可能プログラムコード命令を有する少なくとも1つの非一時的コンピュータ可読記憶媒体を含み、前記プログラムコード命令は、実行に際して、
1つ以上のサービスのユーザ選択を受信
し、ここで、少なくとも1つのサービスは
、それぞれのコンピューティングデバイスのメモリデバイスによって記憶されて、かつ前記それぞれのコンピューティングデバイスのプロセッサによって実行される、複数のコンピュータプログラム命令によって定義されるコアコンポーネントと関連付けられており、そして位置情報サービスを提供するように構成されており、
前記サービスの状態が更新されたとき、別のコンピューティングデバイスのコアコンポーネントとデータを共有して
、異なるコアコンポーネント上の前記サービスの前記インスタンス間でデータを同期させるために、前記1つ以上のサービスとの、ならびに
前記別のコンピューティングデバイスのコアコンポーネントとの通信を生じさ
せ、ここで、前記プログラムコード命令は、実行に際して、前記位置情報サービスが基にしている前記データを取得するために通信を生じさせるように構成されており、
前記少なくとも1つのサービスのインスタンスは、前記別のコンピューティングデバイスの1つ以上のサービスのインスタンスとは異なり、
選択された前記少なくとも1つのサービスの状態を、選択された前記少なくとも1つのサービスの実行後に選択された前記サービスと関連付けられた前記コアコンポーネントに記憶されるようにさせる
ように構成されている、コンピュータプログラム製品。
【請求項31】
前記1つ以上のサービスがステートフルパイプラインおよびステートレスマイクロサービスからなるグループから選択される、請求項
30に記載のコンピュータプログラム製品。
【請求項32】
前記パイプラインが、シーケンシャルな方法で実行されて、前記パイプラインの状態として維持される値を生成するように構成されている複数の計算を含む、請求項
31に記載のコンピュータプログラム製品。
【請求項33】
前記パイプラインと関連付けられている前記コアコンポーネントが前記パイプラインの前記状態を維持するように構成されている、請求項
32に記載のコンピュータプログラム製品。
【請求項34】
前記1つ以上のサービスがアプリケーションとして配置されるルーティングマイクロサービスおよびガイダンスマイクロサービスを含み、前記1つ以上のサービスと関連付けられた前記コアコンポーネントが前記ルーティングマイクロサービスの出力を前記ガイダンスマイクロサービスに提供するように構成されている、請求項
31から
33のいずれか一項に記載のコンピュータプログラム製品。
【請求項35】
前記少なくとも1つのサービスの前記状態を記憶させられるように構成されている前記プログラムコード命令が、前記1つ以上のサービスのために前記データのキャッシュ管理を提供するように構成されているプログラムコード命令を含む、請求項
30から
34のいずれか一項に記載のコンピュータプログラム製品。
【請求項36】
前記プログラムコード命令が別のコアコンポーネントからの機能呼出しに応答してデータに1つ以上の動作を実行するようにさらに構成されており、受信される前記機能呼出しがユーザトークンと関連付けられており、前記1つ以上の動作が前記ユーザトークンと関連付けられたユーザに排他的に割り当てられる安全な領域の中で実行される、請求項
30から
35のいずれか一項に記載のコンピュータプログラム製品。
【請求項37】
前記別のコンピューティングデバイスの前記コアコンポーネントと通信することは、競合のない複製データ型(CRDT)を有するデータを共有することを含む、請求項30から36のいずれか一項に記載のコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願に対する相互参照
本出願は2018年1月8日に出願の米国仮特許出願第62/614,784号に優先権を主張し、その内容全体を完全に本明細書に援用する。
【0002】
例示の実施形態は、位置情報サービスを提供するための分散処理システム、方法、およびコンピュータプログラム製品に関し、より詳しくは、例えば、パイプラインとして、すなわち、それぞれのコアコンポーネントを介して通信して同期を維持したままとするマイクロサービスとして構成される、1つ以上の分散サービスを位置情報サービスに提供するための分散処理システム、方法、およびコンピュータプログラム製品に関する。
【背景技術】
【0003】
位置情報サービスは、幅広く利用されている。位置情報サービスの一般的な例には、マップのディスプレイ、ユーザの位置がマップ上に識別されるマップマッチング、位置検索機能、ルーティング、ガイダンスおよび交通関連情報の提供が含まれる。位置情報サービスは、ナビゲーションシステム、スマートフォンおよび他のタイプの携帯端末などを含む多種多様な異なるプラットフォームで利用できる。車両は、ますます位置情報サービスを提供するように設計されつつあり、そしてドライバおよび乗客は、自分の車両により提供される位置情報サービスにますます依存するようになっており、それは、例えば、目的地に最も短いルートを識別すること、車両が目的地に到着すると思われる時間を識別すること、異常な交通状態または渋滞の予告を提供すること、所望の目的地または興味のある地点を位置検出することなどのためである。
【0004】
車両に搭載された位置情報サービスのいくつかのカスタマイズが提供されてもよく、それは例えば、車両が購入されるかもしくはリースされる時かまたは、その後で、位置情報サービスのベンダからマップデータの更新を取得することに関連して、提供されてもよい。しかしながら、自分のそれぞれの車両と連動してユーザが利用できる位置情報サービスのカスタマイズはいくらか制限されており、それにより、ドライバおよびそれらの乗客による位置情報サービスの利用および享受が対応して制限される。
【発明の概要】
【0005】
位置情報サービスを提供するための分散処理システムは、車両に搭載して提供される位置情報サービスをカスタマイズするためのシステム、方法、およびコンピュータプログラム製品と共に提供される。したがって、位置情報サービスは、位置情報サービスのタイプならびに位置情報サービスの以降の実行に関して、カスタマイズすることができる。車両のユーザは、その後で、ユーザの希望とより整合している方法で位置情報サービスを利用することができ、それによって、向上したユーザ体験を与える。
【0006】
例示の実施形態において、位置情報サービスを提供するための分散処理システムが開示される。分散処理システムは、少なくとも1つのエッジデバイスおよび少なくとも1つのクラウドコンピューティングデバイスを含む複数のコンピューティングデバイスを含む。各コンピューティングデバイスは、コアコンポーネントおよび1つ以上のサービスを含む。1つのコンピューティングデバイスの1つ以上のサービスのインスタンスは、異なるコンピューティングデバイスの1つ以上のサービスのインスタンスとは異なる。サービスの1つ以上は、位置情報サービスを提供するように構成される。各コンピューティングデバイスのコアコンポーネントは、データを共有してコアコンポーネントを同期させるために、それぞれのコンピューティングデバイスの1つ以上のサービスと、ならびに、他のコンピューティングデバイスの少なくとも1つのコアコンポーネントと、通信するように構成される。
【0007】
1つ以上のサービスは、ステートフルパイプラインおよびステートレスマイクロサービスからなるグループから選択することができる。この点に関しては、パイプラインは、シーケンシャルな方法で実行されて、パイプラインの状態として維持される値を生成するように構成される複数の計算を含む。パイプラインを含むそれぞれのコンピューティングデバイスのコアコンポーネントは、パイプラインの状態を維持するように構成することができる。それぞれのコンピューティングデバイスのコアコンポーネントは、データを共有してパイプラインの実行を調整するために、別のコンピューティングデバイスのコアコンポーネントと通信するように構成することができる。例示の実施形態において、1つ以上のサービスは、アプリケーションとして配置されるルーティングマイクロサービスおよびガイダンスマイクロサービスを含む。この例示の実施形態において、それぞれのコンピューティングデバイスのコアコンポーネントは、ルーティングマイクロサービスの出力をガイダンスマイクロサービスに提供するように構成される。
【0008】
各コンピューティングデバイスのコアコンポーネントは、1つ以上のサービスのためにデータのキャッシュ管理を提供するように構成することができる。各コンピューティングデバイスのコアコンポーネントは、サービスの複数のインスタンスの間でデータを同期させるように構成することができる。例示の実施形態において、それぞれのコンピューティングデバイスのコアコンポーネントは、別のコアコンポーネントからの1つ以上の機能呼出しに応答するように構成される。この例示の実施形態のそれぞれのコンピューティングデバイスのコアコンポーネントによって受信される機能呼出しは、ユーザトークンに関連付けられており、それぞれのコンピューティングデバイスのコアコンポーネントはさらに、ユーザトークンと関連付けられたユーザに排他的に割り当てられる安全な領域の中で機能呼出しに応答してデータに1つ以上の動作を実行するように構成される。例示の実施形態において、複数のコンピューティングデバイスのコアコンポーネントは、競合のない複製データ型(conflict-free replicated data type,CRDT)を有するデータを共有するように構成される。
【0009】
別の例示の実施形態において、位置情報サービスを提供するための装置が開示される。装置は、1つ以上のサービスのユーザ選択を受信するための手段を含む。少なくとも1つのサービスは、コアコンポーネントと関連付けられて、位置情報サービスを提供するように構成される。装置は、データを共有してコアコンポーネントを同期させるために、1つ以上のサービスならびに別のコンピューティングデバイスのコアコンポーネントと通信するための手段も含む。装置は、位置情報サービスが基にしているデータを取得するために通信させられる。装置は、選択された少なくとも1つのサービスの実行後に選択されたサービスと関連したコアコンポーネントにおいて、選択された少なくとも1つのサービスの状態を記憶するための手段をさらに含む。
【0010】
1つ以上のサービスは、ステートフルパイプラインおよびステートレスマイクロサービスからなるグループから、例示の実施形態に従って選択される。この点に関しては、パイプラインは、シーケンシャルな方法で実行されて、パイプラインの状態として維持される値を生成するように構成される複数の計算を含むことができる。パイプラインと関連付けられているコアコンポーネントは、パイプラインの状態を維持するように構成することができる。例示の実施形態において、1つ以上のサービスは、アプリケーションとして配置されるルーティングマイクロサービスおよびガイダンスマイクロサービスを含む。この例示の実施形態の1つ以上のサービスと関連付けられたコアコンポーネントは、ルーティングマイクロサービスの出力をガイダンスマイクロサービスに提供するように構成される。
【0011】
少なくとも1つのサービスの状態を記憶するための手段は、1つ以上のサービスのためにデータのキャッシュ管理を提供できる。例示の実施形態の装置は、サービスの複数のインスタンスの間でデータを同期させるための手段をさらに含む。例示の実施形態において、装置は、別のコアコンポーネントからの1つ以上の機能呼出しを受信するための手段をさらに含む。受信される機能呼出しは、ユーザトークンと関連付けられる。この例示の実施形態の装置はまた、ユーザトークンと関連付けられたユーザに排他的に割り当てられる安全な領域の中で機能呼出しに応答してデータに1つ以上の動作を実行するための手段を含む。例示の実施形態の装置は、1つ以上のサービスの少なくともいくつかのために、それぞれのサービスがエッジデバイスによって実行されるか、または、クラウドで実行されるかに関するユーザ選択を受信するための手段、およびそれぞれのサービスがエッジデバイスによって実行されるか、または、クラウドで実行されるかに基づいてフィードバックを提供するための手段をさらに含む。フィードバックは、プロセッサ使用状況、メモリ使用状況、モバイルデータの消費、プロセス数またはスレッド数に関する1つ以上のパラメータを含む。例示の実施形態において、装置は、1つ以上のサービスの実行後に、プロセッサ使用状況、メモリ使用状況、モバイルデータの消費、プロセス数またはスレッド数に関する追加のフィードバックを提供するための手段をさらに含む。
【0012】
更なる例示の実施形態において、位置情報サービスを提供するための装置が開示される。装置は、少なくとも1つのプロセッサおよびコンピュータプログラムコードを含む少なくとも1つのメモリを含む。少なくとも1つのメモリおよびコンピュータプログラムコードは、プロセッサによって、装置に1つ以上のサービスのユーザ選択を受信させるように構成される。少なくとも1つのサービスは、コアコンポーネントと関連付けられて、位置情報サービスを提供するように構成される。少なくとも1つのメモリおよびコンピュータプログラムコードはまた、データを共有してコアコンポーネントを同期させるために、プロセッサによって、装置に、1つ以上のサービスと、ならびに、別のコンピューティングデバイスのコアコンポーネントと、通信させるように構成される。少なくとも1つのメモリおよびコンピュータプログラムコードは、位置情報サービスが基にしているデータを取得するために、プロセッサによって、装置に通信させるように構成される。少なくとも1つのメモリおよびコンピュータプログラムコードはさらに、プロセッサによって、装置に、選択された少なくとも1つのサービスの実行後に選択されたサービスと関連付けられたコアコンポーネントにおいて、選択された少なくとも1つのサービスの状態を記憶させるように構成される。
【0013】
1つ以上のサービスは、ステートフルパイプラインおよびステートレスマイクロサービスからなるグループから、例示の実施形態に従って選択される。この点に関しては、パイプラインは、シーケンシャルな方法で実行されて、パイプラインの状態として維持される値を生成するように構成される複数の計算を含むことができる。パイプラインと関連付けられているコアコンポーネントは、パイプラインの状態を維持するように構成することができる。例示の実施形態において、1つ以上のサービスは、アプリケーションとして配置されるルーティングマイクロサービスおよびガイダンスマイクロサービスを含む。この例示の実施形態の1つ以上のサービスと関連付けられたコアコンポーネントは、ルーティングマイクロサービスの出力をガイダンスマイクロサービスに提供するように構成される。
【0014】
少なくとも1つのメモリおよびコンピュータプログラムコードは、プロセッサによって、1つ以上のサービスのためにデータのキャッシュ管理を提供するために例示の実施形態の装置に少なくとも1つのサービスの状態を記憶させるように構成される。少なくとも1つのメモリおよびコンピュータプログラムコードは、プロセッサによって、例示の実施形態の装置にサービスの複数のインスタンスの間でデータを同期させるように構成される。例示の実施形態において、少なくとも1つのメモリおよびコンピュータプログラムコードは、プロセッサによって、例示の実施形態の装置に別のコアコンポーネントからの1つ以上の機能呼出しを受信させるようにさらに構成される。受信される機能呼出しは、ユーザトークンと関連付けられる。少なくとも1つのメモリおよびコンピュータプログラムコードは、プロセッサによって、この例示の実施形態の装置にユーザトークンと関連付けられたユーザに排他的に割り当てられる安全な領域の中で機能呼出しに応答してデータに1つ以上の動作を実行させるように構成される。少なくとも1つのメモリおよびコンピュータプログラムコードは、プロセッサによって、例示の実施形態の装置に、1つ以上のサービスの少なくともいくつかのために、それぞれのサービスがエッジデバイスによって、または、クラウドで実行されるかどうかに関してユーザ選択を受信して、それぞれのサービスがエッジデバイスによって、または、クラウドで実行されるかどうかに基づいてフィードバックを提供させるように構成される。フィードバックは、プロセッサ使用状況、メモリ使用状況、モバイルデータの消費、プロセス数またはスレッド数に関する1つ以上のパラメータを含む。例示の実施形態において、少なくとも1つのメモリおよびコンピュータプログラムコードは、プロセッサによって、例示の実施形態の装置に、1つ以上のサービスの実行後に、プロセッサ使用状況、メモリ使用状況、モバイルデータの消費、プロセス数またはスレッド数に関する追加のフィードバックを提供させるようにさらに構成される。
【0015】
別の例示の実施形態において、位置情報サービスを提供するための方法が開示される。方法は、1つ以上のサービスのユーザ選択を受信することを含む。少なくとも1つのサービスは、コアコンポーネントと関連付けられて、位置情報サービスを提供するように構成される。方法は、データを共有してコアコンポーネントを同期させるために、1つ以上のサービスならびに別のコンピューティングデバイスのコアコンポーネントと通信することをさらに含む。この点に関しては、方法は、位置情報サービスが基にしているデータを取得するために通信する。方法はまた、選択された少なくとも1つのサービスの実行後に選択されたサービスと関連したコアコンポーネントにおいて、選択された少なくとも1つのサービスの状態を記憶することを含む。
【0016】
1つ以上のサービスは、ステートフルパイプラインおよびステートレスマイクロサービスからなるグループから選択することができる。この点に関しては、パイプラインは、シーケンシャルな方法で実行されて、パイプラインの状態として維持される値を生成するように構成される複数の計算を含むことができる。パイプラインと関連付けられているコアコンポーネントは、パイプラインの状態を維持するように構成することができる。例示の実施形態において、1つ以上のサービスは、アプリケーションとして配置されるルーティングマイクロサービスおよびガイダンスマイクロサービスを含む。1つ以上のサービスと関連付けられたこの例示の実施形態のコアコンポーネントは、ルーティングマイクロサービスの出力をガイダンスマイクロサービスに提供するように構成される。例示の実施形態において、少なくとも1つのサービスの状態を記憶することは、1つ以上のサービスのためにデータのキャッシュ管理を提供することを含む。例示の実施形態の方法は、サービスの複数のインスタンスの間でデータを同期させることをさらに含む。
【0017】
例示の実施形態の方法は、別のコアコンポーネントからの機能呼出しに応答してデータに1つ以上の動作を実行することをさらに含む。受信される機能呼出しは、ユーザトークンと関連付けられる。1つ以上の動作はユーザトークンと関連付けられたユーザに排他的に割り当てられる安全な領域の中で実行される。例示の実施形態において、方法は、1つ以上のサービスの少なくともいくつかのために、それぞれのサービスがエッジデバイスによって実行されるか、または、クラウドで実行されるかに関するユーザ選択を受信すること、およびそれぞれのサービスがエッジデバイスによって実行されるか、または、クラウドで実行されるかに基づいてフィードバックを提供することをさらに含む。フィードバックは、プロセッサ使用状況、メモリ使用状況、モバイルデータの消費、プロセス数またはスレッド数に関する1つ以上のパラメータを含む。例示の実施形態の方法は、1つ以上のサービスの実行後に、プロセッサ使用状況、メモリ使用状況、モバイルデータの消費、プロセス数またはスレッド数に関する追加のフィードバックを提供することをさらに含む。
【0018】
更なる例示の実施形態において、位置情報サービスを提供するように構成されるコンピュータプログラム製品が開示される。コンピュータプログラム製品は、中に記憶されるコンピュータ実行可能プログラムコード命令を有する少なくとも1つの非一時的コンピュータ可読記憶媒体を含む。プログラムコード命令は、実行されると1つ以上のサービスのユーザ選択を受信するように構成される。少なくとも1つのサービスは、コアコンポーネントと関連付けられて、位置情報サービスを提供するように構成される。プログラムコード命令はまた、データを共有してコアコンポーネントを同期させるために、1つ以上のサービスならびに別のコンピューティングデバイスのコアコンポーネントと通信させるように構成される。この点に関しては、プログラムコード命令は、位置情報サービスが基にしているデータを取得するために通信させるように構成される。プログラムコード命令は、選択された少なくとも1つのサービスの状態が、選択された少なくとも1つのサービスの実行後に選択されたサービスと関連付けられたコアコンポーネントに記憶されるようにさせるようにさらに構成される。
【0019】
1つ以上のサービスは、ステートフルパイプラインおよびステートレスマイクロサービスからなるグループから選択することができる。この点に関しては、パイプラインは、シーケンシャルな方法で実行されて、パイプラインの状態として維持される値を生成するように構成される複数の計算を含むことができる。パイプラインと関連付けられているコアコンポーネントは、パイプラインの状態を維持するように構成することができる。例示の実施形態において、1つ以上のサービスは、アプリケーションとして配置されるルーティングマイクロサービスおよびガイダンスマイクロサービスを含む。1つ以上のサービスと関連付けられたこの例示の実施形態のコアコンポーネントは、ルーティングマイクロサービスの出力をガイダンスマイクロサービスに提供するように構成される。
【0020】
例示の実施形態において、少なくとも1つのサービスの状態を記憶させられるように構成されるプログラムコード命令は、1つ以上のサービスのためにデータのキャッシュ管理を提供するように構成されるプログラムコード命令を含む。例示の実施形態のプログラムコード命令は、サービスの複数のインスタンスの間でデータを同期させるようにさらに構成される。例示の実施形態において、プログラムコード命令は、別のコアコンポーネントからの機能呼出しに応答してデータに1つ以上の動作を実行するようにさらに構成される。受信される機能呼出しは、ユーザトークンと関連付けられる。1つ以上の動作はユーザトークンと関連付けられたユーザに排他的に割り当てられる安全な領域の中で実行される。
【0021】
例示の実施形態において、位置情報サービスを提供するための分散処理システムが開示される。分散処理システムは、少なくとも1つのエッジデバイスおよび少なくとも1つのクラウドコンピューティングデバイスを含む複数のコンピューティングデバイスを含む。各コンピューティングデバイスは、コアコンポーネントおよび異なるそれぞれのサービスを実行するように構成される1つ以上のマイクロサービスを含む。1つのコンピューティングデバイスの1つ以上のマイクロサービスは、異なるコンピューティングデバイスの1つ以上のマイクロサービスとは異なる。マイクロサービスの1つ以上は、位置情報サービスを提供するように構成される。各コンピューティングデバイスのコアコンポーネントは、データを共有して複数のマイクロサービスの実行を調整するために、それぞれのコンピューティングデバイスの1つ以上のマイクロサービスと、ならびに、他のコンピューティングデバイスの少なくとも1つのコアコンポーネントと、通信するように構成される。複数のコンピューティングデバイスのコアコンポーネントは競合のない複製データ型(CRDT)を有するデータを共有し、それにより、データのいかなる競合の解決にも数学的確実性を提供して一貫性を成し遂げる。
【0022】
一実施形態のエッジデバイスは、車両に搭載されている、例えば車両のナビゲーションシステムである。例示の実施形態において、各コンピューティングデバイスのコアコンポーネントは、それぞれのコンピューティングデバイスの1つ以上のマイクロサービスのためにデータのキャッシュ管理を提供するように構成される。例示の実施形態のコアコンポーネントは、別のコンピューティングデバイスのコアコンポーネントからの1つ以上の機能呼出しに応答するように構成される。この例示の実施形態において、コアコンポーネントによって受信される機能呼出しは、ユーザトークンと関連付けられる。したがって、この例示の実施形態のコアコンポーネントは、ユーザトークンと関連付けられたユーザに排他的に割り当てられる安全な領域の中で機能呼出しに応答してデータに1つ以上の動作を実行するようにさらに構成される。
【0023】
別の例示の実施形態において、車両に搭載して提供される位置情報サービスをカスタマイズするためのシステムが提供される。システムは、少なくとも1つのプロセッサおよびコンピュータプログラムコードを含む少なくとも1つのメモリを含む。少なくとも1つのメモリおよびコンピュータプログラムコードは、プロセッサによって、システムに少なくとも車両を構成する1つ以上のマイクロサービスのユーザ選択を受信させるように構成される。少なくとも1つのマイクロサービスは、位置情報サービスを提供するように構成される。1つ以上のマイクロサービスの少なくともいくつかのために、システムは、それぞれのマイクロサービスがエッジデバイスによって、または、クラウドコンピューティングデバイスによって実行されるかに関して、ユーザ選択を受信させられる。システムはまた、それぞれのマイクロサービスがエッジデバイスによって、または、クラウドコンピューティングデバイスによって実行されるかに基づいて、フィードバックを提供させられる。フィードバックは、プロセッサ使用状況、メモリ使用状況、ネットワーク帯域幅消費、モバイルデータの消費、リモートプロシージャコール数、プロセス数またはスレッド数に関する1つ以上のパラメータを含む。
【0024】
1つ以上のマイクロサービスの実行後に、例示の実施形態のシステムはまた、プロセッサ使用状況、メモリ使用状況、ネットワーク帯域幅消費、モバイルデータの消費、リモートプロシージャコール数、プロセス数またはスレッド数に関する追加のフィードバックを提供させられる。車両用のルートの確立後に、例示の実施形態のシステムは、ルートと関連付けられたコードまたはリンクを提供して別のデバイスがコードまたはリンクに基づいてルートにアクセスして再構成するのを可能にするようにさせられる。車両の初期構成後に、例示の実施形態のシステムは、さらに車両を構成する1つ以上の追加のマイクロサービスのユーザ選択を受信させられる。この例示の実施形態において、1つ以上の追加のマイクロサービスは、マイクロサービス市場によって提供される。
【0025】
車両に搭載して提供される位置情報サービスをカスタマイズするための方法も提供される。方法は、車両を構成する1つ以上のマイクロサービスのユーザ選択を受信すること含む。少なくとも1つのマイクロサービスは、位置情報サービスを提供するように構成される。1つ以上のマイクロサービスの少なくともいくつかのために、方法は、それぞれのマイクロサービスがエッジデバイスによって、または、クラウドコンピューティングデバイスによって実行されるかに関してユーザ選択を受信する。方法はまた、それぞれのマイクロサービスがエッジデバイスによって、または、クラウドコンピューティングデバイスによって実行されるかに基づいて、フィードバックを提供する。フィードバックは、プロセッサ使用状況、メモリ使用状況、ネットワーク帯域幅消費、モバイルデータの消費、リモートプロシージャコール数、プロセス数またはスレッド数に関する1つ以上のパラメータを含む。
【0026】
車両に搭載して提供される位置情報サービスをカスタマイズするためのコンピュータプログラム製品も提供される。コンピュータプログラム製品は、コンピュータ実行可能プログラムコード部分が車両を構成する1つ以上のマイクロサービスのユーザ選択を受信するように構成されるプログラムコード命令を含んでその中で記憶されるコンピュータ実行可能プログラムコード部分を有する、少なくとも1つの非一時的コンピュータ可読記憶媒体を含む。少なくとも1つのマイクロサービスは、位置情報サービスを提供するように構成される。1つ以上のマイクロサービスの少なくともいくつかのために、コンピュータ実行可能プログラムコード部分はまた、それぞれのマイクロサービスがエッジデバイスによって、または、クラウドコンピューティングデバイスによって実行されるかに関してユーザ選択を受信するように構成されるプログラムコード命令を含む。コンピュータ実行可能プログラムコード部分は、それぞれのマイクロサービスがエッジデバイスによって、または、クラウドコンピューティングデバイスによって実行されるかに基づいてフィードバックを提供するように構成されるプログラムコード命令をさらに含む。フィードバックは、プロセッサ使用状況、メモリ使用状況、ネットワーク帯域幅消費、モバイルデータの消費、リモートプロシージャコール数、プロセス数またはスレッド数に関する1つ以上のパラメータを含む。
【0027】
車両に搭載して提供される位置情報サービスをカスタマイズするための装置も提供される。装置は、車両を構成する1つ以上のマイクロサービスのユーザ選択を受信するための手段を含む。少なくとも1つのマイクロサービスは、位置情報サービスを提供するように構成される。1つ以上のマイクロサービスの少なくともいくつかのために、装置はまた、それぞれのマイクロサービスがエッジデバイスによって、または、クラウドコンピューティングデバイスによって実行されるかに関してユーザ選択を受信するための手段を含む。装置は、それぞれのマイクロサービスがエッジデバイスによって、または、クラウドコンピューティングデバイスによって実行されるかに基づいて、フィードバックを提供するための手段をさらに含む。フィードバックは、プロセッサ使用状況、メモリ使用状況、ネットワーク帯域幅消費、モバイルデータの消費、リモートプロシージャコール数、プロセス数またはスレッド数に関する1つ以上のパラメータを含む。
【0028】
このように本発明の特定の実施形態を一般用語で説明してきたので、ここで添付図面を参照するが、これらは必ずしも一定の比率で描画されているわけではない。
【図面の簡単な説明】
【0029】
【
図1】本開示の例示の実施形態による位置情報サービスを提供するための分散処理システムを示すブロック図である。
【
図2】本開示の例示の実施形態に従って特に構成することができる分散処理システムのコンピューティングデバイスのブロック図である。
【
図3】本開示のより詳細な例示の実施形態による位置情報サービスを提供するための分散処理システムを示すブロック図である。
【
図4】本開示の例示の実施形態によるデータ記憶マイクロサービスを有するエッジデバイスのブロック図である。
【
図5】本開示の例示の実施形態による高度なレンダリングプラットフォームマイクロサービスを有するエッジデバイスのブロック図である。
【
図6】本開示の例示の実施形態によるマンマシンインタフェースコントローラのブロック図である。
【
図7】本開示の例示の実施形態による分散処理システムの別の表現である。
【
図8】本開示の例示の実施形態による、
図2のコンピューティングデバイスなどによって実行される動作を示すフローチャートである。
【
図9】本開示の例示の実施形態による、車両に搭載して提供される位置情報サービスをカスタマイズするためにユーザが対話することができるシステムの一部の斜視図である。
【発明を実施するための形態】
【0030】
本発明のいくつかの実施形態はここで添付の図面を参照してより完全に以下に説明され、その中で、すべてではないが本発明のいくつかの実施形態が示される。実際に、本発明の種々の実施形態は、多くの異なる形で具体化することができるものであり、本明細書において記載される実施形態に限定されるように解釈されてはならず、むしろ、本開示が適用できる法的要件を満たすように、これらの実施形態は提供される。全体に、類似の参照数字は類似の要素を参照する。本明細書において使用する場合、用語「データ」、「コンテンツ」、「情報」および類似の用語は互換的に使用されて、本発明の実施形態に従って送信、受信および/または、記憶されることができるデータを指す。したがって、いずれのこのような用語の使用も、本発明の実施形態の精神および範囲を制限すると解されるべきではない。
【0031】
位置情報サービスを提供するための分散処理システムが開示される。分散処理システムは、マップのディスプレイ、ユーザの位置がマップ上に識別されるマップマッチング、位置検索機能、ルーティング、ガイダンスおよび交通関連情報の提供を含むがこれに限らず、多種多様な位置情報サービスを提供することができる。分散処理システムは、車両に搭載したナビゲーションシステムによるかまたは、それと連動して提供される位置情報サービスなどのように、車両に搭載することを含めて、種々の環境に位置情報サービスを提供することができる。
【0032】
図1に示すように、位置情報サービスを提供するための分散処理システム10が表される。示すように、分散処理システムは、位置情報サービスを提供するために協力して作動する複数のコンピューティングデバイスを含む。複数のコンピューティングデバイスは、1つ以上のエッジデバイス12、すなわち、より集中化したデバイスと比較して呼び出し時間を減らすためにデータのソースにローカルにより近いか近接した処理タスクを実行する、ネットワークのエッジの遠隔であるか非中央のデバイスを含む。エッジデバイスは通常、ローカルに要求されるように計算を実行して、データを収集して、アプリケーションを実行することができ、したがって一般に複数のクライアントからの大規模な要求に応じることは必要でない。エッジデバイスの例は、車両に搭載したナビゲーションシステム、携帯端末、例えばスマートフォン、タブレット型コンピュータ等である。しかしながら、分散処理システムは、自動車の環境に限定されるものではなく、それを超えて拡張することができる。例えば、モノのインターネット(IoT)デバイスも、それらがローカルにサービスを実行して、ローカルのハードウェア能力を超えて処理タスクのためのクラウド基盤に依存するように構成することができるので、エッジデバイスと考えることができる。
【0033】
エッジデバイス12に加えて、複数のコンピューティングデバイスは、クラウドコンピューティング環境において車両から遠隔で作動している1つ以上のクラウドコンピューティングデバイス14も含む。例示の実施形態において、クラウドコンピューティングデバイスは、要求当たり、エッジデバイスよりかなり低いコストだが、呼び出し時間および帯域幅要求を代償にして、より多くの要求を処理することができる。
図1の実施形態において、分散処理システム10は、2つのエッジデバイスおよび単一のクラウドコンピューティングデバイスを含む。しかしながら、他の実施形態において、分散処理システムは、異なる数のエッジデバイスおよび/または複数のクラウドコンピューティングデバイスを含むことができる。
【0034】
より能力があるハードウェアデバイスをネットワークのエッジに導入することで、より多くの計算能力が入手可能になるので、サービスは、集中化したエンティティ、例えばサーバ、クラスタまたは「クラウド」に限定されず、エッジデバイス12で実行することもできる。使用事例に応じて、いくつかのサービスは、ネットワークのそれぞれの側で実行されることによって性能上の利点を得ることができ、いくつかのサービスはクラウドコンピューティングデバイス14により実行されることによって性能上の利点を得て、そして他のサービスはエッジデバイスにより実行されることによって性能上の利点を得ることができる。例えば、マップマッチングと連動して、情報エンターテインメントシステムなどのエッジデバイスは、1つのソース、例えば、車両位置プロバイダにより提供されるポジショニングデータから対応する道路セグメントを見つけるために寸法取りすることができるが、集中化したエンティティ、例えばクラウドコンピューティングデバイスは、何千ものソースから位置情報を取り入れて、対応する道路セグメントをすべてのソースに戻すために寸法取りすることができる。
【0035】
各コンピューティングデバイス12、14はコアコンポーネント16および異なる機能を実行するように構成される1つ以上のサービス18を含み、そのうち少なくともいくつかは位置情報サービスである。サービスの少なくともいくつか、およびいくつかの実施形態では、サービスの全ては、異なる機能、例えば異なる位置情報サービスを実行するように構成される。後述するように、分散処理システム10は、望ましくないサービスを含めることによって車両を過度に大きくすることなく、ユーザ、例えば車両の所有者によって所望される複数のサービスを含むように構成することができる。
【0036】
コンピューティングデバイス12、14は種々の方法で構成することができるが、一実施形態のコンピューティングデバイスは、プロセッサ20およびメモリデバイス22および任意選択的にユーザインタフェース24および/または通信インタフェース26を含むか、それらと関連付けられるかまたは、それらと通信する。いくつかの実施形態では、プロセッサ(および/またはコプロセッサもしくは、プロセッサを支援しているかまたはプロセッサと関連した任意の他の処理回路)は、装置のコンポーネントの間で情報を伝えるためのバスを介して、メモリデバイスと通信してもよい。メモリデバイスは、非一時的でもよくて、例えば、1つ以上の揮発性および/または不揮発性メモリを含んでもよい。言い換えれば、例えば、メモリデバイスは、マシン(例えば、プロセッサ)によよって検索可能でもよいデータ(例えば、ビット)を記憶するように構成されるゲートを含む電子記憶装置(例えば、計算機可読の記憶媒体)でもよい。メモリデバイスは、装置が本発明の例示の実施形態に従って種々の機能を実行することを可能にするための情報、データ、コンテンツ、アプリケーション、命令等を記憶するように構成することができる。例えば、メモリデバイスは、プロセッサによって処理するための入力データをバッファリングするように構成することができる。加えて、または代替的に、メモリデバイスは、プロセッサによる実行のための命令を記憶するように構成することができる。
【0037】
プロセッサ20は、多くの異なる方法で実施することができる。例えば、プロセッサは、1つ以上の種々のハードウェア処理手段、例えばコプロセッサ、マイクロプロセッサ、コントローラ、デジタルシグナルプロセッサ(DSP)、付随するDSPの有無にかかわらず演算処理要素、または例えば、ASIC(特定用途向け集積回路)、FPGA(フィールドプログラマブルゲートアレイ)、マイクロコントローラーユニット(MCU)、ハードウェアアクセラレータ、特殊目的コンピュータチップ等の集積回路を含んでいる種々の他の処理回路として実施することができる。したがって、いくつかの実施形態では、プロセッサは、独立して実行するように構成される1つ以上の処理コアを含むことができる。マルチコアプロセッサは、単一の物理パッケージの中でマルチプロセッシングを可能にすることができる。加えて、または、代替的に、プロセッサは、バスを介してタンデムに構成されて独立した命令の実行、パイプライン化および/またはマルチスレッディングを可能にする1つ以上のプロセッサを含むことができる。
【0038】
例示の実施形態において、プロセッサ20は、メモリデバイス22に記憶されているかプロセッサにアクセス可能な命令を実行するように構成されてもよい。代替的に、または加えて、プロセッサは、ハード符号化機能を実行するように構成することができる。このように、ハードウェアまたはソフトウェア方法によって、または、それらの組み合わせによって構成されるかどうかにかかわらず、プロセッサは、それに応じて構成されると共に、本発明の一実施形態による動作を実行することができるエンティティ(例えば、物理的に回路で実施される)を表すことができる。したがって、例えば、プロセッサがASIC、FPGA等として実施されるときに、プロセッサは本明細書において、記載されている動作を行うための特に構成されたハードウェアでもよい。あるいは、別の例として、プロセッサがソフトウェア命令の実行者として実施されると、命令は具体的には、命令が実行されるときに、本明細書において記載されているアルゴリズムおよび/または動作を実行するようにプロセッサを構成することができる。しかしながら、いくつかの場合では、プロセッサは、本明細書において記載されているアルゴリズムおよび/または動作を実行するための命令によるプロセッサのさらなる構成によって本発明の実施形態を使用するように構成される特定のデバイス(例えば、コンピューティングデバイス)のプロセッサでもよい。プロセッサは、とりわけ、クロック、演算論理ユニット(ALU)およびプロセッサの動作をサポートするように構成された論理ゲートを含むことができる。
【0039】
コンピューティングデバイスのいくつか、例えばエッジデバイス12の1つ以上はまた、任意選択的にユーザインタフェース24を含むかまたはそれと通信することができる。ユーザインタフェースは、タッチスクリーンディスプレイ、キーボード、マウス、ジョイスティックまたは他の入出力機構を含むことができる。いくつかの実施形態では、ユーザインタフェース、例えばディスプレイ、スピーカ等は、出力をユーザに提供するように構成することもできる。この例示の実施形態において、プロセッサ20は、1つ以上の入出力機構の少なくともいくつかの機能を制御するように構成されたユーザインタフェース回路を含むことができる。プロセッサおよび/またはプロセッサを含むユーザインタフェース回路は、プロセッサにアクセス可能なメモリ(例えば、メモリデバイス22および/または同様のもの)に記憶されるコンピュータプログラム命令(例えば、ソフトウェアおよび/またはファームウェア)を通して1つ以上の入出力機構の1つ以上の機能を制御するように構成することができる。
【0040】
例示の実施形態のコンピューティングデバイス12、14は、他のコンピューティングデバイスとの間でデータを受信および/または送信するように構成されたハードウェアまたはハードウェアとソフトウェアの組合せのいずれかで実施されるデバイスまたは回路などの、いかなる手段であってもよい通信インタフェース26を、任意選択的に含むこともできる。例えば、クラウドコンピューティングデバイスの通信インタフェースは、各エッジデバイスの通信インタフェースと通信するように構成される。同様に、各エッジデバイスの通信装置は、クラウドコンピューティングデバイスおよび他のエッジデバイスの通信インタフェースと通信するように構成することができる。この点に関しては、通信インタフェースは、例えば、無線通信ネットワークとの通信を可能にするためのアンテナ(または複数のアンテナ)ならびにサポートハードウェアおよび/またはソフトウェアを含むことができる。加えて、または代替的に、通信インタフェースは、アンテナと対話するための回路を含むことができて、アンテナを介して信号の伝送をもたらすかまたはアンテナを介して受信される信号の受信を処理することができる。いくつかの環境において、通信インタフェースは代わりに、またはさらに、有線通信をサポートすることができる。
【0041】
図1に示すように、各コンピューティングデバイス12、14は、コアコンポーネント16を含む。一実施形態において、各コンピューティングデバイスは、同じコアコンポーネントのそれぞれのインスタンスを含む。一実施形態において、コアコンポーネントは、それぞれのコンピューティングデバイスのメモリデバイス22によって記憶されて、かつそれぞれのコンピューティングデバイスのプロセッサ22によって実行される、複数のコンピュータプログラム命令によって定義される。コアコンポーネントは、種々の機能を実行する。
【0042】
例えば、一実施形態のコアコンポーネント16は、コンピューティングデバイス12、14用の、そして、関連するサービス18に代わっての、キャッシュ管理を提供する。一実施形態において、サービスに代わってコアコンポーネントによって管理されるキャッシュは、キーと値のデータ記憶でもよい。エッジデバイスの中では、キャッシュはメモリマップされたファイルまたは埋込みのキーと値のデータベースによって支援することができるが、クラウドコンピューティングデバイスでは、キャッシュは分散キャッシュとして実装することができる。コアコンポーネントによって管理されるキャッシュがキー値データ記憶である実施形態において、キャッシュの中に記憶されるオブジェクトは、例えば、それぞれのサービスによって提供されるキーによって読み出される。キーは、それぞれのオブジェクトを一意に識別するのに役立つ。例えば、キーは現在の検索要求、現在のルートおよび現在のアプリケーション設定を識別することができて、対応する値は、それぞれ、現在の検索要求の結果、現在のルートの定義および現在のアプリケーション設定の定義でもよい。
【0043】
コアコンポーネント16によって実行される他の機能には、エンティティ状態管理、サービス管理、例えば、サービスディスカバリおよび/もしくはサービスレジストリ、ならびに/またはサービス更新管理を含むことができる。状態管理に関して、コンピューティングデバイス12、14などのエンティティの状態は、コンピューティングデバイスについて分かっている情報を記載しているプロパティのセットである。例えば、アプリケーションの状態は、アプリケーションを定義する属性の最小セットである。例示の実施形態の属性は、一次属性、すなわち、他の属性に由来しない属性である。状態は、状態の現在および過去の値がアクセスされ得るように、時間依存情報を含む不変のグローバルにアクセス可能なキーと値のデータベースとしてモデル化することができる。例示の実施形態では、状態更新は、タプル<タイムスタンプ、エンティティID、状態>としてモデル化されて、そこで、タイムスタンプはミリ秒ごとの状態更新のタイムスタンプであり、エンティティIDは所与の更新を適用しなければならないコンピューティングデバイスを定めている任意選択のフィールドであり、状態はその状態更新のキーおよび値の両方ともを捕えるメッセージである。コアコンポーネント16の状態サービスとの対話は、後述するように、1回だけのゲット/セット機能または登録機能のいずれかに従って実行することができる。
【0044】
コアコンポーネント16は、それぞれのコンピューティングデバイス12、14の状態を維持して、他のコンピューティングデバイスに状態更新をブロードキャストすることができる。例示の実施形態のコアコンポーネントは、状態プロパティ、例えば状態プロパティの作成、問合せおよび更新を管理する状態サービスを提供することができる。一実施形態において、コアコンポーネントの状態サービスは、キーと値のデータベースならびにデータベースと接続機構へのアクセスを管理するアプリケーションプログラミングインタフェース(API)のセットを含む。状態サービスがクラウドコンピューティングデバイスによって展開される実施形態において、状態サービスデータベースによって含まれるデータは、シャドウイングメカニズムを利用しているエッジデバイスのコアコンポーネントの状態サービスによって提供される。この点に関しては、エッジデバイスのコアコンポーネントの状態サービスは、クラウドコンピューティングデバイスのコアコンポーネントの状態サービスに対する各属性のためのポリシーに従って、更新したプロパティをアップロードする。一実施形態では、状態サービスはまた、作成、要求および更新動作をサポートする。状態は、任意のエンティティIDによって作成するかまたは更新できる。存在する場合、エンティティIDは、状態に対する更新は登録されることができる他のコンピューティングデバイスから分離されるべきであることを信号で伝える。同様に、エンティティIDのない状態更新は、標準的なものとみなされ、すべてのコンピューティングデバイスにアクセス可能である。しかしながら、状態サービスに対する要求は、エンティティIDを提供しなければならない。
【0045】
コアコンポーネント16は、同じコンピューティングデバイス12、14によってサポートされる1つ以上のサービス18と通信するように構成され、また、複数のサービスの実行を調整するために、かつコアコンポーネントを同期させるために、他のコンピューティングデバイスのコアコンポーネントと通信するように構成される。例えば、各サービスは、サービスを実行するものと同じコンピューティングデバイスによって実行されるコアコンポーネントのそれぞれのインスタンスと通信するように構成することができる。それから、コアコンポーネントのそれぞれのインスタンスは、複数のサービスの実行を編成するために通信することができる。サービスの1つ以上は、位置データに少なくとも部分的に依存する位置情報サービスを提供する。位置データはリアルタイムに生成され、したがって、位置データはまた一般に、受け入れ可能なユーザ体験を提供するためにほぼリアルタイムに消費されなければならない。そうするために、例示の実施形態の分散処理システム10は、コアコンポーネントがタイムリーに更新された位置データを取得して配布しなければならないように要求されるときはいつでも、複数のデバイスにおいて、一貫したデータへのアクセスを必要とする。一実施形態では、コアコンポーネントは、例えば、ゲット、プット、削除、リスト、登録、通知および停止などの、あらかじめ定義された機能のセット、によって通信するように構成される。
【0046】
ゲット機能と連動して、コアコンポーネント16は、別のコアコンポーネントによって維持されるデータ値を取得することができる。取得されるデータ値は、対応するキーによって識別することができる。逆に、プットまたはセット機能と連動して、コアコンポーネントは、新しい値を挿入するかまたは既存の値を変更することなどによって、それぞれのキーと関連付けられたデータ値を更新させることができる。その後、新しい値は、分散処理システム10の他のコンピューティングデバイスのコアコンポーネントによって、読み出すことができる。登録に関しては、1つのコアコンポーネントが、別のコアコンポーネントによって維持される1つ以上のそれぞれのキーと関連したデータ値に関してすべての変更について通知されるように登録することができる。登録機能によって、コアコンポーネントは特定のキーおよび関連するデータ値に登録することができ、それぞれのコアコンポーネントはコアコンポーネントが登録したデータ値について更新を取得することができる。例えば、ルーティングサービスと関連付けられたコアコンポーネントは、現在の車両位置に登録することができる。既存のキーに新しい値を置くことによって、それぞれのキーに対するすべての登録者は、変更について知らされて、新しい値に適応する。加えて、または代替的に、他のコンピューティングデバイスは、通知によって新しい値を知らされてもよい。この点に関しては、通知機能は、キーと関連付けられたデータ値が変化したインスタンスのコアコンポーネントによる通知を要求する。リスト機能によって、すべてのキーのリストおよび/または特定のディレクトリの関連付けられたデータ値が取得されることが可能である。最後に、停止機能によって、コアコンポーネントがデータの値の変化の通知を提供することになっていた以前の通知機能をキャンセルすることなどで、以前の要求をキャンセルすることができる。
【0047】
エッジデバイス12と分散処理システム10のクラウドコンピューティングデバイス14の間のデバイス間通信の1つの例が、
図3に表される。示すように、エッジデバイスおよびクラウドコンピューティングデバイスのそれぞれは、同じデバイスによって実行されるそれぞれのサービス18(「サービスインスタンス」と称する)と通信する1つ以上のアプリケーション19(「クライアント」と称する)および、いくつかの実施形態では、別のデバイスのサービスを含む。エッジデバイスおよびクラウドコンピューティングデバイスはまた、次に、新規であるか更新されたサービスを登録するためのレジストリサービス27および、デバイスの間の一貫性を維持するために他のデバイスの状態サービスと通信するように構成された状態サービス28を含む、コアコンポーネント16を含む。サービスは、それぞれのコアコンポーネントによって維持されるローカルキャッシュ30と通信する。ローカルデータアクセスを容易にするために、この例示の実施形態のそれぞれのデバイスはまた、それぞれのキャッシュにデータをダウンロードし、および/または更新されたデータを記憶に提供するために位置データベース32と通信するように構成された、データ記憶サービスインスタンス31を含む。
【0048】
複数のコアコンポーネント16は、コンピューティングデバイス12、14の間で共有されるデータと関係しているプライバシーを保つような方法で通信する。本実施形態において、第2のコンピューティングデバイスのコアコンポーネントによって第1のコンピューティングデバイスのコアコンポーネントになされる機能呼出しには、ユーザトークンが付随する。したがって、この例示の実施形態の第1のコンピューティングデバイスは、第2のコンピューティングデバイスから機能呼出し(および、ユーザトークン)を受信するように構成された、プロセッサ20、通信インタフェース26または同様のものなどの手段を含む。ユーザトークンは、車両の運転者などのそれぞれのユーザに排他的に割り当てられる。したがって、機能呼出しに基づいて第1のコンピューティングデバイスのコアコンポーネントによって実行されるデータへのすべての動作は、第1のコンピューティングデバイスの安全な領域、例えば、サンドボックスモデルの中でコアコンポーネントによって実行されることができて、したがって、データと関連したプライバシーは分散処理システム10のすべてのコンピューティングデバイスの全体にわたって守ることができる。この点に関しては、この例示の実施形態の第1のコンピューティングデバイスはまた、ユーザトークンと関連したユーザに排他的に割り当てられる安全な領域における機能呼出しに応答して1つ以上の動作をデータに実行するように構成された、プロセッサ等の手段を含む。
【0049】
データと関連したプライバシーを保つことに加えて、異なるコンピューティングデバイス12、14によって実行されるサービスを提供するように構成された分散処理システム10は、複数のコンピューティングデバイスの間で交換されるデータを同期させる技術を必要とする。ブリュワーのCAP定理によれば、分散形コンピュータシステムが3つの保証である一貫性、可用性および分断耐性のうち2つを超えて同時に提供することは不可能である。例示の実施形態の分散処理システムは、すべてのサービスがデータに短時間でアクセスすることができることを保証する可用性、およびシステムが分割されていても動作し続けることを保証する分断耐性の両方を提供する。一貫性の欠如によってもたらされる、分散処理システムの異なるコンピューティングデバイスによって利用されるデータセットの間の不同性、例えば、データの異なるバージョンの影響を緩和するために、複数のコアコンポーネント16は、競合のない複製データ型(CRDT)を有するデータを共有する。CRDTを利用することによって、データの範囲内で現れるいかなる競合も解決されることができるという数学的確実性があり、それによって一貫性も達成する。
【0050】
例示の実施形態において、ユーザと関連付けられた複数のコンピューティングデバイス12、14のコアコンポーネント16は、コアコンポーネントから同じユーザと関連付けられた他のコアコンポーネントの1つ以上のインスタンスに同期呼び出しを指示することによって同期される。同期呼び出しに応答して、オープンしている双方向性の同期ストリームは、同期すべきコアコンポーネントの間で維持することができる。それから、第1のコアコンポーネントは、そのキーと値のペアのすべてを(各キーと値のペアと関連付けられたタイムスタンプと共に)他のコアコンポーネント、すなわち、第2のコアコンポーネントに送信、例えばフラッシュする。それから、第2のコアコンポーネントは、受信されるキーと値のペアを記憶することによって、両方とも現在第2のコアコンポーネントによって記憶されているものと異なり、かつ現在第2のコアコンポーネントによって記憶されているもののタイムスタンプよりも最近のタイムスタンプと関連付けられている、キーと値のペアを更新する。キーと値のペアが更新されるが、第2のコアコンポーネントの以前のキーと値のペアは、それらのそれぞれのタイムスタンプと共に、そしていくつかの実施形態では、同期呼び出しに応答して確立された同期ストリームと関連付けられた識別子と共に記憶され続ける。例示の実施形態において、第2のコアコンポーネントはまた、更新の前に存在したそのキーと値のペアのすべてを(各キーと値のペアと関連付けられたタイムスタンプと共に)第1のコアコンポーネントに送信、例えばフラッシュし、第1のコアコンポーネントが次に、記載されている方法でそのキーと値のペアを更新する。このように、第1および第2のコアコンポーネントの両方は、最新のキーと値のペアと同期することができると共に、以前のタイムスタンプされたキーと値のペアも維持する。
【0051】
コンピューティングデバイス12、14のコアコンポーネント18の種々のインスタンスを同期させることによって、データは、サービスの複数のインスタンスの間で同期される。このように、システムは、1つ以上のコンピューティングデバイスがオフラインで動くとしても、オンラインのままである他のコンピューティングデバイスが同一データの最新版を含んでいるという点で、弾力的である。したがって、ユーザは、コンピューティングデバイスがオフラインになるときにシステムが適切に機能しなくなるという懸念なしに、将来オフラインとなり得る1つ以上のコンピューティングデバイスに頼ることができ、それは、他のコンピューティングデバイスがオンラインのままであり、オフラインコンピューティングデバイスによって利用されたはずのものと同じデータの最新版を同じサービスに提供することができるからである。
【0052】
サービス18は、単一のプロセスとして、例えば、エッジデバイス12によって、または、別々のプロセスとして、ただしその間の通信によって同じコンピューティングデバイス上で動作するように実行することができる。またさらに、サービスは、別のコンピューティングデバイス、例えばクラウドコンピューティングデバイス16によって実行されるプロセスを含むことができる。これらの実施形態では、プロセス間通信が提供されている。gRPC-Java(登録商標)およびgRPC-Swiftを含む種々のプロトコルが利用できる一方で、プロセス間通信がフラットバッファを有するgRPCによって一実施形態に従って提供される。gRPCは認証SSL/TLSまたはoAuth2によるhttp//2サポートを提供する。RPCは、双方向ストリーミング、クライアントとサーバ間のフローコントロールならびに同期および非同期RPC呼び出しも提供もする。さらに、gRPCは、RPC(リモートプロシージャコール)呼び出しのキャンセルおよびタイムアウトを提供し、強靭で拡張可能な設計となっている。
【0053】
例示の実施形態のコンピューティングデバイス12、14は、パイプラインおよびマイクロサービスを含む種々のタイプのサービス18を提供することができる。パイプラインは、プロセッサ20によって実施することができて、シーケンシャルな方法で実行されて値を生成するように構成された複数の計算を含む。パイプラインは、パイプラインによって生成される値がパイプラインの状態として維持されていることによってステートフルである。パイプラインを含むそれぞれのコンピューティングデバイスのコアコンポーネントは、パイプラインの状態を維持するように構成することができる。パイプラインがそれぞれのコンピューティングデバイスにより提供されるが、パイプラインは、複数のコンピューティングデバイスによってアクセスされることができ、たとえば登録されることができ、このことにより複数のコンピューティングデバイス用の共有リソースとして役立つ。
【0054】
マイクロサービスに関して、位置情報サービスを含む様々な異なるサービスを提供するように構成された複数のマイクロサービスが利用できてもよい。パイプラインとは異なり、マイクロサービスはステートレスであり、その結果、マイクロサービスによって決定された以前の値の記録を維持せず、そのためマイクロサービスが実行される各時はマイクロサービスによって以前生成された値から独立している。マイクロサービスの1つの実施例は、タイルのキャッシュまたはマップされたデータの区画をエッジデバイス12にローカルに維持してマップされたデータより高速かつオフラインのアクセスを可能にするように構成されたデータ記憶マイクロサービス31を含む。
図4に示すように、データ記憶マイクロサービスは、位置データベース32からコンテンツをダウンロードして、キャッシュに登録するように構成されて、種々のアプリケーション34、例えばマップレンダリング、ルーティング、ガイダンスなどと連動して利用される。
【0055】
別の例示のマイクロサービスは、例えば、エッジデバイスによって実行されるナビゲーションアプリケーション36にマップレンダリングサービスを提供する高度なレンダリングプラットフォームマイクロサービス35である。いくつかの実施形態では、高度なレンダリングプラットフォームマイクロサービスは、点特徴、線特徴、領域特徴、道路、興味のある地点ならびに車両の現在位置を表すマーカーを含むリアルタイムマップを提供することができる。高度なレンダリングプラットフォームマイクロサービスの1つの例は
図5において表され、その中で高度なレンダリングプラットフォームマイクロサービスはマップデータベース37から、例えば後述するようにNDS(ナビゲーションデータ標準)アクセスマイクロサービス38を介してマップデータをダウンロードする。マップデータに対する更新および車両の位置に対する更新は、コアマイクロサービス40から登録ベースで提供することができる。
【0056】
上記のように、分散型計算システム10はまた、NDSデータへの集中化したアクセスを容易にして、ルーティングなどのためのメモリ内キャッシュを提供する、NDSアクセスマイクロサービス38を含むこともができる。NDSデータは、マップレンダリング、マップマッチング、オンラインの速度制限などと関連したものを含む多くの他のマイクロサービスによって利用され得る。マイクロサービスの他の例は、1つ以上の用語に対してのマップまたはマップデータベースの検索などのフルテキストの検索を可能にする検索マイクロサービス、リアルタイム速度制限および気象情報をそれぞれ提供する、オンライン速度制限マイクロサービスおよび外部気象情報マイクロサービスがある。
【0057】
コンピューティングデバイス12、14は、複数のコンピューティングデバイスにより提供される各サービスの位置を定めるためにリゾルバとして機能するように構成することもできる。この点に関しては、リゾルバは、それぞれのコンピューティングデバイスのメモリ22によって実施することができて、各サービスの識別(例えば、名称)ならびに各サービス位置を記憶することができる。各サービスの位置は、汎用一意識別子(UUID)として含まれる種々の方法で表すことができる。したがって、リゾルバは、キーおよび関連する値である各サービスの対応位置として役割を果たしている、各サービスの識別を有するキーと値の記憶として実施することができる。リゾルバは他のコンピューティングデバイスに対して各サービスの位置を公開することができるか、または、他のコンピューティングデバイスが各サービスの位置をリゾルバから要求することができる。位置情報に基づいて、各サービスは、サービスの位置がアクセス可能である限り、コンピューティングデバイスによって位置検出することができて、コンピューティングデバイスによって利用することができる。いくつかの実施形態では、ルートリゾルバなどのリゾルバはまた、サービスがオンラインかオフラインであるかどうかを識別する情報を含み、それによってサービスのアクセス可能性に関する追加情報を提供する。
【0058】
サービスではないが、例示の実施形態の分散型計算システム10は、マンマシンインタフェース(HMI)を実装するために、通常は間接的に追加ビジネスロジックを介して、1つ以上のサービスとインタフェースをとるためにコンピューティングデバイス12、14によって実施されるマンマシンインタフェースコントローラを含むこともできる。
図6に示すように、例えば、HMIインタフェース42は、ビジネスロジック、例えばレンダリングコントローラサービス48、ルーティングコントローラサービス50およびガイダンスコントローラサービス52をそれぞれ介して、高度なレンダリングプラットフォームマイクロサービス34、ルーティングマイクロサービス44およびガイダンスマイクロサービス46と対話することができる。アプリケーションは、任意の追加ビジネスロジックと共にコアコンポーネント18および1つ以上のサービス、例えばパイプラインおよび/または1つ以上のマイクロサービスによって定義することができる。前述の例において、ルーティングマイクロサービスおよびガイダンスマイクロサービスは、関連するコアコンポーネントと共に、アプリケーションとして配置することができる。この例示の実施形態において、それぞれのコンピューティングデバイスのコアコンポーネントは、ルーティングマイクロサービスの出力をガイダンスマイクロサービスに提供するように構成される。
【0059】
分散型計算システム10の更なる例証として、
図7は、パイプラインおよび/またはマイクロサービスなどの複数のサービス18を表し、それは例えば、マップ、ルーティング、モビリティ、ローカル検索、交通、ガイダンス、ポジショニング、屋内マップおよびコネクテッド車両サービスに加えて、コアコンポーネント16の上で動作して対話する種々のツールである。サービスは、パイプラインの中などに統合することができて、比較的単純なナビゲーションソリューションから車両内情報エンターテインメント(IVI)システムに対するトラッキングソリューションまで、様々な異なる種類のサービスを提供する。コアコンポーネントは、例えば、通信スタックの維持、NDSデータサーバに対するアクセスを含んだ位置データベースに対するアクセス、状態共有、共有メモリ通信、一時的な状態の確立、グローバル状態キャッシュの持続、維持、データ事前ロード、データアクセス、着信データのフィルタリングおよび/またはデータ融合のうち1つ以上を含む、複数の異なる機能を提供することができる。位置情報サービスのために、コアコンポーネントは、現実インデックスベース(RIB)またはNDSを含む種々のベースのいずれかに従って作動することができる。位置データベースへのアクセスを容易にすることに加えて、コアコンポーネントは、1つ以上のネットワーク54、例えば外部通信のために他のデバイスおよび/または外部リソースなどへのアクセスを容易にすることができる。この点に関しては、種々の外部サービスおよびツール56が交通、レンダリング、衛星画像化などのために提供されることができ、それは、1つ以上の外部のデータソース58に依存してもよい。
【0060】
別の実施形態によれば、車両に搭載して提供される位置情報サービスをカスタマイズするためのシステム、方法およびコンピュータプログラム製品が提供される。システムは、例えば、
図2に表すようにコンピューティングデバイスによって実施することができる。
図8を次に参照すると、本発明の例示の実施形態に従って車両に搭載して提供される位置情報サービスをカスタマイズするために、例えば
図2のコンピューティングデバイスによって実行される動作が、示されている。多くのユーザ選択が、最初に受信されてもよい。ブロック60に示すように、例えば、コンピューティングデバイスは、車両のハードウェア能力のユーザ選択を受信するための手段、例えばプロセッサ20、ユーザインタフェース24などを含む。ハードウェア能力は異なる方法で定めることができるが、一実施形態においては、車両がクラスタ、中級ハードウェアまたは高級ハードウェアを含むかに関するユーザ選択が受信される。
図9で表される例示の実施形態において、システム70は、車両のハードウェア能力のオプションをユーザに示して、それに応じてユーザ選択を受信するために、少なくとも1つのプロセッサによって駆動されるユーザインタフェース、例えばディスプレイ72を含むことができる。
【0061】
ハードウェア能力に基づいて、例示の車両のコックピット74は変化する。クラスタが選択される例では、クラスタディスプレイ76は車両の速度を示すダイヤルを単に含む。中級のハードウェア能力が選択される例では、コックピットのヘッドユニットディスプレイ78は適度なサイズであって、クラスタディスプレイは速度および他の車両のパラメータのためのダイヤルの標準セットを含む。高級なハードウェア能力が選択される例では、ヘッドユニットディスプレイはより大きくより高度で、クラスタディスプレイは追加機能によって、よりデジタル化される。したがって、ユーザは、それらの初期選択の結果を短時間で視覚化することができる。
【0062】
図8のブロック62に示すように、コンピューティングデバイスは、車両を構成する1つ以上のサービスのユーザ選択を受信するように構成された、プロセッサ20、ユーザインタフェース24などの手段を含む。パイプラインまたはマイクロサービスなどのサービスの少なくとも1つは、位置情報サービスを提供するように構成される。例えば、サービスの例には、マップのディスプレイ、ユーザの位置がマップ上に識別されるマップマッチング、位置検索機能、ルーティング、ガイダンスおよび交通関連情報の提供が含まれ得る。前述のように、例示の実施形態のプロセッサは、ディスプレイ72に、複数の利用できるサービスを提示させ、それからサービスの1つ以上のユーザ選択を受信させることができる。
【0063】
サービスの少なくとも一部のために、コンピューティングデバイスはまた、それぞれのサービスがエッジデバイス12によって実行されるか、または、クラウドコンピューティングデバイス14によって実行されるかに関するユーザ選択を受信するように構成された、プロセッサ20、ユーザインタフェース24などの手段を含む。
図8のブロック64を参照する。このことに関しては、例示の実施形態のプロセッサは、ディスプレイ72にコンピューティングデバイスのユーザ選択が利用できるサービスを列挙させることができる。列挙されたサービスのために、エッジデバイスまたはクラウドコンピューティングデバイスのオプションが提示されてもよく、次に、それぞれのサービスを実行するコンピューティングデバイスのユーザ選択は受信することができる。いくつかの実施形態では、少なくとも1つの、また、より典型的にはすべてのエッジデバイスは、車両に搭載され、例えば、車両に搭載されたナビゲーションシステムによって提供されてもよい。したがって、エッジデバイスによって実行されるサービスのための選択によって、サービスは、同じサービスがクラウドコンピューティングデバイスによって提供される場合よりも、さらに素早く応答して動作することが可能となり得る。しかしながら、車両に搭載されたエッジデバイスによるそれぞれのサービスの実行は、同じサービスがクラウドコンピューティングデバイスによって実行された場合よりも、車両に搭載した処理および/またはメモリリソースなどの追加ハードウェアリソースを一般に必要とする。したがって、中級のハードウェア能力が選択される例では、サービスのいくつかはクラウドコンピューティングデバイスによって実行されることが必要であり得る一方で、限定された数のサービスだけがエッジデバイスによる実行のために選択されることが可能である。
【0064】
サービスがエッジデバイス12によって実行されるか、または、クラウドコンピューティングデバイス14によって実行されるかに関するユーザ選択が一旦受信されていると、コンピューティングデバイスは、それぞれのサービスがエッジデバイスによって実行されるか、または、クラウドコンピューティングデバイスによって実行されるかに基づいてフィードバックを提供するように構成された、プロセッサ20、ユーザインタフェース24などの手段含む。ブロック66を参照する。このことに関しては、フィードバックは、それぞれのサービスがエッジデバイスよって実行されるかクラウドコンピューティングデバイスによって実行されるかに依存する。種々のタイプのフィードバックは、例えば、プロセッサ使用状況、メモリ使用状況、ネットワーク帯域幅消費、モバイルデータの消費、リモートプロシージャコール数、プロセス数またはスレッド数に関する1つ以上のパラメータを含んでいる、ハードウェアコンポーネントの利用およびモバイルデータの消費に関して提供することができる。このことに関しては、プロセッサ使用状況およびメモリ使用状況は、エッジデバイスによって実行されるように選択されるサービスによって消費されるエッジデバイスの、処理リソースおよびメモリリソースのパーセントまたは総量に関連し得る。モバイルデータ消費は、クラウドコンピューティングデバイスに対する1つ以上のサービスの実行をオフロードするために車両とクラウドコンピューティングデバイスの間送信されるデータの総量を指すことができる。種々のパラメータを含むフィードバックをレビューすることによって、ユーザは、ハードウェア使用状況およびデータ消費に関して情報を集めることが可能であり、いくつかの実施形態では、対応するパラメータを変更するために異なるコンピューティングデバイスによって実行される1つ以上のサービスを有するように、それらの選択を変更することができる。
【0065】
一旦構成されると、ユーザは1つ以上のサービスによって構成された車両のコックピットに入ることができる。
図9において、表される例示の実施形態において、ユーザはサンプルコックピット74に入って、ユーザが構成した車両のシミュレーションされたバージョンをプレビューすることができる。あるいは、ユーザは、それらの選択に従って構成された実際の車両のコックピットに入ることができる。したがって、コンピューティングデバイスはまた、データを共有してコアコンポーネントを同期させるために、1つ以上のサービスならびに他のコンピューティングデバイスのコアコンポーネントと通信するように構成された、プロセッサ20、通信インタフェース26などの手段を含む。このことに関しては、例示の実施形態のコンピューティングデバイスは、異なるコンピューティングデバイスによって実装されることができるようなサービスの複数のインスタンスの間でデータを同期させるように構成された、プロセッサ、通信インタフェース26などの手段を含む。この例示の実施形態のコンピューティングデバイスはまた、ユーザによって選択された少なくとも1つのサービスの状態を記憶するように構成された、プロセッサ、メモリ22などの手段を含む。状態は、選択された少なくとも1つのサービスの実行後に選択されたサービスと関連したコアコンポーネントに記憶される。例えば、記憶される状態は、パイプラインまたはマイクロサービスなどのサービスの実行によって生成される値でもよい。一旦記憶されると、コアコンポーネントは、他のコアコンポーネントがサービスの状態によって更新されるように、他のコアコンポーネントと同期させることができる。
【0066】
一旦使用状態となり、位置情報サービスを提供するように構成されたサービスなどのサービスの1つ以上の実行後に、コンピューティングデバイスは、ハードウェア使用状況およびデータ消費に関する追加のフィードバックを提供するように構成されたプロセッサ20、ユーザインタフェース24などの手段を含み、一実施形態においては、
図8のブロック66と共に上述した構成プロセスの間に提供される、予想されたか推定された使用状況と対照的に実際の使用状況に基づいた、プロセッサ使用状況、メモリ使用状況、ネットワーク帯域幅消費、モバイルデータの消費、リモートプロシージャコール数、プロセス数またはスレッド数に関する、1つ以上のパラメータを提供することができる。実際の使用状況からのこのフィードバックに基づいて、ユーザは、ハードウェアの消費および/またはデータ使用状況を変更するために、選択されたサービスおよび/またはサービスを実行するコンピューティングデバイスを再構成することができる。
【0067】
一旦車両の初期構成に続いて使用状態になると、コンピューティングデバイスは、一実施形態において、さらに車両を構成する、パイプラインおよび/またはマイクロサービスなどの1つ以上の追加のサービスのユーザ選択を受信するように構成された、プロセッサ20、ユーザインタフェース24、通信インタフェース26などの手段を含む。例えば、通信インタフェースなどのコンピューティングデバイスは、ユーザによる選択時に、1つ以上の追加のサービスを提供するサービス市場80へのユーザによるアクセスを可能にしてもよい。このことに関しては、プロセッサは、サービス市場から追加のサービスのリストを取得して、ユーザによる選択のためにディスプレイなどのユーザインタフェースにリストを提示するように構成することができる。1つ以上の追加のサービスの選択に基づいて、コンピューティングデバイスは、ユーザから要求して、サービスを実行するエッジデバイス12またはクラウドコンピューティングデバイス14などのコンピューティングデバイスのユーザによる選択を受信するように構成された、プロセッサ、ユーザインタフェースなどの手段を含み、次にユーザ選択に従ってサービスを展開することができる。したがって、位置情報サービスを含んで車両に搭載されて提供されるサービスは、車両の初期構成後にさらに適応することができ、このことによりさらに、車両が位置情報サービスによって構成することができる柔軟性を増加させる。
【0068】
一実施形態において、ルーティングマイクロサービスは、起点から目的地までのルートを定めるために実行することができる。車両用のルートの確立と同時に、QRコード(登録商標)などのコードまたはユニフォームリソースロケータ(URL)などのリンクが提供され得る。例えば、コードまたはリンクは、マップと共にディスプレイ78に提示することができる。コードまたはリンクは、別のコンピューティングデバイス、例えば移動電話、タブレット型コンピュータ、スマートウォッチ、スマートグラスなどに提供されてもよい。例えば、QRコード(登録商標)は他のコンピューティングデバイスによってスキャンすることができ、または、リンクは他のコンピューティングデバイスのブラウザに入力することができる。コードまたはリンクに基づいて、他のコンピューティングデバイスは、ルートにアクセスすることができ、そして、ルートを変更すること、目的地を変更すること、中間地点を追加することなどによって、ルートが再構成されるのを可能にすることができる。その後で、再構成されたルートは他のコンピューティングデバイスによってルーティングマイクロサービスに伝えることができて、ルーティングマイクロサービスによって示されるルートはそれに応じて、再構成されたルートと整合した方法で更新することができる。
【0069】
上述のように、
図8は、本発明の例示の実施形態による、システム、方法、およびコンピュータプログラム製品のフローチャートを示す。フローチャートの各ブロックおよびフローチャートのブロックの組合せが種々の手段、例えば、1つ以上のコンピュータプログラム命令を含むソフトウェアの実行と関連したハードウェア、ファームウェア、プロセッサ、回路および/または他の通信装置によって実装され得ることが理解されよう。例えば、上記の手順の1つ以上は、コンピュータプログラム命令によって実施することができる。このことに関しては、上記の手順を実施するコンピュータプログラム命令は、本発明の実施形態を用いたコンピューティングデバイスのメモリデバイス22によって記憶されることができて、コンピューティングデバイスのプロセッサ20によって実行することができる。理解されるように、いずれのこのようなコンピュータプログラム命令もコンピュータまたは他のプログラム可能な装置(例えば、ハードウェア)上にロードして、マシンを作ることができ、それにより、結果として得られるコンピュータまたは他のプログラマブルな装置がフローチャートブロックで指定されている機能を実装する。これらのコンピュータプログラム命令は、コンピュータまたは他のプログラム可能な装置に特定の方法で機能するように指示することができるコンピュータ可読メモリに記憶することもでき、それにより、コンピュータ可読メモリに記憶された命令は、その実行がフローチャートブロックで指定されている機能を実施する製品を作り出す。コンピュータプログラム命令は、コンピュータまたは他のプログラム可能な装置にロードすることもできて、一連の動作がコンピュータまたは他のプログラム可能な装置で実行されるようにして、コンピュータ実施のプロセスを生じさせ、その結果、コンピュータまたは他のプログラム可能なデータ処理装置上で実行する命令が、フローチャートブロックで指定された機能を実施するための動作を提供する。
【0070】
したがって、フローチャートのブロックは指定された機能を実行するための手段の組み合わせおよび指定された機能を実行するための動作の組み合わせをサポートする。フローチャートの1つ以上のブロックおよびフローチャートのブロックの組合せが、指定された機能を実行する特殊目的ハードウェアベースのコンピュータシステムまたは、特殊目的ハードウェアおよびコンピュータ命令の組合せによって実装されることができることも理解されよう。
【0071】
いくつかの実施形態では、上記の動作の特定のものは、修正することができるかまたはさらに拡大することができる。さらに、いくつかの実施形態では、追加の任意選択の動作を含めることができて、それのいくつかは上で記載されている。上記の動作に対する修正、追加または拡大は、いかなる順序においても、そして、いかなる組合せでも実行することができる。
【0072】
本明細書において記載される本発明の多くの修正および他の実施形態は、これらの発明が関係する当業者には、前述の説明および関連する図面に示された教示の利益を有することが思い浮かぶであろう。したがって、本発明が開示される特定の実施形態に限られておらず、修正および他の実施形態が添付の請求の範囲に含まれることを意図することを理解すべきである。更に、前述の説明および関連する図面が要素および/または機能の特定の例示の組合せの前後関係における例示の実施形態を説明するが、異なる要素の組合せおよび/または機能が添付の請求の範囲の要旨を逸脱しない範囲で代替実施形態によって提供されてもよいことが理解されるべきである。このことに関しては、例えば、上記で明示的に説明されたものとは異なる要素および/または機能の組合せも、添付の請求の範囲のいくつかに記載されるように意図されている。特定の用語が本願明細書において使用されていても、それらは一般的および説明的な意味においてだけ使われるものであり、限定の目的ではない。