以下、実施形態について、図面を参照しながら詳細に説明する。説明は以下の順序で行う。
まず、図1を参照して第1実施形態について説明する。次に、図2〜3を参照して、第2実施形態で使われる装置の構成について説明する。その後、図4〜6を参照して、第2実施形態で使われる各種データの例を説明し、図7〜9を参照して、第2実施形態で行われるいくつかの処理について説明する。その後、他の種々の実施形態についても説明する。
図1は、第1実施形態について説明する図である。図1には、診断部1、判定部2、記憶部3、および決定部4が示されている。
例えば、車両に搭載される車載装置が、診断部1、判定部2、記憶部3、および決定部4を有していてもよい。このように診断部1、判定部2、記憶部3、および決定部4を有する車載装置は、運転診断装置の一例である。運転診断装置は、汎用的なコンピュータにより実現されてもよい。
逆に、車載装置との間でネットワークを介して情報を送受信する他の装置(以下、説明の便宜上「管理装置」ともいう)が、診断部1、判定部2、記憶部3、および決定部4を有していてもよい。ある観点によれば、このように診断部1、判定部2、記憶部3、および決定部4を有する管理装置は、車載装置と管理装置を含む運転診断システムのコンポーネントである。
また、診断部1、判定部2、記憶部3、および決定部4は、運転診断システム内で車載装置と管理装置に分散していてもよい。例えば、車載装置が診断部1を有していてもよく、管理装置が判定部2と記憶部3と決定部4を有していてもよい。
いずれにせよ、診断部1は、車両情報5に基づいて、ドライバの運転について診断を下す。車両情報5は、以下の2つのうちの少なくとも一方を示す。
・ドライバがある車両(具体的には、上記車載装置が搭載された車両)を運転している間の、当該ある車両の挙動(behavior)。
・ドライバが当該ある車両を運転している間の、ドライバの操作。
診断部1は、1つ以上の診断項目のそれぞれについて診断を下す。例えば、診断部1は、以下のような種々の診断項目について、それぞれ診断を下してもよい。
・ドライバのハンドルの切り方についての診断。例えば、ドライバのハンドル操作に応じて、車両が曲がりすぎているか、車両が適切に曲がっているか、それとも車両が不十分にしか曲がっていないのか、という診断。
・車両が直進走行中のときの左右方向(つまり、車両の進行方向に対して路面上で垂直な方向)における、車両の位置についての診断。例えば、車両が車線の右側に寄り過ぎているのか、車線の中央付近に適切に位置しているのか、それとも車線の左側に寄り過ぎているのか、という診断。
・ドライバのアクセルペダルおよび/またはブレーキペダルの操作についての診断。例えば、どの程度滑らかに当該車両が加速および/または減速されたか、という診断。
診断部1は、ある1つの時点における車両情報5に基づいて、ドライバの運転について診断を下してもよい。診断部1は、いくつかの時点それぞれの車両情報5を用いて、診断を下してもよい。診断に使われる車両情報5の種類は、診断項目に応じて異なり得る。
ドライバが運転中のある車両に関する車両情報5は、例えば、以下に例示するような情報を1種類以上含んでいてもよい。
・当該ある車両の位置を示す緯度と経度のペア。
・当該ある車両の進行方向の速度。
・当該ある車両の進行方向の加速度。
・当該ある車両のヨーレート。
・当該ある車両のピッチ角、ロール角、およびヨー角のうちの少なくとも1つ。
・当該ある車両のエンジン出力。
・当該ある車両の各タイヤの切れ角。
また、車両情報5は、当該ある車両の挙動を示す上記のような情報だけでなく、ドライバが行う操作に関する情報を含んでいてもよい。例えば、車両情報5は、以下に例示するような情報を1種類以上含んでいてもよい。
・当該ある車両のハンドルの切り角。
・当該ある車両のアクセルペダルの踏み量。
・当該ある車両のブレーキペダルの踏み量。
以下では、診断部1が下した診断の結果を「診断結果」という。診断部1は各診断項目について診断結果6を出力する。各診断結果6は、順序尺度(ordinal scale)で表されてもよく、間隔尺度(interval scale)で表されてもよく、比例尺度(ratio scale)で表されてもよい。診断項目に応じて、診断結果6は、離散値で表されてもよいし、連続値で表されてもよい。
診断結果6に応じた適切なアドバイスをドライバに与えることは、ドライバの運転を支援するうえで有益である。しかし、単純に診断結果6のみに基づくアドバイスは、ときには、ドライバにとって不適切であるおそれがある。理由は以下のとおりである。
ある車両をドライバが運転しているときのドライバの運転の仕方には、当該ある車両をドライバが運転しだす前のドライバの運転経験が影響している可能性がある。よって、診断結果6も、ドライバの運転経験の影響を受けている可能性がある。例えば、当該ある車両以外の1台以上の車両をかつてドライバが運転した経験が、診断結果6に影響している可能性もある。
また、影響の度合いは、様々な要因によって異なり得る。具体的には、ドライバが今までの経験から正の影響を受ける可能性もあるし、ドライバが負の影響を受ける可能性もある。また、影響の度合いの大きさ(magnitude)も、様々な要因によって異なり得る。なお、影響の度合いが数値的に表される場合、影響の度合いの大きさとは、影響の度合いの絶対値のことである。
ドライバが他の1台以上の車両をかつて運転した経験が、ドライバの現在の運転に対して顕著な正または負の影響を及ぼす可能性もあり得る。逆に、過去の運転経験からの影響(換言すれば過去の運転経験に起因するバイアス)が、ゼロである(またはゼロに近い)可能性もあり得る。
ドライバの現在の運転が過去の運転経験から受ける影響の度合いに応じて、現在の運転に対する評価である診断結果6も、過去の運転経験から影響を受ける。よって、例えばある診断項目に関して、ある2人のドライバに対する診断結果6が仮に同じであったとしても、2人のドライバにとって適切なアドバイスは異なる可能性がある。
個々のドライバの運転経験と無関係な一律のアドバイスは、あるドライバにとっては、有益かつ適切かもしれない。しかし、個々のドライバの運転経験と無関係な一律のアドバイスは、他のあるドライバにとっては、冗長で煩雑であるかもしれず、さらに別のドライバにとっては、間違っている可能性すらある。
よって、第1実施形態では、ドライバに対してより適切なアドバイスを提示することができるようにするため、判定部2、記憶部3、および決定部4が設けられる。
具体的には、判定部2が、過去の運転経験(つまり、ドライバが現在運転中の上記ある車両を、ドライバが運転しだす前の、ドライバの運転経験)が診断に与える影響の度合いを判定する。より具体的には、判定部2は、過去の運転経験が診断に与える影響の度合いを、履歴情報7に基づいて判定する。履歴情報7は、ドライバが現在運転中の上記ある車両を含む、互いに異なる1台以上の車両を、ドライバが今までに運転してきた履歴に関する情報である。
以下では、判定部2が判定した影響の度合いを単に「影響度」ともいう。判定部2は、各診断項目について影響度8を判定し、出力する。
判定部2が判定する影響度8は、「過去の運転経験」が診断に与える影響の度合いであるのに対し、判定部2が判定に用いる履歴情報7は、「ドライバが現在運転中の上記ある車両を含む、互いに異なる1台以上の車両」に関する情報であることに注意されたい。つまり、場合によっては、判定部2は、履歴情報7のうち、ドライバが過去に他の車両を運転した履歴を示す履歴情報7を使わずに、ドライバが現在運転中の上記ある車両についての履歴情報7から、影響度8を判定してもよい。
例えば、ドライバが現在運転中の車両を既に十分に長い期間にわたって運転している場合、判定部2は「過去に他の車両をドライバが運転した経験が、診断に与える影響の度合いは、ゼロである(またはゼロに近い)」と判定してもよい。このような判定においては、「過去にドライバが他の車両を運転したことがあるか否か」を示す履歴情報7は、必ずしも必要ではない。
また、仮にドライバが過去に他の車両を1台以上運転したことがあるとしても、上記のような判定においては、ドライバが過去に1台以上の他の車両を運転した履歴に関する詳細な履歴情報7も、必ずしも必要ではない。つまり、上記のような判定においては、「ドライバが現在運転中の上記ある車両を、ドライバがいつから(あるいは、どれくらい長い期間にわたって)運転してきたか」という履歴を示す履歴情報7だけでも十分である。
なお、影響度8は、順序尺度で表されてもよく、間隔尺度で表されてもよく、比例尺度で表されてもよい。影響度8は離散値でもよいし連続値でもよい。また、影響度8の範囲は、実施形態に応じて適宜定義されてよい。影響度8の範囲は、診断項目ごとに違っていてもよい。どの診断項目でも影響度8の範囲が共通となるように、正規化が行われてもよい。しかし、図6に関して後述するとおり、正規化は必ずしも必要ではない。
ドライバにとって適切なアドバイスは、診断結果6に応じて異なるだけでなく、上記のとおり、影響度8によっても異なり得る。そこで、記憶部3には、各診断項目について複数のアドバイスが記憶される。具体的には、ある診断項目についての各アドバイスは、診断結果と影響度の組み合わせに対応づけられて、記憶部3に記憶される。
なお、診断結果と影響度の組み合わせは、具体的には、以下のような様々なやり方で表され得る。
・診断結果を示す1つの値と、影響度を示す1つの値との組み合わせ。
・診断結果を示す1つの値と、影響度を示す値の集合(例えば値の範囲)との組み合わせ。
・診断結果を示す値の集合(例えば値の範囲)と、影響度を示す1つの値との組み合わせ。
・診断結果を示す値の集合(例えば値の範囲)と、影響度を示す値の集合(例えば値の範囲)との組み合わせ(例えば、後述の図6と11を参照)。
図1には、診断結果と影響度とアドバイスの列を有するテーブルが記憶部3の中に図示されている。しかし、テーブル形式以外のデータ形式が利用されてもよい。
どのようなデータ形式が採用されるにせよ、上記のとおり、記憶部3には、診断結果と影響度の組み合わせに応じた複数のアドバイスが記憶される。そこで、決定部4は、診断結果6(つまり診断部1により下された診断の結果)と、影響度8(つまり判定部2により判定された影響の度合い)との組み合わせに対応づけられて記憶部3に記憶されているアドバイスを、ドライバに対して提示することに決定する。
以上のような判定部2、記憶部3、および決定部4によれば、診断結果6だけでなく影響度8にも応じて、個々のドライバにとって適切なアドバイスが選ばれる。よって、第1実施形態には、「ドライバに、より適切なアドバイスを与えることができる」という効果がある。したがって、第1実施形態によれば、ドライバをより適切に支援することが可能となる。
例えば、ある診断項目の診断結果6は、1点から10点までの10段階で表されてもよく、10点が最高の評価であってもよい。例えば、仮に診断結果6が7点であったとすると、以下のように様々な場合があり得る。
例えば、「ドライバは、今までの他の1台以上の車両の運転経験から、顕著な正の影響を受けている」と推定される場合があり得る。この場合、「強い正の影響を受けてさえ、このドライバの現在の運転はせいぜい7点にしか至らない」と推定される。よって、この場合、ドライバ自身の基礎的な運転能力がそれほど高くないおそれがある。よって、この場合、「初心者向けの易しいアドバイスが有益だろう」と推定される。
逆に、「ドライバは、今までの他の1台以上の車両の運転経験から、顕著な負の影響を受けている」と推定される場合があり得る。この場合、「強い負の影響を受けてさえ、ドライバの現在の運転は7点を下回らずに済んでいる」と推定される。よって、この場合、「ドライバの適応能力や運転能力は比較的高い」と推定されるが、運転にはなお改善の余地がある。よって、この場合、「ある程度能力の高いドライバ向けの高度なアドバイスが有益だろう」と推定される。
あるいは、「影響の度合いは、ゼロであるか、またはゼロに近い」という場合があり得る。より具体的には、「ドライバは、今までの他の車両の運転経験から顕著な影響は受けていない」と推定される場合もあり得る。また、「ドライバは、他の車両を運転したことがないので、他の車両の運転経験による影響がそもそも存在しない」という場合もあり得る。いずれにしろ、「影響の度合いは、ゼロであるか、またはゼロに近い」という場合、「7点」という診断結果6は、ドライバの運転能力をほぼありのままに反映していると推定される。7点は悪い評価ではないが、運転にはなお改善の余地がある。よって、この場合、「一般的なアドバイスが有益だろう」と推定される。
もちろん、診断項目の種類に応じて、診断結果6の値の範囲は異なり得る。また、診断結果6の値が大きいほど評価が高い診断項目もあり得るし、診断結果6の値が小さいほど評価が高い診断項目もあり得る。診断結果6の値が基準値に近いほど評価が高いような診断項目もあり得る。
したがって、「過去の運転経験からの影響の度合いに応じて、どのようにアドバイスを変えるのが適切なのか」という具体的な方法は、診断項目の種類に応じて異なり得る。もちろん、適切なアドバイスは、診断結果6自体によっても異なり得る。記憶部3には、診断項目の種類ごとに、診断結果と影響度の組み合わせに応じた適切なアドバイスが予め記憶されている。よって、第1実施形態によれば、決定部4が記憶部3から適切なアドバイスを選ぶことができる。
なお、車載装置は、決定部4がドライバに対して提示することに決定したアドバイスを出力する出力部を、さらに含んでいてもよい。あるいは、車載装置は、外部の出力部と接続されていてもよい。出力部は、以下のいずれであってもよい。
・音声的にアドバイスを出力するスピーカ。
・文字および/または画像を用いて視覚的にアドバイスを出力するディスプレイ。
・スピーカとディスプレイの組み合わせ。
また、出力部がアドバイスを出力するタイミングを制御する制御部を、車載装置がさらに含んでいてもよい。例えば、制御部は、車両の停車中にアドバイスを出力するよう、タイミングを制御してもよい。実施形態によっては、制御部は、車両の走行中に出力部がアドバイスを出力することを許してもよい。しかし、制御部は、車両が右折または左折している最中にはアドバイスの出力を避けるよう、出力タイミングを制御することが好ましい。制御部は、以上のようなタイミングの制御を、車両情報5に基づいて行う。
ところで、履歴情報7は、上記のとおり、ドライバが現在運転中の上記ある車両を含む、互いに異なる1台以上の車両を、ドライバが今までに運転してきた履歴に関する情報である。以下に、履歴情報7のより具体的な内容を説明する。
履歴情報7は、例えば以下の2つの車両仕様情報を含んでいてもよい。
・ドライバが現在運転中の上記ある車両の仕様を示す第1の車両仕様情報。
・ドライバが今まで運転してきた上記1台以上の車両のうち、ドライバが現在運転中の上記ある車両とは別の車両の仕様を示す(つまりドライバが過去に運転した別の車両の仕様を示す)第2の車両仕様情報。
例えば、車両仕様情報は、車種、車幅、車高、車重、タイヤの直径、エンジン出力性能、ハンドリング性能、運転席が車両の右側と左側のどちらにあるか、などを表す値のうち少なくとも1つを含んでいてもよい。履歴情報7が上記のように第1と第2の車両仕様情報を含む場合、判定部2は、第1の車両仕様情報が示す仕様と第2の車両仕様情報が示す仕様との差の大きさ(magnitude)に対して、影響度8の大きさが単調増加するように、影響度8を判定してもよい。このような判定部2の動作は、「ドライバが過去に運転した車両とドライバが現在運転している車両の違いが大きいほど、ドライバの現在の運転は、過去の運転経験から正または負の大きな影響を受けやすい」という考察に基づく。
なお、本明細書では、「単調増加」という用語は、「単調非減少(monotonically non-decreasing)」を意味する。また、「単調減少」という用語は、「単調非増加(monotonically non-increasing)」を意味する。
例えば、車両仕様情報が車幅の値を含んでもよい。この場合、判定部2は、ドライバが現在運転中の車両の幅と、ドライバが過去に運転した車両の幅との差の絶対値に対して、影響度8の絶対値が単調増加するように、影響度8を判定してもよい。判定部2は、適宜の単調関数を使って影響度8を算出することで、上記のように影響度8を判定してもよい。
判定部2は、診断項目に応じた車両仕様情報を使って、診断項目ごとに影響度8を判定する。つまり、「どの種類の車両情報5が診断部1に使われ、どの種類の車両仕様情報が影響度8の判定に使われるのか」ということは、診断項目に応じて異なる。
また、「第1の車両仕様情報が示す仕様と第2の車両仕様情報が示す仕様との差が正のときに、影響度8が正なのか負なのか」ということを定める係数を用いて、判定部2が影響度8を判定してもよい。係数の具体例は、後述の式(1)、(3)および(4)に例示されている。
また、ドライバが現在運転中の上記ある車両に適応している度合いは、ある種の時間的要因の影響を受ける。このような時間的要因を直接的または間接的に表す値が、履歴情報7に含まれていてもよい。
この場合、判定部2は、上記時間的要因を表す値を、履歴情報7から抽出または計算することができる。判定部2は、抽出または計算した値を用いて、影響度8を判定してもよい。上記時間的要因は、例えば、以下のようなものが挙げられる。
・ドライバが現在運転中の車両を運転し始めてから経過した時間の長さ。
・ドライバが現在運転中の車両とは別の車両を過去に運転していた時間の長さ。
・ドライバが現在運転中の車両とは別の車両を過去に運転し終えてから経過した時間の長さ。
ドライバが現在運転中の上記ある車両にまだそれほど適応していない場合とは、換言すれば、「ドライバの過去の運転経験が診断結果6に与える正または負の影響が大きい」と見なせる場合である。逆に、ドライバが現在運転中の上記ある車両に既によく適応している場合とは、換言すれば、「ドライバの過去の運転経験が診断結果6に与える正または負の影響が小さい」と見なせる場合である。よって、判定部2は、上記時間的要因を表す値を用いて、影響度8(すなわちドライバの過去の運転経験が診断結果6に与える影響の度合い)を判定してもよい。
上記のような時間的要因に基づく判定部2の動作について、より具体的に説明すると、以下のとおりである。
例えば、ドライバが現在運転中の上記ある車両をドライバが運転し始めた時刻を示す開始時刻情報を、履歴情報7が含んでいてもよい。この場合、判定部2は、開始時刻情報が示す時刻から経過した時間の長さに対して、影響度8の大きさが単調減少するように、影響度8を判定する。このような判定部2の動作は、以下のような考察に基づく。
・ドライバが現在運転中の車両を運転し始めてから時間が経過するにつれて、ドライバは現在の車両に慣れる。
・ドライバが現在の車両に慣れれば慣れるほど、ドライバの現在の運転に対する、過去の別の車両の運転経験からの直接的な影響は、(影響が正であれ負であれ)弱まる。
また、ドライバが現在運転中の上記ある車両とは別の車両を、ドライバが過去に運転していた時間の長さを示す運転時間情報を、履歴情報7が含んでいてもよい。この場合、判定部2は、運転時間情報が示す時間の長さに対して、影響度8の大きさが単調増加するように、影響度8を判定してもよい。このような判定部2の動作は、「ドライバが過去に別の車両を運転した経験からの影響の大きさは、(影響が正であれ負であれ)過去の車両の運転時間が長いほど大きい」という考察に基づく。なお、運転時間情報は、上記別の車両をドライバが運転し始めた開始時刻を示す情報と、上記別の車両の運転をドライバが終了した終了時刻を示す情報を含んでいてもよい。
また、ドライバが現在運転中の上記ある車両とは別の車両を、ドライバがかつて運転し終えた時刻を示す終了時刻情報を、履歴情報7が含んでいてもよい。この場合、判定部2は、終了時刻情報が示す時刻から経過した時間の長さに対して、影響度8の大きさが単調減少するように、影響度8を判定する。このような判定部2の動作は、「過去の運転経験から受ける影響は、(影響が正であれ負であれ)時の経過とともに弱まる」という考察に基づく。
ところで、ドライバが今までに運転してきた互いに異なる1台以上の車両(ドライバが現在運転中の上記ある車両も含む)の台数を示す台数情報を、履歴情報7が含んでいてもよい。
台数情報が示す台数が1の場合、判定部2は影響度8をゼロと判定する。なぜなら、過去に別の車両を運転したことのないドライバにとっては、そもそも「過去の運転経験から受ける影響」は存在しないからである。逆に、台数情報が示す台数が1より大きい場合、判定部2は、台数情報が示す台数に対して影響度8の大きさが単調減少するように、影響度8を判定する。
以上のような判定部2の動作は、「ドライバがより多くの様々な車両の運転を経験するほど、ドライバの経験は豊かになり、ドライバの適応能力が上がるだろう」という考察に基づく。つまり、上記のような判定部2の動作は、「ドライバの適応能力が高まるほど、個々の車両の特性が直接的にドライバの運転に及ぼす影響は、(影響が正であれ負であれ)弱まる」という考察に基づく。なお、以上のような台数情報を使った判定の具体例については、後述の式(13)も参照されたい。
以上の説明から明らかなように、台数情報が示す台数は、ドライバが現在運転中の上記ある車両に適応している度合いに影響を与える要因の一例である。
もちろん、履歴情報7は、以上例示したような種々の情報のうち2つ以上を含んでいてもよい。そして、判定部2は、履歴情報7に含まれる2種類以上の情報の組み合わせに応じて、影響度8を判定してもよい。
例えば、履歴情報7は、開始時刻情報と運転時間情報の双方を含んでいてもよい。この場合、判定部2は、開始時刻情報が示す時刻から経過した時間の長さに対して影響度8の大きさが単調減少するように、かつ、運転時間情報が示す時間の長さに対して影響度8の大きさが単調増加するように、影響度8を判定する。
ところで、図1では、記憶部3において、各アドバイスは、診断結果と影響度の組み合わせに対応づけられて記憶されている。しかし、より細かい粒度で複数のアドバイスが用意されていてもよい。具体的には、記憶部3において、個々のアドバイスが、診断結果と影響度と過去の診断結果との組み合わせに対応づけられて記憶されていてもよい。
この場合、現在ドライバが運転中の上記ある車両とは別の車両を、かつてドライバが運転したときに下された過去の診断の結果を、履歴情報7が含んでいてもよい。
例えば、診断部1と判定部2と記憶部3と決定部4を含む車載装置が、各車両に搭載されていてもよい。このような車載装置が各車両に搭載されている場合、過去の診断結果が利用可能である。例えば、ある車載装置の診断部1から出力される診断結果6が記憶媒体に書き込まれてもよく、その後、他の車載装置が、当該記憶媒体から診断結果6を「過去の診断結果」として読み出してもよい。
あるいは、上記のように診断部1は管理装置に含まれていてもよい。管理装置に含まれる診断部1は、複数の車両を運転中の複数のドライバに関して、並行して診断を下してもよい。管理装置に診断部1が含まれる場合も、過去の診断結果が利用可能である。
いずれにせよ、過去の診断結果が利用可能な場合、決定部4は、以下の3つの組み合わせに対応づけられて記憶部3に記憶されているアドバイスを、ドライバに対して提示することに決定する。
・現在の運転に関して診断部1により下された診断結果6。
・判定部2により判定された影響度8。
・履歴情報7に含まれる過去の診断結果。
ところで、履歴情報7は、可搬型のコンピュータ読み取り可能な記憶媒体(例えば半導体メモリカードなど)に蓄積されてもよい。あるいは、履歴情報7は、ネットワークに接続された情報記憶装置に蓄積されてもよい。情報記憶装置は、例えば、管理装置が備える不揮発性記憶装置(例えば、HDD(Hard Disk Drive)またはSSD(Solid-State Drive))であってもよい。
例えば、車載装置は、具体的には診断部1と判定部2と記憶部3と決定部4を含む運転診断装置であってもよい。この場合、運転診断装置はさらに読み出し部と書き込み部を有してもよい。読み出し部は、履歴情報7(具体的には、ドライバが過去に運転した各車両についての履歴情報7)を記憶する記憶媒体から、履歴情報7を読み出す。書き込み部は、ドライバが現在運転中の上記ある車両の運転に関する履歴情報7を、上記記憶媒体に書き込む。
例えば、半導体メモリカード用のカードリーダ/ライタが、読み出し部および書き込み部として使われてもよい。なお、「リーダ/ライタ」は、「リーダおよびライタ」の意味である。また、記憶媒体としてUSB(Universal Serial Bus)メモリが使われる場合、USBインタフェイスが、読み出し部および書き込み部として使われてもよい。USBインタフェイスは、具体的には、USBポート、USBコントローラ、およびUSB規格のバスを含む。
あるいは、診断部1と判定部2と記憶部3と決定部4を含む運転診断装置は、受信部と送信部を有してもよい。受信部は、履歴情報7(具体的には、ドライバが過去に運転した各車両についての履歴情報7)を記憶する情報記憶装置から、ネットワークを介して、履歴情報7を受信する。送信部は、ドライバが現在運転中の上記ある車両の運転に関する履歴情報7を、ネットワークを介して情報記憶装置に送信する。
例えば、WLAN(Wireless Local Area Network)インタフェイスが、受信部および送信部として使われてもよい。あるいは、3GPP(Third Generation Partnership Project)、LTE(Long Term Evolution)、WiMAX(Worldwide Interoperability for Microwave Access)などの無線通信規格にしたがった無線通信回路が、受信部および送信部として使われてもよい。なお、「WiMAX」は登録商標である。
ところで、上記のとおり、診断部1と判定部2と記憶部3と決定部4の各々は、車載装置と管理装置のいずれに含まれていてもよい。車載装置と管理装置の双方を含む運転診断システムにおいて、車載装置は、少なくとも以下の取得部と第1の送受信部を有することが好ましい。
・ドライバが現在運転中の上記ある車両から、車両情報5を取得する取得部。例えば、加速度センサなどのセンサから、車両情報5として使われる出力値を取得するECU(Electronic Control Unit)、または、センサもしくはECUから車両情報5を取得する汎用コンピュータなど。
・ネットワークを介して管理装置との間で通信を行う第1の送受信部。例えば、WLANインタフェイス、または、適宜の無線通信規格にしたがった無線通信回路など。
また、車載装置と管理装置の双方を含む運転診断システムにおいて、管理装置は、少なくとも以下の第2の送受信部と履歴記憶部を有することが好ましい。
・ネットワークを介して車載装置との間で通信を行う第2の送受信部。例えば、有線LAN(Local Area Network)インタフェイス、WLANインタフェイス、または、適宜の無線通信規格にしたがった無線通信回路など。
・ドライバが現在運転中の上記ある車両以外の車両を、かつてドライバが運転した履歴に関する履歴情報7を記憶する、履歴記憶部。例えば、HDD、SSD、またはその組み合わせ。
以上のような車載装置と管理装置の双方を含む運転診断システムにおいては、車載装置と管理装置がネットワークを介して通信しあうことが可能である。よって、診断部1は、車載装置と管理装置のどちらに含まれていてもよい。
また、ドライバが現在運転中の上記ある車両を、ドライバが今まで運転してきた履歴に関する履歴情報7は、車載装置により生成または取得されてもよい。一方、過去の運転履歴に関する履歴情報7は、上記のとおり履歴記憶部に記憶される。車載装置と管理装置は通信しあうことが可能なので、車載装置は双方の履歴情報7を認識することができるし、管理装置も双方の履歴情報7を認識することができる。
したがって、履歴情報7を使って判定を行う判定部2も、車載装置と管理装置のどちらに含まれていてもよい。判定部2は、ドライバが現在運転中の上記ある車両に関する履歴情報7と、過去の運転履歴に関する履歴情報7のうち、少なくとも一方を用いて、影響度8を判定する。
なお、ドライバが現在運転中の車両に関して車載装置が生成または取得した履歴情報7は、第1の送受信部からネットワークを介して管理装置に送信される。すると、管理装置が第2の送受信部により履歴情報7を受信し、受信した履歴情報7を、履歴記憶部に記憶している履歴情報7に追加する。こうして、履歴記憶部には、ドライバが運転した各車両についての履歴情報7が蓄積される。
また、記憶部3も、車載装置と管理装置のどちらに含まれていてもよい。同様に、決定部4も、車載装置と管理装置のどちらに含まれていてもよい。
以上のような車載装置と管理装置の双方を含む運転診断システムにおいて、例えば、診断部1と判定部2と記憶部3と決定部4がすべて車載装置に含まれていてもよい。この場合、履歴記憶部に記憶されている履歴情報7は、管理装置の第2の送受信部からネットワークを介して送信され、車載装置の第1の送受信部で受信され、判定部2に取得される。
あるいは逆に、診断部1と判定部2と記憶部3と決定部4がすべて管理装置に含まれていてもよい。この場合、車載装置の取得部が取得した車両情報5は、車載装置の第1の送受信部からネットワークを介して送信され、管理装置の第2の送受信部で受信され、診断部1に取得される。そして、決定部4が提示することに決定したアドバイスは、第2の送受信部からネットワークを介して送信され、車載装置の第1の送受信部で受信される。この場合、車載装置は、アドバイスを出力する出力部を内蔵していてもよいし、出力部と接続されていてもよい。いずれにしろ、車載装置が受信したアドバイスは、出力部により出力される。その結果、ドライバはアドバイスを認識することができる。
また、診断部1と判定部2と記憶部3と決定部4は、車載装置と管理装置に分散していてもよい。いずれにせよ、車載装置は出力部を内蔵しているか、または、出力部と接続される。よって、ドライバはアドバイスを認識することができる。そして、ドライバが認識するアドバイスは、診断結果6だけでなく影響度8にも基づいて決定部4により選ばれた適切なアドバイスであるから、ドライバにとって有益である。
続いて、図2〜9を参照して第2実施形態について説明する。第2実施形態は、図1の診断部1、判定部2、記憶部3および決定部4が、車載装置である運転診断装置に含まれる場合に相当する。以下の説明においても、例えば「履歴情報7」のように、図1中の参照符号を用いることがある。
図2は、第2実施形態の運転診断装置のブロック構成図である。
車両100には、いくつかのECUが含まれる。便宜上、図2には2台のECU101と102が例示されている。各ECUはCAN(Controller Area Network)103に接続される。実施形態によっては、CAN以外の種類のネットワークが車両100内において利用されてもよい。
個々のECUは、センサ(例えば加速度センサなど)と直接接続されていてもよいし、CAN103を介してセンサに接続されていてもよい。ECUにセンサが直接接続されている場合、ECUは、センサから読み取った値を、CAN103を介して他のコンポーネント(例えば他のECUなど)に知らせてもよい。また、ECUは、CAN103に接続されているセンサが出力した値を、CAN103を介して読み取ってもよい。
また、車両100には、ディスプレイ104とスピーカ105の少なくとも一方が搭載される。ディスプレイ104は、文字および/または画像などを用いてアドバイスを視覚的に出力する出力部の例である。スピーカ105は、アドバイスを音声的に出力する出力部の例である。
さらに、車両100には運転診断装置110が搭載される。運転診断装置110は、車両情報取得部111、時計112、車両情報管理部113、車両情報記憶部114、診断部115、履歴管理部116、履歴記憶部117、判定部118、アドバイス決定部119、アドバイス記憶部120および出力制御部121を含む。
なお、図1と図2の関係は次のとおりである。
診断部115が診断部1に対応し、判定部118が判定部2に対応し、アドバイス記憶部120が記憶部3に対応し、アドバイス決定部119が決定部4に対応する。
図1の車両情報5は、図2では車両情報取得部111により取得され、車両情報管理部113により管理され、車両情報記憶部114に記憶される。そして、車両情報5は、診断部115と履歴管理部116に出力される。
図1の診断結果6は、図2では診断部115から履歴管理部116とアドバイス決定部119の双方に出力される。
図1の履歴情報7は、図2では履歴管理部116により管理され、履歴記憶部117に記憶される。また、過去の運転履歴に関する履歴情報7は、図2では外部装置130から取得される。そして、今回の車両100の運転に関する履歴情報7は、将来の利用に備えるために、履歴管理部116によって外部装置130に出力される。
図1の影響度8は、図2では判定部118からアドバイス決定部119に出力される。
以下、図2の運転診断装置110の詳細を説明する。
図2に示すように、車両情報取得部111は、CAN103に接続される。車両情報取得部111は、CAN103を介して車両情報5を取得する。例えば、車両情報取得部111は、CAN103に接続されたセンサから、CAN103を介して車両情報5を取得してもよいし、いずれかのECUから、CAN103を介して車両情報5を取得してもよい。
実施形態によっては、車両情報取得部111が信号線によりセンサおよび/またはECUと接続されていてもよく、その場合、車両情報取得部111は、センサおよび/またはECUから信号線を介して車両情報5を取得することができる。また、CAN103には、ECUだけでなく、カーナビゲーションシステムおよび/または車載カメラが接続されていてもよい。車両情報取得部111は、CAN103を介して、カーナビゲーションシステムおよび/または車載カメラから車両情報5を取得してもよい。
もちろん、運転診断装置110自体がカーナビゲーションシステムを兼ねていてもよい。例えば、運転診断装置110がGPS(Global Positioning System)センサを内蔵していてもよく、GPSセンサが車両情報取得部111に接続されていてもよい。
車両情報取得部111が取得する車両情報5の例は、以下のとおりである。
・車両100の挙動を示す情報(例えば、加速度、車速、舵角、エンジンの回転数、ブレーキの動作状態、ウィンカーの状態、車両100のロール角・ピッチ角・ヨー角など)。
・ドライバの操作を示す情報(例えば、ハンドルの切り角、アクセルペダルの踏み量、ブレーキペダルの踏み量など)。
・車両100に特有の属性を示す情報(例えば、車両100を識別する車両識別子、車種、車幅、車重、エンジンの出力性能、ハンドリング性能、タイヤの直径、運転席が車両の右側と左側のどちらにあるか、など)。
・車載カメラが撮影した画像(車両100にカメラが搭載されている場合。以下「カメラ画像」ともいう)。
・車両100の位置を示す位置情報や地図情報など(車両100にカーナビゲーションシステムが搭載されている場合)。
車両情報取得部111は、取得した種々の車両情報5を車両情報管理部113に出力する。車両情報管理部113は、車両情報取得部111から車両情報5を取得すると、時計112から現在時刻を読み取る。そして、車両情報管理部113は、取得した車両情報5と、読み取った現在時刻を表す時刻情報とを互いに対応づけて、車両情報記憶部114に記憶する。車両情報記憶部114には、例えば後述の図4に示すような形式で車両情報5が記憶されていてもよい。
また、車両情報管理部113は、診断部115から車両情報5を要求されると、車両情報5と、車両情報5に対応づけられた時刻情報とを、車両情報記憶部114から読み出す。そして、車両情報管理部113は、車両情報5と時刻情報を診断部115に出力する。同様に、車両情報管理部113は、履歴管理部116から車両情報5を要求されると、車両情報記憶部114から車両情報5を読み出し、車両情報5を履歴管理部116に出力する。
診断部115は、車両情報5と、車両情報5に対応づけられた時刻情報とを使って、種々の診断項目に関して診断処理を実行する。診断部115は、車両情報管理部113を介して、車両情報5を時刻情報とともに車両情報記憶部114から取得し、取得した車両情報5と時刻情報に基づいて、診断処理を実行する。
どのような種類の車両情報5が診断に用いられるのかは、診断項目に応じて異なっていてよい。また、「ある1つの時点で取得された車両情報5のみが診断に用いられるのか、それとも、ある長さを持った期間の間に得られた複数の車両情報5が診断に用いられるのか」ということも、診断項目に応じて異なっていてよい。
さらに、診断項目ごとに、診断のトリガが異なっていてもよい。例えば、ある診断項目についての診断は、定期的に行われてもよい。一方、別の診断項目についての診断は、車両100が特定の振る舞いをしたときに(例えば車両100がカーブを曲がったときに)行われてもよい。
例えば、ある診断項目は、ドライバのハンドル操作のスムーズさについての項目であってもよい。ハンドル操作のスムーズさを診断するために使われる車両情報5の例は、ハンドルの舵角(つまりハンドルの切り角)に関する情報、車両100の位置を示す情報などである。
診断部115は、例えば、ハンドル操作が開始されたときの車両100の位置と、ハンドル操作が終了したときの車両100の位置と、ハンドル操作にかかった時間に基づいて、診断を下してもよい。例えば、診断部115は、ドライバの実際の運転と理想的な運転との差を判定してもよく、判定した差に基づいて、ハンドル操作のスムーズさについて診断を下してもよい。
また、別のある診断項目は、加減速のスムーズさについての項目であってもよい。加減速のスムーズさを診断するために使われる車両情報5の例は、加速度(主に車両100の進行方向の加速度成分)である。急加速や急減速が少ないほど、診断部115は、より良い診断結果6を出力してもよい。
また、さらに別のある診断項目は、車両100が直進走行中の左右方向(つまり、車両100の進行方向に対して路面上で垂直な方向)における車両100の位置(以下「走行位置」ともいう)の適切さについての項目であってもよい。走行位置の適切さを診断するために使われる車両情報5の例は、例えば、車両100の車幅、車両100が走行している車線の幅についての情報を含む地図情報、車載カメラが撮影したカメラ画像、などである。
例えば、診断部115は、車線間を区切る白線をカメラ画像から認識し、車両100が走行中の車線上での、車両100の左右方向の走行位置を推定してもよい。診断部115は、推定した走行位置から、走行位置の適切さを診断してもよい。具体的には、推定した走行位置が車線の中央に近いほど、診断部115は、より良い診断結果6を出力してもよい。
診断部115は、各診断項目についての診断結果6を、診断項目を識別する識別子(以下「診断項目ID」ともいう)とともに、アドバイス決定部119に出力する。
ところで、上記のとおり診断部115は、車両情報5とともに時刻情報も診断のために取得する。したがって、診断部115は、取得した時刻情報に基づいて、ドライバが車両100を運転し始めてから経過した時間(以下「運転時間」ともいう)を認識することができる。診断部115は、各診断項目についての診断結果6を、運転時間を示す情報および診断項目IDとともに、履歴管理部116に出力する。
履歴管理部116は履歴情報7を管理する。具体的には、履歴管理部116は、ある種の履歴情報7を車両情報管理部113から取得してもよく、別のある種の履歴情報7を診断部115から取得してもよく、さらに別のある種の履歴情報7を外部装置130から取得してもよい。履歴管理部116は、取得した履歴情報7を履歴記憶部117に記憶する。履歴記憶部117には、例えば後述の図5に示すような形式で履歴情報7が記憶されていてもよい。
外部装置130は、例えば後述の図3のサーバ230でもよいし、記憶媒体240でもよい。また、履歴管理部116は、ドライバが今後、別の車両を運転する場合(またはドライバが今後、車両100を再び運転する場合)に備えて、履歴記憶部117内の履歴情報7の少なくとも一部を、外部装置130に出力する。
具体的には、履歴情報7のうち、現在ドライバが運転中の車両100の仕様を示す車両仕様情報(換言すれば車両100に固有の属性を示す情報)を、履歴管理部116が車両情報管理部113から取得してもよい。車両100の車両仕様情報は、予め車両情報記憶部114に記憶されていてもよい。あるいは、車両100の車両仕様情報は、例えば、いずれかのECUから出力され、CAN103を介して車両情報取得部111により取得され、車両情報記憶部114に記憶されてもよい。よって、履歴管理部116は、車両100の車両仕様情報を、車両情報管理部113から取得することができる。
また、履歴情報7のうち、ドライバが車両100(つまりドライバが現在運転中の車両)を今まで運転してきた履歴に関する情報を、履歴管理部116が診断部115から取得してもよい。
例えば、上記のとおり、診断部115は、車両100の運転を開始してから経過した時間(すなわち運転時間)の長さを認識することができる。よって、履歴管理部116は、履歴情報7のうち運転時間を示す情報を、診断部115から取得することができる。また、ドライバが今後、別の車両を運転する場合(またはドライバが今後、車両100を再び運転する場合)に備えて、履歴管理部116は、診断部115が出力した診断結果6を、将来使う可能性のある履歴情報7の一部として取得してもよい。より具体的には、履歴管理部116は、診断項目IDとともに診断結果6を取得してもよい。
さらに、履歴情報7のうち、ドライバが過去に他の車両(または車両100)を運転したときに下された過去の診断の結果を、履歴管理部116が外部装置130から取得してもよい。同様に、履歴管理部116は、履歴情報7のうち、ドライバが過去に運転した他の車両の車両仕様情報も、外部装置130から取得することができる。
また、履歴管理部116は、履歴情報7のうち、過去の運転履歴に関する時間的な情報も、外部装置130から取得することができる。過去の運転履歴に関する時間的な情報の例は、例えば、以下のとおりである。
・ドライバが過去にある車両(車両100以外の車両または車両100自体)の運転を開始した日時。
・ドライバが過去に上記ある車両の運転を終了した日時。
・ドライバが過去に上記ある車両を運転していた運転時間の長さ。
なお、ドライバは1台の車両を断続的に運転する可能性もあるので、「運転時間」の具体的な定義は様々であってよい。「運転時間」のいくつかの定義については、図5とともに後述する。
さて、判定部118は、種々の履歴情報7のうちの少なくとも一部を用いて、ドライバの過去の運転経験が診断結果6に及ぼす影響の度合い(すなわち影響度8)を判定する。具体的には、判定部118は、診断項目に応じた適宜の履歴情報7を履歴記憶部117から読み出して、読み出した履歴情報7を用いて影響度8を判定する。
より具体的には、第2実施形態では、診断部115が診断結果6を診断項目IDとともにアドバイス決定部119に出力すると、アドバイス決定部119が判定部118に対して影響度8を判定するよう要求する。この要求の際、アドバイス決定部119は、判定部118に診断項目IDを通知する。
判定部118は、アドバイス決定部119からの要求に応じて、通知された診断項目IDを持つ診断項目に関して、影響度8を判定する。そして、判定部118は、影響度8をアドバイス決定部119に通知する。
ところで、アドバイス記憶部120は、図1の記憶部3に対応し、複数のアドバイスを記憶する。各アドバイスは、診断結果と影響度の組み合わせに対応づけられている。
より具体的には、アドバイス記憶部120は、診断項目ごとに複数のアドバイスを記憶する。例えば、アドバイス記憶部120には、各診断項目について、後述の図6に示すようなアドバイステーブルが記憶されていてもよい。
よって、アドバイス記憶部120を参照することで、アドバイス決定部119は、ドライバに提示するアドバイスを決定することができる。つまり、アドバイス決定部119は、診断部115から通知された診断項目IDおよび診断結果6、ならびに、判定部118から通知された影響度8に基づき、アドバイス記憶部120内の複数のアドバイスの中から、ドライバに提示するためのアドバイスを選ぶ。アドバイス決定部119は、以上のようにしてドライバに対して提示することに決定したアドバイスを、出力制御部121に出力する。
出力制御部121は、アドバイス決定部119からアドバイスを受け取ると、アドバイスの出力に関する制御を行う。例えば、出力制御部121は、アドバイスをドライバに提示するか否かを決定してもよい。出力制御部121は、アドバイスをドライバに提示するタイミングを決定してもよい。
具体的には、出力制御部121は、車両情報管理部113を介して車両情報5を取得し、車両情報5から車両100の状態を推定する。そして、出力制御部121は、車両100の状態に応じて、アドバイスをドライバに提示するか否かということと、アドバイスをドライバに提示するタイミングの、少なくとも一方を決定する。
例えば、車両100が停止中または所定の速度未満の低速で直進走行中ならば、出力制御部121は、アドバイスをすぐに提示することに決めてもよい。逆に、車両100が所定の速度以上の高速で走行中であるか、または、右折中もしくは左折中であるならば、出力制御部121は、アドバイスを提示しないことに決めてもよく、アドバイスの提示を延期することに決めてもよい。
また、アドバイス記憶部120に記憶されているアドバイスのデータ形式によっては、出力制御部121は、アドバイス決定部119から通知されたアドバイスを、ディスプレイ104および/またはスピーカ105から出力可能なデータ形式に変換してもよい。アドバイス記憶部120内の各アドバイスのデータ形式は、実施形態に応じて任意である。
例えば、各アドバイスは、文字列データ(つまりテキストデータ)、画像データ、音声データのいずれであってもよい。1つのアドバイスが、2つ以上のデータ形式で表現されて、各形式のデータがアドバイス記憶部120に記憶されていてもよい。逆に、例えば、アドバイス記憶部120内でアドバイスが文字列形式で表現されている場合に、出力制御部121が文字列データを画像データおよび/または音声データに変換してもよい。
出力制御部121は、ディスプレイ104および/またはスピーカ105を制御して、ディスプレイ104および/またはスピーカ105にアドバイスを出力させる。
さて、図3は、運転診断装置110を実現するコンピュータのハードウェア構成図である。図2の運転診断装置110は、以下のいずれのハードウェアによって実現されてもよいが、図3には、運転診断装置110がコンピュータ200により実現される場合が例示されている。
・プログラムを実行する汎用的なコンピュータ。
・ASIC(Application-Specific Integrated Circuit)などの専用ハードウェア回路。
・FPGA(Field Programmable Gate Array)のようなリコンフィギュラブル回路。
・それらの2つ以上の組み合わせ。
コンピュータ200は、CPU(Central Processing Unit)201とRAM(Random Access Memory)202と不揮発性記憶装置203を含む。CPU201はシングルコアまたはマルチコアのプロセッサである。コンピュータ200は複数のプロセッサを有していてもよい。不揮発性記憶装置203は、例えば、HDD、SSD、またはその組み合わせである。不揮発性記憶装置203がROM(Read Only Memory)を含んでいてもよい。CPU201は、プログラムをRAM202にロードし、RAM202をワークエリアとしても用いながら、プログラムを実行する。
コンピュータ200はさらに、以下のようないくつかのインタフェイス回路を有する。
・コンピュータ200をCAN103に接続するためのCANインタフェイス204(具体的には、CANプロトコルにしたがった通信回路)。
・コンピュータ200をディスプレイ104に接続するためのディスプレイインタフェイス205(例えばディスプレイコントローラ)。
・コンピュータ200をスピーカ105に接続するためのスピーカインタフェイス206(例えばスピーカコントローラ)。
・コンピュータ200をネットワーク220に接続するためのWLANインタフェイス207(具体的には、物理層とMAC(Media Access Control)副層の通信回路を含むようなインタフェイス回路)。
ネットワーク220には、サーバ230も接続される。よって、コンピュータ200は、ネットワーク220を介してサーバ230との間で情報を送受信することができる。ネットワーク220は、例えばインターネットであってもよい。ネットワーク220の種類によっては、WLANインタフェイス207の代わりに、3GPP、LTE、WiMAXなどの無線通信規格にしたがった無線通信回路が使われてもよい(WiMAXは登録商標)。
なお、サーバ230は、第1実施形態に関して説明した管理装置の例である。サーバ230は、CPUと、RAMと、通信装置(例えば、有線LANインタフェイス、WLANインタフェイスまたは他の種類の無線通信回路)と、記憶装置(例えば、HDD、SSD、または両者の組み合わせ)を有する。
さらに、コンピュータ200は、記憶媒体240用のリーダ/ライタ208を有する。
例えば、記憶媒体240は、SD(Secure Digital)カードなどの半導体メモリカードでもよい。この場合、リーダ/ライタ208はカードリーダ/ライタである。
記憶媒体240はUSBメモリであってもよい。この場合、リーダ/ライタ208は、USBコントローラを含むUSBインタフェイスである。
記憶媒体240は、磁気ディスク、光磁気ディスク、または光ディスクなどのディスクであってもよい。この場合、リーダ/ライタ208はディスクドライブ装置である。光ディスクは、例えば、CD(Compact Disc)であってもよいし、DVD(Digital Versatile Disc)であってもよい。
コンピュータ200内の各コンポーネントは、互いにバス209で接続される。
なお、ディスプレイ104とスピーカ105のいずれか一方が省略されてもよい。ディスプレイ104が省略される場合、ディスプレイインタフェイス205も省略されてよい。スピーカ105が省略される場合、スピーカインタフェイス206も省略されてよい。
また、コンピュータ200は、必ずしもWLANインタフェイス207(または他の種類の無線通信回路)とリーダ/ライタ208の双方を備えている必要はない。具体的には、外部装置130がサーバ230である場合、リーダ/ライタ208は省略されてもよい。逆に、外部装置130が記憶媒体240である場合、WLANインタフェイス207(または他の種類の無線通信回路)は省略されてもよい。
図2と図3の関係は、以下のとおりである。
車両情報取得部111は、CAN103からデータを取り込むためのCANインタフェイス204と、プログラムを実行するCPU201により実現される。また、CPU201はクロックジェネレータにより生成されるクロック信号により動作するので、時計112もCPU201により実現される。車両情報管理部113も、プログラムを実行するCPU201により実現される。車両情報記憶部114は、不揮発性記憶装置203により実現されてもよく、RAM202により実現されてもよく、RAM202と不揮発性記憶装置203の組み合わせにより実現されてもよい。
診断部115も、プログラムを実行するCPU201により実現される。
履歴管理部116は、ネットワーク220を介してサーバ230と通信するためのWLANインタフェイス207と、プログラムを実行するCPU201により実現されてもよい。あるいは、履歴管理部116は、記憶媒体240にデータを読み書きするためのリーダ/ライタ208と、プログラムを実行するCPU201により実現されてもよい。場合によっては、WLANインタフェイス207とリーダ/ライタ208とCPU201により、履歴管理部116が実現されてもよい。
履歴記憶部117は、RAM202により実現されてもよく、RAM202と不揮発性記憶装置203の組み合わせにより実現されてもよく、不揮発性記憶装置203により実現されてもよい。
判定部118は、プログラムを実行するCPU201により実現される。アドバイス決定部119も、プログラムを実行するCPU201により実現される。
アドバイス記憶部120は、不揮発性記憶装置203により実現される。出力制御部121は、CPU201とディスプレイインタフェイス205の組み合わせにより実現されてもよく、CPU201とスピーカインタフェイス206の組み合わせにより実現されてもよい。場合によっては、CPU201とディスプレイインタフェイス205とスピーカインタフェイス206の組み合わせにより、出力制御部121が実現されてもよい。
ところで、CPU201が実行するプログラムは、不揮発性記憶装置203にプレインストールされていてもよいし、ネットワーク220からダウンロードされて不揮発性記憶装置203にインストールされてもよい。また、プログラムが記憶媒体240に記憶されて提供され、リーダ/ライタ208を介して読み取られ、不揮発性記憶装置203にインストールされてもよい。
RAM202、不揮発性記憶装置203、および記憶媒体240は、いずれもコンピュータ読み取り可能で有形の(tangible)記憶媒体の例である。RAM202、不揮発性記憶装置203、および記憶媒体240は、いずれも、信号搬送波のような一時的な(transitory)媒体ではない。
続いて、図4〜6を参照して、第2実施形態で使われる各種データの例を説明する。図4は、車両情報記憶部114に記憶される運転記録テーブルと車両テーブルの例を示す図である。
図4の運転記録テーブル301は、日時を示す時刻情報と、その時刻情報に対応づけられた車両情報5とを保持するテーブルである。具体的には、図4の運転記録テーブル301の各エントリは、日時、緯度、経度、移動距離、速度、加速度、ヨーレートのフィールドを含む。もちろん、車両100に搭載される各種センサ等の種類によっては、運転記録テーブル301のうちの1つ以上のフィールドが省略されてもよいし、他のフィールドが追加されてもよい。
図4には、運転記録テーブル301の2つのエントリが例示されている。これら2つのエントリは以下のことを示す。
2013年5月20日12時10分丁度に、車両情報取得部111がCAN103を介して車両情報5を取得した。このとき、車両100が北緯35.580154度かつ東経139.642453度の位置にあることが検出された。また、このとき、車両100の速度が0km/hであること、車両100の加速度が0.01Gであること、車両100のヨーレートが0.0°/secであることが検出された。しかし、このとき、移動距離は検出されなかった。
2013年5月20日12時15分30秒に、車両情報取得部111がCAN103を介して車両情報5を取得した。このとき、車両100が北緯35.581925度かつ東経139.642566度の位置にあることが検出された。また、「前回、車両情報取得部111が車両情報5を取得してから、車両100が0.5m移動した」ということも、このとき検出された。さらに、このとき、車両100の速度が10km/hであること、車両100の加速度が−0.02Gであること、車両100のヨーレートが0.0°/secであることも検出された。
さて、図4の車両テーブル302も車両情報5の一例である。より具体的には、車両テーブル302は、車両情報5のうち、ドライバが現在運転中の車両100の仕様を示す車両仕様情報の一例である。車両テーブル302は、以下のフィールドを含む。
・車両100を識別する車両識別子(図4では値が「ID」と表記されている)。
・車両100の全幅(図4では値が「CW」と表記されている)。
・車両100の車重(図4では値が「Weight」と表記されている)。
・車両100のエンジン出力性能(図4では値が「Pperform」と表記されている)。
・車両100のハンドリング性能(図4では値が「Hperform」と表記されている)。
もちろん、実施形態によっては、車両テーブル302のうちの1つ以上のフィールドが省略されてもよいし、他のフィールドが追加されてもよい。車両テーブル302内の各フィールドの値は、運転診断装置110が車両100に搭載されるときに、予め設定されてもよい。あるいは、車両テーブル302内の各フィールドの値は、CAN103を介して、例えばいずれかのECUから、車両情報取得部111により取得されてもよい。
さて、図5は、履歴記憶部117に記憶される車両テーブル、運転履歴テーブル、および統計テーブルの例を示す図である。第2実施形態では、履歴情報7が、具体的には3種類のテーブルのデータにより表される。つまり、履歴情報7は、車両テーブル303−1〜303−Pのデータと、運転履歴テーブル304−1〜304−Qのデータと、統計テーブル305のデータを含む(1≦P≦Q)。
各車両テーブル303−i(1≦i≦P)は、ドライバが運転したことのある各車両の種々の属性値を記憶するためのテーブルである。車両の属性には様々な種類があるが、図5の例では、各車両テーブル303−iは、以下のフィールドを含む。
・車両を識別する車両識別子(図5では値が「ID」と表記されている)。
・車両識別子により識別される車両の全幅(図5では値が「CW」と表記されている)。
・車両識別子により識別される車両の重量(図5では値が「Weight」と表記されている)。
・車両識別子により識別される車両のエンジン出力性能(図5では値が「Pperform」と表記されている)。
・車両識別子により識別される車両のハンドリング性能(図5では値が「Hperform」と表記されている)。
なお、エンジン出力性能は、具体的には、パワー・トゥ・ウェイト・レシオ(power-to-weight ratio)により表されてもよい。パワー・トゥ・ウェイト・レシオは、例えば[ps/kg]単位で示されてもよい。あるいは、エンジン出力性能は、最大出力により表されてもよい。最大出力は、例えば馬力(ps)単位で示されてもよい。また、ハンドリング性能は、例えば、ハンドルの切り角(すなわちドライバがハンドルを回した角度)に対する、タイヤの切れ角(すなわちドライバのハンドル操作に応じたタイヤのヨー角の変化量)の比により表されてもよい。
ところで、「P」は、ドライバが今までに運転したことのある車両(ドライバが現在運転中の車両100を含む)の台数を、重複なしに数えた値である。よって、1≦Pである。また、「Q」は、ドライバが今までに運転した車両の延べ台数(すなわち、ある車両識別子を持つ車両を複数回ドライバが運転した場合には、重複して数えられる値)である。よって、P≦Qである。
例えば、複数の車両を複数人のドライバたちに貸し出すカーシェアリングサービス(またはレンタカーサービス)を、あるドライバが利用しているとする。そして、貸し出し対象の各車両には、図2の運転診断装置110が搭載されているとする。ドライバが、例えば以下のようにサービスを4回利用した場合、P=3でありQ=4である。
・最初にサービスを利用するときには、ドライバは、車両識別子が2番の車両を借りる。
・2回目にサービスを利用するときには、ドライバは、車両識別子が7番の車両を借りる。
・3回目にサービスを利用するときには、ドライバは、車両識別子が8番の車両を借りる。
・4回目にサービスを利用するときには、ドライバは、車両識別子が2番の車両を借りる。
もちろん、各実施形態は、ドライバがカーシェアリングサービス(またはレンタカーサービス)を利用する場合に適用可能なだけでなく、ドライバが車両を所有する場合にも適用可能である。例えば、あるドライバは次々に自分の乗用車を買い替えるかもしれず、したがって、以前所有していた車両を運転した経験が、新たに購入した車両の運転に対して影響を与える可能性がある。よって、各実施形態は、ドライバがカーシェアリングサービス(またはレンタカーサービス)を利用する場合だけでなく、ドライバが車両を所有する場合にも、ドライバに対してより適切なアドバイスを提供するうえで有益である。
車両テーブル303−1〜303−Pのうちの1つは、車両100に関する車両仕様情報を示すテーブルであり、したがって、図4の車両テーブル302に等しい。
さて、各運転履歴テーブル304−i(1≦i≦Q)は、ドライバがi番目にどの車両を運転したのかを示すとともに、i番目の運転に関する時間的情報と、i番目の運転に対する診断結果とを示す。具体的には、図5の例では、各運転履歴テーブル304−iは、以下のフィールドを含む。なお、以下では説明の便宜上、ドライバがi番目に運転した車両を「i番目の車両」ともいう。
・運転履歴テーブル304−iを識別する運転履歴番号(図5では値が「Num」と表記されている)。
・i番目の車両を識別する車両識別子(この車両識別子は、車両テーブル303−1〜303−Pのいずれかの車両識別子に等しいので、図5では値が「ID」と表記されている)。
・ドライバがi番目の車両を運転していた運転時間(図5では値が「TimePeriod」と表記されている)。
・ドライバがi番目の車両の運転を開始した運転開始日時(図5では値が「StartTime」と表記されている)。
・ドライバがi番目の車両を運転していたときのハンドル操作に関して下された診断の結果(図5では値が「DiagRes(1)」と表記されている)。
・ドライバがi番目の車両を運転していたときの走行位置に関して下された診断の結果(図5では値が「DiagRes(2)」と表記されている)。
・ドライバがi番目の車両を運転していたときの急加速に関して下された診断の結果(図5では値が「DiagRes(3)」と表記されている)。
なお、運転時間は、ドライバがi番目の車両の運転を開始した時刻から、ドライバがi番目の車両の運転を終了した時刻までの時間の長さであってもよい。または、ドライバがi番目の車両を断続的に運転する場合には、ドライバがi番目の車両を連続して運転していたいくつかの期間のうち、最も長い期間の長さが、運転時間として運転履歴テーブル304−iに記憶されてもよい。最長の期間の長さのかわりに、上記のいくつかの期間の長さの和もしくは平均値などが運転時間として使われてもよい。
例えば、ドライバがi番目の車両を50分運転し、10分休憩し、その後、20分運転したとする。この場合、実施形態に応じて、運転時間の定義は以下のいずれであってもよい。
・80(=50+10+20)分。すなわち、運転開始時刻から運転終了時刻までの時間の長さ。
・50分。すなわち、ドライバが連続して車両を運転した期間のうち、最長の期間の長さ。
・70(=50+20)分。すなわち、ドライバが連続して車両を運転した2つの期間の長さの和。
・35(=(50+20)/2)分。すなわち、ドライバが連続して車両を運転した2つの期間の長さの平均値。
また、図5では上記のとおり、3つの診断項目に関する過去の診断結果が運転履歴テーブル304−iに含まれる。しかし、必ずしも履歴情報(例えば運転履歴テーブル304−i)が過去の診断結果を含む必要はない。また、どの診断項目についての過去の診断結果を運転履歴テーブル304−iに含め、どの診断項目についての過去の診断結果を運転履歴テーブル304−iに含めないか、ということも、実施形態に応じて適宜定めてよい。
また、ドライバがi番目の車両を運転している間に、ある診断項目について2回以上診断が下されることもあり得る。
例えば、ドライバがi番目の車両を運転していたときに、ハンドル操作に関して25回診断が下されたとする。この場合、運転履歴テーブル304−iには、25個の診断結果6を代表する値が記憶されることが好ましい。
例えば、25個の診断結果6の最頻値、平均値、または中央値が使われてもよい。あるいは、最高の診断結果6と最低の診断結果6を除く23個の診断結果6の平均値が使われてもよい。場合によっては、最高または最低の診断結果6によって25個の診断結果6が代表されてもよい。
以上例示したように、ある診断項目について複数回診断が下された場合は、実施形態に応じて予め決められたポリシに基づいて、複数の診断結果6を代表する値が、選択または計算され、運転履歴テーブル304−iに記憶される。
さて、統計テーブル305は、ドライバが今までに何回車両を乗り換えたかを示す。以下では、統計テーブル305に示される乗り換え回数を「Cnt」とも表記する。第2実施形態では、乗り換え回数Cntは、(Q−1)に等しい。
統計テーブル305の乗り換え回数は、ドライバの運転履歴を簡単に要約する履歴情報7の一種である。一方、各運転履歴テーブル304−iは、ドライバが今までに運転した各車両の運転履歴についての詳細な履歴情報7の例である。また、各車両テーブル303−iは、履歴情報7のうち、車両の仕様を示す車両仕様情報の例である。
さて、図6は、アドバイス記憶部120に記憶されるアドバイステーブルの例を示す図である。具体的には、図6には、j番目の診断項目に関するアドバイステーブル306−jが例示されている。
例えば、j番目の診断項目についての診断結果6は、1から10までの整数で表されるものとする。図6では、j番目の診断項目についての診断結果6が「Res(j)」と表記されている。
また、j番目の診断項目についての影響度8(つまり、j番目の診断項目の診断結果6に過去の運転経験が与える影響の度合い)は、ある範囲内の実数で表されるものとする。図6では、j番目の診断項目についての影響度8が「Inf(j)」と表記されている。
アドバイステーブル306−jは、具体的には、21個のアドバイスAdv(j,1,1)〜Adv(j,3,7)を含む。各アドバイスは、診断結果Res(j)と影響度Inf(j)の組み合わせに対応づけられている。もちろん、アドバイスの個数は、実施形態に応じて任意である。
図1の記憶部3に関して説明したとおり、診断結果6と影響度8の組み合わせは、具体的には、診断結果6を示す値の集合(例えば値の範囲)と、影響度8を示す値の集合(例えば値の範囲)との組み合わせにより表されてもよい。
図6の例では、診断結果Res(j)の値の範囲として、以下の3つの範囲が使われる。
・1≦Res(j)≦3
・4≦Res(j)≦7
・8≦Res(j)≦10
診断結果6の値をいくつの範囲に分類するかは、診断項目に応じて任意に決められてよい。また、範囲同士の境界の値も、診断項目に応じて任意に決められてよい。
また、図6の例では、影響度Inf(j)の値の範囲として、以下の7つの範囲が使われる。
・Inf(j)≦−n(j)
・−n(j)<Inf(j)≦−m(j)
・−m(j)<Inf(j)<0
・Inf(j)=0
・0<Inf(j)<m(j)
・m(j)≦Inf(j)<n(j)
・n(j)≦Inf(j)
影響度8の値をいくつの範囲に分類するかは、診断項目に応じて任意に決められてよい。また、範囲同士の境界の値も、診断項目に応じて任意に決められてよい。なお、図6に示すn(j)とm(j)は、j番目の診断項目に関して予め決められた正の閾値であり、m(j)<n(j)を満たす。
影響度Inf(j)の算出に使われる式に応じて、影響度Inf(j)に上限、下限、またはその双方がある場合もあり得るし、影響度Inf(j)に上限も下限もない場合もあり得る。
また、診断項目ごとに、影響度Inf(j)の取り得る値の範囲が異なっていてもよい。つまり、どの診断項目でも影響度Inf(j)の取り得る値の範囲が同じになるようにするための正規化は、必要ではない。なぜなら、診断項目ごとに、別々のアドバイステーブルが設けられるからである。影響度Inf(j)の取り得る値の範囲に応じて、j番目の診断項目用のアドバイステーブル306−jにおいて、例えばm(j)やn(j)のような閾値が適宜定められればよい。
例えば、j番目の診断項目についての影響度8の範囲が−1以上1以下である場合、m(j)が1/3であってもよく、n(j)が2/3であってもよい。もちろん、閾値m(j)とn(j)の値は、1/3と2/3以外の他の値であってもよい。閾値m(j)とn(j)の値は、任意に決められてよい。
また、上記の例では、−n(j)とn(j)という対称的な閾値が使われており、−m(j)とm(j)という対称的な閾値が使われている。しかし、必ずしも正と負の対称的な閾値が使われなくてもよい。
なお、図6では、診断結果6の3つの範囲のいずれに対しても、影響度8の上記の7つの範囲が組み合わされている。しかし、実施形態によっては、診断結果6の範囲ごとに、組み合わされる影響度8の範囲の定義(例えば、範囲の個数や、範囲同士の境界の値)が異なっていてもよい。
アドバイステーブル306−jについての理解の助けとするために、以下に、より具体的な例をいくつか説明する。
例えば、j番目の診断項目が、ハンドルの切り方についての項目である場合について説明する。説明の便宜上、診断結果Res(j)の値が小さいほど、車両100のカーブの仕方が急であることを示すものとする。例えば、1≦Res(j)≦3のとき、車両100は曲がり過ぎであり、4≦Res(j)≦7のとき車両100のカーブの仕方は適正であり、8≦Res(j)≦10のとき、車両100は十分に曲がっていない。
また、判定部118は、ドライバが現在運転中の車両100のハンドル性能の方が、ドライバが過去に運転した他の車両のハンドル性能よりもシャープなときに、影響度Inf(j)が正となるように、影響度Inf(j)を算出してもよい。換言すれば、判定部118は、ドライバが過去に運転した他の車両のハンドル性能の方が、ドライバが現在運転中の車両100のハンドル性能よりもシャープなときに、影響度Inf(j)が負となるように、影響度Inf(j)を算出してもよい。
図6によれば、アドバイスAdv(j,1,1)は、1≦Res(j)≦3を満たす診断結果Res(j)と、Inf(j)≦−n(j)を満たす影響度Inf(j)に対応づけられている。アドバイスAdv(j,1,1)は、例えば、以下のようなアドバイスであってもよい。
「ハンドルの切り始めで、あなたはハンドルを切りすぎています。以前あなたが運転していた車両より、本車両は、ハンドル操作に対する反応がかなり鈍いので、あなたは、おそらくその鈍さを補うために、過剰にハンドルを操作しているのだと思われます。余裕をもって早めのハンドル操作を心がけましょう。」
また、図6によれば、アドバイスAdv(j,1,4)は、1≦Res(j)≦3を満たす診断結果Res(j)と、Inf(j)=0を満たす影響度Inf(j)に対応づけられている。アドバイスAdv(j,1,4)は、例えば、以下のようなアドバイスであってもよい。
「ハンドルの切り始めで、あなたはハンドルを切りすぎています。ゆるやかなハンドル操作を心がけましょう。」
また、図6によれば、アドバイスAdv(j,1,7)は、1≦Res(j)≦3を満たす診断結果Res(j)と、n(j)≦Inf(j)を満たす影響度Inf(j)に対応づけられている。アドバイスAdv(j,1,7)は、例えば、以下のようなアドバイスであってもよい。
「ハンドルの切り始めで、あなたはハンドルを切りすぎています。以前あなたが運転していた車両より、本車両は、ハンドル操作に対する反応がかなり敏感なため、あなたの予想以上に車両が曲がってしまいます。以前よりゆるやかなハンドル操作を心がけましょう。」
以上の例示から分かるように、例えば、診断結果Res(j)の値が2であった場合、「2」という診断結果だけに基づく一律のアドバイスが提示されるのでなく、影響度Inf(j)に応じたアドバイスが提示される。すなわち、ドライバ個人の運転履歴を考慮した適切なアドバイスが提示される。よって、運転診断装置110は、ドライバの運転を適切に支援することができる。
別の例として、j番目の診断項目が、車両100の走行位置についての項目である場合について説明する。説明の便宜上、診断結果Res(j)の値が小さいほど、車両100は車線の左端に近いところを走行しているものとする。例えば、1≦Res(j)≦3のとき、車両100は車線の左側に寄っており、4≦Res(j)≦7のとき車両100は車線の中央付近を適切に走行しており、8≦Res(j)≦10のとき、車両100は車線の右側に寄っている。
また、判定部118は、ドライバが現在運転中の車両100の車幅の方が、ドライバが過去に運転した他の車両の車幅よりも広いときに、影響度Inf(j)が正となるように、影響度Inf(j)を算出してもよい。換言すれば、判定部118は、ドライバが過去に運転した他の車両の車幅の方が、ドライバが現在運転中の車両100の車幅よりも広いときに、影響度Inf(j)が負となるように、影響度Inf(j)を算出してもよい。
例えば、運転診断装置110が搭載される車両100において運転席が右側にあり、かつ、ドライバが過去に運転した他の車両の車幅よりも、現在ドライバが運転している車両100の車幅が狭い場合があり得る。この場合、影響度Inf(j)は負である。また、ドライバが、車線内でのドライバ自身の位置を、過去と同様の位置に保とうとする可能性があり、その結果、車両100が車線の右側に寄ってしまう可能性がある。
実際に車両100が車線の右側に寄ってしまうと、診断結果Res(j)が8≦Res(j)≦10を満たす。例えば、図6によれば、アドバイスAdv(j,3,1)は、8≦Res(j)≦10を満たす診断結果Res(j)と、Inf(j)≦−n(j)を満たす影響度Inf(j)に対応づけられている。よって、アドバイスAdv(j,3,1)は、例えば、以下のようなアドバイスであってもよい。
「直進時に、あなたは右に車両を寄せて走行しています。以前あなたが運転していた車両と比べて、本車両はかなり横幅が狭いので、本車両で走行する際には、車線の右側のラインと車両との間の幅を、以前よりも空けるように心がけてください。」
一方、車両100において運転席が右側にあり、かつ、ドライバが過去に運転した他の車両の車幅よりも、車両100の車幅が狭い場合に、上記の例とは逆に、車両100が車線の左側に寄ってしまう可能性もあり得る。例えば、ドライバが、車線の左側のラインと車両100の左側面との間の距離を、過去と同様の距離に保とうと意識している場合などに、車両100が車線の左側に寄ってしまう可能性がある。
実際に車両100が車線の左側に寄ってしまうと、診断結果Res(j)が1≦Res(j)≦3を満たす。例えば、図6によれば、アドバイスAdv(j,1,1)は、1≦Res(j)≦3を満たす診断結果Res(j)と、Inf(j)≦−n(j)を満たす影響度Inf(j)に対応づけられている。アドバイスAdv(j,1,1)は、例えば、以下のようなアドバイスであってもよい。
「直進時に、あなたは左に車両を寄せて走行しています。以前あなたが運転していた車両と比べて、本車両はかなり横幅が狭いので、本車両で走行する際には、車線内中央を走行するために、左側のラインと車両との間の幅を空けることを意識し、慎重に走行してください。」
なお、アドバイステーブル306−jの内容は、車両100の仕様(例えば、運転席が右側にあるか左側にあるか、など)に応じて決められていてもよい。
さらに別の例として、j番目の診断項目が、アクセル操作についての項目である場合について説明する。説明の便宜上、診断結果Res(j)の値が小さいほど、加速が急激であるものとする。例えば、1≦Res(j)≦3のとき、加速の仕方が急激すぎ、4≦Res(j)≦7のとき加速の仕方は適正であり、8≦Res(j)≦10のとき、加速の仕方が緩やかすぎる。
また、判定部118は、ドライバが現在運転中の車両100の加速性能の方が、ドライバが過去に運転した他の車両の加速性能よりも高いときに、影響度Inf(j)が正となるように、影響度Inf(j)を算出してもよい。換言すれば、判定部118は、ドライバが過去に運転した他の車両の加速性能の方が、ドライバが現在運転中の車両100の加速性能よりも高いときに、影響度Inf(j)が負となるように、影響度Inf(j)を算出してもよい。
例えば、図6によれば、アドバイスAdv(j,1,1)は、1≦Res(j)≦3を満たす診断結果Res(j)と、Inf(j)≦−n(j)を満たす影響度Inf(j)に対応づけられている。アドバイスAdv(j,1,1)は、例えば、以下のようなアドバイスであってもよい。
「あなたは本車両を急加速させています。以前あなたが運転していた車両と比べて、本車両は加速性能が劣るので、あなたは、おそらく加速性能の低さを補おうとして、大分アクセルペダルを踏み込みすぎているものと思われます。本車両の特性をあなたが理解するのに大分時間がかかるかもしれませんが、今のあなたの運転の仕方だと、燃費も悪くなります。スムーズな加速を意識した運転を心がけましょう。」
また、図6によれば、アドバイスAdv(j,1,7)は、1≦Res(j)≦3を満たす診断結果Res(j)と、n(j)≦Inf(j)を満たす影響度Inf(j)に対応づけられている。アドバイスAdv(j,1,7)は、例えば、以下のようなアドバイスであってもよい。
「あなたは本車両を急加速させています。以前あなたが運転していた車両と比べて、本車両は加速性能が優れています。あなたは、おそらく過去の車両と同様の感覚でアクセルペダルを踏み込んでいるため、急加速になっているものと思われます。本車両の特性に慣れるのに大分時間がかかるかもしれませんが、今のあなたの運転の仕方だと、燃費も悪くなります。緩やかなアクセル操作を意識した運転を心がけましょう。」
続いて、図7〜9を参照して、第2実施形態で行われる処理について説明する。図7は、運転診断装置110が実行する処理のフローチャートである。
車両100が起動されると、運転診断装置110が図7の処理を開始する。具体的には、ドライバがイグニッションキーを鍵穴に差し込んでキーを所定の位置まで回転させると、運転診断装置110にスイッチが入って運転診断装置110が起動する。そして、運転診断装置110が図7の処理を開始する。
図7の処理は、以下の4種類の処理を含む。第1の処理は、運転診断装置110が稼働している間、車両情報5の取得と記憶のために繰り返し実行される、ステップS101〜S104の処理である。第1の処理と並行して、第2〜第4の処理が実行される。第2の処理は、ステップS105〜S106の初期化処理である。第3の処理は、運転診断装置110が稼働している間、診断とアドバイスの提示のために繰り返し実行される、ステップS107〜S115の処理である。第4の処理は、運転診断装置110のスイッチがオフにされるときに実行される、ステップS116の後処理である。以下、具体的にステップS101〜S116について説明する。
運転診断装置110が起動すると、ステップS101で車両情報取得部111は、各種の車両情報5(例えば、緯度、経度、移動距離、速度、加速度、ヨーレートなど)を取得する。上記のとおり、車両情報取得部111は、CAN103を介して車両情報5を取得してもよいし、車両情報取得部111に信号線で接続されたセンサまたはECUから車両情報5を取得してもよい。車両情報取得部111は、取得した車両情報5を車両情報管理部113に出力する。
すると、ステップS102で車両情報管理部113は、時刻と対応づけて車両情報5を車両情報記憶部114に記憶する。具体的には、車両情報管理部113は、時計112を参照して現在時刻を読み取る。そして、車両情報管理部113は、現在時刻と、車両情報取得部111から得た車両情報5とを対応づけるエントリを、運転記録テーブル301に追加する。
次に、ステップS103で車両情報取得部111は、「運転診断装置110が稼働中かどうか」を判定する。例えば、運転診断装置110のスイッチを切るための割り込み信号が検出されていれば、車両情報取得部111は「運転診断装置110は稼働中ではない」と判定する。逆に、割り込み信号が検出されていなければ、車両情報取得部111は「運転診断装置110は稼働中である」と判定する。
運転診断装置110が稼働中でないと判定されると、上記第1の処理(つまりステップS101〜S104の処理)は終了する。逆に、運転診断装置110が稼働中の場合、次に、ステップS104で車両情報取得部111は、所定時間の経過を待つ。ステップS104での所定時間は、車両情報取得部111が車両情報5を取得する間隔である。所定時間は実施形態に応じて適宜決められていてよい。所定時間が経過すると、車両情報取得部111は再度ステップS101を実行する。
一方、上記のとおり、ステップS101〜S104と並行して、ステップS105〜S116が実行される。具体的には、運転診断装置110が起動すると、ステップS105で履歴管理部116は、過去の運転に関する履歴情報7を外部装置130から取得し、取得した履歴情報7を履歴記憶部117に記憶する。
例えば、外部装置130が記憶媒体240である場合、履歴管理部116は、記憶媒体240から以下のデータを読み取り、読み取ったデータを履歴記憶部117に記憶する。
・ドライバが今までに運転したことのある各車両についての車両テーブルのデータ。
・ドライバの過去の運転履歴に関する運転履歴テーブルのデータ。
また、履歴管理部116は、記憶媒体240に記憶されている運転履歴テーブルの数を数え、その数えた値を、乗り換え回数Cntとして統計テーブル305に書き込む。
なお、もしドライバが、過去に他の車両も車両100自体も運転したことがなければ、記憶媒体240には車両テーブルも運転履歴テーブルも記憶されていない。この場合、履歴管理部116は、統計テーブル305に、乗り換え回数Cntとして0という値を書き込む。
あるいは、外部装置130はサーバ230であってもよい。この場合、履歴管理部116は、ネットワーク220を介してサーバ230にアクセスする。その際、履歴管理部116は、これから車両100を運転しようとするドライバを識別する識別子(以下「ドライバID」という)をサーバ230に通知する。
例えば、ドライバは、ドライバIDを記憶したカードキーまたは記憶媒体を携帯してもよい。ドライバIDを記憶する記憶媒体は、外部装置130として使われる記憶媒体240であってもよいし、他の記憶媒体であってもよい。運転診断装置110が起動したら、履歴記憶部117は、カードキーまたは記憶媒体からドライバIDを読み取り、ドライバIDをサーバ230に通知する。
サーバ230は、複数のドライバについての履歴情報7(具体的には運転履歴テーブル)を記憶していてもよい。また、サーバ230は、複数の車両それぞれについての車両テーブルを記憶しているものとする。
サーバ230は、履歴管理部116から通知されたドライバIDに対応づけられた運転履歴テーブルを検索する。
もし、ドライバが、サーバ230に車両テーブルが登録されているどの車両も過去に運転したことがなければ、当該ドライバの運転履歴テーブルも存在しない。この場合、サーバ230は、運転履歴テーブルが存在しないことを履歴管理部116に通知する。すると、履歴管理部116は、統計テーブル305に、乗り換え回数Cntとして0という値を書き込む。
逆に、ドライバが、サーバ230に車両テーブルが登録されている少なくとも1台の車両を過去に運転したことがあれば、通知されたドライバIDに対応づけられた1つ以上の運転履歴テーブルが、上記検索の結果として見つかる。この場合、サーバ230は、見つかった各運転履歴テーブルの車両識別子により識別される車両テーブルを検索する。検索の結果、1つ以上の車両テーブルが見つかる。サーバ230は、見つかった各運転履歴テーブルのデータと、見つかった各車両テーブルのデータを、ネットワーク220を介して履歴管理部116に送信する。
すると、履歴管理部116は、サーバ230からデータを受信した各運転履歴テーブルと各車両テーブルを、履歴管理部116に記憶する。また、履歴管理部116は、サーバ230からデータを受信した運転履歴テーブルの数を数え、その数えた値を、乗り換え回数Cntとして統計テーブル305に書き込む。
以上のとおり、外部装置130が記憶媒体240であれサーバ230であれ、ステップS105では、過去の運転履歴に関する履歴情報7が履歴管理部116に記憶される。なお、ドライバの過去の運転履歴には、以下の第1〜第4の場合があり得る。それぞれの場合におけるステップS105の実行の結果は、以下に説明するとおりである。
第1の場合は、「ドライバは、運転診断装置110を搭載したどの車両も今までに運転したことがない」という場合である。第1の場合は、図5においてP=Q=1の場合に相当する(なお、図5は、後述のステップS106の実行後の履歴記憶部117の状態を示すものとする)。
第1の場合、ステップS105ではまだ車両テーブルは記憶されない。また、第1の場合、ステップS105ではまだ運転履歴テーブルも記憶されない。よって、第1の場合、統計テーブル305には、乗り換え回数Cntとして0という値が記憶される。
第2の場合は、「ドライバは、過去にD1回、車両100を運転したことがあるが、運転診断装置110を搭載した他の車両は今まで運転したことがない(D1≧1)」という場合である。第2の場合は、図5においてP=1かつQ=D1+1の場合に相当する。
第2の場合、ステップS105では、車両100の仕様を示す車両テーブル303−1が記憶される。また、第2の場合、ステップS105では、ドライバが過去に車両100を運転した履歴に関する運転履歴テーブル304−1〜304−(Q−1)が記憶される。よって、第2の場合、統計テーブル305には、乗り換え回数Cntとして(Q−1)という値が記憶される。
第3の場合は、「ドライバは、過去に車両100自体を運転したことはないが、運転診断装置110を搭載した他の1台以上の車両を今までに合計でD2回、運転したことがある(D2≧1)」という場合である。第3の場合は、図5においてP>1かつQ=D2+1の場合に相当する。
第3の場合、ステップS105では、ドライバが過去に運転したことのある(P−1)台の車両に関する車両テーブル303−1〜303−(P−1)が記憶される。なお、第3の場合、車両100自体に関する車両テーブル303−Pは、後述のステップS106で記憶される。また、第3の場合、ステップS105では、ドライバが過去に他の(P−1)台の車両を合計で(Q−1)回運転した履歴に関する運転履歴テーブル304−1〜304−(Q−1)が記憶される。よって、第3の場合、統計テーブル305には、乗り換え回数Cntとして(Q−1)という値が記憶される。
第4の場合は、「ドライバは、過去にD1回、車両100自体を運転したことがあり、かつ、運転診断装置110を搭載した他の1台以上の車両を今までに合計でD2回、運転したことがある(D1≧1かつD2≧1)」という場合である。第4の場合は、図5においてP>1かつQ=D1+D2+1の場合に相当する。
第4の場合、ステップS105では、ドライバが過去に運転したことのあるP台の車両に関する車両テーブル303−1〜303−Pが記憶される。第4の場合、車両テーブル303−1〜303−Pのうちの1つは、車両100の仕様を示すものである。また、第4の場合、ステップS105では、ドライバの過去の運転履歴に関する運転履歴テーブル304−1〜304−(Q−1)が記憶される。よって、第4の場合、統計テーブル305には、乗り換え回数Cntとして(Q−1)という値が記憶される。
さて、以上説明したステップS105に続いて、ステップS106では、ドライバが現在運転中の車両100に特有の情報(すなわち車両100の車両仕様情報)を履歴管理部116が取得する。具体的には、履歴管理部116は、車両情報管理部113に対して車両テーブル302のデータを転送するよう要求する。車両情報管理部113は、車両情報記憶部114から車両テーブル302のデータを読み出し、データを履歴管理部116に出力する。
なお、第2実施形態では、車両テーブル302が予め車両情報記憶部114に記憶されているものとする。例えば、運転診断装置110が車両100に搭載されるときに、車両テーブル302の各フィールドの値が設定されてもよい。よって、車両情報管理部113は、ステップS106での履歴管理部116からの要求に応じて、車両テーブル302のデータを読み出すことができる。
実施形態によっては、車両情報取得部111が、1回目にステップS101を実行するときに、車両テーブル302の各フィールドに相当する車両情報5もCAN103を介して取得することにしてもよい。車両情報管理部113は、1回目にステップS102を実行するときに、車両情報取得部111から出力される車両情報5に基づいて運転記録テーブル301にエントリを追加するだけでなく、車両テーブル302の各フィールドに値を設定してもよい。
いずれにせよ、ステップS106では、履歴管理部116が車両情報管理部113を介して車両テーブル302のデータを取得する。
履歴管理部116は、車両情報管理部113を介して取得したデータに含まれる車両識別子と等しい車両識別子を持つ車両テーブルが履歴記憶部117に既に存在するか否かを判定する。
上記の第1の場合または第3の場合には、車両情報管理部113を介して取得したデータに含まれる車両識別子と等しい車両識別子を持つ車両テーブルは、履歴記憶部117に存在しない。そこで、履歴管理部116は、車両情報管理部113を介して取得したデータを、車両テーブル303−Pとして履歴記憶部117に記憶する。第1の場合はP=1であり、第3の場合はP>1である。
逆に、上記の第2の場合または第4の場合には、車両情報管理部113を介して取得したデータに含まれる車両識別子と等しい車両識別子を持つ車両テーブルが、履歴記憶部117に既に存在する。よって、履歴管理部116は、履歴記憶部117に車両テーブルを追加する必要はない。
また、ステップS106で履歴管理部116は、今回の運転に関する運転履歴テーブル304−Qを履歴記憶部117に追加し、運転履歴テーブル304−Qを初期化する。
例えば、各iについて、運転履歴テーブル304−iの運転履歴番号として、整数iが使われてもよい。この場合、履歴管理部116は、運転履歴テーブル304−Qの運転履歴番号のフィールドに、Qという値を設定する。
また、履歴管理部116は、運転履歴テーブル304−Qの車両識別子のフィールドに、車両100の車両識別子(つまり履歴管理部116が車両情報管理部113を介して取得したデータに含まれる車両識別子)を設定する。運転時間のフィールドおよび過去の診断結果のフィールドは、無効な値または空に初期化される。
運転開始日時のフィールドには現在時刻が設定される。例えば、車両情報管理部113は、上記のように車両テーブル302のデータを履歴管理部116に出力する際に、時計112から現在時刻を読み取り、現在時刻を履歴管理部116に通知してもよい。あるいは、履歴管理部116自体が時計112から現在時刻を読み取ってもよい。いずれにせよ、運転開始日時のフィールドは、現在時刻の値に初期化される。
なお、実施形態によっては、ステップS106がステップS105の前に実行されてもよい。ステップS105〜S106の初期化が済むと、次に、ステップS107が実行される。
具体的には、ステップS107で診断部115が、「運転診断装置110が稼働中かどうか」を判定する。診断部115は、例えばステップS103での車両情報取得部111による判定と同様に、割り込み信号に基づいてステップS107の判定を行ってもよい。
運転診断装置110が稼働中でないと判定した場合、診断部115はステップS116の後処理を行うよう、履歴管理部116に要求する。
逆に、運転診断装置110が稼働中であると判定した場合、診断部115は、ステップS108で、インデックス変数jを1に初期化する。そして、ステップS109で診断部115は、j>Nか否かを判定する。ここで、Nは診断項目の個数である(N≧1)。
j>Nの場合、診断部115は再度ステップS107の判定を行う。逆に、j≦Nの場合、診断部115は、次に、ステップS110で、j番目の診断項目についての運転診断処理を行う。以下では説明の便宜上、j番目の診断項目の診断項目IDを「Itm(j)」と表記し、j番目の診断項目について診断部115が下した診断の結果を「Res(j)」と表記する。ステップS110の運転診断処理の詳細は、図8とともに後述する。
次に、ステップS111で診断部115は、ステップS110の運転診断処理が成功したか否かを判定する。詳しくは図8とともに後述するとおり、運転診断処理が実行されるタイミングと、車両100の挙動と、診断項目の組み合わせによっては、診断結果6が得られない場合があり得る。診断部115は、診断結果6が得られた場合は「運転診断処理が成功した」と判定し、診断結果6が得られなかった場合は「運転診断処理が失敗した」と判定する。
運転診断処理が成功した場合、診断部115は、j番目の診断項目の診断項目ID(Itm(j))と、得られた診断結果Res(j)をアドバイス決定部119に通知する。すると、アドバイス決定部119がステップS112のアドバイス決定処理を開始する。アドバイス決定処理の詳細は図9とともに後述する。
逆に、運転診断処理が失敗した場合、診断部115は、ステップS111の次にステップS115を実行する。
さて、ステップS112のアドバイス決定処理において、アドバイス決定部119は、あるアドバイスをドライバに提示することに決定し、当該あるアドバイスを出力制御部121に出力する。
出力制御部121は、アドバイス決定部119からアドバイスを受け取ると、ステップS113で、「ドライバに対してアドバイスを提示することが可能か否か」を判定する。図2に関して説明したとおり、出力制御部121は、車両情報管理部113を介して車両情報5を取得し、車両情報5から車両100の状態を推定する。出力制御部121は、推定した状態に基づいて、「ドライバに対してアドバイスを提示することが可能か否か」を判定する。例えば、車両100が停止中または低速で直進中の場合に、出力制御部121は「ドライバに対してアドバイスを提示することが可能」と判定してもよい。
出力制御部121は、「ドライバに対してアドバイスを提示することが可能」と判定した場合、続いて、ステップS114で、アドバイスをドライバに提示するための制御を行う。この制御の詳細は、図2に関して説明したとおりである。出力制御部121の制御にしたがって、ステップS114では、ディスプレイ104および/またはスピーカ105がアドバイスを出力する。そして、処理はステップS115に移行する。
逆に、出力制御部121がステップS113で「今は、ドライバに対してアドバイスを提示することが可能な状態ではない」と判定した場合、ステップS114は省略され、処理はステップS115へと移行する。
ステップS115で診断部115は、インデックス変数jを1だけインクリメントする。そして、診断部115は再度ステップS109の判定を行う。以上のようにして、運転診断装置110が稼働している間は、N個の診断項目それぞれについての運転診断処理および後続の処理が、繰り返し実行される。
一方、「運転診断装置110が稼働中でない」とステップS107で判定されると、ステップS116の後処理が実行される。具体的には、ステップS116で履歴管理部116は、履歴記憶部117内の履歴情報7の少なくとも一部を外部装置130に出力する。ステップS105に関して説明した第1〜第4の場合のそれぞれについて、ステップS116で出力される履歴情報7の具体例を以下に説明する。
第1または第3の場合、履歴管理部116は、車両100に関する車両テーブル303−Pを外部装置130に出力する。第2または第4の場合、外部装置130には車両100に関する車両テーブルが既に記憶されている。よって、第2または第4の場合、履歴管理部116は、車両テーブル303−Pを外部装置130に出力する必要はない。
また、第1〜第4のいずれの場合においても、履歴管理部116は、今回の車両100の運転に関する運転履歴テーブル304−Qを外部装置130に出力する。なお、運転履歴テーブル304−Q内のいくつかのフィールドは、上記のとおりステップS106で初期化された後、例えば、ステップS110で更新されてもよい。あるいは、運転履歴テーブル304−Qを外部装置130に出力する前に、ステップS116で履歴管理部116が、運転履歴テーブル304−Q内のいくつかのフィールドを更新してもよい。運転履歴テーブル304−Q内のフィールドの更新については、図8のステップS206とともに後述する。
ステップS116で外部装置130への履歴情報7の出力が済むと、運転診断装置110は図7の処理を終える。
さて、図8は、図7のステップS110の運転診断処理のフローチャートである。診断部115は、診断項目に応じた適宜の車両情報5を用いて、診断項目に応じたアルゴリズムにしたがって、診断を下す。図8のフローチャートは、Itm(j)という診断項目IDを持つj番目の診断項目について診断部115が運転診断処理を実行する場合を示す。
ステップS201で診断部115は、j番目の診断項目の診断用に使う車両情報5を提供するよう、車両情報管理部113に要求する。
例えば、j番目の診断項目の診断が、直近の10秒間のヨーレートとハンドル切り角に基づく診断である場合、診断部115は、車両情報5のうち、直近の10秒間のヨーレートとハンドル切り角のデータを提供するよう、車両情報管理部113に要求する。すると、車両情報管理部113は、運転記録テーブル301のエントリのうち直近の10秒間の期間内に含まれる各エントリから、日時とヨーレートとハンドル切り角の各フィールドのデータを抽出し、抽出したデータを診断部115に返す。
診断項目に応じて、何種類の(そして、どの種類の)車両情報5を診断部115が診断に使うかは異なる。よって、車両情報管理部113は、診断部115から指定されたフィールドおよび「日時」フィールドのデータを、運転記録テーブル301から抽出する。
また、診断項目に応じて、いつ取得された車両情報5を診断部115が診断に使うかは異なる。例えば、ある診断項目の診断には、運転記録テーブル301の最新のエントリ内のデータのみが使われるかもしれない。一方、別の診断項目の診断には、上記の例のように、ある長さの期間に含まれるいくつかのエントリのデータが使われるかもしれない。
診断部115は、車両情報管理部113からデータを受け取ると、次に、ステップS202の判定を行う。具体的には、診断部115は、「j番目の診断項目の診断用の車両情報5が得られたか否か」を判定する。より詳細には、診断部115は、「j番目の診断項目の診断を実行するための前提条件を満たすような車両情報5が得られたか否か」を判定する。
例えば、j番目の診断項目が、車両100がほぼ直進していると見なせる場合における、車両100の車線内での走行位置に関する診断であるとする。また、この走行位置に関する診断は、具体的には、直近の5秒間のデータ(具体的にはカメラ画像を含むデータ)に基づいて行われるとする。
この場合、診断部115はステップS201で、例えば、直近の5秒間のカメラ画像とヨーレートのデータを提供するよう、車両情報管理部113に要求してもよい。そして、診断部115は、例えば、車両情報管理部113から返されるヨーレートのデータから、「直近の5秒間では車両100が直進していると見なせるか否か」をステップS202で判定してもよい。
車両100が直進していると見なせない場合は、診断部115は、「j番目の診断項目の診断を実行するための前提条件を満たすような車両情報5(つまり車両100が直進しているときに撮影されたカメラ画像)は得られなかった」と判定してもよい。
また、車載カメラが画像を撮影する間隔によっては、直近の5秒間の間には車載カメラが画像を撮影していない可能性もあり得る。直近の5秒間の間に撮影されたカメラ画像が存在しない場合も、診断部115は、「j番目の診断項目の診断を実行するための前提条件を満たすような車両情報5は得られなかった」と判定してもよい。
もちろん、以上の説明は例示に過ぎない。ステップS202で診断部115は、診断項目に応じた適宜の方法により判定を下す。診断部115は、「j番目の診断項目の診断を実行するための前提条件を満たすような車両情報5が得られなかった」と判定した場合、「診断失敗」と判定し、図8の運転診断処理を終了する。
逆に、「j番目の診断項目の診断を実行するための前提条件を満たすような車両情報5が得られた」と判定した場合、診断部115は、次にステップS203の処理を実行する。具体的には、診断部115は、ステップS201で得られた車両情報5を使って、j番目の診断項目の診断を実行する。
そして、ステップS204で診断部115は、診断項目ID(つまりItm(j))と、ステップS203で得られた診断結果6(つまりRes(j))を、アドバイス決定部119に通知する。
また、ステップS205で診断部115は、運転時間を計算する。診断部115は、例えば以下のようにして運転時間を計算してもよい。
診断部115は、最初に図8の処理を実行する際、履歴管理部116に対して運転開始日時を問い合わせてもよい。問い合わせに応じて、履歴管理部116は、今回の車両100の運転に関する運転履歴テーブル304−Qから運転開始日時を読み取り、運転開始日時を診断部115に通知する。診断部115は、通知された運転開始日時を、RAM202上にローカルに記憶する。
または、診断部115は、最初に図8の処理を実行するときに、ステップS201で、診断用の車両情報5だけでなく、運転診断装置110の起動後に最初に車両情報5が取得された時刻を示す時刻情報も転送するよう、車両情報管理部113に要求してもよい。そして、診断部115は、車両情報管理部113から受け取った時刻情報を、RAM202上にローカルに記憶してもよい。当該時刻情報が示す時刻は、ほぼ、運転開始日時であると見なせる。
ところで、上記のとおり、診断部115は、図8の運転診断処理を実行するたびに、ステップS201で、車両情報5を時刻情報とともに車両情報管理部113から受け取る。具体的には、診断部115は、運転記録テーブル301の1つ以上のエントリのデータを車両情報管理部113から受け取る。つまり、診断部115は、1つ以上の日時のそれぞれを示す時刻情報をステップS201で受け取る。ステップS205で診断部115は、受け取った時刻情報が示す上記1つ以上の日時の中で最新の日時から、ローカルに記憶した運転開始日時を引くことで、運転時間を計算することができる。
ところで、図5に関して説明したとおり、運転時間の定義は様々であってよい。上記のような運転時間の計算法は、運転時間が運転開始時刻から運転終了時刻までと定義されている場合の計算法の例である。運転時間の定義に応じて、診断部115は適宜の時刻情報を車両情報管理部113から取得し、時刻情報を適宜ローカルに記憶して利用することで、運転時間を計算することができる。
なお、ステップS204とS205の実行順序は逆でもよい。
最後に、ステップS206で診断部115は、診断項目ID(つまりItm(j))と、ステップS203で得られた診断結果6(つまりRes(j))と、ステップS205で計算した運転時間を履歴管理部116に通知する。そして、診断部115は図8の運転診断処理を終了する。なお、この場合、診断部115は、「診断成功」と判定する。
ところで、履歴管理部116は、ステップS206で診断項目IDと診断結果6と運転時間を通知されると、今回の車両100の運転に関する運転履歴テーブル304−Qを適宜更新する。具体的には、履歴管理部116は、運転履歴テーブル304−Qの運転時間フィールドを、通知された運転時間の値で上書きする。
また、図5に関して説明したように、運転履歴テーブル304−Qに「過去の診断結果」として記憶される診断結果6は、複数回の診断それぞれの結果を代表する一種の統計値(statistic)である。
例えば、最大値が統計値として使われる場合、履歴管理部116は、運転履歴テーブル304−Qに現在記憶されている値と、診断部115からステップS206で通知された値を比較する。そして、通知された値の方が運転履歴テーブル304−Qに現在記憶されている値より大きければ、履歴管理部116は、運転履歴テーブル304−Qに記憶されている値を通知された値で上書きしてもよい。最小値が統計値として使われる場合も、履歴管理部116は、類似の方法で、運転履歴テーブル304−Qに記憶されている値と診断部115から通知された値の比較に基づいて、適宜、運転履歴テーブル304−Qを更新する。
あるいは、履歴管理部116は、統計値の計算に使うためのデータをRAM202にローカルに保持してもよい。ステップS206で診断結果6が通知されるたびに、履歴管理部116は、ローカルなデータを更新してもよい。
例えば、最頻値が統計値として使われる場合、履歴管理部116は、診断結果6の値ごとに、その値が得られた回数を数えるカウンタ値を、ローカルに保持してもよい。そして、ステップS206で診断部115から診断結果6が通知されるたびに、履歴管理部116は、通知された値に対応するカウンタ値をインクリメントしてもよい。
この場合、履歴管理部116は、図7のステップS116で、上記カウンタ値に基づいて診断結果の最頻値を求めて、最頻値を運転履歴テーブル304−Qに書き込んでもよい。こうして運転履歴テーブル304−Qの更新が済んでから、履歴管理部116は、ステップS116での出力処理を行ってもよい。
なお、最頻値だけでなく、平均値などの他の種類の統計値が使われる場合も、履歴管理部116は、適宜のローカルなデータを使うことで、運転履歴テーブル304−Qに「過去の診断結果」として記憶する値を計算することができる。
さて、図9は、図7のステップS112のアドバイス決定処理のフローチャートである。詳しくは後述するとおり、アドバイス決定処理の詳細は実施形態に応じて様々であってよい。
ステップS112は、上記のとおり、「診断が成功した」とステップS111で判定されたときに実行される。そして、図8から分かるように、診断が成功した場合には、ステップS204で診断項目IDと診断結果6が既にアドバイス決定部119に通知されている。よって、アドバイス決定部119は、通知された診断項目IDと診断結果6に基づいて、ステップS112に相当する図9のアドバイス決定処理を開始する。
図9のフローチャートは、Itm(j)という診断項目IDとRes(j)という診断結果を診断部115がアドバイス決定部119に通知した場合を示している。図9の処理の概要は、以下のとおりである。
まず、ステップS301で、アドバイス決定部119が、判定部118に、診断部115から通知された診断項目ID(すなわちItm(j))を通知する。
すると、ステップS302〜S309で判定部118は、Itm(j)という診断項目IDを持つ診断項目についての所定のアルゴリズムにしたがって、影響度8を判定する。判定部118は、判定した影響度8をアドバイス決定部119に通知する。以下では、j番目の診断項目に対応して判定された影響度8を、「Inf(j)」とも表記する。
そして、最後にステップS310でアドバイス決定部119は、以下の2つの組み合わせに対応づけられているアドバイスを、アドバイス記憶部120内のアドバイステーブル306−jから読み出す。
・診断部115から通知された診断結果6(すなわちRes(j))。
・判定部118から通知された影響度8(すなわちInf(j))。
例えば、図6に示したアドバイステーブル306−jが使われる場合において、Res(j)=6、Inf(j)=0.25、m(j)=1/3であるとする。この場合、Res(j)とInf(j)の組み合わせに対応づけられているアドバイスは、Adv(j,2,5)である。よって、この場合、ステップS310でアドバイス決定部119は、アドバイスAdv(j,2,5)を読み出す。すなわち、アドバイス決定部119は、アドバイスAdv(j,2,5)をユーザに提示することに決める。
ステップS310でアドバイス決定部119はさらに、読み出したアドバイスを出力制御部121に出力する。そして、図9の処理は終了し、続いて、図7のステップS113が実行される。
以上のとおり概要を説明したアドバイス決定処理における、ステップS302〜S309での影響度8の判定は、実施形態に応じて、適宜、別の判定処理に置き換えられてよい。後述の第3〜第6実施形態では、ステップS302〜S309の少なくとも一部が別の判定処理に置き換えられる。
以下、第2実施形態におけるステップS302〜S309の詳細について説明する。
ステップS302で判定部118は、統計テーブル305を参照して、乗り換え回数Cntの値を得る。
そして、ステップS303で判定部118は、乗り換え回数Cntが0であるか否かを判断する。
乗り換え回数Cntが0のとき、ドライバの過去の運転履歴は記憶されていない。よって、乗り換え回数Cntが0のとき、ドライバが過去の運転経験から受ける影響はないものと見なせる。したがって、乗り換え回数Cntが0のとき、判定部118は、次に、ステップS304で、「影響度Inf(j)が0である」とアドバイス決定部119に通知する。ステップS304の後は、上述のステップS310が実行される。
逆に、乗り換え回数Cntが0より大きいとき、ドライバが過去の運転経験から受ける影響の度合いを評価するために、判定部118は、ステップS305以降の処理を実行する。
ステップS305で判定部118は、ドライバが現在運転中の車両100の車両IDを、履歴記憶部117から読み取る。具体的には、運転履歴テーブル304−Qが今回の車両100の運転に対応するので、判定部118は、運転履歴テーブル304−Qの車両識別子のフィールドの値を読み取る。
また、ステップS306で判定部118は、ドライバが直近の過去に運転した車両の車両IDを履歴記憶部117から読み取る。なお、ステップS305とS306の実行順序は、逆であってもよい。
例えば、運転履歴テーブル304−1〜304−Qにおいて、運転履歴番号は、順に増大するシーケンス番号であってもよい。この場合、運転履歴テーブル304−1〜304−Qの運転履歴番号の中で、運転履歴テーブル304−Qの運転履歴番号が最大である。ステップS306で判定部118は、運転履歴テーブル304−1〜304−Qのうち、運転履歴テーブル304−Qの運転履歴番号の次に大きな運転履歴番号を持つ運転履歴テーブル(具体的には運転履歴テーブル304−(Q−1))から、車両IDを読み取る。
そして、ステップS307で判定部118は、ステップS305とS306で読み取った2つの車両IDが互いに等しいか否かを判定する。
2つの車両IDが互いに等しいとき、判定部118は、次に前述のステップS304を実行する。なぜなら、2つの車両IDが互いに等しい場合とは、以下のような場合だからである。
・ドライバは、かつて車両100を運転した。
・ドライバは、その後、他の車両を運転することなく、今回、再び車両100を運転している。
・よって、ドライバが他の車両の運転経験から受ける影響は、ゼロと見なせる。
逆に、2つの車両IDが互いに異なるとき、判定部118は、次にステップS308で、乗り換え回数Cntが所定の閾値(以下「CntMax」と表記する)以上か否かを判定する。
乗り換え回数Cntが閾値CntMax以上のとき、判定部118は、次に前述のステップS304を実行する。なぜなら、乗り換え回数Cntが閾値CntMax以上の場合とは、以下のような場合だからである。
・ドライバには豊富な運転経験がある。
・よって、ドライバは、既に適応能力(つまり、個々の車両の特性に短時間で適応して、車両に応じた適切な運転を行う能力)を発達させているものと推定される。
・つまり、ドライバは、車両100の前に運転していた他の個々の車両の特性から、直接的な影響はほとんど受けないものと見なせる。
例えば、カーシェアリングサービスで貸し出される各車両に運転診断装置110が搭載される場合では、ドライバは、ある1台の車両を2回以上借りることもあり得るが、ドライバがいつも同じ車両だけを借りるとは限らない。よって、「乗り換え回数Cntが多ければ、ドライバが運転したことのある車両の数も多い」という傾向が見られるであろう。このような傾向がある場合、「乗り換え回数Cntが多ければ、ドライバの適応能力も高い」と期待される。よって、第2実施形態の判定部118は、乗り換え回数Cntが閾値CntMax以上のときにステップS304で影響度Inf(j)を0と判定する。
逆に、乗り換え回数Cntが閾値CntMax未満のとき、ドライバの適応能力はまだそれほど高くない可能性がある。よって、乗り換え回数Cntが閾値CntMax未満のときは、ドライバが過去に運転していた他の車両の運転経験から受ける影響を考慮に入れてドライバにアドバイスを提示することが望ましい。
そこで、乗り換え回数Cntが閾値CntMax未満のとき、判定部118は、ステップS309で、診断項目ID(つまりItm(j))に応じた所定の方法で影響度8(つまりInf(j))を算出する。そして、判定部118は、算出した影響度Inf(j)をアドバイス決定部119に通知する。
例えば、ある整数「hndl」が1≦hndl≦Nを満たすものとし、N個の診断項目のうちのhndl番目の診断項目は、ハンドル操作に関する項目であるとする。例えば、j=hndlの場合、判定部118は、ステップS309で式(1)にしたがって影響度Inf(j)(=Inf(hndl))を算出してもよい。
Inf(hndl)=(curHperform - prevHperform)×CoefHndl×Temp (1)
式(1)中の「curHperform」は、ドライバが現在運転中の車両100のハンドリング性能を示す。判定部118は、ステップS305で読み取った車両IDを持つ車両テーブルの、ハンドリング性能フィールドの値を、変数curHperformに代入する。
式(1)中の「prevHperform」は、ドライバが直近の過去に運転した他の車両のハンドリング性能を示す。判定部118は、ステップS306で読み取った車両IDを持つ車両テーブルの、ハンドリング性能フィールドの値を、変数prevHperformに代入する。
式(1)中の「CoefHndl」は係数である。係数CoefHndlは、第2実施形態では定数である。
「係数CoefHndlが正か負か」は、「ドライバが現在運転中の車両の方が、ドライバが直近の過去に運転した車両よりもハンドリング性能が高いとき、ハンドル操作に関する診断結果6が過去の運転履歴から受ける影響が正か負か」に応じて決められる。「影響が正か負か」とは、換言すれば、「診断結果6の値が運転履歴の影響で増加するか減少するか」ということである。
係数CoefHndlが正か負かを決めるために、予備実験が行われてもよい。例えば、ハンドリング性能に差がある2台の車両をテストドライバが運転してもよい。あるいは、実際の車両の代わりにドライビング・シミュレータが使われてもよい。
しかし、係数CoefHndlの絶対値は、任意に決められてよい。なぜなら、診断項目ごとに別々のアドバイステーブルが設けられているからである。また、影響度Inf(hndl)は、アドバイス決定部119がhndl番目の診断項目用のアドバイステーブルを参照するときに使われるだけで、他の診断項目用のアドバイステーブルをアドバイス決定部119が参照するときには使われないからである。係数CoefHndlの、任意に決められた絶対値に応じて、アドバイステーブル内で影響度の範囲同士を区切る閾値(図6のm(j)など)が決められてもよい。
実施形態によっては、係数CoefHndl自体が、ある関数により表されていてもよい。また、他の変数の値に応じて、いくつかの候補値の中から判定部118が係数CoefHndlの値を選んでもよい(詳しくは図10とともに後述する)。
ところで、「ドライバが、現在運転中の車両100にどれほど適応しているか」という度合いには、いくつかの要因が影響を与える。それらの要因の一例は、上記のハンドリング性能のような、車両の仕様である。また、それらの要因の中には、時間的要因もある。
時間的要因の例は、運転開始時刻や運転時間などである。ある観点から見れば、乗り換え回数Cntも時間的要因の一種である。なぜなら、乗り換え回数Cntは、運転履歴の1種の要約であり、時間の経過とともに変化(具体的には増加)するからである。
時間的要因に応じて、ドライバが現在運転中の車両100に適応している度合いは異なる。そして、ドライバが現在運転中の車両100によく適応しているほど、影響度8は0に近づく。つまり、時間的要因に応じて影響度8の大きさは変わる。式(1)中の「Temp」の乗算は、時間的要因に依存して影響度8の大きさが変わることを示している。
第2実施形態では、変数Tempは、乗り換え回数Cntの関数である。後述の他の実施形態では、変数Tempは、乗り換え回数Cnt以外の、他のパラメタの関数である。
例えば、変数Tempは、式(2)のように定義されていてもよい。
式(2)中の「CoefCnt」は、任意の正の係数である。係数CoefCntは、第2実施形態では定数であるが、係数CoefCnt自体が、ある関数により表されていてもよい。また、他の変数の値に応じて、いくつかの候補値の中から、係数CoefCntの値が選ばれてもよい(詳しくは図10とともに後述する)。
式(2)の定義における、Cnt=0の場合は、図9のステップS303からステップS304に進むルートに対応する。また、式(2)の定義における、CntMax≦Cntの場合は、図9のステップS308からステップS304に進むルートに対応する。
式(1)と(2)により算出される影響度Inf(hndl)の大きさは、ハンドリング性能の差(つまり仕様の差)の大きさに対して単調増加する。また、乗り換え回数Cntが正のとき、式(1)と(2)により算出される影響度Inf(hndl)の大きさは、乗り換え回数Cntに対して単調減少する。もちろん、以下の3つの条件を満たすような他の関数を用いて、判定部118が影響度Inf(hndl)を算出してもよい。
・ハンドリング性能の差の大きさに対して、影響度Inf(hndl)の大きさが単調増加する。
・乗り換え回数Cntが0ならば、影響度Inf(hndl)が0である。
・乗り換え回数Cntが正ならば、乗り換え回数Cntに対して、影響度Inf(hndl)の大きさが単調減少する。
続いて、ステップS309での診断項目に応じた影響度Inf(j)の算出方法について、さらに別の2つの例を説明する。
例えば、ある整数「pos」が1≦pos≦Nを満たすものとし、N個の診断項目のうちのpos番目の診断項目は、車線内での走行位置に関する項目であるとする。例えば、j=posの場合、判定部118は、ステップS309で式(3)にしたがって影響度Inf(j)(=Inf(pos))を算出してもよい。
Inf(pos)=(curCW - prevCW)×CoefPos×Temp (3)
式(3)中の「curCW」は、ドライバが現在運転中の車両100の全幅を示す。判定部118は、ステップS305で読み取った車両IDを持つ車両テーブルの、全幅のフィールドの値を、変数curCWに代入する。
式(3)中の「prevCW」は、ドライバが直近の過去に運転した他の車両の全幅を示す。判定部118は、ステップS306で読み取った車両IDを持つ車両テーブルの、全幅のフィールドの値を、変数prevCWに代入する。
式(3)中の「CoefPos」は係数である。係数CoefPosは、第2実施形態では定数である。
「係数CoefPosが正か負か」は、「ドライバが現在運転中の車両の方が、ドライバが直近の過去に運転した車両よりも幅が広いとき、走行位置に関する診断結果6が過去の運転履歴から受ける影響が正か負か」に応じて決められる。係数CoefPosが正か負かを決めるために、予備実験が行われてもよい。しかし、係数CoefPosの絶対値は、任意に決められてよい。
実施形態によっては、係数CoefPos自体が、ある関数により表されていてもよい。また、他の変数の値に応じて、いくつかの候補値の中から、判定部118が係数CoefPosの値を選んでもよい。
式(3)中の「Temp」は、式(1)中の「Temp」と同様である。なお、車幅の差の大きさに対して、影響度Inf(pos)の大きさが単調増加するように影響度Inf(pos)を定義する他の関数が、式(3)の代わりに使われてもよい。
さて、例えば、ある整数「acc」が1≦acc≦Nを満たすものとし、N個の診断項目のうちのacc番目の診断項目は、加速に関する項目であるとする。例えば、j=accの場合、判定部118は、ステップS309で式(4)にしたがって影響度Inf(j)(=Inf(acc))を算出してもよい。
Inf(acc)=(curWeight/curPperform - prevWeight/prevPperform)
×CoefAcc×Temp (4)
式(4)中の「curWeight」は、ドライバが現在運転中の車両100の重量を示す。判定部118は、ステップS305で読み取った車両IDを持つ車両テーブルの、車重のフィールドの値を、変数curcurWeightに代入する。
式(4)中の「curPperform」は、ドライバが現在運転中の車両100のエンジン出力性能を示す。判定部118は、ステップS305で読み取った車両IDを持つ車両テーブルの、エンジン出力性能のフィールドの値を、変数curPperformに代入する。
式(4)中の「prevWeight」は、ドライバが直近の過去に運転した他の車両の重量を示す。判定部118は、ステップS306で読み取った車両IDを持つ車両テーブルの、車重のフィールドの値を、変数prevWeightに代入する。
式(4)中の「prevPperform」は、ドライバが直近の過去に運転した他の車両のエンジン出力性能を示す。判定部118は、ステップS306で読み取った車両IDを持つ車両テーブルの、エンジン出力性能のフィールドの値を、変数prevPperformに代入する。
式(4)中の「CoefAcc」は係数である。係数CoefAccは、第2実施形態では定数である。実施形態によっては、係数CoefAcc自体が、ある関数により表されていてもよい。また、他の変数の値に応じて、いくつかの候補値の中から、判定部118が係数CoefAccの値を選んでもよい。
式(4)中の「Temp」は、式(1)中の「Temp」と同様である。
例えば、エンジン出力性能が最大出力により表されていてもよい。この場合、式(4)は、ウェイト・トゥ・パワー・レシオ(weight-to-power ratio)の差の大きさに対して、影響度Inf(acc)の大きさが単調増加することを示す。この場合、「係数CoefAcc」が正か負か」は、「ドライバが現在運転中の車両の方が、ドライバが直近の過去に運転した車両よりもウェイト・トゥ・パワー・レシオが高いとき、加速に関する診断結果6が過去の運転履歴から受ける影響が正か負か」に応じて決められる。係数CoefAccが正か負かを決めるために、予備実験が行われてもよい。しかし、係数CoefAccの絶対値は、任意に決められてよい。もちろん、ウェイト・トゥ・パワー・レシオの差の大きさに対して、影響度Inf(acc)の大きさが単調増加するように影響度Inf(acc)を定義する他の式が、式(4)の代わりに使われてもよい。
以上、式(1)〜(4)を参照して例示したように、図9のステップS309では、診断項目に応じた方法で、判定部118が影響度8を判定する。
続いて、第3実施形態について説明する。第3実施形態では、判定部118が式(2)の代わりに式(5)を使って影響度8を算出する。具体的には、第3実施形態では、図9のアドバイス決定処理のステップS308が以下に述べるように変形される。その他の点では、第3実施形態は第2実施形態と同様である。
式(5)中の「cTime」は、ドライバが現在運転中の車両100の運転を開始してから経過した運転時間を示す。式(5)中の「cTimeMax」は、運転時間cTimeに関して予め決められた正の閾値である。閾値cTimeMaxは、例えば、診断結果6の経時変化を観察するような予備実験に基づいて決められてもよい。閾値cTimeMaxは、「ドライバがある1台の車両の運転を開始してからどの程度長い時間が経過したら、ドライバが過去に運転していた他の車両の運転経験の影響が、無視して構わない程度にまで低下するのか」ということを示す。
式(5)中の「CoefCurTime」は、任意の正の係数である。係数CoefCurTimeは、第3実施形態では定数である。実施形態によっては、係数CoefCurTime自体が、ある関数により表されてもよい。また、他の変数の値に応じて、いくつかの候補値の中から、判定部118が係数CoefCurTimeの値を選んでもよい。
式(1)と(5)により算出される影響度Inf(hndl)の大きさは、ハンドリング性能の差の大きさに対して単調増加し、かつ、運転時間cTimeの長さに対して単調減少する。また、式(3)と(5)により算出される影響度Inf(pos)の大きさは、車幅の差の大きさに対して単調増加し、かつ、運転時間cTimeの長さに対して単調減少する。そして、式(4)と(5)により算出される影響度Inf(acc)の大きさは、例えば、ウェイト・トゥ・パワー・レシオの差の大きさに対して単調増加し、かつ、運転時間cTimeの長さに対して単調減少する。判定部118は、運転時間cTimeの長さに対して「Temp」の大きさが単調減少するように「Temp」を定義する他の式を、式(5)の代わりに用いてもよい。
さて、上記のとおり、第3実施形態では、第2実施形態の図9のアドバイス決定処理のステップS308が変形される。具体的には、第3実施形態で判定部118は、ステップS308の判定の代わりに以下の処理を行う。
判定部118は、運転履歴テーブル304−Q(つまり、今回の車両100の運転についての運転履歴テーブル)から、運転時間のフィールドの値を読み取る。こうして読み取られた値が、式(5)の運転時間cTimeとして使われる。
次に、判定部118は、運転時間cTimeが閾値cTimeMax以上であるか否かを判定する。
運転時間cTimeが閾値cTimeMax以上の場合、式(5)によればTemp=0であり、したがって、影響度Inf(j)も0である。よって、運転時間cTimeが閾値cTimeMax以上の場合、判定部118はステップS304を実行する。すなわち、運転時間cTimeが閾値cTimeMax以上の場合、判定部118は「影響度Inf(j)が0である」とアドバイス決定部119に通知する。
逆に、運転時間cTimeが閾値cTimeMax未満の場合、判定部118は、ステップS309を実行する。ただし、第3実施形態のステップS309では、上記のとおり、判定部118は、時間的要因に関わる値「Temp」の算出に、式(2)ではなく式(5)を用いる。
例えば、j=hndlの場合、判定部118は、ステップS309で式(1)と(5)にしたがって影響度Inf(j)(=Inf(hndl))を算出してもよい。また、j=posの場合、判定部118は、ステップS309で式(3)と(5)にしたがって影響度Inf(j)(=Inf(pos))を算出してもよい。あるいは、j=accの場合、判定部118は、ステップS309で式(4)と(5)にしたがって影響度Inf(j)(=Inf(acc))を算出してもよい。
続いて、第4実施形態について説明する。第4実施形態では、判定部118が式(2)の代わりに式(6)を使って影響度8を算出する。具体的には、第4実施形態では、図9のアドバイス決定処理のステップS308が以下に述べるように変形される。その他の点では、第4実施形態は第2実施形態と同様である。
式(6)中の「Intv」は、ドライバが他の車両の運転を終了してから、車両100の運転を開始するまでの間隔である。式(6)中の「IntvMax」は、間隔Intvに関して予め決められた正の閾値である。閾値IntvMaxは、例えば、予備実験に基づいて決められてもよい。閾値IntvMaxは、「ドライバがある車両の運転を終了してからどの程度長い時間が経過したら、当該ある車両の運転経験の影響が、無視して構わない程度にまで低下するのか」ということを示す。つまり、閾値IntvMaxは、「ドライバがある車両の運転を終了してからどの程度長い時間が経過したら、当該ある車両の特性に応じた運転感覚をドライバが忘れてしまうのか」ということを示す。
式(6)中の「CoefIntv」は係数である。係数CoefIntvは、第4実施形態では定数である。実施形態によっては、係数CoefIntv自体が、ある関数により表されてもよい。また、他の変数の値に応じて、いくつかの候補値の中から、判定部118が係数CoefIntvの値を選んでもよい。
式(1)と(6)により算出される影響度Inf(hndl)の大きさは、ハンドリング性能の差の大きさに対して単調増加し、かつ、間隔Intvの長さに対して単調減少する。また、式(3)と(6)により算出される影響度Inf(pos)の大きさは、車幅の差の大きさに対して単調増加し、かつ、間隔Intvの長さに対して単調減少する。そして、式(4)と(6)により算出される影響度Inf(acc)の大きさは、例えば、ウェイト・トゥ・パワー・レシオの差の大きさに対して単調増加し、かつ、間隔Intvに対して単調減少する。判定部118は、間隔Intvの長さに対して「Temp」の大きさが単調減少するように「Temp」を定義する他の式を、式(6)の代わりに用いてもよい。
さて、上記のとおり、第4実施形態では、第2実施形態の図9のアドバイス決定処理のステップS308が変形される。具体的には、第4実施形態で判定部118は、ステップS308の判定の代わりに以下の処理を行う。
判定部118は、運転履歴テーブル304−1〜304−Qのうち、運転履歴テーブル304−Qの運転履歴番号の次に大きな運転履歴番号を持つ運転履歴テーブルから、運転開始日時と運転時間を読み取る。そして、判定部118は運転開始日時に運転時間を足すことにより、ドライバが車両100の1台前に運転していた他の車両の運転を終了した運転終了日時を算出する。
また、判定部118は、運転履歴テーブル304−Q(すなわちドライバが現在運転中の車両100に関する運転履歴テーブル)から、運転開始日時を読み取る。判定部118は、こうして読み取った車両100の運転開始日時から、上記のように算出した運転終了日時を引くことで、式(6)中の間隔Intvを算出する。
そして、判定部118は、間隔Intvと閾値IntvMaxを比較する。間隔Intvが閾値IntvMax以上の場合、判定部118は、ステップS304を実行する。つまり、間隔Intvが閾値IntvMax以上の場合、判定部118は、「影響度Inf(j)が0である」とアドバイス決定部119に通知する。
逆に、間隔Intvが閾値IntvMax未満の場合、判定部118はステップS309を実行する。ただし、第4実施形態のステップS309では、上記のように、判定部118は、時間的要因に関わる値「Temp」の算出に、式(2)ではなく式(6)を用いる。
例えば、j=hndlの場合、判定部118は、ステップS309で式(1)と(6)にしたがって影響度Inf(j)(=Inf(hndl))を算出してもよい。また、j=posの場合、判定部118は、ステップS309で式(3)と(6)にしたがって影響度Inf(j)(=Inf(pos))を算出してもよい。あるいは、j=accの場合、判定部118は、ステップS309で式(4)と(6)にしたがって影響度Inf(j)(=Inf(acc))を算出してもよい。
なお、第4実施形態は、間隔Intvの定義に関して変形されてもよい。具体的には、間隔Intvは、ドライバが他の車両の運転を終了してから経過した時間であってもよい。
このように第4実施形態が変形される場合、判定部118は、運転履歴テーブル304−Q(すなわちドライバが現在運転中の車両100に関する運転履歴テーブル)から、運転開始日時だけでなく、運転時間も読み取る。そして、判定部118は、車両100の運転開始日時に車両100の運転時間を足す。
なお、このような加算により得られる時刻は、ほぼ現在時刻に等しい。よって、判定部118は、以上のような加算を行う代わりに、時計112から現在時刻を読み取ってもよい。
判定部118は、加算により得られた時刻(または時計112から読み取った時刻)から、ドライバが車両100の1台前に運転していた他の車両の運転を終了した運転終了日時を引く。この減算により、判定部118は間隔Intvを算出することができる。
続いて、第5実施形態について説明する。第5実施形態では、判定部118が式(2)の代わりに式(7)を使って影響度8を算出する。具体的には、第5実施形態では、図9のアドバイス決定処理のステップS308が以下に述べるように変形される。その他の点では、第5実施形態は第2実施形態と同様である。
式(7)中の「pTime」は、ドライバが直近の過去に他の車両を運転した際の運転時間を示す。式(7)中の「pTimeMax」は、運転時間pTimeに関して予め決められた正の閾値である。閾値pTimeMaxは、例えば、診断結果6の経時変化を観察するような予備実験に基づいて決められてもよい。閾値pTimeMaxは、「ドライバが未経験のある車両を運転しだしてから、当該ある車両の特性に応じてドライバの運転感覚が変化しだすまでに、一般的にはどのくらいの時間がかかると推定されるか」ということを示す。
ドライバがある車両を運転する場合、運転時間が長くなるほど、ドライバは当該ある車両に適応し、ドライバの運転感覚が当該ある車両の特性から影響を受ける程度も増す。しかし、短時間の運転では、ドライバの運転感覚はそれほど変化しない。よって、短時間の運転からドライバが受ける影響は無視してもかまわない。閾値pTimeMaxは、ドライバの運転感覚が受ける影響を無視してかまわない程度の、短い運転時間を表す。
式(7)中の「CoefPrevTime」は、正の係数である。係数CoefPrevTimeは、第5実施形態では定数である。実施形態によっては、係数CoefPrevTime自体が、ある関数により表されてもよい。また、他の変数の値に応じて、いくつかの候補値の中から、判定部118が係数CoefPrevTimeの値を選んでもよい。
式(1)と(7)により算出される影響度Inf(hndl)の大きさは、ハンドリング性能の差の大きさに対して単調増加し、かつ、運転時間pTimeの長さに対しても単調増加する。また、式(3)と(7)により算出される影響度Inf(pos)の大きさは、車幅の差の大きさに対して単調増加し、かつ、運転時間pTimeの長さに対しても単調増加する。そして、式(4)と(7)により算出される影響度Inf(acc)の大きさは、例えば、ウェイト・トゥ・パワー・レシオの差の大きさに対して単調増加し、かつ、運転時間pTimeの長さに対しても単調増加する。判定部118は、運転時間pTimeの長さに対して「Temp」の大きさが単調増加するように「Temp」を定義する他の式を、式(7)の代わりに用いてもよい。
さて、上記のとおり、第5実施形態では、第2実施形態の図9のアドバイス決定処理のステップS308が変形される。具体的には、第5実施形態で判定部118は、ステップS308の判定の代わりに以下の処理を行う。
判定部118は、運転履歴テーブル304−1〜304−Qのうち、運転履歴テーブル304−Qの運転履歴番号の次に大きな運転履歴番号を持つ運転履歴テーブルから、運転時間を読み取る。こうして読み取られた運転時間が、式(7)の運転時間pTimeとして使われる。
次に、判定部118は、運転時間pTimeが閾値pTimeMax以下であるか否かを判定する。
運転時間pTimeが閾値pTimeMax以下の場合、式(7)によればTemp=0であり、したがって、影響度Inf(j)も0である。よって、運転時間pTimeが閾値pTimeMax以下の場合、判定部118はステップS304を実行する。すなわち、運転時間pTimeが閾値pTimeMax以下の場合、判定部118は「影響度Inf(j)が0である」とアドバイス決定部119に通知する。
逆に、運転時間pTimeが閾値pTimeMaxより大きい場合、判定部118は、ステップS309を実行する。ただし、第5実施形態のステップS309では、上記のとおり、判定部118は、時間的要因に関わる値「Temp」の算出に、式(2)ではなく式(7)を用いる。
例えば、j=hndlの場合、判定部118は、ステップS309で式(1)と(7)にしたがって影響度Inf(j)(=Inf(hndl))を算出してもよい。また、j=posの場合、判定部118は、ステップS309で式(3)と(7)にしたがって影響度Inf(j)(=Inf(pos))を算出してもよい。あるいは、j=accの場合、判定部118は、ステップS309で式(4)と(7)にしたがって影響度Inf(j)(=Inf(acc))を算出してもよい。
続いて、第6実施形態について説明する。第6実施形態では、判定部118が式(2)の代わりに式(8)を使って影響度8を算出する。具体的には、第6実施形態では、図9のアドバイス決定処理のステップS308が以下に述べるように変形される。その他の点では、第6実施形態は第2実施形態と同様である。
式(8)中の「LgTime」は、ドライバが過去に運転した車両100以外の全車両の運転時間の中で最長の運転時間でもよい。または、「LgTime」は、ドライバが過去に運転した車両のうち、直近のL台以内の全車両の運転時間の中で最長の運転時間でもよい(ただしLは2以上の定数)。
式(8)中の「LgTimeMax」は、運転時間LgTimeに関して予め決められた正の閾値である。閾値LgTimeは、例えば、診断結果6の経時変化を観察するような予備実験に基づいて決められてもよい。閾値LgTimeMaxは、「ドライバが未経験のある車両を運転しだしてから、当該ある車両の特性に適応した運転感覚がドライバに定着するまでに、一般的にはどれほどの時間がかかると推定されるか」ということを示す。
ドライバがある車両を運転する場合、運転時間が長くなるほど、ドライバは当該ある車両に適応し、ドライバの運転感覚が当該ある車両の特性に影響を受ける程度も増す。そして、かなりの長時間にわたってある車両を運転したドライバには、当該ある車両の特性に適応した運転感覚が、ある程度強固に定着するものと想定される。そして、定着した運転感覚は、その後ドライバが他の車両を運転しても、あまりすぐには変化しないと想定される。閾値LgTimeMaxは、以上のように、ある車両の特性に適応した運転感覚がドライバに定着してしまうほどの、長い運転時間を表す。
式(8)中の「CoefLgTime」は、正の係数である。係数CoefLgTimeは、第6実施形態では定数である。実施形態によっては、係数CoefLgTime自体が、ある関数により表されてもよい。また、他の変数の値に応じて、いくつかの候補値の中から、判定部118が係数CoefLgTimeの値を選んでもよい。例えば、係数CoefLgTimeは、ドライバが過去に運転時間LgTimeに渡って運転した車両を運転し終えてから経過した時間の長さに対して単調減少するように定義された、正の可変の係数であってもよい。
式(1)と(8)により算出される影響度Inf(hndl)の大きさは、ハンドリング性能の差の大きさに対して単調増加し、かつ、運転時間LgTimeの長さに対しても単調増加する。また、式(3)と(8)により算出される影響度Inf(pos)の大きさは、車幅の差の大きさに対して単調増加し、かつ、運転時間LgTimeの長さに対しても単調増加する。そして、式(4)と(8)により算出される影響度Inf(acc)の大きさは、例えば、ウェイト・トゥ・パワー・レシオの差の大きさに対して単調増加し、かつ、運転時間LgTimeの長さに対しても単調増加する。判定部118は、運転時間LgTimeの長さに対して「Temp」の大きさが単調増加するように「Temp」を定義する他の式を、式(8)の代わりに用いてもよい。
さて、上記のとおり、第6実施形態では、第2実施形態の図9のアドバイス決定処理のステップS308が変形される。具体的には、第6実施形態で判定部118は、ステップS308の判定の代わりに以下の処理を行う。
判定部118は、運転履歴テーブル304−1〜304−(Q−1)の運転時間のうちの最大値を読み取る。あるいは、判定部118は、運転履歴テーブル304−1〜304−(Q−1)のうち、運転履歴番号が大きい方から最大でL枚の運転履歴テーブルの中での、運転時間の最大値を読み取る。こうして読み取られた運転時間が、式(8)の運転時間LgTimeとして使われる。
次に、判定部118は、運転時間LgTimeが閾値LgTimeMax以下であるか否かを判定する。
運転時間LgTimeが閾値LgTimeMax以下の場合、式(8)によればTemp=0であり、したがって、影響度Inf(j)も0である。よって、運転時間LgTimeが閾値LgTimeMax以下の場合、判定部118はステップS304を実行する。すなわち、運転時間LgTimeが閾値LgTimeMax以下の場合、判定部118は「影響度Inf(j)が0である」とアドバイス決定部119に通知する。
逆に、運転時間LgTimeが閾値LgTimeMaxより大きい場合、判定部118は、ステップS309を実行する。ただし、第6実施形態のステップS309では、上記のとおり、判定部118は、時間的要因に関わる値「Temp」の算出に、式(2)ではなく式(8)を用いる。
例えば、j=hndlの場合、判定部118は、ステップS309で式(1)と(8)にしたがって影響度Inf(j)(=Inf(hndl))を算出してもよい。また、j=posの場合、判定部118は、ステップS309で式(3)と(8)にしたがって影響度Inf(j)(=Inf(pos))を算出してもよい。あるいは、j=accの場合、判定部118は、ステップS309で式(4)と(8)にしたがって影響度Inf(j)(=Inf(acc))を算出してもよい。
ところで、上記のとおり、種々の係数は、定数であってもよいし、関数により表されてもよい。また、係数の複数の候補値が、例えば、図10に例示するような係数テーブルに記憶されてもよい。判定部118は、パラメタの値の組み合わせ(例えば、ハンドリング性能と乗り換え回数の組み合わせ)に応じて、係数テーブルから適宜の係数値を読み出し、その読み出した係数値を使って影響度8を算出してもよい。
図10には、具体的には、式(1)中の係数CoefHndlのための係数テーブル401と、式(2)中の係数CoefCntのための係数テーブル402が例示されている。係数テーブル401や402は、判定部118からアクセス可能な記憶装置(例えばRAM202または不揮発性記憶装置203)に記憶される。
係数テーブル401は、係数CoefHndlの値の候補を(H×C)個、マトリクス形式で保持するテーブルである。説明の便宜上、ハンドリング性能を示す値として想定される最小値と最大値を、それぞれ「HperformMin」と「HperformMax」とする。
係数テーブル401では、ハンドリング性能の差(curHperform−prevHperform)として、H個の値がサンプリングされている(1<H)。H個の値の最小値は(HperformMin−HperformMax)という負の値であり、H個の値の最大値は(HperformMax−HperformMin)という正の値である。
また、係数テーブル401では、乗り換え回数Cntとして、CntFewからCntManyまでのC個の値がサンプリングされている(1<C)。例えば、CntFew=0かつCntMany=6の場合、C=7でもよいし、1<C<7でもよい。
係数テーブル401では、ハンドリング性能の差と乗り換え回数の(H×C)通りの組み合わせの各々に対して、係数CoefHndlの候補値cHndl(c,h)が記憶されている(1≦c≦Cかつ1≦h≦H)。
係数テーブル402は、係数CoefCntの値の候補を(H×C)個、マトリクス形式で保持するテーブルである。係数テーブル402でも、係数テーブル401と同様に、ハンドリング性能の差と乗り換え回数の(H×C)通りの組み合わせの各々に対して、係数CoefCntの値の候補値cCnt(c,h)が記憶されている(1≦c≦Cかつ1≦h≦H)。
例えば、第2実施形態ではアドバイス決定処理が図9のフローチャートにしたがって行われるが、第2実施形態が、係数テーブル401と402を使うように変形されてもよい。この場合、判定部118は、以下の2つの値の組み合わせに対応する候補値cHndl(c,h)を、係数CoefHndlの値としてステップS309で係数テーブル401から読み取ってもよい。同様に、判定部118は、以下の2つの値の組み合わせに対応する候補値cCnt(c,h)を、係数CoefCntの値としてステップS309で係数テーブル402から読み取ってもよい。
・ステップS305で読み取った車両IDを有する車両テーブルに記憶されているハンドリング性能の値curHperformと、ステップS306で読み取った車両IDを有する車両テーブルに記憶されているハンドリング性能の値prevHperformの差。
・ステップS302で読み取った乗り換え回数Cnt。
そして、判定部118は、読み取った値cHndl(c,h)とcCnt(c,h)を用いて、式(1)と(2)にしたがって、ステップS309で影響度Inf(j)を算出してもよい。なお、判定部118は、係数テーブル401中の2つ以上の候補値を使った補間(例えば線形補間)により、係数CoefHndlの値を定めてもよい。同様に、判定部118は、係数テーブル402中の2つ以上の候補値を使った補間(例えば線形補間)により、係数CoefCntの値を定めてもよい。
なお、係数CoefHndlとCoefCnt以外の係数についても、類似の係数テーブルが使われてもよい。つまり、2台の車両間の仕様の差と、時間的要因を示す値との複数の組み合わせの各々に対して、候補値を保持するような係数テーブルが、他の係数についても使われてもよい。
また、あるパラメタ(例えばCnt)の値に対する影響度8の変化の仕方を調整するために、係数自体が、当該パラメタを引数とする適宜の関数により定義されていてもよい。同様に、2つ以上のパラメタから計算される値(例えば(curHperform−prevHperform))に対する影響度8の変化の仕方を調整するために、係数自体が、当該値を引数とする適宜の関数により定義されていてもよい。例えば、パラメタ(または2つ以上のパラメタから計算される値)に対して、影響度8が線形に変化するように調整するために、適宜の関数が選ばれてもよい。
ところで、式(1)と(3)と(4)は、変数Tempの乗算を含むが、実施形態によっては、乗算の代わりに加算が行われてもよい。例えば、式(9)が使われてもよい。
なお、式(9)中の「Temp」は、式(2)、(5)〜(8)のいずれにより算出されるものであってもよい。ただし、式(9)中の「Temp」の定義のために使われる場合、式(2)、(5)〜(8)中の各係数の値は、正とは限らず、負であってもよい。
式(9)における加算は、「以下の2つの事柄が独立に評価される」ということを示す。
・車両間の仕様の差が診断結果6に与える影響が正か負か、ということ。
・時間的要因が診断結果6に与える影響が正か負か、ということ。
よって、式(9)が使われる実施形態においては、時間的要因が診断結果6に与える影響が負ならば、式(2)、(5)〜(8)中の各係数の値は負である。
また、式(9)における「Diff(j)」は、j番目の診断項目の診断結果6に影響を与える仕様を示す値の車両間での差に、係数を掛けることで得られる値である。以下に「Diff(j)」の3つの例を挙げる。
Diff(hndl)=(curHperform - prevHperform)×CoefHndl (10)
Diff(pos)=(curCW - prevCW)×CoefPos (11)
Diff(acc)=(curWeight/curPperform -
prevWeight/prevPperform)×CoefAcc (12)
式(10)〜(12)の右辺に現れる各記号の意味は、式(1)、(3)、および(4)と同様である。
式(9)〜(12)が使われる実施形態では、車両間の仕様の差から影響度8への寄与の大きさと、時間的要因から影響度8への寄与の大きさに応じて、係数の絶対値が適宜決められることが好ましい。
例えば、ある診断項目に関する影響度8にとっては、車両間の仕様の差が支配的で、時間的要因による影響度8の変動が小さいかもしれない。この場合、「Diff(j)」の算出に使う係数の絶対値の方を、「Temp」の算出に使う係数の絶対値より大きく定めることが好ましい。
逆に、別のある診断項目に関する影響度8にとっては、時間的要因が支配的かもしれない。この場合、「Diff(j)」の算出に使う係数の絶対値の方を、「Temp」の算出に使う係数の絶対値より小さく定めることが好ましい。
なお、上記のとおり、アドバイステーブル306−jは診断項目ごとに設けられる。よって、影響度8が取り得る値の範囲を、診断項目間で正規化する必要はない。よって、各係数の絶対値は任意に決められてもよい。
続いて、第7実施形態について説明する。第7実施形態では、アドバイステーブルの形式が変形される。図11は、第7実施形態でのアドバイステーブルの例を示す図である。第2〜第6実施形態のいずれも、図11に例示するような、過去の診断結果のフィールドを含むアドバイステーブルを使うように変形されてよい。以下では説明の便宜上、第7実施形態について、第2実施形態が変形された実施形態として説明する。
図6と11を比較すると分かるように、図11のアドバイステーブル307−jには、過去の診断結果のフィールドが追加されている。つまり、アドバイステーブル307−jでは、各アドバイスが以下の3つの値の組み合わせに対応づけられている。
・j番目の診断項目についての今回の診断結果Res(j)。
・j番目の診断項目についての影響度Inf(j)。
・j番目の診断項目についての過去の診断結果(以下「Prev(j)」と表記する)。
なお、今回の診断結果Res(j)と、影響度Inf(j)と、過去の診断結果Prev(j)との組み合わせは、具体的には、以下のような値の集合の組み合わせにより表されてもよい。
・今回の診断結果Res(j)を示す値の集合(例えば値の範囲)。
・影響度Inf(j)を示す値の集合(例えば値の範囲)。
・過去の診断結果Prev(j)を示す値の集合(例えば値の範囲)。
また、現在および過去の診断結果6の値をそれぞれいくつの範囲に分類するかは、診断項目に応じて任意に決められてよい。同様に、影響度8の値をいくつの範囲に分類するかは、診断項目に応じて任意に決められてよい。また、範囲同士の境界の値も、診断項目に応じて任意に決められてよい。
現在運転中の車両100の1台前にドライバが運転していた他の車両(以下では「以前の車両」ともいう)に関して、「以前の車両」に搭載されている運転診断装置110の診断部115が下した診断の結果が、「過去の診断結果」として使われてもよい。なお、「以前の車両」の運転に関して、診断部115が2回以上診断を下した場合は、2個以上の診断結果6を代表する統計値が、「過去の診断結果」として使われる。
診断項目ごとの診断方法に応じて、診断結果6を代表するのにふさわしい統計値の種類は異なり得る。例えば、平均値、最頻値、最大値、または最小値などの統計値のうち、診断項目に応じてふさわしい種類の統計値が使われることが好ましい。なお、図5の運転履歴テーブルの中に例示されている、3個の診断項目それぞれについての過去の診断結果のフィールドには、例えば以上のような適宜の統計値が記憶されている。統計値は、具体的には、図8のステップS206に関して既に説明したとおり、履歴管理部116により算出される。
以上のように定義される「過去の診断結果」がアドバイステーブル307−jで使われる場合、車両100に搭載されている運転診断装置110の判定部118は、影響度Inf(j)だけでなく過去の診断結果Prev(j)も、アドバイス決定部119に通知する。具体的には、判定部118は以下のように動作する。
判定部118は、ステップS303で乗り換え回数Cntが0回であると判定した場合には、ステップS304で、「影響度Inf(j)が0であり、かつ、過去の診断結果Prev(j)が未定義である」とアドバイス決定部119に通知する。
逆に、乗り換え回数Cntが1回以上の場合は、判定部118は、例えばステップS306で、運転履歴テーブル304−(Q−1)から、車両IDだけでなく、j番目の診断項目に関する過去の診断結果を読み取る。そして、判定部118は、ステップS304またはS309で、影響度Inf(j)をアドバイス決定部119に通知する際に、一緒に過去の診断結果もアドバイス決定部119に通知する。
すると、ステップS310でアドバイス決定部119は、以下の3つの値の組み合わせに対応づけられているアドバイスを、アドバイステーブル307−jから読み出す。
・図8のステップS204で診断部115から通知された、今回の診断結果Res(j)。
・図9のステップS304またはS309で判定部118から通知された、影響度Inf(j)。
・図9のステップS304またはS309で判定部118から通知された、過去の診断結果Prev(j)。
ステップS310でアドバイス決定部119はさらに、読み出したアドバイスを出力制御部121に出力する。
ところで、説明の簡単化のため、図7のステップS105に関する上記の説明では省略したが、ステップS105において履歴管理部116は、過去の運転履歴に関する運転履歴テーブルの取得に失敗する可能性もある。例えば、状況によっては、車両100とサーバ230の間の通信が失敗する可能性がある。また、まれに、記憶媒体240上の一部または全部のデータが、何らかの理由により読み取り不能になってしまう可能性もある。
よって、たとえ実際にはドライバが過去に他の車両を1台以上運転したことがあるとしても、履歴管理部116が外部装置130(具体的にはサーバ230または記憶媒体240)から、過去の運転履歴に関する運転履歴テーブルを成功裡に取得できるとは限らない。また、たとえ過去の運転履歴に関する運転履歴テーブルが履歴管理部116により取得されたとしても、取得された運転履歴テーブルの中の過去の診断結果のデータが、何らかの理由により無効である(例えば、壊れている、または、空である)可能性もある。
よって、図11のような形式のアドバイステーブルが使われる場合、過去の診断結果が未定義の場合についても、アドバイスが定められていてもよい。
履歴管理部116は、例えば、ステップS105でサーバ230との間の通信に失敗した場合には、サーバ230との間の通信を再度試みてもよい。しかし、履歴管理部116が1回または複数回のリトライの結果として通信に成功する前に、ステップS110の運転診断処理とステップS112のアドバイス決定処理が行われる可能性もある。つまり、たとえ1回以上のリトライが行われたとしても、必ずしも、アドバイス決定処理において過去の診断結果のデータが利用可能であるとは限らない。
なお、「過去の診断結果」の上記定義によれば、例えば以下のような場合に、過去の診断結果が未定義である。
・ドライバは、運転診断装置110の搭載された他の車両を過去に運転したことがない。そのため、履歴記憶部117には過去の診断結果のデータが存在せず、乗り換え回数Cntは0回に設定されている。
・ドライバは過去に他の車両を1台以上運転したことがある。つまり、実際の乗り換え回数は1回以上である。しかし、ステップS105で履歴管理部116が、何らかの理由(例えば、サーバ230との間の通信が不能であるなどの理由)により、過去の運転履歴に関する運転履歴テーブルの取得に失敗した。そのため、履歴記憶部117には過去の診断結果のデータが存在せず、乗り換え回数Cntは0回に設定されている。
・ステップS105で1つ以上の運転履歴テーブルが取得され、乗り換え回数Cntが正の値に設定された。しかし、何らかの理由により、取得された運転履歴テーブル中の過去の診断結果のデータが、無効である。
上記3つの場合のうち、3番目の場合はまれである。よって、「過去の診断結果が未定義である」という可能性は、1番目と2番目の場合のように乗り換え回数Cntが0回の場合についてのみ、考慮されてもよい。具体的には以下のとおりである。
図9のフローチャートによれば、乗り換え回数Cntが0回の場合には、影響度Inf(j)が0である。よって、図11のアドバイステーブル307−jでは、「未定義」という過去の診断結果は、影響度Inf(j)が0の場合とだけ、組み合わせられている。つまり、サーバ230と運転診断装置110との間が通信不能な場合などには、実質的には現時点の診断結果のみに基づく一般的なアドバイス(すなわち、過去の診断結果が未定義である場合のアドバイス)が、ドライバに対して提示されてもよい。
実施形態によっては、「未定義」という過去の診断結果が、影響度Inf(j)が0以外の場合とも組み合わせられていてもよい。例えば、上記の3番目の場合が考慮に入れられる場合、乗り換え回数Cntが1回以上と設定されているので、影響度Inf(j)として0以外の値が得られる可能性がある(図9を参照)。よって、アドバイステーブルにおいて、各診断結果Res(j)と影響度Inf(j)の各範囲との各組み合わせに対して、過去の診断結果が未定義の場合に対応するアドバイスが定義されていてもよい。
また、第7実施形態は以下のように変形されてもよい。例えば、ドライバが過去に運転した車両のうち、直近のL台以内の各車両に関して下された診断結果6を代表する適宜の統計値が、アドバイステーブル307−jにおける「過去の診断結果」として使われてもよい(1<L)。最大でL個の診断結果6を代表する統計値の種類(例えば、平均値、最頻値、最大値、最小値など)は、診断項目に応じて予め決められる。
例えば、L=3の場合、判定部118は、具体的には以下のようにして過去の診断結果をアドバイス決定部119に通知してもよい。
乗り換え回数Cntが3回以上の場合、ドライバが過去に運転した車両のうち、直近の3台の各車両についての診断結果6を、判定部118が運転履歴テーブル304−(Q−3)〜304−(Q−1)から読み出す。そして、判定部118は、読み出した3つの値から統計値を算出し、算出した値を「過去の診断結果」としてアドバイス決定部119に通知する。
乗り換え回数Cntが2回の場合、ドライバが過去に運転した2台の車両それぞれについての診断結果6を、判定部118が運転履歴テーブル304−(Q−2)〜304−(Q−1)から(つまり運転履歴テーブル304−1〜304−2から)読み出す。そして、判定部118は、読み出した2つの値から統計値を算出し、算出した値を「過去の診断結果」としてアドバイス決定部119に通知する。
乗り換え回数Cntが1回の場合、ドライバが過去に運転した1台の車両についての診断結果6を、判定部118が運転履歴テーブル304−(Q−1)から(つまり運転履歴テーブル304−1から)読み出す。そして、判定部118は、読み出した値を「過去の診断結果」としてアドバイス決定部119に通知する。
乗り換え回数Cntが0回の場合、判定部118は、「過去の診断結果が未定義である」とアドバイス決定部119に通知する。
アドバイス決定部119は、1<Lの場合にも、単に判定部118からの通知にしたがってアドバイステーブル307−jをルックアップするだけである。つまり、アドバイス決定部119は、以下の3つの値の組み合わせに対応づけられているアドバイスを、アドバイステーブル307−jから読み出す。
・診断部115から通知された今回の診断結果Res(j)。
・判定部118から通知された影響度Inf(j)。
・判定部118から通知された過去の診断結果Prev(j)。
なお、本発明は上記の第1〜第7実施形態に限られるものではない。上記の説明においても、変形したいくつかの実施形態について説明したが、さらに、以下のように様々に変形した実施形態も可能である。上記および下記の実施形態は、相互に矛盾しない限り、任意に組み合わせることが可能である。
例えば図9のステップS308では、乗り換え回数Cntが閾値CntMax以上か否かが判定される。この判定は、式(2)における「CntMax≦Cnt」という範囲についての定義が適用されるか否かについての判定である。しかし、実施形態によっては、式(2)における3つの範囲が「Cnt=0」、「0<Cnt≦CntMax」、および「CntMax<Cnt」と定義されていてもよい。この場合、ステップS308では、乗り換え回数Cntが閾値CntMaxより大きいか否かが判定される。
また、図6および11に示すアドバイステーブルでは、影響度Inf(j)の範囲が、例えば「m(j)≦Inf(j)<n(j)」のように不等号を用いて表されている。しかし、実施形態によっては、例えば、「m(j)<Inf(j)≦n(j)」のような範囲が採用されてもよいことは無論である。
図5、6、10、11にはテーブル形式の情報が例示されている。しかし、実施形態によっては、テーブル形式以外のデータ形式が採用されてよい。
また、第2実施形態では、図4の車両テーブル302が予め車両情報記憶部114に記憶されている。しかし、車両テーブル302のデータが、記憶媒体から読み取られて車両情報記憶部114に記憶されてもよい。例えば、車両テーブル302のデータは、外部装置130としての記憶媒体240に記憶されていてもよいし、記憶媒体240とは別の記憶媒体(例えば車両100用のキーとして使われるスマートカード内の不揮発性記憶領域)に記憶されていてもよい。
ところで、説明の便宜上、図5には、種々の履歴情報7のうち、第2実施形態では使われない履歴情報7を示すフィールドも例示されている。例えば、運転履歴テーブル中の、運転時間のフィールドと、運転開始日時のフィールドと、3つの診断項目それぞれについての過去の診断結果のフィールドは、第2実施形態では使われない。影響度8の算出にもアドバイスの決定にも使われない履歴情報7のフィールドは、実施形態に応じて省略されてもよい。
また、車両テーブル303−1〜303−Pと運転履歴テーブル304−1〜304−(Q−1)のうち、影響度8の算出にもアドバイスの決定にも使われない古いテーブルは、省略されてもよい。
例えば、あるドライバの乗り換え回数が5回だとする。影響度8の算出には直近の過去の1台の車両の運転に関する履歴情報7のみが使われる実施形態では、過去にドライバが運転したその他の4台の車両に関する車両テーブルや運転履歴テーブルのデータは使われない。よって、このような実施形態(具体的には、例えば、第2〜第5実施形態)では、履歴記憶部117は、古いテーブルを記憶する必要がない。そこで、このような実施形態では、例えば、図7のステップS116で履歴管理部116が、外部装置130から古いテーブルを削除してもよい。
実施形態によっては、逆に、ドライバが過去に運転した2台以上の車両についての履歴情報7が影響度8の算出に使われてもよい。例えば、式(7)ではドライバが直近の過去に運転した他の1台の車両についての運転時間pTimeが使われる。しかし、実施形態によっては、車両100より前に他の2台以上の車両を運転したことのあるドライバに関しては、それらの他の車両のうちドライバが直近の過去に運転した2台の車両それぞれの運転時間に基づいて、判定部118が影響度8を算出してもよい。
判定部118は、以下の2つの影響を同等に評価してもよい。しかし、判定部118は、前者の影響の方を後者の影響より大きく評価して、最終的な影響度8を算出することが好ましい
・直近の過去にドライバが運転した車両の運転履歴からの、運転時間1時間あたりの影響。
・直近から2台目の過去にドライバが運転した車両の運転履歴からの、運転時間1時間あたり影響。
また、判定部118が過去の2台以上の車両についての履歴情報7を考慮する場合、ステップS307の判定は、以下のように変形されてもよい。すなわち、ドライバが直近の過去に運転した最大でL台の車両(1<L)の車両IDのすべてが、ステップS305で読み取った車両IDと等しいときに、判定部118は、ステップS307の次にステップS304を実行してもよい。逆に、ドライバが直近の過去に運転した最大でL台の車両の車両IDの中に、少なくとも1つ、ステップS305で読み取った車両IDとは違う車両IDが見つかれば、判定部118は、ステップS307の次にステップS308を実行してもよい。
ところで、第2実施形態では、統計テーブル305に記憶された乗り換え回数CntがステップS303、S308、およびS309で使われる。ドライバが同じ車両を2回以上運転したことがある場合は、乗り換え回数Cntには、同じ車両が重複して数えられる。
しかし、実施形態によっては、同一車両の重複を除いてドライバが運転したことのある車両の数(つまり図5における車両テーブル303−1〜303−Pの数である「P」)を示す台数情報が、さらに統計テーブル305に記憶されていてもよい。つまり、ステップS116で履歴管理部116は、Pという値を示す台数情報も統計テーブル305に書き込んでもよい。
このような台数情報が使われる場合、図9のフローチャートは以下のように変形される。
判定部118は、ステップS303の判定には乗り換え回数Cntを用いる。一方、ステップS308とS309では、判定部118は、台数情報を用いる。具体的には、判定部118は、式(2)の代わりに式(13)にしたがって、変数Tempの値を算出してもよい。
式(13)中の閾値PMaxは、同一車両の重複を除いてドライバが運転したことのある車両の数(すなわちP)に関する閾値である。また、式(13)中の係数CoefPは、式(2)中の係数CoefCntと類似の係数である。
台数情報を使う実施形態においては、判定部118は、台数Pが閾値PMax以上か否かをステップS308で判定する。そして、台数Pが閾値PMax以上なら、判定部118はステップS304を実行する。逆に、台数Pが閾値PMax未満なら、判定部118はステップS309を実行する。ステップS309で判定部118は、式(13)にしたがって変数Tempを算出し、変数Tempを使って影響度Inf(j)を算出し、影響度Inf(j)をアドバイス決定部119に通知する。
式(1)と(13)により定義される影響度Inf(hndl)、式(3)と(13)により定義される影響度Inf(pos)、および、式(4)と(13)により定義される影響度Inf(acc)は、以下の点で共通である。
・台数Pが1の場合、判定部118は、ステップS304で影響度Inf(j)を0と判定する。
・台数Pが1より大きい場合、式(13)から明らかなように、判定部118は、台数Pに対して影響度Inf(j)の大きさが単調減少するように、(ステップS304またはステップS309で)影響度Inf(j)を判定する。
なお、たとえ以上のような台数情報が明示的には使われないとしても、図9のフローチャートによれば、P=1の場合には、ステップS304で影響度Inf(j)が0と判定されることに注意されたい。なぜなら、P=1の場合には、「乗り換え回数Cntが0である」とステップS303で確認されるか、または、「2つの車両IDが等しい」とステップS307で確認されるからである。
ところで、上記の種々の実施形態について説明したように、判定部118は影響度8の判定のために、1つ以上の閾値および/または1つ以上の係数を使ってもよい。実施形態によっては、判定部118は、係数を含まない式に基づいて影響度8を算出してもよい。判定部118は、閾値を含まない式に基づいて影響度8を算出してもよい。
判定部118が使う閾値および/または係数は、例えば、判定部118を実現するためのプログラム内に定数として定義されていてもよい。あるいは、不揮発性記憶装置203に記憶される所定の設定ファイルに、予め、閾値および/または係数が書き込まれていてもよく、判定部118が設定ファイルから閾値および/または係数を読み出してもよい。
閾値および/または係数は、例えば、記憶媒体240に記憶されて提供され、リーダ/ライタ208を介して読み取られ、上記の所定の設定ファイルにコピーされてもよい。また、運転診断装置110の管理者によって、入力装置を介して(または、ネットワーク220とWLANインタフェイス207を介して)、設定ファイル内の閾値および/または係数が書き換えられてもよい。入力装置として、例えば、コンピュータ200が不図示のキーボードを有していてもよい。あるいは、ディスプレイ104がタッチスクリーンであってもよい。
なお、閾値および/または係数が、ネットワーク220とWLANインタフェイス207を介して更新されるような実施形態の中には、サーバ230が閾値および/または係数の学習を行う実施形態もある。
具体的には、車両100の走行中に車両情報記憶部114に蓄積される車両情報5と、車両100の走行中に診断部115から得られる診断結果6が、ネットワーク220を介してサーバ230に送信されてもよい。例えば、履歴管理部116が、定期的に車両情報5と診断結果6をサーバ230に送信してもよい。より具体的には、履歴管理部116は、例えば3分に1回、直近の3分間に車両情報取得部111により取得された車両情報5と、直近の3分間に診断部115から得られた診断結果6を、サーバ230に送信してもよい。あるいは、履歴管理部116は、図7のステップS116において、車両100の走行中に得られた車両情報5と診断結果6をまとめてサーバ230に送信してもよい。
また、履歴管理部116は、車両100自体についての車両テーブル302も、サーバ230に送信する。もちろん、履歴管理部116は、第2実施形態に関して説明したように、履歴情報7もサーバ230に送信する。
サーバ230は、複数の車両にそれぞれ搭載された運転診断装置110から、上記のようにして車両情報5と診断結果6と履歴情報7を受信する。サーバ230は、こうして複数の車両の運転診断装置110から収集したデータに基づいて、閾値および/または係数の値を決定してもよい。時間の経過とともに、サーバ230に蓄積されるデータは増える。
サーバ230は、各運転診断装置110から収集したデータに基づいて、定期的に(または不定期に)、閾値および/または係数の値を決定しなおす。例えば、サーバ230が、車両間の仕様の差の診断結果6に対する影響と、ドライバの運転経験の診断結果6に対する影響を独立に調べてもよい。サーバ230は、車両間の仕様の差の診断結果6に対する影響と、ドライバの運転経験の診断結果6に対する影響の相関を調べてもよい。サーバ230は、最小2乗法などの適宜の関数当てはめアルゴリズムにしたがって、閾値および/または係数の値を決定してもよい。
サーバ230は、決定しなおした閾値および/または係数を、ネットワーク220を介して各運転診断装置110に送信する。すると、各運転診断装置110は、WLANインタフェイス207を介して新しい閾値および/または係数を受信し、受信した値を設定ファイルに書き込む。
以上のようにして、閾値および/または係数の更新が繰り返される。すると、時間が経過するにつれて、より適切な閾値および/または係数が運転診断装置110に学習される。よって、学習の結果として、ドライバに提示されるアドバイスの適切さが、時間の経過につれて向上する。
また、学習効果があるので、詳細な予備実験を省略することができる。例えば、運転診断装置110の開発者が大雑把に見積もった値が閾値および/または係数の初期値として使われたとしても、大きな問題はない。
さらに、予備実験では所定のテストコースだけが使われたり、ドライビング・シミュレータが使われたりするが、上記のようなサーバ230による学習は、実データに基づく。よって、上記のように学習される閾値および/または係数は、予備実験から得られる閾値および/または係数よりもさらに適切である、と期待される。
ところで、図7のフローチャートも、実施形態に応じて適宜変形されてよい。
例えば、ステップS113がステップS110に先行してもよい。つまり、ステップS109でj≦Nと判定されたら、次に、出力制御部121がステップS113の判定を行ってもよい。
そして、出力制御部121が「ドライバに対してアドバイスを提示することが可能」と判定した場合にのみ、次に診断部115がステップS110の運転診断処理を実行してもよい。この場合、次にステップS111が実行される。そして、ステップS111で「診断成功」と判定されたら、続いて、ステップS112とS114が実行される。
また、図7のフローチャートでは、診断部115がN個の診断項目について順番に運転診断処理を実行する。しかし、実施形態によっては、イベント駆動型(event-driven)の手続が採用されてもよい。
例えば、j番目の診断項目の診断のための前提条件が成立したときに、前提条件の成立をトリガとして、出力制御部121がステップS113の判定を行ってもよい。そして、出力制御部121が「ドライバに対してアドバイスを提示することが可能」と判定したら、診断部115がj番目の診断項目についてステップS110の運転診断処理を実行してもよい。
この場合、次にステップS111が実行される。そして、ステップS111で「診断成功」と判定されたら、続いて、ステップS112とS114が実行される。
なお、車両情報管理部113が、車両情報取得部111から出力される車両情報5を監視することにより、各診断項目について、「診断のための前提条件が成立した」というイベントが発生したか否かを検出してもよい。診断項目によっては、車両情報管理部113が、時間の経過を監視することにより、「診断のための前提条件が成立した」というイベントが発生したか否かを検出してもよい。
また、実施形態によっては、アドバイステーブルに記憶される複数のアドバイスのうちの少なくとも1つが、空であってもよい。例えば、ある診断項目に関して、影響度8の大きさが0(または0に近い値)であり、かつ、診断結果6が高い評価を示している場合があり得る。このような場合、アドバイスを提示しなくても、既にドライバは上手に車両100を運転することができており、しかも、他の車両の運転経験からの影響に関しても、ドライバが考慮することが望ましいような注意点は特にない。
よって、このような場合は、運転診断装置110は、アドバイスを提示してドライバを煩わせるよりも、むしろ、アドバイスの提示を省略する方が好ましい。したがって、アドバイスの提示を省略した方が好ましいような、診断結果6と影響度8の特定の組み合わせには、空のアドバイスが対応づけられていてもよい。出力制御部121は、アドバイス決定部119から通知されたアドバイスが空の場合は、アドバイスの出力を省略する。
以上、様々な実施形態について説明したが、いずれの実施形態も、「ドライバの運転履歴を考慮に入れた適切なアドバイスが選ばれる」という利点を有する。すなわち、いずれの実施形態も、パーソナライズされたアドバイスが提示されるので、ドライバの運転を支援するうえで有益である。
例えば、第1と第2のドライバがそれぞれ第1と第2の車両を運転するものとする。この場合、たまたま、2人のドライバに対して同じ診断結果6が得られる可能性がある。しかし、上記の各種実施形態によれば、第1と第2のドライバの運転履歴の違いに応じて、第1と第2のドライバに対して異なるアドバイスを提示することが可能である。
また、第1のドライバが、その後、第3の車両を運転する場合があり得る。そして、第1のドライバが第1の車両を運転していた第1の時点で得られた診断結果6と、第1のドライバが第3の車両を運転している第2の時点で得られた診断結果6が、たまたま同じである可能性もある。しかし、上記の各種実施形態によれば、第1のドライバの運転履歴の蓄積に応じて、第1の時点と第2の時点では異なるアドバイスをドライバに提示することも可能である。
また、いずれの実施形態でも、単に「診断結果6に対して運転履歴の影響があるかないか」が2値的に判定されるのでなく、影響の度合いが判定される。よって、個々のドライバにとって適切なアドバイスを、きめ細かに選ぶことが可能となる。
以上のとおり、上記の各種実施形態によれば、ドライバにとって不適切だったり間違っていたり不要だったりするアドバイスの出力が抑制され、より適切なアドバイスがドライバに提示される。不適切なアドバイスの出力を抑制することには、ドライバに不適切な運転を促してしまうリスクを減らせる効果があるだけでなく、「変なアドバイスが出力されるから煩わしい」という感覚をドライバに与えずに済む、という効果もある。
最後に、上記の種々の実施形態に関して、さらに下記の付記を開示する。
(付記1)
ドライバがある車両を運転している間の、前記ある車両の挙動と前記ドライバの操作の少なくとも一方を示す車両情報に基づいて、前記ドライバの運転について診断を下す診断手段と、
前記ある車両を含む互いに異なる1台以上の車両を、前記ドライバが今までに運転してきた履歴に関する履歴情報に基づいて、前記ある車両を前記ドライバが運転しだす前の前記ドライバの運転経験が前記診断に与える影響の度合いを判定する判定手段と、
各々が、診断の結果と影響の度合いの組み合わせに対応づけられている複数のアドバイスを記憶する記憶手段と、
前記診断手段により下された前記診断の結果と、前記判定手段により判定された前記影響の度合いとの組み合わせに対応づけられて前記記憶手段に記憶されているアドバイスを、前記ドライバに対して提示することに決定する決定手段
を備えることを特徴とする運転診断装置。
(付記2)
前記判定手段は、前記ドライバが前記ある車両に適応している度合いに影響を与える時間的要因を表す値を、前記履歴情報から抽出または計算し、前記値を用いて、前記影響の度合いを判定する
ことを特徴とする付記1に記載の運転診断装置。
(付記3)
前記履歴情報は、前記ある車両を前記ドライバが運転し始めた時刻を示す開始時刻情報を少なくとも含み、
前記判定手段は、前記開始時刻情報が示す前記時刻から経過した時間の長さに対して前記影響の度合いの大きさが単調減少するように、前記影響の度合いを判定する
ことを特徴とする付記2に記載の運転診断装置。
(付記4)
前記履歴情報は、前記ある車両とは別の車両を前記ドライバが運転していた時間の長さを示す運転時間情報を少なくとも含み、
前記判定手段は、前記運転時間情報が示す前記時間の長さに対して前記影響の度合いの大きさが単調増加するように、前記影響の度合いを判定する
ことを特徴とする付記2または3に記載の運転診断装置。
(付記5)
前記履歴情報は、前記ある車両とは別の車両を前記ドライバが運転し終えた時刻を示す終了時刻情報を少なくとも含み、
前記判定手段は、前記終了時刻情報が示す前記時刻から経過した時間の長さに対して前記影響の度合いの大きさが単調減少するように、前記影響の度合いを判定する
ことを特徴とする付記2から4のいずれか1項に記載の運転診断装置。
(付記6)
前記履歴情報は、前記ある車両の仕様を示す第1の車両仕様情報と、前記1台以上の車両のうち前記ある車両とは別の車両の仕様を示す第2の車両仕様情報とを少なくとも含み、
前記判定手段は、前記第1の車両仕様情報が示す前記仕様と前記第2の車両仕様情報が示す前記仕様との差の大きさに対して前記影響の度合いの大きさが単調増加するように、前記影響の度合いを判定する
ことを特徴とする付記1から5のいずれか1項に記載の運転診断装置。
(付記7)
前記第1の車両仕様情報が示す前記仕様と前記第2の車両仕様情報が示す前記仕様との前記差が正のときに前記影響の度合いが正なのか負なのかを定める係数を用いて、前記判定手段が前記影響の度合いを判定する
ことを特徴とする付記6に記載の運転診断装置。
(付記8)
前記履歴情報は、前記1台以上の車両の台数を示す台数情報を少なくとも含み、
前記台数情報が示す前記台数が1の場合、前記判定手段は前記影響の度合いをゼロと判定し、
前記台数情報が示す前記台数が1より大きい場合、前記判定手段は、前記台数情報が示す前記台数に対して前記影響の度合いの大きさが単調減少するように、前記影響の度合いを判定する
ことを特徴とする付記1から7のいずれか1項に記載の運転診断装置。
(付記9)
前記記憶手段において、前記複数のアドバイスの各々は、前記診断の結果と、前記影響の度合いと、過去の診断の結果との組み合わせに対応づけられて記憶されており、
前記履歴情報は、前記ある車両とは別の車両をかつて前記ドライバが運転したときに下された過去の診断の結果を含み、
前記決定手段は、前記診断手段により下された前記診断の結果と、前記判定手段により判定された前記影響の度合いと、前記履歴情報に含まれる前記過去の診断の結果との組み合わせに対応づけられて前記記憶手段に記憶されているアドバイスを、前記ドライバに対して提示することに決定する
ことを特徴とする付記1から8のいずれか1項に記載の運転診断装置。
(付記10)
前記履歴情報を記憶する記憶媒体から、前記履歴情報を読み出す読み出し手段と、
前記ある車両の運転に関する前記履歴情報を、前記記憶媒体に書き込む書き込み手段
をさらに備えることを特徴とする付記1から9のいずれか1項に記載の運転診断装置。
(付記11)
情報記憶装置からネットワークを介して前記履歴情報を受信する受信手段と、
前記ネットワークを介して、前記ある車両の運転に関する前記履歴情報を前記情報記憶装置に送信する送信手段
をさらに備えることを特徴とする付記1から9のいずれか1項に記載の運転診断装置。
(付記12)
前記決定手段が提示することに決定した前記アドバイスを出力する出力手段をさらに備えることを特徴とする付記1から11のいずれか1項に記載の運転診断装置。
(付記13)
前記車両情報に基づいて、前記決定手段が提示することに決定した前記アドバイスを前記出力手段が出力するタイミングを制御する制御手段をさらに備えることを特徴とする付記12に記載の運転診断装置。
(付記14)
ある車両に搭載される車載装置と、ネットワークを介して前記車載装置との間で情報を送受信する管理装置とを有する運転診断システムであって、
前記車載装置は、
ドライバが前記ある車両を運転している間の、前記ある車両の挙動と前記ドライバの操作の少なくとも一方を示す車両情報を前記ある車両から取得する取得手段と、
前記ネットワークを介して前記管理装置との間で通信を行う第1の送受信手段
を備え、
前記管理装置は、
前記ネットワークを介して前記車載装置との間で通信を行う第2の送受信手段と、
前記ある車両以外の車両をかつて前記ドライバが運転した履歴に関する第1の履歴情報を記憶する履歴記憶手段
を備え、
前記車両情報に基づいて、前記ドライバの運転について診断を下す診断手段を、前記車載装置または前記管理装置が備え、
前記第1の履歴情報と、前記ある車両を前記ドライバが今までに運転してきた履歴に関する第2の履歴情報のうち少なくとも一方に基づいて、前記ある車両を前記ドライバが運転しだす前の前記ドライバの運転経験が前記診断に与える影響の度合いを判定する判定手段を、前記車載装置または前記管理装置が備え、
各々が、診断の結果と影響の度合いの組み合わせに対応づけられている複数のアドバイスを記憶するアドバイス記憶手段を、前記車載装置または前記管理装置が備え、
前記診断手段により下された前記診断の結果と、前記判定手段により判定された前記影響の度合いとの組み合わせに対応づけられて前記アドバイス記憶手段に記憶されているアドバイスを、前記ドライバに対して提示することに決定する決定手段を、前記車載装置または前記管理装置が備える
ことを特徴とする運転診断システム。
(付記15)
前記車載装置が、前記第2の履歴情報を生成または取得して、前記第1の送受信手段から前記ネットワークを介して前記第2の履歴情報を前記管理装置に送信し、
前記管理装置が、前記第2の送受信手段により前記第2の履歴情報を受信し、受信した前記第2の履歴情報を、前記履歴記憶手段に記憶している前記第1の履歴情報に追加する
ことを特徴とする付記14に記載の運転診断システム。
(付記16)
前記車載装置が、前記診断手段、前記判定手段、前記アドバイス記憶手段、および決定手段を備え、
前記履歴記憶手段に記憶されている前記第1の履歴情報が、前記第2の送受信手段から前記ネットワークを介して送信され、前記第1の送受信手段で受信され、前記判定手段に取得される
ことを特徴とする付記14または15に記載の運転診断システム。
(付記17)
前記管理装置が、前記診断手段、前記判定手段、前記アドバイス記憶手段、および決定手段を備え、
前記車載装置は、アドバイスを出力する出力手段をさらに備え、
前記取得手段により取得された前記車両情報が、前記第1の送受信手段から前記ネットワークを介して送信され、前記第2の送受信手段で受信され、前記診断手段に取得され、
前記決定手段が提示することに決定した前記アドバイスが、前記第2の送受信手段から前記ネットワークを介して送信され、前記第1の送受信手段で受信され、前記出力手段により出力される
ことを特徴とする付記14または15に記載の運転診断システム。
(付記18)
コンピュータが、
ドライバがある車両を運転している間の、前記ある車両の挙動と前記ドライバの操作の少なくとも一方を示す車両情報に基づいて、前記ドライバの運転について診断を下し、
前記ある車両を含む互いに異なる1台以上の車両を、前記ドライバが今までに運転してきた履歴に関する履歴情報に基づいて、前記ある車両を前記ドライバが運転しだす前の前記ドライバの運転経験が前記診断に与える影響の度合いを判定し、
各々が、診断の結果と影響の度合いの組み合わせに対応づけられて記憶装置に記憶されている複数のアドバイスのうち、下した前記診断の結果と判定した前記影響の度合いとの組み合わせに対応づけられているアドバイスを、前記ドライバに対して提示することに決定する
ことを特徴とする運転診断方法。