自動運転を実現する制御アプリケーションは、車両の周辺の多様な車両周辺環境データに対して正しく動作する必要がある。アプリケーションの正常動作確認を担保するため、アプリケーション開発中に、車両周辺環境データを入力とした検証を行う必要がある。検証に用いる車両周辺環境データを用意する方法としては、実車を使い車両周辺環境データを収集することや、シミュレータを用いて人工的に生成することが挙げられる。車両周辺環境データとしては、歩行者、車両、道路状況、天候をはじめとして、実世界の多様な状況を想定する必要があり、そのような車両周辺環境データをシミュレータだけで網羅的に模擬するのは一般的に困難とされている。そのため、実際の車両において走行中に得られる車両周辺環境データを活用しての検証は欠かせないと考えられている。
実車において収集したデータを活用する検証タイミングとして、リアルタイムに検証するオンライン検証と、ログデータをデータセンタ側に送って、データセンタ側でアプリケーションの検証を行うオフライン検証の2通り存在する。オフライン検証では、アプリケーションの検証に用いるデータをデータセンタ側に送る際の、データ量が膨大であり通信負荷が大きいことが欠点としてあるため、本発明では、オンライン検証を扱う。
オンライン検証の場合にも、実車走行が手動運転されている場合と自動運転となっている場合で、検証の課題が異なる。人が運転する手動運転の場合は、検証に対して用いることができる余剰のCPUリソースが潤沢にある。一方で自動運転の場合は、自動運転のアプリケーション処理でCPUリソースが使用されるため、検証に対して用いられるCPUリソースが手動運転時に比べ小さい。将来的には自動運転車が普及すると見込まれるため、この自動運転中に得られる車両周辺環境データを用いて、CPUリソースが小さい中にあっても、効率的にアプリケーションの検証を行う必要がある。本形態では、車載制御装置上で複数のアプリケーションの複数の走行環境条件において検証のスケジュールを制御する技術を説明する。
以下、図面を参照して、車両群を跨いで検証を管理する検証管理サーバと演算装置である車載制御装置からなる検証システムの実施の形態を説明する。なお、本実施形態では、本発明の適用先の車載制御装置の一例として、先進運転支援システム(ADAS:Advanced Driver Assistance Systems)や自動運転システムにおいて車両の運転支援又は走行制御を処理する装置を扱うが、これに限らず他のシステムであってもよい。
―第1の実施の形態―
以下、図1〜図9を参照して、検証システムの第1の実施の形態を説明する。
(システム構成)
図1は、本発明による検証システム1の構成の一例を示すブロック図である。ただし図1では作図の都合により車両2の構成を簡略して記載しており、詳細は図2に記載する。
図1に示すように、本実施例に係る検証システム1は、1台以上の車両2と、1台以上の車両2に対して車載アプリケーションの検証を管理する検証管理サーバ10とを含んで構成される。それぞれの車両2と検証管理サーバ10は、ネットワーク3を経由して接続される。まず図2を参照して車両2の構成を説明する。
(車両の構成)
車両2は、車載制御装置21と、無線通信装置20と、外界センサ群22と、車両センサ群23と、アクチュエータ群24と、車載ネットワーク25と、を有する。
(車載制御装置の構成)
車載制御装置21は、例えば、車両2に搭載されたECU(Electronic Control Unit)等であり、処理部220と、車載記憶部210と、通信部230と、を有する。なお、車載制御装置21の形態に特に制限はなく、例えば、車両2の位置推定を行うための車両位置推定装置でもよいし、車両2のADASを実現するための走行制御装置でもよい。さらに車載制御装置21は、外界センサから取得した周辺環境データから周辺物体の検出を行う周辺物体検出処理装置でもよいし、車両2のユーザが車両2の内部ネットワークに接続したスマートフォン等の外部装置でもよい。
処理部220は、例えば、CPU(Central Processing Unit:中央演算処理装置)及びRAM(Random Access Memory)などを含んで構成され、所定の動作プログラムを実行することで、車載制御装置21の機能を実現する処理を行う。また、処理部220には、機能ブロックとして、センサ入力部221、アクチュエータ出力部222、基本アプリ実行制御部223、検証アプリ実行制御部224、検証計画情報取得部225、検証結果出力部226、および走行環境条件成立予測部227、を備える。処理部220は、車載制御装置21に外部から停止命令が入力されると、センサ入力部221、アクチュエータ出力部222、基本アプリ実行制御部223、検証アプリ実行制御部224、検証計画情報取得部225、検証結果出力部226、走行環境条件成立予測部227に停止命令を出力する。
センサ入力部221は、車両の周辺に関連する周辺環境情報と、車両の動きに関連する車両センサ情報とを外界センサ群22および車両センサ群23から取得して、これらを車載記憶部210に不図示のアプリケーション入出力データ群として格納する。周辺環境情報とは、たとえば車両の周辺に存在する障害物の情報や、車両の周辺における道路の特徴を示す特徴物等の情報等である。なお車両の周辺に存在する障害物とは、たとえば車両の周囲を移動している他車両、自転車、歩行者等の移動体や、車両の周囲の道路上で静止している駐車車両、落下物、設置物等である。車両センサ情報とは、たとえば車両の位置、走行速度、操舵角、アクセルの操作量、ブレーキの操作量等である。センサ入力部221により取得された周辺環境情報と車両センサ情報は、アプリケーション入出力データ群として車載記憶部210に格納される。
アクチュエータ出力部222は、車載記憶部210に格納される不図示のアプリケーション入出力データ群から制御情報を取得し、車載ネットワーク25に接続されたアクチュエータ群24に対して出力する。
基本アプリ実行制御部223は、車載記憶部210に格納されている基本アプリケーションプログラム211の実行スケジュールに基づいて、車載制御装置21上の1つ以上のCPU上で基本アプリケーションプログラム211を実行および制御する。基本アプリケーションプログラム211とは、検証が完了しており車載制御装置上でメインのアプリケーションとして実行されるプログラムである。基本アプリケーションプログラム211は、検証が既に完了している点で、検証アプリケーションプログラム212とは異なる。
基本アプリケーションプログラム211はたとえば、位置推定を行うための車両位置推定アプリケーション、先進運転支援システムを実現するための走行制御アプリケーション、完全自動運転を実現するための自動運転アプリケーション、および外界センサから取得した周辺環境データから周辺物体の検出を行う周辺物体検出アプリケーションのいずれかである。
基本アプリケーションプログラム211の実行スケジュールとは、アプリケーションを逐次的または並列的に動作させるときの動作開始や終了のタイミング、および動作周期等が定義されたものである。たとえば、周期が10msと設定されたアプリケーションに対しては、基本アプリ実行制御部223が10msで当該アプリケーションを実行する。たとえば、データ並列化が設定されたアプリケーションに対しては、1つ以上のCPU上でアプリケーションを決められたタイミングで実行する等の制御を基本アプリ実行制御部223が行う。なお基本アプリケーションプログラム211の実行スケジュールは、不図示である。
検証アプリ実行制御部224は、車載記憶部210の検証計画情報213に格納されている検証アプリケーションプログラム212を、車載制御装置21上の1つ以上のCPU上で実行および制御する。検証アプリケーションプログラム212は、検証管理サーバ10からネットワーク3を経由して、検証計画情報取得部225にて取得される。検証アプリケーションプログラム212は、後に詳述する検証実行スケジュール219Aに基づき実行される。
検証アプリケーションプログラム212は、基本アプリケーションプログラム211と同一のCPU上で実行されてもよく、また異なるCPU上で実行されるよう隔離されていてもよい。また、検証アプリケーションプログラム212および基本アプリケーションプログラム211は、同一のOS上で実行されてもよいし、また異なるOS上で実行されるよう隔離されていてもよい。
この検証アプリケーションプログラム212のそれぞれには検証優先度215が設定されており、車載制御装置21は検証優先度215にしたがって検証を行う。検証優先度215は、検証管理サーバ10が、車両2では不可知の情報や複数の車両2での検証の進捗等に基づいて作成するので、車載制御装置21は効率よく検証を実行できる。
検証計画情報取得部225は、検証管理サーバ10から検証アプリケーションプログラム212と、検証方法定義214と、走行環境条件216と、検証優先度215とを含む検証計画情報213を取得し、車載記憶部210に格納する。検証計画情報213は、たとえばテーブルのフォーマットで表され、複数のエントリを有する。このエントリを以下では「検証計画エントリ」とも呼ぶ。検証計画エントリは、検証アプリケーションプログラム212と走行環境条件216の組合せごとに作成され、各検証計画エントリは、検証方法定義214と検証優先度215とを含む。
検証方法定義214は、検証アプリケーションプログラム212の検証方法の定義である。検証方法定義214の例としては、アプリケーションの出力値が直接定義されていてもよく、また基本アプリケーションプログラム211の出力値との比較で定義されていてもよい。走行環境条件216とは、検証アプリケーションプログラム212の検証を行うべき、車両の内外の環境条件である。
検証結果出力部226は、検証アプリケーションプログラム212に関する検証の結果を検証結果218として検証アプリ実行制御部224から取得し、車両2に関する車両情報219とともに検証管理サーバ10へ出力する。検証結果218には、例えば1つ以上の検証アプリケーションプログラム212ごとの検証の進捗情報が含まれる。車両情報219には、車両2の位置、速度、操舵情報、走行軌道情報、走行ルート情報を含む、車両2にて取得される車両2に関する情報が含まれる。この車両情報219は、例えば、検証アプリケーションプログラム212または基本アプリケーションプログラムが出力する情報でもよく、車両センサ群23や外界センサ群22やアクチュエータ群24が出力する情報でもよい。
走行環境条件成立予測部227は、走行環境条件216が成立するタイミングおよび成立しなくなるタイミングを事前に予測し、走行環境条件予測情報217を作成して車載記憶部210に格納する。走行環境条件成立予測部227は例えば、車両情報219と、走行環境条件216を照らし合わせて予測を行う。
車載記憶部210は、たとえば、HDD(HARD Disk Drive)やフラッシュメモリである。ただしROM(Read Only Memory)を含んで構成されてもよい。車載記憶部210には、処理部100がその機能を実現するために実行するプログラム、周期的に実行されるアプリケーションプログラム、車載制御装置21が動作するために必要なデータ群などが格納される。具体的には、車載記憶部210には、基本アプリケーションプログラム211、検証アプリケーションプログラム212、検証計画情報213、検証方法定義214、検証優先度215、走行環境条件216、走行環境条件予測情報217、検証結果218、車両情報219、および検証実行スケジュール219Aが格納される。
基本アプリケーションプログラム211は、ADASや自動運転向けの制御プログラムなどである。基本アプリケーションプログラム211はたとえば、位置推定を行うための車両位置推定アプリケーション、先進運転支援システムを実現するための走行制御アプリケーション、完全自動運転を実現するための自動運転アプリケーション、および外界センサから取得した周辺環境データから周辺物体の検出を行う周辺物体検出アプリケーションのいずれかである。
基本アプリケーションプログラム211は、不図示のアプリケーション入出力データ群を入出力する。このアプリケーション入出力データ群は、基本アプリケーションプログラム211に入力される情報、およびアプリケーションから出力される情報である。具体的にはアプリケーション入出力データ群は、車両の周辺に関連する周辺環境情報や、車両の動きに関連する車両センサ情報、およびアプリケーションがそれらを処理した情報である。このアプリケーション入出力データ群に含まれる、所定の対象要素に対応するデータの集合を、「オブジェクトデータ」と呼称し、このオブジェクトデータを単位としてデータの管理及び操作を行う。
ここで、「対象要素」とは、オブジェクトデータとして一纏めにした個々の情報要素が共通して表現する概念的な対象である。対象要素とは例えば、センサの検出対象やアクチュエータの制御対象、さらにはアプリケーションの演算処理結果である。好ましくは、特に、外界センサにおいては、認識された個々の環境要素(障害物、道路形状、交通ルール等)が対象要素に該当する。即ち本実施の形態では、外界センサというハードウエアそのものを抽象化するのではなく、検出対象である環境要素を単位として、データを抽象化する方式を採る。なお、内界センサについては、自車両という概念でオブジェクトデータを構成してもよいし、個々の検出対象ごと、たとえば車速センサであれば車速情報ごとにオブジェクトデータを構成してもよい。以下では、オブジェクトデータをデータと呼ぶ。
検証アプリケーションプログラム212は、基本アプリケーションプログラム211と異なり検証を要するプログラムである。検証アプリケーションプログラム212は、検証管理サーバ10からネットワーク3を経由して、検証計画情報取得部225にて取得される。検証アプリケーションプログラム212は、検証計画情報取得部225にて取得された検証計画情報213に基づいて、実行がスケジューリングされる。
検証アプリケーションプログラム212は、基本アプリケーションプログラム211と同一のCPU上で実行されてもよく、また異なるCPU上で実行されるよう隔離されていてもよい。また検証アプリケーションプログラム212は、基本アプリケーションプログラム211と同一のOS上で実行されてもよいし、基本アプリケーションプログラム211とは異なるOS上で実行されるように隔離されてもよい。
検証計画情報213は後述する図4に示すデータフォーマットからなるデータであり、各検証計画エントリには、検証アプリケーションプログラム212と、検証方法定義214と、検証優先度215と、走行環境条件216とを含む。
検証方法定義214は、検証計画エントリごとに定義される、アプリケーションの検証方法の定義である。この定義は、想定される正常な出力値の範囲でもよいし、出力が同一となるべき基本アプリケーションプログラム211を特定する情報でもよい。たとえば検証アプリケーションプログラム212が、特定の基本アプリケーションプログラム211(以下、「同一機能基本アプリ」と呼ぶ)と同一の機能を有し、アルゴリズムを改善して実行速度を向上させた場合には、その検証アプリケーションプログラム212の検証方法定義214はたとえば、”同一機能基本アプリと出力が同一”と定義される。この既存のアプリケーションの出力値は、基本アプリケーションプログラム211として走行中に動作させその結果を逐次比較してもよく、また、事前に既存のアプリケーションの出力値を検証方法定義として保持しておき、それと比較することでもよい。
検証優先度215は、検証計画エントリごとに定義される。この検証優先度215は、検証管理サーバ10から取得されて、車載制御装置21の車載記憶部210に格納される。検証アプリ実行制御部224は、この検証優先度215を含む検証計画情報213に基づいて、検証実行スケジュール219Aを作成することで、検証アプリケーションプログラム212の実行をスケジューリングする。
走行環境条件216は、検証アプリケーションプログラム212に対して定義される1つ以上の、検証を行うべき走行環境を定義した設定情報である。この走行環境条件216と検証アプリケーションプログラム212との組に対して、各検証計画エントリが存在する。例えば、検証アプリケーションプログラム212が認知アプリケーションプログラムの場合は、走行環境条件216は、”交差点領域にいる場合”などの走行環境が設定されている。
走行環境条件予測情報217は、走行環境条件216が成立するタイミングおよび成立しなくなるタイミングに関する情報が記載されている。走行環境条件予測情報217は、走行環境条件成立予測部227により作成される。こ走行環境条件成立予測部227は例えば、車両情報219と、走行環境条件216とを照らし合わせて走行環境条件予測情報217を作成する。この走行環境条件予測情報217は、走行環境条件216が成立する将来時間や、非成立になる将来時間、成立頻度や持続時間、成立確率などの情報を含む。
検証結果218は、検証計画情報213の検証計画エントリごとの、検証の成否や進捗を示す情報である。検証アプリ実行制御部224により、検証方法定義214に従って検証の成否が記される。また検証が完了する前でも、検証方法定義214に従って、検証アプリ実行制御部224により検証の進捗情報が記される。この検証結果218は検証結果出力部226から検証管理サーバ10へ出力される。
車両情報219は、車両2の位置、速度、操舵情報、走行軌道情報、走行ルート情報などが含まれ、車両2にて取得される車両2に関する車両情報が含まれる。この車両情報219は、例えば、検証アプリケーションプログラム212または基本アプリケーションプログラムが出力する情報でもよく、車両センサ群23や外界センサ群22やアクチュエータ群24が出力する情報でもよい。
検証実行スケジュール219Aは、検証アプリケーションプログラム212を実行するスケジュールの情報である。検証実行スケジュール219Aは、検証アプリ実行制御部224により作成される。この作成には、検証アプリケーションプログラム212と、走行環境条件216と、検証優先度215と、走行環境条件216と、走行環境条件予測情報217と、を含む情報が利用される。なお以下では、検証実行スケジュール219Aを作成、更新、変更することを「検証スケジュールを行う」や「検証のスケジューリングを実行する」とも表現する。
通信部230は、例えば、イーサネット(登録商標)又はCAN(Controller Area Network)等の通信規格に準拠したネットワークカード等を含んで構成される。通信部230は、車両2に搭載された他の装置と各種プロトコルに基づきデータの送受信を行う。なお、通信部230と車両2に搭載された他の装置との間の接続形態は、イーサネットのような有線接続に限定されることはなく、Bluetooth(登録商標)や無線LAN(Local Area Network)などの近距離無線接続であってもよい。
無線通信装置20は、例えば、LTE(Long Term Evolution)等の長距離無線通信規格、または無線LANやDSRC(Dedicated Short Range Communications)等の近距離無線通信規格に準拠したネットワークカード等を有する。無線通信装置20はたとえば、検証管理サーバ10、1台又は複数台の他車両に搭載された無線通信装置20、1台又は複数台の人等が保有する不図示の通信端末等、とデータ通信が可能に構成される。
無線通信装置20は、検証管理サーバ10とネットワーク3を介してデータ通信を行う。無線通信装置20は、好ましくは、長距離無線通信を用いてネットワーク3に接続し、例えば、IP(Internet Protocol)系の各種プロトコルなどに基づいて生成されたデータの送受信を行う。なお、無線通信装置20は、長距離無線通信に限らず、近距離無線通信を用いてネットワーク3に直接接続しても良いし、路側機等の他の通信装置を介してネットワーク3に接続しても良い。
外界センサ群22は、車両周辺の一定範囲の障害物、たとえば他車両、歩行者、物体などや、道路標識や白線などの特徴物を認識するセンサ群である。外界センサ群22は、たとえば、カメラ、レーダ、ライダ等により構成される。外界センサ群22は、検出した車両周辺の障害物や特徴物の情報、たとえば車両からの相対距離と相対角度などを、外界センサ群22や車載制御装置21が接続されている車載ネットワーク25に出力する。車載制御装置21は、この車載ネットワーク25を介して外界センサ群22からの出力結果を取得できる。なお本実施の形態では、外界センサ群22で障害物や特徴物を検出する処理を実施する構成になっているが、外界センサ群22から出力される信号やデータを用いて車載制御装置21や他装置でこれらの検出処理を行ってもよい。
車両センサ群23は、車両の動きに関する情報、たとえば走行速度、操舵角、アクセルの操作量、ブレーキの操作量などを検出する装置群である。車両センサ群23は、たとえば、車載ネットワーク25上に検出したこれらの状態量を出力する。車載ネットワーク25に接続された車載制御装置21や他装置は、この車載ネットワーク25を通じて、車両センサ群23から出力された各種部品の状態量を取得する。
アクチュエータ群24は、車両の動きを決定する操舵、ブレーキ、アクセル等の制御要素を制御する装置群である。アクチュエータ群24は、運転者によるハンドル、ブレーキペダル、アクセルペダル等の操舵情報や、車載制御装置21から出力される目標制御値に基づいて車両の動きを制御する。
ネットワーク3は、無線および有線の少なくとも一方を媒体とする回線交換網又はパケット交換網の任意の組み合わせで構成される通信ネットワークである。ネットワーク3は、検証管理サーバ10と車両2に搭載された無線通信装置20とが相互にデータを送受信可能となるように構成される。車載制御装置21は、無線通信装置20を介して、ネットワーク3を経由して検証管理サーバ10と通信する。
(検証管理サーバの構成)
図1に戻って検証管理サーバ10の構成を説明する。検証管理サーバ10は、車両2の車載制御装置21で動作するアプリケーションプログラムの検証を計画し、その進捗を管理する。なお図1では検証管理サーバ10は1つのハードウエア装置として記載しているが、複数のハードウエア装置から構成されてもよい。検証管理サーバ10は、処理部100とサーバ記憶部110と通信部120と、を有する。
処理部100は、例えば、CPU及びRAMなどを含んで構成され、所定の動作プログラムを実行することで、検証管理サーバ10の機能を実現する。また、処理部100には、機能ブロックとして、1つ以上の車両2から検証結果情報を受信する検証結果取得部102や走行環境条件成立予測部104を有する。また処理部100には、検証アプリケーションプログラムごとの検証計画情報を生成する検証計画情報生成部103、検証計画情報を車両2に送信する検証計画情報出力部101等が含まれる。
検証計画情報出力部101は、車両2に対して、サーバ記憶部110に格納されている検証アプリケーションプログラム111と、検証方法定義112と、検証優先度113と、走行環境条件114とを含む検証計画情報213を出力する。
検証結果取得部102は、車両2から送信された、検証アプリケーションプログラム111に関する検証結果情報を取得し、車両2に関する車両情報とともにサーバ記憶部110に格納する。検証結果情報には、1つ以上の検証アプリケーションプログラム212ごとの検証の進捗情報が含まれる。
検証計画情報生成部103は、検証進捗情報115と走行環境条件予測情報116に基づき、検証計画情報117を生成する。この検証計画情報117の各エントリには検証アプリケーションプログラム、検証方法定義、走行環境条件、検証優先度、等が含まれる。
走行環境条件成立予測部104は、1または複数の車両2から車両情報219を受け取る。走行環境条件成立予測部104は、検証アプリケーションプログラム111の走行環境条件114が、いずれの車両2にて近い将来に満たされるかを予測し、走行環境条件予測情報116を検証計画情報生成部103に渡す。この走行環境条件成立予測部104では、車両2では不可知の情報と、車両2の車両情報219を用いて、走行環境条件114の成立予測を行ってよい。例えば検証管理サーバ10が、車両2は不可知の、特定地域の渋滞情報を保持していた場合、その渋滞情報と車両2の車両情報を用いて走行環境条件の成立予測を行ってよい。
サーバ記憶部110は、例えば、HDD、フラッシュメモリ、ROMなどの記憶装置を含んで構成され、処理部100が実行するプログラム、及び本システムの実現に必要なデータ群などが格納される。本実施例では、特に、検証アプリケーションプログラム111、検証方法定義112、検証優先度113、走行環境条件114、検証進捗情報115、走行環境条件予測情報116、および検証計画情報117がサーバ記憶部110に格納される。
検証アプリケーションプログラム111は、車載制御装置21上の検証アプリケーションプログラム212と同様に、車載制御装置21上で検証を要するものである。検証アプリケーションプログラムごとに走行環境条件114、検証方法定義112、検証優先度113、等が定義されている。検証管理サーバ10が検証アプリケーションプログラム111を車載制御装置21上へ送信する。
検証方法定義112は、車載記憶部210に格納される検証方法定義214と同様であってよい。検証優先度113は車載記憶部210に格納される検証優先度215と同様であってよい。走行環境条件114は、車載記憶部210に格納される走行環境条件216と同様であってよい。走行環境条件114には、検証管理サーバ10にのみ知ることができ意味がある情報が含まれてもよい。
検証進捗情報115は、例えば進捗値で表され、検証の進捗を示す。この値の進捗表現値は検証アプリケーションプログラム212に依存し、検証アプリケーションプログラム212のカバレッジを示す場合や、検証アプリケーションプログラム212を検証動作させる目標時間に対するその時の検証実行時間の割合を示す場合がある。
走行環境条件予測情報116は、走行環境条件114が成立するタイミングおよび成立しなくなるタイミングを示す情報である。検証計画情報117は、検証計画情報生成部103が生成する情報であり、検証アプリケーションプログラム111と、検証方法定義112と、検証優先度113と、走行環境条件114とを含む。
通信部120は、例えば、イーサネット又はCAN等の通信規格に準拠したネットワークカード等を含んで構成され、検証管理サーバ10に搭載された他の装置と各種プロトコルに基づきデータの送受信を行う。なお、通信部120と検証管理サーバ10に搭載された他の装置との間の接続形態は、イーサネットのような有線接続に限定されることはなく、Bluetoothや無線LANなどの近距離無線接続であってもよい。
図3は、検証システム1における検証管理サーバ10の処理部100と、車両2の車載制御装置21の処理部220との間のデータの流れを示す図である。
検証管理サーバ10は、車載制御装置21に対して検証計画情報240を送信する。この通信のタイミングは、車両2が検証管理サーバ10に対して送信要求を出した際に車両2から送信してもよく、また検証管理サーバ10が任意のタイミングで車両2に対して送信してもよい。また、複数の車両2に対して同時に送信してもよい。ただし、すべての車両2に対して送信する必要はなく、いずれかの1台以上の車両に送信する。また、検証管理サーバ10から車両2に直接の送信を行わず、別の車両や別のサーバを経由して車両2に到達してもよい。検証管理サーバ10は、送信先のすべての車両2に対して同一の検証計画情報240を送信してもよいし、車両2ごとに異なる検証計画情報240を送信してもよい。
車両2上の車載制御装置21は、検証管理サーバ10に対して検証結果218と車両情報219を送信する。この通信のタイミングは、検証管理サーバが車両2に対して送信要求を出した際に車両2から送信しても、また車両2が任意のタイミングで検証管理サーバ10に送信してもよい。また、車両2から別の車両やサーバを経由して検証管理サーバ10へ到達してもよい。
検証管理サーバ10の検証結果取得部102は、1または複数の車両2から検証結果218を受け取る。この検証結果218には1または複数の検証アプリケーションプログラム212に関する検証結果として検証の成否または進捗情報が格納されている。検証結果取得部102は、検証進捗情報115として検証計画情報生成部103に渡す。
走行環境条件成立予測部104は、1または複数の車両2から車両情報219を受け取る。走行環境条件成立予測部104は、走行環境条件114がいずれの車両2にて近い将来に満たされるかを予測して走行環境条件予測情報116を生成し、走行環境条件予測情報116を検証計画情報生成部103に渡す。走行環境条件成立予測部104では、車両2では不可知の情報と、車両2の車両情報219とを用いて、走行環境条件の成立予測を行ってよい。例えば、車両2は不可知の、特定地域の渋滞情報を検証管理サーバ10が保持していた場合、その渋滞情報と車両2の車両情報を用いて走行環境条件の成立予測を行ってよい。この成立予測に基づいて検証計画情報生成部103で検証優先度を定義することにより、検証アプリケーションプログラム212の検証をさらに効率化できる。
検証計画情報生成部103は検証進捗情報115と走行環境条件予測情報116とに基づき、検証計画情報117を生成する。この検証計画情報117の各エントリには検証アプリケーションプログラム、検証方法定義、走行環境条件、検証優先度、等が含まれる。車載制御装置21の検証計画情報取得部225は、検証計画情報117を取得する。
走行環境条件成立予測部227は、車両情報219と検証計画エントリに含まれる走行環境条件216が満たされるか否か予測し、走行環境条件予測情報217を生成する。この際、検証管理サーバ10で予測された走行環境条件予測情報116を車載制御装置21が予め受信し、この走行環境条件予測情報116と組み合わせて走行環境条件予測情報217を生成してもよい。
検証アプリ実行制御部224は、検証計画情報213をもとに検証アプリケーションプログラム212の検証を行う。その際に検証アプリ実行制御部224は、基本アプリ実行制御部223からデータの入出力を受けてもよい。また図3には記載していないが、検証アプリ実行制御部224は検証アプリケーションプログラム212の検証を行う際に外界センサ群22や車両センサ群23からデータの入力を受けてもよい。検証アプリ実行制御部224は、検証の結果を検証結果218として生成する。この検証結果218には、1つ以上の検証計画情報213ごとの検証の進捗情報が含まれる。検証結果出力部226は、検証結果218を検証アプリ実行制御部224から受け取り、車両情報219とともに検証管理サーバ10へ送信する。
図4は、検証管理サーバ10のサーバ記憶部110に格納される走行環境条件114のデータのフォーマットの一例を示す図である。このフォーマットは、車載記憶部210の走行環境条件216に格納されているデータのフォーマットと同一である。走行環境条件114は1以上のエントリを有し、各エントリは検証アプリケーションプログラム名301と走行環境条件302のフィールドを有する。
検証アプリケーションプログラム名301のフィールドには、検証対象となる検証アプリケーションプログラム212を特定する1または複数の名称が格納される。この識別子は車両2が一意に特定することができればよく、自然言語でなく識別子でもよい。
走行環境条件302のフィールドには、検証アプリケーションプログラム212の検証を実行すべき走行環境の条件が格納される。同一の検証アプリケーションプログラム名301に対して、複数の走行環境条件302を設定可能である。検証アプリケーションプログラム名301と走行環境条件302の組で一意となっている必要がある。この走行環境条件302は自然言語で設定されており検証アプリ実行制御部224で解析してもよいし、コンピュータで処理する特定の言語体系で記載されていてもよい。
走行環境条件302はたとえば、場所の条件として「車両が交差点領域にいる場合」、「車両が高速道にいる場合」、「車両がXX国にいる場合」等がある。この判定条件となる車両の位置情報は、走行中にセンサ群または基本アプリケーションプログラムから提供される。また、周辺環境の条件として「周辺車両がX台存在する場合」、「歩行者がY人存在する場合」等がある。この判定条件となる周辺環境に関する情報は、走行中にセンサ群や基本アプリケーションプログラム211から提供される。また、車種に関する条件として設定してもよく、例えば「車種XX上で動作する場合」などと条件が指定されてもよい。また、天候等の条件として「曇り」「雨」などの条件を指定してもよい。また、日付や時刻で指定してもよく、例えば「Y時〜Z時」などの条件で指定してもよい。
また、複数の条件を統合して記載してもよく、例えば「高速道にいる場合かつY時〜Z時の間」などの条件で指定してもよく、「高速道にいる場合またはY時〜Z時の間」などの条件で指定してもよい。また、基本アプリケーションプログラムや他の検証アプリケーションプログラムの出力や入力を監視し、その入出力データを走行環境条件としてもよい。例えば走行環境条件を「基本アプリケーションプログラムの認知アプリCが、特定のデータDを出力している場合」としてもよい。また、基本アプリケーションプログラム211や他の検証アプリケーションプログラム212の実行を監視し、その実行状況を走行環境条件としてよく、例えば「検証アプリケーションプログラムDが動作している場合」などと指定してもよい。
この走行環境条件302は、アプリケーションの開発者が手動で設定してもよいし、検証計画情報生成部103が検証アプリケーションプログラム111を解析して自動で設定されてもよい。例えば、プログラム上のすべての分岐をカバーするように走行環境条件302が自動で設定されてもよい。
この走行環境条件114は、検証アプリケーションプログラム212や走行環境条件302が細かく設定されるとサイズが大きくなるため、検証管理サーバ10ではオリジナルの走行環境条件114を保持しておくものの、車載制御装置21へ送信される走行環境条件114は、検証実行が行われるアプリケーションプログラムに関する設定のみ抽出されたサブセットだけであってもよい。
図5は、検証管理サーバ10の検証計画情報生成部103で生成される検証計画情報213の一例を示す図である。検証計画情報213は複数のエントリを含み、各エントリは検証アプリケーションプログラム名301と、走行環境条件302と、空きCPUリソース条件403と、優先度404と、検証方法定義405とを含む。検証計画情報213は必ずしも一つのデータとして統合されている必要はなく、複数のデータ群として存在しそれらが紐づいている形で存在していてもよい。例えば、図4に記載の走行環境条件114と、各走行環境条件に対する優先度と、空きCPUリソース条件と、検証方法定義とが別個に定義されていてもよい。また、CPUリソース条件403、優先度404、および検証方法定義405は、静的に定義されている必要はなく、例えば車両2の車種ごとに異なる設定情報として保持されてもよい。ここでは図5の記載に沿って説明する。
検証計画情報213のそれぞれの検証計画エントリは、検証アプリケーションプログラム名401と走行環境条件402の組合せに対して一意に存在する。各検証計画エントリには、優先度404と空きCPUリソース条件403と検証方法定義405とがそれぞれ設定される。優先度404、空きCPUリソース条件403、および検証方法定義405は同一の内容が設定されていても構わない。検証アプリケーションプログラム名301および走行環境条件302は図4において説明したとおりなので説明を省略する。
空きCPUリソース条件403は、検証計画情報117や検証計画情報213に含まれるデータ要素であり、検証アプリケーションプログラム212の検証を行う際に必要となるCPUリソースを示すものである。空きCPUリソース条件403に記載される値は、事前に計測した、または走行中に更新された、検証時に消費されるCPUリソースの平均値や最大値などの値である。空きCPUリソース条件403の値が大きいほど検証には多くのCPUリソースを消費することを意味する。
優先度404は、車載制御装置21上の検証アプリ実行制御部224が、検証実行スケジュール219Aの作成の際に参照する情報であり、これに基づいて、検証アプリケーションプログラム212を検証する順序を決定する。優先度404の値が大きいほど優先して検証が行われる。例えば、走行環境条件402が満たされており、さらに空きCPUリソース条件403も満たされているときには、検証アプリケーションプログラム212のうち優先度が高いものから検証が行われる。
例えば、検証計画情報213が図5に示す例のとおりであり、天気が曇りであり、かつ空きCPUリソースが10%以上存在している場合には、優先度が「20」の「認知アプリA」ではなく、優先度が「30」の「認知アプリB」の検証が優先的にスケジューリングされる。ただし検証のスケジューリング方法は、優先度だけでなく他の情報も併せて、検証アプリ実行制御部224にて特定のアルゴリズムで制御されてもよい。この優先度の定義は検証管理サーバ10の検証計画情報生成部103にて行われてもよいし、車載制御装置21上の走行環境条件成立予測部で、成立予測に基づいて定義を修正してもよい。
検証方法定義405は、検証アプリケーションプログラム212の検証方法の定義である。検証アプリ実行制御部224は、この検証方法定義405に従って、実行した検証アプリケーションプログラム212の検証成否および進捗情報を管理する。検証方法定義405はアプリケーションに依存して設定される項目である。例えば検証方法定義405には、検証アプリケーションプログラム212の適切な出力値の範囲が直接定義されてもよい。また検証方法定義405には、出力が同一になるべき基本アプリケーションプログラム211が指定されてもよい。具体例を説明する。
ここでは、検証アプリケーションプログラム212が既存の基本アプリケーションプログラム211を改良したものであるケースを想定する。この場合に、改良が機能自体は変更がなく、アルゴリズムが簡略化や効率化された場合などにはこの出力値を基本アプリケーションプログラム211の出力値と比較するのみで問題ないケースが多い。その一方で、改良が機能の変更である場合には、単純に基本アプリケーションプログラムのとの出力値の比較では対応できないことがある。その際には、検証アプリケーションプログラム212の適切な出力値を予め検証方法定義405に記載しておく。
さらに検証方法定義405には次のケースも考えられる。例えば、3つのアプリケーションプログラムである検証アプリケーションプログラムA、B、Cの検証を次のように省力化できる。検証アプリケーションプログラムA、B、Cを複数連成して動作させる場合に、アプリケーションプログラムCの出力値を厳密にチェックすることで、前段のアプリケーションプログラムA、Bの検証を実質的には検証を済ませることが考えられる。
図6(a)〜(c)は検証管理サーバ10における走行環境条件予測情報116と、車載制御装置21上の走行環境条件予測情報217のデータのフォーマットの例を3つ示す図である。ここでは代表して走行環境条件予測情報116のフォーマットとして説明する。検証管理サーバ10における走行環境条件予測情報116と、車載制御装置21上の走行環境条件予測情報217のデータのフォーマットとは、同一でもよいし異なってもよい。
図6(a)に示す例では、走行環境条件予測情報217をテーブルの形態で保持している場合のフォーマットを示す。走行環境条件予測情報217は、検証アプリケーションプログラム名511と、走行環境条件512と、直近の成立タイミング513と、直近の不成立タイミング514と、のカラムを含む。走行環境条件512に対して、直近の成立タイミング513と、直近の不成立タイミング514が定義されている。
図6(a)の1行目の例では、走行環境条件512が「交差点領域にいる場合」と定義されており、直近の不成立タイミングが5秒後、と定義されている。これは、この走行環境条件の内容が成立しており、はじめて不成立になるタイミングが5秒後であることを示している。車載制御装置21上の検証アプリ実行制御部224は、例えば、この情報を用いて検証アプリケーションプログラム212が「認知アプリA」と走行環境条件216が「交差点領域にいる場合」の組に対する検証優先度215の値を大きくし、直近に優先的に検証が実行されるように調整する。これにより、将来の不成立がわかっているアプリケーションプログラムの走行環境条件に対して、優先的に検証を実行する制御が可能となる。
図6(a)の2行目の例では走行環境条件512が「周辺車両がX台存在する場合」と定義されており、直近の成立タイミングが5秒後、と定義されている。車載制御装置21上の検証アプリ実行制御部224は、例えば、「認知アプリA」の走行環境条件216に対して検証を行いたい場合には、5秒後に検証スケジューリングを再実行するようにタイマーをかけることが考えられる。またその際に、検証計画情報213の優先度404を上げることが考えられる。これにより、走行環境条件216が不成立だったアプリケーションプログラムに対して、走行環境条件216が成立してから最短で優先的に実行するような制御が可能となる。
図6(b)に示す例では、特定の検証アプリケーションプログラム212と走行環境条件216の組合せを対象とする走行環境条件予測情報217を、成立または非成立の2値の時系列データとして保持している。この例では、図6(a)に示す例では不可能であった、走行環境条件の複数回の成立および不成立を表現することができる。これにより例えば、現状成立しており5秒後に非成立し、6秒後にすぐ再度成立するケースにおいて、図6(a)の説明において述べたような優先度を上げる制御を行う必要がないことが表現できる。このように図6(b)に示す例では、将来の一定期間における成立・非成立の頻度や成立時間の情報を保持できるので、これを用いた検証スケジュールの制御が可能となる。
図6(c)に示す例では、特定の検証アプリケーションプログラム212と走行環境条件216の組合せを対象とする走行環境条件予測情報217を、成立確率の時系列データとして保持している。走行環境条件の成立予測を、例えば基本アプリケーションプログラム211の認知アプリケーションの結果を用いて行う場合に、その認知アプリケーションが出力を確率として表現する際に、それをそのまま予測情報として用いることができる。もし図6(b)の例のように2値で表現せざるを得ない場合、例えば成立確率が0.5として本来存在する場合に、その情報を切り上げや切り捨てを行うので正確な情報を失ってしまう。予測情報としてそのまま確率として保持することができれば、より正確な予測情報に基づいて検証スケジュールの制御が可能となる。
図7は、検証アプリ実行制御部224による検証アプリケーションプログラム212の検証実行スケジュール219Aの定義処理を示すフローチャートである。なお図7は、検証実行スケジュール219Aの作成処理や修正処理を示すフローチャートとも呼べる。検証アプリ実行制御部224は、まずステップS500において、実行スケジューリング要求を受けてステップS501に進む。
ステップS500を詳述すると、検証アプリ実行制御部224は、車載制御装置21のミドルウェアやOS、アプリケーションのいずれからこの要求を受けてもよい。この要求を受けるタイミングは起動時、停止中、走行中のいずれでもよい。さらに検証アプリ実行制御部224は、検証管理サーバ10から動的に要求を受けてもよい。例えば、優先度の高い検証アプリケーションプログラム212が検証管理サーバ10で定義された際に、検証管理サーバ10から各車両2の検証実行スケジュール219Aを変更するように要求されることが考えられる。また、走行環境条件216の成立が困難である場合には、検証管理サーバ10が成立条件を予測した場合にスケジューリングを要求することがありうる。
検証アプリ実行制御部224は、ステップS501において、検証計画情報213を読み込む。この検証計画情報213は例えば図5に図示したデータフォーマットで構成され、各エントリに検証アプリケーションプログラム名、走行環境条件、検証方法定義、検証優先度などを含む。もし、最新の検証計画情報を検証管理サーバ10から受け取って一定の時間が経過していた場合には、検証アプリ実行制御部224は検証管理サーバ10に検証計画情報213を要求してもよい。検証アプリ実行制御部224は、ステップS502において、走行環境条件予測情報217を読み込む。この走行環境条件予測情報217は走行環境条件に関して、走行環境条件成立予測部227が作成した予測情報である。
検証アプリ実行制御部224は、ステップS503において、走行環境条件予測情報217に基づいて検証計画エントリの優先度を更新してステップS504に進む。この更新の一例を説明する。図6(a)に示す例のように、走行環境条件512が「交差点領域にいる場合」と定義されており、直近の不成立タイミングが5秒後、と定義されている場合を想定する。この場合に検証アプリ実行制御部224は、例えば、走行環境条件予測情報217を用いてこのアプリケーションプログラムと走行環境条件512の組に対する検証優先度215の値を大きくし、直近に優先的に検証が実行されるように調整する。これにより、将来の不成立がわかっている検証アプリケーションプログラム212の走行環境条件に対して、優先的に検証を実行する制御が可能となる。
優先度の更新の別の例を、図6(b)を参照して説明する。図6(b)に示す例では、ある走行環境条件が現状成立しており5秒後に非成立し、6秒後にすぐ再度成立する。この場合には、優先度を上げる制御を行う必要がないため、優先度を下げることが考えられる。
検証アプリ実行制御部224は、ステップS504において、検証計画情報213の中で優先度の高い検証計画エントリから順に走査し、走行環境条件402を満たす検証計画エントリを抽出する。走行環境条件402を満足するか否かの具体例を説明する。まず走行環境条件402が場所に関する条件である「交差点領域にいること」である場合の例を説明する。この場合にはたとえば、基本アプリケーションプログラム211の自己位置推定アプリケーションの出力する自己位置データをもとに判断する。車両2が交差点領域にいる場合であれば走行環境条件402を満たしたものとして、ステップS505に進む。車両2が交差点領域にいない場合には走行環境条件402を満たさないので、次に優先度の高い走行環境条件に移る。
ステップS504の別な具体例を説明する。走行環境条件402に例えば、「車種XXであること」等の車両に関する条件が設定されている場合には、例えば、車両情報219に基づいて判断する。車両情報219に含まれる車種の情報が「車種XX」に合致する場合には走行環境条件402を満たしたものとして、ステップS505に進む。車両情報219に含まれる車種の情報が「車種XX」に合致しない場合には走行環境条件402を満たさないので、次に優先度の高い走行環境条件に移る。
ステップS504のさらに別な具体例を説明する。走行環境条件402に例えば、「天気が曇りであること」等の天候に関する条件が設定されている場合には、例えば、基本アプリケーションプログラム211の画像認識アプリケーションが出力する天候情報をもとに判断する。天候情報が曇りの場合には、走行環境条件402を満たしたものとして、ステップS505に進む。天候情報が曇り以外の場合には走行環境条件402を満たさないので、次に優先度の高い走行環境条件に移る。もし、走行環境条件が存在しない場合はステップS507へ進む。
なおステップS504において優先度が同じ値の検証計画エントリが複数存在する場合には、任意の検証計画エントリから選択してもよいし、検証に要するCPUリソースが大きいものから走査してもよい。このように、検証アプリケーションプログラム212の走行環境条件216を優先度の高いものから空きCPUリソース条件に基づいて判断することで、CPUリソースが少ない環境においても、優先度の高いアプリケーションの検証を優先的に完了することができる。
検証アプリ実行制御部224は、ステップS505において、CPUリソース条件や、予測情報などに基づいて、タスクに対して検証アプリケーションプログラム212の実行を割り当てる。この割り当てとは、検証実行スケジュール219Aに書き込みを行うことである。予測情報に基づく割り当てとは、例えば、走行環境条件の成立がXXms後に成立することが予測されている場合は、そのXXmsの経過後に実行されるように割り当てられるのが望ましい。また逆に、YYms後に不成立となることが予測されている場合は、そのYYmsの経過前に割当てられるのが望ましい。さらに、長時間成立しないことが予測されている場合には、当該アプリケーションプログラムは検証のためのタスクに割当てずに、他の検証アプリケーションプログラム212に譲るようにしてもよい。検証アプリ実行制御部224は、車載制御装置21上のCPUリソース状態の情報を受け取り、CPUリソース条件403に記載された数値との大小関係を比較することで、CPUリソース条件403を満足するか否かを判断する。
検証アプリ実行制御部224は、続くステップS506において、検証用のCPUリソースの空きが存在するか否かを判断する。検証アプリ実行制御部224は、リソースの空きが存在しないと判断する場合はステップS507に進み、リソースの空きが存在すると判断する場合にはステップS504に戻り、次に優先度の高い検証アプリケーションプログラムの割り当てを試みる。
検証アプリ実行制御部224は、ステップS507において、検証実行スケジュール219Aを確定して車載記憶部210に格納して図7に示す処理を終了する。検証アプリ実行制御部224は、この検証実行スケジュール219Aに基づいて検証アプリケーションプログラム212を実行する。
図8は、検証管理サーバ10における検証進捗情報115の一例を示す図である。図8では検証進捗情報115がテーブルのフォーマットで表され、複数のエントリを有する。このエントリを以下では「進捗情報エントリ」とも呼ぶ。この進捗情報エントリは、検証計画情報117の検証計画エントリに対応して存在する。
進捗情報エントリは検証アプリケーションプログラム名710と、走行環境条件711と、進捗値712と、を含む。このエントリに検証経過時間713が含まれていてもよい。検証アプリケーションプログラム名710と走行環境条件711の組は、検証計画エントリに存在するものと対応する。進捗情報エントリの進捗値712は、検証の進捗を示す。この値の進捗表現値は検証アプリケーションプログラムに依存し、検証アプリケーションプログラムのカバレッジを示す場合や、検証アプリケーションプログラムを検証動作させる目標時間に対するその時の検証実行時間の割合を示す場合を示す。この検証進捗情報115は車載制御装置21の検証アプリ実行制御部224において作られる。
進捗情報エントリの検証経過時間713は、当該アプリケーションプログラムと走行環境条件が検証計画情報として初めて車載制御装置21上でスケジューリングされてから経過した時間を示す。なお、検証管理サーバ10上での経過時間が検証進捗情報115に含まれてもよい。
図9は、検証計画情報生成部103による検証計画情報117の生成処理を示すフローチャートである。検証計画情報生成部103は、まずステップS800において、検証計画情報生成要求を受ける。検証計画情報生成部103は、ステップS801において、検証の検証進捗情報115と走行環境条件予測情報116を受け取る。検証進捗情報115は検証結果取得部102から受け取り、走行環境条件予測情報116は走行環境条件成立予測部104から受け取る。
検証計画情報生成部103は、ステップS802において、検証計画情報213を生成する。検証計画情報生成部103は、それぞれの検証計画エントリに対して、検証進捗情報115に基づいて検証経過時間に対して進捗値が小さいものの優先度を上げてもよい。また、検証経過時間に対して進捗値が大きいものの優先度を下げてもよい。また、検証管理サーバ10における走行環境条件予測情報116に基づき、直近で不成立であるが将来的に成立見込みのある検証計画エントリを優先度下げてもよいし、逆に直近は成立するが、将来的に不成立見込みのある検証計画エントリの優先度を上げてもよい。
上述した第1の実施の形態によれば、次の作用効果が得られる。
(1)車載制御装置21は、車両2に搭載され、車両2の走行制御に関する基本アプリケーションプログラム211、複数の検証アプリケーションプログラム212、検証アプリケーションプログラム212を検証する車両2に関する条件である走行環境条件216、および走行環境条件216の検証優先度215、を格納する車載記憶部210と、走行環境条件216および検証優先度215に基づき、検証アプリケーションプログラム212の検証の実行を制御する検証アプリ実行制御部224と、を備える。そのため車載制御装置21は、検証する条件と優先度を考慮して、複数の検証アプリケーションプログラム212の検証を効率よく実行できる。
(2)車載制御装置21は、車載記憶部210に、走行環境条件216における検証方法を定義した検証方法定義214が格納される。検証アプリ実行制御部224は、さらに検証方法定義214に基づき検証アプリケーションプログラム212の検証の実行を制御する。そのため車載制御装置21は、検証アプリケーションプログラム212の検証の成否を容易に判断できる。たとえば検証アプリケーションプログラム212が、既存の基本アプリケーションプログラム211と同一の機能を有し、アルゴリズムを改善して実行速度を向上させた場合には、既存の基本アプリケーションプログラム211と出力値が一致するか否かを検証する。
(3)検証アプリ実行制御部224は、検証アプリケーションプログラム212の検証に必要なデータを基本アプリケーションプログラム211から取得する。そのため検証アプリ実行制御部224は、データ処理の一部を省略でき、効率よく検証を実行できる。
(4)車載制御装置21は、車両2の走行環境が、検証計画情報213に含まれる走行環境条件216に合致するタイミングを予測する走行環境条件成立予測部227を備える。検証アプリ実行制御部224は、走行環境条件成立予測部227が予測した走行環境条件予測情報217に基づき、検証アプリケーションプログラム212の検証の実行を制御する。検証アプリ実行制御部224は、走行環境条件成立予測部227の予測に基づき検証実行スケジュール219Aを作成し、検証実行スケジュール219Aに従って検証を行うので、たとえば車両2の進行予定にあわせて複数の検証アプリケーションプログラム212を効率よく検証できる。
(5)検証管理サーバ10は、車両2と通信可能である。検証管理サーバ10は、車両2において検証されるアプリケーションである検証アプリケーションプログラム111、および検証アプリケーションプログラム111を検証すべき条件である走行環境条件114を格納するサーバ記憶部110と、車両2から取得した車両情報219および走行環境条件114に基づき検証アプリケーションプログラム212の検証優先度113を決定し、走行環境条件114と、検証アプリケーションプログラム212と、検証優先度113と、を含む検証計画情報117を生成する検証計画情報生成部103と、検証計画情報117を車両2に出力する検証計画情報出力部101と、を備える。そのため検証管理サーバ10は、車両2から取得した車両情報219および走行環境条件114に基づき検証アプリケーションプログラム212の検証優先度113を決定するので、複数の検証アプリケーションプログラム212の検証を効率よく実行させることができる。
(6)車両情報219は、車両2において実行された検証アプリケーションプログラム212の検証結果を含む。検証計画情報生成部103は、検証アプリケーションプログラム212の検証結果に基づき検証アプリケーションプログラム212の検証進捗情報115を更新し、検証進捗情報115に基づいて検証アプリケーションプログラム111の検証優先度113を決定する。そのため検証管理サーバ10は、進捗にあわせて検証優先度113を操作することで、一部の検証アプリケーションプログラム212だけが著しく遅れる事態を回避できる。さらに、検証管理サーバ10に複数の車載制御装置21が接続されている場合には、複数の車載制御装置21における検証の進捗をもとに検証優先度113を操作するので、1台の車載制御装置21だけでは不可能な、検証システム1の全体としての最適化ができる。
(7)検証管理サーバ10は、車両情報219に基づき、車両2の走行環境が検証計画情報117に含まれる走行環境条件に合致するタイミングを予測する走行環境条件成立予測部104を備える。検証計画情報生成部103は、予測したタイミングに基づき、検証アプリケーションプログラム111の検証優先度113を決定する。そのため検証管理サーバ10は、それぞれの車載制御装置21に最適な検証アプリケーションプログラム212の検証を担当させ、検証システム1の全体としての最適化ができる。
(8)検証システム1は、車両2に搭載される車載制御装置21および車載制御装置21と通信可能な検証管理サーバ10を含む。検証管理サーバ10は、車両2において検証されるアプリケーションである検証アプリケーションプログラム111、および検証アプリケーションプログラム212を検証すべき条件である走行環境条件114を格納するサーバ記憶部110と、車両2から取得した車両情報219および走行環境条件114に基づき検証アプリケーションプログラム212の検証優先度113を決定し、走行環境条件114と、検証アプリケーションプログラム111と、検証優先度113と、を含む検証計画情報117を生成する検証計画情報生成部103と、検証計画情報117を車両2に出力する検証計画情報出力部101と、を備える。車載制御装置21は、検証管理サーバ10が出力した検証計画情報117を取得する検証計画情報取得部225と、車両2の走行制御に関する基本アプリケーションプログラム211と並行して、検証アプリケーションプログラム212の検証の実行を走行環境条件216と検証優先度215に基づき制御する検証アプリ実行制御部224と、を備える。そのため検証システム1は、複数の検証アプリケーションプログラム212の検証を効率よく実行できる。
(変形例1)
車載制御装置21における優先度の更新量と、検証管理サーバ10における優先度の更新量の配分はシステム全体で事前に調整してもよい。例えば、車載制御装置21における優先度の更新を全く行わず、検証管理サーバ10でのみ優先度の更新するようにしてもよい。もしくは、例えば、検証管理サーバ10で優先度を更新し、さらに車両2での予測の結果に基づいて、細かく調整可能としてもよい。なお車載制御装置21における優先度の更新を行わない場合には、図7のステップS503の処理を行わない。
(変形例2)
図7に示した検証実行スケジュール219Aの定義処理は次の(A)〜(C)のように変更してもよい。
(A)図7では、ステップS504において、優先度の高い検証計画エントリから走査し、実行スケジュールを割り当てた。しかし別の方法として、優先度ではなく検証に必要とするCPUリソースが大きいものから走査してもよい。
(B)図7では、ステップS504において、優先度の高い検証計画エントリから走査した。しかしこの段階でCPUリソース条件403を確認し、CPUリソースを満たさないエントリについては無視してもよい。
(C)図7では検証計画情報213は読み込むのみであった。しかし、検証実行スケジュール219Aの定義が繰り返された際に、割り当てられない検証アプリケーションプログラム212に対して、優先度を大きくする処理を追加してもよい。それにより、一向に実行がスケジュールされない検証アプリケーションプログラム212の実行を保証することができる。
(変形例3)
検証計画情報213には、検証方法定義214が含まれなくてもよい。この場合には車載制御装置21は、検証アプリケーションプログラム212の実行結果、たとえばプログラムが出力する情報を検証管理サーバ10に送信することで、検証の代替とすることができる。
(変形例4)
車載制御装置21は、走行環境条件成立予測部227を備えなくてもよい。この場合には車載制御装置21は、検証する検証アプリケーションプログラム212の順番を予め既定の手法またはランダムに決定してもよい。または車載制御装置21は、所定の時間間隔ごとに走行環境条件216の成立を判断し、そのときに成立している走行環境条件216を有する検証アプリケーションプログラム212を実行してもよい。
(変形例5)
検証管理サーバ10の検証計画情報生成部103は、検証結果218に基づく検証優先度113の更新を行わなくてもよい。
(変形例6)
検証管理サーバ10は、走行環境条件成立予測部104を備えなくてもよい。この場合には検証管理サーバ10は、たとえばそれぞれの車載制御装置21にランダムに検証アプリケーションプログラム212の検証を割り当てる。
上述した各実施の形態および変形例において、機能ブロックの構成は一例に過ぎない。別々の機能ブロックとして示したいくつかの機能構成を一体に構成してもよいし、1つの機能ブロック図で表した構成を2以上の機能に分割してもよい。また各機能ブロックが有する機能の一部を他の機能ブロックが備える構成としてもよい。
車載制御装置21が不図示の入出力インタフェースを備え、必要なときに入出力インタフェースと車載制御装置21が利用可能な媒体を介して、他の装置からプログラムが読み込まれてもよい。ここで媒体とは、たとえば入出力インタフェースに着脱可能な記憶媒体、または通信媒体、すなわち有線、無線、光などのネットワーク、または当該ネットワークを伝搬する搬送波やディジタル信号、を指す。また、プログラムにより実現される機能の一部または全部がハードウエア回路やFPGAにより実現されてもよい。上述した複数の変形例は、それぞれ組み合わせてもよい。上記では、種々の実施の形態および変形例を説明したが、本発明はこれらの内容に限定されるものではない。本発明の技術的思想の範囲内で考えられるその他の態様も本発明の範囲内に含まれる。
上述した各実施の形態および変形例は、それぞれ組み合わせてもよい。上記では、種々の実施の形態および変形例を説明したが、本発明はこれらの内容に限定されるものではない。本発明の技術的思想の範囲内で考えられるその他の態様も本発明の範囲内に含まれる。