(57)【要約】【課題】ナビゲーション装置等の組み込み機器向けのプログラムの開発、およびプログラムの修正のための手間・コストを低減する。【解決手段】ＯＳ１０１上でナビゲーションプログラムおよび仮想マシン１０３を実行する演算装置（ＣＰＵ）を有するナビゲーション装置において、ナビゲーションプログラム１０１に仮想マシン１０３とのインタフェース１０５を設けておく。そして、仮想マシン１０３が、演算装置に、必要な機能の提供をナビゲーションプログラム１０１に要求する処理を実行させ、ナビゲーションプログラム１０１がインタフェース１０５を介して仮想マシン１０３から受付けた要求にしたがい、演算装置に、受付けた要求に対応するナビゲーション処理を実行させる。【選択図】図１
2006350469.tif 000002
【特許請求の範囲】
【請求項１】
ＯＳ（Operating System）プログラム上でナビゲーションプログラムおよび仮想マシンプログラムを実行する演算装置を有するナビゲーション装置であって、
前記ＯＳプログラム、前記ナビゲーションプログラム、および仮想マシンプログラムを記憶する記憶装置を有し、
前記仮想マシンプログラムは、
前記演算装置に、必要な機能の提供を前記ナビゲーションプログラムに要求する処理を実行させ、
前記ナビゲーションプログラムは、
前記仮想マシンプログラムとのインタフェースを有し、前記インタフェースを介して前記仮想マシンプログラムから受付けた要求にしたがい、前記演算装置に、該受付けた要求に対応するナビゲーション処理を実行させること
を特徴とするナビゲーション装置。
【請求項２】
請求項１に記載のナビゲーション装置であって、
ＧＰＳ(Global Positioning System)受信装置が接続されていて、
地図データと、地図データの所定位置毎に標準時刻からの時差を対応付けた時差データとを記憶していて、
前記ナビゲーションプログラムには、
前記演算装置に、前記ＧＰＳ受信装置から位置データを取得し、該取得した位置データおよび前記地図データを用いて車両が存在している位置に対応するロケール情報を算出するロケール算出処理と、前記ＧＰＳ受信装置から標準時間を取得し、前記取得した位置データおよび標準時間と前記時差データとを用いて車両のローカル時刻を算出する処理とを実行させるプログラムが含まれていて、
前記ナビゲーションプログラムは、
前記仮想現マシンプログラムから受付けた要求がロケール情報の送信要求の場合、前記演算装置に、前記ロケール算出処理および該算出したロケール情報を前記仮想マシンプログラムに送信する処理を実行させ、
前記仮想現マシンプログラムから受付けた要求がローカル時刻の送信要求の場合、前記演算装置に、前記ローカル算出処理および該算出したローカル時刻を前記仮想マシンプログラムに送信する処理を実行させること
を特徴とするナビゲーション装置。
【請求項３】
請求項１に記載のナビゲーション装置であって、
表示装置が接続されていて、
前記ナビゲーションプログラムには、前記演算装置に、所定形式の画像データを前記表示装置に表示する処理を実行させるプログラムが含まれていて、
前記ナビゲーションプログラムは、
前記仮想現マシンプログラムから受付けた要求が画像データを描画する要求の場合、前記演算装置に、前記画像データを前記所定形式の画像データに変換した上で前記表示装置に表示する処理を実行させること
を特徴とするナビゲーション装置。
【請求項４】
請求項１に記載のナビゲーション装置であって、
音声出力装置が接続されていて、
前記ナビゲーションプログラムには、前記演算装置に、所定形式の音声データを前記音声出力装置に出力する処理を実行させるプログラムが含まれていて、
前記ナビゲーションプログラムは、
前記仮想現マシンプログラムから受付けた要求が音声データを出力する要求の場合、前記演算装置に、該音声データを前記所定形式の音声データに変換した上で前記音声出力装置に出力する処理を実行させること
を特徴とするナビゲーション装置。
【請求項５】
請求項１に記載のナビゲーション装置であって、
利用者からの各種操作を受付ける入力装置が接続されていて、
前記ナビゲーションプログラムには、前記演算装置に、前記入力装置からのデータを受付け、該受付けたデータを所定のイベントに変換する処理を実行させるプログラムが含まれていて、
前記ナビゲーションプログラムは、
前記演算装置に、前記仮想現マシンプログラムからの要求にしたがい、前記変換したイベントを該仮想マシンプログラムに送信する処理を実行させること
を特徴とするナビゲーション装置。
【請求項６】
請求項１〜５のいずれか一項に記載のナビゲーション装置であって、
前記仮想マシンプログラムは、Ｊａｖａ（登録商標）仮想マシンであること
を特徴とするナビゲーション装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ナビゲーション装置等の組み込み機器の技術に関し、特に、仮想マシンを搭載した組み込み機器の技術に関する。
【背景技術】
【０００２】
ナビゲーション装置、携帯電話、デジタル家電製品（例えば、デジタルカメラ）等のように専用の機能を提供する組み込み機器が普及してきている。例えば、ナビゲーション装置には、ＧＰＳ(Global Positioning System)受信装置や車両制御装置等のハードウェアに接続されていて、これらのハードウェアから取得するデータを用いて地図上に現在位置を示した画面を表示する機能を提供するものがある。
【０００３】
従来から、ハードウェアを活用したソフトウェアにより各種の機能を提供する組み込み機器が知られている。例えば、特許文献１には、ハードウェアを活用したソフトウェアにより、車両外部の明るさに対応して案内画像を常に見易く表示する機能を提供するナビゲーション装置が記載されている。具体的には、特許文献１のナビゲーション装置には、車両外部の明るさを検知するセンサが接続されている。そして、ナビゲーション装置は、そのセンサからのデータを取得し、表示画像の明るさを変更している。
【０００４】
また、特許文献２には、携帯電話などのバックライト付の液晶装置を備える組み込み機器において、バックライトがオフの際の視認性を向上させるために、バックライトオフの場合に描画色を変えることで液晶表示のコントラストを高めるという方法が開示されている。
【０００５】
また、特許文献３には、ＧＰＳ受信装置を持つナビゲーション装置において、ＧＰＳ受信装置からの位置情報および時間情報を取得して、ナビゲーション装置に実装されている位置対応時差記憶部を用いてローカル時刻を演算する方法が開示されている。
【０００６】
【特許文献１】特開２０００―１０５４３号公報
【特許文献２】特開２００２―１０８２９２号公報
【特許文献３】特開２００３−１１４２９０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ところで、組み込み機器向けのプログラムは、その構成が複雑になる傾向にある。例えば、組み込み機器は、一般のサーバやワークステーションと比較して、低機能なＯＳ（Operating System）が搭載されていることが多い。そして、組み込み機器では、ＯＳに不足している機能をアプリケーションプログラム内で実装することが多く行われるため、組み込み機器向けのプログラムの構成が複雑になる傾向にある。また、現在問題なく稼動している組み込み機器のプログラム（例えば、ナビゲーションプログラム）を大規模に変更することは品質維持の面でも避ける傾向にあり、既存のプログラムに機能追加が繰り返されることが多い。その結果、組み込み機器向けのプログラムは、多機能で複雑な構成になっているものが多い。
【０００８】
さらに、組み込み機器の場合、ハードウェア開発とプログラム開発は同じメーカが行っていることが多く、限られたハードウェアリソースを効率よく活用するために、汎用的なプログラムではなく、ハードウェアに特化したプログラムとなっている。
【０００９】
このように、ナビゲーション装置などの組み込み機器向けプログラムは、汎用的なプログラムの技術ではなく特殊な技術が要求されるため、プログラムの開発者不足が生じている。また、組み込み機器向けプログラムは、上述のように構造が複雑になる傾向にあるためプログラムの開発に手間およびコストがかかるという問題を有している。
【００１０】
上記各特許文献には、ハードウェア（例えば、ＧＰＳ受信装置）を活用して専用の機能を提供することについての提案は行われている。しかし、上記各特許文献は、組み込み機器用プログラムの開発にかかる手間およびコストを軽減することについて特に考慮されていない。
【００１１】
なお、サーバやワークステーションでのプログラム開発に広く用いられ、開発者も多いサン・マイクロシステムズ社が開発したＪａｖａ(登録商標)言語により組み込み機器向けプログラムを開発することも考えられる。しかしながら、Ｊａｖａ(登録商標)言語等の仮想マシンを組み込み機器に搭載する場合、ＰＣ（Personal Computer）などの高機能なＯＳが搭載された計算機上での開発にはない課題が存在する。
【００１２】
ひとつは、組み込み機器に搭載されているＯＳには、ＰＣ上で稼動する高機能なＯＳのように、標準化されたインタフェースを持つ豊富なデバイスドライバやミドルウェアが十分に揃っていない。そのため、仮想マシンによりハードウェアの機能を利用しようとする場合、別途、ドライバやミドルウェアを開発する必要がありコストがかかる。さらに、通常、仮想マシンの開発者がハードウェアに熟知していることが少ないため、ハードウェアの機能を活用する組み込み機器用のプログラムの開発に手間がかかる。また、組み込み機器開発においてはハードウェア開発とプログラム開発が並行して行われる場合が多い。そのため、たとえ仮想マシンの開発者が利用するハードウェアを熟知していたとしても、プログラム開発時にハードウェアがまだ出来上がっていない場合が多く、プログラムの細かなチューニング作業が行えないという問題が発生してしまう。
【００１３】
本発明は、上記事情に鑑みてなされたものであり、組み込み機器向けのプログラムの開発、およびプログラムの修正のための手間・コストを低減することにある。
【課題を解決するための手段】
【００１４】
上記課題を解決するため、本発明の一態様は、ＯＳ（Operating System）プログラム上でナビゲーションプログラムおよび仮想マシンプログラムを実行する演算装置を有するナビゲーション装置に適用される。ここで、前記ナビゲーション装置は、前記ＯＳプログラム、前記ナビゲーションプログラム、および仮想マシンプログラムを記憶する記憶装置を有する。
【００１５】
そして、前記仮想マシンプログラムは、前記演算装置に、必要な機能の提供を前記ナビゲーションプログラムに要求する処理を実行させ、前記ナビゲーションプログラムは、前記仮想マシンプログラムとのインタフェースを有し、前記インタフェースを介して前記仮想マシンプログラムから受付けた要求にしたがい、前記演算装置に、該受付けた要求に対応するナビゲーション処理を実行させる。
【発明の効果】
【００１６】
このように本発明によれば、ナビゲーションプログラム以外の他のプログラム（仮想マシンプログラム）は、ナビゲーションプログラムの持つ機能をナビゲーションプログラムのインタフェースを介して利用できるようになる。そのため、本発明によれば、ナビゲーションプログラムの中身の実装を気にすることなく、ナビゲーションプログラムの機能を利用するプログラムを開発することができる。その結果、本発明によれば、プログラムの開発のための手間・コストを低減することができる。また、本発明によれば、下位のハードウェアやデバイスドライバ等に仕様変更が生じた場合でも、ナビゲーションプログラム経由で各機能を利用することにより、他のプログラム（仮想マシンプログラム）を修正することなく使用することが可能となる。その結果、本発明によれば、プログラムの修正のための手間・コストを低減するこができる。
【００１７】
さらに、本発明では、例えば、ナビゲーションプログラムが描画機能やサウンド再生機能を有する場合、仮想マシンプログラムは、その機能を利用するができる。そのため、本発明によれば、仮想マシンプログラムとナビゲーションプログラムとを統一されたユーザインタフェースで使用することが可能になる。
【発明を実施するための最良の形態】
【００１８】
以下、本発明の実施形態について図面を用いて説明する。なお、以下では、本発明が車両に搭載されたナビゲーション装置に適用された場合を例にするが、本発明は、特にこれに限定されるものではない。本発明は、ナビゲーション装置以外の組み込み機器にも適用することができる。
《第１実施形態》
先ず、本発明の第１実施形態を説明する。
【００１９】
図１は、本発明の第１実施形態のナビゲーション装置の概念図である。
【００２０】
図示するように、ナビゲーション装置は、ＣＰＵ（Central Processing Unit）およびメモリ等を有するハードウェア１００（図３参照）に、ハードウェア１００の各種資源を管理し、アプリケーションプログラムに各種資源を利用させるＯＳ（Operating System）１０２が搭載されている。そして、ナビゲーション装置は、ハードウェア１００およびＯＳ１０２上で稼動するナビゲーションプログラム１０１と、ハードウェア１００およびＯＳ１０２上で稼動する仮想マシン１０３と、仮想マシン１０３上で稼動する仮想マシンアプリケーション１０７ａ〜ｎとを有する。
【００２１】
ナビゲーションプログラム１０１には、ハードウェア１００を制御して各種機能を提供するプログラム（以下「ナビアプリケーション」という）１０４が含まれている。なお、ナビアプリケーション１０４が提供する機能については特に限定しない。例えば、ナビアプリケーション１０４は、地図等を画面に表示するグラフィックス描画機能、サウンド再生機能、ＧＰＳ（Global Positioning System）情報取得機能、地図データアクセス機能を提供する。また、ナビゲーションプログラム１０１には、仮想マシン１０３に対し、ナビアプリケーション１０４の機能を抽象化して提供するインタフェース１０５が含まれている。
【００２２】
仮想マシン１０３は、中間コードを実行するためのプログラムであり、ナビゲーションプログラム１０１が持つインタフェース１０５を介し、ナビゲーションプログラム１０１が有する機能を利用する。例えば、仮想マシン１０３は、インタフェース１０５を介してナビゲーションプログラム１０１のグラフィックス機能を利用する。また、例えば、仮想マシン１０３は、インタフェース１０５を介してナビゲーションプログラム１０１からロケール情報（ロケール情報については後述する）を取得して動作する。なお、本実施形態では、仮想マシン１０３について特に限定しない。例えば、仮想マシン１０３にサン・マイクロシステムズ社のＪａｖａ（登録商標）仮想マシンを利用することができる。
【００２３】
仮想マシンアプリケーション１０７ａ〜ｎは、仮想マシン１０３上で動作するプログラムである。本実施形態では、仮想マシンアプリケーション１０７ａ〜ｎの具体的な機能を限定しない。例えば、仮想マシンアプリケーション１０７ａ〜ｎは、画像データを生成したり、或いは、音声データを再生する機能を提供する。
【００２４】
なお、仮想マシンアプリケーション１０７ａ〜ｎがナビゲーションプログラム１０１の機能を利用しない場合（ＯＳ１０２の機能だけを利用する場合等）、仮想マシン１０３は、ナビゲーションプログラム１０１のインタフェース１０５を経由しないで、ＯＳ１０２に対して直接要求を渡す。
【００２５】
続いて、第１実施形態のナビゲーション装置の機能について図２を用いて説明する。図２は、本発明の第１実施形態のナビゲーション装置の機能ブロック図である。
【００２６】
ナビゲーション装置２０１は、ナビゲーション部２０２、仮想マシン部２０３、地図・時差データ記憶装置２０４、液晶ディスプレイ等の表示装置２０５、スピーカ等の音声出力装置２０６、ＧＰＳ衛星からの電波を受信し、緯度、経度等の位置情報および標準時間を出力するＧＰＳ受信装置２０７、およびヘッドライトのオン・オフ等の車両情報を取得する車両情報取得装置２０８を有する。地図・時差データ記憶装置２０４は、地図データと、地図データの所定位置毎に標準時刻からの時差を対応付けた時差データとを記憶するユニットであり、例えば、ＤＶＤ−ＲＯＭドライブとＤＶＤ−ＲＯＭ、またはＨＤＤ等により構成される。
【００２７】
ナビゲーション部２０２は、ナビゲーション装置２０１のハードウェア資源（ＧＰＳ受信装置２０７、表示装置２０５等）を利用し、利用者に各種機能を提供する。また、ナビゲーション部２０２は、仮想マシン部２０３からの要求に応じて、自身が持つ機能を仮想マシン部２０３に提供する。具体的には、ナビゲーション部２０２は、ロケール・ローカル時刻演算部２１０、ＧＰＳドライバ部２１１、グラフィック描画部２１２、ビデオドライバ部２１３、サウンド再生部２１４、サウンドドライバ部２１５、およびインタフェース部２１７を有する。
【００２８】
ＧＰＳドライバ部２１１は、ＧＰＳ受信装置２０７を制御し、ＧＰＳ受信装置２０７との間で行うデータの送受信を行う。ビデオドライバ部２１３は、表示装置２０５を制御し、グラフィック描画部２１２から受け付けた画像データを表示装置２０５に表示する。また、サウンドドライバ部２１５は、音声出力装置２０６を制御し、サウンド再生部２１４から受け付けた音声データを音声出力装置２０６から出力する。
【００２９】
ロケール・ローカル時刻演算部２１０は、ＧＰＳ受信装置２０７および地図・時差データ記憶装置２０４からのデータを利用して、「ロケール情報（ナビゲーション装置が動作する言語環境等を設定するための国名等の情報）」および車両が位置する「ローカル時刻」を算出する。具体的には、ロケール・ローカル時刻演算部２１０は、ＧＰＳ受信装置２０７が出力する位置データ（緯度、経度）および標準時刻を取得する。また、ロケール・ローカル時刻演算部２１０は、地図・時差データ記憶装置２０４にアクセスして、「地図データ」および「時差データ」を読み出す。そして、ロケール・ローカル時刻演算部２１０は、取得した「位置データ」および読み出した「地図データ」を用いて、車両が存在する位置に対応する「ロケール情報」を特定する。また、ロケール・ローカル時刻演算部２１０は、取得した「位置データ」および「標準時刻」と、読み出した「時差データ」とを用いて、車両が存在する位置に対応する「ローカル時刻」を算出する。なお、本実施形態では、「地図データ」には、位置に対応する「国名」が含まれているものとする。
【００３０】
グラフィック描画部２１２は、表示装置２０５に表示するための画像データを生成する。グラフィック描画部２１２は、ビデオドライバ部２１３を介して、生成した画像データを表示装置２０５に表示する。サウンド再生部２１４は、音声出力装置２０６に出力させるための音声データを生成する。そして、サウンド生成部２１４は、サウンドドライバ部２１５を介して、生成した音声データを音声出力装置２０６に出力する。なお、本実施形態のグラフィック描画部２１２は、車両情報取得装置２０８からのヘッドライトのオン・オフ情報により、表示装置２０５に表示する表示画像（画像の色、明るさ等）を変更する。
【００３１】
インタフェース部２１７は、仮想マシン部２０３との間で各種データの授受を行う。なお、インタフェース部２１７と仮想マシン部２０３との間で行われるデータの形式は、予め定められている。インタフェース部２１７が仮想マシン部２０３からの各種要求を受付けた場合、ナビゲーション部２０２は、仮想マシン部２０３からの要求に対応するナビゲーション部２０２の機能を仮想マシン部２０３に提供する。
【００３２】
続いて、仮想マシン部２０３について説明する。仮想マシン部２０３は、インタフェース部２１７を介して、ナビゲーション部２０２の機能を利用して各種の処理を行う。具体的には、仮想マシン部２０３は、ナビゲーション部２０２のロケール・ローカル時刻演算部２１０の機能を利用して、「ロケール情報」および「ローカル時刻」を取得する。このように構成することにより、仮想マシン部２０３に「ロケール情報」および「ローカル時刻」を算出するための構成を設ける必要がなくなる。
【００３３】
また、仮想マシン部２０３は、ナビゲーション部２０２のグラフィック描画部２１２を利用して表示装置２０５に画像データを表示する。具体的には、仮想マシン部２０３は、ナビゲーション部２０２のインタフェース部２１７に「描画命令」を送信する。ナビゲーション部２０２のインタフェース部２１７は、仮想マシン部２０３からの「描画命令」を抽象化された命令として受け取り、グラフィック描画部２１２に出力する。グラフィック描画部２１２は、送られた「描画命令」をナビゲーション装置２０１のハードウェアに合致するよう適切に変換し（例えば画面の大きさや色情報等を変換し）、ナビゲーション装置２０１に依存した命令としてビデオドライバ２１３に対して発行する。ビデオドライバ２１３は、与えられた命令にしたがって、表示装置２０５上に描画を行う。
【００３４】
同様に、仮想マシン部２０３は、ナビゲーション部２０２のインタフェース部２１７に対して「サウンド再生命令」を送信する。ナビゲーション部２０２のインタフェース部２１７は、仮想マシン部２０３からの「サウンド再生命令」を抽象化された命令として受け取り、サウンド再生部２１４に出力する。サウンド再生部２１４は、送られた「サウンド再生命令」をナビゲーション装置２０１のサウンド機能に合致するよう適切に変換し、ナビゲーション装置２０１に依存した命令としてサウンドドライバ部２１５に対して発行する。サウンドドライバ部２１５は、与えられた命令にしたがって、音声出力装置２０６に音声出力を行う。
【００３５】
このように、本発明の第１実施形態によれば、仮想マシン部２０３により処理された画像データ（又は音声データ）は、ナビゲーション部２０２経由で表示装置２０５（又は音声出力装置２０６）に出力される。そのため、仮想マシン部２０３により処理されたデータは、ナビゲーション部２０２により処理されたデータを同じユーザインタフェースで利用者に提供されることとなり、利用者に違和感を与えることがない。
【００３６】
ここで、仮想マシン部２０３およびナビゲーション部２０２との間で行われるデータの送受信について、仮想マシン部２０３が「ロケール情報」および「ローカル時刻」を取得する場合を例に挙げて説明する。
【００３７】
仮想マシン部２０３は、「ロケール情報」を取得する場合、インタフェース部２１７に「ロケール取得要求」を送信する。インタフェース部２１７は、「ロケール取得要求」を受け付けた場合、ロケール・ローカル時刻演算部２１０に「ロケール情報」の算出を要求する。そして、インタフェース部２１７は、ロケール・ローカル時刻演算部２１０から「ロケール情報」を取得する。インタフェース部２１７は、「ロケール取得要求」に対して、所定形式の「ロケール情報（例えば、国名を示す情報（日本の場合「ＪＡ」、米国の場合「ＵＳ」等の情報））を仮想マシン部２０３に送信する。
【００３８】
また、仮想マシン部２０３は、「ローカル時刻」を取得する場合、インタフェース部２１７に「ローカル時刻取得要求（例えば、「int getLocalTime()」）」を送信する。インタフェース部２１７は、「ローカル時刻取得要求」を受け付けた場合、ロケール・ローカル時刻演算部２１０に「ローカル時刻」の算出を要求する。そして、インタフェース部２１７は、ロケール・ローカル時刻演算部２１０から「ローカル時刻情報（○年○月○日の△時△分△秒からの現在位置での経過秒）」を取得して、仮想マシン部２０３に送信する。
【００３９】
仮想マシン部２０３は、インタフェース部２１７が送信した「ロケール情報」および「ローカル時刻」を受付ける。仮想マシン部２０３は、受け付けた「ロケール情報」および「ローカル時刻」を用いて動作環境の設定処理（言語環境、日付や時刻などの表記方法等の設定）を行う。仮想マシン部２０３は、設定された動作環境にしたがい、各種の処理を行う。例えば、仮想マシン部２０３は、設定された言語環境（例えば「英語」）で画像データの描画命令をナビゲーション部２０２のインタフェース部２１７に出力する。インタフェース部２１７は、設定された言語環境による画像データをグラフィック描画部２１２に出力する。その結果、表示装置２０５には、設定された言語環境（例えば「英語」）による画像が表示される。なお、「ロケール情報」および「ローカル時刻」の取得は、仮想マシン部２０３の初期化の際に行ってもよいし、仮想マシン部２０３の実行中に自動車が移動した場合に定期的にローカル時刻・ロケール情報を取得し、仮想マシン部２０３の処理に反映させてもよい。
【００４０】
このように構成することにより、例えば、英語圏を走行中は英語でメッセージを画面に出力し、中国を走行中は中国語で画面出力すると言ったことが自動的に行える。また、本実施形態によれば、現在時刻も自動的に走行中の地域のローカル時刻に合わせられる。
【００４１】
また、本実施形態では、言語環境の設定や時刻設定の機能を仮想マシン２０３側に設ける必要がなく、仮想マシン部２０３の構成を簡単にできる。そのため、仮想マシン側のソフトを開発する際には、既存のナビゲーション装置のアプリケーションを利用するだけでよい。すなわち、本実施形態では、仮想マシン側の開発コストの手間やコストを低減させることが可能になる。なお、仮想マシン部２０３がナビゲーション部２０２の機能を利用しないようにした場合、仮想マシン部２０３に独自にロケール・ローカル時刻演算部２１０の機能を設ける必要が生じてしまう。例えば、仮想マシン部２０３にＧＰＳドライバにアクセスしてＧＰＳ情報を取得するための関数（緯度を取得するための関数「int getPositionNS()」、経度を取得するための関数「int getPositionEW()」）等を保持させておく必要がある。また、仮想マシン部２０３に、ロケールやローカル時刻を算出するためのデータベースを別途用意しておく必要が生じてしまう。
【００４２】
続いて、第１実施形態のナビゲーション装置のハードウェア構成について、図３を用いて説明する。図３は、本発明の第１実施形態のハードウェア構成を説明するための図である。
【００４３】
図示するように、ナビゲーション装置２０１は、装置本体３００、地図・時差データ記憶装置２０４、表示装置２０５、音声出力装置２０６、ＧＰＳ受信装置２０７、および車両情報取得装置２０８を有する。
【００４４】
装置本体３００には、各種の処理を実行するＣＰＵ３０１、Ｉ／Ｏインタフェース３０２、およびメモリ３０３を有するコンピュータシステムを用いることができる。Ｉ／Ｏインタフェース３０２は、外部の装置（地図・時差データ記憶装置２０４、表示装置２０５、音声出力装置２０６、ＧＰＳ受信装置２０７、および車両情報取得装置２０８）との間で行なわれるデータの送受信を制御する。また、メモリ３０３には、ナビゲーションプログラム１０１、ＯＳ１０２、仮想マシン１０３、および仮想マシンアプリケーション１０７が記憶されている。
【００４５】
なお、ナビゲーションプログラム１０１には、インタフェース１０５（図２のインタフェース部２１７の機能を実現するためのプログラム）およびナビアプリケーション１０４が含まれている。また、ナビアプリケーション１０４には、図２で説明したナビゲーション部２１７の機能（ロケール・ローカル時刻演算部２１０、ＧＰＳドライバ部２１１、グラフィック描画部２１２、ビデオドライバ部２１３、サウンド再生部２１４、およびサウンドドライバ部２１５）を実現するためのプログラム（ロケール・ローカル時刻演算プログラム、ＧＰＳドライバ、グラフィック描画プログラム、ビデオドライバプログラム、サウンド再生プログラム、およびサウンドドライバ）が含まれている。
【００４６】
そして、上述したナビゲーション部２０２の機能は、ＣＰＵ３０１がＯＳ１０２上で稼動するナビゲーションプログラム１０１を実行することにより実現される。また、仮想マシン部２０３の機能は、ＣＰＵ３０１がＯＳ１０２上で稼動する仮想マシン１０３を実行することにより、或いはＣＰＵ３０１がＯＳ１０２上で稼動する仮想マシン１０３および仮想マシンアプリケーション１０７を実行することにより実現される。
【００４７】
続いて、仮想マシン１０３からの描画命令に応じて行われるナビゲーションプログラム１０１の処理について、図４および図５を用いて説明する。なお、以下の処理は、装置本体３００のＣＰＵ３０１が各プログラム（ＯＳ１０２、仮想マシン１０３、仮想マシンアプリケーション１０７、ナビゲーションプログラム１０１）を実行することにより実現されるものである。しかしながら、以下では、各処理を担当するプログラムを明確にするために、各プログラム（仮想マシン１０３、仮想マシンアプリケーション１０７、ナビゲーションプログラム１０１）を動作主体として記載することとする。
【００４８】
図４は、本発明の第１実施形態のナビゲーション装置が行う描画処理のフローを説明するための図である。
【００４９】
先ず、仮想マシン１０３が起動し、初期化処理を行う。初期化処理において、仮想マシン１０３は、ナビゲーション装置２０１およびナビゲーションプログラム１０１がどのようなグラフィックス機能を持っているかについて調べる。具体的には、仮想マシン１０３は、ナビゲーションプロラム１０１のナビアプリケーション１０４のグラフィック描画プログラムに対して、インタフェース１０５を経由してグラフィックス属性情報（画素数、色、画面のサイズ等を示す情報）の送信を要求する（Ｓ５０１）。
【００５０】
続いて、ナビゲーションプロラム１０１のグラフィック描画プログラムは、グラフィックス属性情報の送信要求を受け、インタフェース１０５を介し、仮想マシン１０３に対してグラフィックス属性情報を送信する（Ｓ６０１）。そして、仮想マシン１０３は、グラフィック描画プログラムからのグラフィックス属性情報を受信する（Ｓ５０２）。
【００５１】
続いて、仮想マシン１０３は、取得したグラフィックス属性情報を元に、表示画面の一画素のビット数やカラーモデル、描画を行うためのオフスクリーンバッファなどを設定し（Ｓ５０３）、仮想マシンアプリケーション１０７の起動を開始し、Ｓ５０４の処理に進む。なお、起動された仮想マシンアプリケーション１０７は、表示装置２０５に表示させる画像データを生成する処理を行うものとする。
【００５２】
ここで、オフスクリーンバッファおよび描画処理について説明する。仮想マシン１０３に限らず一般のグラフィックス描画を含むプログラムは、描画の際にハードウェアが持つビデオメモリへ直接描画するのではなく、オフスクリーンバッファと呼ばれる非表示のバッファを持ち、このバッファ上に描画する。そして、オフスクリーンバッファ上への描画の後に、表示の同期時に表示用のビデオメモリに転送するという手法を用いる場合が多い。この方式を利用するのは、低速なＣＰＵや低速なビデオコントローラを使用する際、描画の様子が見えることで画面がちらついてしまうことを防ぐ効果があるためである。
【００５３】
なお、従来技術では、このオフスクリーンバッファに描画したものを表示用ビデオメモリに転送するのは、そのアプリケーション（オフスクリーンバッファに描画処理をしたアプリケーション）が担当していた。この転送の際には、ソフトウェアで行うにしろ、ハードウェアアクセラレータを利用するにしろ、ビデオメモリの画素のビット数やカラーモデルなどを考慮して適切な変換処理を行う必要がある（すなわち、変換処理した上で転送が行われる）。本実施形態では、以下で説明するように、オフスクリーンバッファに描画した画像の変換処理および表示用ビデオメモリへの転送処理をナビゲーションプログラム１０１側の機能を利用して行うことにしている。このように構成することにより、仮想マシン１０３は、表示用メモリの画素のビット数やカラーモデルを意識することなく転送が行えるようになる。
【００５４】
図４に戻り説明を続ける。Ｓ５０４では、仮想マシンアプリケーション１０７により、画像データが生成されて、その画像データを描画する描画命令が発行される。仮想マシン１０３は、仮想マシンアプリケーション１０７からの描画命令を受けてオフスクリーンバッファに描画を行う。
【００５５】
続いて、仮想マシン１０３は、オフスクリーンバッファ上のデータを実際のビデオメモリ上に転送（同期）するかどうかを判定する（Ｓ５０５）。具体的には、Ｓ５０５において、仮想マシン１０３は、転送要求が在る場合、ナビゲーションプログラム１０１のグラフィックス描画プログラムに対して転送要求を行い、ナビゲーションプログラム１０１側の処理に移行する（Ｓ６０２に移行する）。一方、仮想マシン１０３は、転送要求がない場合、Ｓ５０４に戻り、仮想マシンアプリケーション１０７からの次の描画命令を待つ。なお、ビデオメモリへの転送は、仮想マシンアプリケーション１０７からの明示的な転送要求である場合や、定期的に仮想マシン１０３によって行われる場合もあり、実装依存である。
【００５６】
Ｓ６０２では、ナビゲーションプログラム１０１のグラフィックス描画プログラムは、オフスクリーンバッファ上のデータに対して、描画色の変換等の変更処理を行なう。その後、Ｓ６０３において、ナビゲーションプログラム１０１のグラフィック描画プログラムは、オフスクリーンバッファ上のデータをビデオメモリに転送する。転送後は、再び、仮想マシン１０３側の処理であるＳ５０４に戻る。
【００５７】
続いて、上述した図４の処理フローを採用することによる効果を、図５を用いて説明する。図５は、本発明の第１実施形態の描画処理により表示される画像を説明するための図である。なお、本実施形態では、ナビゲーションプログラム１０１は、車両のヘッドライトが「オン」であるか「オフ」であるかにより、表示画面に表示する空の色を変更する処理を行うものとする。
【００５８】
図５（ａ）の表示画面６０１は、ヘッドライトオフ(昼間)の際にナビゲーションプログラム１０１により描画された画面を示し、６０２は、昼間の空を表している。また、図５（ｂ）図の表示画面６１１は、ヘッドライトオン(夜間)の際にナビゲーションプログラム１０１により描画された画面を示し、６１２は、夜間の空を表している。６０３および６１３は、天気予報を示す画像を表している。この天気予報を示す画像（６０３および６１３）は、それぞれ、仮想マシン１０３上で動作する仮想マシンアプリケーション１０７により生成される画像である。なお、６０３および６１３以外の部分の画像データは、ナビゲーションプログラム１０１により生成されている。
【００５９】
具体的には、仮想マシンアプリケーション１０７により生成された画像データ（６０３或いは６１３）は、仮想マシン１０３により、オフスクリーンバッファに描画される（図４のＳ５０４）。そして、仮想マシン１０３は、上述したＳ５０５により、画像データ（６０３或いは６１３）の表示同期要求をナビゲーションプログラム１０１に行う。
【００６０】
ナビゲーションプログラム１０１のグラフィック描画プログラムは、上記のＳ６０２の処理により、オフスクリーンバッファに描画された画像データ（６０３或いは６１３）に描画色変換を行う。なお、ナビゲーションプログラム１０１のグラフィック描画プログラムは、車両情報取得装置２０８からの車両情報（ここでは、ヘッドライトのオン／オフ情報）に応じて、描画色変換を行う。グラフィック描画プログラムは、夜間の場合には、図５（ｂ）図に示すように、「天気予報を示す画像６１３」を「空の色６１２」と紛らわしくないような色に変更する処理を行う。すなわち、変換処理を仮想マシン１０３側で意識する必要はなく、ナビゲーションプログラム１０１側が変換処理を自動的に行なう。
【００６１】
このように、本発明の第１実施形態によれば、表示画面の配色を昼間と夜間とで変えたいような場合でも、仮想マシン１０３は、昼間／夜間を問わず例えば昼間のつもりで描画を行えばよい。この例のように、いかなる場合でも、仮想マシン１０３とナビゲーションプログラム１０１との見え方を合わせることができ、ユーザインタフェースの統一性が図れる。
【００６２】
また、本発明の第１実施形態によれば、ナビゲーション装置２０１やナビゲーションプログラム１０１に変更が生じた場合でも、仮想マシン１０３に修正を加える必要がない。そのため、ナビゲーションプログラム１０１側の仕様が変更しても、仮想マシン１０３は、新しい仕様に即した描画やロケール情報の取得がそのまま行える。
《第２実施形態》
次に、本発明の第２実施形態を説明する。
【００６３】
本発明の第２実施形態は、ナビゲーション装置２０１のキーやリモコンなどからの入力を仮想マシンがイベントとして受け取る例を示したものである。第２実施形態は、上述した第１実施形態の図２の機能を変更したものであり、第２実施形態の概念は図１で示したものと同じである。なお、第２実施形態の説明において、第１実施形態と同じ構成には同じ符号を用いることとする。また、第２実施形態の説明では、第１実施形態と異なる部分を中心に説明する。
【００６４】
図６は、本発明の第２実施形態の機能ブロック図である。図示するように、ナビゲーション装置２０１は、仮想マシン部２０３、ナビゲーション部６１０、およびキー・リモコン等の利用者からの各種要求を受付ける入力装置６２０を有する。
【００６５】
ナビゲーション部６１０は、仮想マシン部との間のデータを送受信するインタフェース部６１１、イベント・メッセージ変換部６１２、およびキー・リモコンスイッチドライバ６１３を有する。インタフェース部６１１は、仮想マシン部２０３との間で行われるデータの送受信を制御する。具体的には、ナビゲーション部６１０は、キー・リモコンデバイスドライバ６１３を経由してキーやリモコンなどの入力装置６１０からユーザ入力情報を取得する。通常、ここでの取得可能な情報とは、ハードウェアに特有なキーコードであったり、個々の「マウスボタンを押した／離したなどの情報」である。第２実施形態では、キー・リモコンデバイスドライバ６１３が受付けた入力装置６２０からの情報をイベント・メッセージ変換部３０４にて、適切な抽象化されたキーコード、およびマウスのダブルクリックの情報などに変換して、イベントやメッセージとして仮想マシン部２０３の要求に応じて受け渡す。仮想マシン部２０３は、この情報に基づいて仮想マシン上のイベントを発行する。
【００６６】
続いて、第２実施形態のハードウェア構成を説明する。第２実施形態のナビゲーション装置は、図３に示す装置本体３００に「入力装置６２０」を接続したものである。また、メモリ３０３のナビゲーションプログラム１０１には、図６で説明したナビゲーション部２１７の機能（インタフェース部６１１、イベント・メッセージ変換部６１２、キー・リモコンデバイスドライバ６１３）を実現するためのプログラムが含まれている。
【００６７】
そして、上述したナビゲーション部６１０の機能は、ＣＰＵ３０１がＯＳ１０２上で稼動するナビゲーションプログラム１０１を実行することにより実現される。また、仮想マシン部２０３の機能は、ＣＰＵ３０１がＯＳ１０２上で稼動する仮想マシン１０３を実行することにより、或いはＣＰＵ３０１がＯＳ１０２上で稼動する仮想マシン１０３および仮想マシンアプリケーション１０７を実行することにより実現される。
【００６８】
このように、第２実施形態によれば、入力装置６２０から入力されるデータを変換するための変換テーブルを仮想マシン１０３側に持たせておく必要がなくなる。また、第２実施形態によれば、入力デバイスから仮想マシン１０３がデータを受け取るのか、ナビゲーションプログラム１０１側でデータを受け取るのかを一元化することができるようになる。
【００６９】
このように、上述した本発明の第１および第２実施形態では、ナビゲーションプログラム１０１に、仮想マシン１０３との間でデータをやり取りするためのインタフェース１０５を設け、ナビゲーションプログラムが持つ機能（例えばハードウェア制御機能）を共通インタフェースとして提供するようにしている。その結果、本実施形態によれば、仮想マシンにより、これら機能が容易に利用可能になる。したがって、Ｊａｖａ（登録商標）等の仮想マシンの開発者や、仮想マシンで動作するＪａｖａ（登録商標）プログラムの開発者が、車両の現在位置やロケールなどの車両情報、ハードウェア仕様などを意識することなくプログラムの開発を行えるようになる。その結果、本発明の実施形態によれば、ナビゲーション装置等の組み込み機器のプログラムの開発の手間およびコストを低減することができる。
【００７０】
また、本発明の実施形態は、仮想マシン１０３にＪａｖａ（登録商法）仮想マシンを利用する場合に特に有効である。具体的には、Ｊａｖａ(登録商標)仮想マシンにおいては、製品化の際にＪａｖａ(登録商標)言語の開発元であるサン・マイクロシステムズ社のＪａｖａ(登録商標)互換性テストを行って認証を取得する必要がある。そして、この認証は、Ｊａｖａ(登録商標)仮想マシンの変更の都度必要になる。そのため、ハードウェアやデバイスドライバ、ミドルウェアの仕様変更に伴い、Ｊａｖａ（登録商法）仮想マシンの修正の必要が生じた場合、その変更に伴い、再度、認証を取得する必要が生じてしまい開発工数や日数の増大を招く。本実施形態では、ハードウェアやデバイスドライバ等の仕様が変更した場合であっても仮想マシン側を修正する必要がないため、上述のような認証のための手間を低減することができる。
【００７１】
なお、本発明は以上で説明した実施形態に限定されるものではなく、本発明の要旨の範囲内において種々の変形が可能である。例えば、上記実施形態の説明では、仮想マシン１０３が利用するナビゲーションプログラムの機能として、ＧＰＳ受信装置２０７からのデータを利用したロケール・ローカル時刻演算機能、グラフィックス描画機能、サウンド再生機能、入力装置６２０からの入力受付機能を例にしたが、特にこれに限定するものではない。例えば、ナビゲーション装置２０１が音声認識プログラムを備えている場合、音声による入力を仮想マシン１０３の入力イベントに変換して、仮想マシン１０３に渡してもよい。
【００７２】
また、上述した図４のフローチャートにおいて、Ｓ６０２とＳ６０３とを、一画面単位に行ってもよいし、一画素単位で描画色変換（Ｓ６０２）および転送(Ｓ６０３)を行ってもよい。どちらが効果的な方法かはハードウェアの仕様・機能に依存する。また、オフスクリーンバッファを持たない場合には、仮想マシン１０３がオフスクリーンバッファへの描画を行わないで、描画用のデータをナビアプリケーション１０１に渡すようにしてもよい。そして、ナビアプリケーション１０１は、描画色変換を行った後、直接ビデオメモリに描画を行ってもよい。上述した方式でも本発明の効果は変わらない。
【００７３】
また、上記実施形態の説明において、ナビゲーションプログラム１０１の中にＧＰＳドライバ、ビデオドライバ、サウンドドライバ、キー・リモコンデバイスドライバを含めるようにしたが特にこれに限定するものではない。ＧＰＳドライバ、ビデオドライバ、サウンドドライバ、キー・リモコンデバイスドライバがＯＳの中に含まれていてもよい。また、ＧＰＳドライバ、ビデオドライバ、サウンドドライバ、キー・リモコンデバイスドライバが、ＯＳ上で稼動するナビゲーションプログラムと別のプログラムであってもよい。
【００７４】
また、上記実施形態では、本発明をナビゲーション装置に適用した場合について説明したが、これは例示に過ぎない。例えば、本発明を他の組み込み機器（例えば、携帯電話、デジタル家電）に適用するようにしてもかまわない。
【図面の簡単な説明】
【００７５】
【図１】本発明の第１実施形態のナビゲーション装置の概念図である。
【図２】本発明の第１実施形態のナビゲーション装置の機能ブロック図である。
【図３】本発明の第１実施形態のハードウェア構成を説明するための図である。
【図４】本発明の第１実施形態のナビゲーション装置が行う描画処理のフローを説明するための図である。
【図５】本発明の第１実施形態の描画処理により表示される画像を説明するための図である。
【図６】本発明の第２実施形態の機能ブロック図である。
【符号の説明】
【００７６】
１００…ハードウェア、１０１…ナビゲーションプログラム、１０２…ＯＳ、１０３…仮想マシン、１０４…ナビアプリケーション、１０５…インタフェース、１０７…仮想マシンアプリケーション、２０１…ナビゲーション装置、２０２…ナビゲーション部、２０３…仮想マシン部、２０４…地図・時差データ記憶装置、２０５…表示装置、２０６…音声出力装置、２０７…ＧＰＳ受信装置、２０８…車両情報取得装置、２１０…ロケール・ローカル時刻演算部、２１１…ＧＰＳドライバ部、２１２…グラフィック描画部、２１３…ビデオドライバ部、２１４…サウンド再生部、２１５…サウンドドライバ部、３００…装置本体、３０１…ＣＰＵ、３０２…Ｉ／Ｏインタフェース、３０３…メモリ、６１０…ナビゲーション部、６１１…インタフェース部、６１２…イベント・メッセージ変換部、６１３…キー・リモコンデバイスドライバ部、６２０…入力装置
【図１】
2006350469.tif 000003
【図２】
2006350469.tif 000004
【図３】
2006350469.tif 000005
【図４】
2006350469.tif 000006
【図５】
2006350469.tif 000007
【図６】
2006350469.tif 000008