添付図面の諸図面内に本明細書を限定としてではなく例として示し、それらの図面では同様の参照番号を使用して同様の要素を示す。
ある道程における道程最終目的地点を決定するためのシステムおよび方法について以下に記載する。以下の説明では、本発明を十分に理解できるように、多くの詳細について説明する。しかしながら、各実施形態はこれらの具体的な詳細無しでも良いことは当業者にとって明らかであろう。また、説明が不明瞭になることを避けるために、構造や装置をブロック図の形式で表すこともある。たとえば、一実施形態は、ユーザインタフェースおよび特定のハードウェアとともに説明される。しかし、ここでの説明は、データおよびコマンドを受信する任意のタイプの計算装置および任意の周辺機器について適用できる。
本明細書における「一実施形態」または「ある実施形態」等という用語は、その実施形態と関連づけて説明される特定の特徴・構造・性質が少なくとも本発明の一つの実施形態に含まれることを意味する。「一実施形態における」等という用語は本明細書内で複数用いられるが、これらは必ずしも同一の実施形態を示すものとは限らない。
また、本明細書においては、記載の簡略化のために各要素の数については、特に必要な場合以外は明示しない。すなわち、本明細書における「要素Aを含む」等という表現は、少なくとも一つ以上の要素Aを含むことを意味し、要素Aを一つだけ含む場合と、二つ以上の複数個を含む場合の両方を意味する。また、同様に記載の簡略化のために、「Aに基づいてBを行う」という記載は「少なくとも部分的にAに基づいて処理Bを行う」ことを意味する。この表現は、処理Bを行う際にAに基づいていれば、A以外の要素を考慮に入れていても良いし、Aのみに基づいていても構わない。
以下の詳細な説明の一部は、非一時的(non-transitory)なコンピュータ可読記憶媒体に記憶されたデータビットに対する動作のアルゴリズムおよび記号的表現として提供される。これらのアルゴリズム的な説明および表現は、データ処理技術分野の当業者によって、他の当業者に対して自らの成果の本質を最も効果的に説明するために用いられるものである。なお、本明細書において(また一般に)アルゴリズムとは、所望の結果を得るための論理的な手順を意味する。処理のステップは、物理量を物理的に操作するものである。必ずしも必須ではないが、通常は、これらの量は記憶・伝送・結合・比較およびその他の処理が可能な電気的または磁気的信号の形式を取る。通例にしたがって、これらの信号をビット・値・要素・エレメント・シンボル・キャラクタ・項・数値などとして称することが簡便である。
なお、これらの用語および類似する用語はいずれも、適切な物理量と関連付いているものであり、これら物理量に対する簡易的なラベルに過ぎないということに留意する必要がある。以下の説明から明らかなように、特に断らない限りは、本明細書において「処理」「計算」「コンピュータ計算(処理)」「判断」「表示」等の用語を用いた説明は、コンピュータシステムや類似の電子的計算装置の動作および処理であって、コンピュータシステムのレジスタやメモリ内の物理的(電子的)量を、他のメモリやレジスタまたは同様の情報ストレージや通信装置、表示装置内の物理量として表される他のデータへ操作および変形する動作および処理を意味する。
本発明は、本明細書で説明される動作を実行する装置にも関する。この装置は要求される目的のために特別に製造されるものであっても良いし、汎用コンピュータを用いて構成しコンピュータ内に格納されるプログラムによって選択的に実行されたり再構成されたりするものであっても良い。このようなコンピュータプログラムは、コンピュータのシステムバスに接続可能な、例えばフロッピー(登録商標)ディスク・光ディスク・CD−ROM・MOディスク・磁気ディスクなど任意のタイプのディスク、読み込み専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、EPROM、EEPROM、磁気カード、フラッシュメモリ、光学式カード、電子的命令を格納するために適した任意のタイプの媒体などの、非一時的なコンピュータ可読記憶媒体に記憶される。
発明の具体的な実施形態は、完全にハードウェアによって実現されるものでも良いし、完全にソフトウェアによって実現されるものでも良いし、ハードウェアとソフトウェアの両方によって実現されるものでも良い。好ましい実施形態は、ソフトウェアによって実現される。ここでソフトウェアとは、ファームウェア、常駐ソフトウェア、マイクロコードやその他のソフトウェアを含むものである。
さらに、ある実施形態は、コンピュータが利用あるいは読み込み可能な記憶媒体からアクセス可能なコンピュータプログラムプロダクトの形態を取る。この記憶媒体は、コンピュータや任意の命令実行システムによってあるいはそれらと共に利用されるプログラムコードを提供する。コンピュータが利用あるいは読み込み可能な記憶媒体とは、命令実行システムや装置によってあるいはそれらと共に利用されるプログラムを、保持、格納、通信、伝搬および転送可能な任意の装置を指す。
プログラムコードを格納・実行するために適したデータ処理システムは、システムバスを介して記憶素子に直接または間接的に接続された少なくとも1つのプロセッサを有する。記憶素子は、プログラムコードの実際の実行に際して使われるローカルメモリや、大容量記憶装置や、実行中に大容量記憶装置からデータを取得する回数を減らすためにいくつかのプログラムコードを一時的に記憶するキャッシュメモリなどを含む。
入力/出力(I/O)装置は、例えばキーボード、ディスプレイ、ポインティング装置などであるが、これらはI/Oコントローラを介して直接あるいは間接的にシステムに接続される。
システムにはネットワークアダプタも接続されており、これにより、私的ネットワークや公共ネットワークを介して他のデータ処理システムやリモートにあるプリンタや記憶装置に接続される。モデム、ケーブルモデム、イーサネット(登録商標)は、現在利用可能なネットワークアダプタのほんの一例である。
最後に、本明細書において提示されるアルゴリズムおよび表示は特定のコンピュータや他の装置と本来的に関連するものではない。本明細書における説明にしたがったプログラムを有する種々の汎用システムを用いることができるし、また要求された処理ステップを実行するための特定用途の装置を製作することが適した場合もある。これら種々のシステムに要求される構成は、以下の説明において明らかにされる。さらに、本発明は、特定のプログラミング言語と関連づけられるものではない。本明細書で説明される本発明の内容を実装するために種々のプログラミング言語を利用できることは明らかであろう。
システム概要
図1は、一実施形態による、1つまたは複数の目的地までの1つまたは複数の潜在的な道程を推定するためのシステム100のブロック図を示す。図示のシステム100は、ナビゲーションシステム102、ソーシャルネットワークサーバ120、検索サーバ124、クライアント装置130、およびモバイル機器134を含む。システム100のこれらのエンティティは、互いに通信可能に結合される。図示の実施形態では、これらのエンティティはネットワーク105を介して通信可能に結合される。
図1には、1つのナビゲーションシステム102、1つのソーシャルネットワークサーバ120、1つの検索サーバ124、1つのクライアント装置130、および1つのモバイル機器134を示すが、本説明は任意の数のナビゲーションシステム102、ソーシャルネットワークサーバ120、検索サーバ124、クライアント装置130、およびモバイル機器134を有する任意のシステムアーキテクチャにも当てはまる。さらに、ナビゲーションシステム102、ソーシャルネットワークサーバ120、検索サーバ124、クライアント装置130、およびモバイル機器134には1つのネットワーク105しか結合されていないが、実際は任意の数のネットワーク105をこれらのエンティティに接続することができる。
図示の実施形態では、ソーシャルネットワークサーバ120が信号線103を介してネットワーク105に通信可能に結合される。検索サーバ124は、信号線107を介してネットワーク105に通信可能に結合される。クライアント130は、信号線119および121の1つまたは複数を介してネットワーク105に通信可能に結合される。モバイル機器134は、信号線115および117の1つまたは複数を介してネットワーク105に通信可能に結合される。ナビゲーションシステム102は、信号線109、111、および113の1つまたは複数を介してネットワーク105に通信可能に結合される。一実施形態では、ナビゲーションシステム102内に含まれるネットワークインターフェイス108が、信号線109および111の1つまたは複数を介してネットワーク105に通信可能に結合される。ナビゲーションシステム102内に含まれる全地球測位システム(GPS)110が、信号線113を介してネットワーク105に通信可能に結合される。一実施形態では、信号線103、107、111、117、および121のそれぞれは、有線接続(例えばケーブルによる接続)および無線接続(例えば無線ローカルエリアネットワーク(LAN)接続)のうちの一方を表す。信号線109、113、115、および119のそれぞれは、無線接続(例えば無線LAN接続、衛星接続等)を表す。
ネットワーク105は、有線または無線の従来型のネットワークであり、星状構成、トークンリング構成、または当業者に知られている他の構成など、任意の数の構成を有することができる。一実施形態ではネットワーク105には、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)(例えばインターネット)、および/または複数の装置がそれを介して通信する他の任意の相互接続データ経路のうちの1つもしくは複数が含まれる。別の実施形態では、ネットワーク105はピアツーピアネットワークである。ネットワーク105は、様々な異なる通信プロトコルでデータを送るための電気通信網に結合され、またはそのような電気通信網の一部を含む。例えば、ネットワーク105は3Gネットワークまたは4Gネットワークである。さらに別の実施形態では、ネットワーク105にはBluetooth(登録商標)通信ネットワーク、またはショートメッセージングサービス(SMS)、マルチメディアメッセージングサービス(MMS)、ハイパーテキスト転送プロトコル(HTTP)、直接データ接続、無線アプリケーションプロトコル(WAP)、電子メールなどによるデータを送受信するためのセルラ通信ネットワークが含まれる。さらに別の実施形態では、ネットワーク105内のリンクの全てまたは一部が、セキュアソケットレイヤ(SSL)、セキュアHTTP、および/または仮想私設ネットワーク(VPN)などの従来の暗号化技術を使用して暗号化される。
ナビゲーションシステム102は、ナビゲーション情報を提供するためのシステムである。例えばナビゲーションシステム102は、車両に埋め込まれる車載ナビゲーションシステムである。ナビゲーションシステム102は、プロセッサ104、メモリ106、ネットワークインターフェイス108、GPS110、学習システム112、推定システム114、忘却モジュール116、記憶装置118、終着地モジュール150、センサ170、およびディスプレイ160を含む。図では1つのプロセッサ104、1つのメモリ106、1つのネットワークインターフェイス108、1つのGPS110、1つの学習システム112、1つの推定システム114、1つの忘却モジュール116、1つの記憶装置118、1つの終着点モジュール150、1つのセンサ170、および1つのディスプレイ160しか示していないが、任意の数のこれらのコンポーネントをナビゲーションシステム102内で利用できることを当業者なら理解されよう。当業者は、ナビゲーションシステム102が、入力装置、音声システム、およびナビゲーションシステムによくある他のコンポーネントなど、図1には示さない他の任意のコンポーネントを含み得ることも理解されよう。
プロセッサ104は、算術論理装置(ALU)、マイクロプロセッサ、汎用コントローラ、または計算を実行し記憶装置118上に記憶されたデータを取得する等のための他のプロセッサアレイなどである。プロセッサ104はデータ信号を処理し、複雑命令セットコンピュータ(CISC)アーキテクチャ、縮小命令セットコンピュータ(RISC)アーキテクチャ、または複数の命令セットの組合せを実装するアーキテクチャが含まれる様々なコンピューティングアーキテクチャを含むことができる。図1には単一のプロセッサしか図示しないが、複数のプロセッサを含めることもできる。処理能力は、画像の表示ならびに画像の取得および伝送を支援することに限定されてもよい。処理能力は、様々な種類の特徴抽出およびサンプリングを含む、より複雑なタスクを実行するのに十分であり得る。他のプロセッサ、オペレーティングシステム、センサ、ディスプレイ、および物理的構成が可能であることは当業者には明らかである。
メモリ106は、プロセッサ104によって実行され得る命令および/またはデータを記憶する。それらの命令および/またはデータは、本明細書に記載する技法のいずれかおよび/または全てを実行するためのコードを含むことができる。メモリ106は、ダイナミックランダムアクセスメモリ(DRAM)装置、スタティックランダムアクセスメモリ(SRAM)装置、フラッシュメモリ、または当技術分野で知られている他の何らかのメ
モリ装置とすることができる。一実施形態では、メモリ106には、ハードディスクドライブ、フロッピディスクドライブ、CD−ROM装置、DVD−ROM装置、DVD−RAM装置、DVD−RW装置、フラッシュメモリデバイス、より永久的な基盤上に情報を記憶するための当技術分野で知られている他の何らかの大容量記憶装置などの、不揮発性メモリまたは同様の永久記憶装置および媒体も含まれる。
ネットワークインターフェイス108は、ナビゲーションシステム102をネットワークに接続するためのインターフェイスである。例えばネットワークインターフェイス108は、ナビゲーションシステム102をネットワーク105に接続するネットワークアダプタである。ネットワークインターフェイス108は、信号線111および109の1つまたは複数を介してネットワーク105に通信可能に結合される。一実施形態では、ネットワークインターフェイス108が、ネットワーク105を介してソーシャルネットワークサーバ120、検索サーバ124、クライアント130、およびモバイル機器134の1つまたは複数からデータを受け取る。ネットワークインターフェイス108は、その受け取ったデータをナビゲーションシステム102の1つまたは複数のコンポーネント(例えば学習システム112、推定システム114等)に送る。別の実施形態では、ネットワークインターフェイス108がナビゲーションシステム102の1つまたは複数のコンポーネントからデータを受け取り、そのデータを、ネットワーク105を介してソーシャルネットワークサーバ120、検索サーバ124、クライアント130、およびモバイル機器134の1つまたは複数に送る。
一実施形態では、ネットワークインターフェイス108が、ネットワーク105または別の通信チャネルへの直接物理接続用のポートを含む。例えばネットワークインターフェイス108には、ユニバーサルシリアルバス(USB)、カテゴリ5ケーブル(CAT−5)、またはネットワーク105との有線通信用の同様のポートが含まれる。別の実施形態では、ネットワークインターフェイス108は、IEEE 802.11、IEEE 802.16、Bluetooth(登録商標)、近距離無線通信(NFC)、他の適切な無線通信方法など、1つまたは複数の無線通信方法を使用してネットワーク105または別の通信チャネルとデータをやり取りするための無線トランシーバを含む。一実施形態では、ネットワークインターフェイス108は、短距離通信用の無線周波(RF)を発生させるNFCチップを含む。
GPS110は、位置データおよびタイムスタンプデータを提供するためのシステムである。例えばGPS110は、リアルタイムで車両の位置を突き止め、現在時刻を示すタイムスタンプデータを提供する従来のGPSである。一実施形態ではGPS110が、位置データおよびタイムスタンプデータを学習システム112、推定システム114、および忘却モジュール116の1つまたは複数に送る。当業者は、GPS110が運転情報(例えば目的地までの運転指示、推定到着時間等)およびガソリンスタンド、レストラン、ホテル等に関する情報などの他の情報をユーザに与えることができることを理解されよう。
一実施形態では、GPS110がデータストリームを終着点モジュール150に送る。そのデータストリームは、1つまたは複数のデータ要素を含む。データ要素は、走行車両の地理的位置を示すデータ、および走行車両がその地理的位置にあるときのタイムスタンプ(例えば2011年11月30日、水曜日2:00:00pm)を示すタイムスタンプデータを含む。例えばデータストリームは、(1)走行車両の第1の地理的位置および走行車両が第1の地理的位置にあったときの第1のタイムスタンプを示す第1のデータ要素と、(2)走行車両の第2の地理的位置および走行車両が第2の地理的位置にあったときの第2のタイムスタンプを示す第2のデータ要素とを含む。一実施形態では、データストリーム内で第2のデータ要素が第1のデータ要素の後に生じる。例えば第2のデータ要素
は、データストリーム内で第1のデータ要素のすぐ後に続く。
学習システム112は、運転者履歴データを処理するためのコードおよびルーチンである。一実施形態では、学習システム112は、プロセッサ104のオンチップ記憶装置(図示せず)内に記憶されるコードおよびルーチンを含む。別の実施形態では、学習システム112は、フィールドプログラマブルゲートアレイ(FPGA)や特定用途向け集積回路(ASIC)などのハードウェアを使用して実装される。さらに別の実施形態では、学習システム112はハードウェアとソフトウェアとの組合せを使用して実装される。学習システム112については、図2、図5、および図9A〜14Cを参照しつつ以下でより詳しく説明する。
運転者履歴データとは、ユーザが過去に走行した道程を示すデータである。例えば運転者履歴データは、出発点、出発データ(例えば出発時間、出発の曜日、出発の週、および出発の日付等)、方向データ、所要時間データ、終着点、到着データ(例えば到着時間、到着の曜日、到着の週、および到着の日付等)、終着点の関心地点(POI)データなど、過去の道程に関連するデータを含む。一実施形態では、運転者履歴データは過去の(実際の)目的地と潜在的な道程の推定目的地を示す。過去の道程における目的地を、過去の目的地と呼ぶ。潜在的な道程における目的地を、推定目的地と呼ぶ。潜在的な道程とは、ユーザがとる可能性が高い道程である。図2を参照して以下に説明するように、推定目的地は1つまたは複数の過去の目的地から生成される。運転者履歴データについては、図3を参照しつつ以下でより詳しく説明する。
推定システム114は、道程の目的地を推定するためのコードおよびルーチンである。一実施形態では、推定システム114は、プロセッサ104のオンチップ記憶装置(図示せず)内に記憶されるコードおよびルーチンを含む。別の実施形態では、推定システム114は、FPGAやASICなどのハードウェアを使用して実装される。さらに別の実施形態では、推定システム114はハードウェアとソフトウェアとの組合せを使用して実装される。推定システム114については、図4および図9A〜14Cを参照しつつ以下でより詳しく説明する。
忘却モジュール116は、ナビゲーションシステム102のメモリからデータを削除するためのコードおよびルーチンである。一実施形態では、忘却モジュール116は、プロセッサ104のオンチップ記憶装置(図示せず)内に記憶されるコードおよびルーチンを含む。別の実施形態では、忘却モジュール116は、FPGAやASICなどのハードウェアを使用して実装される。さらに別の実施形態では、忘却モジュール116はハードウェアとソフトウェアとの組合せを使用して実装される。忘却モジュール116については、図6および図8A〜8Bを参照しつつ以下でより詳しく説明する。
記憶装置118は、データを記憶する非一時的なメモリである。例えば記憶装置118は、ダイナミックランダムアクセスメモリ(DRAM)装置、スタティックランダムアクセスメモリ(SRAM)装置、フラッシュメモリ、または当技術分野で知られている他の何らかのメモリ装置である。一実施形態では、記憶装置118には、ハードディスクドライブ、フロッピディスクドライブ、コンパクトディスク読取専用メモリ(CD−ROM)装置、デジタル多用途ディスク読取専用メモリ(DVD−ROM)装置、デジタル多用途ディスクランダムアクセスメモリ(DVD−RAM)装置、デジタル多用途ディスク書替え可能(DVD−RW)装置、フラッシュメモリデバイス、当技術分野で知られている他の何らかの不揮発性記憶装置などの、不揮発性メモリまたは同様の永久記憶装置および媒体も含まれる。記憶装置118については、図3を参照しつつ以下でより詳しく説明する。
終着点モジュール150は、プロセッサ104によって実行される、ある道程における道程最終目的地点を決定するコードおよびルーチンである。道程最終目的地点については、図7に関して以下でより詳しく説明する。一実施形態では、終着点モジュール150は、プロセッサ104のオンチップ記憶装置(図示せず)内に記憶されるコードおよびルーチンを含む。別の実施形態では、終着点モジュール150は、FPGAやASICなどのハードウェアを使用して実装される。さらに別の実施形態では、終着点モジュール150はハードウェアとソフトウェアとの組合せを使用して実装される。終着点モジュール150については、図7、図15、および図16A〜16Dに関して以下でより詳しく説明する。
ディスプレイ160は、ユーザにデータを表示するための任意の装置である。例えばディスプレイ160は、タッチスクリーンディスプレイ装置、液晶ディスプレイ(LCD)、および当業者に知られている他の任意の従来のディスプレイ装置のうちの1つである。
センサ170は、走行車両の任意の種類のデータを集めるように構成される任意の種類の従来型のセンサである。例えばセンサ170は、光検知測距(LIDAR)センサ、赤外線検出器、動作検知器、サーモスタット、および音響検出器等のうちの1つである。当業者は、他の種類のセンサも可能であることを理解されよう。一実施形態では、システム100が様々な種類のセンサ170の組合せを含む。例えばシステム100は、走行車両のシステム状態をモニタするための第1のセンサ170、走行車両の速度をモニタするための第2のセンサ、走行車両のドアの動きをモニタするための第3のセンサ、および走行車両の窓の動きをモニタするための第4のセンサを含む。センサ170は、走行車両のシステム状態、速度、ドアの動き、および窓の動きのうちの1つまたは複数の測定を示すセンサデータを終着点モジュール150に送る。
ソーシャルネットワークサーバ120は、プロセッサ(図示せず)と、ユーザにソーシャルネットワークを提供するためのデータを記憶するコンピュータ可読記憶媒体(図示せず)とを有する、任意のコンピューティングデバイスである。1つのソーシャルネットワークサーバ120しか図示しないが、複数のサーバが存在してもよいことを当業者なら理解されよう。ソーシャルネットワークは、ユーザが共通の特徴によって結び付けられる任意の種類の社会構造、例えばOrkut(登録商標)である。共通の特徴には、友人関係、家族、職業、関心事などが含まれる。明示的に定義される関係および他のユーザとの社会的つながりによって暗に示される関係を含め、共通の特徴は、システム100内に含まれる1つまたは複数のソーシャルネットワーキングシステムによって提供され、それらの関係はソーシャルグラフ内に定められる。ソーシャルグラフは、ソーシャルネットワーク内の全ユーザについての、およびそれらのユーザが互いにどのように関係するのかについてのマッピングである。
図示の実施形態では、ソーシャルネットワークサーバ120がソーシャルネットワークアプリケーション122を含む。ソーシャルネットワークアプリケーション122はソーシャルネットワークサーバ120のメモリ(図示せず)上に記憶されるコードおよびルーチンを含み、それらのコードおよびルーチンは、ソーシャルネットワークサーバ120のプロセッサ(図示せず)によって実行されるとき、クライアント装置130および/またはモバイル機器134がネットワーク105を介してアクセス可能なソーシャルネットワークをソーシャルネットワークサーバ120に提供させる。一実施形態では、ユーザがソーシャルネットワーク上でコメントを公開する。例えば、ソーシャルネットワークアプリケーション122のユーザが状況更新を行い、他のユーザがその状況更新に対してコメントをする。別の実施形態では、車両内にいるユーザが、ナビゲーションシステム102に追加されるソーシャル機能によってソーシャルネットワークと対話する。例えば、ユーザはナビゲーションシステム102のディスプレイ160によって提示されるグラフィカル
ユーザインターフェイス(GUI)上に示される「共有」ボタンなどのソーシャルグラフィックをクリックして、道程に関する情報(例えば道程に関連する出発点、終着点、出発点から終着点までのルート等)をソーシャルネットワーク内で共有する。
検索サーバ124は、プロセッサ(図示せず)と、ユーザに検索サービスを提供するためのデータを記憶するコンピュータ可読記憶媒体(図示せず)とを有する、任意のコンピューティングデバイスである。図示の実施形態では、検索サーバ124が検索モジュール126を含む。検索モジュール126は、ユーザに1つまたは複数の検索結果を提供するためのコードおよびルーチンである。一実施形態では、検索モジュール126はネットワーク105を介してユーザからクエリを受け取り、そのクエリに一致する結果を得るために複数のデータソース(例えば検索サーバ124内に含まれるデータソース、ソーシャルネットワークサーバ120のデータソース等)を検索し、結果をユーザに送る。例えば検索モジュール126は、ナビゲーションシステム102を操作するユーザから現地のレストランに関するレビューを検索するための入力を受け取る。検索モジュール126は、一致する結果を得るために複数のデータソースを検索し、ネットワーク105を介してナビゲーションシステム102に結果を送り、ディスプレイ160にその結果をユーザに向けて提示させる。
クライアント130は、メモリ(図示せず)およびプロセッサ(図示せず)を含む任意のコンピューティングデバイスである。例えばクライアント130は、パーソナルコンピュータ(「PC」)、携帯電話(例えばスマートフォン、フィーチャーフォン等)、タブレットコンピュータ(タブレットPC)、ラップトップ等である。他の種類のクライアント130もあり得ることを当業者なら理解されよう。一実施形態では、システム100は様々な種類のクライアント130の組合せを含む。
クライアント130は、ブラウザ132を含む。一実施形態では、ブラウザ132はクライアント130のメモリ内に記憶され、クライアント130のプロセッサによって実行されるコードおよびルーチンである。例えばブラウザ132は、Google Chrome、Mozilla Firefoxなどのブラウザアプリケーションである。一実施形態では、ブラウザ132がクライアント130のディスプレイ装置(図示せず)上でユーザにGUIを提示し、ユーザがGUIによって情報を入力できるようにする。
モバイル機器134は、メモリ(図示せず)およびプロセッサ(図示せず)を含む任意のモバイルコンピューティングデバイスである。例えばモバイル機器134は、携帯電話(例えばスマートフォン、フィーチャーフォン等)、タブレットコンピュータ(またはタブレットPC)、ラップトップ等である。他の種類のモバイル機器134もあり得ることを当業者なら理解されよう。一実施形態では、システム100は様々な種類のモバイル機器134の組合せを含む。
モバイル機器134は、シンアプリケーション136を含む。一実施形態では、シンアプリケーション136はモバイル機器134のメモリ内に記憶され、モバイル機器134のプロセッサによって実行されるコードおよびルーチンである。例えばシンアプリケーション136は、ユーザがナビゲーションシステム102と対話するためのGUIを提供するアプリケーションである。
システム100は、例えばユーザが車両のエンジンをかけたときに、複数の推定目的地(または潜在的な道程)をユーザに提供することができるのでとりわけ有利である。システム100は、道程の目的地をユーザが入力することを必要とせず、GPS110が自らの位置を突き止めている限り、システム100内に記憶された運転者履歴データに少なくとも部分的に基づいて、潜在的な道程に関する情報をユーザに実時間で自動的に提供する
。さらにシステム100は、ユーザが新たな道程をとる場合には運転者履歴データを更新するので、その結果道程の推定精度が常に改善される。システム100はさらに、もはや使われていない目的地に関連する不要なデータを削除して記憶空間を節約し、図6を参照して以下に説明するように、道程の推定に不要なデータの影響を最小限にする。
学習システム
次に図2および図5を参照して、学習システム112をより詳細に示す。図2は、一実施形態による学習システム112を示すブロック図である。学習システム112は、バス220を介してナビゲーションシステム102の他のエンティティと通信する。プロセッサ104は、信号線238を介してバス220に通信可能に結合される。推定システム114は、信号線242を介してバス220に通信可能に結合される。記憶装置118は、信号線244を介してバス220に通信可能に結合される。GPS110は、信号線240を介してバス220に通信可能に結合される。一実施形態では、GPS110がタイムスタンプジェネレータ217を含む。タイムスタンプジェネレータ217は、一実施形態では信号線246を介してバス220に直接結合されることを示すために破線を使って図示する。
タイムスタンプジェネレータ217は、プロセッサ104によって実行される、時間を示すタイムスタンプデータを生成するコードおよびルーチンである。例えばタイムスタンプジェネレータ217は、車両を運転するユーザが新たな道程に出るときの、出発時間、曜日、および日付を示す第1のタイムスタンプを生成し、ユーザが目的地に到着するときの、到着時間、曜日、および日付を示す第2のタイムスタンプを生成する。タイムスタンプジェネレータ217は、時間を示すタイムスタンプデータを学習システム112、推定システム114、および忘却モジュール116のうちの1つまたは複数に送る。
学習システム112は、第1の通信モジュール201、運転履歴モジュール203、変換モジュール205、およびGUIモジュール215を含む。場合により、学習システム112は、頻度モジュール206、メトリックモジュール207、品質モジュール209、概要モジュール210、出力モジュール211、および履歴モジュール213のうちの1つまたは複数をさらに含んでもよい。学習システム112の各コンポーネントは、バス220を介して互いに通信可能に結合される。頻度モジュール206、メトリックモジュール207、品質モジュール209、概要モジュール210、出力モジュール211、および履歴モジュール213が破線によって示されているのは、一実施形態ではこれらのコンポーネントが推定システム114内に含まれることを示すためである。
第1の通信モジュール201は、プロセッサ104によって実行される、学習システム112のコンポーネントとシステム100の他のコンポーネントとの間の通信を処理するコードおよびルーチンである。例えば第1の通信モジュール201は、システム100の他のコンポーネント(例えば推定システム114、GPS110等)からデータを受け取り、そのデータを学習システム112のコンポーネント(例えば運転履歴モジュール203、変換モジュール205等)に送る。第1の通信モジュール201は、信号線222を介してバス220に通信可能に結合される。一実施形態では、第1の通信モジュール201は、学習システム112のコンポーネント間の通信も処理する。例えば第1の通信モジュール201は、メトリックモジュール207から1つまたは複数のメトリックを受け取り、その1つまたは複数のメトリック(metric)を品質モジュール209に送る。なお、メトリックとは、ここでは道程の状態を数量化するための解析的な測定あるいは評価を意味するが、その詳細については以下でより詳しく説明する。
一実施形態では、第1の通信モジュール201が記憶装置118からデータ(例えば運転者履歴データ、学習パラメータセット等)を取得し、その取得したデータを学習システ
ム112のコンポーネント(例えば運転履歴モジュール203、頻度モジュール206等)に送る。別の実施形態では、第1の通信モジュール201が学習システム112のコンポーネント(例えば変換モジュール205)からデータ(例えば学習パラメータセット)を受け取り、そのデータを記憶装置118内に記憶する。当業者は、第1の通信モジュール201が本明細書に記載の他の機能を提供してもよいことを理解されよう。
運転履歴モジュール203は、プロセッサ104によって実行される、運転者履歴データを記憶装置118から取得するコードおよびルーチンである。例えば運転履歴モジュール203は、運転者履歴データを運転者履歴リポジトリ316から取得し、その運転者履歴データを変換モジュール205に送る。運転者履歴リポジトリ316については、図3を参照しつつ以下でより詳しく説明する。運転履歴モジュール203は、信号線224を介してバス220に通信可能に結合される。
変換モジュール205は、プロセッサ104によって実行される、運転者履歴データを学習パラメータセット(学習パラメータの集合)に変換するコードおよびルーチンである。例えば変換モジュール205は、運転者履歴データを運転履歴モジュール203から受け取り、その運転者履歴データを以下に説明するように学習パラメータセットに変換する。変換モジュール205は、信号線226を介してバス220に通信可能に結合される。
上記に記載したように、運転者履歴データは、出発点、出発データ(例えば出発時間、出発の曜日、出発の週、および出発の日付等)、方向データ、所要時間データ、終着点、到着データ(例えば到着時間、到着の曜日、到着の週、および到着の日付等)、終着点のPOIデータなど、1つまたは複数の過去の道程に関連するデータを含む。一実施形態では、出発時間は時刻とも呼ばれる。出発の曜日は、曜日とも呼ばれる。出発の週は、年の週と呼ばれる。出発の日付は、年の日付と呼ばれる。
一実施形態では、変換モジュール205が、ある道程(例えば過去の道程、現在の道程、または潜在的な道程等)の出発時間(例えば4:00:00pm)を複数の不均一区分の1つへと変換する。例えば変換モジュール205は、ある道程の出発時間を深夜、朝、昼、午後、および夜のうちの1つの時間帯に変換する。出発時間を変換するための表の一例を図18Aに示す。
図18Aに示す例では、道程の出発時間が午前零時と4:59:59amとの間にある場合、変換モジュール205は出発時間を「深夜」という時間帯に変換する。あるいは、出発時間が5:00:00amと10:59:59amとの間にある場合、変換モジュール205は出発時間を「朝」という時間帯に変換する。出発時間が11:00:00amと1:59:59pmとの間にある場合、変換モジュール205は出発時間を「昼」という時間帯に変換する。出発時間が2:00:00pmと7:59:59pmとの間にある場合、変換モジュール205は出発時間を「午後」という時間帯に変換する。出発時間が8:00:00pmと11:59:59pmとの間にある場合、変換モジュール205は出発時間を「夜」という時間帯に変換する。同様に、変換モジュール205は、ある道程の到着時間を複数の不均一区分(時間帯)の1つへと変換する。例えば変換モジュール205は、到着時間を深夜、朝、昼、午後、および夜のうちの1つの時間帯に変換する。
変換モジュール205は、ある道程の出発の曜日(例えば木曜日)を複数の不均一区分の1つへと変換する。例えば変換モジュール205は、道程の出発の曜日を平日および週末のうちの一方に変換する。例えば出発の曜日が月曜日から金曜日の場合、変換モジュール205は出発の曜日を「平日」に変換する。出発の曜日が土曜日または日曜日の場合、変換モジュール205は出発の曜日を「週末」に変換する。同様に、変換モジュール205は、ある道程の到着の曜日を複数の不均一区分の1つへと変換する。例えば変換モジュ
ール205は、到着の曜日を平日および週末のうちの一方に変換する。
変換モジュール205は、ある道程の道程所要時間(例えば10分)を複数の不均一区分の1つに変換する。例えば変換モジュール205は、道程の所要時間を短い、中位、および長いのうちの1つに変換する。道程の所要時間を変換するための表の一例を図18Bに示す。一実施形態では、道程の所要時間を整数に切り上げる。例えば道程の所要時間が14分50秒の場合、変換モジュール205は道程の所要時間を15分として切り上げる。
図18Bに示す例では、道程の所要時間が0分から14分の間にある場合、変換モジュール205は道程の所要時間を「短い」に変換する。道程の所要時間が15分から29分の間にある場合、変換モジュール205は道程の所要時間を「中位」に変換する。道程の所要時間が30分以上の場合、変換モジュール205は道程の所要時間を「長い」に変換する。
変換モジュール205は、道程の方向を東、南東、南、南西、西、北西、北、および北東のうちの1つに変換する。図18Cに、一実施形態による、方向を変換するための一例のグラフィカル表現を示す。図18Cについては以下でより詳しく説明する。
変換モジュール205は、これら複数の変換済みデータを学習パラメータセットとして記憶装置118内に記憶する。学習パラメータは、道程に関連する任意のパラメータである。例えば学習パラメータは、道程についての、出発点、出発時間、出発の日付、出発の曜日、年の週、方向、道程の所要時間、終着地点、道程の目的地のPOI、到着時間、到着の日付、到着の曜日等のうちのいずれかである。一実施形態では、学習パラメータは、前回の道程の出発点(図17Aに「以前の起点−1」として示す)および前々回の道程の出発点(図17Aに「以前の起点−2」として示す)のうちのいずれかである。学習パラメータセットは、1つまたは複数の道程についての出発点、出発時間、出発の日付、曜日、年の週、方向、道程の所要時間、終着地点(または道程の目的地の位置)、道程の目的地のPOI、到着時間、到着の日付等の任意の組合せである。一実施形態では、学習パラメータセットは、前回の道程の出発点および前々回の道程の出発点をさらに含む。
一実施形態では、学習パラメータセットには、変換されていない運転者履歴データが含まれる。別の実施形態では、学習パラメータセットには、上記に記載したように変換モジュール205によって生成される変換済みの運転者履歴データが含まれる。さらに別の実施形態では、学習パラメータセットには、運転者履歴データに含まれる変換されていないデータ(例えば出発の日付、到着の日付等)および上記に記載したように変換モジュール205によって生成される変換済みデータ(例えば平日や週末のような変換された曜日、時間帯のような変換された時刻等)が含まれる。当業者は、学習パラメータセットが本明細書に記載の機能を提供するための他の任意のデータを含み得ることを理解されよう。
頻度モジュール206は、プロセッサ104によって実行される、学習パラメータセットを分析するコードおよびルーチンである。例えば頻度モジュール206は、学習パラメータセットを変換モジュール205から受け取り、その学習パラメータセットに少なくとも部分的に基づき、各目的地についての発生頻度(occurring frequency)を求める。学
習パラメータに関する発生頻度とは、その学習パラメータが発生する頻度である。例えば目的地に関する発生頻度は、ユーザがその目的地を訪れた頻度である(例えばユーザがガソリンスタンドを10回訪れている)。頻度モジュール206は、信号線227を介してバス220に通信可能に結合される。
一実施形態では、頻度モジュール206が1つまたは複数の学習テーブルを生成し、そ
の1つまたは複数の学習テーブル内に学習パラメータセットを配置する。例えば頻度モジュール206は、目的地データなどの学習パラメータセットを学習テーブル内に記憶する。目的地データとは、1つまたは複数の目的地を記述するデータであり、目的地ごとのエントリ(例えば各目的地までの道程の曜日および時刻を示すタイムスタンプデータや、各目的地への方向を示す方向データ等)を記述するデータである。学習テーブルとは、学習パラメータセットを記憶するためのテーブルである。学習テーブル内に記憶されるデータについては、図3を参照しつつ以下でより詳しく説明する。
別の実施形態では、頻度モジュール206が学習パラメータセットを分析し、分析結果を記憶するための1つまたは複数のメトリックテーブルを生成する。例えば頻度モジュール206は、ユーザが訪れたことのある目的地ごとの発生頻度をカウントし、その目的地ごとの発生頻度をメトリックテーブル内に記憶する。図19Bおよび図19Cに、発生頻度を記憶するためのメトリックテーブルの例を示す。メトリックテーブルについては、以下でより詳しく説明する。
さらに別の実施形態では、頻度モジュール206が、全ての目的地の発生頻度に少なくとも部分的に基づいて目的地ごとの発生確率を求め、その発生確率を記憶するためのメトリックテーブルを生成する。目的地に関する発生確率は、目的地が訪れられる確率である。図19Dに、発生確率を記憶するためのメトリックテーブルの一例を示す。
さらに別の実施形態では、頻度モジュール206が、変換モジュール205から受け取る新たな学習パラメータセットに基づいて1つまたは複数のメトリックテーブルおよび/または学習テーブルを更新する。
メトリックテーブルとは、1つまたは複数の学習パラメータに関する1つまたは複数の発生頻度および/または発生確率を記憶するためのテーブルである。例えば、メトリックテーブルは、ユーザが第1の目的地(例えばガソリンスタンド)を5回訪れ、第2の目的地(例えばジム)を20回訪れていることを示すデータを含む。メトリックテーブルは、頻度テーブルおよび確率テーブルのうちの一方である。一実施形態では、メトリックテーブルには、1つまたは複数の他の学習パラメータを条件とした場合の1つまたは複数の目的地に関する1つまたは複数の発生頻度が列挙される。例えばメトリックテーブルは、時間帯が「夜」である場合に、ユーザが第1の目的地(例えばジム)を20回訪れ、第2の目的地(例えばレストラン)を5回訪れていることを示すデータを含む。発生頻度を示すメトリックテーブルを頻度テーブルと呼ぶ。別の実施形態では、メトリックテーブルは、他の学習パラメータについて条件を与えた場合の、目的地に関する発生確率を示すデータを含む。図19Aに、発生確率を示すメトリックテーブルの例を列挙する。発生確率を記憶するメトリックテーブルも同様に確率テーブルと呼ぶ。図19Dに確率テーブルの一例を示す。
一実施形態では、頻度モジュール206が、発生頻度が最も高い2つの目的地をメトリックテーブル(例えば図19Aに示す目的地テーブル「destTable」)から選択する。頻度モジュール206は、その2つの目的地を「自宅」および「職場」としてそれぞれラベル付けする。例えば頻度モジュール206は、発生頻度が最も高い目的地を「自宅」として指定し、発生頻度が2番目に高い目的地を「職場」として指定する。一実施形態では、頻度モジュール206が目的地「職場」、「自宅」または他の任意の目的地ごとに発生頻度を再計算する。別の実施形態では、頻度モジュール206が目的地「職場」、「自宅」または他の任意の目的地ごとに1つまたは複数の発生確率(例えば条件付き確率、結合条件付き確率、結合確率等)を求める。
一実施形態では、頻度モジュール206が学習パラメータセットを分析して、潜在的な
道程の候補セットを求める。例えば頻度モジュール206は、1つまたは複数のメトリックテーブルに少なくとも部分的に基づいて、1つまたは複数の頻度の高い出発地点(例えば発生頻度が最も高い起点の出発地点)および頻度の高い終着地点(例えば発生頻度が最も高い目的地の終着地点)を抽出し、頻度の高い出発地点から頻度の高い終着地点までの道程として候補セットを求める。この候補セットは、目的地までの潜在的な道程に関する、頻度の高い出発地点および頻度の高い終着地点を示すデータを含む。一実施形態では、候補セットは3つの潜在的な道程を含む。
別の実施形態では、頻度モジュール206が起点IDモジュール403から現在の道程データを受け取る。起点IDモジュール403については、図4を参照して以下に説明する。現在の道程データは、出発点の起点識別情報(ID)、出発点の起点位置(例えば経度および緯度)、および道程の出発タイムスタンプ(例えば出発の時間、曜日、日付)を含む。当業者は、現在の道程データが道程に関連する他のデータを含んでもよいことを理解されよう。一実施形態では、頻度モジュールが、現在の道程データを追加の運転者履歴データとして運転者履歴リポジトリ316内に記憶する。
頻度モジュール206は、学習パラメータセットおよび現在の道程データを分析して、1つまたは複数の潜在的な道程を示す推定道程データを生成する。例えば頻度モジュール206は、現在の道程データ(起点IDや起点位置など)に対応する頻度の高い終着地点(例えばその起点位置を条件とした場合の発生頻度が最も高い終着地点)を、1つまたは複数のメトリックテーブルから抽出する。頻度モジュール206は、頻度の高い終着地点を推定目的地として設定する。頻度モジュール206は、現在の道程データおよび推定目的地に少なくとも部分的に基づき、1つまたは複数の潜在的な道程を示す推定道程データを求める。例えば頻度モジュール206は、推定道程データを、現在の道程データ内に含まれる起点位置から推定目的地までの1つまたは複数の潜在的な道程を示すデータとして求める。
推定道程データは、推定目的地に対応して作成される。一実施形態では、推定道程データは潜在的な道程の候補セットを示す。例えば推定道程データは、現在の道程データ内に含まれる起点位置から3つの推定目的地までの3つの潜在的な道程を示す。
メトリックモジュール207は、プロセッサ104によって実行される、潜在的な道程についてのメトリックを決定するコードおよびルーチンである。メトリックモジュール207は、信号線228を介してバス220に通信可能に結合される。メトリック(metric)とは、潜在的な道程を数量的に特徴付けるためのデータである。例えば潜在的な道程についてのメトリックは、ユーザがその潜在的な道程をとりそうな確率である。一実施形態では、潜在的な道程についてのメトリックは、時刻、曜日、起点IDなどの1つまたは複数の可変要素を所与として、ユーザがその潜在的な道程をとる条件付き確率である。潜在的な道程についてのメトリックについては、以下でより詳しく説明する。
一実施形態ではメトリックモジュール207が、所要時間モジュール407からの潜在的な道程に関する道程所要時間データ、方向モジュール405からの道程に関する方向を示す方向データ、およびPOIタイプモジュール409からの、潜在的な各道程の目的地ごとのPOIタイプ(例えば自宅、職場、ガソリンスタンド、レストラン、ホテル等)などのうちの1つまたは複数を受け取る。所要時間モジュール407、方向モジュール405、およびPOIタイプモジュール409については図4を参照して以下に説明する。
メトリックモジュール207は、道程所要時間データ、方向データ、POIタイプデータ、時刻、年の週、曜日、起点(例えば出発点)などの、1つまたは複数の潜在的な道程に関連する1つまたは複数の可変要素に少なくとも部分的に基づいて、潜在的な道程ごと
にメトリックを決定する。一実施形態では、メトリックモジュール207は、1つまたは複数の過去の道程における起点など、1つまたは複数の過去の道程に関連する1つまたは複数の可変要素にさらに基づいてメトリックを決定する。例えばメトリックモジュール207は、前回の道程における起点にさらに基づいてメトリックを決定する。
一実施形態では、メトリックモジュール207は、潜在的な道程のメトリックを決定するためにメトリック推定ネットワークを適用する。メトリック推定ネットワークとは、メトリックを推定するためのネットワークである。例えば、メトリック推定ネットワークはベイジアンネットワークである。一実施形態では、メトリック推定ネットワークが上述の可変要素間の関連性を示す。図17Aおよび図17Bにメトリック推定ネットワークの例を示す。一実施形態では、メトリック推定ネットワークによって含められる関連性が、メトリックテーブル内に記憶される発生確率(例えば条件付き確率、結合条件付き確率等)および/または発生頻度によって示される。一実施形態では上述の可変要素の1つまたは複数を所与として、メトリックモジュール207が、潜在的な各道程のメトリックを潜在的な道程内に含まれる目的地に関する結合条件付き確率として決定する。
例えば、図17Bに示すメトリック推定ネットワークを今度は参照して、潜在的な道程内に含まれる所与の目的地、方向、時刻、および曜日について、メトリックモジュール207は、(1)第1のメトリックテーブル(例えば図19Aに示す「destTable」)から
目的地の確率(「p(D)」として示す)を取得し、(2)第2のメトリックテーブル(例えば図19Aに示す「dirTable」)から、目的地を所与とした方向の条件付き確率(「p(dir|D)」として示す)を取得し、(3)第3のメトリックテーブル(例えば図19Aに示す「todTable」)から、目的地を所与とした時刻の条件付き確率(「p(tod|D)」として示す)を取得し、(4)第4のメトリックテーブル(例えば図19Aに示す「dowTable」)から、目的地を所与とした曜日の条件付き確率(「p(dow|D)」として示す)を取得する。
メトリックモジュール207は、目的地までの潜在的な道程に関するメトリックを、方向、時刻、および曜日を所与とした目的地の結合条件付き確率(「p(D|dir,tod,dow)」として示す)として計算する。例えばメトリックモジュール207は、以下に示す結合条件付き確率「p(D|dir,tod,dow)」としてメトリックを計算する。
p(D|dir,tod,dow)∝p(D)×p(dir|D)×p(tod|D)×p(dow|D)
上記の数式は、潜在的な道程のメトリックを決定するための最低限の実現方法である。この最低限の実現方法は複雑なメトリック推定ネットワークを用いる実現方法よりも精度は低いが、計算に最小数の可変要素しか用いないので空間効率および時間効率が良い。
他の実施形態では、メトリックモジュール207が、図17Aに示すネットワークなどの複雑なメトリック推定ネットワークを使用してメトリックを決定する。例えばメトリックモジュール207は、図17Aに示す全ての可変要素を含む確率、条件付き確率、および結合条件付き確率に基づいて目的地までの潜在的な道程のメトリックを計算する。全ての可変要素を含む確率、条件付き確率、および結合条件付き確率が、図19Aに列挙するメトリックテーブルからそれぞれ取得される。
一実施形態では、メトリックモジュール207が現状データセットを受け取る。この現状データセットは、上記に記載した現在の道程データ、車両の現在位置(例えば現在位置の経度および緯度)、現在の道程についての現在の予測ルート、車両が位置する現在の道路、および現在時刻のうちの1つまたは複数を含む。一実施形態では、メトリックモジュール207が、現在の道程データを起点IDモジュール403から受け取り、現在位置、現在の予測ルート、現在の道路、および現在時刻をGPS110から受け取る。
メトリックモジュール207は、推定道程データを頻度モジュール206から受け取る。メトリックモジュール207は推定道程データおよび現状データセットを分析して、推定道程データに関連する1つまたは複数のメトリックを求める。例えばメトリックモジュール207は、上記に記載したようなメトリック推定ネットワークを使用して、推定道程データが示す1つまたは複数の潜在的な道程に関連する1つまたは複数のメトリックを求める。
一実施形態では、メトリックモジュール207が、1つまたは複数の潜在的な道程に関する1つまたは複数のメトリックを品質モジュール209に送る。別の実施形態では、メトリックモジュール207が1つまたは複数のメトリックを記憶装置118内に記憶する。
一実施形態では、メトリックモジュール207は、1つまたは複数のメトリックのいずれかが異常状態に関係しているかどうかを判定する。異常状態の例には、目的地の確率が1を超えること、目的地の確率がゼロを下回ること、全てのメトリックがゼロ値を有すること、および全てのメトリックが未定値を有すること等が含まれるがこれだけに限定されない。
異常状態が検出されると、メトリックモジュール207はその異常状態に関係するナビゲーション上の勧告を決定する。例えばメトリックモジュール207は、異常状態を検出する場合、ナビゲーションシステム102を再始動させることに決める。ナビゲーション上の勧告の例には、異常状態を無視すること、異常状態に関連する潜在的な道程を候補セットから削除すること、目的地を入力するようにユーザに要求すること、およびナビゲーションシステム102をリセットすること等が含まれるがこれだけに限定されない。
メトリックモジュール207は、ナビゲーション上の勧告を出力モジュール211に送り、出力モジュール211にそのナビゲーション上の勧告をユーザに向けて提示させる。一実施形態では、ユーザがメトリックモジュール207に入力を行い、メトリックモジュール207にその入力に基づいた動作を実行させる。例えば、ユーザが異常状態を無視するように入力を行う場合、メトリックモジュール207は異常状態を無視する。
品質モジュール209は、プロセッサ104によって実行される、1つまたは複数の潜在的な道程に関する1つまたは複数の品質スコアを決定するコードおよびルーチンである。品質スコアとは、潜在的な道程を評価するためのデータである。潜在的な道程の品質スコアがより高いことは、ユーザがその潜在的な道程をとる可能性がより高いことを示す。一実施形態では、様々な品質スコアが様々な潜在的な道程に関連付けられる。品質モジュール209は、信号線230を介してバス220に通信可能に結合される。
一実施形態では、品質モジュール209が1つまたは複数の潜在的な道程に関連するメトリックをメトリックモジュール207から受け取る。品質モジュール209は、その1つまたは複数のメトリックに少なくとも部分的に基づいて、1つまたは複数の潜在的な道程に関する1つまたは複数の品質スコアを決定する。例えば、第1の潜在的な道程に関連する第1のメトリックが、第2の潜在的な道程に関連する第2のメトリックよりも大きい場合、品質モジュール209は第1の潜在的な道程の第1の品質スコアを第2の潜在的な道程の第2の品質スコアよりも大きいものとして生成する。
一実施形態では品質モジュール209が、1つまたは複数の潜在的な道程を1つまたは複数の関連する品質スコアに少なくとも部分的に基づいて順序付ける。例えば品質モジュール209は、より高い品質スコアを有する潜在的な道程が、より低い品質スコアを有する潜在的な道程の前に来るように1つまたは複数の潜在的な道程を順序付ける。
品質モジュール209は、1つまたは複数の潜在的な道程および関連する品質スコアを出力モジュール211に送り、出力モジュール211にその1つまたは複数の潜在的な道程および品質スコアをユーザに向けて提示させる。例えば品質モジュール209は、最も高い品質スコアを有する3つの潜在的な道程を出力モジュール211に送り、出力モジュール211にその3つの潜在的な道程および関連する品質スコアをディスプレイ160によって提示させる。
概要(summary)モジュール210は、プロセッサ104によって実行される、道程の
状態概要(status summary)および推定概要(estimated summary)のうちの1つまたは
複数を決定するコードおよびルーチンである。概要モジュール210は、信号線231を介してバス220に通信可能に結合される。一実施形態では、概要モジュール210がGPS110からデータ(例えば位置データ、タイムスタンプデータ、現在の道程に関する道程データ等)を受け取り、道程の状態概要を決定する。
状態概要とは、道程の現況を要約するデータである。例えば、状態概要には、車両の現在位置および経過した道程時間のうちの1つまたは複数が含まれる。一実施形態では、経過した道程時間をディスプレイ160上に表示する。一実施形態では、状態概要には、起点IDモジュール403および/またはGPS110から受け取られる現状データ(例えば現在の道程データ、現在位置、現在の予測ルート、現在時刻等)がさらに含まれる。
一実施形態では、概要モジュール210が学習システム112および/または推定システム114のコンポーネントからデータを受け取る。例えば概要モジュール210は、1つまたは複数の潜在的な道程に関して、頻度モジュール206から推定道程データを受け取り、メトリックモジュール207から1つまたは複数のメトリックを受け取り、品質モジュール209から1つまたは複数の品質スコアを受け取り、所要時間モジュール407から1つまたは複数の道程所要時間を受け取る。当業者は、概要モジュール210がシステム100の他のエンティティ(例えば検索サーバ124)から他のデータ(例えば検索結果)を受け取ってもよいことを理解されよう。
概要モジュール210は、現在の道程データ、現状データ、ならびに学習システム112および/または推定システム114のコンポーネントから受け取るデータ(例えばメトリック、品質スコア等)のうちの1つまたは複数に少なくとも部分的に基づいて、潜在的な道程ごとに推定概要を求める。推定概要とは、潜在的な道程の推定状態を要約するデータである。例えば、潜在的な道程に関する推定概要には、潜在的な道程の推定目的地、目的地までの推定ルート、推定到着時間、潜在的な道程に関連するメトリック、および潜在的な道程に関連する品質スコア等が含まれる。当業者は、推定概要が潜在的な道程に関連する他の任意のデータを含み得ることを理解されよう。
一実施形態では、概要モジュール210が、1つまたは複数の状態概要および1つまたは複数の推定概要を推定道程データに関連付ける。例えば概要モジュール210は、潜在的な各道程の状態概要および推定概要を、潜在的な道程を示す推定道程データに関連付ける。概要モジュール210は、推定道程データ、状態概要、および推定概要の1つまたは複数を出力モジュール211に送る。
出力モジュール211は、プロセッサ104によって実行される、ディスプレイ160、学習システム112、および推定システム114のうちの1つまたは複数にデータを出力するコードおよびルーチンである。出力モジュール211は、信号線232を介してバスに通信可能に結合される。一実施形態では、出力モジュール211がナビゲーション上の勧告をメトリックモジュール207から受け取り、そのナビゲーション上の勧告をディ
スプレイ160上でユーザに向けて示す表示データを出力する。別の実施形態では、出力モジュール211が1つまたは複数の潜在的な道程および関連する品質スコアを品質モジュール209から受け取り、その潜在的な道程および品質スコアを、学習システム112およびディスプレイ160の1つまたは複数に出力する。
一実施形態では、出力モジュール211が推定道程データ、1つまたは複数の状態概要、および1つまたは複数の推定概要を概要モジュール210から受け取り、それらの推定道程データ、1つまたは複数の状態概要、および1つまたは複数の推定概要をディスプレイ160上に示すための表示データを出力する。別の実施形態では、出力モジュール211がGUIを提供するためのグラフィカルデータをGUIモジュール215から受け取り、そのGUIをディスプレイ160上に示すグラフィカルデータを出力する。当業者は、出力モジュール211が本明細書に記載の他の任意の機能を実行してもよいことを理解されよう。
履歴モジュール213は、プロセッサ104によって実行される、現在の道程を示すデータのログを取るコードおよびルーチンである。例えば履歴モジュール213は、現在の道程の終りをモニタする。履歴モジュール213が現在の道程の終りを検出すると、履歴モジュール213は現在の道程を示すデータ(例えば到着の時間/曜日/日付、出発の時間/曜日/日付、出発点、終着点、道程所要時間等)を集め、そのデータを運転者履歴リポジトリ316内に記憶する。履歴モジュール213は、信号線234を介してバス220に通信可能に結合される。
GUIモジュール215は、プロセッサ104によって実行される、ユーザにGUIを提供するためのグラフィカルデータを生成するコードおよびルーチンである。GUIモジュール215は、信号線236を介してバス220に通信可能に結合される。一実施形態では、GUIモジュール215は、ユーザがシステム100と対話できるようにするGUIを示すためのグラフィカルデータを生成する。例えばGUIモジュール215は、ソーシャルネットワークアプリケーション122によって提供されるソーシャルネットワーク上でユーザが道程を共有できるようにする「共有」ボタンを含むGUIを示すためのグラフィカルデータを生成する。別の実施形態では、GUIモジュール215が、1つまたは複数の潜在的な道程に関連する1つまたは複数の品質スコアを品質モジュール209から受け取り、品質スコアおよび潜在的な道程をユーザに提示するGUIを提供するためのグラフィカルデータを生成する。当業者は、GUIモジュール215が本明細書に記載の機能を提供するための他の任意のグラフィカルデータを生成し得ることを理解されよう。
一実施形態では、GUIモジュール215はグラフィカルデータをディスプレイ160に送り、ディスプレイ160にGUIをユーザに向けて提示させる。別の実施形態では、GUIモジュール215はグラフィカルデータを出力モジュール211に送り、出力モジュール211にデータをディスプレイ160上に提示させる。
次に図5を参照して、別の実施形態による学習システム112のブロック図を示す。図示の実施形態では、学習システム112は、第1の通信モジュール201、運転履歴モジュール203、変換モジュール205、頻度モジュール206、メトリックモジュール207、品質モジュール209、概要モジュール210、出力モジュール211、履歴モジュール213、GUIモジュール215、起点IDモジュール403、方向モジュール405、所要時間モジュール407、およびPOIタイプモジュール409を含む。起点IDモジュール403は、クラスタモジュール404を含む。第1の通信モジュール201、運転履歴モジュール203、変換モジュール205、頻度モジュール206、メトリックモジュール207、品質モジュール209、概要モジュール210、出力モジュール211、履歴モジュール213、およびGUIモジュール215については上記に記載して
いる。ここでは説明を繰り返さない。起点IDモジュール403、クラスタモジュール404、方向モジュール405、所要時間モジュール407、およびPOIタイプモジュール409については、図4を参照して以下に説明する。
記憶装置
次に図3を参照して、記憶装置118をより詳細に示す。図3は、一実施形態による記憶装置118を示すブロック図である。記憶装置118は、学習テーブルデータ301、運転者履歴リポジトリ316、学習パラメータ319、メトリック推定ネットワーク321、勧告データ323、クラスタデータ325、メトリックテーブルデータ327、GPSログ333、グループデータ337、精度データ341、および終着点データ343を含む。当業者は、記憶装置118が本明細書に記載の機能を提供するための他の任意のデータを記憶し得ることを理解されよう。
学習テーブルデータ301は、1つまたは複数の学習テーブルを構築するためのデータである。一実施形態では、学習テーブルデータ301は、1つまたは複数の学習テーブル内に配置される1つまたは複数の学習パラメータを示すデータである。図示の実施形態では、学習テーブルデータ301は、出発点303、出発データ305、方向データ307、所要時間データ309、終着点311、到着データ313、およびPOIデータ315を含む。場合により、学習テーブルデータ301は運転者履歴データ317を含んでもよい。当業者は、学習テーブルデータ301が本明細書に記載の機能を提供するための他の任意のデータを含み得ることを理解されよう。
出発点303は、1つまたは複数の道程に関する1つまたは複数の出発点を示す位置データを含む。例えば出発点303は、1つまたは複数の道程の、1つまたは複数の出発点の経度および緯度を示すデータを含む。一実施形態では、出発点303は、1つまたは複数の出発地点に関する1つまたは複数の起点IDを示すデータを含む。
出発データ305は、道程における出発を示すデータである。例えば出発データ305は、出発時間(例えば2:00:00pm)、出発の曜日(例えば月曜日)、出発の日付(例えば2011年11月21日)、および年の週のうちの1つまたは複数を示すタイムスタンプデータを含む。一実施形態では、出発データ305は、出発時間(例えば深夜、朝、昼、午後、または夜)および出発の曜日(例えば平日または週末)のうちの1つまたは複数を示す変換済みデータを含む。
方向データ307は、道程の方向を示すデータである。例えば方向データ307は、道程の方向が南、南東、東、北東、北、北西、西、および南西のうちの1つであることを示すデータを含む。
所要時間データ309は、道程の所要時間を示すデータである。例えば所要時間データ309は、ユーザが過去の道程に10分かけたことを示すデータを含む。一実施形態では、所要時間データ309は、道程の所要時間を示す変換済みデータ(例えば短い、中位、および長い等)を含む。
終着点311は、1つまたは複数の道程に関する1つまたは複数の終着点を示す位置データを含む。例えば終着点311は、1つまたは複数の道程の、1つまたは複数の終着点の経度および緯度を示すデータを含む。一実施形態では、終着点311は、1つまたは複数の終着点に関する1つまたは複数の目的地IDを示すデータを含む。
到着データ313は、道程における目的地に到着することを示すデータである。例えば到着データ313は、到着時間(例えば3:00:00pm)、到着の曜日(例えば月曜
日)、到着の日付(例えば2011年11月21日)、および到着時の年の週のうちの1つまたは複数を示すタイムスタンプデータを含む。一実施形態では、到着データ313は、到着時間(例えば深夜、朝、昼、午後、または夜)および到着の曜日(例えば平日または週末)のうちの1つまたは複数を示す変換済みデータを含む。
POIデータ315は、目的地の関心地点を示すデータである。例えばPOIデータ315は、目的地が「自宅」、「職場」および「その他」のうちの1つであることを示す。一実施形態では、「その他」の目的地には、「ガソリンスタンド」、「コーヒーショップ」、「レストラン」など、「自宅」および「職場」の目的地を除く他の全ての目的地のうちの1つが含まれる。
運転者履歴データ317とは、ユーザ(例えば運転者)の運転履歴を示すデータである。例えば運転者履歴データ317には、運転者がとった1つまたは複数の過去の道程を示すデータが含まれる。一実施形態では、運転者履歴データ317には、出発点、出発データ(例えば出発時間および曜日等)、方向データ、所要時間データ、終着点、到着データ(例えば到着時間および曜日等)、終着点のPOIデータ等のうちの1つまたは複数など、1つまたは複数の過去の道程を示す変換されていないデータ(例えば変換モジュール205によって変換が行われる前のデータ)が含まれる。運転者履歴データ317は、一実施形態では学習テーブルデータ301内に記憶される一方で、別の実施形態では運転者履歴リポジトリ316内に記憶されることを示すために破線を使って図示する。
運転者履歴リポジトリ316は、データを記憶するためのコンテナである。例えば運転者履歴リポジトリ316は、運転者履歴データ317を記憶するためのコンテナである。
学習パラメータ319は、1つまたは複数の道程からの学習パラメータセットを示すデータを含む。一実施形態では学習パラメータ319は、変換モジュール205からの変換済みの運転者履歴データを含む。別の実施形態では、学習パラメータ319は変換されていない運転者履歴データを含む。当業者は、学習パラメータ319が、学習パラメータに関連する他の任意のデータを含み得ることを理解されよう。
メトリック推定ネットワーク321は、1つまたは複数のメトリック推定ネットワークを構築するためのデータを含む。例えばメトリック推定ネットワーク321は、メトリック推定ネットワーク内に含まれる1つまたは複数の可変要素を示すデータ、およびそれらの可変要素間の1つまたは複数の関連性を示すデータを含む。
勧告データ323とは、1つまたは複数のナビゲーション上の勧告を示すデータである。例えば勧告データ323は、1つまたは複数のナビゲーション上の勧告およびその1つまたは複数のナビゲーション上の勧告に関連する異常状態を示すデータを含む。
クラスタデータ325とは、1つまたは複数のクラスタを示すデータである。一実施形態では、クラスタデータ325は既存のクラスタのリストを示すデータを含む。クラスタは、クラスタ中心のクラスタリング範囲内の位置群(例えば出発地点または終着地点)を示すデータを含む。クラスタは、クラスタID、クラスタリング範囲、およびクラスタ中心によって示される。クラスタ、クラスタリング範囲、およびクラスタ中心については図4を参照して以下に説明する。
メトリックテーブルデータ327とは、1つまたは複数のメトリックテーブルを構築するためのデータである。例えばメトリックテーブルデータ327は、1つまたは複数のメトリックテーブル内に記憶されるデータを含む。一実施形態では、メトリックテーブルデータ327は頻度データ329および確率データ331を含む。
頻度データ329とは、1つまたは複数の学習パラメータに関する1つまたは複数の発生頻度を示すデータである。例えば頻度データ329は、1つまたは複数の目的地に関する1つまたは複数の発生頻度を示すデータを含む。一実施形態では頻度データ329は、1つまたは複数の他の学習パラメータを条件に、1つまたは複数の目的地に関する1つまたは複数の発生頻度を示すデータを含む。例えば頻度データ329は、所与の時刻における1つまたは複数の目的地に関する1つまたは複数の発生頻度を示すデータを含む。
確率データ331とは、1つまたは複数の学習パラメータに関する1つまたは複数の発生確率を示すデータである。例えば確率データ331は、1つまたは複数の目的地に関する1つまたは複数の発生確率を示すデータを含む。一実施形態では確率データ331は、1つまたは複数の他の学習パラメータを条件に、1つまたは複数の目的地に関する1つまたは複数の発生確率を示すデータを含む。例えば確率データ331は、所与の時刻における1つまたは複数の目的地に関する1つまたは複数の発生確率を示すデータを含む。
GPSログ333は、GPS110が生成するデータを記憶するログである。例えばGPSログ333は、GPSデータ335を記憶する。GPSデータ335は、GPS110が生成するデータである。一実施形態では、GPSデータ335は、GPS110が生成するデータストリームを含む。このデータストリームは1つまたは複数のデータ要素を含み、各データ要素は、走行車両の位置を示す地理的位置および走行車両がその地理的位置にある時間を示すタイムスタンプを含む。
グループデータ337は、履歴データ要素の、1つまたは複数のグループを示すデータである。例えばグループデータ337は、1つまたは複数の履歴データ要素339を含むグループを示すデータである。履歴データ要素とは、過去の道程から得られるデータ要素である。例えば履歴データ要素は、走行車両の過去の地理的位置(例えば過去の道程の地理的位置)、および走行車両が過去の道程において過去の地理的位置にあったときの過去のタイムスタンプを含む。グループデータ337については、図7に関して以下でより詳しく説明する。
精度データ341は、GPS110の既知の精度を示すデータである。例えば精度データ341は、GPS110の精度が平均10メートルの誤差範囲内にあることを示す。精度データ341については、図7に関して以下でより詳しく説明する。
終着点データ343は、1つまたは複数の道程最終目的地点を示すデータである。一実施形態では終着点データ343は、それぞれの道程最終目的地点がスコア閾値を上回る終着点スコアに関連する、道程最終目的地点を示すデータを含む。道程最終目的地点、終着点スコア、およびスコア閾値については図7に関して以下に説明する。
推定システム
図4は、一実施形態による推定システム114を示すブロック図である。推定システム114は、第2の通信モジュール401、起点IDモジュール403、方向モジュール405、所要時間モジュール407、およびPOIタイプモジュール409を含む。場合により、推定システム114は、頻度モジュール206、メトリックモジュール207、品質モジュール209、概要モジュール210、出力モジュール211、および履歴モジュール213を含んでもよい。推定システム114は、バス220を介してプロセッサ104および/または記憶装置118と通信する。
第2の通信モジュール401は、推定システム114のコンポーネントとシステム100の他のコンポーネントとの間の通信を処理するためのコードおよびルーチンである。例
えば第2の通信モジュール401は、システム100の他のコンポーネント(例えば学習システム112、GPS110等)からデータを受け取り、そのデータを推定システム114のコンポーネント(例えば起点IDモジュール403等)に送る。第2の通信モジュール401は、信号線422を介してバス220に通信可能に結合される。一実施形態では、第2の通信モジュール401は、推定システム114のコンポーネント間の通信も処理する。例えば第2の通信モジュール401は、メトリックモジュール207から1つまたは複数のメトリックを受け取り、その1つまたは複数のメトリックを品質モジュール209に送る。
一実施形態では、第2の通信モジュール401がGPS110からデータ(例えば位置データ、タイムスタンプデータ等)を受け取り、そのデータを推定システム114のコンポーネント(例えば起点IDモジュール403、方向モジュール405等)に送る。当業者は、第2の通信モジュール401が本明細書に記載の他の機能を提供してもよいことを理解されよう。
起点IDモジュール403は、プロセッサ104によって実行される、道程に関する現在の道程データを求めるコードおよびルーチンである。起点IDモジュール403は、信号線424を介してバス220に通信可能に結合される。一実施形態では、起点IDモジュール403が、道程の出発点を示す位置データ、ならびに出発時間、出発の曜日、および出発の日付の1つまたは複数を含む出発タイムスタンプを示すタイムスタンプデータをGPS110から受け取る。起点IDモジュール403は、道程に関する起点ID、出発地点、および出発タイムスタンプの1つまたは複数を含む現在の道程データを求める。出発点の起点IDについては以下でより詳しく説明する。起点IDモジュール403は、現在の道程データを頻度モジュール206および概要モジュール210の1つまたは複数に送る。一実施形態では、起点IDモジュール403が現在の道程データを記憶装置118内に記憶する。
起点IDモジュール403は、クラスタモジュール404を含む。クラスタモジュール404は、プロセッサ104によって実行される、出発地点などの場所(位置)がどのクラスタに属するかを決定するコードおよびルーチンである。一実施形態ではクラスタモジュール404が、以下に記載するように出発地点(例えば道程の出発点)が属するクラスタを決定する。クラスタモジュール404は、クラスタのクラスタリング範囲を決定する。クラスタリング範囲とは、クラスタ中心からの所定の距離(例えば200メートル)であり、その範囲内では全ての位置がクラスタ中心に関連するクラスタに割り当てられる。クラスタ中心とは、クラスタの中心である。
クラスタモジュール404は、既存のクラスタのリストを示すクラスタデータを記憶装置118から取得する。クラスタモジュール404は、リストが空かどうかを判定する。リストが空の場合、クラスタモジュール404は新たなクラスタを生成し、その新たなクラスタをリストに追加する。クラスタモジュール404は、新たなクラスタ用のクラスタIDを作成し、新たなクラスタに出発地点を割り当てる。例えばクラスタモジュール404は、出発地点の起点IDとしてクラスタIDを割り当てる。
あるいはリストが空でない場合、クラスタモジュール404は出発地点をリスト内に含まれる各クラスタと比較し、その出発地点がいずれかのクラスタのクラスタリング範囲内にあるかどうかを判定する。出発地点がどのクラスタのクラスタリング範囲内にもない場合、クラスタモジュール404は新たなクラスタを生成し、クラスタIDをその新たなクラスタに割り当てる。クラスタモジュール404は、出発地点を新たなクラスタに追加し、出発地点の起点IDとしてクラスタIDを割り当てる。出発地点が既存のクラスタのクラスタリング範囲内にある場合、クラスタモジュール404は出発地点を既存のクラスタ
に追加し、出発地点の起点IDとして既存のクラスタのクラスタIDを割り当てる。
一実施形態ではクラスタモジュール404が、出発地点をクラスタに追加した後、クラスタのクラスタ中心を更新する。例えばクラスタモジュール404は、クラスタ内に含まれる全ての位置に少なくとも部分的に基づいてクラスタのクラスタ中心を再計算する。クラスタモジュール404はクラスタのリストを更新し、更新したリストを記憶装置118内に記憶する。一実施形態では、クラスタモジュール404がクラスタ内の道程の到着地点(例えば終着点)を取り決め、クラスタ内の出発地点を取り決めるための上述の操作と同様の操作を実行することにより、到着地点の目的地IDとしてクラスタIDを割り当てる。
方向モジュール405は、プロセッサ104によって実行される、道程の方向を求めるコードおよびルーチンである。方向モジュール405は、信号線426を介してバス220に通信可能に結合される。例えば方向モジュール405は、GPS110のタイムスタンプジェネレータ217から現在時刻を受け取り、起点IDモジュール403から現在の道程データを受け取る。方向モジュール405は、現在時刻および現在の道程データの1つまたは複数に少なくとも部分的に基づいて道程の方向を推定する。一実施形態では、方向モジュール405が運転者履歴データを記憶装置118から取得し、その運転者履歴データにさらに基づいて道程の方向を推定する。別の実施形態では、方向モジュール405が、1つまたは複数の方向に関連する1つまたは複数のメトリックテーブルにさらに基づいて道程の方向を推定する。
一実施形態では、方向モジュール405が方向を示す方向データをメトリックモジュール207に送る。別の実施形態では、方向モジュール405が方向データを変換モジュール205に送る。変換モジュール205は、上記に記載したように方向データを変換し、変換済みの方向データをメトリックモジュール207に送る。
所要時間モジュール407は、プロセッサ104によって実行される、道程の所要時間を推定するコードおよびルーチンである。所要時間モジュール407は、信号線428を介してバス220に通信可能に結合される。一実施形態では所要時間モジュール407が、タイムスタンプジェネレータ217から現在時刻を示すタイムスタンプデータを受け取り、起点IDモジュール403から現在の道程データを受け取る。所要時間モジュール407は、現在時刻および現在の道程データの1つまたは複数に少なくとも部分的に基づいて道程の所要時間を推定する。一実施形態では、所要時間モジュール407が運転者履歴データを記憶装置118から取得し、その運転者履歴データにさらに基づいて道程の所要時間を推定する。別の実施形態では、所要時間モジュール407が、1つまたは複数の所要時間に関連する1つまたは複数のメトリックテーブルにさらに基づいて道程の所要時間を推定する。
一実施形態では、所要時間モジュール407が道程の所要時間を示す道程所要時間データをメトリックモジュール207に送る。別の実施形態では、所要時間モジュール407が道程所要時間データを変換モジュール205に送る。変換モジュール205は、道程所要時間データを不均一区分へと変換し、変換済みの道程所要時間データをメトリックモジュール207に送る。
POIタイプモジュール409は、プロセッサ104によって実行される、道程の目的地のPOIのタイプを求めるコードおよびルーチンである。POIタイプモジュール409は、信号線430を介してバス220に通信可能に結合される。一実施形態では、POIタイプモジュール409が、タイムスタンプジェネレータ217から現在時刻を示すタイムスタンプデータを受け取り、起点IDモジュール403から現在の道程データを受け
取る。POIタイプモジュール409は、現在時刻および現在の道程データの1つまたは複数に少なくとも部分的に基づいて道程のPOIタイプを推定する。一実施形態では、POIタイプモジュール409が運転者履歴データを記憶装置118から取得し、その運転者履歴データにさらに基づいて道程のPOIタイプを推定する。別の実施形態では、POIタイプモジュール409が、目的地のPOIタイプに関連する1つまたは複数のメトリックテーブルにさらに基づいて道程のPOIタイプを推定する。一実施形態では、POIタイプモジュール409が目的地の推定POIタイプを示すデータをメトリックモジュール207に送る。
忘却モジュール
図6は、一実施形態による忘却モジュール116を示すブロック図である。忘却モジュール116は、第3の通信モジュール601、モニタモジュール603、決定モジュール605、および削除モジュール607を含む。忘却モジュール116のこれらのコンポーネントは、バス220を介して互いに通信可能に結合される。忘却モジュール116は、バス220を介してプロセッサ104、記憶装置118、およびナビゲーションシステム102の他のコンポーネントに通信可能に結合される。
第3の通信モジュール601は、忘却モジュール116のコンポーネントとシステム100の他のコンポーネントとの間の通信を処理するためのコードおよびルーチンである。例えば第3の通信モジュール601は、システム100の他のコンポーネント(例えば学習システム112、GPS110等)からデータを受け取り、そのデータを忘却モジュール116のコンポーネント(例えばモニタモジュール603、決定モジュール605等)に送る。第3の通信モジュール601は、信号線622を介してバス220に通信可能に結合される。一実施形態では、第3の通信モジュール601は、忘却モジュール116のコンポーネント間の通信も処理する。例えば第3の通信モジュール601は、モニタモジュール603から1つまたは複数のトリガイベントを受け取り、その1つまたは複数のトリガイベントを決定モジュール605に送る。
一実施形態では、第3の通信モジュール601が記憶装置118からデータ(例えば学習パラメータ、運転者履歴データ等)を取得し、そのデータを忘却モジュール116のコンポーネント(例えば削除モジュール607)に送る。当業者は、第3の通信モジュール601が本明細書に記載の他の機能を提供してもよいことを理解されよう。
モニタモジュール603は、プロセッサ104によって実行される、トリガイベントを検出するコードおよびルーチンである。一実施形態ではモニタモジュール603が、何らかのトリガイベントがないかどうか、ナビゲーションシステム102をモニタする。モニタモジュール603は、トリガイベントが発生する場合にトリガイベントを検出する。モニタモジュール603は、トリガイベントを示すイベントデータを決定モジュール605に送る。モニタモジュール603は、信号線624を介してバス220に通信可能に結合される。
トリガイベントとは、メモリ内のデータ削除を引き起こすイベントである。例えばトリガイベントは、工場出荷時リセット入力、記憶された1つまたは複数の目的地を削除するユーザ要求、最後のトリガイベントから所定の期間が経過すること、所定の閾値を上回る多数の目的地がメモリ内に記憶されること、および最後のトリガイベント以降に所定数の道程が発生することのうちの1つである。
決定モジュール605は、プロセッサ104によって実行される、メモリから削除するデータを決定するコードおよびルーチンである。例えば決定モジュール605は、以下に記載するように、メモリ(例えば記憶装置118)から削除するための学習パラメータセ
ットを、トリガイベントを検出することおよびそのトリガイベントの分類に少なくとも部分的に基づいて決定する。決定モジュール605は、信号線626を介してバス220に通信可能に結合される。
一実施形態では、メモリから削除するデータは、1つまたは複数の目的地に関連するデータである。例えば削除するデータは、1つまたは複数の学習テーブル内に記憶される1つまたは複数の目的地を示す目的地データ、および学習テーブル内の1つまたは複数の目的地に関する記述エントリが含まれる、1つまたは複数の目的地に関連する学習パラメータセットである。記述エントリには、例えば目的地までの道程に関する曜日、時刻、および日付を示すタイムスタンプデータ、道程の所要時間を示す道程所要時間データ、ならびに目的地への方向を示す方向データ等が含まれる。別の実施形態では、削除するデータには、1つまたは複数の目的地までの1つまたは複数の道程に関連する学習パラメータセットおよび運転者履歴データ、ならびに1つまたは複数の目的地に関連する1つまたは複数のメトリックテーブル内に記憶されるデータが含まれる。さらに別の実施形態では、トリガイベントが工場出荷時リセット入力の場合、削除するデータは全ての目的地に関連する全てのデータである。
一実施形態では、決定モジュール605がトリガイベントを示すイベントデータをモニタモジュール603から受け取り、そのトリガイベントの分類を決定する。例えば決定モジュール605は、トリガイベントが工場出荷時リセット入力か、それとも他のトリガイベントかを判定する。トリガイベントが工場出荷時リセット入力の場合、決定モジュール605はリセット信号を生成し、そのリセット信号を削除モジュール607に送る。一実施形態では、トリガイベントの分類は、工場出荷時リセット入力および1つまたは複数の目的地を削除するユーザ要求などの上記に記載した他の任意のトリガイベントのうちの1つである。
トリガイベントが工場出荷時リセット入力ではない場合、決定モジュール605はナビゲーションシステム102に関連するメモリを問い合わせて、ナビゲーションシステム102内のメモリの空き容量が閾値を下回るかどうかを判定する。例えば決定モジュール605は、記憶装置118内の記憶空間の空きが閾値を下回るかどうかを判定する。一実施形態では、その閾値はナビゲーションシステム102の管理者が設定する。メモリの空き容量が閾値を下回らない場合、決定モジュール605はメモリからデータを一切削除しないことに決め、キャンセル信号を削除モジュール607に送る。メモリの空き容量が閾値を下回る場合、決定モジュール605は以下に記載するように1つまたは複数の目的地を選択し、それにより、その1つまたは複数の被選択目的地に関連するデータが削除モジュール607によって削除される。一実施形態では決定モジュール605は、メモリの空き容量が閾値を下回るかどうかに関係なく1つまたは複数の目的地に関連するデータを削除することに決める。決定モジュール605は、データを削除するために、被選択目的地の1つまたは複数の識別情報を削除モジュール607に送る。
一実施形態では決定モジュール605は、ユーザが訪れた全ての目的地を各目的地への最後の訪問に関するタイムスタンプに応じて順序付ける。例えば決定モジュール605は、より古いタイムスタンプを有する第1の目的地が、より最近のタイムスタンプを有する第2の目的地の前に来るように第1のキューの中の全ての目的地を順序付ける。次に決定モジュール605は、目的地ごとの発生頻度に応じて全ての目的地を順序付ける。例えば決定モジュール605は、より低い発生頻度を有する第1の目的地が、より高い発生頻度を有する第2の目的地の前に来るように第2のキューの中の全ての目的地を順序付ける。
決定モジュール605は、目的地の順序付けに少なくとも部分的に基づいて削除候補の目的地を決定する。例えば決定モジュール605は、タイムスタンプが古いものからいく
つかの第1の目的地(例えば最後の訪問のタイムスタンプが最も古いものから20個の目的地)を第1のキューから選択し、発生頻度が低いものからいくつかの第2の目的地(例えば最も訪れていないものから20個の目的地)を第2のキューから選択する。決定モジュール605は、第1の目的地および第2の目的地の両方に含まれる1つまたは複数の目的地として目的地の削除候補を決定する。
一実施形態では、決定モジュール605が削除候補の目的地から1つまたは複数の目的地を無作為に選択し、その1つまたは複数の被選択目的地に関連するデータを削除することに決める。決定モジュール605は、データを削除するために、被選択目的地の1つまたは複数の識別情報を削除モジュール607に送る。
削除モジュール607は、プロセッサ104によって実行される、メモリからデータを削除するコードおよびルーチンである。削除モジュール607は、信号線628を介してバス220に通信可能に結合される。一実施形態では、削除モジュール607がリセット信号を決定モジュール605から受け取り、ナビゲーションシステム102をリセットする。例えば削除モジュール607は、リセット信号を受け取ることに応答して全ての学習パラメータ、学習テーブルデータ、メトリックテーブルデータ、および運転者履歴データ等を記憶装置118から削除する。別の実施形態では、削除モジュール607がキャンセル信号を決定モジュール605から受け取り、キャンセル信号に応答してデータを一切削除しない。
一実施形態では、削除モジュール607が1つまたは複数の被選択目的地の1つまたは複数の識別情報を受け取り、その1つまたは複数の被選択目的地に関連するデータ(例えば1つまたは複数の被選択目的地に関連する学習パラメータ、運転者履歴データ、学習テーブルデータ、メトリックテーブルデータ等)を削除する。
もはや使われていない1つまたは複数の目的地に関連するデータを削除することは、例えばもはや使われていないデータを削除し、他の用途のために記憶空間を節約するので有益である。もはや使われていないデータを削除することは、ナビゲーションシステム102の記憶空間が限られている場合にとりわけ有利である。さらに、もはや使われていないデータを削除することは、メトリックおよび品質スコアの推定に対する古くかつほとんど訪れていない目的地に関連するデータの影響を減らし、その結果潜在的な道程に関する推定の精度を改善する。
終着点モジュール
次に図7を参照して、終着点モジュール150をより詳細に示す。図7は、一実施形態による終着点モジュール150を示すブロック図である。終着点モジュール150は、バス220を介してプロセッサ104、GPS110、学習システム112、記憶装置118、推定システム114、センサ170、およびナビゲーションシステム102の他のコンポーネントと通信可能に結合される。学習システム112は、信号線740を介してバス220に通信可能に結合される。センサ170は、信号線742を介してバス220に通信可能に結合される。終着点モジュール150は、第4の通信モジュール701、停止分類モジュール703、終着点確立モジュール705、報告モジュール707、およびグループモジュール709を含む。
第4の通信モジュール701は、プロセッサ104によって実行される、終着点モジュール150のコンポーネントとシステム100の他のコンポーネントとの間の通信を処理するコードおよびルーチンである。例えば第4の通信モジュール701は、システム100の他のコンポーネント(例えばGPS110等)からデータ(例えばデータストリーム)を受け取り、そのデータを終着点モジュール150のコンポーネント(例えば停止分類
モジュール703等)に送る。第4の通信モジュール701は、信号線722を介してバス220に通信可能に結合される。
一実施形態では、第4の通信モジュール701は、終着点モジュール150のコンポーネント間の通信も処理する。例えば第4の通信モジュール701は、停止分類モジュール703から走行車両の停止の種類(長い停止、中位の停止等)を受け取り、その停止の種類を終着点確立モジュール705に送る。停止の種類については以下により詳しく説明する。
一実施形態では、第4の通信モジュール701が記憶装置118からデータ(例えば精度データ341、グループデータ337等)を取得し、取得したデータを終着点モジュール150のコンポーネント(例えば停止分類モジュール703、グループモジュール709等)に送る。別の実施形態では、第4の通信モジュール701が終着点モジュール150のコンポーネント(例えばグループモジュール709)からデータ(例えば1つまたは複数のデータ要素)を受け取り、そのデータを記憶装置118内に記憶する。当業者は、第4の通信モジュール701が本明細書に記載の他の機能を提供してもよいことを理解されよう。
停止分類モジュール703は、プロセッサ104によって実行される、道程において生じた停止の種類を求めるコードおよびルーチンである。停止分類モジュール703は、信号線724を介してバス220に通信可能に結合される。停止の種類は、システムの準備ができていない停止、長い停止、中位の停止、集配の停止(pickup-and-delivery stop)、および短い停止のうちの1つである。一実施形態では、集配の停止は中位の停止のサブカテゴリである。別の実施形態では、集配の停止は短い停止のサブカテゴリである。当業者は、他の種類の停止も可能であることを理解されよう。
システムの準備ができていない停止とは、車両の「準備未完了」システム状態を伴う停止である。例えばシステムの準備ができていない停止は、燃焼機関がオフの状態にある車両の停止である。別の例として、システムの準備ができていない停止は、イグニションキーを鍵穴から抜いた状態の、道程の目的地での停止である。一実施形態では、「準備未完了」のシステム状態は、エンジンが「オフ」の状態にあるので車両を運転する準備が整っていないことを意味する。一実施形態では、システムの準備ができていない停止は、停止の持続時間(例えば停止時間)が最小閾値(例えば1分)よりも長く、かつ「準備未完了」のシステム状態を伴う停止である。最小閾値は、停止が判定される時間閾値の下限である。例えば最小閾値が10秒だと仮定する。車両が10秒未満停止する場合、その停止は無視される。一実施形態では、最小閾値はナビゲーションシステム102の管理者が決定する。
長い停止とは、停止の持続時間が長い停止の閾値よりも長く、かつ「準備完了」のシステム状態を伴う停止である。長い停止の閾値は、長い停止の時間閾値の下限であり、そのためそれぞれの長い停止は、長い停止の持続時間を上回る停止持続時間を有する。例えば長い停止の閾値が5分の場合、長い停止は、停止の持続時間が5分を超え、かつ車両の「準備完了」システム状態を伴う停止である。一実施形態では、長い停止の閾値はナビゲーションシステム102の管理者が決定する。
車両の「準備完了」システム状態は、その車両を運転する準備が整っていることを意味する。例えば「準備完了」のシステム状態は、燃焼機関が「オン」の状態にあり、車両が走る準備ができていることを意味する。一実施形態では、無線のイグニションキーを用いる車両のエンジンは、物理的なイグニションキーを鍵穴に挿入することなしに、ダッシュボード上のボタンを押すことによって始動する。車両はボタンが押される場合に「準備完
了」のシステム状態に変わり、「準備完了」インジケータがダッシュボード内に示される。
中位の停止とは、停止の持続時間が中位であり、かつ車両の「準備完了」システム状態を伴う停止である。例えば中位の停止は、鉄道での停止、コーヒーショップでのドライブスルーの停止、交通混雑に起因する停止、および信号での停止等である。中位の停止の持続時間は、中位の閾値と長い停止の閾値との間(例えば2分から5分の間)の停止持続時間である。中位の閾値は、中位の停止を定義するための時間閾値の下限である。例えば、中位の閾値は2分である。中位の閾値は最小閾値よりも長く、長い停止の閾値よりも短く、したがって、中位の停止の停止持続時間は長い停止よりも短い。一実施形態では、中位の閾値はナビゲーションシステム102の管理者が決定する。
短い停止とは、停止の持続時間が最小閾値と中位の閾値との間にあり、かつ「準備完了」のシステム状態を伴う停止である。例えば短い停止は、混雑時の遅い車の流れに起因する道路上での停止など、停止の持続時間が10秒から2分の間の停止である。一実施形態では、短い停止は、中位の停止よりも停止の持続時間が短い。
集配の停止とは、車両の「準備完了」システム状態を伴い、かつ停止時における窓および/またはドアの動きを伴う、停止の持続時間が最小閾値と長い停止の閾値との間の停止である。一実施形態では、集配の停止は、窓および/またはドアの開閉など、追加の窓および/またはドアの動きを伴う中位の停止である。別の実施形態では、集配の停止は、追加の窓および/またはドアの動きを伴う短い停止である。さらに別の実施形態では、集配の停止は、停止後に道程の方向が変わったことを示すセンサデータをさらに含む。例えば集配の停止は、親が校門で子供を降ろし、別の方向の職場に向けて運転を続ける学校における停止である。集配の停止、システムの準備ができていない停止、長い停止、短い停止、および中位の停止については図20に示すテーブル内に要約する。
一実施形態では、停止分類モジュール703がGPS110からデータストリームを受け取る。そのデータストリームは、第1のデータ要素および第2のデータ要素を含む。別の実施形態では、停止分類モジュール703が、車両のシステム状態(例えば「準備未完了」または「準備完了」)、車両の速度、車両のドアおよび/または窓の動き(例えばドアおよび/または窓の開閉)についての1つまたは複数の測定を示す1組のセンサデータを1つまたは複数のセンサ170から受け取る。
停止分類モジュール703は、第1のデータ要素内に含まれる第1のタイムスタンプと、第2のデータ要素内に含まれる第2のタイムスタンプとの間の時間差を求める。停止分類モジュール703は、1組のセンサデータからシステム状態を求める。例えば停止分類モジュール703は、車両のシステム状態を示すセンサデータからシステム状態が「準備完了」か「準備未完了」かを判定する。一実施形態では、停止分類モジュール703が1組のセンサデータから車両の速度を求める。例えば停止分類モジュール703は、車両の速度を示すセンサデータから、第1のデータ要素に関する車両の速度が時速1マイル(=約時速1.6キロメートル)未満であると判断する。別の実施形態では、停止分類モジュール703がセンサデータに少なくとも部分的に基づいて車両のドアおよび/窓の、1つまたは複数の動きを突き止める。例えば停止分類モジュール703は、ドアの動きを示すセンサデータから、ドアが開けられ、その後閉じられたことを突き止める。
一実施形態では、停止分類モジュール703が、データストリームおよび1組のセンサデータに少なくとも部分的に基づいて道程において停止が生じたことを検出する。例えば停止分類モジュール703は、データストリームに基づいて車両が移動した距離および時間を計算し、車両の移動距離がゼロであり車両の移動時間が非ゼロである場合にその車両
が停止したと判定する。車両の移動距離は、データストリーム内に含まれる第1の地理的位置と第2の地理的位置との距離差である。車両の移動時間は、データストリーム内に含まれる第1のタイムスタンプと第2のタイムスタンプとの間の時間差である。一実施形態では、停止分類モジュール703は、車両の「準備未完了」システム状態を示すセンサデータに基づいて車両が停止したと判定する。別の実施形態では、停止分類モジュール703は、車両のゼロ速度を示すセンサデータに基づいて車両が停止したと判定する。
別の実施形態では、停止分類モジュール703は、GPS110の既知の精度を示す精度データにさらに基づいて車両の停止を検出する。例えば停止分類モジュール703は、記憶装置118から精度データを取得し、その精度データに基づいて車両が移動した距離および時間を調節する。停止分類モジュール703は、上記に記載したように、車両が移動した調節済みの距離および時間に基づいて車両の停止を検出する。一実施形態では、精度データが人間の経験に少なくとも部分的に基づいて決定される。別の実施形態では、精度データがGPS110の精度についての客観的測定に少なくとも部分的に基づいて決定される。例えば停止分類モジュール703は、GPS110を1つまたは複数の試験位置において試験することによりGPS110の精度を求める。停止分類モジュール703は、求めた精度データを記憶装置118内に記憶する。
一実施形態では、停止分類モジュール703が、第1のデータ要素および第2のデータ要素に1つまたは複数のメトリク基準を適用して停止の種類を求める。メトリク基準とは、停止の種類を求めるためのデータである。メトリク基準の例については以下に記載する。メトリク基準は、車両のシステム状態、停止の持続時間(例えば停止時間)、車両の速度、車両に関連するドアの動きおよび/または窓の動きのうちの1つまたは複数等に関連する。一実施形態では、停止分類モジュール703がデータストリームに1つまたは複数のメトリク基準を適用して、1組のセンサデータならびにデータストリーム内に含まれるタイムスタンプおよび地理的位置に少なくとも部分的に基づいて停止の種類を求める。例えば停止分類モジュール703は、以下により詳しく説明するように、1つまたは複数のメトリク基準を分析し、停止の種類がシステムの準備ができていない停止、長い停止、短い停止、中位の停止、および集配の停止のうちの1つであると判定する。
次のメトリク基準の1つまたは複数が満たされる場合、停止分類モジュール703は、停止の種類がシステムの準備ができていない停止であると判定する。
(1)第1のタイムスタンプと第2のタイムスタンプとの間の時間差が最小閾値(例えば1分)を上回る。
(2)システム状態が「準備未完了」である。
(3)第1のデータ要素に関する車両の速度が時速1マイル(=約時速1.6キロメートル)未満である。
例えば停止分類モジュール703は、運転者が車両を駐車場に止め、イグニションキーを抜く場合に停止の種類をシステムの準備ができていない停止として判定する。
次のメトリク基準の1つまたは複数が満たされる場合、停止分類モジュール703は、停止の種類が長い停止であると判定する。
(1)第1のタイムスタンプと第2のタイムスタンプとの間の時間差が長い停止の閾値(例えば5分)を上回る。
(2)車両のシステム状態が「準備完了」である。
(3)第2のデータ要素に関する車両の速度が時速1マイル(=約時速1.6キロメートル)未満である。
例えば停止分類モジュール703は、運転者がエンジンをかけた状態で車両を駐車場に止め、5分超にわたって車両内に留まってからその駐車場を車で走り去る場合、停止の種類を長い停止として判定する。
次のメトリク基準の1つまたは複数が満たされる場合、停止分類モジュール703は、停止の種類が中位の停止であると判定する。
(1)第1のタイムスタンプと第2のタイムスタンプとの間の時間差が中位の閾値を上回り、かつ長い停止の閾値を下回る(例えば2分から5分の間)。
(2)車両のシステム状態が「準備完了」である。
(3)おおよその直線的な移動方向が検出される。
例えば停止分類モジュール703は、停止が信号によって引き起こされる場合、停止の種類を中位の停止として判定する。直線的な移動方向とは、車両が第1の位置から第2の位置までほぼ直線的に移動することを示す移動パターンの特徴である。例えば、直線道路上の第1の位置から同じ道路上の第2の位置まで移動する車両は、直線的な移動方向で移動する。
次の基準の1つまたは複数が満たされる場合、停止分類モジュール703は、停止の種類が集配の停止であると判定する。
(1)第1のタイムスタンプと第2のタイムスタンプとの間の時間差が最小閾値を上回り、かつ長い停止の閾値を下回る(例えば1分から5分の間)。
(2)車両のシステム状態が「準備完了」である。
(3)センサデータが車両について検出された窓および/またはドアの動きを示す。
(4)センサデータが移動方向の変化を示す(例えば停止後に移動方向が逆方向に変わっていることをセンサデータが示す)。
次のメトリク基準の1つまたは複数が満たされる場合、停止分類モジュール703は、停止の種類が短い停止であると判定する。
(1)第1のタイムスタンプと第2のタイムスタンプとの間の時間差が最小閾値を上回り、かつ中位の閾値を下回る(例えば10秒から2分の間)。
(2)車両のシステム状態が「準備完了」である。
(3)地理的位置の変化(例えば5メートルなど、車両が移動した距離がゼロではない)。
(4)ドアおよび/または窓の動きが生じていない。
例えば停止分類モジュール703は、遅い車の流れによって停止が発生する場合、停止の種類を短い停止として判定する。
停止分類モジュール703は、停止の種類を終着点確立モジュール705に送る。停止の種類を判断するために、停止分類モジュール703が他のメトリク基準を適用してもよいことが当業者には明らかであろう。
終着点確立モジュール705は、プロセッサ104によって実行される、ある道程の道程最終目的地点を確立するコードおよびルーチンである。例えば終着点確立モジュール705は、道程において生じた停止の種類を停止分類モジュール703から受け取り、その停止の種類に少なくとも部分的に基づいて道程の道程最終目的地点を求める。終着点確立モジュール705は、信号線726を介してバス220に通信可能に結合される。
道程最終目的地点とは、道程が完了する地点である。例えば道程最終目的地点は、移動の最終目的地である。一実施形態では、移動は1つまたは複数の道程を含み、1つまたは複数の中間目的地および最終目的地を有する。例えば移動に中間目的地および最終目的地がある場合、その移動は移動の出発点から中間目的地までの第1の道程と、中間目的地から最終目的地までの第2の道程とを含む。中間目的地とは、移動の最終目的地に行く途中でユーザが訪れる地点である。一実施形態では、道程最終目的地点は移動の中間目的地である。
例えば親が職場から車で自宅に帰る際に学校で子供を乗せる場合、学校は職場から学校までの第1の道程の第1の道程最終目的地点であり(または学校は、職場から自宅までの全移動の中間目的地であり)、自宅は学校から自宅までの第2の道程の第2の道程最終目的地点である(または自宅は、職場から自宅までの全移動の最終目的地である)。
移動の種類は、循環的移動(circular trip)および非循環的移動の一方である。循環
的移動とは、その最終目的地が移動の出発点の距離閾値(例えば1,000フィート=約300メートル)の範囲内にある移動である。一実施形態では、距離閾値はナビゲーションシステム102の管理者が設定する。一実施形態では、移動の間中ずっと車両のシステム状態が「準備完了」である状態で、ユーザは循環的移動を行う。例えば、ユーザが循環的移動において1つまたは複数の中間目的地に停止しても、車両のエンジンは移動の間中ずっとオンである。循環的移動の一例は、親が子供を自宅から学校まで乗せ、学校で子供を降ろし、その後学校から車で自宅に帰る移動である。親は、車両を離れずかつエンジンを切ることなしに、移動の間中ずっと運転席に留まることができる。親は学校から自宅に帰るとき、車両を車庫の中や路上などの別の位置に止めることができる。非循環的移動とは、その最終目的地が移動の出発点の距離閾値の範囲内にない移動である。例えば非循環的移動は、距離が30マイル(=約48キロメートル)ある自宅から職場までの移動である。
一実施形態では、終着点確立モジュール705は、停止分類モジュール703から受け取った停止の種類が長い停止かどうかを判定する。停止の種類が長い停止の場合、終着点確立モジュール705は長い停止を道程最終目的地点として定める。停止の種類が長い停止ではない場合、終着点確立モジュール705は、システムの準備ができていない停止や集配の停止など、停止の種類が他の種類の停止かどうかを判定する。
停止の種類がシステムの準備ができていない停止の場合、終着点確立モジュール705はシステムの準備ができていない停止を道程最終目的地点として定める。例えば「準備未完了」のシステム状態を伴う(例えばイグニションキーを鍵穴から抜いた状態の)、システムの準備ができていない停止は道程の終りを暗に示すので、システムの準備ができていない停止は最も一般的な道程最終目的地点である。
停止の種類がシステムの準備ができていない停止ではない場合、終着点確立モジュール705は、停止の種類が集配の停止かどうかを判定する。停止の種類が集配の停止の場合、終着点確立モジュール705は集配の停止を道程最終目的地点として定める。さもなければ、終着点確立モジュール705はその停止をいかなる道程最終目的地点ともみなさない。
別の実施形態では、終着点確立モジュール705はユーザがとる移動の種類を求める。例えば終着点確立モジュール705は、移動の出発点をGPS110(または起点IDモジュール403)から受け取り、最も高い品質スコアに関連する推定目的地を品質モジュール209から受け取る。終着点確立モジュール705は、その出発点および推定目的地に少なくとも部分的に基づいて移動の種類を求める。例えば推定目的地が出発点の距離閾値の範囲内にある場合、終着点確立モジュール705は移動の種類を循環的移動として決定する。さもなければ、終着点確立モジュール705は移動の種類を非循環的移動として決定する。
非循環的移動では、終着点確立モジュール705は、停止分類モジュール703から受け取った停止の種類が、長い停止、システムの準備ができていない停止、および集配の停止のうちの1つかどうかを判定する。終着点確立モジュール705は、その判定に基づい
て上記に記載した操作を行う。例えば終着点確立モジュール705が、停止の種類がシステムの準備ができていない停止であると判定する場合、終着点確立モジュール705はシステムの準備ができていない停止を道程最終目的地点として定める。
停止の種類がシステムの準備ができていない停止ではない場合、終着点確立モジュール705は、停止の種類が集配の停止および長い停止等のうちの1つかどうかを判定する。停止の種類が集配の停止および長い停止の一方である場合、終着点確立モジュール705はその停止(例えば集配の停止または長い停止)を道程最終目的地点として定める。さもなければ、終着点確立モジュール705はその停止をいかなる道程最終目的地点ともみなさない。
循環的移動では、終着点確立モジュール705は停止の種類が中位の停止かどうかを判定する。停止の種類が中位の停止の場合、終着点確立モジュール705は、移動において複数の中位の停止があるかどうかを判定する。移動において中位の停止が1つしかない場合、終着点確立モジュール705はその中位の停止を道程最終目的地点として定める。移動を2つの道程に分け、第1の道程は移動の出発点から中位の停止までであり、第2の道程は中位の停止から移動の最終目的地までである。移動において複数の中位の停止がある場合、終着点確立モジュール705は何らかの集配の停止があるかどうかを判定する。移動において少なくとも1つの集配の停止がある場合、終着点確立モジュール705は、集配の停止のそれぞれを道程最終目的地点として定める。
移動における複数の中位の停止の中に集配の停止がない場合、終着点確立モジュール705は、上記に記載した1つまたは複数のメトリク基準に基づいて集配の停止に最も似ている中位の停止を選択する。終着点確立モジュール705は、選択した中位の停止を道程最終目的地点として定める。例えば終着点確立モジュール705は、移動方向の変化(例えば停止後の逆向きの移動方向)を伴う中位の停止を道程最終目的地点として選択する。
停止の種類が中位の停止ではない場合、終着点確立モジュール705は停止の種類が短い停止かどうかを判定する。停止の種類が短い停止ではない場合、一実施形態では、非循環的移動に関して上記に記載したように、停止の種類が長い停止およびシステムの準備ができていない停止のうちの1つかどうかを終着点確立モジュール705が判定する。別の実施形態では、終着点確立モジュール705が停止を道程最終目的地点とみなさない。停止の種類が短い停止の場合、終着点確立モジュール705は1つまたは複数のメトリク基準に基づいて集配の停止に最も似ている短い停止を選択し、選択した短い停止を道程最終目的地点として定める。例えば終着点確立モジュール705は、移動方向の変化(例えば停止後の逆向きの移動方向)を伴う短い停止を道程最終目的地点として選択する。
上記に記載したように道程最終目的地点を確立した後、終着点確立モジュール705は道程最終目的地点を検索識別データに関連させる。例えば終着点確立モジュール705は、道程最終目的地点を一意の検索識別情報(ID)や一意のユーザIDなどの一意の検索識別データに関連させる。ユーザIDは、道程最終目的地点を訪れるユーザを識別する。
一実施形態では、終着点確立モジュール705が、定められた道程最終目的地点の終着点スコアを生成する。定められた道程最終目的地点の終着点スコアとは、定められた道程最終目的地点とユーザが実際に訪れるつもりの道程最終目的地点との間の一致の程度を測るためのデータである。例えばユーザがショッピングモールに行くつもりであり、そのショッピングモールでシステムの準備ができていない停止(例えばイグニションキーを抜いた状態の停止)を行うと仮定する。終着点確立モジュール705は、そのショッピングモールでのシステムの準備ができていない停止を道程最終目的地点として定める。ユーザが訪れたい道程最終目的地点に対し、定められた道程最終目的地点が一致するので、終着点
確立モジュール705は、定められた道程最終目的地点について満点の終着点スコア(例えば100点)を生成する。
一実施形態では、終着点確立モジュール705が、道程最終目的地点に関連する停止の種類に少なくとも部分的に基づいて道程最終目的地点の終着点スコアを生成する。例えば終着点確立モジュール705は、長い停止に関連する道程最終目的地点よりも、システムの準備ができていない停止に関連する道程最終目的地点に対して高い終着点スコアを生成し、その理由は、例えばエンジンが切られた状態の(例えばイグニションキーが抜かれている)システムの準備ができていない停止は、エンジンがかかった状態の長い停止よりもユーザが訪れるつもりの実際の目的地に一致する可能性がより高いからである。別の例として、終着点確立モジュール705は、短い停止に関連する道程最終目的地点よりも、集配の停止に関連する道程最終目的地点に対して高い終着点スコアを生成する。
一実施形態では、終着点確立モジュール705が道程最終目的地点、検索識別データ、および終着点スコアの1つまたは複数を報告モジュール707に送る。別の実施形態では終着点確立モジュール705が、道程最終目的地点および関連する検索識別データを終着点データ343の一部として記憶装置118内に記憶する。終着点確立モジュール705は、道程最終目的地点に関連する終着点スコアも記憶装置118内に記憶する。さらに別の実施形態では、終着点確立モジュール705は、終着点スコアがスコア閾値を上回る道程最終目的地点だけを記憶する。終着点確立モジュール705は、終着点スコアがスコア閾値を下回るいかなる道程最終目的地点も無視する。一実施形態では、スコア閾値はナビゲーションシステム102の管理者が設定する閾値である。
ユーザに関する道程最終目的地点を示すデータを集めることは、例えばユーザがいかなる目的地データを入力することも必要とせずに、集めたデータを上記に記載した学習システム112および/または推定システム114が使用して1つまたは複数の潜在的な道程に関する1つまたは複数の推定目的地を提供することができるのでとりわけ有利である。さらに、頻繁にある中位の停止および/または短い停止を検出することは道路上の交通混雑の現れである可能性があり、したがってシステム100が運転者に異常な道路状況を知らせることを可能にする。
報告モジュール707は、プロセッサ104によって実行される、道程最終目的地点をソーシャルネットワークアプリケーション122に報告するコードおよびルーチンである。例えば報告モジュール707は、道程最終目的地点を終着点確立モジュール705から受け取り、その道程最終目的地点を、ソーシャルネットワークアプリケーション122によって提供されるソーシャルネットワークにネットワーク105を介して報告する。一実施形態では、報告モジュール707が、第1の地理的位置および第1のタイムスタンプを含む第1のデータ要素と、第2の地理的位置および第2のタイムスタンプを含む第2のデータ要素とをソーシャルネットワーク上に投稿する。報告モジュール707は、信号線728を介してバス220に通信可能に結合される。
グループモジュール709は、プロセッサ104によって実行される、データ要素のグループを管理するコードおよびルーチンである。グループモジュール709は、信号線730を介してバス220に通信可能に結合される。一実施形態ではグループモジュール709が、走行車両に関連する第1のデータ要素および第2のデータ要素を含むデータストリームを第4の通信モジュール701から受け取る。グループモジュール709は、終着点スコアを終着点確立モジュール705から受け取る。終着点スコアは、データストリームに少なくとも部分的に基づいて終着点確立モジュール705によって求められる道程最終目的地点に関連する。
グループモジュール709は、1つまたは複数の履歴データ要素を含むグループにアクセスする。例えばグループモジュール709は、1つまたは複数の履歴データ要素を示すデータを含むグループデータを記憶装置118から取得する。各履歴データ要素は、過去の道程に関する過去の地理的位置および過去のタイムスタンプを示す。一実施形態ではグループモジュール709が第1のデータ要素および第2のデータ要素を時間的制約および距離的制約と比較して、第1のデータ要素および第2のデータ要素が以下に記載するように時間的制約および距離的制約を満たすかどうかを判定する。第1のデータ要素および第2のデータ要素が時間的制約および距離的制約を満たす場合、グループモジュール709は第1のデータ要素および第2のデータ要素をグループに追加する。一実施形態では、時間的制約および距離的制約はナビゲーションシステム102の管理者が設定する。
一実施形態ではグループモジュール709が、第1のデータ要素の第1のタイムスタンプと第2のデータ要素の第2のタイムスタンプとの間の時間差(例えば第2のタイムスタンプが第1のタイムスタンプの後に生じる時間の長さ)を求める。グループモジュール709は、その時間差が時間的制約を満たすかどうかを判定する。例えばグループモジュール709は、時間差が負であるかどうかを判定する。ノイズ、弱いGPS信号、またはGPS信号がないことが原因で生じたエラーを暗に示す、時間差が時間的制約を満たさない(例えば時間差が負である)場合、グループモジュール709は第1のデータ要素および第2のデータ要素を含むデータストリームを無視する。
時間差が時間的制約を満たす(例えば時間差が負ではない)場合、グループモジュール709は、データストリーム内に含まれる第1のデータ要素の第1の地理的位置と第2のデータ要素の第2の地理的位置との間の距離差を求める。グループモジュール709は、その距離差が距離的制約を満たすかどうかを判定する。例えばグループモジュールは、距離差が経験に基づく通常の距離差であるかどうかを判定する。距離差が距離的制約を満たす場合、グループモジュール709は第1のデータ要素および第2のデータ要素を履歴データ要素の一部としてグループに追加する。
ノイズまたは弱いGPS信号が原因でエラーが生じたことを示す、距離差が距離的制約を満たさない(例えば1分で20マイル(=約32キロメートル)の距離差など、距離差が異常である)場合、グループモジュール709は第1のデータ要素および第2のデータ要素を含むデータストリームを無視する。グループモジュール709はさらに、異常なデータストリームに少なくとも部分的に基づいて求められる道程最終目的地点を無視するように終着点確立モジュール705に指示する。
別の実施形態ではグループモジュール709が、受け取った終着点スコアをスコア閾値と比較する。終着点スコアがスコア閾値を下回る場合、グループモジュール709はその終着点スコアに関連するデータストリームを無視する。終着点スコアがスコア閾値を上回る場合、グループモジュール709はデータストリームをグループの一部として記憶装置118内に記憶する。
方法
次に図8A〜図16Dを参照して、本明細書の方法の様々な実施形態を説明する。図8Aは、一実施形態による、データを忘却するための方法800を示す流れ図である。モニタモジュール603が、何らかのトリガイベントがないかどうか、ナビゲーションシステム102をモニタする(802)。一実施形態では、モニタモジュール603がトリガイベントを検出し(804)、そのトリガイベントを示すイベントデータを決定モジュール605に送る。決定モジュール605は、トリガイベントが工場出荷時リセット入力かどうかを判定する(806)。トリガイベントが工場出荷時リセット入力の場合、決定モジュール605がリセット信号を削除モジュール607に送り、方法800はステップ80
8に進む。さもなければ、方法800はステップ810に進む。ステップ808で、リセット信号を受け取ることに応答して削除モジュール607がナビゲーションシステム102をリセットし、方法800は終了する。
次にステップ810では、決定モジュール605は、ナビゲーションシステム102内のメモリの空き容量(例えば記憶装置118内の記憶空間の空き)が閾値を下回るかどうかを判定する。メモリの空き容量が閾値を下回らない場合、方法800は終了する。さもなければ、決定モジュール605がメモリから削除するデータを決定する(812)。一実施形態では、決定モジュール605は、メモリから削除するデータを決定するために図8Bに関して以下に記載するステップと同様のステップを実行する。ステップ814で、削除モジュール607が、決定されたデータをメモリから削除する。
図8Bは、一実施形態による、削除するデータを決定するための方法812を示す流れ図である。第3の通信モジュール601が、ユーザが訪れた全ての目的地を示す目的地データ、各目的地への最後の訪問に関するタイムスタンプを示すタイムスタンプデータ、およびメトリックテーブル内に記憶される各目的地の発生頻度を記憶装置118から取得する(816)。第3の通信モジュール601が、取得したデータを決定モジュール605に送る。
決定モジュール605が、目的地への最後の訪問に関するタイムスタンプに少なくとも部分的に基づいて目的地を順序付ける(818)。例えば決定モジュール605は、より古いタイムスタンプを有する第1の目的地が、より最近のタイムスタンプを有する第2の目的地の前に来るように第1のキューの中の目的地を順序付ける。次に決定モジュール605が、目的地の発生頻度に少なくとも部分的に基づいて目的地を順序付ける。例えば決定モジュール605は、より低い発生頻度を有する第1の目的地が、より高い発生頻度を有する第2の目的地の前に来るように第2のキューの中の目的地を順序付ける。
決定モジュール605が、順序付けに少なくとも部分的に基づいて削除候補の目的地を決定する(820)。例えば決定モジュール605は、最も古いタイムスタンプを有するいくつかの第1の目的地を第1のキューから選択し、最も低い発生頻度を有するいくつかの第2の目的地を第2のキューから選択する。決定モジュール605は、選択された第1の目的地および第2の目的地の両方に含まれる1つまたは複数の目的地として削除候補の目的地を決定する。
決定モジュール605が、削除候補の目的地から1つまたは複数の目的地を選択する(822)。一実施形態では、決定モジュール605が削除候補の目的地から1つまたは複数の目的地を無作為に選択する。決定モジュール605が、その1つまたは複数の被選択目的地に関連するデータを削除することに決める(824)。一実施形態では決定モジュール605は、被選択目的地の1つまたは複数の識別情報を削除モジュール607に送り、削除モジュール607に被選択目的地に関連するデータ(例えば被選択目的地に関連する学習パラメータセット、学習テーブルデータ、メトリックテーブルデータ、運転者履歴データ等)を削除させる。
図9Aおよび図9Bは、一実施形態による、1つまたは複数の潜在的な道程を決定するための方法900を示す流れ図である。図9Aを参照して、第1の通信モジュール201が、1つまたは複数の過去の道程を示す運転者履歴データを含む学習パラメータセットを記憶装置118から取得する(902)。一実施形態では第1の通信モジュール201が、変換済みの運転者履歴データを含む学習パラメータセットを記憶装置118から取得する。第1の通信モジュール201が、学習パラメータセットを頻度モジュール206に送る。
頻度モジュール206が、その学習パラメータセットを分析して、1つまたは複数の目的地までの1つまたは複数の潜在的な道程についての頻度の高い出発地点および頻度の高い終着地点を示すデータを含む候補セットを求める(904)。タイムスタンプジェネレータ217が現在時刻を計り(906)、その現在時刻を所要時間モジュール407および方向モジュール405の1つまたは複数に送る。
所要時間モジュール407が、候補セット内に含まれる1つまたは複数の潜在的な道程に関する道程所要時間データを現在時刻に少なくとも部分的に基づいて推定する(908)。所要時間モジュール407が、道程所要時間データを変換モジュール205に送る。変換モジュール205が、道程所要時間データを不均一区分へと区分化する(910)。変換モジュール205が、変換済みの道程所要時間データをメトリックモジュール207に送る。
方向モジュール405が、1つまたは複数の目的地までの1つまたは複数の潜在的な道程に関する、1つまたは複数の方向を示す方向データを現在時刻に少なくとも部分的に基づいて推定する(912)。方向モジュール405が、方向データをメトリックモジュール207に送る。一実施形態では、方向モジュール405が方向データを変換モジュール205に送る。変換モジュール205は方向データを変換し、変換済みの方向データをメトリックモジュール207に送る。
メトリックモジュール207が、現在時刻、道程所要時間データ、および方向データのうちの1つまたは複数に少なくとも部分的に基づいて、1つまたは複数の潜在的な道程に関する1つまたは複数のメトリックを決定する(914)。一実施形態では、メトリックモジュール207は、メトリック推定ネットワークに少なくとも部分的に基づいて1つまたは複数のメトリックを決定する。メトリックモジュール207が、1つまたは複数のメトリックを品質モジュール209に送る。品質モジュール209が、その1つまたは複数のメトリックに少なくとも部分的に基づいて1つまたは複数の潜在的な道程に関する1つまたは複数の品質スコアを決定する(916)。
次に図9Bを参照して、品質モジュール209が、候補セット内に含まれる1つまたは複数の潜在的な道程を1つまたは複数の関連する品質スコアに少なくとも部分的に基づいて順序付ける(918)。品質モジュール209は1つまたは複数の品質スコアを出力モジュール211に送り、出力モジュール211に候補セットおよび1つまたは複数の品質スコアを学習システム112、推定システム114、およびディスプレイ160の1つまたは複数に向けて出力させる(920)。所要時間モジュール407が、本明細書に記載の1つまたは複数のシステムモジュールによってアクセス可能なメモリ(例えば記憶装置118)内に道程所要時間データを記憶する(922)。
図10は、一実施形態による、現在の道程に関するデータのログを取るための方法1000を示す流れ図である。履歴モジュール213が、現在の道程の終りを求めてナビゲーションシステム102をモニタする(1002)。例えば履歴モジュール213は、位置データおよび/または速度データをGPS110から受け取り、その位置データおよび/または速度データに少なくとも部分的に基づいて、ユーザが現在の道程の目的地に到着したかどうかをモニタする。ユーザが目的地に到着すると、履歴モジュール213が現在の道程の終りを検出する(1004)。履歴モジュール213が、現在の道程を示すデータ(例えば道程所要時間データ、方向データ、ルートデータ、出発地点、終着地点、出発時間、出発の曜日、出発の日付、到着時間、到着の曜日、到着の日付等)を集める(1006)。履歴モジュール213が、集めたデータを運転者履歴データの一部として運転者履歴リポジトリ316内に記憶する(1008)。
図11Aおよび図11Bは、一実施形態による、運転者履歴データを変換するための方法1100を示す流れ図である。ここで図11Aを参照して、運転履歴モジュール203が、運転者履歴データを第1の通信モジュール201を介して記憶装置118から取得する(1102)。運転者履歴データには、1つまたは複数の過去の道程に関連する出発時間(例えば出発の時間)、出発日(例えば出発の曜日)、道程所要時間データ、方向データ、到着時間(例えば到着の時間)、到着日(例えば到着の曜日)、出発点、および終着点等のうちの1つまたは複数が含まれる。運転履歴モジュール203が、運転者履歴データを変換モジュール205に送る。
変換モジュール205が、1つまたは複数の過去の道程の出発時間を不均一区分に変換する(1104)。例えば変換モジュール205は、ある道程の出発時間を深夜、朝、昼、午後、および夜のうちの1つに変換する。変換モジュール205が、出発の曜日を不均一区分に変換する(1106)。例えば変換モジュール205は、ある道程の出発の曜日を平日および週末のうちの一方に変換する。変換モジュール205は、道程所要時間データも不均一区分へと変換する(1108)。例えば変換モジュール205は、道程所要時間データを短い、中位、および長いのうちの1つへと変換する。
一実施形態では、運転履歴モジュール203が出発地点および終着地点を方向モジュール405に送る。方向モジュール405が、この出発地点および終着地点に少なくとも部分的に基づいて道程の方向を求め(1110)、方向を示す方向データを変換モジュール205に送る。変換モジュール205が、その方向を複数の均一区分の1つに変換する(1112)。例えば変換モジュール205は、方向を東、南東、南、南西、西、北西、北、および北東のうちの1つに変換する。
次に図11Bを参照して、変換モジュール205が到着時間を不均一区分に変換する(1114)。例えば変換モジュール205は、ある道程の到着時間を深夜、朝、昼、午後、および夜のうちの1つに変換する。変換モジュール205が、到着の曜日を不均一区分に変換する(1116)。例えば変換モジュール205は、ある道程の到着の曜日を平日および週末のうちの一方に変換する。変換モジュール205が、変換済みの運転者履歴データを記憶装置118内に記憶する(1118)。一実施形態では変換モジュール205が、変換済みの運転者履歴データを学習パラメータセットとして記憶装置118内に記憶する。
図12は、一実施形態による、ユーザの運転優先傾向を学習するための方法1200を示す流れ図である。第1の通信モジュール201が学習パラメータセットを記憶装置118から取得し(1202)、その学習パラメータセットを頻度モジュール206に送る。頻度モジュール206が、各目的地の発生頻度を記録するためのメトリックテーブル(例えば図19Aに「destTable」として示す目的地テーブル)を作成する(1204)。頻
度モジュール206が、発生頻度が最も高い2つの目的地を「自宅」および「職場」としてラベル付けする(1206)。例えば頻度モジュール206は、発生頻度が最も高い目的地を「自宅」として指定し、発生頻度が2番目に高い目的地を「職場」として指定する。ガソリンスタンド、コーヒーショップなどの残りの目的地は「その他」と称す。頻度モジュール206が、目的地「自宅」、「職場」、および「その他」の発生頻度を再計算する(1208)。
図13Aおよび図13Bは、一実施形態による、判定対象の位置が属するクラスタを管理するための方法1300を示す流れ図である。一実施形態では、判定対象位置は道程の出発点の位置(例えば出発地点)および終着点の位置(例えば終着地点)のうちの1つである。ここで図13Aを参照して、第2の通信モジュール401が位置を示す位置データ
をGPS110から受け取る(1302)。第2の通信モジュール401が、対象位置データをクラスタモジュール404に送る。クラスタモジュール404は、クラスタのクラスタリング範囲(例えば200メートル)を決定する(1304)。
第2の通信モジュール401が、既存のクラスタのリストを示すクラスタデータを記憶装置118から取得し(1306)、そのクラスタデータをクラスタモジュール404に送る。クラスタモジュール404は、リストが空かどうかを判定する(1308)。リストが空の場合、方法1300はステップ1310に進む。さもなければ、方法1300はステップ1312に進む。ステップ1310では、クラスタモジュール404が新たなクラスタを生成する。クラスタモジュール404が、新たなクラスタ用のクラスタIDを生成し(1311)、方法1300はステップ1316に進む。
ステップ1312では、クラスタモジュール404が判定対象位置をリスト内に含まれる各クラスタと比較し、対象位置が既存のいずれかのクラスタのクラスタリング範囲内にあるかどうかを判定する(1314)。対象位置が既存のクラスタのクラスタリング範囲内にある場合、方法1300はステップ1316に進む。さもなければ、方法1300はステップ1310に進む。ステップ1316では、クラスタモジュール404が対象位置をクラスタに追加する。例えばクラスタモジュール404は、対象位置が既存のクラスタのクラスタリング範囲内にある場合、対象位置を既存のクラスタに追加する。あるいはクラスタモジュール404は、対象位置を新たに作成したクラスタに追加する。
次に図13Bを参照して、クラスタモジュール404が、判定対象位置の位置IDとしてクラスタのクラスタIDを割り当てる(1318)。例えばクラスタモジュール404は、対象位置が出発点の位置である場合、対象位置の起点IDとしてクラスタIDを割り当てる。対象位置が終着点の位置である場合、クラスタモジュール404は、対象位置の目的地IDとしてクラスタIDを割り当てる。場合により、クラスタモジュール404が、対象位置をクラスタに追加した後、クラスタのクラスタ中心を更新してもよい(1320)。例えばクラスタモジュール404は、クラスタ内に含まれる全ての位置に基づいてクラスタのクラスタ中心を再計算する。
図14A〜図14Cは、一実施形態による、異常状態を管理するための方法1400を示す流れ図である。ここで図14Aを参照して、運転履歴モジュール203が、運転者履歴データを第1の通信モジュール201を介して記憶装置118から取得する(1402)。運転履歴モジュール203が、運転者履歴データを変換モジュール205に送る。変換モジュール205が、運転者履歴データを学習パラメータセットに変換する(1404)。変換モジュール205が、その学習パラメータセットを頻度モジュール206に送る。
起点IDモジュール403が、現在の道程データを求め(1406)、その現在の道程データを頻度モジュール206および概要モジュール210の1つまたは複数に送る。頻度モジュール206が学習パラメータセットおよび現在の道程データを分析して、現在の道程データ内に含まれる起点位置(例えば出発点の位置)から1つまたは複数の推定目的地までの1つまたは複数の潜在的な道程を示す推定道程データを生成する(1408)。頻度モジュール206が、推定道程データをメトリックモジュール207に送る。
第1の通信モジュール201が、現状データセットをGPS110から取得し(1410)、その現状データセットをメトリックモジュール207および概要モジュール210の1つまたは複数に送る。メトリックモジュール207が、推定道程データおよび現状データセットを分析して、推定道程データによって示される1つまたは複数の潜在的な道程に関する1つまたは複数のメトリックを決定する(1412)。
次に図14Bを参照して、メトリックモジュール207が、少なくとも1つのメトリックが異常状態に関係しているかどうかを判定する(1414)。少なくとも1つのメトリックが異常状態に関係している場合、方法1400はステップ1416に進む。さもなければ、方法1400はステップ1422に進む。ステップ1416で、メトリックモジュール207がその異常状態に関するナビゲーション上の勧告を決定する。メトリックモジュール207がそのナビゲーション上の勧告を出力モジュール211に送り、出力モジュール211にそのナビゲーション上の勧告をディスプレイ160上でユーザに向けて出力させる(1418)。場合により、メトリックモジュール207が、第1の通信モジュール201を介してユーザから入力を受け取ってもよい(1420)。
品質モジュール209が、1つまたは複数のメトリックに少なくとも部分的に基づいて推定道程データに関連する1つまたは複数の品質スコアを決定する(1422)。概要モジュール210が、1つまたは複数の状態概要を決定する(1424)。概要モジュール210は、1つまたは複数の推定概要も決定する(1426)。
次に図14Cを参照して、概要モジュール210が、1つまたは複数の状態概要および1つまたは複数の推定概要を推定道程データに関連させる(1428)。概要モジュール210が、1つまたは複数の状態概要および1つまたは複数の推定概要を出力モジュール211に送り、1つまたは複数の状態概要、1つまたは複数の推定概要、および推定道程データをディスプレイ160上に提示するための表示データを出力モジュール211に出力させる(1430)。起点IDモジュール403が、現在の道程データを記憶装置118内に記憶する(1432)。
図15は、一実施形態による、道程最終目的地点を確立するための方法1500を示す流れ図である。第4の通信モジュール701が、第1のデータ要素および第2のデータ要素を含むデータストリームをGPS110から受け取る(1502)。第4の通信モジュール701が、1組のセンサデータを1つまたは複数のセンサ170から受け取る(1504)。第4の通信モジュール701が、そのデータストリームおよび1組のセンサデータを停止分類モジュール703に送る。停止分類モジュール703が、そのデータストリームおよび1組のセンサデータの1つまたは複数に少なくとも部分的に基づいて、生じた停止を検出する(1506)。停止分類モジュール703が、第1のデータ要素および第2のデータ要素に1つまたは複数のメトリク基準を適用して停止の種類を求める(1508)。停止分類モジュール703が、停止の種類を終着点確立モジュール705に送る。
終着点確立モジュール705が、その停止の種類に少なくとも部分的に基づいて道程最終目的地点を確立する(1510)。終着点確立モジュール705が、道程最終目的地点を検索識別データに関連させる(1512)。場合により、終着点確立モジュール705が道程最終目的地点の終着点スコアを生成してもよい(1514)。終着点確立モジュール705が、道程最終目的地点を記憶装置118内に記憶する(1516)。一実施形態では終着点確立モジュール705は、終着点スコアがスコア閾値を上回るかどうかを判定する。終着点スコアがスコア閾値を上回る場合、終着点確立モジュール705が道程最終目的地点を記憶域118内に記憶する。さもなければ、終着点確立モジュール705は道程最終目的地点を無視する。
図16A〜図16Dは、別の実施形態による、道程最終目的地点を確立するための方法1600を示す流れ図である。ここで図16Aを参照して、第4の通信モジュール701が、第1のデータ要素および第2のデータ要素を含むデータストリームをGPS110から受け取る(1602)。第4の通信モジュール701が、1組のセンサデータを1つまたは複数のセンサ170から受け取る(1604)。第4の通信モジュール701が、そ
のデータストリームおよび1組のセンサデータを停止分類モジュール703に送る。停止分類モジュール703が、そのデータストリームおよび1組のセンサデータの1つまたは複数に少なくとも部分的に基づいて、生じた停止を検出する(1605)。停止分類モジュール703が、そのデータストリームおよび1組のセンサデータに少なくとも部分的に基づいて停止の種類を求める(1606)。例えば停止分類モジュール703は、1つまたは複数のメトリク基準を適用して、データストリームおよび1組のセンサデータに少なくとも部分的に基づいて停止の種類を求める。停止分類モジュール703が、停止の種類を終着点確立モジュール705に送る。
終着点確立モジュール705は、その車両がとった移動(トリップ)の種類を求める(1608)。移動の種類は、循環的移動および非循環的移動の一方である。終着点確立モジュール705は、移動の種類が循環的移動かどうかを判定する(1610)。移動が循環的移動の場合、方法1600はステップ1612に進む。さもなければ、方法1600はステップ1614に進む。ステップ1612を参照すると、終着点確立モジュール705は、停止の種類が中位の停止かどうかを判定する。停止の種類が中位の停止の場合、方法1600はステップ1626に進む。さもなければ、方法1600はステップ1638に進む。
次に図16Bを参照して、終着点確立モジュール705は、停止の種類が長い停止かどうかを判定する(1614)。停止の種類が長い停止の場合、終着点確立モジュール705は長い停止を道程最終目的地点として定め(1616)、方法1600はステップ1644に進む。停止の種類が長い停止ではない場合、終着点確立モジュール705は、停止の種類がシステムの準備ができていない停止かどうかを判定する(1618)。停止の種類がシステムの準備ができていない停止の場合、終着点確立モジュール705はシステムの準備ができていない停止を道程最終目的地点として定め(1620)、方法1600はステップ1644に進む。
停止の種類がシステムの準備ができていない停止ではない場合、終着点確立モジュール705は、停止の種類が集配の停止かどうかを判定する(1622)。停止の種類が集配の停止ではない場合、方法1600は終了する。停止の種類が集配の停止の場合、終着点確立モジュール705は集配の停止を道程最終目的地点として定め(1624)、方法1600はステップ1644に進む。
次に図16Cを参照して、終着点確立モジュール705は、循環的移動において複数の中位の停止があるかどうかを判定する(1626)。単一の中位の停止がある場合、終着点確立モジュール705はその中位の停止を道程最終目的地点として定める(1628)。さもなければ、方法1600はステップ1630に進む。ステップ1630で、終着点確立モジュール705が、複数の中位の停止の中に集配の停止があるかどうかを判定する。集配の停止がある場合、終着点確立モジュール705は集配の停止を道程最終目的地点として定め(1632)、方法1600はステップ1644に進む。さもなければ、この方法はステップ1634に進む。
ステップ1634を参照して、終着点確立モジュール705が1つまたは複数のメトリク基準に基づいて、集配の停止に最も似ている中位の停止を選択する。終着点確立モジュール705は選択した中位の停止を道程最終目的地点として定め(1636)、方法1600はステップ1644に進む。
次に図16Dを参照して、終着点確立モジュール705は、停止の種類が短い停止かどうかを判定する(1638)。停止の種類が短い停止ではない場合、方法1600は終了する。さもなければ、方法1600はステップ1640に進む。ステップ1640で、終
着点確立モジュール705が1つまたは複数のメトリク基準に基づいて、集配の停止に最も似ている短い停止を選択する。終着点確立モジュール705は選択した短い停止を道程最終目的地点として定め(1642)、方法1600はステップ1644に進む。
ステップ1644を参照して、終着点確立モジュール705が、道程最終目的地点を検索IDやユーザIDなどの検索識別データに関連させる。場合により、終着点確立モジュール705が道程最終目的地点の終着点スコアを生成してもよい(1646)。終着点確立モジュール705が、道程最終目的地点を記憶域118内に記憶する(1648)。一実施形態では終着点確立モジュール705は、終着点スコアがスコア閾値を上回るかどうかを判定する。終着点スコアがスコア閾値を上回る場合、終着点確立モジュール705が道程最終目的地点を記憶域118内に記憶する。終着点スコアがスコア閾値を下回る場合、終着点確立モジュール705は道程最終目的地点を無視する。
グラフィカル表現
次に図17A〜図20を参照して、本明細書のグラフィカル表現の様々な実施形態を説明する。図17Aは、一実施形態によるメトリック推定ネットワークを示すグラフィカル表現1700である。図示の実施形態では、目的地までの潜在的な道程の推定は、曜日、前回の道程における起点(例えば以前の起点−1)、目的地のPOIタイプ、前々回の道程における起点(例えば以前の起点−2)、年の週、道程所要時間、時刻、現在の起点、および方向のうちの1つまたは複数に少なくとも部分的に基づく。
図17Bは、別の実施形態によるメトリック推定ネットワークを示すグラフィカル表現1750である。図示の実施形態では、目的地までの潜在的な道程の推定は、曜日、時刻、および方向のうちの1つまたは複数に少なくとも部分的に基づく。
図18Aは、一実施形態による、時刻(例えば出発時間)を変換するためのテーブルを示すグラフィカル表現1800である。図18Bは、一実施形態による、道程所要時間を変換するためのテーブルを示すグラフィカル表現1830である。図18Aおよび図18Bについては図2に関して上記に記載した。ここでは説明を繰り返さない。
図18Cは、一実施形態による、道程の方向を変換するためのグラフを示すグラフィカル表現1850である。図示の実施形態では、方向1852が「東」の区分にあるので、変換モジュール205は方向1852を「東」の方向として変換する。
図19Aは、一実施形態による、1つまたは複数のメトリックテーブルを列挙するテーブル1900のグラフィカル表現である。テーブル1900は、テーブル名を列挙する1列目、テーブルの種類を列挙する2列目、およびメトリックテーブルに関連する学習パラメータを列挙する3列目を含む。例えば、テーブル1900の1行目にある、テーブル名が「destTable」である目的地テーブルは、目的地IDによって識別される目的地に関する確率を記憶する確率テーブルである。当業者は、テーブル1900が本明細書に記載の機能を提供するための他のメトリックテーブルを含んでもよいことを理解されよう。
図19Bは、一実施形態によるメトリックテーブル1910を示すグラフィカル表現である。図示の実施形態では、メトリックテーブル1910は目的地テーブルの一例である。メトリックテーブル1910は、1つまたは複数の目的地(例えば自宅、職場、ジム、ガソリンスタンド)、およびその1つまたは複数の目的地に関する1つまたは複数の発生頻度を含む。例えば「職場」が目的地となる頻度は30回であり、「自宅」が目的地となる頻度は40回である。
図19Cは、別の実施形態によるメトリックテーブル1920を示すグラフィカル表現である。図示の実施形態では、メトリックテーブル1920は図19Aに示す「todTable」の一例である。メトリックテーブル1920は、所与の時間帯における目的地ごとの発生頻度を列挙する。例えば時間帯が朝であることを所与として、「職場」が目的地となる頻度は28回であり、「ジム」が目的地となる頻度は3回であり、「自宅」および「ガソリンスタンド」が目的地となる頻度はゼロである。
図19Dは、さらに別の実施形態によるメトリックテーブル1930を示すグラフィカル表現である。図示の実施形態では、メトリックテーブル1930は図19Aに示す目的地テーブル「destTable」の一例である。メトリックテーブル1930は、1つまたは複数の目的地(例えば自宅、職場、ジム、ガソリンスタンド)、およびその1つまたは複数の目的地に関する1つまたは複数の確率を含む。例えば「職場」が目的地となる確率は0.3であり、「自宅」が目的地となる確率は0.4である。
図20は、一実施形態による、様々な種類の停止を要約するためのテーブル2000を示すグラフィカル表現である。テーブル2000は、システムの準備ができていない停止、短い停止、中位の停止、集配の停止、および長い停止を含む。当業者は、テーブル2000が他の種類の停止を含んでもよいことを理解されよう。
実施形態の前述の説明は、例示と説明を目的として行われたものである。したがって、開示された実施形態が本発明の全てではないし、本発明を上記の実施形態に限定するものでもない。本発明は、上記の開示にしたがって、種々の変形が可能である。本発明の範囲は上述の実施形態に限定解釈されるべきではなく、特許請求の範囲にしたがって解釈されるべきである。本発明の技術に詳しい者であれば、本発明はその思想や本質的特徴から離れることなくその他の種々の形態で実現できることを理解できるであろう。同様に、モジュール・処理・特徴・属性・方法およびその他の本発明の態様に関する名前付けや分割方法は必須なものでものないし重要でもない。また、本発明やその特徴を実装する機構は異なる名前や分割方法や構成を備えていても構わない。さらに、当業者であれば、モジュール・処理・特徴・属性・方法およびその他の本発明の態様は、ソフトウェア、ハードウェア、ファームウェアもしくはこれらの組合せとして実装できることを理解できるであろう。また、本発明をソフトウェアとして実装する場合には、モジュールなどの各要素は、どのような様式で実装されても良い。例えば、スタンドアローンのプログラム、大きなプログラムの一部、異なる複数のプログラム、静的あるいは動的なリンクライブラリー、カーネルローダブルモジュール、デバイスドライバー、その他コンピュータプログラミングの当業者にとって既知な方式として実装することができる。さらに、本発明の実装は特定のプログラミング言語に限定されるものではないし、特定のオペレーティングシステムや環境に限定されるものでもない。以上のように、上記の本発明の説明は限定的なものではなく例示的なものであり、本発明の範囲は添付の特許請求の範囲にしたがって定められる。