(57)【要約】【課題】走行ログによるシミュレーション走行テストの際に、注目しているナビゲーションイベントや、修正したプログラムコードに関連したシミュレーション走行ルートを生成することで、必要な部分のみから構成されたテスト用の走行ルートを提供する。【解決手段】シミュレーション走行ルート作成装置は、ナビゲーションの実行を監視する実行監視部を有し、当該実行監視部が、走行ログ上のデータとイベントとの対応付けを行う。また、走行ログ上のデータとプログラム中のコードの実行箇所との対応付けを行う。作成した情報から、指定したイベントや、関数に対応した部分データを走行ログから抽出し、抽出した部分データを連結して、一つのシミュレーション走行ルートとする。これにより、テストの目的にあったルートのみから構成される走行ルートを作成できる。【選択図】図１５
2015049187.tif 000002
【特許請求の範囲】
【請求項１】
移動体の移動に基づいて、ナビゲーションの画面表示や音声案内を再現するナビゲーション装置のシミュレーション走行に入力する移動履歴情報を作成するシミュレーション走行ルート生成装置と、前記ナビゲーション装置とで構成されるシミュレーション走行ルート生成システムであって、
前記シミュレーション走行ルート生成装置は、前記移動履歴情報を生成するシミュレーション走行ルート生成部を有し、
前記ナビゲーション装置は、移動体の移動に応じて前記案内を行うナビゲーション部と、当該ナビゲーション部の実行状態を監視する監視部とを有し、
前記ナビゲーション部が、前記移動履歴情報に基づいてナビゲーション処理を実行する際に発生する事象と、事象が発生したときの前記移動履歴情報の項目との対応を、前記監視部が記録し、
前記シミュレーション走行ルート生成部が、前記監視部が記録した情報から、抽出条件に該当する事象に対応する前記移動履歴情報の項目を抽出し、抽出した項目を連結して一つのシミュレーション走行ルートとして生成する、
ことを特徴とするシミュレーション走行ルート生成システム。
【請求項２】
請求項１記載のシミュレーション走行ルート生成システムにおいて、
前記抽出条件とは、ユーザが指定した特定の事象であることを特徴とするシミュレーション走行ルート生成システム。
【請求項３】
請求項１記載のシミュレーション走行ルート生成システムにおいて、
前記抽出条件とは、ユーザが指定した複数の事象の重複度であることを特徴とするシミュレーション走行ルート生成システム。
【請求項４】
請求項１記載のシミュレーション走行ルート生成システムを構成する前記ナビゲーション装置において、
前記ナビゲーション部が、必要とする事象が変更されたときに、当該事象に対応するシミュレーション走行ルートを生成し、走行箇所とすることを特徴とするシミュレーション走行ルート生成システム。
【請求項５】
移動体の移動に基づいて、ナビゲーションの画面表示や音声案内を再現するナビゲーション装置のシミュレーション走行に入力する移動履歴情報を作成するシミュレーション走行ルート生成装置と、前記ナビゲーション装置とで構成されるシミュレーション走行ルート生成システムであって、
前記シミュレーション走行ルート生成装置は、前記移動履歴情報を生成するシミュレーション走行ルート生成部を有し、
前記ナビゲーション装置は、移動体の移動に応じて前記案内を行うナビゲーション部と、当該ナビゲーション部の実行状態を監視する監視部とを有し、
前記ナビゲーション部が実行するプログラム中の特定位置と、当該プログラムの特定位置を実行した時点の、前記移動履歴情報から読み出された項目との対応を、前記監視部が記録し、
前記シミュレーション走行ルート生成部が、前記監視部が記録した情報から、指定したプログラム中の特定位置に対応する前記移動履歴情報の項目を抽出し、抽出した項目を連結して一つのシミュレーション走行ルートとして生成する、
ことを特徴とするシミュレーション走行ルート生成システム。
【請求項６】
前記プログラム中の特定位置は、前記プログラムに含まれる関数の入口、または／および出口に当る位置であることを特徴とする請求項５に記載のシミュレーション走行ルート生成システム。
【請求項７】
前記指定したプログラム中の特定位置は、前記ナビゲーション部が実行するプログラムコードの修正履歴から、指定された期間に修正された関数が抽出されて、該関数の入口、または／および出口に当る位置であることを特徴とする請求項５に記載のシミュレーション走行ルート生成システム。
【請求項８】
請求項１または請求項５に記載のシミュレーション走行ルート生成システムにおいて、
前記シミュレーション走行ルート生成部が、前記移動履歴情報から項目を抽出する際に、抽出する移動履歴情報の項目の前後にある一つまたは複数の項目も纏めて抽出することを特徴とするシミュレーション走行ルート生成システム。
【請求項９】
請求項１または請求項５に記載のシミュレーション走行ルート生成システムにおいて、
前記シミュレーション走行ルート生成部が、前記移動履歴情報から抽出した移動履歴情報の複数の項目のうち、時間または位置が一定以上離れている場合に、間を補完してルート生成することを特徴とするシミュレーション走行ルート生成システム。
【請求項１０】
請求項１乃至９のいずれかの請求項に記載のシミュレーション走行ルート生成システムにおいて、
前記シミュレーション走行ルート生成装置と前記ナビゲーション装置は、同一のコンピュータ上に実装されて各機能が実現されることを特徴とするシミュレーション走行ルート生成システム。
【請求項１１】
移動体の移動に基づいて、ナビゲーションの画面表示や音声案内を再現するナビゲーション装置のシミュレーション走行に入力する移動履歴情報を作成するシミュレーション走行ルート生成装置と、前記ナビゲーション装置とで構成されるシミュレーション走行ルート生成システムにおけるシミュレーション走行ルート生成方法であって、
前記ナビゲーション装置は、移動体の移動に応じて前記案内を行うとともに、実行状態を監視し、
前記ナビゲーション装置が、前記移動履歴情報に基づいてナビゲーション処理を実行する際に発生する事象と、該事象が発生したときの前記移動履歴情報の項目との対応を記録し、
前記シミュレーション走行ルート生成装置が、前記記録された情報から、抽出条件に該当する事象に対応する前記移動履歴情報の項目を抽出し、抽出した項目を連結して一つのシミュレーション走行ルートとして生成する、
ことを特徴とするシミュレーション走行ルート生成方法。
【請求項１２】
請求項１１記載のシミュレーション走行ルート生成方法において、
前記抽出条件とは、ユーザが指定した特定の事象であることを特徴とするシミュレーション走行ルート生成方法。
【請求項１３】
請求項１１記載のシミュレーション走行ルート生成方法において、
前記抽出条件とは、ユーザが指定した複数の事象の重複度であることを特徴とするシミュレーション走行ルート生成方法。
【請求項１４】
移動体の移動に基づいて、ナビゲーションの画面表示や音声案内を再現するナビゲーション装置のシミュレーション走行に入力する移動履歴情報を作成するシミュレーション走行ルート生成装置と、前記ナビゲーション装置とで構成されるシミュレーション走行ルート生成システムにおけるシミュレーション走行ルート生成方法であって、
前記ナビゲーション装置は、移動体の移動に応じて前記案内を行うとともに、ナビゲーション処理の実行状態を監視し、
前記ナビゲーション装置が、実行するプログラム中の特定位置と、当該プログラムの特定位置を実行した時点の、前記移動履歴情報から読み出された項目との対応を記録し、
前記シミュレーション走行ルート生成装置が、前記ナビゲーション装置が記録した情報から、指定したプログラム中の特定位置に対応する前記移動履歴情報の項目を抽出し、抽出した項目を連結して一つのシミュレーション走行ルートとして生成する、
ことを特徴とするシミュレーション走行ルート生成方法。
【請求項１５】
前記プログラム中の特定位置は、前記プログラムに含まれる関数の入口、または／および出口に当る位置であることを特徴とする請求項１４に記載のシミュレーション走行ルート生成方法。
【請求項１６】
前記指定したプログラム中の特定位置は、前記ナビゲーション装置が実行するプログラムコードの修正履歴から、指定された期間に修正された関数が抽出されて、該関数の入口、または／および出口に当る位置であることを特徴とする請求項１４に記載のシミュレーション走行ルート生成方法。
【請求項１７】
請求項１１または請求項１４に記載のシミュレーション走行ルート生成方法において、
前記移動履歴情報から項目を抽出する際に、抽出する移動履歴情報の項目の前後にある一つまたは複数の項目も纏めて抽出することを特徴とするシミュレーション走行ルート生成方法。
【請求項１８】
請求項１１または請求項１４に記載のシミュレーション走行ルート生成方法において、
前記移動履歴情報から抽出した移動履歴情報の複数の項目のうち、時間または位置が一定以上離れている場合に、間を補完してルート生成することを特徴とするシミュレーション走行ルート生成方法。
【請求項１９】
請求項１１乃至１８のいずれかの請求項に記載のシミュレーション走行ルート生成方法において、
前記シミュレーション走行ルート生成装置と前記ナビゲーション装置は、同一のコンピュータ上に実装されて各機能が実現されることを特徴とするシミュレーション走行ルート生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、移動体の移動に伴って音声や表示による案内を行うナビゲーション装置、及びナビゲーション方法におけるシミュレーション用走行ルート生成方法およびそのシステムに係り、特に所望の事象に対応した走行箇所のみを含む走行ルートを生成する方法に関する。
【背景技術】
【０００２】
自動車等の移動体に搭載され、移動体の移動に伴って音声や表示による目的地への経路案内を行うカーナビゲーション装置が知られている。カーナビゲーション装置の開発においては、開発したプログラムの動作検証のために、実際に自動車を走行させてテストを実施し、不具合がないかを確認する必要がある。しかし、プログラムの修正のたびに自動車を実際に走行させてテストするのは手間がかかる。そのため、一度、自動車を実際に走行したときのセンサー情報（ＧＰＳや車速パルスなど、ナビゲーション処理に必要な入力データ）を保存しておき、プログラムのテストのときに、保存しておいたセンサー情報を利用して、センサーからの入力を擬似的に発生させることで、実際に自動車を走行させることなく、ナビゲーションプログラムの動作を確認する手法がとられる。以下、擬似的にナビゲーションプログラムを動作させることをシミュレーション走行、保存したセンサー情報を走行ログと呼ぶ。
【０００３】
ナビゲーションは、交差点への接近、速度超過、交通情報の受信、危険地帯の通過、といったナビゲーションに係わる事象が発生したタイミングで、利用者への案内を音声や画面表示で行う。そのため、ナビゲーションのテストでは、前記のようなナビゲーションに係わる事象の発生タイミングにおける挙動をテストしたい場合が多い。例えば車両が交差点に差しかかる手前で、曲がるべき方向を、画面と音声で示す機能が知られている。このような機能のテストでは、実際に交差点付近を走行する状態を模擬して、音声出力や画面表示が正常に実施されるかをテストすることが必要となる
前述のシミュレーション走行によるテストでは、実際に自動車を走行させることなく実車による走行の手間を省くことはできる。一方、テスト実施時までに準備されている走行ログ(走行ログの収集時には、実際の自動車で起こりうる様々な事象を考慮してデータを収集している。)には、テストしたい事象に無関係な走行箇所が含まれ、これを一から再生した場合、無関係な走行箇所についてのテスト時間が無駄になる課題があった。また、ナビゲーションのプログラムを修正した場合に、修正によって確認したい事象は異なるのに、前記シミュレーション走行によるテストでは、やはり、プログラムの修正箇所に無関係な部分が走行ログに含まれてしまうという別の課題があった。
【０００４】
この課題に対して、特許文献１が開示するナビゲーション装置は、走行ログを線として画面表示し、利用者が画面上で指定した走行箇所についてのみ部分的にシミュレーション走行する機能を持つ。
また、特許文献２が開示するテスト方法は、プログラムと、プログラムをテストするための入力データ(テストケースと呼ぶ)との間の関連に基づき、プログラムの修正箇所に関連したテストケースのみをテスト対象としてテストを実施する。すべてのテストケースを実行するのに要する時間の削減を行っている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００１−０２１３７３号公報
【特許文献２】特開２００８−２０４４０５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１によるナビゲーション装置では、シミュレーション走行させる場所を画面上から選択するため、テストしたい事象が、走行箇所のどの部分で発生するのか、視覚的に判断できる事象である場合しか、場所を特定できないうえ、厳密にどこで事象が発生するかは、画面上では把握できない。また、特許文献２によるテスト方法では、複数の走行ログから、プログラムの修正に関連のある走行ログを抽出することはできるが、走行ログの中に含まれるテストに無関係な走行部分を特定し、削減することはできない。
本発明は、上記問題に鑑みてなされたものであり、ナビゲーション中に発生する事象や、プログラムの修正箇所に基づいて、テストに必要な走行ルートを生成することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するために本発明では、移動体の移動に基づいて、ナビゲーションの画面表示や音声案内を再現するナビゲーション装置のシミュレーション走行に入力する移動履歴情報を作成するシミュレーション走行ルート生成装置と、前記ナビゲーション装置とで構成されるシミュレーション走行ルート生成システムを、前記シミュレーション走行ルート生成装置は、前記移動履歴情報を生成するシミュレーション走行ルート生成部を有し、前記ナビゲーション装置は、移動体の移動に応じて前記案内を行うナビゲーション部と、当該ナビゲーション部の実行状態を監視する監視部とを有し、前記ナビゲーション部が、前記移動履歴情報に基づいてナビゲーション処理を実行する際に発生する事象と、事象が発生したときの前記移動履歴情報の項目との対応を、前記監視部が記録し、前記シミュレーション走行ルート生成部が、前記監視部が記録した情報から、抽出条件に該当する事象に対応する前記移動履歴情報の項目を抽出し、抽出した項目を連結して一つのシミュレーション走行ルートとして生成するように構成した。
【０００８】
また、上記課題を解決するために本発明では、移動体の移動に基づいて、ナビゲーションの画面表示や音声案内を再現するナビゲーション装置のシミュレーション走行に入力する移動履歴情報を作成するシミュレーション走行ルート生成装置と、前記ナビゲーション装置とで構成されるシミュレーション走行ルート生成システムを、前記シミュレーション走行ルート生成装置は、前記移動履歴情報を生成するシミュレーション走行ルート生成部を有し、前記ナビゲーション装置は、移動体の移動に応じて前記案内を行うナビゲーション部と、当該ナビゲーション部の実行状態を監視する監視部を有し、前記ナビゲーション部が実行するプログラム中の特定位置と、当該プログラムの特定位置を実行した時点の、前記移動履歴情報から読み出された項目との対応を、前記監視部が記録し、前記シミュレーション走行ルート生成部が、前記監視部が記録した情報から、指定したプログラム中の特定位置に対応する前記移動履歴情報の項目を抽出し、抽出した項目を連結して一つのシミュレーション走行ルートとして生成するように構成した。
【０００９】
また、上記課題を解決するために本発明では、移動体の移動に基づいて、ナビゲーションの画面表示や音声案内を再現するナビゲーション装置のシミュレーション走行に入力する移動履歴情報を作成するシミュレーション走行ルート生成装置と、前記ナビゲーション装置とで構成されるシミュレーション走行ルート生成システムにおけるシミュレーション走行ルート生成方法において、前記ナビゲーション装置は、移動体の移動に応じて前記案内を行うとともに、実行状態を監視し、前記ナビゲーション装置が、前記移動履歴情報に基づいてナビゲーション処理を実行する際に発生する事象と、該事象が発生したときの前記移動履歴情報の項目との対応を記録し、前記シミュレーション走行ルート生成装置が、前記記録された情報から、抽出条件に該当する事象に対応する前記移動履歴情報の項目を抽出し、抽出した項目を連結して一つのシミュレーション走行ルートとして生成するようにした。
【００１０】
また、上記課題を解決するために本発明では、移動体の移動に基づいて、ナビゲーションの画面表示や音声案内を再現するナビゲーション装置のシミュレーション走行に入力する移動履歴情報を作成するシミュレーション走行ルート生成装置と、前記ナビゲーション装置とで構成されるシミュレーション走行ルート生成システムにおけるシミュレーション走行ルート生成方法において、前記ナビゲーション装置は、移動体の移動に応じて前記案内を行うとともに、ナビゲーション処理の実行状態を監視し、前記ナビゲーション装置が、実行するプログラム中の特定位置と、当該プログラムの特定位置を実行した時点の、前記移動履歴情報から読み出された項目との対応を記録し、前記シミュレーション走行ルート生成装置が、前記ナビゲーション装置が記録した情報から、指定したプログラム中の特定位置に対応する前記移動履歴情報の項目を抽出し、抽出した項目を連結して一つのシミュレーション走行ルートとして生成するようにした。
【発明の効果】
【００１１】
本発明によれば、注目してテストしたいナビゲーションイベントや、修正したプログラムコードに関連した走行箇所のみを含む走行ルートを生成でき、生成した走行ルートを用いて、シミュレーション走行によるテストが実施できる。そのため、注目ポイントに無関係な部分を走行する必要がないため、テストの効率化が実現できる。
【図面の簡単な説明】
【００１２】
【図１】本発明の一実施形態に係るシミュレーション走行ルート生成システムを構成するナビゲーション装置のブロック図である。
【図２】本発明の一実施形態に係るシミュレーション走行ルート生成システムを構成するコンピュータのブロック図である。
【図３】本発明の一実施形態に係るシミュレーション走行ルート生成システムの構成図である。
【図４】走行ログの一例を示す図である。
【図５】ナビゲーション装置によるナビゲーション処理を示すブロック図である。
【図６】コンピュータによるシミュレーション走行ルート生成処理を示すブロック図である。
【図７】コード修正テーブルの一例を示す図である。
【図８】事前処理の手順を示すフローチャートである。
【図９】イベント発生テーブルの一例を示す図である。
【図１０】コード実行テーブルの一例を示す図である。
【図１１】ナビゲーションイベントに基づく抽出条件設定画面一例を示す図である。
【図１２】コード修正に基づく抽出条件設定画面の一例を示す図である。
【図１３】シミュレーション走行ルート生成の手順を示すフローチャートである。
【図１４】抽出リストの一例を示す図である。
【図１５】シミュレーション走行ルート生成処理の概念を示す図である。
【図１６】シミュレーション走行の手順を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下、本発明の実施形態に係るシミュレーション走行ルート生成システムについて図面を参照して説明する。
【００１４】
図３は、本発明の一実施形態におけるシミュレーション走行ルート生成システムの構成を表すシステム図である。シミュレーション走行を可能とする仕様のナビゲーション装置１０とコンピュータ２０は、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ Ｓｅｒｉａｌ Ｂｕｓ）のような外部バス３０で接続され、双方向に通信できる。なお、本実施の形態では、ナビゲーション装置とコンピュータ(シミュレーション走行ルート生成装置)が別の装置である例を示したが、同一のコンピュータ内でナビゲーションプログラムとシミュレーション走行ルート生成プログラムとを動作させる実施形態も考えられ、各プログラムの実行装置は問わない。
【００１５】
図１は、本発明の一実施形態に係るナビゲーション装置１０のブロック図である。ナビゲーション装置１０は、図１に示すように、ＣＰＵ１０１と、メインメモリ１０２と、スピーカー１０４と、表示装置１０５と、センサー１０６と、通信装置１０９と、二次記憶装置１１６と、を有する。そして、これらは、内部バス１０３に繋がれている。センサー１０６は、さらに、時刻・位置取得装置１０７と、速度取得装置１０７と、を有する。センサー１０６は、ＧＰＳ（Ｇｌｏｂａｌ Ｐｏｓｉｔｉｏｎｉｎｇ Ｓｙｓｔｅｍ）や車速パルスなどの方法によって、自動車の移動を計測し、センサー情報（時刻、緯度経度、自動車の速度）を取得する。このナビゲーション装置１０は、実際の自動車に搭載されるナビゲーション装置が備えるハードウエア構成、およびソフトウエア構成を備えている。
【００１６】
二次記憶装置１１６には、ナビゲーションプログラム１１３、実行監視プログラム１１０が記憶されており、これらは、必要に応じてメインメモリ１０２にロードされ、ＣＰＵ１０１がこれらのプログラムに従って動作することで、後述する事前処理やシミュレーション走行処理が実行される。
ナビゲーションプログラム１１３は、センサー情報取得プログラム１１３１と、イベント管理プログラム１１３２とを部分プログラムとして持つ。また、本発明の一実施形態の機能を実現するために導入された実行監視プログラム１１０は、イベント監視プログラム１１０１と、コード監視プログラム１１０２とを部分プログラムとして有する。
【００１７】
二次記憶装置１１６には、さらに、イベント発生情報ＤＢ（Ｄａｔａ  Ｂａｓｅ）１１１、コード実行情報ＤＢ１１２、走行ログＤＢ１１４、地図ＤＢ１１５が記憶されている。走行ログＤＢ１１４は、自動車等の実車によって走行したときのセンサー１０６からの情報の履歴（走行ログ）を保持する。イベント発生情報ＤＢ１１１は、走行ログを用いてシミュレーション走行したときに発生するイベントと走行ログの位置との関係(走行ログに記録されたどのデータが再現された時にイベントが発生したかの関係)を保持する。
コード実行情報ＤＢ１１２は、走行ログを用いたシミュレーション走行したときに実行されたナビゲーションプログラム１１３の各関数と走行ログの位置との関係(関数の入口とend(出口)が実行された時点が、走行ログのどのデータに対応するのかを表わす関係)を保持する。地図ＤＢ１１５は、ナビゲーションを行うために利用される地図データを保持する。
【００１８】
図２は、本発明の一実施形態に係るコンピュータ２０のブロック図である。コンピュータ２０はシミュレーション走行ルート生成装置であり、図２に示すように、ＣＰＵ１０１と、メインメモリ１０２と、表示装置１０５と、入力装置２０１と、通信装置１０９と、二次記憶装置１１６と、を有する。そして、これらは、内部バス１０３に繋がれている。
【００１９】
二次記憶装置１１６には、シミュレーション走行ルート生成プログラム２０２、コード開発プログラム２０４、が記憶されており、これらは、必要に応じてメインメモリ１０２にロードされ、ＣＰＵ１０１がこれらのプログラムに従って動作することで、後述するシミュレーション走行ルート生成処理が実行される。
シミュレーション走行ルート生成プログラム２０２は、抽出条件指定プログラム２０２１を部分プログラムとして持つ。
【００２０】
二次記憶装置１１６には、さらに、シミュレーション走行ルートＤＢ２０３、コード修正履歴ＤＢ２０５、が記憶されている。シミュレーション走行ルートＤＢ２０３は、生成したシミュレーション走行ルートを保持する。コード修正履歴ＤＢ２０５は、開発者がコード開発プログラム２０４を用いてナビゲーションプログラムを修正した際の履歴を保持する。
【００２１】
図４は、走行ログＤＢ１１４に格納されている走行ログ４０１の実例を示す。走行ログ４０１は、自動車にナビゲーション装置１０を搭載して、実際に路上を走行しながらナビゲーションプログラム１１３を実行した際の、センサー１０６からの入力を記録したものである。図４に示すように、移動する車に関する位置および速度が時刻情報とともに記録される。データの記録頻度は、例えば１データ/秒〜１０データ/秒程度のデータが、シーケンス番号が付けられて記録される。従って、走行ログ４０１の位置とは、シーケンス番号のことである。
以下では、実車走行を複数回実施することで、走行ログ４０１が複数、走行ログＤＢ１１４に格納されていることを想定する。ただし、走行ログ４０１が必ずしも複数存在する必要はなく、一つの走行ログ４０１において以下の処理を行ってもよい。
【００２２】
図５は、本実施形態のナビゲーション装置１０の動作を概念的に示す図である。ナビゲーション部５０２、実行監視部５０４、およびナビゲーション部５０２の部分機能であるセンサー情報取得部５０２１、イベント管理部５０２２は、ＣＰＵ１０１の実行により実現される機能部であり、以下の処理を実行する。
【００２３】
ナビゲーション部５０２は、地図ＤＢ１１５から読み込まれた地図データと、センサー情報取得部５０２１からのセンサー情報に基づき、ナビゲーション処理を実施し、利用者への案内情報をスピーカー１０４、表示装置１０５に出力する。ナビゲーション部５０２は、イベントにしたがって動作する。ナビゲーション部５０２が使用するイベントは、ナビゲーションプログラム１１３の内容によって異なる。ナビゲーション部５０２は、処理中に使用するイベントを、起動時や実行中にイベント管理部５０２２に登録することで、発生したイベントを受信できるようになる。
【００２４】
イベント管理部５０２２は、ナビゲーション処理中に発生する全てのイベントを管理する。イベントには、自動車の移動に伴う、現在位置の変更、交差点接近、速度超過などが含まれるが、ナビゲーション中に発生するイベントであればこれに限らない。
【００２５】
センサー情報取得部５０２１は、実車による走行か、シミュミレーション走行かによって、センサー情報の取得先を切り替える。実車による走行の場合は、センサー１０６からセンサー情報を取得する。シミュレーション走行の場合は、走行ログＤＢ１１４内の走行ログ４０１、またはコンピュータ２０から受信したシミュレーション走行ルート５０１のいずれかから、センサー情報を取得する。
【００２６】
実行監視部５０４は、ナビゲーション部５０２の実行状態を監視し、実行中に発生したイベントをイベント発生ＤＢ１１１に格納(どの走行ログのシーケンス番号が何番のセンサ情報を処理した時点でイベントが発生したかを記録)する。また、実行監視部５０４は、ナビゲーション部５０２のプログラムコードの実行位置を監視し、実行された関数に関する情報を、コード実行情報ＤＢ１１２に格納(ナビゲーションプログラムの各関数の入口、および出口(end)を処理した時点に、どの走行ログのシーケンス番号が何番のセンサ情報を処理していたかの対応関係を記録)する。この処理を実施するために、ナビゲーションプログラム１１３のコンパイルでは、各関数の入口(function())、出口(end)を識別するコードを残したロードモジュールを作成して、そのロードモジュールを実行することで、実行監視部５０４はコード実行情報を記録する。
【００２７】
図６は、本実施形態のコンピュータ２０の動作を概念的に示す図である。コード作成部６０１、シミュレーション走行ルート生成部６０２は、ＣＰＵ１０１の実行により実現する機能部であり、以下の処理を実行する。
【００２８】
コード作成部６０１は、プログラムの開発者からの入力に従って、ナビゲーションプログラム１１３のプログラムコードを作成する。開発者からの入力は、入力装置２０１、開発者への出力は表示装置１０５が行う。また、コード作成部６０１は、プログラムコードの修正履歴をコード修正テーブル６０４としてコード修正履歴ＤＢ２０５に格納する。
【００２９】
シミュレーション走行ルート生成部６０２は、抽出条件指定部６０２１を有する。シミュレーション走行ルート生成部６０２は、ナビゲーション装置１０から取得した走行ログ４０１、イベント発生テーブル８０１、コード実行テーブル８０２と、コード修正テーブル６０４、抽出条件６０３から、注目するテスト内容に応じて、シミュレーション走行ルート５０１を生成する。
【００３０】
図７は、コード作成部６０１が作成するコード修正テーブル６０４の実例を示す。コード修正テーブル６０４は、プログラムコードの修正箇所のファイル名と関数名、および変更日の日付情報からなる。コード修正テーブル６０４の実例として、図７では、修正履歴を関数単位としたが、ソースプログラムコードの行単位の変更履歴など、修正履歴であればこれに限らない。
【００３１】
以下、本発明の一実施形態におけるシミュレーション走行ルート生成システムで実行される各処理の詳細について説明する。
図８は、テスト用のシミュレーション走行に先立って行う事前処理を示すフローチャートである。事前処理では、実車走行によって得られた走行ログ４０１を用いて、シミュレーション走行を実行し、イベント発生テーブル８０１およびコード実行テーブル８０２を生成する。
【００３２】
ナビゲーション部５０２のセンサー情報取得部５０２１は、走行ログ４０１に記録されているセンサー情報をシーケンス番号順に順次読み出し、シーケンス番号を現在処理中の番号として記憶する（ステップＳ８０１）。実行監視部５０４は、ナビゲーション部５０２の実行を監視し、ナビゲーション部でイベント、例えば速度超過や、交差点接近などが発生したかを判定し（ステップＳ８０３）、発生していた場合、発生したイベントの種類と、現在のシーケンス番号とを対応させてイベント発生情報ＤＢ１１１に記録されたイベント発生テーブル８０１に追加する（ステップＳ８０４）。さらに実行監視部５０４は、プログラムコードの実行箇所が、関数の入り口、または関数の出口(end)に到達したかを判定し（ステップＳ８０５）、到達している場合は、現在のシーケンス番号と対応させて、コード実行情報ＤＢ１１２に記録されたコード実行テーブル８０２に追加する（ステップＳ８０６）。このようにして、ナビゲーション部５０２と連動した実行監視部５０４は、走行ログ４０１の読み込みが終了するまで、イベント発生テーブル８０１、コード実行テーブル８０２の生成処理を繰り返す（ステップＳ８０２）。
事前処理は、走行ログ４０１が複数ある場合、それぞれに対して実行する。
【００３３】
図９は、生成されたイベント発生テーブル８０１の例を表す。イベント発生テーブル８０１は、発生したイベントの種類(を表わすコード)、発生した時点でナビゲーション部５０２が処理していた走行ログ４０１のファイル名と、発生したときのシーケンス番号を表わすデータ項目から成る。
【００３４】
図１０は、生成されたコード実行テーブル８０２の例を表す。コード実行テーブル８０２は、ナビゲーションプログラムコードのファイル名と、実行が確認された関数名(関数の入口と出口を識別するデータ)と、および、それを実行した時点でナビゲーション部５０２が処理していた走行ログ４０１のファイル名とシーケンス番号を表わすデータ項目から成る。
【００３５】
以上の事前処理は、ナビゲーションプログラムの修正を行った場合、ナビゲーションプログラム１１３が扱うイベントが変更追加された場合などに再度実行して、イベント発生テーブル８０１、コード実行テーブル８０２を再構築する。
【００３６】
次に、コンピュータ２０によるシミュレーション走行ルート生成処理の手順について説明する。
図１１、図１２は、抽出する走行ルートを指定する設定画面の例を示す。
図１１は、開発者がテストを希望する内容を、ナビゲーション中に発生するイベントの種類やイベントの重複度によって指定し、指定した内容に応じたシミュレーション走行ルート４０１を生成するための設定画面である。図１１では、速度超過イベント、交差点接近イベント、及びイベントが３つ以上同時発生する場所を指定した例を示す。
【００３７】
図１２は、ナビゲーションプログラムのプログラムコードを修正した場所に応じて、シミュレーション走行ルート５０１を生成するための設定画面である。図１２では、２０１３年３月３１日 １９時以降に修正したプログラムコードの関数に関連するシミュレーション走行ルート５０１の生成を指定した例を示す。
【００３８】
図１３は、設定した条件に基づくシミュレーション走行ルート生成処理の手順を示すフローチャートである。
シミュレーション走行ルート生成部６０２は、ナビゲーション装置１０から外部バス３０を介して、走行ログ４０１、イベント発生テーブル８０１、コード実行テーブル８０２を取得し、走行ログに含まれるイベントの種類を調べ、記憶する（ステップＳ１３０１）。
抽出条件指定部６０２１は、図１１、図１２に例示したような設定画面を利用者に表示して、利用者の入力を受付けて、抽出条件６０３を取得する（ステップＳ１３０２）。このとき、ステップＳ１３０１で記憶したイベントの種類を表示し、利用者に選択させる。また、利用者に選択させることなく、ステップＳ１３０１で記憶したイベントの種類全てを抽出条件６０３としてもよい。
【００３９】
次に、シミュレーション走行ルート生成部６０２は、イベント発生テーブル８０１から、抽出条件６０３に設定されたイベントと一致するものをすべて取り出し、抽出リスト１３０１として追加する。また、同じく、抽出条件６０３で指定された重複度以上のイベントが、指定した時間内に発生するエントリを、イベント発生テーブル８０１から全て取り出す。そして、抽出リスト１３０１として追加する。なお、指定した時間内に発生するか否かの判定は、イベント発生テーブル８０１の各エントリのシーケンス番号に相当する、走行ログ４０１中のエントリについての時刻情報を比較することで行う（ステップＳ１３０３）。
【００４０】
次に、シミュレーション走行ルート生成部６０２は、コード修正テーブル６０４から、抽出条件に指定した期間に修正した関数の一覧を取得する（ステップＳ１３０４）。
次に、コード実行テーブル８０２から、ステップＳ１３０４で抽出した関数の入口に対応するエントリを抽出し、抽出リスト１３０１に追加する（ステップＳ１３０５）。なお、ステップＳ１３０４およびステップＳ１３０５で抽出リスト１３０１に追加する際に、複数の候補が見つかった場合は、最初に見つかったものを追加する。ただし、複数のうち、走行ログ４０１の位置が近いものは、複数の候補を同時に追加するなどの抽出方法も考えられ、最初に見つかったものを追加する抽出方法には限らない。また、抽出リスト１３０１への追加は、ファイル名およびシーケンス番号でソートし、同内容で既に登録がある場合は、新たに追加はしない。そして、抽出リスト１３０１に追加された関数の入口のエントリに対応する関数の出口のエントリも抽出リスト１３０１に追加される。
【００４１】
図１４は、抽出リスト１３０１の例を示す。図１４のように、抽出リスト１３０１は、走行ログ４０１のファイル名およびシーケンス番号からなる。
次に、抽出リスト１３０１の各エントリについて、シーケンス番号に該当する走行ログ４０１中のエントリおよび、前後数秒以内のエントリを取り出す（ステップＳ１３０６）。抽出したい箇所の前後のエントリも含めて取り出すことで、走行ルート片とするためである。
抽出リスト１３０１に追加されている関数の入口のエントリと関数の出口のエントリとの間の走行ログ４０１中のエントリは全て取出されて、走行ルート片とする
次に、ステップＳ１３０６で取得したエントリをシミュレーション走行ルート５０１に追加する（ステップＳ１３０７）。シミュレーション走行ルート５０１への追加については、ファイル名、シーケンス番号でソートし、重複は追加しない。
シミュレーション走行ルート生成部６０２は、最後に、シミュレーション走行ルート５０１を、ナビゲーション装置１０に送信して（ステップＳ１３０８）、終了する。
なお、ステップＳ１３０７では、ステップＳ１３０６で抽出したエントリをそのままシミュレーション走行ルート５０１として追加したが、ルートが分断しないように、ルート探索等を用いて連結してもよい。これは、ルートが繋がっていないとナビゲーションプログラムが正常に動作しない場合などに有効である。
【００４２】
また、ステップＳ１３０４およびステップＳ１３０５では、最初に発見したエントリを追加しているが、個数の上限を設けて複数エントリを追加したり、最短のルートとなるように最適なルートを選択したりしてもよい。
【００４３】
図１５は、シミュレーション走行ルート生成処理によって、二つの走行ログ４０１から、二つの部分が抽出されたシミュレーション走行ルート５０１の例および、さらに分断した走行箇所をルート探索で結合して生成されたシミュレーション走行ルート５０１の例を示す。
【００４４】
次に、ナビゲーション部５０２によるテストのためのシミュレーション走行の手順について説明する。
図１６は、シミュレーション走行の手順を示すフローチャートである。ナビゲーション部５０２は、シミュレーション走行ルート５０１の読み出しを行い（ステップＳ１６０１）、データが存在する間、ナビゲーション動作を実行する（ステップＳ１６０３）。データの読み込みが終了した場合は、プログラムを終了する（ステップＳ１６０２）。
【００４５】
なお、本実施の一形態では、テストシミュレーション走行に先立って、シミュレーション走行ルート５０１の作成を行ったが、シミュレーション走行中に、ナビゲーション部５０２が必要とするイベントをイベント管理部５０２２に登録するたびに、当該イベントに対応する走行ルートを、シミュレーション走行ルート生成処理によって、動的に生成し、走行するルートを実行中に追加してもよい。
【００４６】
以上で説明したように本発明によれば、注目しているナビゲーションイベントやイベントの発生条件に基づき、複数の走行ログから、注目している状態を発生するルートのみを抽出する。これによって、効率的に走行テストを実行できる。また、修正した関数に関係のある走行ルートのみを抽出する。これによって、プログラムコード修正時のテストを効率よく実行できる。
【符号の説明】
【００４７】
１０…ナビゲーション装置、２０…コンピュータ、１０１…ＣＰＵ、１０２…メインメモリ、１０３…内部バス、１０４…スピーカー、１０５…表示装置、１０６…センサー、１０７…時刻位置取得装置、１０８…速度取得装置、１０９…通信装置、１１０…実行監視プログラム、１１１…イベント発生情報ＤＢ、１１２…コード実行情報ＤＢ、１１３…ナビゲーションプログラム、１１４…走行ログＤＢ、１１５…地図ＤＢ、１１６…二次記憶装置、２０２…シミュレーション走行ルート生成プログラム、２０３…シミュレーション走行ルートＤＢ、２０４…コード開発プログラム、２０５…コード修正履歴ＤＢ、４０１…走行ログ、５０１…シミュレーション走行ルート、５０２…ナビゲーション部、５０４…実行監視部、６０１…コード作成部、６０２…シミュレーション走行ルート生成部、６０３…抽出条件、６０４…コード修正テーブル、８０１…イベント発生テーブル、８０２…コード実行テーブル、１３０４…抽出リスト。
【図１】
2015049187.tif 000003
【図２】
2015049187.tif 000004
【図３】
2015049187.tif 000005
【図４】
2015049187.tif 000006
【図５】
2015049187.tif 000007
【図６】
2015049187.tif 000008
【図７】
2015049187.tif 000009
【図８】
2015049187.tif 000010
【図９】
2015049187.tif 000011
【図１０】
2015049187.tif 000012
【図１１】
2015049187.tif 000013
【図１２】
2015049187.tif 000014
【図１３】
2015049187.tif 000015
【図１４】
2015049187.tif 000016
【図１５】
2015049187.tif 000017
【図１６】
2015049187.tif 000018