以下に、本発明に係る実施形態を適用したナビゲーション装置について、図面を参照して説明する。なお、図1〜図9は、ナビゲーション装置200の全ての構成を示すものではなく、理解容易のため、適宜、構成の一部を省略して描いている。
図1に、本発明に係る実施形態を適用したナビゲーション装置200の構造を示す。本発明に係る実施形態を適用したナビゲーション装置200においては、ナビゲーション装置200自体の制御の一部に、アプリケーションソフトウェアの制御が含まれる。また、ナビゲーション装置200においては、ナビゲーションアプリケーションの機能は、OS(Operating System)等の管理下で動作するアプリケーションソフトウェアにより実現されるものとする。
ナビゲーション装置200は、各種のソフトウェアを実行可能な情報処理装置である。ナビゲーション装置200は、本実施形態においては、OSを備え、複数のソフトウェアをインストール可能であり、並列してソフトウェアを実行することも可能である。ナビゲーション装置200は、ナビゲーション専用の装置に限られず、パーソナルコンピューターやスマートフォン、タブレット端末等の各種の独立動作可能な装置であればよい。
ナビゲーション装置200は、装置制御部により制御される制御部220と、記憶部230と、車両情報取得部240と、表示部250と、不揮発性記憶部260と、センサ管理部270と、GPS受信部280と、を含んで構成される。制御部220には、HOMEアプリ221と、ナビゲーションアプリ222と、車両環境情報管理部224と、が含まれる。ナビゲーションアプリ222には、現在地算出部223が含まれる。記憶部230には、車両環境情報蓄積メモリ231と、バッファ232と、が含まれる。
HOMEアプリ221は、ナビゲーション装置200の入出力インターフェースを司るアプリケーションソフトウェアにより実現される制御部である。HOMEアプリ221は、例えばナビゲーション装置200の各種の機能をメニュー形式で提示したり、起動指示を受け付けて制御する。ナビゲーションアプリ222は、ナビゲーション装置200のナビゲーション機能を司る制御部である。ナビゲーションアプリ222は、いわゆるナビゲーション装置200のナビゲーション機能を実現するソフトウェアにより実現される制御部である。ナビゲーションアプリ222は、例えば、目的地の検索を行い、目的地への経路探索、経路誘導を行う。
現在地算出部223は、所定のセンサ情報の更新がなされた旨の通知を受け付けると、記憶部230のバッファ232に書込まれた車両環境情報を読み出して、直近の過去に算出した現在地からの差分の情報を更新して推定現在地を算出する。
車両環境情報管理部224は、車両の環境情報を管理する。この車両とは、ナビゲーション装置200が搭載される車両をいう。また、車両の環境情報とは、車両の動作に関する情報や、車両が存在する環境情報等を含めた情報である。より具体的には、車両の環境情報には、GPS(Global Positioning System)の位置情報、車両の速度、車両の向き、パーキングブレーキの解除状況、ドアの開閉状況、外気温、内気温、気圧等の車両の移動に関する情報を含みうる。車両環境情報管理部224は、車両情報取得部240、センサ管理部270およびGPS受信部280から車両環境情報を受け付けて、車両環境情報蓄積メモリ231へ蓄積する。
なお、車両環境情報管理部224は、ナビゲーションアプリ222が起動開始後所定の時間(例えば、7秒)が経過すると、あるいはバッファ232のデータが全て読み出された状態になると、後述する第一の周期で逐次取得するセンサ情報をバッファ232に書込み、変化通知を出力する処理を行う。
車両環境情報蓄積メモリ231は、車両の環境情報を蓄積する。車両環境情報蓄積メモリ231は、主としてナビゲーションアプリ222が起動していない場合、あるいは起動完了していない起動中の場合に、車両環境情報管理部224が所定の第一の周期T(例えば、Tは100ms(ミリ秒)単位)で逐次取得するセンサ情報、車両の環境情報を時系列に蓄積するための記憶領域である。そのため、例えば、車両環境情報蓄積メモリ231は、取得時のタイムスタンプと、取得した情報の種類を特定する情報と、取得した情報と、を対応付けて格納するFIFO(First In First Out)のキュー構造を有する。
バッファ232は、車両の環境情報を格納する。バッファ232は、主としてナビゲーションアプリ222が起動完了している稼動中の場合に、車両環境情報管理部224が車両の環境情報を格納して現在地算出部223へ受け渡しを行うための記憶領域である。
車両情報取得部240には、速度情報取得部241と、パーキングブレーキ情報取得部242と、が含まれる。車両情報取得部240は、図示しない車載ネットワークに接続される他の装置から車両に関する情報、例えば速度情報取得部241は速度情報を、パーキングブレーキ情報取得部242はパーキングブレーキの解除状況に関する情報を取得すると、制御部220の車両環境情報管理部224へ受け渡す。
表示部250は、表示情報を表示する。例えば、表示部250は、HOMEアプリ221が生成するポータル画面や機能一覧画面、あるいは地図画像や経路表示等を表示する。
不揮発性記憶部260は、ナビゲーション装置200の電源が切断されても記憶された情報が揮発しない特性を有する記憶部である。不揮発性記憶部260には、現在地情報261と、地図データ262と、が格納される。現在地情報261には、直近の過去に算出した現在地が格納される。例えば、駐車場に駐車して車両から退出し、用件を済ませた後に車両に乗り込んで再出発する場合等には、現在地情報261には、直近、すなわち駐車した際の現在地が格納されている状態となる。すなわち、現在地情報261は、駐車した際の現在地を記録する駐車位置記憶部ともいえる。地図データ262には、ナビゲーション装置200が用いる地図のデータおよび建物やショッピングモール、駅、学校、道路、公園等の各種施設が格納される。
センサ管理部270は、各種センサを管理する。センサ管理部270には、加速度センサ271と、ジャイロセンサ272と、が含まれる。加速度センサ271は、多軸の加速度を検出して、運動ベクトルを合成して出力する。ジャイロセンサ272は、回転の角速度を検出して、水平面上での向きを出力する。なお、加速度センサ271によりジャイロセンサ272の出力を得られる場合があるため、加速度センサ271でジャイロセンサ272の機能を代用可能な場合があるが、本実施形態では、精度や応答性の高さを重視してそれぞれのセンサを利用するものとする。
GPS受信部280は、GPSの衛星波を受信して、座標情報を出力する。なお、GPS受信部280に限られるものではなく、GLONASS(GLOBAL Navigation Satellite System)の座標情報を出力するものであってもよいことは言うまでもない。
装置制御部は、これらの各種装置や制御部を統合して制御するいわゆるOSの機能を担う。例えば、装置制御部は、ナビゲーションアプリ222が生成した表示画面を受け取り、表示部250へ出力させたり、表示部250上の指定された点へタッチ入力を受け付けると、その位置に表示されているアプリケーションソフトウェアへ入力情報と制御を受け渡す。また、ナビゲーションアプリ222が稼動していない状態では、センサ管理部270から得たセンサ情報を車両環境情報管理部224へ受け渡すと、車両環境情報管理部224に対しては、受け渡したセンサ情報を車両環境情報蓄積メモリ231に格納させるよう仕向けるフラグ情報を制御する。
図2は、ナビゲーション装置200のハードウェア構造例を示す図である。ナビゲーション装置200は、入力受付装置201と、演算装置202と、無線通信装置203と、主記憶装置204と、外部記憶装置205と、車載ネットワーク通信装置206と、センサ管理装置207と、出力表示装置208と、これらをつなぐバス210と、を含んで構成される。
入力受付装置201は、ハードウェアボタンやタッチパネル等の各種入力装置である。演算装置202は、例えばCPU(Central Processing Unit)などの演算装置である。
無線通信装置203は、無線ネットワーク、あるいはBluetooth(登録商標)等を介して、無線ルーター等の他の装置と通信経路を確立し情報を送受信するネットワークモジュール等の装置である。
主記憶装置204は、例えばRAM(Random Access Memory)などのメモリ装置である。
外部記憶装置205は、例えばハードディスクやSSD(Solid State Drive)、その他各種の不揮発性記憶媒体に情報を書き込み、あるいは不揮発性記憶媒体から所定の情報を読み出す装置である。
車載ネットワーク通信装置206は、CAN(Controller Area Network)等の車載ネットワークに接続された他の機器と通信を行う装置である。
センサ管理装置207は、例えば加速度センサ271やジャイロセンサ272等のセンサの動作を管理する。
出力表示装置208は、例えば液晶ディスプレイや、有機EL(Electro Luminescence)ディスプレイ等の表示出力を行う装置である。
上記した制御部220の各機能部、すなわちHOMEアプリ221、ナビゲーションアプリ222、車両環境情報管理部224は、演算装置202が所定のプログラムを読み込み実行することにより構築される。そのため、主記憶装置204には、各機能部の処理を実現するためのプログラムが記憶されている。
また、上記した記憶部230は、主記憶装置204あるいは外部記憶装置205により、車両情報取得部240は、車載ネットワーク通信装置206により、不揮発性記憶部260は、外部記憶装置205により、センサ管理部270は、センサ管理装置207により、それぞれ実現される。
なお、上記した各構成要素は、ナビゲーション装置200の構成を、理解を容易にするために、主な処理内容に応じて分類したものである。そのため、構成要素の分類の仕方やその名称によって、本願発明が制限されることはない。ナビゲーション装置200の構成は、処理内容に応じて、さらに多くの構成要素に分類することもできる。また、1つの構成要素がさらに多くの処理を実行するように分類することもできる。
また、制御部220の各機能部は、CPUに限らずハードウェア(ASIC、GPUなど)により構築されてもよい。また、各機能部の処理が一つのハードウェアで実行されてもよいし、複数のハードウェアで実行されてもよい。
[動作の説明]次に、センサデータの取得に関する全体の流れの動作について説明する。図3は、センサデータの格納と読出しのタイミングの例を示す図である。図3においては、図左側から図右側へ向かって時間の経過が示され、ナビゲーション装置200の電源ONからナビゲーション機能の利用可能状態になるまでの期間が示されている。より具体的には、ナビゲーション装置の電源ONの時点である車載機装置電源ON301から始まり、センサ起動開始302、ナビゲーションアプリ動作後初回センサデータ送信のタイミング303のタイミングが示されている。また、センサ起動開始302からナビゲーションアプリ動作後初回センサデータ送信のタイミング303までの期間に、ナビゲーションアプリ222の動作が開始される(起動処理が完了して動作可能状態に置かれる)。
センサ情報の検出が開始されると、車両環境情報管理部224は、第一の周期Tでセンサ情報を取得し、車両環境情報蓄積メモリ231かバッファ232のいずれかに取得したセンサ情報を書き込む。車両環境情報管理部224は、バッファ232に取得したセンサ情報を書き込んだ場合には、センサ情報変化通知を現在地算出部223へ送信する。車両環境情報管理部224は、車両環境情報蓄積メモリ231にセンサ情報を書き込んだ場合には、センサ情報変化通知を現在地算出部223へ送信しない。
なお、車両環境情報管理部224は、車両環境情報蓄積メモリ231かバッファ232のいずれにセンサ情報を書き込むかについて、ナビゲーションアプリ222が動作可能状態に置かれているか否かに応じて決定する。すなわち、車両環境情報管理部224は、ナビゲーションアプリ222が動作可能状態に置かれている場合には、バッファ232にセンサ情報を書き込み、ナビゲーションアプリ222が動作可能状態に置かれていない場合(起動中または未起動の場合)には、車両環境情報蓄積メモリ231にセンサ情報を書き込む。
また、車両環境情報管理部224は、ナビゲーションアプリ222が動作可能状態に置かれた場合(起動完了の場合)には、ナビゲーションアプリ222が動作可能状態に置かれてから車両環境情報蓄積メモリ231が空になるまでの間304において、第一の周期Tよりも短い第二の周期Δ(デルタ)T(例えば、ΔTは1ms(ミリ秒)単位)に切り替えて、時系列にセンサ情報を車両環境情報蓄積メモリ231から読み出してバッファ232へ書き込み、センサ情報変化通知を現在地算出部223へ送信する。
ナビゲーションアプリ222が動作可能状態に置かれてから車両環境情報蓄積メモリ231が空になるまでの間304が経過した後は、車両環境情報管理部224は、上述の第一の周期Tで逐次取得するセンサ情報をバッファ232に書込み、変化通知を出力する処理を行う。なお、この第二の周期ΔTは、第一の周期Tと第三の周期ΔS(例えば、ΔSは1ms単位)とが合成された周期と同様の性質を備える。
また、車両環境情報管理部224は、ナビゲーションアプリ222が動作可能状態に置かれてから車両環境情報蓄積メモリ231が空になるまでの間304を、簡便のために所定の時間(例えば、7秒間等)で代用するようにしてもよい。
このため、車両環境情報管理部224は、ナビゲーションアプリ222が起動後所定の時間においては、第二の周期ΔTでセンサ情報を車両環境情報蓄積メモリ231から読み出してバッファ232へ書き込み、センサ情報変化通知を現在地算出部223へ送信するものともいえる。なお、上述のとおり、ナビゲーションアプリ222が起動後所定の時間が経過すると、車両環境情報管理部224は、上述の第一の周期Tで逐次取得するセンサ情報をバッファ232に書込み、変化通知を出力する処理を行う。
ナビゲーションアプリ222の動作が開始される(動作可能状態に置かれる)と、現在地算出部223が現在地を算出する。現在地算出部223は、ナビゲーションアプリ222が動作可能状態に置かれている間は、車両環境情報管理部224からセンサ情報変化通知を受信すると、すなわち第一の周期Tあるいは第二の周期ΔTに応じてバッファ232からセンサ情報を取得して、現在地に反映させる所定の算出を行う。
図4は、システム起動処理の流れを示す図である。システム起動処理は、ナビゲーション装置200に電源が投入されると、開始される。
まずは、車載機電源がONされる(ステップS101)と、車載機システム(OS)の立ち上げが開始される(ステップS102)。これは、一般的なコンピュータと同様に、カーネルのコンフィギュレーションやブートストラップローダによるOSコアの起動処理に相当する。
そして、OSの起動中に、車両環境情報管理部224が構成され、車両環境情報管理部224によりセンサデバイスの初期化とナビアプリ起動済フラグ初期化(起動済みでない状態を示すOFFに設定)がなされる(ステップS103)。
続いて、車両環境情報管理部224は、センサ情報検出を開始する(ステップS104)。センサ情報検出においては、車両環境情報管理部224は、第一の周期Tでセンサ管理部270から加速度、回転角情報を取得し、車両情報取得部240から速度情報とパーキングブレーキ情報を取得するための初期処理を行う。また、車両環境情報管理部224は、GPS受信部280から座標情報を取得するための初期処理を行う。なお、センサ情報を取得すると、車両環境情報管理部224は、車両環境情報蓄積メモリ231へセンサ情報の蓄積を開始する。
そして、制御部220は、HOMEアプリ221の起動を開始させ(ステップS105)、続いてナビアプリ(ナビゲーションアプリ222)の起動を開始させる(ステップS106)。制御部220は、ナビアプリの起動が完了すると、ナビアプリ起動済フラグの値を、起動済みの状態を示すONに設定する(ステップS107)。
以上が、システム起動処理の流れである。システム起動処理によれば、ナビゲーション装置200の電源投入によりシステムの起動処理が行われ、ナビゲーションアプリ222およびその他のナビゲーション装置200の機能発揮可能な状態に移行させることができる。
図5は、センサ情報検出初期処理の流れを示す図である。センサ情報検出初期処理は、システム起動処理のステップS104において行われる初期処理の一つである。
まず、車両環境情報管理部224は、蓄積メモリカウンタをゼロクリアする(ステップS201)。そして、車両環境情報管理部224は、車両環境情報蓄積メモリをクリア(データ消去)する(ステップS202)。そして、車両環境情報管理部224は、第一のタイマ(Aタイマ)の周期をT(100ms)に設定して当該第一のタイマを起動する(ステップS203)。
以上が、センサ情報検出初期処理の流れである。センサ情報検出初期処理によれば、車両環境情報管理部224は、車両環境情報の安全な蓄積のための初期処理を行うことができる。センサ情報検出初期処理が行われた後は、センサ情報の検出をAタイマに従った周期で車両環境情報管理部224が各種センサから情報を取得する。
図6は、タイマ割込み処理の流れを示す図である。タイマ割込み処理は、ナビゲーション装置200の装置制御部(OS)が起動すると、開始される。
まず、車両環境情報管理部224は、割り込みがあったのがAタイマ(第一の周期Tのタイマ)であるか否かを判定する(ステップS301)。Aタイマである場合には、車両環境情報管理部224は、後述するAタイマ応答処理を実施する(ステップS302)。Aタイマではない場合には、車両環境情報管理部224は、割り込みがあったのがBタイマ(第二の周期ΔTのタイマ)であるか否かを判定する(ステップS303)。Bタイマである場合には、車両環境情報管理部224は、後述するBタイマ応答処理を実施する(ステップS304)。
以上が、タイマ割込み処理の流れである。タイマ割込み処理によれば、車両環境情報管理部224は、割込みのあったタイマの種類に応じた処理を起動させることができる。
図7は、Aタイマ応答処理の流れを示す図である。Aタイマ応答処理は、タイマ割込み処理のステップS302において開始される。
まず、車両環境情報管理部224は、センサからのデータを取得する(ステップS401)。具体的には、車両環境情報管理部224は、センサ管理部270から加速度ベクトルと回転の角速度の情報を取得し、GPS受信部280から座標情報を取得し、車両情報取得部240から速度情報とパーキングブレーキの解除状況の情報を取得する。
そして、車両環境情報管理部224は、ナビアプリ起動済フラグがONに設定されているか否かを判定する(ステップS402)。具体的には、車両環境情報管理部224は、システム起動処理のステップS107においてナビアプリ起動済フラグがONに設定されたか否か、すなわちナビゲーションアプリ222が起動済みか否かを判定する。ナビアプリ起動済フラグがONに設定されていない場合(ステップS402にて「No」の場合)には、車両環境情報管理部224は、後述するステップS408へ制御を進める。
ナビアプリ起動済フラグがONに設定されている場合(ステップS402にて「Yes」の場合)には、車両環境情報管理部224は、蓄積メモリカウンタがゼロか否かを判定する(ステップS403)。
蓄積メモリカウンタがゼロである場合(ステップS403にて「Yes」の場合)には、車両環境情報管理部224は、ステップS401において取得した各種のセンサデータをバッファ232に格納する(ステップS404)。
そして、車両環境情報管理部224は、センサ情報変化通知を現在地算出部223へ送信する(ステップS405)。そして、車両環境情報管理部224は、Aタイマ応答処理を終了させる。
蓄積メモリカウンタがゼロでない場合(ステップS403にて「No」の場合)には、車両環境情報管理部224は、第二の周期であるΔTに従うBタイマが設定済みであるか否かを判定する(ステップS406)。Bタイマが設定済みでない場合(ステップS406にて「No」の場合)には、車両環境情報管理部224は、第二のタイマ(Bタイマ)の周期を1msに設定してBタイマを起動する(ステップS407)。そして、後述するステップS408へ制御を進める。Bタイマが設定済みである場合(ステップS406にて「Yes」の場合)には、車両環境情報管理部224は、後述するステップS408へ制御を進める。
そして、車両環境情報管理部224は、車両環境情報蓄積メモリにステップS401において取得した各種のセンサデータを格納する(ステップS408)。そして、車両環境情報管理部224は、蓄積メモリカウンタをインクリメントする(ステップS409)。そして、車両環境情報管理部224は、Aタイマ応答処理を終了させる。
以上が、Aタイマ応答処理の流れである。Aタイマ応答処理によれば、ナビゲーションアプリ222が起動済みか否かに応じて、センサデータをバッファ232に格納するか車両環境情報蓄積メモリ231に格納するかのいずれかの処理を行うことができる。また、車両環境情報蓄積メモリ231に格納する場合には、Bタイマの起動を行うことができる。
図8は、Bタイマ応答処理の流れを示す図である。Bタイマ応答処理は、タイマ割込み処理のステップS304において開始される。
まず、車両環境情報管理部224は、蓄積メモリカウンタがゼロか否かを判定する(ステップS501)。蓄積メモリカウンタがゼロの場合(ステップS501にて「Yes」の場合)には、すなわち車両環境情報蓄積メモリ231に新たなデータが無い場合には、車両環境情報管理部224は、第二のタイマ(Bタイマ)を解除し停止させる(ステップS502)。そして、車両環境情報管理部224は、Bタイマ応答処理を終了させる。
蓄積メモリカウンタがゼロでない場合(ステップS501にて「No」の場合)には、すなわち車両環境情報蓄積メモリ231に新たなデータがある場合には、車両環境情報管理部224は、車両環境情報蓄積メモリから最先のセンサ情報(すなわち、新たなデータのうち、より早い段階で格納されたデータ)を読み出してバッファ232へ書き込む(ステップS503)。
そして、車両環境情報管理部224は、蓄積メモリカウンタをデクリメントする(ステップS504)。そして、車両環境情報管理部224は、センサ情報変化通知を現在地算出部223へ送信する(ステップS505)。そして、車両環境情報管理部224は、Bタイマ応答処理を終了させる。
以上が、Bタイマ応答処理の流れである。Bタイマ応答処理によれば、第二の周期ΔTにおいて、車両環境情報蓄積メモリ231に格納されたセンサ情報を格納された順に従ってバッファ232へ書き込むことができる。また、車両環境情報蓄積メモリ231に格納されたセンサ情報が空になると、Bタイマを解除して第二の周期ΔTでのバッファ232への書き込みを中止することができる。
図9は、センサ情報参照処理の流れを示す図である。センサ情報参照処理は、ナビゲーションアプリ222が起動すると、開始される。
まず、現在地算出部223は、センサ情報変化通知を受信したか否かを判定する(ステップS601)。すなわち、現在地算出部223は、バッファ232の情報に変化があった旨の通知を車両環境情報管理部224から受けたか否かを判定する。センサ情報変化通知を受信していない場合(ステップS601にて「No」の場合)には、現在地算出部223は、ステップS601を再度行う。
センサ情報変化通知を受信した場合(ステップS601にて「Yes」の場合)には、現在地算出部223は、センサ情報をバッファ232から読出す(ステップS602)。現在地算出部223は、バッファ232に格納されているセンサ情報をすべて読出し、情報の種類に応じて保持する。
そして、現在地算出部223は、センサ情報を用いて推定現在地を再算出する(ステップS603)。具体的には、現在地算出部223は、直近の過去に算出した現在地を現在地情報261から読み出し、センサ情報を用いて差分の情報を算出し、読み出した現在地を差分の情報で更新して推定現在地を算出する。なお、現在地算出部223は、GPS情報あるいは速度情報を得られている場合にはGPSの座標あるいは速度情報を現在地の推定に用いることで、より精度高く現在地を推定することができる。GPSの座標情報は一般利用の範囲では精度が高くない場合もあることから、現在地算出処理において必須となるものでは無いが、ナビゲーション装置200の起動に時間がかかると予想される場合には、GPSを補助的に使用して時間を短縮することが想定される。このような現在地の推定方法そのものは、公知のアルゴリズムを用いるものであってもよい。
そして、現在地算出部223は、推定現在地を記録して、再表示する(ステップS604)。具体的には、現在地算出部223は、ステップS603において推定した現在地について、現在地情報261へ格納する。そして、現在地算出部223は、ナビゲーションアプリ222に現在地を受け渡すことで、ナビゲーションアプリ222が現在地周辺の地図情報とともに表示画面を更新し再表示を行う。なお、推定現在地の軌跡を表示するためには、走行時の速度情報を用いることで精度高く表示することができる。
以上が、センサ情報参照処理の流れである。センサ情報参照処理によれば、更新されたバッファ232の更新があったタイミングでバッファ232からセンサ情報を取得して、現在地の推定を行うことができる。
以上が、実施形態に係るナビゲーション装置200である。上記の実施形態によれば、ナビゲーション装置200は、多重開発を抑えつつ、電源投入後、ナビゲーションシステムが立ち上がるまでの位置の変化に応じて現在地の算出を行うことができる。
ただし、本発明は、上記の実施形態に制限されない。上記の実施形態は、本発明の技術的思想の範囲内で様々な変形が可能である。
例えば、上記の実施形態においては、ナビゲーション装置200の例を示したが、これに限られない。例えば、上記実施形態に記載したナビゲーション装置の特徴的な処理について、別の機器に適用する(例えば、車載コンピュータ、スマートフォン、タブレット等の携帯型装置等、各種の情報端末に適用する)ことも可能である。