以下、図面を参照して、ユーザによって操作される操作対象機器としてのカーナビゲーション装置を、本発明の構成の一部に適用した場合の困惑度推定装置の実施の形態を詳細に説明する。
図1に示すように、本実施の形態に係る困惑度推定装置10は、カーナビゲーション装置12、ユーザ顔撮影用カメラ14、及びタッチパネル近傍撮影用カメラ16を備えている。
カーナビゲーション装置12は、コンピュータ18、マイク20、タッチパネル22、及び表示装置24を備えている。なお、本実施の形態におけるカーナビゲーション装置12は、一般的なカーナビゲーション装置の各機能を実現するための各処理を実行する。例えば、カーナビゲーション装置12は、ユーザの操作によって、現在位置から所望の目的地までのルート探索を行うルート探索処理を実行することにより、ルート探索機能を実現することができる。また、本実施の形態におけるカーナビゲーション装置12は、マイク20によってユーザの発話に対して音声認識処理を行い、ユーザの発話内容に応じた処理を実行する。
コンピュータ18は、ROM(Read Only Memory)18a、HDD(Hard Disk Drive)18b、CPU(Central Processing Unit)18c、RAM(Random Access Memory)18d、及びI/O(入出力)ポート18eを備えている。これらROM18a、HDD18b、CPU18c、RAM18d、及びI/Oポート18eは互いにバス18fで接続されている。
記憶媒体(記憶手段)としてのROM18aには、OS等の基本プログラムが記憶されている。
記憶媒体(記憶手段)としてのHDD18bには、詳細を以下で説明する困惑度推定処理、指先ジェスチャー検出処理、指先の停滞検出処理、指先の右往左往検出処理、指先のふらつき検出処理、非操作発話検出処理、機器操作情報検出処理、首かしげ検出処理、顔接近検出処理、及び困惑顔検出処理の各処理ルーチンを実行するための各プログラムが記憶されている。
また、HDD18bには、図2に示すように、困惑度推定データベース26が記憶されている。困惑度推定データベース26には、同図に図示されるように、操作対象機器であるカーナビゲーション装置12をユーザが操作した際の入力情報に関する操作時の操作対象機器内部の特徴量28a、カーナビゲーション装置12をユーザが操作した際の入力情報に応じた操作対象機器内部の状態変化に関する操作時の操作対象機器内部の特徴量28b、ユーザがカーナビゲーション装置12を操作する前及び操作中のユーザの動作に関する操作時のユーザの特徴量28c、ユーザがカーナビゲーション装置12を操作する前及び操作中のユーザの表情に関する操作時のユーザの特徴量28d、またはこれらの特徴量を適宜組み合わせた複数の特徴量の組28eの各々に対して、固有のID30が登録されている。
ここで、本実施の形態における「カーナビゲーション装置12をユーザが操作した際の入力情報に関する操作時の操作対象機器内部の特徴量」とは、例えば、カーナビゲーション装置12内(操作対象機器内)で所定の処理(例えば、ルート探索機能を実行するための処理)を行う場合に、ユーザの操作が必要な時間帯(例えば、ルート探索処理(ルート探索機能を実行するための処理)において、目的地設定のためにユーザによる目的地の入力操作を必要とする時間帯)において、所定時間(例えば10秒)以上ユーザの操作が行われていない状況(本実施の形態ではこの状況を「無操作」と称する)を示す特徴量のことを指す。なお、この状況は、ユーザが困惑していると考えられる状況である。また、上述したように本実施の形態では、このような状況を示す特徴量を、カーナビゲーション装置12をユーザが操作した際の入力情報に関する操作時の機器内部の特徴量28aとして予め困惑度推定データベース26に登録している。
また、本実施の形態における「カーナビゲーション装置12をユーザが操作した際の入力情報に応じた機器内部の状態変化に関する操作時の操作対象機器内部の特徴量」とは、例えば、カーナビゲーション装置12内で所定の処理を行う場合に、ユーザの操作が必要な時間帯において必要な操作回数を超える回数の操作が行われた状況を示す特徴量や、ユーザの操作が必要な時間帯において所定時間(例えば30秒)経過しても操作ステージが次の操作ステージに移行しない状況(本実施の形態ではこの状況を「操作の停滞」と称する)を示す特徴量のことを指す。ここで、「ユーザの操作が必要な時間帯において必要な操作回数を超える回数の操作が行われた状況」とは、例えば、図3に示すような各操作ステージを有する目的地を検索する目的地検索処理において、ユーザの操作によって操作ステージの戻り(図3の例では操作ステージのIDの減少)が所定時間(例えば40秒)以内に所定回数(例えば2回)以上行われた状況(本実施の形態ではこの状況を「操作の戻り」と称する)のことを指す。なお、これらの状況は、ユーザが困惑していると考えられる状況である。また、上述したように本実施の形態では、このような状況を示す特徴量を、カーナビゲーション装置12をユーザが操作した際の入力情報に応じた機器内部の状態変化に関する機器内部の特徴量28bとして予め困惑度推定データベース26に登録している。
また、本実施の形態における「ユーザがカーナビゲーション装置12を操作する前及び操作中のユーザの動作に関する操作時のユーザの特徴量」とは、例えば、ユーザの指先が、カーナビゲーション装置12のユーザによって操作される操作部としてのタッチパネル22の前方の所定の空間内(または領域内)で所定時間(例えば10秒)以上静止している状況(本実施の形態ではこの状況を「指先の停滞」と称する)を示す特徴量、ユーザの指先がこの空間内(または領域内)で所定時間(例えば10秒)以上連続して移動している状況(本実施の形態ではこの状況を「指先の右往左往」と称する)を示す特徴量、ユーザの指先がこの空間内(または領域内)で所定時間(例えば10秒)以上連続して存在している状況(本実施の形態ではこの状況を「指先のふらつき」と称する)を示す特徴量、困惑時に発話する語をユーザが発話した状況(本実施の形態ではこの状況を「困惑発話」と称する)を示す特徴量、ユーザの顔が表示部としての表示装置24の画面の前方の所定の空間内に存在する状況(本実施の形態ではこの状況を「顔接近」と称する)を示す特徴量、及びユーザの顔がニュートラルの状態から所定角度(例えば15度)以上傾いている状況(本実施の形態ではこの状況を「首かしげ」と称する)を示す特徴量のことを指す。なお、操作を行う人間の部位の一例として、「ユーザの指先」を挙げたが、本発明はこれに限られず、操作を行う人間の部位であれば、他の部位であってもよい。なお、これらの状況は、ユーザが困惑していると考えられる状況である。また、上述したように本実施の形態では、これらの状況を示す各特徴量を、ユーザがカーナビゲーション装置12を操作する前及び操作中のユーザの動作に関する操作時のユーザの特徴量28cとして予め困惑度推定データベース26に登録している。
また、本実施の形態における「ユーザがカーナビゲーション装置12を操作する前及び操作中のユーザの表情に関する操作時のユーザの特徴量」とは、例えば、ユーザの顔の表情が困惑した表情を示している状況(本実施の形態ではこの状況を「困惑顔」と称する)を示す特徴量のことを指す。なお、この状況は、ユーザが困惑していると考えられる状況である。また、上述したように本実施の形態では、この状況を示す特徴量を、ユーザがカーナビゲーション装置12を操作する前及び操作中のユーザの表情に関する操作時のユーザの特徴量28dとして予め困惑度推定データベース26に登録している。
更に、困惑度推定データベース26には、図2に示されるように、上記ID30とこのID30に対応する継続時間32との組(ペア)34の複数のパターンが時系列パターン36として予め登録されている。ここで、継続時間32は、ID30に対応する特徴量が示す状況が継続した時間である。なお、同図に図示されるように、本実施の形態では、時系列パターン36として、操作時の操作対象機器内部の特徴量28aまたは28b(ID6、ID7、ID8、ID12、ID13、ID14、・・・に対応)と、操作時のユーザの特徴量28cまたは28d(ID1〜ID5、ID9〜ID14、・・・に対応)とが組合わされたパターン(図2の例では「(ID1,2)(ID6,1)(ID5,3)」)、操作時の操作対象機器内部の特徴量28aまたは28bのみのパターン(図2の例では「(ID7,10)」)、及び操作時のユーザの特徴量28cまたは28dのみのパターン(図2の例では「(ID10,5)」)が困惑度推定データベース26に登録されている。そして、同図に図示されるように、困惑度推定データベース26には、この時系列パターン36の各々に対して、ユーザがカーナビゲーション装置12を操作する際の操作に対する困惑度38が予め登録されている。
ここで、例えば、同図に図示されるように、時系列パターン36として「(ID1,2)(ID6,1)(ID5,3)」が登録され、この時系列パターン36に対応する困惑度38として「3」が登録されている場合について、これらの登録内容が意味することを詳細に説明する。この場合における登録内容は、「ID1」に対応する状況、すなわち「指先の停滞」の状況が2秒継続し、「ID6」に対応する状況、すなわち「無操作」の状況が1秒継続し、そして「ID5」の状況、すなわち「つぶやき」の状況が3秒継続した場合には、対応するユーザの困惑度が「3」であることを意味している。
なお、困惑度推定データベース26に登録される内容は、カーナビゲーション装置12を操作したユーザから予め聞き取りを行っておくことで取得される。例えば、困惑した状況とその状況の継続時間とのパターン(時系列パターン)、及びそのパターンに対応する困惑度とを、カーナビゲーション装置12を操作したユーザから聞き取ることにより、取得することができる。なお、本実施の形態では、聞き取りなどによりユーザから困惑度を取得する際には、所定の段階、例えば、1〜5の5段階(1:全く困惑しなかった、2:ほとんど困惑しなかった、3:困惑した、4:まあまあ困惑した、5:大変困惑した)で困惑度を聞き取ることとする。なお、本実施の形態では、困惑度の数値が大きく(高く)なるほど、困惑している度合いが強くなることとするが、本発明はこれに限られない。例えば、1〜5の5段階(1:大変困惑した、2:まあまあ困惑した、3:困惑した、4:ほとんど困惑しなかった、5:全く困惑しなかった)の場合のように、困惑度の数値が小さく(低く)なるほど困惑している度合いが強くなるようにしてもよい。
以上、説明したように、本実施の形態の記憶手段としてのHDD18bには、操作時の機器内部の特徴量28aまたは28b及びこの特徴量28aまたは28bが示すユーザの困惑状況の継続時間32の組34、並びに操作時のユーザの特徴量28cまたは28d及びこの特徴量28cまたは28dが示すユーザの困惑状況の継続時間32の組34の少なくとも一方の組34の複数のパターン(時系列パターン)36の各々に対して、ユーザがカーナビゲーション装置12を操作する際の操作に関する困惑度38が予め記憶されている。なお、HDD18bには、詳細を以下で説明する困惑度推定処理のステップ102で検出される特徴量及び継続時間の組のパターンとして想定される全てのパターンが記憶され、この全てのパターンの各々に対して困惑度38が予め記憶されていることが好ましい。
また、HDD18bには、図4に示すように、ユーザ困惑時発話データベース40が記憶されている。ユーザ困惑時発話データベース40には、ユーザが困惑時に発話する単語(語)42と、単語42に対応する音声特徴量44とが対応付けられて登録されている。なお、図4の例では音声特徴量が「発音」として示されている。本実施の形態では、この単語42及び対応する音声特徴量44は、予め実験的に取得されたものである。
CPU18cは、プログラムをROM18a及びHDD18bから読み出して実行する。
RAM18dには、各種データが一時的に記憶される。
I/Oポート18eには、ユーザ顔撮影用カメラ14、タッチパネル近傍撮影用カメラ16、マイク20、タッチパネル22、及び表示装置24が接続されている。
コンピュータ18を以下で詳細を説明する困惑度推定処理に従って機能ブロックで表すと、図5に示すように、第1の検出手段70、第2の検出手段72、記憶手段74、及び推定手段76で表すことができる。
ユーザ顔撮影用カメラ14は、カーナビゲーション装置12を操作するユーザの顔及び頭部を撮影可能な位置に設けられている。なお、このユーザとして、例えば、本実施の形態の困惑度推定装置10が移動体としての車両に搭載されている場合には、車両を運転するドライバが考えられる。ユーザ顔撮影用カメラ14は、撮影した画像の画像データを出力する。すなわち、ユーザ顔撮影用カメラ14によって、ユーザの顔画像の画像データ及び頭部画像の画像データが出力される。
タッチパネル近傍撮影用カメラ16は、図6(A)、及び図6(B)に示すように、カーナビゲーション装置12の操作部としてのタッチパネル22の前方の所定の領域36内(例えば、図6(B)に示すように、タッチパネル22からタッチパネル22の所定距離(例えば5cm)前方までの領域)を撮影可能な位置に設けられている。なお、本実施の形態では、領域36を、指先検出領域36と称する場合がある。タッチパネル近傍撮影用カメラ16は、撮影した画像の画像データを出力する。すなわち、タッチパネル近傍撮影用カメラ16によって、指先検出領域36内のタッチパネル22を操作しようとするユーザの所定の部位、例えばユーザの指先の画像の画像データを出力することができる。
マイク20は、ユーザの発話(発話音声)を入力するためのものである。マイク20は、入力された音声を検出し、音声信号を出力する。
操作部としてのタッチパネル22は、ユーザの操作を受け付けて、受け付けた操作を示す信号を出力する。タッチパネル22は、表示装置24の画面に貼り付けられている。
表示部としての表示装置24は、入力されたデータに基づいた画像を表示するLCD(Liquid Crystal Display)を含んで構成されている。
次に、コンピュータ18のCPU18cが実行する困惑度推定処理の処理ルーチンについて図7を参照して説明する。なお、本実施の形態において、困惑度推定処理は、困惑度推定装置10の電源(図示せず)がオンされると、所定時間(例えば1秒)間隔で実行される。
まず、ステップ100で、ユーザの操作が必要な時間帯であるか否かを判定する。ここで、この「ユーザの操作が必要な時間帯」とは、カーナビゲーション装置12が、所定の処理、例えば、ルート探索処理を行う場合に、ユーザの操作(例えば、タッチパネル22の操作、またはマイク20に対する音声の入力操作)によって目的地が入力されるのを必要とする時間帯などのことを指す。
ステップ100で、ユーザの操作が必要な時間帯であると判定された場合には、次のステップ102に進む。一方、ステップ100でユーザの操作が必要な時間帯でないと判定された場合には、次のステップ114へ進む。
次のステップ102では、指先ジェスチャー検出処理、非操作発話検出処理、機器操作情報検出処理、首かしげ検出処理、顔接近検出処理、及び困惑顔検出処理を実行する。
ここで、まず、指先ジェスチャー検出処理について、図8を参照して説明する。
まず、ステップ200で、タッチパネル近傍撮影用カメラ16からの画像データに対して、図6(B)に示すように、指先検出領域36の画像の肌色領域を特定し、肌色領域のうちタッチパネル22に近い所定範囲の箇所をユーザの指先位置46として検出する画像処理を施すことにより、指先位置46を検出する。
次のステップ202では、上記ステップ200で指先位置46が検出されたか否かを判定することにより、指先位置46が指先検出領域36内に存在するか否かを判断する。なお、ステップ202では、上記ステップ200で指先位置46が検出されたと判定された場合には、指先位置46が指先検出領域36内に存在すると判断することができ、また、上記ステップ200で指先位置46が検出されなかったと判定された場合には、指先位置46が指先検出領域36内に存在しないと判断することができる。
ステップ202で、上記ステップ200で指先位置46が検出されたと判定された場合には、指先位置46が指先検出領域36内に存在すると判断して、次のステップ204へ進む。
ステップ204では、RAM18d(またはHDD18b)に記憶されている所定数のビット(例えば1ビット)のフラグである指先領域内フラグ(図示しない)の値を1に設定することにより、指先領域内フラグをオン(ON)にする。なお、初期段階では指先領域内フラグの値は0に設定されており、指先領域内フラグの値が0に設定されている場合には、指先領域内フラグはオフ(OFF)となる。ここで、本実施の形態では、指先領域内フラグがオンになっている場合には、ユーザの指先位置46が指先検出領域36内に存在すると判断することができ、また、オフになっている場合には、指先位置46が指先検出領域36内に存在しないと判断することができる。
次のステップ206では、今回(すなわち直近の)、上記ステップ200で検出された指先位置46(今回指先位置と称する場合がある)と、前回、上記ステップ200で検出された指先位置46(前回指先位置と称する場合がある)との位置を比較して、今回指先位置と前回指先位置とが同じ位置であるか否かを判定することにより、指先位置46が移動(または静止)しているか否かを判断する。なお、ステップ206で、今回指先位置と前回指先位置とが同じ位置であると判定された場合には、指先位置46が静止している(すなわち、移動していない)と判断することができ、また、今回指先位置と前回指先位置とが同じ位置でないと判定された場合には、指先位置46が移動している(すなわち、静止していない)と判断することができる。なお、前回指先位置は本実施の形態では、RAM18dに記憶されていることとする。また、ステップ206では、前回指先位置が存在しない場合、(例えば、1回目(初回)の指先ジェスチャー検出処理である場合や、詳細を以下で説明するステップ220での処理によってRAM18dに記憶されている前回指先位置がクリア(消去)された場合)には、今回指先位置と前回指先位置との位置を比較して今回指先位置と前回指先位置とが同じ位置であるか否かを判定する上記処理を行わずに、ステップ212に進む。
ステップ206で、今回指先位置と前回指先位置とが同じ位置であると判定された場合には、指先位置46は静止していると判断して、次のステップ208へ進む。
ステップ208では、RAM18d(またはHDD18b)に記憶されている所定数のビット(例えば1ビット)のフラグである指先移動中フラグ(図示しない)の値を0に設定することにより、指先移動中フラグをオフにすると共に、RAM18d(またはHDD18b)に記憶されている所定数のビット(例えば1ビット)のフラグである指先静止中フラグ(図示しない)の値を1に設定することにより、指先静止中フラグをオンにする。なお、初期段階ではこれらの指先移動中フラグ及び指先静止中フラグの値は0に設定されており、指先移動中フラグの値が1に設定されている場合には、指先移動中フラグはオンとなり、指先静止中フラグの値が0に設定されている場合には、指先静止中フラグはオフとなる。ここで、本実施の形態では、指先移動中フラグがオンになっている場合には、ユーザの指先位置46が移動したと判断することができ、また、オフになっている場合には、ユーザの指先位置46が移動していないと判断することができる。また、指先静止中フラグがオンになっている場合には、ユーザの指先位置46が静止していると判断することができ、また、オフになっている場合には、ユーザの指先位置46が静止していないと判断することができる。そして、次のステップ212へ進む。
一方、ステップ206で、今回指先位置と前回指先位置とが同じ位置でないと判定された場合には、指先位置46は移動していると判断して、次のステップ210へ進む。
ステップ210では、指先移動中フラグの値を1に設定することにより、指先移動中フラグをオンに設定すると共に、指先静止中フラグの値を0に設定することにより、指先静止中フラグをオフに設定する。そして、次のステップ212へ進む。
一方、ステップ202において、上記ステップ200で指先位置46が検出されなかったと判定された場合には、指先位置46が指先検出領域36内に存在しないと判断して、次のステップ218へ進む。
ステップ218では、指先領域内フラグ、指先移動中フラグ、及び指先静止中フラグの各値を0に設定することにより、指先領域内フラグ、指先移動中フラグ、及び指先静止中フラグをオフにする。
次のステップ220では、RAM18dに記憶されている前回指先位置をクリア(消去)する。そして、ステップ212へ進む。
ステップ212では、指先の停滞検出処理を実行する。ここで、指先の停滞検出処理について、図9を参照して説明する。
まず、ステップ300で、指先静止中フラグの値を読み取って、指先静止中フラグの値が1であるか否かを判定することにより、指先静止中フラグがオンに設定されているか否かを判断する。
ステップ300で、指先静止中フラグの値が1であると判定された場合には、指先静止中フラグがオンになっていると判断して、次のステップ302へ進む。
ステップ302では、RAM18d(またはHDD18b)に記憶されているカウンタであり、計測された時間を記憶(保持)するためのカウンタである指先静止中時間カウンタ(図示しない)の値を加算更新することにより、指先静止中フラグがオンになってから当該ステップ302を実行するまでの時間を指先静止中時間カウンタに記憶させる。より具体的に説明すると、本実施の形態では、上述したように、所定時間毎に困惑度推定処理が実行されることにより、当該所定時間毎に指先の停滞検出処理が実行される。ここで、例えば、1秒間隔で(1秒毎に)指先の停滞検出処理が実行された場合には、ステップ302では、1秒毎に指先静止中時間カウンタの値が加算更新される。これにより、指先静止中フラグがオンになってから当該ステップ302を実行するまでの時間が指先静止中時間カウンタに記憶される。
次のステップ304では、上記ステップ302で値が更新された指先静止中時間カウンタの値が示す時間が、所定時間T1秒(例えば10秒)以上であるか否かを判定する。これにより、上記ステップ200で検出された指先位置46が、カーナビゲーション装置12のタッチパネル22の前方の領域(指先検出領域)36内で所定時間T1秒(例えば10秒)以上静止している状況(「指先の停滞」)であるか否かを判断することができる。すなわち、ステップ304において、上記ステップ302で値が更新された指先静止中時間カウンタの値が示す時間が、所定時間T1秒(例えば10秒)以上であると判定(肯定判定)された場合には、ユーザがカーナビゲーション装置12を操作する前及び操作中のユーザの指先の位置及び動作に関する特徴量として「指先の停滞」の状況を示す特徴量が検出されたと判断することができる。
ステップ304において、上記ステップ302で値が更新された指先静止中時間カウンタの値が示す時間が、所定時間T1秒(例えば10秒)以上であると判定された場合には、次のステップ306へ進む。
ステップ306では、RAM18d(またはHDD18b)に記憶されている所定数のビット(例えば1ビット)のフラグである「指先の停滞」検出フラグ(図示しない)の値を1に設定することにより、「指先の停滞」検出フラグをオンにする。なお、初期段階では「指先の停滞」検出フラグの値は0に設定されており、「指先の停滞」検出フラグの値が0に設定されている場合には、「指先の停滞」検出フラグはオフとなる。ここで、本実施の形態では、「指先の停滞」検出フラグがオンになった場合には、「指先の停滞」の状況が検出されたと判断することができる。そして、次のステップ308へ進む。
ステップ308では、RAM18d(またはHDD18b)に記憶されているカウンタであり、計測された時間を記憶(保持)するためのカウンタである「指先の停滞」検出継続時間カウンタ(図示しない)の値を加算更新することにより、「指先の停滞」検出フラグがオンになってから当該ステップ308を実行するまでの時間を「指先の停滞」検出継続時間カウンタに記憶させる。より具体的に説明すると、例えば、1秒間隔で(1秒毎に)指先の停滞検出処理が実行された場合には、ステップ308では、1秒毎に「指先の停滞」検出継続時間カウンタの値が加算更新される。これにより、「指先の停滞」検出フラグがオンになってから当該ステップ308を実行するまでの時間が「指先の停滞」検出継続時間カウンタに記憶される。そして、指先の停滞検出処理を終了する。
一方、ステップ304で、上記ステップ302で値が更新された指先静止中時間カウンタの値が示す時間が、所定時間T1秒(例えば10秒)以上でない(すなわち、所定時間T1秒未満である)と判定された場合には、次のステップ310へ進む。ステップ310では、「指先の停滞」検出フラグの値を0に設定することにより、「指先の停滞」検出フラグをオフにする。そして、指先の停滞検出処理を終了する。
また、ステップ300で、指先静止中フラグの値が1でない(すなわち、0である)と判定された場合には、指先静止中フラグがオフになっていると判断して、次のステップ312へ進む。
ステップ312では、指先静止中時間カウンタの値をクリアする(0に設定する)。次のステップ314では、「指先の停滞」検出継続時間カウンタの値が示す時間が、0秒より大きいか否かを判定する。
ステップ314で、「指先の停滞」検出継続時間カウンタの値が示す時間が、0秒より大きいと判定された場合には、次のステップ316へ進む。ステップ316では、「指先の停滞」検出継続時間カウンタの値が示す時間を、「指先の停滞」の状況が継続した時間(指先の停滞状況継続時間)として検出すると共に、検出された指先の停滞状況継続時間を、詳細を以下で説明するステップ106で用いるために、RAM18d(またはHDD18b)に記憶させる。これにより、RAM18d(またはHDD18b)に指先の停滞状況継続時間が記憶される。
次のステップ318では、「指先の停滞」検出継続時間カウンタの値をクリアする(0に設定する)。そして、ステップ310へ進む。
一方、ステップ314で、「指先の停滞」検出継続時間カウンタの値が示す時間が、0秒であると判定された場合には、次のステップ318へ進む。
以上、指先の停滞検出処理について説明した。ここで、図8の指先ジェスチャー検出処理の説明に戻る。
次のステップ214では、指先の右往左往検出処理を実行する。ここで、指先の右往左往検出処理について、図10を参照して説明する。
まず、ステップ400で、指先移動中フラグの値を読み取って、指先移動中フラグの値が1であるか否かを判定することにより、指先移動中フラグがオンに設定されているか否かを判断する。
ステップ400で、指先移動中フラグの値が1であると判定された場合には、指先移動中フラグがオンになっていると判断して、次のステップ402へ進む。
ステップ402では、RAM18d(またはHDD18b)に記憶されているカウンタであり、計測された時間を記憶(保持)するためのカウンタである指先移動中時間カウンタ(図示しない)の値を加算更新することにより、指先移動中フラグがオンになってから当該ステップ402を実行するまでの時間を指先移動中時間カウンタに記憶させる。より具体的に説明すると、例えば、1秒間隔で(1秒毎に)指先の右往左往検出処理が実行された場合には、ステップ402では、1秒毎に指先移動中時間カウンタの値が加算更新される。これにより、指先移動中フラグがオンになってから当該ステップ402を実行するまでの時間が指先移動中時間カウンタに記憶される。
次のステップ404では、上記ステップ402で値が更新された指先移動中時間カウンタの値が示す時間が、所定時間T2秒(例えば10秒)以上であるか否かを判定する。これにより、上記ステップ200で検出された指先位置46が、カーナビゲーション装置12のタッチパネル22の前方の領域(指先検出領域)36内で所定時間T2秒(例えば10秒)以上移動している状況(「指先の右往左往」)であるか否かを判断することができる。すなわち、ステップ404において、上記ステップ402で値が更新された指先移動中時間カウンタの値が示す時間が、所定時間T2秒(例えば10秒)以上であると判定(肯定判定)された場合には、ユーザがカーナビゲーション装置12を操作する前及び操作中のユーザの指先の位置及び動作に関する特徴量として「指先の右往左往」の状況を示す特徴量が検出されたと判断することができる。
ステップ404において、上記ステップ402で値が更新された指先移動中時間カウンタの値が示す時間が、所定時間T2秒(例えば10秒)以上であると判定された場合には、次のステップ406へ進む。
ステップ406では、RAM18d(またはHDD18b)に記憶されている所定数のビット(例えば1ビット)のフラグである「指先の右往左往」検出フラグ(図示しない)の値を1に設定することにより、「指先の右往左往」検出フラグをオンにする。なお、初期段階では「指先の右往左往」検出フラグの値は0に設定されており、「指先の右往左往」検出フラグの値が0に設定されている場合には、「指先の右往左往」検出フラグはオフとなる。ここで、本実施の形態では、「指先の右往左往」検出フラグがオンになった場合には、「指先の右往左往」の状況が検出されたと判断することができる。そして、次のステップ408へ進む。
ステップ408では、RAM18d(またはHDD18b)に記憶されているカウンタであり、計測された時間を記憶(保持)するためのカウンタである「指先の右往左往」検出継続時間カウンタ(図示しない)の値を加算更新することにより、「指先の右往左往」検出フラグがオンになってから当該ステップ408を実行するまでの時間を「指先の右往左往」検出継続時間カウンタに記憶させる。より具体的に説明すると、例えば、1秒間隔で(1秒毎に)指先の右往左往検出処理が実行された場合には、ステップ408では、1秒毎に「指先の右往左往」検出継続時間カウンタの値が加算更新される。これにより、「指先の右往左往」検出フラグがオンになってから当該ステップ408を実行するまでの時間が「指先の右往左往」検出継続時間カウンタに記憶される。そして、指先の右往左往検出処理を終了する。
一方、ステップ404で、上記ステップ402で値が更新された指先移動中時間カウンタの値が示す時間が、所定時間T2秒(例えば10秒)以上でない(すなわち、所定時間T2秒未満である)と判定された場合には、次のステップ410へ進む。ステップ410では、「指先の右往左往」検出フラグの値を0に設定することにより、「指先の右往左往」検出フラグをオフにする。そして、指先の右往左往検出処理を終了する。
また、ステップ400で、指先移動中フラグの値が1でない(すなわち、0である)と判定された場合には、指先移動中フラグがオフになっていると判断して、次のステップ412へ進む。
ステップ412では、指先移動中時間カウンタの値をクリアする(0に設定する)。次のステップ414では、「指先の右往左往」検出継続時間カウンタの値が示す時間が、0秒より大きいか否かを判定する。
ステップ414で、「指先の右往左往」検出継続時間カウンタの値が示す時間が、0秒より大きいと判定された場合には、次のステップ416へ進む。ステップ416では、「指先の右往左往」検出継続時間カウンタの値が示す時間を、「指先の右往左往」の状況が継続した時間(指先の右往左往状況継続時間)として検出すると共に、検出された指先の右往左往状況継続時間を、詳細を以下で説明するステップ106で用いるために、RAM18d(またはHDD18b)に記憶させる。これにより、RAM18d(またはHDD18b)に指先の右往左往状況継続時間が記憶される。
次のステップ418では、「指先の右往左往」検出継続時間カウンタの値をクリアする(0に設定する)。そして、ステップ410へ進む。
一方、ステップ414で、「指先の右往左往」検出継続時間カウンタの値が示す時間が、0秒であると判定された場合には、次のステップ418へ進む。
以上、指先の右往左往検出処理について説明した。ここで、図8の指先ジェスチャー検出処理の説明に戻る。
次のステップ216では、指先のふらつき検出処理を実行する。そして、指先ジェスチャー検出処理を終了する。ここで、指先のふらつき検出処理について、図11を参照して説明する。
まず、ステップ500で、指先領域内フラグの値を読み取って、指先領域内フラグの値が1であるか否かを判定することにより、指先領域内フラグがオンに設定されているか否かを判断する。
ステップ500で、指先領域内フラグの値が1であると判定された場合には、指先領域内フラグがオンになっていると判断して、次のステップ502へ進む。
ステップ502では、RAM18d(またはHDD18b)に記憶されているカウンタであり、計測された時間を記憶(保持)するためのカウンタである指先領域内時間カウンタ(図示しない)の値を加算更新することにより、指先領域内フラグがオンになってから当該ステップ502を実行するまでの時間を指先領域内時間カウンタに記憶させる。より具体的に説明すると、例えば、1秒間隔で(1秒毎に)指先のふらつき検出処理が実行された場合には、ステップ502では、1秒毎に指先領域内時間カウンタの値が加算更新される。これにより、指先領域内フラグがオンになってから当該ステップ502を実行するまでの時間が指先領域内時間カウンタに記憶される。
次のステップ504では、上記ステップ502で値が更新された指先領域内時間カウンタの値が示す時間が、所定時間T3秒(例えば10秒)以上であるか否かを判定する。これにより、上記ステップ200で検出された指先位置46が、カーナビゲーション装置12のタッチパネル22の前方の領域(指先検出領域)36内で所定時間T3秒(例えば10秒)以上連続して存在している状況(「指先のふらつき」)であるか否かを判断することができる。すなわち、ステップ504において、上記ステップ502で値が更新された指先領域内時間カウンタの値が示す時間が、所定時間T3秒(例えば10秒)以上であると判定(肯定判定)された場合には、ユーザがカーナビゲーション装置12を操作する前及び操作中のユーザの指先の位置及び動作に関する特徴量として「指先のふらつき」の状況を示す特徴量が検出されたと判断することができる。
ステップ504において、上記ステップ502で値が更新された指先領域内時間カウンタの値が示す時間が、所定時間T3秒(例えば10秒)以上であると判定された場合には、次のステップ506へ進む。
ステップ506では、RAM18d(またはHDD18b)に記憶されている所定数のビット(例えば1ビット)のフラグである「指先のふらつき」検出フラグ(図示しない)の値を1に設定することにより、「指先のふらつき」検出フラグをオンにする。なお、初期段階では「指先のふらつき」検出フラグの値は0に設定されており、「指先のふらつき」検出フラグの値が0に設定されている場合には、「指先のふらつき」検出フラグはオフとなる。ここで、本実施の形態では、「指先のふらつき」検出フラグがオンになった場合には、「指先のふらつき」の状況が検出されたと判断することができる。そして、次のステップ508へ進む。
ステップ508では、RAM18d(またはHDD18b)に記憶されているカウンタであり、計測された時間を記憶(保持)するためのカウンタである「指先のふらつき」検出継続時間カウンタ(図示しない)の値を加算更新することにより、「指先のふらつき」検出フラグがオンになってから当該ステップ508を実行するまでの時間を「指先のふらつき」検出継続時間カウンタに記憶させる。より具体的に説明すると、例えば、1秒間隔で(1秒毎に)指先のふらつき検出処理が実行された場合には、ステップ508では、1秒毎に「指先のふらつき」検出継続時間カウンタの値が加算更新される。これにより、「指先のふらつき」検出フラグがオンになってから当該ステップ508を実行するまでの時間が「指先のふらつき」検出継続時間カウンタに記憶される。そして、指先のふらつき検出処理を終了する。
一方、ステップ504で、上記ステップ502で値が更新された指先領域内時間カウンタの値が示す時間が、所定時間T3秒(例えば10秒)以上でない(すなわち、所定時間T3秒未満である)と判定された場合には、次のステップ510へ進む。ステップ510では、「指先のふらつき」検出フラグの値を0に設定することにより、「指先のふらつき」検出フラグをオフにする。そして、指先のふらつき検出処理を終了する。
また、ステップ500で、指先領域内フラグの値が1でない(すなわち、0である)と判定された場合には、指先領域内フラグがオフになっていると判断して、次のステップ512へ進む。
ステップ512では、指先領域内時間カウンタの値をクリアする(0に設定する)。次のステップ514では、「指先のふらつき」検出継続時間カウンタの値が示す時間が、0秒より大きいか否かを判定する。
ステップ514で、「指先のふらつき」検出継続時間カウンタの値が示す時間が、0秒より大きいと判定された場合には、次のステップ516へ進む。ステップ516では、「指先のふらつき」検出継続時間カウンタの値が示す時間を、「指先のふらつき」の状況が継続した時間(指先のふらつき状況継続時間)として検出すると共に、検出された指先のふらつき状況継続時間を、詳細を以下で説明するステップ106で用いるために、RAM18d(またはHDD18b)に記憶させる。これにより、RAM18d(またはHDD18b)に指先のふらつき状況継続時間が記憶される。
次のステップ518では、「指先のふらつき」検出継続時間カウンタの値をクリアする(0に設定する)。そして、ステップ510へ進む。
一方、ステップ514で、「指先のふらつき」検出継続時間カウンタの値が示す時間が、0秒であると判定された場合には、次のステップ518へ進む。
以上、指先のふらつき検出処理、及び指先ジェスチャー検出処理について説明した。
指先ジェスチャー検出処理によれば、例えば、図12に示すように、時刻t1〜t9間で指先領域内フラグがオンとなり、時刻t2〜t5間及び時刻t7〜t8間で指先静止中フラグがオンとなり、時刻t1〜t2間、時刻t5〜t7間及び時刻t8〜t9間で指先移動中フラグがオンとなった場合には、同図に図示されるように、時刻t1から時間T3秒経過した時刻t3で、「指先のふらつき」検出フラグがオンとなり、指先領域内フラグがオフとなる時刻t9で、「指先のふらつき」検出フラグがオフとなるため、時刻t3〜t9間を「指先のふらつき」の状況として検出すると共に、時刻t3〜t9間の時間を指先のふらつき状況継続時間として検出する。また、指先ジェスチャー検出処理によれば、指先静止中フラグがオンとなる時刻t2から時間T1秒経過した時刻t4で、「指先の停滞」検出フラグがオンとなり、指先静止中フラグがオフとなる時刻t5に「指先の停滞」検出フラグがオフとなるため、時刻t4〜t5間を「指先の停滞」の状況として検出すると共に、時刻t4〜t5間の時間を指先の停滞状況継続時間として検出する。また、指先ジェスチャー検出処理によれば、指先移動中フラグがオンとなる時刻t5から時間T2秒経過した時刻t6で、「指先の右往左往」検出フラグがオンとなり、指先移動中フラグがオフとなる時刻t7に「指先の右往左往」検出フラグがオフとなるため、時刻t6〜t7間を「指先の右往左往」の状況として検出すると共に、時刻t6〜t7間の時間を指先の右往左往状況継続時間として検出する。
なお、上記の指先ジェスチャー検出処理では、カメラ(タッチパネル近傍撮影用カメラ)を1台用いて、指先位置46の2次元平面の位置を検出し、ユーザの指先がカーナビゲーション装置12のタッチパネル22の前方の領域36内で所定時間T1秒以上静止している状況を示す特徴量、ユーザの指先が領域36内で所定時間T2秒以上連続して移動している状況を示す特徴量、及びユーザの指先が領域36内でT3秒以上連続して存在している状況を示す特徴量を、ユーザがカーナビゲーション装置12を操作する前及び操作中のユーザの指先の位置及び動作に関する特徴量として検出する例について説明したが、本発明はこれに限られない。例えば、指先ジェスチャー検出処理において、カメラを複数台またはセンサを複数個用いて指先位置46の3次元空間の位置を検出し、ユーザの指先がカーナビゲーション装置12のタッチパネル22の前方の所定の空間内で所定時間T1秒以上静止している状況を示す特徴量、ユーザの指先がこの所定の空間内で所定時間T2秒以上連続して移動している状況を示す特徴量、及びユーザの指先がこの所定の空間内で所定時間T3秒以上連続して存在している状況を示す特徴量を、ユーザがカーナビゲーション装置12を操作する前及び操作中のユーザの指先の位置及び動作に関する特徴量として検出するようにしてもよい。
次に、非操作発話検出処理について、図13を参照して説明する。
まず、ステップ600で、マイク20からの音声信号を取込む。
次のステップ602では、上記ステップ600で取込んだ音声信号から、公知の技術(例えば、特開2007−233148号公報に記載の技術)を用いて、音声発話区間を切り出す。
次のステップ604では、上記ステップ602で切り出された音声発話区間から、音声操作のための発話(音声操作発話)以外の発話を、非操作発話として検出する。すなわち、ステップ604では、ユーザの発話に関する特徴量として非操作発話を示す特徴量を検出する。例えば、ステップ604では、音声操作のための単語が登録された音声操作用データベースに登録されている単語に対する上記ステップ602で切り出された音声発話区間の発話の信頼度θ1を演算するために、音声操作用データベースを用いて音声発話区間の発話に対して音声認識処理を行って信頼度θ1を演算する。そして、ユーザ困惑時発話データベース40に登録されている単語42に対する音声発話区間の発話の信頼度θ2を演算するために、ユーザ困惑時発話データベース40の音声特徴量44を用いて音声発話区間の発話に対して音声認識処理を行って信頼度θ2を演算する。そして、信頼度θ2が信頼度θ1より大きく、かつ信頼度θ2が所定の閾値θ3より大きい場合に、音声発話区間における発話を非操作発話として検出する。なお、信頼度θ2が信頼度θ1より大きい場合に、音声発話区間における発話を非操作発話として検出してもよい。また、信頼度θ1、θ2については、公知の技術、例えば、「李晃伸,河原達也,鹿野清宏 2パス探索アルゴリズムにおける高速な単語事後確率に基づく信頼度算出法 情報処理学会研究報告,2003−SLP−49−48,2003−12」に記載の技術を用いて演算することができる。
ここで、ステップ604において非操作発話が検出された場合には、ユーザがカーナビゲーション装置12を操作する前及び操作中のユーザの動作に関する特徴量として、「困惑発話」の状況(困惑時に発話する語をユーザが発話した状況)を示す特徴量が検出されたと判断できる。
なお、ステップ604において、信頼度θ2が信頼度θ1より大きく、かつ信頼度θ2が閾値θ3より小さい場合に、音声発話区間における発話を非操作発話として検出してもよい。このようにして非操作発話が検出された場合には、ユーザがカーナビゲーション装置12を操作する前及び操作中のユーザの動作に関する特徴量として、ユーザが困惑してつぶやいている状況(本実施の形態ではこの状況を「つぶやき」と称する)を示す特徴量が検出されたと判断できる。
次のステップ606では、音声発話区間の時間を、「困惑発話」(または「つぶやき」)の状況が継続した時間(困惑発話状況継続時間(またはつぶやき状況継続時間))として演算することにより、困惑発話状況継続時間(またはつぶやき状況継続時間)を検出し、検出された困惑発話状況継続時間(またはつぶやき状況継続時間)を、詳細を以下で説明するステップ106で用いるために、RAM18d(またはHDD18b)に記憶させる。これにより、RAM18d(またはHDD18b)に困惑発話状況継続時間(またはつぶやき状況継続時間)が記憶される。そして、非操作発話検出処理を終了する。
以上、説明したように、非操作発話検出処理によって、ユーザの発話に関する特徴量である非操作発話を示す特徴量が検出される。
次に、機器操作情報検出処理について、図14を参照して説明する。
まず、ステップ700で、前回の機器操作情報検出処理のステップ700の実行後から、当該(今回の)ステップ700までの間に、ユーザがタッチパネル22を操作したか、またはマイク20を介して音声の入力操作を行ったか否かを、タッチパネル22またはマイク20からの信号に基づいて判定する。
ステップ700で、ユーザがタッチパネル22を操作したか、またはマイク20を介して音声の入力操作を行ったと判定された場合には、次のステップ710へ進む。一方、ステップ700で、ユーザがタッチパネル22を操作していないと判定された場合、またはマイク20を介して音声の入力操作を行っていないと判定された場合には、次のステップ702に進む。
ステップ702では、RAM18d(またはHDD18b)に記憶されているカウンタであり、計測された時間を記憶(保持)するためのカウンタである無操作中時間カウンタ(図示しない)の値を加算更新することにより、ユーザによる操作の入力が行われなくなってから当該ステップ702を実行するまでの時間を無操作中時間カウンタに記憶させる。より具体的に説明すると、例えば、1秒間隔で(1秒毎に)機器操作情報検出処理が実行された場合には、ステップ702では、1秒毎に無操作中時間カウンタの値が加算更新される。これにより、ユーザによる操作の入力が行われなくなってから当該ステップ702を実行するまでの時間が無操作中時間カウンタに記憶される。
次のステップ704では、上記ステップ702で値が更新された無操作中時間カウンタの値が示す時間が、所定時間T4秒(例えば10秒)以上であるか否かを判定する。これにより、前回のユーザの操作(操作入力)から所定時間T4秒(例えば10秒)以上経過している状況(「無操作」)であるか否かを判断することができる。すなわち、ステップ704において、上記ステップ702で値が更新された無操作中時間カウンタの値が示す時間が、所定時間T4秒(例えば10秒)以上であると判定(肯定判定)された場合には、ユーザがカーナビゲーション装置12を操作した際の入力情報に関する操作時の機器内部の特徴量として「無操作」の状況を示す特徴量が検出されたと判断することができる。
ステップ704において、上記ステップ702で値が更新された無操作中時間カウンタの値が示す時間が、所定時間T4秒(例えば10秒)以上であると判定された場合には、次のステップ706へ進む。
ステップ706では、RAM18d(またはHDD18b)に記憶されている所定数のビット(例えば1ビット)のフラグである「無操作」検出フラグ(図示しない)の値を1に設定することにより、「無操作」検出フラグをオンにする。なお、初期段階では「無操作」検出フラグの値は0に設定されており、「無操作」検出フラグの値が0に設定されている場合には、「無操作」検出フラグはオフとなる。ここで、本実施の形態では、「無操作」検出フラグがオンになった場合には、「無操作」の状況が検出されたと判断することができる。そして、次のステップ708へ進む。
ステップ708では、RAM18d(またはHDD18b)に記憶されているカウンタであり、計測された時間を記憶(保持)するためのカウンタである「無操作」検出継続時間カウンタ(図示しない)の値を加算更新することにより、「無操作」検出フラグがオンになってから当該ステップ708を実行するまでの時間を「無操作」検出継続時間カウンタに記憶させる。より具体的に説明すると、例えば、1秒間隔で(1秒毎に)機器操作情報検出処理が実行された場合には、ステップ708では、1秒毎に「無操作」検出継続時間カウンタの値が加算更新される。これにより、「無操作」検出フラグがオンになってから当該ステップ708を実行するまでの時間が「無操作」検出継続時間カウンタに記憶される。そして、機器操作情報検出処理を終了する。
一方、ステップ710では、無操作中時間カウンタの値をクリアする(0に設定する)。次のステップ712では、「無操作」検出継続時間カウンタの値が示す時間が、0秒より大きいか否かを判定する。
ステップ712で、「無操作」検出継続時間カウンタの値が示す時間が、0秒より大きいと判定された場合には、次のステップ714へ進む。ステップ714では、「無操作」検出継続時間カウンタの値が示す時間を、「無操作」の状況が継続した時間(無操作状況継続時間)として検出すると共に、検出された無操作状況継続時間を、詳細を以下で説明するステップ106で用いるために、RAM18d(またはHDD18b)に記憶させる。これにより、RAM18d(またはHDD18b)に無操作状況継続時間が記憶される。そして、次のステップ716へ進む。また、ステップ712で、「無操作」検出継続時間カウンタの値が示す時間が、0秒であると判定された場合には、次のステップ716へ進む。
ステップ716では、「無操作」検出継続時間カウンタの値をクリアする(0に設定する)。そして、ステップ718へ進む。ステップ718では、「無操作」検出フラグの値を0に設定することにより、「無操作」検出フラグをオフにする。そして、機器操作情報検出処理を終了する。
一方、ステップ704で、上記ステップ702で値が更新された無操作中時間カウンタの値が示す時間が、所定時間T4秒(例えば10秒)以上でない(すなわち、所定時間T4秒未満である)と判定された場合には、次のステップ716へ進む。
以上、機器操作情報検出処理について説明した。機器操作情報検出処理によれば、例えば、図15に示すように、時刻t10でユーザの操作が行われなくなり、時刻t12からユーザの操作が行われた場合(すなわち、時刻t10〜t12間ではユーザの操作が行われていない場合)には、時刻t10から所定時間T4秒経過した時刻t11で、「無操作」検出フラグがオンとなり、ユーザの操作が開始される時刻t12で、「無操作」検出フラグがオフとなるため、時刻t11〜t12間を「無操作」の状況として検出すると共に、時刻t11〜t12間の時間を無操作状況継続時間として検出する。なお、同図中の下向きの矢印はユーザの操作が行われたことを示す。
以上、説明したように、機器操作情報検出処理によって、カーナビゲーション装置12内で処理を行う場合に、所定時間T4秒以上ユーザの操作が行われていない状況を示す特徴量が、ユーザがカーナビゲーション装置12を操作した際の入力情報に関する操作時の機器内部の特徴量として検出される。
なお、本実施の形態において、上記と同様にして、例えば、図3に示すような各操作ステージを有する目的地を検索する目的地検索処理において、ユーザの操作によって操作ステージの戻り(図3の例では操作ステージのIDの減少)が所定時間T5秒(例えば40秒)以内に所定回数N(例えば2回)以上行われた状況(「操作の戻り」)を示す特徴量を、ユーザがカーナビゲーション装置12を操作した際の入力情報に応じた機器内部の状態変化に関する操作時の機器内部の特徴量として検出するようにしてもよい。この場合には、例えば所定時間間隔で(例えば1秒毎に)「操作の戻り」が起こっているかどうかを判定し、連続して「操作の戻り」が起こったと判定した時間を「操作の戻り」の状況が継続した時間(操作の戻り状況継続時間)として検出し、操作の戻り状況継続時間をRAM18dに記憶させることとする。
また、本実施の形態において、同様に、所定時間T6秒(例えば30秒)経過しても操作ステージが次の操作ステージに移行しない状況(「操作の停滞」)を示す特徴量を、ユーザがカーナビゲーション装置12を操作した際の入力情報に応じた機器内部の状態変化に関する操作時の機器内部の特徴量として検出するようにしてもよい。この場合には、所定時間T6秒(例えば30秒)経過してから次の操作ステージに移行するまでの時間を、「操作の停滞」の状況が継続した時間(操作の停滞状況継続時間)として検出し、操作の停滞状況継続時間をRAM18dに記憶させることとする。
すなわち、機器操作情報検出処理によって、カーナビゲーション装置12内で処理を行う場合に、所定時間T4秒以上ユーザの操作が行われていない状況を示す特徴量、所定時間T5秒以内に所定回数N以上の操作が行われた状況を示す特徴量、及び所定時間T6秒経過しても操作ステージが次の操作ステージに移行しない状況を示す特徴量の少なくとも1つを、操作時の機器内部の特徴量として検出するようにしてもよい。この場合には、この少なくとも1つの状況を示す特徴量を操作時の機器内部の特徴量として困惑度推定データベース26に登録しておくとよい。
次に、首かしげ検出処理について、図16を参照して説明する。
まず、ステップ800で、ユーザ顔撮影用カメラ14からの画像データに対して、公知の技術(例えば、特開2000−97676号公報に記載の技術)を適用することにより、ユーザ顔撮影用カメラ14からの画像データから、ユーザの顔向き(ピッチ角、ヨー角、ロール角θ4)を検出する。なお、ステップ800では、ロール角θ4のみを検出するようにしてもよい。
次のステップ802では、上記ステップ800で検出したロール角θ4が、(θn±θth)の範囲内であるか否かを判定する。ここで、θnは予め求めておいたユーザのニュートラルな状態における顔向きのロール角である。また、θthは所定の閾値であり、例えば15度である。なお、ロール角θ4が、(θn±θth)の範囲内でない(すなわち範囲外である)と判定された場合には、ユーザの顔はニュートラルの状態から所定角度θth以上傾いている状況であり、ユーザがカーナビゲーション装置12を操作する前及び操作中のユーザの顔の向きに関する特徴量として、ユーザの顔がニュートラルの状態から所定角度θth以上傾いている状況(「首かしげ」)を示す特徴量が検出されたと判断することができる。
ステップ802で、ロール角θ4が、(θn±θth)の範囲内でない(すなわち範囲外である)と判定された場合には、ユーザの顔はニュートラルの状態から所定角度θth以上傾いている状況であり、「首かしげ」の状況であると判断して、次のステップ804へ進む。
ステップ804では、RAM18d(またはHDD18b)に記憶されている所定数のビット(例えば1ビット)のフラグである「首かしげ」検出フラグ(図示しない)の値を1に設定することにより、「首かしげ」検出フラグをオンにする。なお、初期段階では「首かしげ」検出フラグの値は0に設定されており、「首かしげ」検出フラグの値が0に設定されている場合には、「首かしげ」検出フラグはオフとなる。ここで、本実施の形態では、「首かしげ」検出フラグがオンになった場合には、「首かしげ」の状況が検出されたと判断することができる。そして、次のステップ806へ進む。
ステップ806では、RAM18d(またはHDD18b)に記憶されているカウンタであり、計測された時間を記憶(保持)するためのカウンタである「首かしげ」検出継続時間カウンタ(図示しない)の値を加算更新することにより、「首かしげ」検出フラグがオンになってから当該ステップ806を実行するまでの時間を「首かしげ」検出継続時間カウンタに記憶させる。より具体的に説明すると、例えば、1秒間隔で(1秒毎に)首かしげ検出処理が実行された場合には、ステップ806では、1秒毎に「首かしげ」検出継続時間カウンタの値が加算更新される。これにより、「首かしげ」検出フラグがオンになってから当該ステップ806を実行するまでの時間が「首かしげ」検出継続時間カウンタに記憶される。そして、首かしげ検出処理を終了する。
一方、ステップ802で、ロール角θ4が、(θn±θth)の範囲内であると判定された場合には、次のステップ808へ進む。
ステップ808では、「首かしげ」検出継続時間カウンタの値が示す時間が、0秒より大きいか否かを判定する。
ステップ808で、「首かしげ」検出継続時間カウンタの値が示す時間が、0秒より大きいと判定された場合には、次のステップ810へ進む。ステップ810では、「首かしげ」検出継続時間カウンタの値が示す時間を、「首かしげ」の状況が継続した時間(首かしげ状況継続時間)として検出すると共に、検出された首かしげ状況継続時間を、詳細を以下で説明するステップ106で用いるために、RAM18d(またはHDD18b)に記憶させる。これにより、RAM18d(またはHDD18b)に首かしげ状況継続時間が記憶される。そして、次のステップ812へ進む。また、ステップ808で、「首かしげ」検出継続時間カウンタの値が示す時間が、0秒であると判定された場合には、次のステップ812へ進む。
ステップ812では、「首かしげ」検出継続時間カウンタの値をクリアする(0に設定する)。そして、ステップ814へ進む。ステップ814では、「首かしげ」検出フラグの値を0に設定することにより、「首かしげ」検出フラグをオフにする。そして、首かしげ検出処理を終了する。
以上、首かしげ検出処理について説明した。首かしげ検出処理によれば、例えば、図17に示すように、時刻t13〜t14で、ロール角θ4が(θn±θth)の範囲内でない状況である場合には、時刻t13から時刻t14まで、「首かしげ」検出フラグがオンとなるため、時刻t13〜t14間を「首かしげ」の状況として検出すると共に、時刻t13〜t14間の時間を首かしげ状況継続時間として検出する。
次に、顔接近検出処理について図18を参照して説明する。
まず、ステップ900で、ユーザ顔撮影用カメラ14からの画像データに基づいて、顔画像を抽出する。ステップ900では、例えば、テンプレートマッチング法による画像処理により画像データが表す画像の中から顔画像を検索することにより、顔画像を抽出することができる。
次のステップ902では、上記ステップ900で抽出された顔画像の画像データに基づいて、顔画像の顔の幅(顔幅)Wを検出する。
次のステップ904では、上記ステップ902で検出された顔幅Wが、ユーザがニュートラルの状態の位置に存在している場合にユーザ顔撮影用カメラ14によって予め撮影されたユーザの顔画像の顔幅Wnと、所定値M(例えば1.2)との積(Wn・M)以上であるか否かを判定する。ここで、所定値Mは、例えば、ユーザが困惑している場合に、ユーザがカーナビゲーション装置12の表示装置24の画面を注視するために表示装置24の画面に近づいて、表示装置24の画面の前方の所定の空間内に存在したときのユーザ顔撮影用カメラ14によって予め撮影されたユーザの顔画像の顔幅Wbを、上記の顔幅Wnで割った値(Wb/Wn)である。なお、顔幅Wが、(Wn・M)以上であると判定された場合には、ユーザの顔は表示装置24の画面の前方の所定の空間内に存在している状況であり、ユーザがカーナビゲーション装置12を操作する前及び操作中のユーザの顔の位置に関する特徴量として、ユーザの顔が表示装置24の画面の前方の所定の空間内に存在している状況(「顔接近」)を示す特徴量が検出されたと判断することができる。
ステップ904で、顔幅Wが、(Wn・M)以上であると判定された場合には、ユーザの顔が表示装置24の画面の前方の所定の空間内に存在している状況であり、「顔接近」の状況であると判断して、次のステップ906へ進む。
ステップ906では、RAM18d(またはHDD18b)に記憶されている所定数のビット(例えば1ビット)のフラグである「顔接近」検出フラグ(図示しない)の値を1に設定することにより、「顔接近」検出フラグをオンにする。なお、初期段階では「顔接近」検出フラグの値は0に設定されており、「顔接近」検出フラグの値が0に設定されている場合には、「顔接近」検出フラグはオフとなる。ここで、本実施の形態では、「顔接近」検出フラグがオンになった場合には、「顔接近」の状況が検出されたと判断することができる。そして、次のステップ908へ進む。
ステップ908では、RAM18d(またはHDD18b)に記憶されているカウンタであり、計測された時間を記憶(保持)するためのカウンタである「顔接近」検出継続時間カウンタ(図示しない)の値を加算更新することにより、「顔接近」検出フラグがオンになってから当該ステップ908を実行するまでの時間を「顔接近」検出継続時間カウンタに記憶させる。より具体的に説明すると、例えば、1秒間隔で(1秒毎に)顔接近検出処理が実行された場合には、ステップ908では、1秒毎に「顔接近」検出継続時間カウンタの値が加算更新される。これにより、「顔接近」検出フラグがオンになってから当該ステップ908を実行するまでの時間が「顔接近」検出継続時間カウンタに記憶される。そして、顔接近検出処理を終了する。
一方、ステップ904で、顔幅Wが、(Wn・M)未満であると判定された場合には、には、次のステップ910へ進む。
ステップ910では、「顔接近」検出継続時間カウンタの値が示す時間が、0秒より大きいか否かを判定する。
ステップ910で、「顔接近」検出継続時間カウンタの値が示す時間が、0秒より大きいと判定された場合には、次のステップ912へ進む。ステップ912では、「顔接近」検出継続時間カウンタの値が示す時間を、「顔接近」の状況が継続した時間(顔接近状況継続時間)として検出すると共に、検出された顔接近状況継続時間を、詳細を以下で説明するステップ106で用いるために、RAM18d(またはHDD18b)に記憶させる。これにより、RAM18d(またはHDD18b)に顔接近状況継続時間が記憶される。そして、次のステップ914へ進む。また、ステップ910で、「顔接近」検出継続時間カウンタの値が示す時間が、0秒であると判定された場合には、次のステップ914へ進む。
ステップ914では、「顔接近」検出継続時間カウンタの値をクリアする(0に設定する)。そして、ステップ916へ進む。ステップ916では、「顔接近」検出フラグの値を0に設定することにより、「顔接近」検出フラグをオフにする。そして、顔接近検出処理を終了する。
以上、顔接近検出処理について説明した。顔接近検出処理によれば、例えば、図19に示すように、時刻t15〜t16で、顔幅Wが、(Wn・M)以上となる状況である場合には、時刻t15から時刻t16まで、「顔接近」検出フラグがオンとなるため、時刻t15〜t16間を「顔接近」の状況として検出すると共に、時刻t15〜t16間の時間を顔接近状況継続時間として検出する。
次に、困惑顔検出処理について図20を参照して説明する。
まず、ステップ950で、ユーザ顔撮影用カメラ14から画像データを複数取込む。
次のステップ952では、上記ステップ950で取込んだ複数の画像データに基づいて、ユーザの困惑した表情を検出するための公知の技術(例えば特開2002−258682号公報記載の技術)を用いて、ユーザの顔が困惑した表情を示している場合には、ユーザの困惑した表情を検出する。
次のステップ954では、上記ステップ952でユーザの困惑した表情を検出したか否かを判定する。なお、ユーザの困惑した表情を検出したと判定された場合には、ユーザの顔の表情は困惑した表情を示している状況であり、ユーザがカーナビゲーション装置12を操作する前及び操作中のユーザの顔の表情に関する特徴量として、ユーザの顔の表情が困惑した表情を示している状況(「困惑顔」)を示す特徴量が検出されたと判断することができる。
ステップ954で、上記ステップ952でユーザの困惑した表情を検出したと判定された場合には、ユーザの顔の表情が困惑した表情を示している状況であり、「困惑顔」の状況であると判断して、次のステップ956へ進む。
ステップ956では、RAM18d(またはHDD18b)に記憶されている所定数のビット(例えば1ビット)のフラグである「困惑顔」検出フラグ(図示しない)の値を1に設定することにより、「困惑顔」検出フラグをオンにする。なお、初期段階では「困惑顔」検出フラグの値は0に設定されており、「困惑顔」検出フラグの値が0に設定されている場合には、「困惑顔」検出フラグはオフとなる。ここで、本実施の形態では、「困惑顔」検出フラグがオンになった場合には、「困惑顔」の状況が検出されたと判断することができる。そして、次のステップ958へ進む。
ステップ958では、RAM18d(またはHDD18b)に記憶されているカウンタであり、計測された時間を記憶(保持)するためのカウンタである「困惑顔」検出継続時間カウンタ(図示しない)の値を加算更新することにより、「困惑顔」検出フラグがオンになってから当該ステップ958を実行するまでの時間を「困惑顔」検出継続時間カウンタに記憶させる。より具体的に説明すると、例えば、1秒間隔で(1秒毎に)顔接近検出処理が実行された場合には、ステップ958では、1秒毎に「困惑顔」検出継続時間カウンタの値が加算更新される。これにより、「困惑顔」検出フラグがオンになってから当該ステップ958を実行するまでの時間が「困惑顔」検出継続時間カウンタに記憶される。そして、困惑顔検出処理を終了する。
一方、ステップ954で、上記ステップ952でユーザの困惑した表情を検出していないと判定された場合には、次のステップ960へ進む。
ステップ960では、「困惑顔」検出継続時間カウンタの値が示す時間が、0秒より大きいか否かを判定する。
ステップ960で、「困惑顔」検出継続時間カウンタの値が示す時間が、0秒より大きいと判定された場合には、次のステップ962へ進む。ステップ962では、「困惑顔」検出継続時間カウンタの値が示す時間を、「困惑顔」の状況が継続した時間(困惑顔状況継続時間)として検出すると共に、検出された困惑顔状況継続時間を、詳細を以下で説明するステップ106で用いるために、RAM18d(またはHDD18b)に記憶させる。これにより、RAM18d(またはHDD18b)に困惑顔状況継続時間が記憶される。そして、次のステップ964へ進む。また、ステップ960で、「困惑顔」検出継続時間カウンタの値が示す時間が、0秒であると判定された場合には、次のステップ964へ進む。
ステップ964では、「困惑顔」検出継続時間カウンタの値をクリアする(0に設定する)。そして、ステップ966へ進む。ステップ966では、「困惑顔」検出フラグの値を0に設定することにより、「困惑顔」検出フラグをオフにする。そして、困惑顔検出処理を終了する。
以上、困惑顔検出処理について説明した。なお、上記では、ステップ102(より詳しくは指先ジェスチャー検出処理における指先の停滞検出処理、指先ジェスチャー検出処理における指先の右往左往検出処理、指先ジェスチャー検出処理における指先のふらつき検出処理、非操作発話検出処理、首かしげ検出処理、顔接近検出処理、及び困惑顔検出処理)で、ユーザの指先がカーナビゲーション装置12のタッチパネル22の前方の所定の空間内で所定時間T1秒以上静止している状況、ユーザの指先がこの所定の空間内で所定時間T2秒以上連続して移動している状況、ユーザの指先がこの所定の空間内で所定時間T3秒以上連続して存在している状況、困惑時に発話する語をユーザが発話した状況、ユーザの顔が表示装置24の画面の前方の所定の空間内に存在している状況、ユーザの顔がニュートラルの状態から所定角度θth以上傾いている状況、及びユーザの顔の表情が困惑した表情を示している状況の各状況を示す各特徴量を操作時のユーザの特徴量として検出することにより、各状況を検出する例について説明したが、本発明はこれに限られない。例えば、ステップ102(より詳しくは指先ジェスチャー検出処理における指先の停滞検出処理、指先ジェスチャー検出処理における指先の右往左往検出処理、指先ジェスチャー検出処理における指先のふらつき検出処理、非操作発話検出処理、首かしげ検出処理、顔接近検出処理、及び困惑顔検出処理の少なくとも1つの検出処理)で、ユーザの指先がカーナビゲーション装置12のタッチパネル22の前方の所定の空間内で所定時間T1秒以上静止している状況、ユーザの指先がこの所定の空間内で所定時間T2秒以上連続して移動している状況、ユーザの指先がこの所定の空間内で所定時間T3秒以上連続して存在している状況、困惑時に発話する語をユーザが発話した状況、ユーザの顔が表示装置24の画面の前方の所定の空間内に存在している状況、ユーザの顔がニュートラルの状態から所定角度θth以上傾いている状況、及びユーザの顔の表情が困惑した表情を示している状況の少なくとも1つの状況を示す特徴量を、操作時のユーザの特徴量として検出するようにしてもよい。この場合には、この少なくとも1つの状況を示す特徴量を操作時のユーザの特徴量として困惑度推定データベース26に登録しておくとよい。
ここで、図7に示された困惑度推定処理の説明に戻る。次のステップ104では、上記ステップ102における各検出処理によって検出された各特徴量(上記の例では、「指先の停滞」、「指先の右往左往」、「指先のふらつき」、「困惑発話」、「無操作」、「操作の戻り」、「操作の停滞」、「首かしげ」、「顔接近」、及び「困惑顔」の各状況を示す各特徴量)28に対応する各ID30を困惑度推定データベース26から取得する。
次のステップ106では、上記ステップ104で取得された各ID30と、この各ID30が示す各特徴量28に対応する、上記ステップ102における各検出処理によって検出された各継続時間(上記の例では、指先の停滞状況継続時間、指先の右往左往状況継続時間、指先のふらつき状況継続時間、困惑発話状況継続時間、無操作状況継続時間、操作の戻り状況継続時間、操作の停滞状況継続時間、首かしげ状況継続時間、顔接近状況継続時間、及び困惑顔状況継続時間)32との組を履歴としてHDD18bに記憶する。
次のステップ108では、HDD18bに記憶された履歴内容が、困惑度推定データベース26に時系列パターン36として登録されているか否かを判定する。なお、ステップ108では、履歴内容をキーとして困惑度推定データベース26に検索をかけることにより、履歴内容が困惑度推定データベース26に時系列パターン36として登録されているか否かを判定することができる。
ステップ108で、履歴内容が困惑度推定データベース26に時系列パターン36として登録されていないと判定された場合には、ユーザは困惑していないと判断して(ユーザが困惑している状況ではないと判断して)、困惑度推定処理を終了する。
一方、ステップ108で、履歴内容が困惑度推定データベース26に時系列パターン36として登録されていると判定された場合には、次のステップ110へ進む。
ステップ110では、履歴内容に対応する時系列パターン36に対応する困惑度38を困惑度推定データベース26から取得する。
そして、次のステップ112では、上記ステップ110で取得した困惑度38をユーザの困惑度とすることにより、ユーザの困惑度を推定する。そして、困惑度推定処理を終了する。
一方、ステップ114では、上記の各フラグ(指先領域内フラグ、指先移動中フラグ、指先静止中フラグ、「指先の停滞」検出フラグ、「指先の右往左往」検出フラグ、「指先のふらつき」検出フラグ、「無操作」検出フラグ、「首かしげ」検出フラグ、「顔接近」検出フラグ、「困惑顔」検出フラグ)の値を0に設定することにより、各フラグをオフ(OFF)にする。また、ステップ114では、上記の各カウンタ(指先領域内時間カウンタ、指先移動中時間カウンタ、指先静止中時間カウンタ、「指先の停滞」検出継続時間カウンタ、「指先の右往左往」検出継続時間カウンタ、「指先のふらつき」検出継続時間カウンタ、無操作中時間カウンタ、「無操作」検出継続時間カウンタ、「首かしげ」検出継続時間カウンタ、「顔接近」検出継続時間カウンタ、「困惑顔」検出継続時間カウンタ)の値をクリアする(0に設定する)。そして、困惑度推定処理を終了する。
なお、ステップ100、102(より詳しくは機器操作情報検出処理)は、例えば、第1の検出手段70で実行され、ステップ102(より詳しくは指先ジェスチャー検出処理、非操作発話検出処理、首かしげ検出処理、顔接近検出処理、及び困惑顔検出処理)は、例えば、第2の検出手段72で実行され、ステップ104〜114は、例えば、推定手段76で実行される。
以上、本実施の形態の困惑度推定装置10について説明した。本実施の形態の困惑度推定装置10は、記憶手段としてのHDD18bを備えている。このHDD18bには、操作時の機器内部の特徴量28aまたは28b及びこの特徴量28aまたは28bが示すユーザの困惑状況の継続時間32の組34、並びに操作時のユーザの特徴量28cまたは28d及びこの特徴量28cまたは28dが示すユーザの困惑状況の継続時間32の組34の少なくとも一方の組34の複数のパターン(時系列パターン)36の各々に対して、ユーザがカーナビゲーション装置12を操作する際の操作に関する困惑度38が予め記憶されている。
本実施の形態の困惑度推定装置10によれば、ステップ102(より詳しくは機器操作情報検出処理)で、ユーザが操作対象機器としてのカーナビゲーション装置12を操作した際の入力情報及びこの入力情報に応じた機器内部の状態変化に関し、かつユーザの困惑状況を示す操作時の機器内部の特徴量28aまたは28b、及びこの操作時の機器内部の特徴量28aまたは28bが示すユーザの困惑状況の継続時間32を検出する。また、ステップ102(より詳しくは指先ジェスチャー検出処理、非操作発話検出処理、首かしげ検出処理、顔接近検出処理、及び困惑顔検出処理)で、ユーザがカーナビゲーション装置12を操作する前及び操作中のユーザの動作及び表情に関し、かつユーザの困惑状況を示す操作時のユーザの特徴量28cまたは28d、及びこの操作時のユーザの特徴量28cまたは28dが示すユーザの困惑状況の継続時間32を検出する。そして、ステップ104〜114の処理によって、ステップ102で検出された特徴量28a〜28d及び継続時間32の組34、並びにHDD18bに記憶された内容に基づいて、検出された特徴量28a〜28d及び継続時間32の組34のパターン36に対する困惑度38をユーザの困惑度として推定する。
従って、本実施の形態の困惑度推定装置10によれば、ユーザの困惑度を網羅的に推定することができ、ユーザの困惑度を精度良く推定することができる。
なお、困惑度推定装置10に、ユーザの操作を支援する支援装置を組み合わせることで、例えば、推定されたユーザの困惑度に応じて、ユーザがあまり困っていないと判断できる場合には操作のヒントを出すだけに留め、ユーザがとても困っていると判断できる場合には操作ウィザードのような時間はかかるかもしれないが確実に操作を完了できる誘導を行うなど、ユーザ主導とシステム主導とを適切に切替えることでユーザに対して気の利いた操作性の提供が可能となる。
また、本実施の形態の困惑度推定装置10単体を、操作対象機器の操作性をリアルタイムに評価するツールとして活用することができる。
なお、上記では、困惑度推定装置10が統計的パターン認識手法によってユーザの困惑度を推定する例について説明したが、ニューラルネットワークやサポートベクトルマシンなどの機械学習によってユーザの困惑度を推定するようにしてもよい。
また、以下のように困惑度推定装置10が動作するようにしてもよい。すなわち、ステップ102(より詳しくは機器操作情報検出処理)で、ユーザが操作対象機器としてのカーナビゲーション装置12を操作した際の入力情報及びこの入力情報に応じた機器内部の状態変化の少なくとも一方に関し、かつユーザの困惑状況を示す操作時の機器内部の特徴量28aまたは28b、及びこの操作時の機器内部の特徴量28aまたは28bが示すユーザの困惑状況の継続時間32を検出するようにしてもよく、また、ステップ102(より詳しくは指先ジェスチャー検出処理、非操作発話検出処理、首かしげ検出処理、顔接近検出処理、及び困惑顔検出処理)で、ユーザがカーナビゲーション装置12を操作する前及び操作中のユーザの動作及び表情の少なくとも一方に関し、かつユーザの困惑状況を示す操作時のユーザの特徴量28cまたは28d、及びこの操作時のユーザの特徴量28cまたは28dが示すユーザの困惑状況の継続時間32を検出するようにしてもよい。
また、本実施の形態では、各状況の継続時間32を検出して、ユーザの困惑度を推定する際に、その検出された継続時間32を考慮する例について説明したが、このような継続時間32を検出せずに、ユーザの困惑度を推定する際に、特徴量の時系列パターンのみを考慮するようにしてもよい。この場合には、困惑度推定装置10の構成及び動作は以下のようになる。
例えば、困惑度推定装置10のHDD18bには、操作時の機器内部の特徴量28aまたは28b、及び操作時のユーザの特徴量28cまたは28dの少なくとも一方の特徴量28の複数のパターン(時系列パターン)36の各々に対して、ユーザがカーナビゲーション装置12を操作する際の操作に関する困惑度38が予め記憶される。そして、困惑度推定装置10は、ステップ102(より詳しくは機器操作情報検出処理)で、ユーザが操作対象機器としてのカーナビゲーション装置12を操作した際の入力情報及びこの入力情報に応じた機器内部の状態変化に関する操作時の機器内部の特徴量28aまたは28bを検出する。また、困惑度推定装置10は、ステップ102(より詳しくは指先ジェスチャー検出処理、非操作発話検出処理、首かしげ検出処理、顔接近検出処理、及び困惑顔検出処理)で、ユーザがカーナビゲーション装置12を操作する前及び操作中のユーザの動作及び表情に関する操作時のユーザの特徴量28cまたは28dを検出する。そして、ステップ104〜114の処理によって、ステップ102で検出された特徴量28a〜28d、及びHDD18bに記憶された内容に基づいて、検出された特徴量28a〜28dのパターン36に対する困惑度38をユーザの困惑度として推定する。なお、このとき、ステップ102(より詳しくは機器操作情報検出処理)で、ユーザが操作対象機器としてのカーナビゲーション装置12を操作した際の入力情報及びこの入力情報に応じた機器内部の状態変化の少なくとも一方に関する操作時の機器内部の特徴量28aまたは28bを検出し、また、ステップ102(より詳しくは指先ジェスチャー検出処理、非操作発話検出処理、首かしげ検出処理、顔接近検出処理、及び困惑顔検出処理)で、ユーザがカーナビゲーション装置12を操作する前及び操作中のユーザの動作及び表情の少なくとも一方に関する操作時のユーザの特徴量28cまたは28dを検出してもよい。