(57)【特許請求の範囲】
【請求項１】
地理データベースを使用するナビゲーション応用プログラムのユーザにルーティング案内を提供する方法であって、起点と目的地との間のルートは上記地理データベース内に含まれる順序付けられた複数のデータエンティティによって定義され、上記順序付けられた複数の各データエンティティは上記起点と目的地との間の連続するナビゲート可能なルートを形成する道路セグメントを表しており、上記方法は、
上記順序付けられた複数のデータエンティティを使用して複数のデータ構造を作成するステップを備え、上記複数の各データ構造は上記ルートに沿う運転命令を供給すべき位置に関する情報を含んでおり、
上記順序付けられた複数のデータ構造からトークンリストを作成するステップを更に備え、上記トークンの少なくとも幾つかは上記運転命令に使用されるワードに対応する記号からなっており、
上記記号に関連する索引を、上記運転命令に使用されるワードを解説することができるデータと共に使用し、上記順序付けられた複数のトークンに対応する順序に従って上記各データを作成するステップ、
を更に備えていることを特徴とする方法。
【請求項２】
上記記号に関連するデータは、オーディオデータからなる請求項１に記載の方法。
【請求項３】
上記トークンの少なくとも幾つかは文字列データからなり、上記方法は更に、
テキスト・スピーチプログラムを使用し、上記文字列データからなる上記各トークン毎にオーディオデータファイルを作成するステップと、
上記テキスト・スピーチプログラムによって作成された各オーディオデータファイルを、上記記号に関連する上記オーディオデータと共に、上記順序付けられた複数のトークンに対応する順序に従って供給するステップと、
を備えている請求項２に記載の方法。
【請求項４】
上記記号に関連するデータは、文字テキスト列を含んでいる請求項１に記載の方法。
【請求項５】
上記記号に関連するデータは、文字図形データを含んでいる請求項１に記載の方法。
【請求項６】
上記運転命令をユーザが要望している言語で提示するようにその仕様を受けるステップと、
上記複数の各データ構造に複数の規則を含む１つの規則テーブルを使用して上記順序付けられた複数のトークンを形成するステップと、
を更に備え、
上記１つの規則テーブルは複数の使用可能な規則テーブルから選択され、上記１つの規則テーブルはユーザが要望している上記運転命令提示言語に対応し、少なくとも別の複数の規則テーブルは、ユーザが要望している上記運転命令提示言語以外の言語に対応している
請求項１に記載の方法。
【請求項７】
上記順序付けられた複数のトークンを作成するステップは、更に、
規則のセットを、上記順序付けられた複数の各データ構造に適用するステップと、
上記順序付けられた複数の各データ構造毎に、出力リストを形成するステップと、
を備え、
上記出力リストの少なくとも幾つかは、少なくとも１つの記号を含んでおり、
上記各出力リストからトークンシーケンスを形成するステップと、
上記各出力リストから形成された上記トークンシーケンスを組合せることによって、上記トークンリストを形成するステップと、
を更に備えている請求項１に記載の方法。
【請求項８】
上記出力リストの少なくとも幾つかはキーを含み、上記各キーは上記規則のセットが適用される対応データ構造からのデータを含み、
上記方法は、更に、
上記各キーを拡張してトークンを形成するステップと、
拡張することによって形成された上記トークンを、上記出力リストから形成された上記トークンシーケンス内に含ませるステップと、
を備えている請求項７に記載の方法。
【請求項９】
上記拡張ステップは、
上記キー内の値を記号に関連付けるメンバー値マップを使用し、上記記号を上記キーから形成された上記トークン内に含ませるステップ
を備えている請求項８に記載の方法。
【請求項１０】
上記拡張ステップは、
上記キーに関連するスタイルコードを識別するステップと、
複数の使用可能なスタイルフォーマットから、上記キー内で識別されたスタイルコードに対応する１つのスタイルフォーマットを選択するステップと、
上記１つのスタイルフォーマットに従って文字列を形成するステップと、
上記文字列を上記キーから形成された上記トークン内に含ませるステップと、を備えている請求項８に記載の方法。
【請求項１１】
上記拡張ステップは、
上記キーに関連するフォーマッタコードを識別するステップと、
上記フォーマッタコードまでに打切られた文字列を形成するステップと、
上記文字列を上記キーから形成された上記トークン内に含ませるステップと、を備えている請求項８に記載の方法。
【請求項１２】
地理データベースを使用するルート案内プログラムのための方法であって、
上記ルートに沿う運転命令を供給すべき位置に関連する上記地理データベースからのデータを各々が含んでいる順序付けられた複数のデータ構造を受信すると、上記運転命令を供給することができる順序付けられたトークンのシーケンスからなるトークンリストを形成するステップ、
を備え、
上記トークンは、
上記運転命令内に使用される１つまたはそれ以上のワードを表す記号、及び
文字列、
の一方からなり、
上記トークンリストを形成するステップは、
上記順序付けられた複数の各データ構造に規則セットを適用するステップと、
上記規則セットの上記適用に基づいて上記各データ構造毎に出力リストを作成するステップと、
上記各出力リストからトークンシーケンスを形成するステップと、
上記各出力リストから形成されたトークンシーケンスを組合せて上記トークンリストを形成するステップと、
を備えていることを特徴とする方法。
【請求項１３】
上記トークンシーケンスを形成するステップは、更に、
もし上記出力リストがキーを含んでいれば、上記キーを拡張してトークンを形成するステップと、
上記キーから形成された上記トークンを、上記出力リストのために形成された上記トークンシーケンス内に含ませるステップと、
を備え、
上記キーは、上記キーを含む上記出力リストを形成した関連データ構造からの値を含んでいる請求項１２に記載の方法。
【請求項１４】
コンピュータ可読媒体上に格納されているルート案内プログラムであって、
地理データベースから入手したデータを含むデータ構造のリストを受信する第１のプログラムルーチンを備え、上記地理データベースからのデータを含むデータ構造のリスト内の各データ構造は、起点と目的地との間のルートに沿う運転命令を上記ルート案内プログラムのユーザに提示する位置に関係しており、
上記各運転データ構造内に含まれるデータを試験し、上記試験が満足されたことに基づいて出力リストを作成する規則を含む第１の規則テーブルと、
上記第１の規則テーブル内の規則を、上記データ構造のリスト内の上記各データ構造に適用して作成された組合せ出力リストから形成された第１のデータオブジェクトと、
を更に備え、
それにより、上記第１のデータオブジェクトを解説することによって上記運転命令をエンドユーザへ供給できるようにした
ことを特徴とするルート案内プログラム。
【請求項１５】
上記各データ構造内に含まれるデータを試験し、上記試験が満足されたことに基づいて出力リストを作成する規則を含む第２の規則テーブルを更に備え、
上記第１の規則テーブルは、上記出力リストを作成して視覚的に供給される上記運転命令を解説するのに適するトークンを有する上記第１のデータオブジェクトを形成する規則を含み、
上記第２の規則テーブルは、上記出力リストを作成して可聴的に供給される上記運転命令を解説するのに適するトークンを有する上記第１のデータオブジェクトを形成する規則を含んでいる
請求項１４に記載のルート案内プログラム。
【請求項１６】
上記各運転データ構造の内容を試験し、上記試験が満足されたことに基づいて出力リストを作成する規則を含む第２の規則テーブルを更に備え、
上記第１の規則テーブルは、上記出力リストを作成して英語で供給される上記運転命令を解説するのに適するトークンを有する上記第１のデータオブジェクトを形成する規則を含み、
上記第２の規則テーブルは、上記出力リストを作成して英語以外の言語で供給される上記運転命令を解説するのに適するトークンを有する上記第１のデータオブジェクトを形成する規則を含んでいる
請求項１４に記載のルート案内プログラム。
【請求項１７】
上記出力リストは、上記データ構造のリストからのデータを含む記号を含んでいる請求項１４に記載の発明。
【請求項１８】
上記出力リストは、上記データ構造のリストからのデータを含むキーを含んでいる請求項１４に記載の発明。
【請求項１９】
上記出力リスト内のキーを、文字列に変換する拡張機能を更に備えている請求項１８に記載の発明。
【請求項２０】
上記データ構造内の値を記号にマップすることを含むメンバー値マップと、
上記出力リスト内の上記キーを受信するように結合され、上記メンバー値マップを使用して上記出力リスト内の対応キー内の値にマップされているとして識別された上記メンバー値マップからの記号を、上記第１のデータオブジェクトへ追加する拡張機能と、
を更に備えている請求項１８に記載の発明。
【発明の詳細な説明】
【０００１】
【付録への参照】
本明細書に含まれ、本明細書の一部を形成しているのは 26 ページからなる印刷された付録である。
【０００２】
【著作権資料への参照】
本特許文書の開示の一部分は、著作権保護の対象である資料を含む。著作権の所有者は、本特許文書または特許開示が、特許商標庁のファイルまたは記録に出現した時には誰がファクシミリ再生しても異議は申立てないが、それ以外は全ての著作権を留保する。
【０００３】
【発明の属する技術分野】
本発明は、ナビゲーション応用プログラムのエンドユーザにルート案内情報を提供するシステム及び方法に関する。
【０００４】
【従来の技術】
発明の背景
エンドユーザにいろいろなナビゲーション機能及び特色を提供する、コンピュータをベースとするナビゲーション応用プログラムを使用することができる。若干のナビゲーション応用プログラムは、乗用車、トラック、バス、等々のようなビークル内に設置されているナビゲーションシステム内に含まれている。これらのビークル搭載システムは、ナビゲーションシステムを搭載しているビークルの運転手のようなエンドユーザに、いろいろなナビゲーティング機能を提供することができる。例えば、若干のナビゲーション応用プログラムは、ある地理領域内の複数の位置の間の道路を走行するための最適ルートを決定することができる。エンドユーザからの入力、及びオプションとしてユーザの物理的位置を決定できる機器（例えば、ＧＰＳシステム）からの入力を使用して、ナビゲーション応用プログラムは地理領域内の２つの位置の間のいろいろなルートを調べ、出発点から目的地まで走行するのに最適なルートを決定することができる。次いでナビゲーション応用プログラムは、出発点から目的地までエンドユーザが走行するのに必要な運転操作（以下、単に運転ということが多い）を識別する命令の形状で、最適ルートに関する情報をエンドユーザに提供することができる。命令は、エンドユーザがルートを走行中に供給される視覚及び／またはオーディオ命令の形状をとることができる。若干のナビゲーション応用プログラムは、目的地までのルートを示す詳細地図、ルートに沿ういろいろな位置においてとるべき運転の型、若干の型の特色の位置、等々をコンピュータディスプレイ上に表示することができる。
【０００５】
コンピュータをベースとするナビゲーション応用プログラムは、ビークル搭載のナビゲーションシステムの他に、他のさまざまな種類のコンピュータハードウェアプラットフォーム上に、及び他の種類のコンピュータアーキテクチャと共に設けられる。コンピュータベースナビゲーション応用プログラムは、無線ネットワーク及びインターネットを含むネットワーク上に設けることもできる。コンピュータベースナビゲーション応用プログラムは、パーソナルディジタル支援、電話機、ページャ、等々のようなハンドヘルドコンピュータデバイス上に含ませることもできる。更に、コンピュータをベースとするナビゲーション応用プログラムは、パーソナルナビゲーションシステムのような特別目的電子デバイス上に含ませることもできる。
【０００６】
これらの、及び他のナビゲーティング機能を提供するために、ナビゲーション応用プログラムは、地理データベースを使用する。地理データベースは、ある地理領域内の物理的特色を表すデバイスを含む１つまたはそれ以上のデータベースの形状であることができる。地理データベースは、交差点における転回禁止、道路の速度制限、いろいろな道路の街路名、いろいろな道路に沿う番地範囲、等々のような、地理領域内の道路及び交差点を表すデータを含むこともできる。
【０００７】
ナビゲーション応用プログラムは多くの重要な特色を提供するが、それでも改善の余地が存在している。改善の余地が存在する１つの分野は、エンドユーザに有意味の運転情報を提供することに関係がある。例えば、ナビゲーション応用プログラムがエンドユーザに運転命令を供給する時に、運転中の道路の名前に関する情報を供給する（例えば、「次のファーストストリートとの交差点をやや右方向に曲がってメインストリートを進んで下さい」）と有用であるかも知れない。従って、より多くの細部を含むより有意味の運転命令を供給するためには、表された物理的な地理特色に関して使用可能な情報の可用性、品質、及び型を斟酌する必要がある。
【０００８】
改善する余地がある分野の別の例は、運転命令を異なる言語で供給することに関係がある。例えば、ナビゲーションシステムを設置したレンタカーを運転しているある人は、可聴運転命令を英語で聞きたいと考えるかも知れない。同じレンタカーの別の運転手は、ナビゲーションシステムからスペイン語の可聴運転命令を聞きたいかも知れない。また更に、同じレンタカーの別の運転手は、ナビゲーションシステムから供給される運転命令を、ディスプレイモニタ上に図形と共に英語のテキストで得たいかも知れない。従って、同じ自動車内の同一ナビゲーションシステムがこれらの異なる各運転手の好みを受入れながら、詳細且つ有意味な運転命令を供給できるようになっていると便利である。
【０００９】
別の分野は、ナビゲーション応用プログラム上のルート案内特色をパーソナルコンピュータ上で走させることに関している。もしエンドユーザがパーソナルコンピュータ上でナビゲーション応用を走らせていれば、彼／彼女は後刻使用するために運転命令を印刷するか、ディスクファイルに保管したいかも知れない。この状況では、運転命令は、印刷または使用可能なファイルフォーマットで適切に表し、フォーマットする必要がある。
【００１０】
他の分野は、もしナビゲーション応用プログラムがパーソナルディジタル援助のようなハンドヘルドコンピューティングデバイスから作動されていれば適用されるものである。この状況では、エンドユーザはデバイスのディスプレイ画面上に運転命令を表示させたいかも知れない。もしナビゲーション応用プログラムが電話機を介して供給されれば、エンドユーザは運転命令を音声メッセージとして聞くことができる形状で入手したいか、または電話機のディスプレイ画面上に表示させたいかも知れない。
【００１１】
エンドユーザが、どの方式で運転命令を受けたいのかはさまざまであるから、運転命令の供給もいろいろな方式で行うことが好ましい。しかしながら、これらの異なる種類のデバイスは、異なる能力及びユーザインタフェースを有しているので、これらの異なる種類のデバイスの全てを受入れることができる有意味のルート案内特色を供給するナビゲーション応用プログラムを提供することは困難である。
【００１２】
従って、ナビゲーション応用プログラムのエンドユーザに対して有意味の情報の供給を容易ならしめるプログラムに対する要望が存在している。
【００１３】
改善の必要があるさらなる分野は、広範な改訂及びカストマイゼーションを必要とせずに、さまざまに異なるソフトウェア及びハードウェア環境及びプラットフォームにおいて容易に使用できる汎用ルート案内モジュールまたはツールを提供することに関係がある。
【００１４】
【発明の概要】
上述した、及び他の目的を達成するために、ナビゲーション応用プログラムを使用する改善されたルート案内を提供する方法及びシステムを発明した。運転データ構造は、ルート上の運転命令を供給すべき各位置毎に地理データベースからのデータを含むように形成される。これらの運転データ構造は、トークンのリストを形成するために使用される。トークンは、別のデータのアイテム（文字列、オーディオデータ、または図形データの何れかであることができる）を参照する文字列または記号の何れかであることができる。運転命令は、トークンのリスト内のトークンを解説( explicating ) することによって供給される。トークンの解説は、トークン内に含まれているか、またはトークンによって参照される全てのデータを、トークンのリスト内に指定されている順序で供給することによって行われる。もしトークンが記号であれば、解説はその記号（文字列、オーディオデータ、または図形データの何れかであることができる）によって参照されるデータを供給することを含む。トークンのリストは、各運転データ構造毎に形成されるトークンのシーケンスを組合せることによって作成される。トークンの各シーケンスは、運転データ構造内のデータに対してある規則セットを適用することによって形成されたそれぞれの出力リストから形成される。運転データ構造のための出力リストの内容は、記号及びキーを含むことができる。出力リスト内の記号は、その運転データ構造のために形成されるトークンのシーケンス内に含まれるトークンを形成するために使用される。出力リスト内のキーは、対応する運転データ構造内のデータを参照し、その運転データ構造のために形成されるトークンのシーケンス内に含まれるトークンを形成するために拡張される。
【００１５】
【実施例】
Ｉ．ナビゲーションシステムプラットフォーム／環境の例
図１に、ナビゲーションシステム１１０の例をブロック図で示す。ナビゲーションシステム１１０は、ハードウェア及びソフトウェア成分の組合せである。ナビゲーションシステム１１０のハードウェア成分は、プロセッサ１１２、メモリ１２０、等々を含むことができる。
【００１６】
ナビゲーションシステム１１０は静止型であることも、またはポータブルであることもできる。図１に示す実施例では、ナビゲーションシステム１１０は、乗用車、トラック、またはバスのようなビークル１１１内に配置されたポータブルシステムである。後述するように、他の実施例ではナビゲーションシステム１１０は、他のプラットフォーム内に設置することができる。
【００１７】
図１に示す実施例では、ナビゲーションシステム１１０は、それを搭載しているビークル１１１の位置を決定する測位システム１２４も含んでいる。測位システム１２４は、ビークル１１１の速度、向き、方向、等々を感知するセンサ１２５または他の成分を含むことができる。測位システム１２４は、ＧＰＳシステムを含むこともできる。
【００１８】
ナビゲーションシステム１１０は、ユーザインタフェース１３１をも含む。ユーザインタフェース１３１は、ナビゲーションシステムのエンドユーザからの命令及び／または入力を受けるための適切な手段１２７を含む。例えば、ユーザインタフェース１３１は、入力パネル、キーボード、マクロホン、音声認識ソフトウェア、等々を含むことができ、これらを通してエンドユーザはナビゲーション情報を要求することができる。ユーザインタフェース１３１は、エンドユーザに情報を戻して供給する適切な手段１２９も含んでいる。ユーザインタフェース１３１は、ディスプレイまたはスピーカ（音声合成ハードウェア及びソフトウェアを含む）を含むこともでき、これらを通してエンドユーザはナビゲーションシステム１１０からの情報を入手することができる。
【００１９】
上述した成分は全て普通のもの（または、普通ではないもの）であり、これらの成分の製造及び使用は当分野においては公知である。例えば、プロセッサ１１２は、日立ＳＨ 1、インテル 80386、インテル 960、モトローラ 68020のようなフラットアドレス空間を使用する 32 ビットプロセッサ（または、類似の、またはより大きいアドレス空間を有する他のプロセッサ）のような、ナビゲーションシステム内に使用されるどのような型であることもできる。これら以外の型のプロセッサ、及び将来開発されるかも知れないプロセッサも適当であり得る。
【００２０】
II. 地理データベース
エンドユーザにナビゲーション特色を提供するために、ナビゲーションシステム１１０は地理データ１４０を使用する。地理データ１４０は、ビークル１１１内に格納することができる。代替として、地理データ１４０をビークル１１１から離して格納し、ナビゲーションシステム１１０の一部であることができる無線通信システムを通してビークル１１１内のナビゲーションシステム１１０において使用できるようにすることもできる。別の代替では、地理データ１４０の一部分をビークル１１１内に格納し、地理データ１４０の一部分を遠隔位置に格納して、遠隔位置から無線通信システムを通してビークル１１１内のナビゲーションシステム１１０が使用できるようにすることができる。図１に示す実施例では、地理データ１４０の若干、または全ては、ビークル１１１内に位置する媒体１３２上に格納されている。従って、ナビゲーションシステム１１０は、媒体１３２を設置し、アクセス可能にするドライブ１１４（または他の適当な周辺デバイス）を含んでいる。
【００２１】
一実施例では、記憶媒体１３２はＣＤ−ＲＯＭである。別の代替実施例では、記憶媒体１３２はＰＣＭＣＩＡカードであることができ、この場合ドライブ１１４はＰＣＭＣＩＡスロットに置換される。固定、即ちハードディスク、ＤＶＤディスク、または現在使用可能な他の記憶媒体を含む他のいろいろな記憶媒体を使用することができ、また将来開発されるかも知れない記憶媒体を使用することもできる。
【００２２】
地理データ１４０は、１つまたはそれ以上のコンピュータ可読データファイルまたはデータベースの形状であることができる。地理データ１４０は、１つまたはそれ以上の地理領域またはカバレッジエリア内の、またはそれ／それらに関係する道路及び交差点に関する情報を含む。この情報は、カバーされている地理領域内の道路の位置を指定するデータを含み、また道路上の走行方向に関する制限（例えば、一方通行路）、転回禁止、街路番地、街路名、速度制限、等々のような道路に関係する特色に関するデータをも含んでいる。地理データは、ホテル、レストラン、博物館、スタジアム、オフィス、自動車販売店、自動車修理工場、等々のような地理領域内の関心点に関する情報も含むことができる。地理データ１４０は、市、町、または他のコミュニティのような場所に関する情報も含むことができる。地理データベース１４０は、地理領域に関する他のデータを含むことができる。
【００２３】
地理データ１４０は、さまざまな異なる形状をとることができる。一実施例では、地理データ１４０は、複数の道路セグメントデータエンティティを含んでいる。各道路セグメントデータエンティティは、地理領域内のナビゲート可能な道路の一部（即ち、セグメント）を表している。各物理的道路セグメントは、それに関連する２つのノード、即ちその道路セグメントの各端点に１つずつのノードを有している。この実施例では、地理データ１４０は、これらのノードを表す複数のデータエンティティも含んでいる。各ノードデータエンティティは、道路セグメントの端の１つのノードの位置（例えば、地理座標）を識別する。一実施例では地理データは、カリフォルニア州サニービルの Navigation Technologies Corporationから入手したものであるが、他のエンティティによって開発され、提供されているデータも、本発明と共に使用するのに適していることが理解されよう。
【００２４】
III.  ナビゲーションプログラミング
Ａ．ナビゲーションプログラミングの概要
ハードウェア成分及び地理データベースの他に、ナビゲーションシステム１１０はナビゲーションプログラミング１１８を含むか、または使用する。ナビゲーションプログラミング１１８は、ナビゲーションシステム１１０が遂行する機能及び／または特色を供給するソフトウェアを含む。ナビゲーションプログラミング１１８は、地理データ１４０を、ユーザインタフェース１３１からの入力と共に、及び多分測位システム１２４からの出力と共に使用して、いろいろな特色及び／機能を提供する。
【００２５】
ナビゲーションプログラミング１１８は、ナビゲーションシステム１１０内の不揮発性記憶媒体１１６内に格納することができる。代替として、ナビゲーションプログラミング１１８及び地理データ１４０は一緒に、単一の記憶デバイスまたは媒体上に格納することもできる。代替として、ナビゲーションプログラミング１１８は遠隔位置に配置することができ、通信システムを通してナビゲーションシステム１１０へ供給し、ナビゲーションシステム１１０によってアクセスすることができる。
【００２６】
ナビゲーションプログラミング１１８は、分離した成分応用（プログラム、サブプログラム、ルーチン、またはツールとも呼ばれる）で形成することができる。ナビゲーションプログラミング１１８の成分応用は、定義されたプログラミングインタフェースを通して一緒に動作することができる。図２は、図１のナビゲーションシステム１１０内に含まれるナビゲーションプログラミング１１８の一実施例のための成分応用の若干を示すブロック図である。図２は、ナビゲーションプログラミング１１８を構成している全ての成分応用の一部分だけを示しているに過ぎない。他の成分応用、プログラム、またはツールもナビゲーションプログラミング１１８内に含むことができる。
【００２７】
図２に示す実施例では、ナビゲーションプログラミング１１８は、１つのナビゲーション応用２１０、及び１つまたはそれ以上のナビゲーションツール２１２を含んでいるように示されている。ナビゲーション応用２１０は、ナビゲーションシステム１１０の機能を総合的に管理するプログラム、またはルーチンである。ナビゲーション応用２１０は、測位システム１２４及びユーザインタフェース１３１のようなナビゲーションシステムハードウェアのための支援、及びインタフェースを含むこともできる。この目的のために、図２に示すナビゲーション応用２１０は、ユーザインタフェース機能２２０を含んでいる。これらのユーザインタフェース機能２２０は、エンドユーザに対するメニューをユーザインタフェースハードウェア１３１のディスプレイ画面上に提示し、ユーザインタフェースハードウェア１３１を介してエンドユーザから入力を受入れ、結果をユーザインタフェースハードウェア１３１のディスプレイ画面上に表示する、等々を提供することができる。
【００２８】
ナビゲーションツール２１２は、ナビゲーションプログラミング１１８によって遂行される特定のナビゲーション機能を提供するプログラムである。図２に示す実施例では、ナビゲーションツール２１２は地理データ１４０を使用する機能を提供するプログラムである。ナビゲーションツール２１２によって提供される特色または機能は、ルート計算、地図表示、ルート案内、及び他の特色を含んでいる。ナビゲーションツール２１２は、ナビゲーション応用２１０からナビゲーション情報に対する要求を受信する。ナビゲーションツール２１２は地理データベース１４０に要求してそれからデータを入手し、ナビゲーション応用２１０からのナビゲーション情報に対する要求を満足させるようにデータを使用する。ナビゲーションツール２１２は、媒体１３２上の地理データベース１４０から直接地理データを入手することも、または代替として、ナビゲーションツール２１２はインタフェース層２１３及びオペレーティングシステム２１４を通してデータを入手することもできる。
【００２９】
一実施例では、ナビゲーションツール２１２は比較的ポータブルであるモジュールとして設けられており、異なる種類のナビゲーションプログラム、システム、及び／またはプラットフォーム内に組み込むことができる。各ナビゲーションツールは、ナビゲーション応用２１０及び他の何等かのナビゲーションツールと共にコンパイルして、不揮発性媒体１１６上に格納される単一の実行可能なプログラムを形成することができる。代替として、ナビゲーションツールは、１つまたはそれ以上のスタンドアロンプログラムとして使用することもできる。好ましい実施例では、ナビゲーションツールは、それらのプログラミング、データの使用、及びナビゲーション応用２１０に対する関係へのオブジェクト指向アプローチを使用する。各ナビゲーションツールは１つまたはそれ以上のオブジェクトを形成する。各オブジェクトは、入力データを受信して所定の機能に従って出力データを生成し、また各オブジェクトは、他のオブジェクト上の方法を呼出すことができる。この実施例では、各オブジェクトはそれ自体の専用メモリを有し、このメモリは他のオブジェクトに対して不透明である。開示する実施例では、オブジェクトは１つのオブジェクトから別のオブジェクトへデータを輸送するために使用することも、または入力として受信したデータを変換するために使用することもできる。一実施例では、ナビゲーションツール２１２はＣプログラミング言語で書かれているが、代替実施例ではＣ＋＋、Java、Visual Basic、等々のような他のプログラミング言語を使用することができる。
【００３０】
Ｂ．ルート計算ツール
図２の実施例では、ルート計算機能は、ルート計算ツール３００によって遂行される。ルート計算ツール３００は、指定された位置間のルートを決定する。ルート計算ツール３００は、少なくとも起点と所望の目的地とを識別するデータの形状で入力を受信する。ルート計算ツール３００は、ルートの計算に影響を与える付加的な入力情報を受信することができる。例えば、ルート計算ツール３００への入力は、有料道路または高速道路を避ける等のようなユーザの好みを指定するデータを含むことができる。また入力は、ルートが開始される日時（ルート計算に影響し得る）を識別するデータを含むこともできる。
【００３１】
図２の実施例では、ルート計算ツール３００は、その入力をナビゲーション応用２１０から受信する。ナビゲーション応用２１０においてはユーザインタフェース機能２２０は、入力をユーザインタフェース１３１から受信する。入力は、所望の目的地までの計算すべきルートに対するエンドユーザからの要求を含むことができる。ナビゲーション応用２１０は、測位システム１２４からのビークル１１１の位置を指示する情報を受信することもできる。測位システム１２４からの情報は、ナビゲーション応用２１０によって使用されてビークル１１１の現在位置が決定される。代替として、エンドユーザは、ルートのための出発位置を指定することができる。これらの入力を使用して、起点及び目的地の位置を指定するデータが決定される。この機能は、ナビゲーション応用２１０内に含まれているプログラミングによって提供され、次いでこれらのデータはルート計算ツール３００へ引渡される。代替として、この機能は、ナビゲーション応用２１０及びルート計算ツール３００をインタフェースするジオコーディング( geo-coding )ツールのような別のナビゲーションツールから提供することができる。
【００３２】
起点及び目的地の位置を識別するデータが与えられると、ルート計算ツール３００は起点と目的地との間のルートを計算する。ルート計算ツール３００は、この目的のためにいろいろな手段、またはアルゴリズムを使用することができる。ルートを計算する方法が 1998 年３月25日に出願された一連番号 09/047,698 に開示されており、本明細書にはその全文が参照として採り入れられている。（この特許出願に開示されている方法は、ルートを計算することができる方法の若干だけを表しており、本発明の特許請求の範囲はこれらのルート計算のどのような特定の方法にも限定されるものではない。現在知られている、または将来開発されるどのような適当なルート計算方法も使用可能である。）
ルート計算ツール３００は出力を生成する。図２の実施例では、ルート計算ツール３００の出力は、ルート計算オブジェクト３４２の形状である。図３は、ルート計算オブジェクト３４２の成分を表す図である。ルート計算オブジェクト３４２は、複数の道路セグメントデータエンティティ（即ち、seg1、seg2、seg3、・・・、seg(n)）を識別する順序付けられたリスト３４４を含んでいる。複数のデータエンティティは、ルート計算ツール３００によって計算された起点と目的地との間の連続するナビゲート可能なルートを形成している道路セグメントを表す。これらのセグメントは連続するルートを形成しているから、各セグメントは１つのノードを、リスト内のその後続セグメントと共有している。例えば、図３に示すように、セグメント “seg2" 及び “seg3" は共通ノード“Ｎ３”を有している。ルート計算オブジェクト３４２は、道路セグメントデータエンティティの順序付けられたリストの他に、他の情報３４６を含むことができる。
【００３３】
この実施例では、ルート計算ツールによって作成されるルート計算オブジェクト３４２は、ルート案内ツール４００への入力として使用される。ルート案内ツール４００はルート計算オブジェクト３４２内のデータを、地理データベース１４０からの付加的情報と共に使用して、ナビゲーション情報をナビゲーション応用２１０へ戻す。ルート案内ツール４００からナビゲーション応用２１０へ戻されたデータをユーザインタフェース機能２２０へ直接送って、ユーザインタフェースハードウェア１３１を介してエンドユーザに提示することができる。代替として、ルート案内ツール４００からナビゲーション応用２１０へ戻されたデータは、ナビゲーション応用２１０内のプログラミングによって更に処理することができる。ユーザインタフェースハードウェア１３１を介するエンドユーザへの情報の提示は、可聴命令、視覚テクスチァ命令、視覚図形命令、またはこれら、または他の型の情報表現の何等かの組合せの形状であることができる。
【００３４】
Ｃ．ルート案内ツール／運転生成ツール
再度図２を参照する。ルート案内ツール４００は、３つのナビゲーションツール、即ち、運転生成ツール５００、トークン発生器ツール６００、及び解説ツール７００からなっている。この実施例では、これらのナビゲーションツールは上述したようなツールの特性を有している。
【００３５】
運転生成ツール５００はその入力として、ルート計算ツール３００が形成したルート計算オブジェクト３４２を使用する。（運転生成ツール５００によって遂行される機能を提供する方法が、1997年７月15日に同時出願された一連番号 08/893,201 に開示されており、本明細書はその全文を参照として採り入れている。本明細書の運転生成ツールはこの引用した出願に類似しているが、以下に説明する点が異なっている。）
運転生成ツール５００は、少なくとも２つの機能を遂行する。運転生成ツール５００はルート計算オブジェクト３４２内のセグメントデータエンティティの順序付けられたリスト内の情報を使用して、運転または助言( advisory )命令と共に、計算されたルートに沿うどの位置をエンドユーザに解説すべきかを決定する。更に、解説の要求により決定された各位置毎に、運転生成ツール５００は必要情報を集めて特定の位置のための運転または助言命令を発生する。
【００３６】
これらの機能を遂行する際に、運転ツール５００は２つのオブジェクトを使用する。図４を参照する。運転ツール５００は、（運転生成）構成オブジェクト５３０及び運転生成オブジェクト５４０を含んでいる。（運転生成）構成オブジェクト５３０は運転規則５３２を含んでいる。これらの運転規則５３２は、ルート計算オブジェクト３４２内の、及び地理データベース１４０からのデータを使用して適用される。これらの規則は、計算されたルートに沿う位置を運転命令を用いて解説すべき時点を決定する。前述したように、ルート計算オブジェクト３４２は、道路のセグメントを表すデータエンティティのリスト３４４を含んでいる。このリストは連続するルートを形成する道路セグメントを表しているから、リスト３４４内のデータエンティティによって表されている各道路セグメントは、リスト内の隣接データエンティティによって表されている道路セグメントと１つのノード（即ち、「端点」）を共有している。運転規則５３２は、リスト３４４内のこれらの各ノードにおいて適用される。
【００３７】
運転規則５３２を適用するに当たって、計算されたルートの走行の方向が斟酌される。即ち、計算されたルートが、運転規則５３２によって試験中のノードへ導入するようなセグメントは、入口セグメントとして識別される。計算されたルートが、運転規則５３２によって試験されているノードに導入しないようなセグメントは、出口セグメントとして識別される。更に、計算されたルートの一部ではないが、入口及び出口セグメントとこの同一ノードを共有する他の全てのセグメントが識別される。これらの全ての道路セグメントを表すデータエンティティは、データベース１４０から入手される。
【００３８】
運転規則５３２はテーブル５３３の形状で供給される。（運転規則を含むテーブルの例を、付録の表１に示してある。）テーブル５３３は、複数の運転型５３４及び複数の運転条件試験５３５を定義する。これらの各運転型５３４は、計算されたルートから試験されているノードにおいて発生し得る特定の種類の道路構成変化を特徴付ける。各運転型５３４には、独特なコードまたは数が割当てられる。
【００３９】
各運転条件試験５３５は、肯定または否定の答だけを受入れるように定められている。テーブル５３３内に定義されている各運転型５３４は、複数の運転条件試験５３５の独特なサブセットに関連付けられている。各運転条件試験５３５は運転条件試験内に指定された条件が満足されているか否かを確認するために、データベース１４０から入手したデータエンティティ内のデータ（入口セグメント、出口セグメント、アクセス可能な及びアクセス不能なセグメント、等々に関連するデータのような）を使用する。計算されたルート３４４内の各ノード毎に、もし運転型５３４に関連する全ての運転条件試験が満足されれば、そのノード位置のための運転命令が要求される。
【００４０】
運転ツール５００によって解説を要求していると決定された各位置毎に、運転ツール５００は運転データ構造５５０を形成し、その運転データ構造を運転生成オブジェクト５４０へ追加する。運転生成ツール５００によって形成された各運転データ構造５５０は、解説をエンドユーザに提供することが決定されたルートに沿う位置において、エンドユーザに運転命令を供給するための必要情報を含む。運転データ構造に要求されるデータの若干は、そのノードの位置において運転命令が必要か否かを決定するために試験されたセグメントデータエンティティ内に含まれているか、またはそれらのセグメントデータエンティティから導出される。付加的なデータを、データベース１４０から入手または導出することを、運転生成構成オブジェクトから要求されるかも知れない。
【００４１】
図５に、各運転データ構造５５０内に含まれるデータの種類を示す。一実施例では、運転データ構造５５０はＣデータ構造として形成されている。運転に関連するノードを共有するセグメントデータエンティティからのデータ、並びに地理データベースから要望されるか、または導出された何等かの付加的データを使用して、運転発生器オブジェクト５４０はいろいろな運転データ構造５５０のメンバーに対応するデータを集める。データは、それらを使用できる程度に集められる。データ構造のメンバーは、もし使用可能なデータが存在しなければ（例えば、もし運転位置における道路の１つが無名であれば）、空白のまま残すことができる。
【００４２】
データ構造５５０内に含まれているのは、そのノードにおいて合流するセグメントの数を識別するフィールド５５０（１）（１）である。そのノード内への入口及び出口セグメント５５０（１）（２）、５５０（１）（３）が識別される。更に、そのノードを共有するアクセス可能なセグメント５５０（１）（４）が識別され、そのノードを共有するアクセス不能なセグメント５５０（１）（５）が識別される。各セグメント（入口、出口、アクセス可能、及びアクセス不能）毎に、セグメントデータベース識別（ＤＢＩＤ）５５０（２）（１）、セグメントの１つまたは複数の名前（もしあれば）５５０（２）（２）、セグメント上の１つまたは複数の標識（もしあれば）５５０（２）（３）、セグメントのランク５５０（２）（４）、入口セグメントに対するセグメント分類（出口、アクセス可能、アクセス不能）５５０（２）（５）、セグメントのデータベース分類（例えば、制御されているアクセス、街路、ランプ）５５０（２）（６）、及び入口セグメントに対するセグメントの角度５５０（２）（８）を識別するためにデータ構造５５０が準備される。更に、データ構造５５０は、運転型（上述したような）５５０（４）（２）、次の運転までの距離５５０（４）（４）、及び運転が多重運転５５０（４）（１）内に含まれるか否かを識別するために使用されるフィールドを含んでいる。（多重運転は、２つの、またはそれ以上の、運転命令を同時にエンドユーザに提示することが好ましいかも知れない程、運転命令が必要であると決定された１つの位置が、運転命令が必要であると決定された別の位置に接近している時に、運転発生器オブジェクトによって定義することができる。多重運転であると定義される距離は構成可能であり、その道路セグメントに沿う速度制限、距離、ランク、等々を含むいろいろなファクタの関数であることができる。）
データ構造は、出口道路のためのコンテキスト情報５５０（３）を提供するフィールドをも含んでいる。この種類の情報は、出口セグメントが無名である場合のように、運転構造内の他の情報がその出口を完全に記述するには不十分である場合に有用であることができる。コンテキスト情報のためのフィールドは、出口セグメント名が不十分である（例えば、それが無名である）場合に、運転の出口を記述する目的地列（ストリング）５５０（３）を含むことができる。コンテキスト情報５５０（３）は、別の道路に対するその出口の位置（例えば、前、後、前方、後方、右側、または左側）を与える「位置」５５０（３）（２）のためのフィールドを含むこともできる。コンテキスト情報５５０（３）は、出口道路へ進むために取るべき角度を与える「転回角」５５０（３）（３）のためのフィールドを含むこともできる。コンテキスト情報は、運転を開始する時に使用することができ、とるべき初期ヘッディング（例えば、北、南、東、西、北西、等）を与える「ヘッィング」５５０（３）（５）のためのフィールドを含むこともできる。コンテキスト情報５５０（３）は、「に対して」５５０（３）（４）のためのフィールドを含むこともできる。「に対して」フィールド５５０（３）（４）は、運転を開始する際に使用されることを意味している。「に対して」フィールド５５０（３）（４）は、走行方向にある最初の交差点を与える。それは、出口セグメントが無名である場合にも使用することができる（例えば、「メインストリートの後を右へ曲がります」）。コンテキスト情報５５０（３）は、迂回運転のために使用することができる「出口の数」５５０（３）（６）のためのフィールドを含むこともできる。この「出口の数」フィールド５５０（３）（６）は、所望の出口に到達するまでに迂回路に沿って通過走行する出口の数を含む。
【００４３】
上述したメンバーの他に、運転データ構造５５０は付加的なメンバー５５０（５）を含むことができる。
【００４４】
運転データ構造は、助言を供給するための情報をも含んでいる。助言は、必ずしも運転には関連しない有用な解説情報の型である。助言は、道路網に変化が存在しているが、特定の運転は必要ではない場合に供給される。例えば、橋梁またはトンネルに入るか、またはそれを去る時に助言が供給される。運転データ構造５５０は、１つまたはそれ以上の助言型のリスティング５５０（４）（３）を含むフィールドを含んでいる。再度図４を参照する。特定のノードにおける運転を解説するか否かを決定し、それに伴うデータ構造５５０を形成するために使用される運転規則５３２の他に、運転構成オブジェクト５３０は助言規則５７０も含んでいる。助言規則５７０は、ルート計算オブジェクト３４２内の各ノードに適用される。運転規則５３２と同様に、助言規則５７０はテーブル５７２の形状である。（助言規則を含むテーブルの例を、付録の表２に示してある。）助言規則テーブル５７２は、助言型５７６のセット及び助言条件試験５７８のセットを含む。各助言型５７６は、あるノードにおいて供給することができる特定の種類の助言を特徴付ける。各助言型５７６には、独特なコードまたは数が割当てられている。各助言条件試験５７８は、肯定及び否定の結果だけが許されるように定められている。助言条件試験５７８の独特なサブセットが、異なる各助言型５７６に関連付けられている。もし、助言型５７６に関連する助言条件試験の全てに対して肯定の結果が得られれば、その助言型５７６はその位置における運転に関連付けられる。
【００４５】
運転の場合の結果とは異なり、助言のための規則は独特な結果を要求しない。従って、あるルートに沿う所与の位置について、１つの助言型、または複数の助言型が存在することも、または助言型が存在しないこともできる。各助言型５７６毎の数またはコードは、その位置のために形成されたデータ構造５５０内に含まれる。
【００４６】
助言規則の適用は、運転規則の適用には無関係である。従って、たとえあるルートに沿うある位置において運転規則を適用した結果、運転命令は供給する必要がないと決定されても、同一位置において助言規則を適用した結果、助言命令を供給する必要があり得る。もしある位置において助言規則を適用した結果、助言命令を供給する必要があると決定されたが、同一位置において運転規則を適用した結果、運転命令は供給する必要がないと決定されれば、その位置のために、データが使用できる範囲でデータ構造のメンバーのためのデータを含む運転データ構造が形成される。このような位置のために形成された運転データ構造は“０”の運転型を有していよう。
【００４７】
計算されたルートに沿う各ノードを運転規則を用いて試験するように、運転生成構成オブジェクト５４０はルート計算オブジェクト３４２内のデータエンティティのリスト３４４をトラバースする。上述した各フィールド毎の情報（このような情報が使用できる範囲で）を有する運転データ構造５５０が、計算されたルート内の各位置（この位置においては、何等かの運転型についての全ての運転条件試験、または何等かの助言型についての全ての助言条件試験が満足されている）毎に形成される。このプロセスによって形成された運転データ構造５５０は、運転生成オブジェクト５４０内に順番に含まれる。
【００４８】
Ｄ．ルート案内ツール／トークン発生器ツール
（１）概要
再度図２を参照する。トークン発生器ツール６００はその入力として、運転生成ツール５００によって形成された運転生成オブジェクト５４０を使用する。トークン発生器ツール６００は、（トークン発生器）構成オブジェクト６２０及びトークン発生器オブジェクト６５０を含んでいる。運転生成オブジェクト５４０内のデータ構造５５０のリスト内の情報を使用して、トークン発生器オブジェクト６５０はトークンリストを形成する。トークン発生器オブジェクト６５０自体は、解説ツール７００（または、その中に含まれる１つまたはそれ以上のツール）によって使用されて運転命令が形成され、ルート計算ツール３００によって計算されたルートをエンドユーザに解説するためにナビゲーション応用２１へ戻される。
【００４９】
図６は、トークン発生器オブジェクト６５０の成分を示す図である。トークン発生器オブジェクト６５０はトークンリスト６５２を含んでいる。トークンリスト６５２は、トークン６５５の順序付けられたシーケンスからなる。トークン６５５は、エンドユーザに対して解説される運転命令を形成するデータの断片を含むために使用される。トークンは、運転命令が供給される物理的形状（即ち、視覚またはオーディオ）には無関係であることができる。即ち、トークンは文字データまたは図形データ（視覚ディスプレイのために）、またはオーディオデータ（オーディオ再生のために）に変換することができる。従って、トークンは解説のために使用されるデータ単位の抽象を表している。
【００５０】
トークンは、２つの型のデータ、即ち記号及び文字列データを含むことができる。記号は、運転命令を供給する時に、または運転命令の一部として有意味文法構造を作成する時に、共通に使用されるワード及びフレーズ（または、図形）を表すために使用される。例えば、記号は、「交差点」、「合流」、「左に曲がりなさい」、等々のようなワードまたはフレーズのために使用することができる。一実施例では、数 00001がワード「交差点」を表し、数 00002がワード「合流」を表し、数 00003がフレーズ「左に曲がりなさい」を表す、等々のように、数が記号のために使用される。（記号、及びそれらに対応するワードまたはフレーズの例が、付録の表５に含まれている。表５の第２列は記号を含み、第１列はこれらの記号に対応する文字テキスト列を含んでいる。）
記号は、オーディオデータ、文字テキスト列データ、図形データへ、またはオーディオ、文字テキスト列、及び図形データの組合せへマップすることができる。後述するように、解説ツール７００は、ナビゲーション応用２１０への出力データへのこのマッピング能力を使用する。もし運転命令をオーディオで供給するのであれば、これらの記号によってマップされたオーディオデータ（ファイル、またはそれらの部分）が、解説ツール７００によってナビゲーション応用２１０へ戻され、運転命令を聞かせるためにナビゲーション応用２１０内のソフトウェア及びユーザインタフェース１３１内のハードウェアによって再生される。もし運転命令をビデオ画面上に表示させるのであれば、これらの記号によってマップされた文字テキスト列データ（または、図形データ）が、解説ツール７００によってナビゲーション応用２１０へ戻され、運転命令を見せるためにユーザインタフェース１３１のビデオ画面上に表示される。代替として、解説ツール７００は、運転命令を可聴及び視覚の両方で供給できるように、オーディオデータ、文字列テキストデータ、及び図形データの組合せを戻すことができる。（付録の表５の第３列は、第２列内の記号に対応するオーディオデータが再生された時に何が聞こえるかの文章記述を含んでいる。）
上述したように、トークンは、記号の代わりに文字列データを含むこともできる。文字列データは、より精巧な、及び／または有意味の運転命令を供給するために、トークン内に含ませることができる。例えば、文字列データは、運転命令をより有意味にするために、地理特色の名前（例えば、道路名または関心点名）を運転命令に追加するために使用することができる。この種類の情報の場合、地理的な名前をスピーチで表すオーディオデータ（ファイル、またはそれらの部分）は使用不能にすることができる。従って、この種類のデータのためのトークンは、地理特色名の文字列を含んでいる。この文字列データは、地理特色の名前を含む地理データベース１４０から入手することができる。例えば、運転命令「次の交差点を左へ曲がりなさい」は、記号だけを使用してトークンから形成することができる。運転「次の交差点で左折してアービングパークロードへ進入しなさい」内に含まれる地理特色の名前を使用して、より詳細な運転命令を供給することができる。後者の運転命令内のワード「アービングパークロード」は文字列「アービングパークロード」を含むトークンから導出される。
【００５１】
文字列データベースを含むトークンは、オーディオ及び視覚の両運転命令を供給するために使用することができる。文字列を含むトークンからの運転命令を可聴の形状で供給するために、テキストからスピーチへのソフトウェアを使用することができる。
【００５２】
（２）規則テーブル
トークン発生器構成オブジェクト６２０は、トークン発生器オブジェクト６５０を生成するために使用される成分を含んでいる。これらの成分は、トークンのリストを生成するために必要な構成パラメータ及びテーブルを含む。図７を参照する。トークン発生器構成オブジェクト６２０は、１つまたはそれ以上の規則テーブル６３０を含んでいる。これらの各規則テーブル６３０は、特定の種類の解説に合わせた規則を含むことができる。例えば、１つの種類の規則テーブルは、音声規則テーブル６３０（Ｖ）である。音声規則テーブル６３０（Ｖ）は、トークンが有意味オーディオ運転命令を供給するように、出力をトークン発生器オブジェクト６５０の形状で供給するのに使用される。別の種類の規則テーブルは、テキスト規則テーブル６３０（Ｔ）である。テキスト規則テーブル６３０（Ｔ）は、トークンがビデオディスプレイ上のテキストとして有意味運転命令を供給するように、出力をトークン発生器オブジェクト６５０の形状で供給するのに使用される。（付録を参照されたい。表３は視覚ディスプレイのためのトークンを生成する規則テーブルの例であり、表４はオーディオ再生のためのトークンを生成する規則テーブルの例である。）
音声及びテキストのための別々のトークン発生器オブジェクトを発生するために別々の規則テーブルを使用できるが、代替実施例では、音声及びテキストの両解説を、汎用規則テーブルによって発生させた同一トークン発生器オブジェクトから供給することができる。
【００５３】
規則テーブルは、異なる言語で解説するために設けることができる。異なる言語の文法的な差を斟酌するために、異なる言語について規則テーブルが設けられる。ある言語のための規則テーブルは、トークン発生器オブジェクト６５０内のトークン（それらから運転命令のワード及びフレーズが導出される）を、運転命令を供給している言語の正しい文法構造の正しいシーケンスに配列する。例えば英語、フランス語、スペイン語、ドイツ語、等々のために別々の規則テーブルを設けることができる。
【００５４】
代替規則テーブルも設けることができる。これらの代替規則テーブルは、特別な種類のトークン発生器オブジェクトを発生するために使用することができる。例えば、もしナビゲーションシステムがビデオディスプレイ能力に制限されていれば、代替規則テーブルはトークン発生器から導出される運転命令が適切に制限されるようにトークン発生器を発生するために使用することができる。
【００５５】
図８及び９（及び付録の表３及び４）を参照する。各規則テーブル６３０は、運転オブジェクト５４０内の順序付けられた複数の各運転データ構造５５０に適用される試験、関連動作、及び出力を含むケースの構造化リストを含む。各運転データ構造５５０毎にトークン発生器オブジェクト６５０は、規則テーブル６３０の１つの中の規則を使用して出力リスト６３１を形成する。出力リスト６３１の内容は、トークン発生器オブジェクト６５０において順序付けられたトークンシーケンス６３３に変換される。全ての運転データ構造５５０から生成されたトークンシーケンス６３３は、トークン発生器オブジェクト６５０内に含まれるトークンリスト６５２を作成するために使用される。運転生成オブジェクト５４０からの各運転データ構造５５０が処理されると、その運転のために形成されたトークンシーケンス６３３はトークン発生器オブジェクト６５０に追加される。即ち、各運転データ構造５５０毎に形成されたトークンシーケンス６３３は、先に処理済みの運転から既に追加されているトークン（もしあれば）を含むトークン発生器オブジェクト６５０内の部分的に形成されたリストの終わりに付加される。全ての運転データ構造が処理されてしまうと、全ての運転５５０から形成されたトークンシーケンス６３３は、トークン発生器オブジェクト６５０内に完全なトークンリスト６５２を形成する。
【００５６】
トークン発生器オブジェクト６５０内のトークンリスト６５２から、ルート計算ツール３００によって計算されたルートを解説することができる。解説は、トークン発生器オブジェクト６５０内のトークンを、ナビゲーション応用２１０によって要求された適切なフォーマットに変換することによって遂行される。トークンが記号である場合には、解説は、それらの記号がマップされるオーディオデータ（ファイル、またはそれらの部分）、テキスト文字列、または図形データ（ファイル、またはそれらの部分）を入手することを含む。トークンが文字列である場合には、解説は、テキスト運転命令の場合は文字列を戻すことを、またはオーディオ運転命令の場合はテキスト・スピーチ変換を遂行することを含む。
【００５７】
トークン発生器構成オブジェクト６２０内の各規則テーブル６３０は、複数の規則セット６３２を含んでいる。規則テーブル６３０は、何れかの運転データ構造５５０内に見出すことができる運転型及び助言型の異なる組合せのための規則セット６３２を含む。上述したように、各運転データ構造５５０は、運転型及び多分１つまたはそれ以上の助言型を識別するメンバー５５０（４）（２）及び５５０（４）（３）を含んでいる。規則テーブル６３０は、各運転型、運転型と助言型との各組合せ毎に規則セット６３２を含んでいる。例えば、図８に示す規則テーブル６３０では、運転型“０”のために１つの規則セット６３２ＭＡＮ（０）が定義され、運転型“１”のために別の規則セット６３２ＭＡＮ（１）が定義され、運転型“２”のために別の規則セット６３２ＭＡＮ（２）が定義されている、等々である。
【００５８】
図９を参照する。規則テーブル６３０内の各規則セット６３２は、１つまたはそれ以上のケース６３４を含んでいる。各規則セット内の各ケースは独自に番号付けされている。例えば、１、２、３、・・・、等々である。各規則セット６３２内のケース６３４は、運転型または助言型の特定組合せを有する運転データ構造５５０内で発生する可能性がある各状況を斟酌する。各規則セット６３２内のケース６３４は、運転型または助言型の指定された組合せを有する運転データ構造５５０に対して構成オブジェクト６２０が規則セット６３２を適用する時に、規則セット６３２内にリストされている最初のケース６３４に最初に適用されるように順序付けられている。
【００５９】
各運転データ構造５５０は、別々に処理される。また各運転データ構造５５０は、それが運転生成オブジェクト５４０内に含まれている順番に取出される。運転データ構造５５０内の特定の運転型及び助言型と一致するケースを含む規則セット６３２だけが使用される。
【００６０】
図９に示す実施例では、１つの規則セットが“−１”に等しい運転型のために定義されている。もしある規則セットがその運転型フィールド内に“−１”を有していれば、それはどの運転型によっても満足される。例えば、運転型フィールド内に“−１”を有し、助言型フィールド内に“８”を有するケースは、“８”の助言型を有するどの運転データ構造にも適用される。運転データ構造は、その運転型フィールド内にどのような運転型をも有することができる。
【００６１】
規則セット内の助言型フィールド内に“−１”を有するあるケースは、どのような助言型によっても満足される。例えば、もしケースが運転型フィールド内に“４”を有し、助言型フィールド内に“−１”を有していれば、“４”の運転型を有するどの運転データ構造にも適用される。運転データ構造は、どのような助言型を有することもできる。このように、助言型のためのケースは１つより多くの運転型のために使用することができ、運転型のためのケースは１つより多くの助言型のために使用することができる。
【００６２】
図９を参照する。各規則セット６３２内の各ケース６３４に関連付けられているのは、試験フィールド６３６である。各ケース６３４毎の試験フィールド６３６は１つまたはそれ以上の試験６３７を識別するか、または試験フィールド６３６はこのケースに関連する試験は存在しないことを指示することができる。（例えば、試験フィールド６３６は、試験フィールド内に“−１”のようなコードが存在していることによって、試験は必要ないことを指示することができる。）一実施例では、試験フィールド６３６は、試験ＩＤによって各試験６３７を識別する。各試験６３７は、試験の結果が「合格」または「不合格」の何れかであるように定められている。（付録の表３及び４に含まれているトークン規則テーブルの見本では、説明の目的で、試験フィールド内には試験ＩＤの代わりに試験の名前が含まれている。）
各ケース６３４毎の各試験６３７は、関連運転データ構造５５０内のデータを使用して遂行される。例えば、試験６３７の１つは、運転データ構造の出口セグメントフィールドの名前内の名前の存在を調べることができる。別の試験は、運転データ構造の目的地フィールド内の名前の存在を調べることができる。トークン発生器ツール６００は、トークン発生器オブジェクト６５０内に複数の省略時試験を含んでいる。付加的な試験を、ナビゲーション応用プロセス２１０によって定義し、含むことができる。（試験６３７は、トークン発生器オブジェクト６５０を構成しているコードベース内にあるか、またはもし試験がナビゲーション応用２１０内に定義されていれば、試験６３７はそこに位置することができる。規則を構成している試験ＩＤは、トークン発生器構成オブジェクト６２０内にある。）
各ケース６３４には、動作フィールド６３８、合格経路フィールド６４０、不合格経路フィールド６４２、及びケース出力６４３も関連している。ケース出力６４３の内容は、１つまたはそれ以上のキー６５６、記号６６８、または列６７４、またはそれらの組合せのリストを含むことも、または代替として、ケース出力６４３は空白であることもできる。キー、記号、及び列に関しては後述する。出力リスト６３１内のキー、記号、及び列は、そのケースに対して遂行される試験によって決定された運転データ構造内に含まれる情報の種類を斟酌して供給される運転の全て、または一部の有意味解説を供給するように、ケース出力内に配列される。
【００６３】
ケース６３４の動作フィールド６３８は、２つの値、即ち「置換」( Replace ) 、または「付加」( Append )の一方を有するように定義されている。もしケース６３４の試験フィールド６３６内に指定されている全ての試験６３７に合格すれば、そのケースの動作フィールド６３８内にリストされている動作が遂行される。
【００６４】
もしケース６３４の動作フィールド６３８が「付加」を指示していれば、そのケースのケース出力６４３の全ての内容６４５が追加される。これは、合格したケースのケース出力６４３内にリストされている何等かのキー６５６、記号６６８、または列６７４が、先に遂行されたケースによって同一運転のために既に付加済みの何等かのキー６５６、記号６６８、または列６７４（もしあれば）に追加されることを意味している。この新しく付加された、及び既に付加済みのキー６５６、記号６６８、列６７４の集まりは、その運転のための潜在的な出力リスト６３１として一時的に保管され、同時に同一運転のためのさらなるケース（付加的な試験を含み得る）が遂行される。もし同一運転のための先行ケースからキー６５６、記号６６８、または列６７４が存在しなければ、合格したケースのケース出力６４３の内容６４５は、その運転のための潜在的な出力リスト６３１として一時的に保管され、同時に同一運転に関連するさらなるケースのための試験が遂行される。
【００６５】
（付録の表３及び表４に含まれているトークン規則テーブル例のケース出力には、記号の実際の数値は示されていない。代わりに、表３及び４の例のケース出力は、記号によって表された等価テキスト文字列を示している。これは、説明の目的のためになされたものである。）
もしケース６３４に関連する試験フィールド６３６内に指定されている全ての試験６３７に合格し、動作フィールド６３８が「置換」を指示していれば、先に遂行されたケースによって同一運転のために既に付加済みの何等かのキー６５６、記号６６８、または列６７４（もしあれば）は、合格した新しいケースの内容６４５と置換される。この合格した新しいケースのキー６５６、記号６６８、または列６７４はその運転のための潜在的な出力リスト６３１として一時的に保管され、同時に同一運転に関連するさらなるケースのための試験が遂行される。
【００６６】
前述したように、ケース６３４の試験フィールド６３６は、そのケースに関連する試験が存在しないことを指示することができる。これは、試験フィールド６３６内の“−１”によって指示することができる。もし試験が存在しないことが試験フィールド６３６内に指示されていれば、その試験フィールドはそのケースに関して満足されたものとして処理され、動作フィールド６３８内に指定されている動作が遂行される。従って、指定された試験が存在しない場合には、ケース６３４の動作フィールド６３８内に指定されている動作は、運転のためにそのケースに出会うと必ず遂行されることになる。
【００６７】
合格したケース（即ち、試験フィールド６３６内に指定されている全ての試験に合格したケース）の場合、動作フィールド６３８内に指定されている動作が遂行された後に遂行される次のステップは、そのケースの合格経路フィールド６４０内に指定されているステップである。合格経路フィールド６４０は、その運転のために遂行される次のケースを（例えば、ケース番号によって）識別することも、またはその運転に関して遂行することが要求されるさらなるケースが存在しないことを指示することもできる。もし合格経路フィールド６４０が遂行すべき別のケースを指示していれば、その新しいケースの試験フィールド６３６内に指定されている試験６３７が遂行される。このプロセスは、その運転に関して遂行すべきさらなるケースが指示されなくなるまで続行される。
【００６８】
試験フィールド６３６内に指定されている何れかの試験６３７に合格しない場合には、そのケースは不合格として処理される。不合格であったケースの動作フィールド６３８内に指定されている動作は遂行されない。潜在的なケース出力６４３として一時的に保管されている同一運転のために先に遂行されたケースからのデータアイテムは、そのままにして置かれる。
【００６９】
不合格であったケースの場合、遂行される次のステップは、その不合格経路フィールド６４２は、その運転のために遂行される次のケースを識別するか、その運転のために遂行する必要があるさらなるケースが存在しないことを指示することができる。
【００７０】
（３）トークンの生成
このステージにおいては、運転のための規則セット内の全ての適用可能なケースが遂行された後のその運転のために作成された出力リスト６３１の内容は、全ての合格したケースのケース出力６４３（付加の代わりに、置換を要求するその後に遂行されたケースによって置換されたものを除く）の組合された内容を含んでいる。上述したように、ケース出力６４３は、キー、記号、列、またはそれらの組合せを含むことができる。出力リスト６３１内のこれらのキー、記号、及び列は、トークン発生器オブジェクト６５０によってトークンに変換される。記号、キー、及び列が、各運転毎に生成される出力リスト内に含まれる順番は、それらから形成される順序付けられたトークンシーケンス内に維持されている。
【００７１】
図８及び１０は、キー、記号、及び列で作られている運転出力リスト６３１の内容を示している。これらはそれぞれ、適切な文字によって区別することができる。図１０に示す実施例では、キーはかぎ括弧（＜＞）によって括られ、列は括弧（“  ”）で括られている。かぎ括弧または括弧によって括られていない出力リスト６３１内のエントリは、記号として取扱われる。出力リスト６３１内の各キー、記号、及び列は、トークン発生器オブジェクトに追加されるトークンを形成する。
【００７２】
ａ．記号
記号６８８は、エンドユーザに意味を与える運転命令の部分を表すために使用される。例えば、テキスト「ミシガンアベニューで右へ曲がりなさい」を表示する運転命令では、フレーズ「で右へ曲がりなさい」を表すために、１つまたはそれ以上の記号が運転の出力リスト内に含まれていたであろう。フレーズ「ミシガン  アベニュー」を表すために、運転の出力リスト内でキーが使用されたであろう。
【００７３】
この例では、運転の出力リスト６３１内の記号は、運転のために遂行された合格したケースの１つが追加されているケース出力６３１内に含まれていたであろう。この記号を含んでいたケース出力に追加されたケースは、出口セグメントフィールド内に識別されているセグメントデータエンティティのための道路名フィールド内の道路の名前が、出口セグメントフィールド内に識別されているセグメントデータエンティティのための道路名フィールド内の道路の名前と異なるか否かを調べたその試験フィールド内の試験を含んでいたことがあり得る。
【００７４】
順序付けられたトークンシーケンス６３３を運転出力リスト６３１から形成する際に、記号に出会うとそれらはトークンに形成される。運転出力リスト内の各記号は、それらから形成される順序付けられたトークンシーケンス内の１つのトークンに形成される。
【００７５】
（開発環境においては、記号が表しているワードまたはフレーズによって記号を表すことは容易である。従って、トークン発生器ツールは、開発者が、実際の数値記号の代わりに、記号が表すワード及びフレーズを使用することを可能にする。）
ｂ．キー
キーは、運転データ構造内に含まれるデータを参照するために使用される。従って、キーは比較的ダイナミックである。運転生成オブジェクト内の各運転データ構造は異なるデータを含むことができるので、キーが参照する運転データ構造メンバーは運転データ構造毎に変化し得る。例えば、もしテキスト「ミシガンアベニューで右へ曲がりなさい」を表示する運転命令をエンドユーザに提供することが望ましければ、出口セグメントの名前（即ち「ミシガン  アベニュー」）を参照するためにキーがケース出力リスト内で使用されよう。この例では、キーは次のような形状をとる。
【００７６】
＜名前 出口 セグメント＞
この運転出力リスト６３１から、順序付けられたトークンシーケンス６３３を形成する際に、あるキーに出会うと、運転データ構造内に含まれる対応するデータのアイテムが識別される。このデータのアイテムは、そのキーを形成するために使用される。次いでこのキーはトークンに拡張され、次いでその運転のための順序付けられたトークンシーケンス６３３に追加される。
【００７７】
この例では、運転の出力リスト６３１内のキーは、この運転のために遂行された試験に合格したケースの１つによって追加されたケース出力６３１内に含まれていたであろう。このキーを含んでいたケース出力を追加したケースは、その運転データ構造５５０が、出口セグメントフィールド（図５の５５０（１）（２））内で識別されたセグメントデータエンティティのための道路名フィールド（図５の５５０（２）（２））内のデータを含んでいたか否かを調べた試験フィールド内の試験を含んでいたことがあり得る。
【００７８】
拡張機能  各キーは関連する拡張機能６７０を有しており、この拡張機能６７０はキーをトークンに拡張するために使用され、次いでそのトークンはその運転のための順序付けられたトークンシーケンス６３３内に含まれる。拡張機能６７０は、キーを導出したデータから、使い易い命令を形成することに関係する何等かの種類のフォーマッティングまたはスタイルを斟酌する。（試験６３７と同様に、拡張機能のためのコードはトークン発生器オブジェクト６５０のコードベース内に位置している。キーを拡張する場合、拡張機能は、トークン発生器構成オブジェクト６２０内に位置するスタイル及びメンバーマップ（後述）のようなデータを使用する。）
スタイル  若干の種類のキーを拡張する場合、そのキーによって表されるデータを表すことを可能にするいろいろな方法が存在する。例えば、運転命令は、次の運転までの距離を指示することができる。キーは、この目的のために使用される。キーは、次の運転までの距離のための運転データ構造フィールド（即ち、図５の５５０（４）（４））の存在を調べたケースのケース出力内に含めることができる。もしこのフィールド内にデータが存在していれば、このケース出力は運転出力リスト６３１に追加される。キーによって参照されたデータのアイテムは、次の運転までの距離をメートルで指示する数（例えば、1500）である。しかしながら、この情報を表現することができるいろいろな方法が存在する。例えば、英語では「 1500 メートル」を、“ 1.5ｋｍ”、“１ and a half ｋｍ”、“ 1500 ｍ”、“ fifteen hundred meters ”、“１ｋｍ500 ｍ”、等々のように色々な方法で表現することができる。何れの場合も、運転の解説が一貫していることが好ましい。キーによって参照されるデータを異なる言語で表現する場合にも同じような考え方が適用される。
【００７９】
キーを拡張する場合、トークン発生器ツールは、若干の種類のキーをどのように表現するかを選択するようになっている。更に、トークン発生器ツールは、言語の独自性に順応するために、適切である場合には例外を設ける。トークン発生器ツールは、キーがそれに関連するスタイルコード６９２を有することができるようにもなっている。スタイルコードは、キーによって表された値を表現する方法を定義するためにキー内で使用される。このスタイルコードは、キーを拡張する時に拡張機能によって使用される。
【００８０】
トークン発生器構成オブジェクト６２０は、距離、時間、メンバー、等々のようなキー内に含まれる異なる種類の情報を表現するための１つまたはそれ以上のスタイルを含んでいる。これらのスタイルは、“１”、“２”等のようなスタイルＩＤによって識別される。スタイルコードはキーに付加することができ、キーによって表された値を表現する方法を決定するために使用される。スタイルの使用を以下の例で説明する。
【００８１】
例  １
キーは＜起点：１ からの 距離＞としてケース出力内に定義される。キー内の、コロンの後の値“１”がスタイルコードである。
【００８２】
トークン構成オブジェクトでは、１のＩＤを有するスタイルは、キーを
ｘメートル
として表現するものとして定義されている。但し、ｘはキー「起点 からの 距離」内の値である。もし運転データ構造の対応する「起点 からの 距離」メンバーの値が“７”であれば、拡張機能６７０は、文字列「メートル」を「起点 からの 距離」の値から形成された文字列に追加することによって、このキーからトークンを形成する。得られる文字列
「７メートル」
がトークンの内容を形成し、これはその運転のための順序付けられたトークンシーケンスに追加される。
【００８３】
例  ２
キーに付加されるスタイルコードは“２”である。このスタイルは、トークン構成オブジェクト内に
ｘ* ( 1.61 )マイル
として定義されている。
【００８４】
もし運転データ構造内の「起点 からの 距離」の値が“７”であれば、拡張機能６７０は、このキーから、
「 11.27マイル」
なる文字列を含むトークンを形成する。
【００８５】
フォーマッタ    ある数の中に含まれる小数点以下の桁数、または名前内に含まれる文字の数に関係する若干の種類のキーを解説する場合には、別のファクタが考慮される。例えば、次の運転までの距離を表現するためにキーが使用される場合には、ナビゲーションシステム及び地理データベースは、次の運転までの距離を小数点以下７桁まで決定するコンピュータ処理能力及び精度を有することができる。しかしながら、自動車を運転中のエンドユーザにとって、このレベルの精度は不必要であろう。
【００８６】
トークン発生器ツール７００内の拡張機能６７０は、若干の種類のキーが表現されている桁数を選択するようにもなっている。更に、トークン発生器ツールは独自性に順応するために、適切な場合には例外を作るようにもなっている。トークン発生器ツールは、キーがそれに関連するフォーマッタを有することができるようになっている。フォーマッタコード６８８は、若干のキーによって表された若干のトークンを表現するのに使用されている小数点以下の桁数を定義するために使用される。フォーマッタコードの使用を、次の例で説明する。
【００８７】
＜次の 運転％２ までの 距離＞
％符号の次の値がフォーマッタコードである。このフォーマッタコードは、キーをフォーマットするために使用される。キー拡張機能は、トークンを構成する時にフォーマッタコード内のこの情報を使用する。この例では、次の運転までの距離は小数点以下２桁だけに制限されている。
【００８８】
フォーマッタコードは、指定された文字の数で文字名を打切るためにも使用される。このようにフォーマッタコードは、若干の長い地理名の表示を容易にするように使用することができる。街路、町、または関心点の名前を表すキーと共に使用する場合、フォーマッタ機能はキー内の値を、フォーマッタコード内に指定されている文字の数で打切る。
【００８９】
メンバー値マップ    他の種類のキーの拡張には、更に別のファクタが関係する。若干の種類のキーは、それらが運転データ構造内の値からトークン内の別の値まで拡張される時に、変換またはマッピングを受けるデータを表すために使用される。この種類のキーの例は、ヘッディングを含む。ディスプレイ画面に「ルート９５上を北西に向かいなさい」のような運転命令を供給することが望ましいことがあるかも知れない。運転命令内のワード「北西」は記号を含んでいたトークンから導出され、この記号自体は運転データ構造内の運転のためのヘッィングのためのキーから形成されたものである。ヘッィングのためのキー（例えば、＜コンテキスト ヘッディング＞）は、運転データ構造内のヘッディングメンバー（図５の５５０（３）（５））を指している。運転データ構造内では、ヘッディングはある数として表現することができる。この数は、例えば０−255 の範囲内にあることができ、０は真北を指し、他の各数（１−255 ）はそこからの時計方向への相対度数を指している。拡張機能は、ヘッディングがキー内で表現されている形状（例えば、223 ）を、トークン内に含まれる形状に変換するようになっており、このトークン内に含まれる形状を運転命令内のワード（例えば「北西」）として解説することができる。
【００９０】
この機能を提供するために、拡張機能６７０はメンバー値マップ６８０を使用する。好ましい実施例では、メンバー値マップ６８０は、キーが文字列を取ることができる値に直接関連付けるのではない。そうではなく、メンバー値マップ６８０をキーから記号への値に関連付けるのである。次いでこれらの記号は、トークンに形成される。これらの記号は、広く使用される運転命令を表すために使用される記号と同じように使用される。即ち、これらの記号は、テキスト解説の場合には文字列に、またはオーディオ解説の場合にはオーディオデータにマップされる。
【００９１】
この特色を提供するために、運転構造５５０の少なくとも若干のメンバーは、運転データ構造メンバーＩＤを有している。１組の「値からトークンへ」のマップがこれらの各運転構造メンバーＩＤに関連付けられる。メンバー値マップ６８０は、異なる記号を、運転構造の各フィールド内の異なる値と対応付けるようになっている。次いで、キーがそのメンバーのために拡張される時に、そしてそのメンバーがメンバー値マップ内にそれのために定義されたメンバー値を有している場合に、その関連付けられた記号を含むトークンが生成される。
【００９２】
例えば、１組のメンバー値マップを、運転データ構造メンバー＜コンテキスト ヘッディング＞のために定義することができる。このセットは、方向「北」、「南」、「東」、または「西」、「北東」、等のための８つのメンバー値を含むことができる。これらの各メンバー値に関連付けられているのは、数値記号１、２、３、４、５、等である。キー＜コンテキスト ヘッディング＞を拡張する時に拡張機能は、メンバー値マップ６８０を使用してキー内の値のための記号を表引きし、その記号を含む適切なトークンを生成する。
【００９３】
若干の種類のキーのためにメンバー値マップを使用することは、トークン発生器ツールをフレキシブルに、且つ言語独立にするのを援助する。キーを（文字列に拡張するのではなく）記号に拡張することによって、言語独立性及びフォーマット独立性（オーディオ対ビデオ）が維持される。トークン内に含まれる記号は拡張ツール７００によって、どのような選択された言語においても文字列、音声データ、または図形データにマップすることができる。
【００９４】
ｃ．列
前述したように、運転出力リスト６３１は、列６７４を含むこともできる。記号及びキーと同様に、列は、その運転のための合格した（そして、置換されない）ケースがそのケース出力内にその列を含んでいる場合に、出力リスト６３１内に出現する。列６７４は、通常の文字データからなる。列は、列の内容がディスプレイ画面上に視覚的に表示される場合に、エンドユーザにテキストで案内するのに有用であることができる。列がトークンに変換される時に、文字データの列がトークンを形成し、次いでそれはその運転のためのトークンリスト内に含まれる。列は、テキスト出力をフォーマットするために使用される制御文字を含むように使用することもできる。例えば、単一の空白スペース（例えば、“  ”）からなる列を、出力リスト６３１内の記号６６８とキー６５６との間に配置することができる。この列は、単一の空白スペースを表すトークンに変換される。エンドユーザに対して運転がディスプレイ画面上に視覚的に表示される時に、記号を含むトークンから導出されたテキストと、キーから拡張されたトークン内に含まれるテキストとの間に空間が現れる。
【００９５】
列は、タブ、復帰、等のような他のフォーマッティングのために使用することができる。普通の制御文字を、この目的のために使用することができる。
【００９６】
列は、他のテキストデータの表示に使用することもできる。列は、テキスト・スピーチ変換ソフトウェアを使用して、音声データの解説に使用することもできる。
【００９７】
（４）組合せ運転
ナビゲーション応用プログラムのエンドユーザに対し、計算されたルートに沿って運転命令を供給することができる方法は、少なくとも幾つか存在する。１つの方法は、全ての運転命令を同時にエンドユーザに供給することである。別の方法は、一時に１つの運転命令をエンドユーザに供給することである。この後者の方法は、エンドユーザが計算されたルートを走行している場合に、運転操作を必要とする前のある時点に、エンドユーザに運転命令を供給するように使用することができる。エンドユーザに運転命令を供給する方法には関係なく、もし運転命令が集まりまたは提示（プレゼンテーション）に編成されていれば、運転命令をより有意味にすることができる。例えば、もし近づいてくる交差点で左折した後に３マイル走行する必要があれば、「次の交差点を左折した後に３マイル走行して下さい」という運転命令をディスプレイ画面上に提示させることができる。しかしながら、もし近づいてくる交差点で左折し、左折後に 100フィートでランプ上へ右折し、そこから３マイル走行するのであれば、「次の交差点で左折し、直ぐに右折してランプへ入り、そこから３マイル走行して下さい」という運転命令を供給することができる。この後者の例では、たとえ運転生成ツールが交差点における左折、及びランプへの右折のために別々の運転ディスプレイ構造を発生したとしても、エンドユーザの観点からは、両方の運転が同時に助言される方がより有意味であるかも知れない。従って、運転命令をエンドユーザに供給する場合に、１つより多くの運転をエンドユーザに提示する時に一緒にグループ化することが望ましいことがあり得る。この考え方は、運転がオーディオで提示されるか、またはビジュアルで提示されるかには拘わりなく適用される。
【００９８】
運転の提示及びグループ化を受入れるために、若干の種類の規則を規則テーブル内で使用することができる。例えば、ある規則セット内のあるケースは、運転データ構造の次の運転までの距離フィールドを調べ、もしそれが空白でなければワードまたはフレーズ「次の運転までの距離は」と、それに続く次の運転までの距離フィールド内の値を取るキーのための１つ以上の記号とを含むケース出力を含むことができる。このケースは（殆どではないにしても）多くの運転型に使用することができるので、全ての運転の後に遂行されるケースとして準備することができる。このように、このケースは、各運転型の各規則セット毎に繰り返してはならない。このケースは、それに運転型を割当て（例えば、−３）、−３の運転型を有するケースを各運転の後に遂行することによって、各運転の後に遂行するように準備することができる。
【００９９】
いろいろな種類の規則を、このようにして準備することができる。例えば、フォーマッティングの目的で、表示された運転の後にライン区切り（ブレーク）またはページ区切りを挿入することが望ましいことがあり得る。ケースを含む規則をこの目的のために準備することができ、これらのケースは表示された各運転の後に遂行されよう。例えば、数または型によって運転を識別するために、各運転の前に遂行するように別の規則を準備することができる。
【０１００】
上例におけるように、運転操作が互いに比較的接近している場合には、それらを一緒にグループ化し、エンドユーザにそれらを組合された運転命令として提示することが望ましいかも知れない。多重運転を調べるための規則を準備することができる。この規則は、運転データ構造の多重運転フラグ５５０（４）（１）（図５）を調べて、それが多重運転の一部であるか否かを決定することになろう。もし多重運転の一部であれば、多重運転の最後のシリーズの後に限って、１つの運転を次の運転から分離するフォーマッティングが使用される。このようにして、別々の運転データ構造内に含まれる運転を、組合された運転として一時にエンドユーザに提示することができる。
【０１０１】
Ｅ．ルート案内ツール／解説ツール
トークン発生器ツール６００がトークン発生器オブジェクト６５０内にトークンのリストを作成した後に、解説ツール７００はトークン発生器オブジェクト６５０を使用してナビゲーション応用２１０へデータを戻し、エンドユーザに計算されたルートを解説する。解説ツール７００によってナビゲーション応用２１０へ戻されるデータの種類は、ナビゲーションシステムのハードウェア資源に対応させるように構成することができる。従って、もしナビゲーションシステムがテキスト命令だけを支援するようになっていれば、解説ツール７００によって戻されるデータの種類はテキストデータを含むが、オーディオまたは図形データは含まない。
【０１０２】
もしナビゲーションシステムが１つより多くの型のルート案内解説フォーマットを支援するようになっていれば、ナビゲーション応用２１０は解説ツール７００によって戻されるデータがこれらの種類の特定の１つまたはそれ以上に対応するように要求することができる。ナビゲーション応用２１０によるこの要求は、エンドユーザからのルート計算及び案内要求の時点に行うことができる。代替として、解説ツール７００は、同一の１つまたはそれ以上の種類の解説（テキスト、音声、または両方）が戻されるように、ナビゲーション応用２１０による省略時値を用いて構成可能にすることができる。
【０１０３】
図２及び１１に示すように、解説ツール７００は１つまたはそれ以上のツールからなることができる。一実施例では、解説ツール７００は３つのツール、即ち音声案内ツール８００、テキスト案内ツール８４０、及び図形案内ツール８７０を含んでいる。代替実施例では、解説ツール７００は付加的なツールを含むことができ、代替として、解説ツール７００は、これらの３つのツールより少ないツール、例えば１つまたは２つのツールを含むことができる。これら３つの解説ツールの動作に関して以下に説明する。
【０１０４】
先ず図１１を参照して音声案内ツール８００を説明する。音声案内ツール８００は、トークン発生器オブジェクト６５０内に含まれているトークンリストを、トークン発生器ツール６００から受信する。音声案内ツール８００は記号オーディオデータファイル８０２を含む実施例内で使用される。これらの記号オーディオデータファイル８０２は地理データベース１４０内に含ませることも、または代替として、記号オーディオデータファイル８０２は音声案内ツール８００にアクセス可能な別のデータベース内に、または別の媒体上に含ませることができる。これらの各記号オーディオデータファイル８０２は、音響に変換できるデータを含んでいる。即ち、これらの各記号オーディオデータファイル８０２は、ナビゲーションシステム内の適切なハードウェア及びソフトウェアを使用して再生した時に口語ワードまたはフレーズを表現するデータを含んでいる。例えば、記号オーディオデータファイル８０２は「曲がりなさい」、「左」、「そのまま」、「交差点」、等々の口語ワード及びフレーズを準備することができる。
【０１０５】
音声案内ツール８００がトークンを処理する時に、各トークンはトークン発生器オブジェクト６５０内に含まれている順番に取り出される。前述したように、トークンは記号または列の何れかであることができる。記号である各トークンは１つまたはそれ以上の記号オーディオデータファイル８０２へマップされる。索引８０８を使用して、音声案内ツール８００はその記号に関連する適切な記号オーディオデータファイルを表引きする。この索引８０８は地理データベース１４０内に含ませることも、または代替として、索引８０８は音声案内ツール８００にアクセス可能な別のデータベース内に、または別の媒体上に含ませることもできる。音声案内ツール８００は適切な記号オーディオファイルにアクセスし、それをナビゲーション応用へ戻す。トークン発生器オブジェクト６５０内にトークンを形成する音声規則６３０（図７）は、それらを音声解説のための適切なシーケンスに配列する。従って、音声発生器ツール８００がトークンによって表されるオーディオデータファイルをナビゲーション応用２１０へ戻す時に、音声発生器ツール８００はそれらを、それらが導出されたトークン内の順番に対応する順番に維持する。
【０１０６】
上述したように、トークンは列であることもできる。音声案内ツール８００は列であるトークンを処理することもできる。列は、街路名、自治体、関心点、等々を表現するトークンとして使用することができる。トークンを形成する列は、街路名、自治体、関心点、等々のための文字列データを含む地理データベース１４０から導出することができる。これらの列は、運転データ構造のメンバーを参照するキーから導出することができる。トークンを形成する列は、トークン発生器構成オブジェクト６２０内の規則テーブル内のケース出力内に定義することもできる。列であるトークンは、それらに関連する記号オーディオデータファイル８０２を有していない。従って、テキスト・スピーチソフトウェアプログラム８１２を使用して、トークン内のデータの列を表現するオーディオデータファイルを生成することができる。テキスト・スピーチソフトウェアプログラム８１２は音声案内ツール８００の一部として含ませることも、または代替として、テキスト・スピーチソフトウェアプログラム８１２はナビゲーション応用の一部として含ませることもできる。音声案内ツール８００が、データの列であるトークンに出会うと、テキスト・スピーチソフトウェアプログラム８１２はそのトークン内に含まれている文字データの列からオーディオデータファイルを生成する。テキスト・スピーチソフトウェアプログラム８１２はこの機能を遂行するために、公知の技術を使用することができる。音声案内ツール８００は、そのトークンのためのトークン発生器オブジェクト内に指定されているシーケンスを維持するために、テキスト・スピーチソフトウェアプログラム８１２によって生成されたオーディオデータファイルを、地理データベースから入手したオーディオデータファイル８０２を用いて配列する。
【０１０７】
代替実施例では、音声案内ツール８００はテキスト・スピーチソフトウェアプログラムを含んでいない。この代替実施例では、トークン発生器構成オブジェクト６２０は、どのトークンも列ではないトークン発生器オブジェクト６２０を発生する音声規則６３０（Ｖ）のセットを使用するように構成されている。代わりに、この代替実施例によれば、音声規則６３０（Ｖ）はケース出力を生成し、これらのケース出力は、記号オーディオファイル８０２が音声案内ツール８００による解説に使用できるように全てのトークンを記号にする。
【０１０８】
前述したように、解説ツール７００は、テキスト案内ツール８４０をも含むことができる。テキスト案内ツール８４０は、音声案内ツール８００と同じように動作する。テキスト案内ツール８４０は、トークン発生器オブジェクト６５０内に含まれているトークンリストを受信する。テキスト案内ツール８４０は、記号テキストデータ８４２を含む実施例内で使用される。記号テキストデータ８４２は、地理データベース１４０内に含ませることも、または代替として、記号テーブルデータファイル８４２はテキスト案内ツール８４０にアクセス可能な別のデータベース内に、または別の媒体上に含ませることもできる。図１１に示す実施例では、記号テキストデータ８４２は、テキスト案内ツール８４０の一部であるテキスト案内構成オブジェクト８４７内に含まれている。記号テキストデータ８４２は、適切なハードウェア及びソフトウェアを使用してワードまたはフレーズのようなテキストとして表示することができる文字テキストを含んでいる。例えば、記号テキストデータ８４２は「曲がりなさい」、「左」、「そのまま」、「交差点」、等々のワード及びフレーズを準備することができる。
【０１０９】
テキスト案内ツール８４０は、トークンがトークン生成オブジェクト６５０内に含まれている順番に、トークンを処理する。前述したように、トークンは記号であることも、または列であることもできる。記号である各トークンは、１つまたはそれ以上の記号テキストデータ８４２へマップされる。索引８４８を使用して、テキスト案内ツール８４０は、そのトークン内の記号に関連する適切な１つ以上の記号テキストデータファイル８４２を表引きする。この索引８４８は、地理データベース１４０内に含ませることも、または代替として、索引８４８はテキスト案内ツール８４０にアクセス可能な別のデータベース内に、または別の媒体上に含ませることもできる。図１１に示す実施例では、索引８４８は、テキスト案内ツール８４０の一部であるテキスト案内構成オブジェクト８４７内に含まれている。テキスト案内ツール８４０は記号テキストデータ８４２にアクセスし、それらをナビゲーション応用へ戻す。トークン発生器ツール６００は、トークン発生器オブジェクト内のトークンのために適切な順番を指定する。テキスト案内ツール８４０は、記号テキストデータ８４２からのテキストデータをこの同じ順番に維持する。
【０１１０】
テキスト案内ツール８４０は、列であるトークンをも処理する。列は、街路名、自治体、関心点、等々を表現するために使用される。これらの名前は、地理データベース１４０内にデータとして含まれており、運転データ構造５５０のメンバーを参照するキーから導出することができる。テキスト案内ツール８４０が、列であるトークンに出会うと、それは残余のトークンから導出された残余の列と共に配列される。トークンが配列されていた順番は、トークン発生器オブジェクト内でも維持される。トークン発生器オブジェクト６５０内にトークンを形成するテキスト規則は、それらをテキスト解説のために適切なシーケンスに配列する。従って、テキスト発生器ツール８４２は、トークンがトークン発生器オブジェクト内に配列されている順番に、トークンによって表されるテキストデータを戻す。
【０１１１】
解説ツール７００は、図形案内ツール８７０をも含むことができる。図形案内ツール８７０は、音声案内ツール８００及びテキスト案内ツール８００と同じように動作する。図形案内ツール８７０は、トークン発生器オブジェクト６５０内に含まれているトークンリストを受信する。図形案内ツール８７０は、記号図形データファイル８７２を含む地理データベース１４０の実施例内で使用される。これらの記号図形データファイル８７２は、地理データベース１４０内に含ませることも、または代替として、記号図形データファイル８７２は図形案内ツール８７０にアクセス可能な別のデータベース内に、または別の媒体上に含ませることもできる。これらの各記号図形データファイル８７２は、視覚コンピュータディスプレイ上に表示することができる図形データを含んでいる。例えば、これらの記号図形データファイル８７２は、交差点、合流、Ｕターン、踏切、等々のためのディスプレイを含むことができる。
【０１１２】
図形案内ツール８７０は、トークンがトークン生成オブジェクト６５０内に含まれている順番に、トークンを処理する。前述したように、トークンは記号であることも、または列であることもできる。記号である各トークンは、１つまたはそれ以上の記号図形データファイル８７２へマップされる。索引８７８を使用して図形案内ツール８７０は、そのトークン内の記号に関連する適切な記号図形データファイル８７２を表引きする。この索引８７８は、地理データベース１４０内に含ませることも、または代替として、索引８７８は図形案内ツール８７０にアクセス可能な別のデータベース内に、または別の媒体上に含ませることもできる。図形案内ツール８７０は記号図形データファイル８７２にアクセスし、それらをナビゲーション応用２１０へ戻す。トークン発生器ツール６００は、トークン発生器オブジェクト内のトークンのために適切な順番を指定する。図形案内ツール８７０は、記号図形データファイル８７２からのテキストデータをこの同じ順番に維持する。
【０１１３】
前述したように、解説ツール７００は、音声案内ツール８００、テキスト案内ツール８４０、及び図形案内ツール８７０の１つ以上を含むことができる。もし解説ツール７００がこれらのツールの１つ以上を含んでいれば、ルート計算ツールによって計算されたルートは、１つ以上のフォーマットでエンドユーザに解説することができる。例えば、もし解説ツール７００がテキスト案内ツール８４０及び音声案内ツール８００の両方を含んでいれば、ルート計算ツールによって計算されたルートは、可聴及び視覚の両命令でエンドユーザに解説することができる。可聴命令はスピーカのようなユーザインタフェース１３１内の適切なハードウェアを介して供給することができ、また視覚命令はユーザインタフェース１３１内のディスプレイ画面によって供給することができる。視覚命令及びオーディオ命令の両者は、トークン発生器ツール６００によって生成された同一のトークン発生器オブジェクトを使用する解説ツールによって供給することができる。代替として、視覚命令及びオーディオ命令は、トークン発生器ツール６００によって生成された２つの別々のトークン発生器オブジェクトを使用する解説ツールによって供給することができる。この後者の実施例では、トークン発生器ツールは視覚提示に合わせた第１のトークン発生器オブジェクトを生成するための１つの規則セットと、オーディオ提示に合わせた第２のトークン発生器オブジェクトを生成するための別の規則セットとを使用する。視覚提示に合わせたトークン発生器オブジェクトは、街路名のようなより多くの細部を含むことができる（この情報を提示するために必要な情報は、地理データベース内で容易に使用可能であるから）。オーディオ提示に合わせたトークン発生器オブジェクトは、より少ない細部を含み、街路名等のためのトークンを省くことができ、それによってテキスト・スピーチ変換ソフトウェアを設ける必要性を避ける。
【０１１４】
VI. 代替実施例
構成可能性  トークン発生器ツールのフレキシブルな設計アーキテクチャによって提供される利点の１つは、それがユーザによって変更、強化、増補、及び拡張できることである。因みに、ユーザは必ずしも、ナビゲーションシステム内のナビゲーション応用プログラムを実際に使用する個人である最終的なエンドユーザである必要はない。代わりに、ユーザは、トークン発生器ツールを他のソフトウェアと共に組み込み、このような他のソフトウェアと共に含まれているトークン発生器ツールを含むシステムまたはプログラムを、最終的なエンドユーザに販売する中間カストマであることができる。
【０１１５】
上述した実施例では、ナビゲーション応用がビークルに搭載されたナビゲーションシステム内に設置されているものとして説明した。代替実施例では、ナビゲーション応用は、パーソナルコンピュータ、ハンドヘルド計算デバイス、電話機、等々のような他の種類のプラットフォーム内に設置することができる。ナビゲーション応用をネットワーク上に設置して、ネットワークのクライアントが使用できるようにすることもできる。代替実施例では、ナビゲーション応用の若干の部分をローカルに配置し、ナビゲーション応用の他の部分を遠隔配置することができる。ネットワークは、無線ネットワークであることができる。ナビゲーション応用、またはその一部は、インターネットを介して使用可能にすることができる。
【０１１６】
物理的特色、または物理的特色を表すデータを称するのに他の用語を使用することができる。本明細書の内容は、同じような概念を表現する特定の用語に限定されるものではないことを理解されたい。
【０１１７】
以上の詳細な説明は単に例示に過ぎず、本発明を制限するものではない。本発明の範囲は、特許請求の範囲によってのみ限定されるものであることを理解されたい。
【０１１８】
【表１】
0004268713.tif 000002
【表２】
0004268713.tif 000003
【表３】
0004268713.tif 000004
【表４】
0004268713.tif 000005
【表５】
0004268713.tif 000006
【表６】
0004268713.tif 000007
【表７】
0004268713.tif 000008
【表８】
0004268713.tif 000009
【表９】
0004268713.tif 000010
【表１０】
0004268713.tif 000011
【表１１】
0004268713.tif 000012
【表１２】
0004268713.tif 000013
【表１３】
0004268713.tif 000014
【表１４】
0004268713.tif 000015
【表１５】
0004268713.tif 000016
【表１６】
0004268713.tif 000017
【表１７】
0004268713.tif 000018
【表１８】
0004268713.tif 000019
【表１９】
0004268713.tif 000020
【表２０】
0004268713.tif 000021
【表２１】
0004268713.tif 000022
【表２２】
0004268713.tif 000023
【表２３】
0004268713.tif 000024
【図面の簡単な説明】
【図１】ナビゲーションシステムのブロック図である。
【図２】図１のナビゲーション応用プログラムの成分を示すブロック図である。
【図３】図２のルート計算オブジェクトの成分を示すブロック図である。
【図４】図２の運転生成ツールの成分を示すブロック図である。
【図５】図４の運転データ構造の１つの成分メンバーを示す図である。
【図６】図２のトークン生成オブジェクトの成分を示すブロック図である。
【図７】図２のトークン生成構成オブジェクトの成分を示すブロック図である。
【図８】図７の規則テーブルの１つの成分を示すブロック図である。
【図９】図８に示す規則セットの１つの成分を示すブロック図である。
【図１０】図７に示す拡張機能によるキーのトークンへの拡張を示す図である。
【図１１】図２に示す解説ツールによるトークン生成オブジェクト内のトークンの解説を示す図である。
【符号の説明】
１１０  ナビゲーションシステム
１１１  ビークル
１１２  プロセッサ
１１４  ドライブ
１１６  不揮発性記憶媒体
１１８  ナビゲーションプログラミング
１２０  メモリ
１２４  測位システム
１２５  センサ
１２７  入力デバイス
１２９  出力デバイス
１３１  ユーザインタフェース
１３２  記憶媒体
１４０  地理データ
２１０  ナビゲーション応用
２１２  ナビゲーションツール
２１３  インタフェース層
２１４  オペレーティングシステム
２２０  ユーザインタフェース機能
３００  ルート計算ツール
３４２  ルート計算オブジェクト
３４４  道路セグメントを表すデータエンティティのリスト
３４６  他の情報
４００  ルート案内ツール
５００  運転生成ツール
５３０  運転生成構成オブジェクト
５３２  運転規則
５３３  運転テーブル
５３４  運転型
５３５  運転条件試験
５４０  運転生成オブジェクト
５５０  運転データ構造
５７０  助言規則
５７２  助言規則テーブル
５７８  助言条件試験
６００  トークン発生器ツール
６２０  トークン発生器構成オブジェクト
６３０  規則テーブル
６３１  運転出力リスト
６３２  規則セット
６３３  トークンシーケンス
６３４  ケース
６３６  試験フィールド
６３７  試験
６３８  動作フィールド
６４０  合格経路フィールド
６４２  不合格経路フィールド
６４３  ケース出力
６４５  内容
６５０  トークン発生器オブジェクト
６５２  トークンリスト
６５５  トークン
６５６  キー
６６８  記号
６７０  拡張機能
６７４  列
６８０  メンバー値マップ
６８８  フォーマッタコード
６９２  スタイルコード
７００  解説ツール
８００  音声案内ツール
８０２  記号オーディオデータファイル
８０８  索引
８１２  テキスト・スピーチソフトウェアプログラム
８４０  テキスト案内ツール
８４２  記号テキストデータファイル
８４７  テキスト案内構成オブジェクト
８４８  索引
８７０  図形案内ツール
８７２  記号図形データファイル
８７８  索引
【図１】
0004268713.tif 000025
【図２】
0004268713.tif 000026
【図３】
0004268713.tif 000027
【図４】
0004268713.tif 000028
【図５】
0004268713.tif 000029
【図６】
0004268713.tif 000030
【図７】
0004268713.tif 000031
【図８】
0004268713.tif 000032
【図９】
0004268713.tif 000033
【図１０】
0004268713.tif 000034
【図１１】
0004268713.tif 000035