(57)【要約】【課題】従来とは異なる態様でユーザに振動を提示できる操作デバイスを含む制御システムを提供する。【解決手段】ユーザによる操作の対象となる操作ボタンと、操作ボタンを振動させる振動機構と、を備える操作デバイスと、振動機構による振動を制御する制御装置と、を含み、制御装置は、操作ボタンの可動部の押し込み量が押し込み可能な最大量になった場合に、振動機構に対する制御内容を変化させる制御システムである。【選択図】図１
2020074078.tif 000002
【特許請求の範囲】
【請求項１】
ユーザによる操作の対象となる操作ボタンと、
前記操作ボタンを振動させる振動機構と、
を備える操作デバイスと、
前記振動機構による振動を制御する制御装置と、
を含み、
前記制御装置は、前記操作ボタンの可動部の押し込み量が押し込み可能な最大量になった場合に、前記振動機構に対する制御内容を変化させる
ことを特徴とする制御システム。
【請求項２】
請求項１に記載の制御システムにおいて、
前記制御装置は、前記可動部の押し込み量が押し込み可能な最大量になったタイミングで、前記振動機構が発生させる振動を停止させる
ことを特徴とする制御システム。
【請求項３】
請求項１に記載の制御システムにおいて、
前記操作デバイスは、当該操作デバイスの本体を振動させる本体振動機構をさらに含み、
前記制御装置は、前記本体振動機構を動作させている間に前記可動部の押し込み量が押し込み可能な最大量になった場合に、前記振動機構が発生させる振動を、前記本体振動機構が発生させる振動と共通化させる
ことを特徴とする制御システム。
【請求項４】
ユーザによる操作の対象となる操作ボタンと、
前記操作ボタンを振動させる振動機構と、
前記操作ボタンの表面にユーザの身体が近づいたことを検出するための近接センサと、
を備える操作デバイスと、
前記振動機構による振動を制御する制御装置と、
を含み、
前記制御装置は、前記近接センサの検出結果に基づいて、前記ユーザが前記操作ボタンの操作を開始するタイミングを推定し、当該推定の結果に応じて、前記振動機構による振動を開始させるタイミングを決定する
ことを特徴とする制御システム。
【請求項５】
ユーザによる操作の対象となる操作ボタンと、
前記操作ボタンを振動させる振動機構と、
前記操作ボタンの表面にユーザの身体が近づいたことを検出するための近接センサと、
を備える操作デバイスと、
前記振動機構による振動を制御する制御装置と、
を含み、
前記制御装置は、前記近接センサの検出結果、及び、前記操作ボタンの操作量の組み合わせを、前記操作ボタンに対するユーザの操作内容を表す情報として受け付ける
ことを特徴とする制御システム。
【請求項６】
請求項５に記載の制御システムにおいて、
前記制御装置は、ユーザが前記操作ボタンの表面に指を接触させ、かつ、前記操作ボタンを操作していない状態になった場合に、所定の処理を実行する
ことを特徴とする制御システム。
【請求項７】
請求項５に記載の制御システムにおいて、
前記制御装置は、前記近接センサが検出する前記操作ボタンの表面から前記ユーザの指までの距離、及び、前記操作ボタンの操作量の双方に基づいて算出される値を、ユーザの操作入力値として受け付ける
ことを特徴とする制御システム。
【請求項８】
ユーザによる操作の対象となる操作ボタンと、
前記操作ボタンを振動させる振動機構と、
を備える操作デバイスを制御する制御装置であって、
前記操作ボタンの可動部の押し込み量を取得する取得部と、
前記取得した押し込み量に応じた制御内容で、前記振動機構を振動させる制御部と、
を含み、
前記制御部は、前記操作ボタンの可動部の押し込み量が押し込み可能な最大量になった場合に、前記振動機構に対する制御内容を変化させる
ことを特徴とする制御装置。
【請求項９】
ユーザによる操作の対象となる操作ボタンと、
前記操作ボタンを振動させる振動機構と、
を備える操作デバイスを制御する制御方法であって、
前記操作ボタンの可動部の押し込み量を取得するステップと、
前記取得した押し込み量に応じた制御内容で、前記振動機構を振動させるステップと、
を含み、
前記振動機構を振動させるステップでは、前記取得した押し込み量が押し込み可能な最大量になった場合に、前記振動機構に対する制御内容を変化させる
ことを特徴とする制御方法。
【請求項１０】
ユーザによる操作の対象となる操作ボタンと、前記操作ボタンを振動させる振動機構と、を備える操作デバイスと接続されるコンピュータに、
前記操作ボタンの可動部の押し込み量を取得するステップと、
前記取得した押し込み量に応じた制御内容で、前記振動機構を振動させるステップと、
を実行させるためのプログラムであって、
前記振動機構を振動させるステップでは、前記取得した押し込み量が押し込み可能な最大量になった場合に、前記振動機構に対する制御内容を変化させる
ことを特徴とするプログラム。
【請求項１１】
ユーザによる操作の対象となる操作ボタンと、
前記操作ボタンを振動させる振動機構と、
前記操作ボタンの表面にユーザの身体が近づいたことを検出するための近接センサと、
を備える操作デバイスを制御する制御装置であって、
前記近接センサの検出結果を取得する取得部と、
前記取得した検出結果に基づいて、前記ユーザが前記操作ボタンの操作を開始するタイミングを推定し、当該推定の結果に応じて決定されるタイミングで、前記振動機構による振動を開始させる制御部と、
を含むことを特徴とする制御装置。
【請求項１２】
ユーザによる操作の対象となる操作ボタンと、
前記操作ボタンを振動させる振動機構と、
前記操作ボタンの表面にユーザの身体が近づいたことを検出するための近接センサと、
を備える操作デバイスを制御する制御方法であって、
前記近接センサの検出結果を取得するステップと、
前記取得した検出結果に基づいて、前記ユーザが前記操作ボタンの操作を開始するタイミングを推定し、当該推定の結果に応じて決定されるタイミングで、前記振動機構による振動を開始させるステップと、
を含むことを特徴とする制御方法。
【請求項１３】
ユーザによる操作の対象となる操作ボタンと、
前記操作ボタンを振動させる振動機構と、
前記操作ボタンの表面にユーザの身体が近づいたことを検出するための近接センサと、
を備える操作デバイスと接続されるコンピュータに、
前記近接センサの検出結果を取得するステップと、
前記取得した検出結果に基づいて、前記ユーザが前記操作ボタンの操作を開始するタイミングを推定し、当該推定の結果に応じて決定されるタイミングで、前記振動機構による振動を開始させるステップと、
を実行させるためのプログラム。
【請求項１４】
ユーザによる操作の対象となる操作ボタンと、
前記操作ボタンを振動させる振動機構と、
前記操作ボタンの表面にユーザの身体が近づいたことを検出するための近接センサと、
を備える操作デバイスを制御する制御装置であって、
前記近接センサの検出結果を取得する取得部と、
前記取得した検出結果、及び、前記操作ボタンの操作量の組み合わせを、前記操作ボタンに対するユーザの操作内容を表す情報として受け付ける操作受付部と、
を含むことを特徴とする制御装置。
【請求項１５】
ユーザによる操作の対象となる操作ボタンと、
前記操作ボタンを振動させる振動機構と、
前記操作ボタンの表面にユーザの身体が近づいたことを検出するための近接センサと、
を備える操作デバイスを制御する制御方法であって、
前記近接センサの検出結果を取得するステップと、
前記取得した近接センサの検出結果、及び、前記操作ボタンの操作量の組み合わせを、前記操作ボタンに対するユーザの操作内容を表す情報として受け付けるステップと、
を含むことを特徴とする制御方法。
【請求項１６】
ユーザによる操作の対象となる操作ボタンと、
前記操作ボタンを振動させる振動機構と、
前記操作ボタンの表面にユーザの身体が近づいたことを検出するための近接センサと、
を備える操作デバイスと接続されるコンピュータに、
前記近接センサの検出結果を取得するステップと、
前記近接センサの検出結果、及び、前記操作ボタンの操作量の組み合わせを、前記操作ボタンに対するユーザの操作内容を表す情報として受け付けるステップと、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザの操作を受け付けるための操作ボタンを備える操作デバイス、当該操作デバイスを含む制御システム、当該操作デバイスを制御する制御装置、制御方法、及び制御プログラムに関する。
【背景技術】
【０００２】
家庭用ゲーム機等における操作デバイスは、ユーザが行ったボタン押下やデバイスを振る等の動作を検出して、ゲーム機等の本体に当該検出したユーザの動作を表す情報を送出している。こうした操作デバイスの中には、振動アクチュエータのように操作デバイス本体を振動させる振動機構を備えるものがある。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
上記従来例の技術では、操作デバイスの全体を振動させるだけなので、ユーザへの振動の提示の仕方が限られていた。
【０００４】
本発明は上記実情を考慮してなされたものであって、その目的の一つは、従来とは異なる態様でユーザに振動を提示できる操作デバイス、当該操作デバイスを含む制御システム、当該操作デバイスを制御する制御装置、制御方法、及び制御プログラムを提供することにある。
【課題を解決するための手段】
【０００５】
本発明に係る制御システムは、ユーザによる操作の対象となる操作ボタンと、前記操作ボタンを振動させる振動機構と、を備える操作デバイスと、前記振動機構による振動を制御する制御装置と、を含むことを特徴とする。
【０００６】
本発明に係る操作デバイスは、ユーザによる操作の対象となる操作ボタンと、前記操作ボタンを振動させる振動機構と、を備える操作デバイスである。
【０００７】
本発明に係る制御装置は、ユーザによる操作の対象となる操作ボタンと、前記操作ボタンを振動させる振動機構と、を備える操作デバイスを制御する制御装置であって、前記操作ボタンの操作量を取得する取得部と、前記操作ボタンの操作量に応じた制御内容で、前記振動機構を振動させる制御部と、を含むことを特徴とする。
【０００８】
本発明に係る制御方法は、ユーザによる操作の対象となる操作ボタンと、前記操作ボタンを振動させる振動機構と、を備える操作デバイスを制御する制御方法であって、前記操作ボタンの操作量を取得するステップと、前記操作ボタンの操作量に応じた制御内容で、前記振動機構を振動させるステップと、を含むことを特徴とする。
【０００９】
本発明に係るプログラムは、ユーザによる操作の対象となる操作ボタンと、前記操作ボタンを振動させる振動機構と、を備える操作デバイスを制御するためのプログラムであって、前記操作ボタンの操作量を取得する取得部、及び、前記操作ボタンの操作量に応じた制御内容で、前記振動機構を振動させる制御部、としてコンピュータを機能させるためのプログラムである。このプログラムは、コンピュータ読み取り可能で非一時的な情報記憶媒体に格納されて提供されてよい。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施の形態に係る操作デバイスを正面側から見た斜視図である。
【図２】本発明の実施の形態に係る操作デバイスを背面側から見た斜視図である。
【図３Ａ】本発明の実施の形態に係る操作デバイスが備えるロッキングボタンを表側から見た斜視図である。
【図３Ｂ】本発明の実施の形態に係る操作デバイスが備えるロッキングボタンを裏側から見た斜視図である。
【図４】制御装置の構成例を表すブロック図である。
【図５】制御装置の機能を表す機能ブロック図である。
【図６】制御装置が実行する処理の流れの一例を示すフロー図である。
【図７】ボタン振動機構を制御する際の補正係数の決定方法の一例を説明する図である。
【図８】ボタン振動機構と力覚提示装置を連動させて制御する例を説明する図である。
【図９】一つの振動制御要求に対して複数のデバイスを動作させる場合の制御内容を説明する図である。
【図１０】仮想空間に配置された仮想オブジェクトを操作する様子を示す図である。
【図１１】指センサによる検出結果とロッキングボタンに対する押し込み量とを組み合わせる例におけるユーザの操作内容と操作量の関係を示す図である。
【図１２】本体振動機構の配置例を模式的に示す図である。
【発明を実施するための形態】
【００１１】
本発明の実施の形態について図面を参照しながら説明する。なお、以下の説明において各部の大きさやその比、配置等は一例であり、本実施の形態の例は、図示等した大きさや比率、配置に限られるものではない。
【００１２】
本発明の実施の形態の一例に係る制御システム１は、制御装置１０と、操作デバイス２０とを含んで構成されている。操作デバイス２０は、図１，図２に例示するようなものである。図１は操作デバイス２０を正面側から見た斜視図であり、図２は操作デバイス２０を背面側から見た斜視図である。本実施の形態の一例では、この操作デバイス２０は、デバイス本体２１０と、附属品の一つである固定具２２０とを含んで構成される。
【００１３】
デバイス本体２１０は、ユーザにより把持される把持部２１１と、操作部２１２とを含む。把持部２１１は、左側面２２１及び右側面２２２を有し、本実施の形態の一例では実質的に多角形柱状をなしている。操作部２１２は、把持部２１１から連続して形成されており、図１，２の例では、正面側に親指センサ部２３１と、ボタン操作部２３２とを含み、背面側には、第１指センサ２３３と、ロッキングボタン２３４と、表示部２３５とを含む。また把持部２１１の背面側には、第２指センサ２４１と、第３指センサ２４２とが配されている。
【００１４】
デバイス本体２１０の左側面２２１または右側面２２２のいずれか一方側には、附属品としての固定具２２０が固定される。また、左側面２２１または右側面２２２の他方側には、別の附属品としてのバッテリ２４０が固定されてもよい。本実施の形態の例では、固定具２２０は可撓性あるベルトを環状としたものである。
【００１５】
この操作デバイス２０は、固定具２２０にユーザの人差指から小指までを通し、デバイス本体２１０をユーザの親指の付根に当接させた位置に固定して用いる。図１，２の例では、このときには、操作デバイス２０の右側面２２２側がユーザの手の平に押付けられて操作デバイス２０が固定される。またこの操作デバイス２０の大きさは、ここでユーザが自然にデバイス本体２１０を把持すると、ユーザの親指末節は操作デバイス２０の正面側のボタン操作部２３２に到達し、ユーザの親指の基節側が親指センサ部２３１に近接する程度の大きさとする。またこのときユーザの人差指は操作デバイス２０背面側のロッキングボタン２３４に触れる位置となり、ユーザは把持部２１１を手の平と、中指、薬指、小指とで握りこむようになるものとする。もっとも、この状態からユーザが手を開いても、固定具２２０により操作デバイス２０はユーザの手に固定されるので、操作デバイス２０が落下することはない。
【００１６】
親指センサ部２３１は、例えば、ユーザが自然にデバイス本体２１０を把持したとき、ユーザの親指の末節側が到達する位置よりやや下方、ユーザの親指の基節側が近接する位置に配される。この親指センサ部２３１は、操作デバイス２０の正面側であって操作デバイス２０の表面の法線方向を中心とし、操作デバイス２０正面の左側面側から右側面側までの比較的広角の角度範囲を検出可能範囲として、この検出可能範囲においてユーザの親指を検出する。そして当該親指を検出した位置（上記角度範囲内の角度）と、親指センサ部２３１から、検出したユーザの親指までの距離とを検出し、これらの情報を含む、検出結果情報を制御装置１０に出力する。この親指センサ部２３１は例えば、カメラや、光学センサ、焦電センサ、静電容量センサ等、どのようなものでも構わない。ボタン操作部２３２は、少なくとも一つのボタンを含み、ユーザの押下操作があったときに、押下操作がされたボタンを特定する情報を制御装置１０に出力する。また、ボタン操作部２３２は、その中央に傾倒操作部材２３２ａを含んでいる。傾倒操作部材２３２ａは、ユーザが親指で任意の方向に傾ける操作（傾倒操作）を行って方向を指示するための操作部材であり、傾倒操作が行われた場合に傾き方向及び傾き量の情報を制御装置１０に出力する。
【００１７】
ロッキングボタン２３４は、操作デバイス２０の背面側に突出した第１の位置と、操作デバイス２０側へ押し込まれた第２の位置との間で揺動するボタンである。ロッキングボタン２３４は、ユーザの人差指等で押し込み操作され、その押し込み量を表す情報を制御装置１０に出力する。具体的にこのロッキングボタン２３４は、ポテンショメータ等を含んで構成できるが、押し込み量が検出できれば、この構成に限られるものではない。ロッキングボタン２３４の構成の具体例については、後に詳しく説明する。
【００１８】
また本実施の形態においてはこのロッキングボタン２３４に、第１指センサ２３３が取り付けられる。第１指センサ２３３は、ロッキングボタン２３４の表面の法線方向を中心とする操作デバイス２０の背面側の所定の角度範囲を検出可能範囲として、この検出可能範囲においてユーザの人差指を検出する。すなわち、当該人差指の位置（上記角度範囲内の角度）と、第１指センサ２３３から人差指までの距離とを検出し、これらの情報を含む、検出結果情報を制御装置１０に出力する。この第１指センサ２３３は、親指センサ部２３１同様、光学センサ等の各種のセンサであってよい。
【００１９】
さらに本実施の形態の一例では、ロッキングボタン２３４には、力覚提示装置が接続されている。この力覚提示装置は、制御装置１０から入力される指示に従い、ロッキングボタン２３４の押し込みに抗する力を提示する。具体的にこの力覚提示装置は、ロッキングボタン２３４を押し込むときに回転するロータを含むモーターや、ロッキングボタン２３４の押し込みにより被駆動体が直線的に移動するリニアアクチュエータ等で構成できる。このようにモーター等を用いる場合、力覚提示装置は押し込みによる回転や被駆動体の移動があったときに、当該回転や移動とは逆方向に力を加えるようモーターやアクチュエータを制御する。このような力覚提示装置については広く知られたものを採用できるので、ここでの詳しい説明を省略する。
【００２０】
表示部２３５は、例えば多色に発光可能なＬＥＤ（Light Emission Diode）を含む。この表示部２３５は、制御装置１０から入力される指示に従い、ＬＥＤを、当該指示された発光態様（指示された色で点灯、あるいは指示された間隔で断続的に点灯するなどの態様）で発光させる。
【００２１】
第２指センサ２４１は、操作デバイス２０の把持部２１１にユーザの中指がどの程度近接しているかを検出する。そして当該検出の結果を表す情報を、制御装置１０に出力する。同様に、第３指センサ２４２は、操作デバイス２０の把持部２１１にユーザの薬指及び小指のそれぞれがどの程度近接しているかを検出する。そして当該検出の結果を表す情報を、制御装置１０に出力する。これら第２指センサ２４１、第３指センサ２４２はいずれも、静電容量センサや光学センサ等で構成できる。ここで光学センサは、赤外光を放射する発光部と、赤外光を検出する受光部とを有し、発光部から放射された光が対象物に反射して受光部に入射する割合を測定するものなどがある。このような光学センサによると、光学センサ近傍に対象物が近接するほど、受光部に入射する光の強度を発光部から放射された光の強度で除した割合（比強度と呼ぶ）ｒが大きくなるので、対象物までの距離が計測できる。また、光学センサは、ＴＯＦ（Time-of-Flight）方式で対象物までの距離を計測するものでもよい。この場合、発光部から放射された光が対象物に反射して受光部に入射するまでに要する時間から、対象物までの距離を計測する。
【００２２】
また本実施の形態では、操作デバイス２０は、左側面２２１と右側面２２２とのいずれの側に、所定の附属品である固定具２２０が固定されているかを検出するセンサ（固定具センサ）を備えている。この固定具センサは具体的には、固定具２２０を装着したときにオンとなるマイクロスイッチ等を、左側面２２１と右側面２２２とにそれぞれ配することで実現できる。このような所定の附属品を取り付けたときに、取り付けた側を検出する構成については、その他広く知られた方法を用いることができるので、ここでの詳しい説明を省略する。本実施の形態では、この固定具センサによる検出の結果は制御装置１０に入力される。
【００２３】
また、デバイス本体２１０は、その筐体内にスピーカー２５１、マイクロフォン２５２、及び本体振動機構２５３を内蔵している。本体振動機構２５３は、振動アクチュエータ等であって、デバイス本体２１０を振動させ、操作デバイス２０が固定されているユーザの手に振動を伝達する。特に本実施形態において、本体振動機構２５３は、複数の方向にデバイス本体２１０を振動させるものとする。具体的に、本体振動機構２５３は、左右方向（図のＸ軸方向）、上下方向（図のＹ軸方向）、及び前後方向（図のＺ軸方向）のそれぞれにデバイス本体２１０を振動させるものであってよい。なお、デバイス本体２１０には複数の本体振動機構２５３が内蔵されてもよい。
【００２４】
さらに、操作デバイス２０の筐体表面には、表示部２３５とは別に、ポジショントラッキング用の発光素子が配置されることとする。発光素子は複数個配置されてもよい。制御装置１０は、この発光素子が発する光の位置から、操作デバイス２０の実空間内における位置を特定する。
【００２５】
ここで、ロッキングボタン２３４の構成例について、図３Ａ及び図３Ｂを用いて説明する。図３Ａはロッキングボタン２３４を表側（操作デバイス２０の背面側）から見た図であって、図３Ｂは裏側（操作デバイス２０側）から見た図である。これらの図に示されるように、ロッキングボタン２３４は、ユーザによる操作対象となり、ユーザの指からの圧力によって押し込まれる可動部３０と、可動部３０内に内蔵されるボタン振動機構３１と、可動部３０が取り付けられている基台３２と、を含んで構成される。また、図３Ａに示されるように、可動部３０の表面に第１指センサ２３３が取り付けられている。
【００２６】
可動部３０は、回転軸３２ａを回転中心として回動可能に基台３２に取り付けられている。図３Ａ、及び図３Ｂは、ユーザがロッキングボタン２３４を操作していない状態（無操作状態）を示しており、この状態において可動部３０はデバイス本体２１０から最も離れた第１の位置にある。ユーザが可動部３０を人差指で押し込む押圧操作を行うと、図３Ａにおいてブロック矢印で示されるように、可動部３０は回転軸３２ａを回転中心としてデバイス本体２１０に近づく方向に回転移動する。そのまま移動して可動部３０の端部が基台３２に当接する位置（第２の位置）に到達すると、それ以上可動部３０を押し込むことができなくなる。以下では、この可動部３０が最も押し込まれてデバイス本体２１０に近づいた状態を最大操作状態という。すなわち、可動部３０の可動範囲は第１の位置と第２の位置との間であり、この範囲でユーザの操作に応じて回転移動する。操作デバイス２０は、定期的に可動部３０がこの可動範囲のどの位置にあるかを検出し、検出した位置の情報をユーザのロッキングボタン２３４に対する操作量を表す情報として制御装置１０に対して送信する。これにより制御装置１０は、ユーザがどの程度可動部３０を押し込む操作を行ったかを把握できる。なお、可動部３０は、ユーザが人差指を可動部３０から離すと第１の位置に復帰するようにバネ等によって付勢されている。
【００２７】
ボタン振動機構３１は、振動アクチュエータ等により構成されており、ロッキングボタン２３４の可動部３０を振動させる。ユーザの人差指が可動部３０表面に接触している状態でボタン振動機構３１が作動すると、可動部３０の振動がユーザの人差指に伝達される。これによりユーザは、デバイス本体２１０の全体が振動する場合とは異なり、操作中の指だけに振動を感じることになる。そのため、ユーザのロッキングボタン２３４に対する操作に合わせてボタン振動機構３１を作動させることにより、単なるボタン操作時とは異なる操作感をユーザに体験させることができる。
【００２８】
ボタン振動機構３１は、少なくともロッキングボタン２３４の操作方向（すなわち、図３Ａにおいてブロック矢印で示される可動部３０の回転方向）に沿った向きの振動を発生させることが望ましい。この方向は、可動部３０の表面に交差する方向でもある。もともと可動部３０は操作方向に沿って回動するように構成されているので、このような向きに振動を発生させることで、可動部３０だけを振動させ、ボタン振動機構３１による振動がデバイス本体２１０まで伝達することを抑制できる。これにより、ロッキングボタン２３４をデバイス本体２１０と独立に振動させることができる。なお、ボタン振動機構３１は、効率的に可動部３０を振動させるために、可動部３０の回転中心から離れた位置に配置することが望ましい。本実施形態では図３Ｂに示すように、ボタン振動機構３１は、可動部３０の長手方向（回転軸３２ａに直交する方向）の中心よりも回転軸３２ａから遠い側に配置されている。
【００２９】
制御装置１０は、操作デバイス２０と通信接続される情報処理装置であって、例えば家庭用ゲーム機やパーソナルコンピュータ等であってよい。また、本実施形態において制御装置１０は、表示装置１４とも通信接続される。この制御装置１０は図４に例示するように、制御部１１と、記憶部１２と、通信部１３とを含んで構成されている。制御部１１は、ＣＰＵ等のプログラム制御デバイスを含み、記憶部１２に格納されたプログラムに従って各種の情報処理を実行する。この制御部１１の具体的な処理の内容については、後に詳しく述べる。
【００３０】
記憶部１２は、メモリデバイス等であり、制御部１１によって実行されるプログラムを保持する。このプログラムは、コンピュータ可読かつ、非一時的な記憶媒体に格納されて提供され、この記憶部１２に複写されたものであってもよい。またこの記憶部１２は、制御部１１のワークメモリとしても動作する。
【００３１】
通信部１３は、ＵＳＢ（Universal Serial Bus）等のシリアルインタフェースあるいは、ブルートゥース（登録商標）等の無線通信インタフェースを含んで構成される。制御装置１０は、この通信部１３を介して操作デバイス２０と通信可能に接続される。特に本実施形態において、通信部１３は、親指センサ部２３１、第１指センサ２３３、第２指センサ２４１、及び第３指センサ２４２による検出結果の情報や、ボタン操作部２３２及びロッキングボタン２３４に対してユーザが行った操作の内容を示す情報を操作デバイス２０から受信する。また、通信部１３は、制御部１１からの指示に従って、ロッキングボタン２３４に内蔵されるボタン振動機構３１やデバイス本体２１０内の本体振動機構２５３等を動作させる制御命令を送信する。
【００３２】
さらに通信部１３は、表示装置１４と有線又は無線で通信するための通信インタフェースを含んでいる。制御装置１０は、通信部１３を介して、表示装置１４が表示すべき映像のデータを表示装置１４に対して送信する。
【００３３】
表示装置１４は、制御装置１０から送信される映像信号に基づく映像を表示する。例えば表示装置１４は、ヘッドマウントディスプレイ等のユーザが頭部に装着して使用するタイプのデバイスであってよい。
【００３４】
以下、制御装置１０の制御部１１の動作について説明する。本実施の形態においてこの制御部１１は、機能的には図５に例示するように、アプリケーション実行部４１と、デバイス位置特定部４２と、指位置特定部４３と、振動制御部４４と、を含んで構成されている。これらの機能は、制御部１１が記憶部１２に記憶されたプログラムに従って動作することにより実現される。このプログラムは、インターネット等の通信ネットワークを介して制御装置１０に提供されてもよいし、光ディスク等のコンピュータ読み取り可能な情報記憶媒体に格納されて提供されてもよい。
【００３５】
アプリケーション実行部４１は、制御部１１がゲーム等のアプリケーションプログラムを実行することにより実現される。アプリケーション実行部４１は、操作デバイス２０に対するユーザの操作内容等に応じて各種の処理を実行し、その処理結果を表示装置１４の画面に表示させる。例えばアプリケーション実行部４１は、各種の仮想オブジェクトが配置された仮想空間を構築し、その内部の様子を示す画像をユーザに提示してもよい。また、アプリケーション実行部４１は、デバイス位置特定部４２によって特定される操作デバイス２０の位置情報や、指位置特定部４３によって特定されるユーザの指の位置情報を利用した処理を実行してもよい。
【００３６】
デバイス位置特定部４２は、操作デバイス２０のポジショントラッキングを実行する。これは、操作デバイス２０の実空間内における位置を特定する処理である。具体的に、デバイス位置特定部４２は、操作デバイス２０のポジショントラッキングを開始する際に、まず操作デバイス２０に指示して、ポジショントラッキング用の発光素子を発光させる。その後、カメラによってその操作デバイス２０を含んだ画像を撮影し、得られた撮像画像を解析することによって、撮像画像内から発光素子による光を検出する。この光の撮像画像内における位置を用いることによって、カメラの設置位置を基準とした操作デバイス２０の実空間内における位置を特定する。なお、カメラはユーザが操作デバイス２０を使用する室内に固定されてもよいし、表示装置１４に搭載されてもよい。特に表示装置１４がヘッドマウントディスプレイであって、その表示装置１４にカメラが搭載される場合、ユーザの頭部を基準とした操作デバイス２０の位置を特定することができる。このような処理を繰り返し実行することにより、ユーザが操作デバイス２０を装着した手を自由に動かしている間、デバイス位置特定部４２はその手の位置を追跡することができる。
【００３７】
指位置特定部４３は、操作デバイス２０の親指センサ部２３１、第１指センサ２３３、第２指センサ２４１、及び第３指センサ２４２による検出結果の情報を用いて、操作デバイス２０から見たユーザの指の位置を特定する。前述したように、操作デバイス２０は固定具２２０によってユーザの手のひらに固定されるため、ユーザは操作デバイス２０を自分の指で把持し続ける必要はなく、操作デバイス２０を装着した状態のまま５本の指をある程度自由に動かすことができる。指位置特定部４３は、これら５本の指がそれぞれどの位置にあるかを特定する。特に指位置特定部４３は、第１指センサ２３３の検出結果を解析することにより、第１指センサ２３３が配置された可動部３０の表面からユーザの人差指までの距離ｘを特定する。
【００３８】
振動制御部４４は、アプリケーション実行部４１からの要求に応じて、ボタン振動機構３１及び本体振動機構２５３を動作させる制御命令を操作デバイス２０に対して出力する。これによりアプリケーション実行部４１は、ゲーム等の状況に応じて操作デバイス２０の本体やロッキングボタン２３４を振動させることができる。具体的に振動制御部４４は、どの振動機構をどのような向きにどの程度の強さで振動させるか、という制御内容を指定する振動制御要求をアプリケーション実行部４１から受け付ける。そして、その振動制御要求に応じた内容の制御命令を操作デバイス２０に送信することにより、ボタン振動機構３１又は本体振動機構２５３を動作させる。
【００３９】
以下、振動制御部４４が操作デバイス２０のボタン振動機構３１及び本体振動機構２５３を制御する際に実行する処理の具体例について、説明する。
【００４０】
まず、ボタン振動機構３１の動作を開始させるタイミングの制御について、説明する。この例においてアプリケーション実行部４１は、ボタン振動機構３１による振動を開始すべきタイミングを指定するタイミング指定情報を含んだ振動制御要求を出力することとする。このタイミング指定情報は、ユーザがロッキングボタン２３４に対する操作を開始するタイミングで振動を開始することを指定するものであってよい。あるいは、ユーザのロッキングボタン２３４に対する操作量（可動部３０の押し込み量）が所与の目標値になるタイミングで振動を開始することを指定するものであってもよい。この例において、振動制御部４４がロッキングボタン２３４に対する操作量の情報を操作デバイス２０から受信し、その情報に基づいて振動を開始すべき状態になったことを確認してからボタン振動機構３１に対する振動開始を指示することとすると、情報の送受信に伴うタイムラグにより、実際の振動開始がアプリケーション実行部４１の指定するタイミングより遅れてしまうことになる。そこで振動制御部４４は、可動部３０の表面に配置された第１指センサ２３３の検出結果に基づいて、ユーザの指（ここでは人差指）がロッキングボタン２３４の操作を行うタイミングを推定し、その推定結果に応じて決まるタイミングでボタン振動機構３１の動作開始を指示する。これにより、ユーザの操作量が目標値に到達したタイミング、又はユーザが可動部３０に対する操作を開始したタイミングで直ちにボタン振動機構３１による振動を開始させることができる。
【００４１】
この振動開始制御の流れの具体例について、図６のフロー図を用いて説明する。まず振動制御部４４は、アプリケーション実行部４１からタイミング指定情報を含んだ振動制御要求を受け付ける（ステップＳ１）。
【００４２】
振動制御要求を受け付けると、振動制御部４４は、定期的に、可動部３０からユーザの人差指までの距離ｘの情報を指位置特定部４３から取得する（ステップＳ２）。距離ｘの情報を新たに取得すると、それまでに取得した複数の距離ｘの情報に基づいて、ユーザの人差指が目標位置に到達するタイミングｔｘを推定する（ステップＳ３）。具体例として、ステップＳ１で受け付けた振動制御要求においてユーザがロッキングボタン２３４の操作を開始するタイミングが指定されたとする。この場合、ユーザの人差指が可動部３０に近づいて距離ｘが０になったタイミングで振動を開始させることが望ましい。そこで例えば振動制御部４４は、これまでの時刻ｔ１における人差指までの距離がｘ１、時刻ｔ２における距離がｘ２、時刻ｔ３における距離がｘ３であった場合、これらの数値から外挿して、距離が０になるタイミングｔｘを算出する。また、タイミング指定情報としてロッキングボタン２３４がある程度操作された状態が目標値として指定された場合にも、人差指が可動部３０の表面に近づいて接触した後そのまま操作が行われるという想定のもとで操作量が目標値に到達するタイミングｔｘを推定すればよい。
【００４３】
次いで振動制御部４４は、ステップＳ３で所定基準以上の信頼度でタイミングｔｘを推定できたか判定する（ステップＳ４）。所定基準以上の信頼度でタイミングｔｘが決定されると、振動制御部４４はそのタイミングｔｘの到来時に振動を開始させることができるように、タイミングｔｘより所定時間だけ早いタイミングでボタン振動機構３１を動作させる制御命令を出力する（ステップＳ５）。ここでの所定時間は、振動制御部４４による制御命令の出力から実際にボタン振動機構３１が動作を開始するまでの所要時間に応じた時間である。これにより、タイミングｔｘに可動部３０の振動を開始させることができる。
【００４４】
例えばユーザの人差指が可動部３０に近づいていない間は、人差指が可動部３０に到達するタイミングを推定することはできない。このように、ステップＳ３で所定基準以上の信頼度でタイミングｔｘを推定できないとステップＳ４で判定された場合、振動制御部４４はステップＳ２に戻って新たに距離ｘの情報を取得する。精度よくタイミングｔｘを推定できるまでこのような処理を繰り返すことで、振動制御部４４はユーザの人差指が可動部３０に近づき始めたときに直ちにタイミングｔｘを推定することができる。
【００４５】
なお、以上の説明ではボタン振動機構３１の振動開始タイミングを制御する例について説明したが、振動制御部４４は、本体振動機構２５３を振動させる際の振動開始タイミングについても、同様の手法により制御してもよい。この場合、人差指に限らず、別の指が操作デバイス２０本体に近づいて接触するタイミングを推定し、その推定結果に応じて本体振動機構２５３の振動開始タイミングを決定してもよい。人差指以外の各指が操作デバイス２０本体に接触するタイミングは、親指センサ部２３１、第２指センサ２４１、及び第３指センサ２４２の検出結果に基づいて指位置特定部４３によって推定できる。また、振動制御部４４は、操作デバイス２０表面から各指までの距離の時間変化に限らず、例えばロッキングボタン２３４に対する操作量の時間変化に応じてボタン振動機構３１や本体振動機構２５３の振動開始タイミングを決定してもよい。また、これらの時間変化の情報を組み合わせて用いて、ボタン振動機構３１や本体振動機構２５３の振動開始タイミングを決定してもよい。
【００４６】
次に、ボタン振動機構３１と本体振動機構２５３の双方を同時期に動作させる場合の制御例について、説明する。このような場合、振動制御部４４は、ロッキングボタン２３４に対する操作量に応じて制御内容を変化させることとする。具体的に、ロッキングボタン２３４が最大操作状態以外の状態にある場合、振動制御部４４はアプリケーション実行部４１の要求に応じた内容でそれぞれの振動機構を独立に制御する。これに対してロッキングボタン２３４が最大操作状態にある場合、振動制御部４４は、アプリケーション実行部４１の要求内容とは異なる制御内容で各振動機構を制御する。
【００４７】
具体的に、振動制御部４４は、ロッキングボタン２３４が最大操作状態にある場合、ボタン振動機構３１と本体振動機構２５３に対して同じタイミングで同じ向きに振動させる共通波形の制御命令を出力する。ロッキングボタン２３４が最大操作状態にある場合、可動部３０がユーザの指に押さえられてデバイス本体２１０と一体化するため、可動部３０をデバイス本体２１０と独立に振動させることが困難になるためである。あるいは振動制御部４４は、ロッキングボタン２３４が最大操作状態にある場合、二つの振動機構の一方に対してのみ制御命令を出力し、他方には制御命令を出力せずに振動を停止させてもよい。さらにこの場合、二つの振動機構の一方に対する振動の振幅を増加させてもよい。
【００４８】
なお、以上の説明ではロッキングボタン２３４が最大操作状態にある場合のみ制御内容を変化させることとしたが、ロッキングボタン２３４の操作量が所定値以上になった場合に制御内容を変化させてもよい。ロッキングボタン２３４の操作量が最大操作量に近づいた状態では、可動部３０を振動させると可動部３０が基台３２に衝突するおそれが生じる。そこで振動制御部４４は、操作量が所定値以上になった場合、ボタン振動機構３１に対する制御命令を中止してもよい。また、ボタン振動機構３１を振動させる際の振動量を低減させる制御を行ってもよい。なお、このような制御は、ボタン振動機構３１に対して単独での振動制御要求があった場合にも実施してよい。
【００４９】
具体的に、振動制御部４４は、ロッキングボタン２３４の操作量に応じて、ボタン振動機構３１に対する振動量の補正係数を決定する。そして、その補正係数に応じて補正された振動量でボタン振動機構３１を振動させる制御命令を出力する。この場合の補正係数は、例えば図７に示すグラフにより決定される。この図の例では、操作量０が無操作状態、操作量２５５が最大操作状態に相当する。振動制御部４４は、操作量が２３０を超えるとボタン振動機構３１の振動量を抑制する制御を行い、操作量が２４０を超えた段階で補正係数を０．６とする。この補正係数の数値は、ボタン振動機構３１の振動によって生じるノイズ（いわゆるびびり音）が気にならない程度になるように決定される。このような制御によれば、ロッキングボタン２３４の操作状態にかかわらず、ボタン振動機構３１による振動によって生じるノイズを抑えることができる。
【００５０】
次に、力覚提示装置と組み合わせてボタン振動機構３１を制御する例について、説明する。この例において振動制御部４４は、ロッキングボタン２３４に接続された力覚提示装置によって、ロッキングボタン２３４を操作するユーザの指に対して力覚を提示する。ここで、ユーザに提示したい力の強さの目標値が、力覚提示装置によって提示可能な力よりも大きい場合がある。このような場合、振動制御部４４は、力覚提示装置が力を提示している間、同時期にボタン振動機構３１を振動させる。これにより、ユーザに強い力を感じさせることができる。図８はこのような制御の概要を説明する図である。この図の例では、時間とともに力覚提示装置が提示する力の強さを増加させており、その出力値が最大値Ｆｍａｘに達したタイミング（図中の時刻ｔ０）以降、ボタン振動機構３１を振動させている。
【００５１】
また、振動制御部４４は、ボタン振動機構３１によってロッキングボタン２３４を振動させる際に、その出力が十分でないと想定される場合、併せて力覚提示装置を動作させて可動部３０に力を加えてもよい。これにより、ボタン振動機構３１だけでは感じさせることができない力をユーザに感じさせることができる。
【００５２】
このように、一つの振動制御要求に基づいてボタン振動機構３１と力覚提示装置の双方を動作させる際に制御部１１が実行する処理の具体例について、図９を用いて説明する。この例では、振動制御部４４は、ボタン振動機構３１だけでなく、力覚提示装置の制御も併せて実行することとする。そして、振動制御部４４は、機能的に、振動信号解析部４４ａと、振動命令出力部４４ｂと、力覚提示命令出力部４４ｃと、を含むこととする。
【００５３】
アプリケーション実行部４１から力覚提示要求があった場合、力覚提示命令出力部４４ｃは、その要求内容に応じて力覚を提示させる制御命令を、操作デバイス２０に対して送信する。この制御命令に応じて力覚提示装置が制御されることで、ユーザに力覚が提示される。
【００５４】
一方、アプリケーション実行部４１から振動制御要求があった場合、その内容は、まず振動信号解析部４４ａによって解析される。ここでは、振動制御要求は、ボタン振動機構３１が発生させるべき振動の波形を符号化した波形データを含むものとする。振動データに含まれる波形の振幅が振動の強さを表し、周波数が振動の周期を表す。このような振動データは、音声データと類似するフォーマットで記述されてよい。また、この振動データには、音声データと同様に、複数の周波数の振動が重なった波形が含まれるものとする。振動信号解析部４４ａは、この波形の周波数及び振幅を解析する。具体的には、波形に含まれる周波数範囲を特定したり、最大振幅を特定したりする。
【００５５】
振動信号解析部４４ａは、解析の結果、アプリケーション実行部４１からの振動制御要求に含まれる振動を実現するためにボタン振動機構３１だけでは十分でないと判断される場合、力覚提示命令出力部４４ｃに対して追加振動要求を行う。例えば振動信号解析部４４ａは、アプリケーション実行部４１からの振動制御要求に、所定周波数以上の周波数の振動や所定値を超える振幅の振動が含まれる場合に、力覚提示命令出力部４４ｃに対して追加振動要求を行う。この追加振動要求は、力覚提示装置に対して、振動制御要求に含まれる一部の周波数範囲の振動を提示させる要求である。さらに振動信号解析部４４ａは、力覚提示命令出力部４４ｃに対する追加振動要求に含めた周波数範囲を除いた振動の波形を含んだ制御命令を、振動命令出力部４４ｂに対して出力する。振動命令出力部４４ｂは、この制御命令に応じて、ボタン振動機構３１を振動させる制御命令を操作デバイス２０に送信する。
【００５６】
力覚提示命令出力部４４ｃは、振動信号解析部４４ａから追加振動要求を受け付けた場合、その内容を、アプリケーション実行部４１から受け付けている力覚提示要求の内容と合成して、最終的に力覚提示装置に対する制御内容を決定する。そして、合成された制御内容に応じて力覚提示装置を動作させる制御命令を、操作デバイス２０に送信する。例えばこの制御命令は、アプリケーション実行部４１からの力覚提示要求に応じて決まる位置を中心として、可動部３０をその可動方向に沿って振動させるような位置制御を指示するものであってよい。これにより、ボタン振動機構３１と力覚提示装置という異なる機構の振動デバイスを連動させることによって、アプリケーション実行部４１が要求する振動をユーザに提示することができる。
【００５７】
なお、振動信号解析部４４ａは、このような振動制御要求の振り分けを実行するか否かを、動作モードに応じて変化させてもよい。具体的に、ユーザの指示等によって振動振り分けを許可するモードで動作している場合には、振動信号解析部４４ａが振動制御要求の振り分けを行うこととし、振動信号の解析結果に応じて追加振動要求を出力する。一方、振動振り分けを許可しないモードで動作している場合には、振動制御要求の振り分けを行わず、ボタン振動機構３１による振動制御だけを行うこととする。また、振動信号解析部４４ａは、操作デバイス２０のバッテリ残量が少なくなっている場合など、省電力モードで動作すべき場合に、振動制御要求の振り分けを中止してもよい。
【００５８】
また、ここでは一つの振動制御要求に基づいて、ボタン振動機構３１とロッキングボタン２３４の位置制御を行う力覚提示装置の双方を動作させる例について、説明した。しかしながらこれに限らず、例えば制御装置１０は本体振動機構２５３とデバイス本体２１０の動きを制御する力覚提示装置を制御対象として、一つの振動制御要求に含まれる振動をこれらのデバイスに振り分けてもよい。
【００５９】
また、ここでは振動制御要求は振動の波形を符号化した波形データによって振動の内容を指定することとしたが、振動制御要求はそれ以外のデータ形式でボタン振動機構３１による振動の内容を指定してもよい。一例として振動制御要求は、振動の強さや長さを数値等によって指定するデータであってもよい。また、ボタン振動機構３１が偏心モーター等によって構成される場合、振動制御要求はボタン振動機構３１に入力されるべき電圧信号等を含んでもよい。この場合、例えば振動信号解析部４４ａは、振動制御要求によって指定される振動の強さが所与の閾値を超えるか否かによって、振動制御要求の振り分けを行うか否か決定する。この例では、追加振動要求は、指定される振動の強さと閾値との差分に応じた強さの振動を発生させる要求であってよい。
【００６０】
次に、本体振動機構２５３に対する振動制御の一例について、説明する。具体的に、ユーザが左右どちらの手に操作デバイス２０を装着しているかに応じた制御について説明する。前述したように、本体振動機構２５３はデバイス本体２１０を左右方向に振動させることができる。このとき、アプリケーション実行部４１はデバイス本体２１０をユーザの手のひらに向かう方向に力が感じられるように振動させたい場合がある。あるいは、その逆に手のひらから離れる方向に力が感じられるように振動させたい場合もありえる。このような場合、振動制御部４４は、ユーザが左右どちらの手に操作デバイス２０を装着しているかに応じて、本体振動機構２５３に対する制御命令の内容を変化させる。
【００６１】
このような制御に先立って、振動制御部４４はユーザがどちらの手に操作デバイス２０を装着しているのかを特定する必要がある。本実施形態では、前述したように固定具２２０を左側面２２１及び右側面２２２のいずれにも装着可能になっており、さらにどちらの側に固定具２２０が固定されたかを検出するセンサが設けられている。このセンサの検出結果を参照することで、振動制御部４４は固定具２２０がどちらの側に固定されているかを特定できる。そして、固定具２２０が右側面２２２に固定されていればユーザが右手に操作デバイス２０を装着しており、左側面２２１に固定されていれば左手に操作デバイス２０を装着していると特定できる。なお、ここでは固定具２２０の取り付け位置に応じてユーザがどちらの手に操作デバイス２０を装着しているか特定するものとしたが、これに限らず振動制御部４４は各種の方法でユーザの手の左右を特定してもよい。例えば操作デバイス２０にユーザの手のひらを検出する近接センサ等のセンサを設け、その検出結果によってユーザがどちらの手に操作デバイス２０を装着しているか特定してもよい。
【００６２】
振動制御部４４は、アプリケーション実行部４１から手のひら方向、または手のひら方向と逆方向の指定を含んだ振動制御要求を受け付ける。そして、ユーザがどちらの手に操作デバイス２０を装着しているかの情報を用いて、本体振動機構２５３を振動させる向きを決定する。具体的に、ユーザが右手に操作デバイス２０を装着しており、かつ手のひら方向の指定を伴う振動制御要求を受けた場合には、Ｘ軸正方向に力が加わるように本体振動機構２５３を振動させ、手のひらと逆方向を指定された場合には、Ｘ軸負方向に力が加わるように本体振動機構２５３を振動させる。また、ユーザが左手に操作デバイス２０を装着している場合には、右手に装着している場合とは正負逆に力を生じさせるように本体振動機構２５３を振動させる。これにより、ユーザが左右どちらの手に操作デバイス２０を装着しているかにかかわらず、ユーザの手のひらに同じように振動を感じさせることができる。
【００６３】
次に、本体振動機構２５３に対する別の振動制御の例について、説明する。この例において振動制御部４４は、操作デバイス２０が所定の状態にあると判定される場合に、本体振動機構２５３の振動を強くする制御を行う。具体的に、ユーザが操作デバイス２０を握らずに手を開いている場合、及びユーザが操作デバイス２０を装着した手のひらを下に向けている場合、操作デバイス２０が手のひらに密着しないため、本体振動機構２５３による振動がユーザにとって弱く感じられる。そこで振動制御部４４は、このように操作デバイス２０の振動がユーザに伝わりにくい状態にあると判定される場合、アプリケーション実行部４１からの振動制御要求に応じて決まる値よりも大きな振幅で本体振動機構２５３を振動させる。これにより、操作デバイス２０の状態に応じて、ユーザに明確に振動を伝達することができる。
【００６４】
この例において、振動制御部４４は、操作デバイス２０に設けられた各種センサの検出結果に基づいて、操作デバイス２０が所定の状態にあるか否かを判定する。例えば振動制御部４４は、指位置特定部４３によってユーザの複数の指が操作デバイス２０に接触していると特定されている場合に、ユーザが操作デバイス２０を握っていると判定し、ユーザの複数の指が操作デバイス２０から離れていると判定されている場合には、ユーザが手を開いており振動を強化する必要があると判定してもよい。また、操作デバイス２０が加速度センサ等の姿勢センサを内蔵している場合、振動制御部４４は、そのセンサの検出結果に基づいて特定される操作デバイス２０の向きから、ユーザが手のひらを下方に向けていると判定してもよい。
【００６５】
次に、ユーザが左右の手で２個の操作デバイス２０を同時に使用する場合の制御例について、説明する。以下の例では、ユーザが左手、及び右手のそれぞれに操作デバイス２０を装着しており、制御装置１０はこれら２個の操作デバイス２０と通信接続されるものとする。
【００６６】
この場合において、振動制御部４４は、２個の操作デバイス２０が互いに接触していると判定される場合に、各操作デバイス２０の本体振動機構２５３に対する制御内容を変更させる。より具体的に、振動制御部４４は、２個の操作デバイス２０が接触する際の向きに応じて、制御内容を変更する。すなわち、２個の操作デバイス２０が同じ向きで接触していれば、両者が同じ向きで振動するように共通波形の制御命令を出力する。これに対して２個の操作デバイス２０が逆向きに接触している場合、両者を共通波形で振動させようとすると、振動の位相が反転し、互いに振動を打ち消してしまう。そこで振動制御部４４は、一方の操作デバイス２０に対する波形の位相を反転させて、逆向きに振動させる制御命令を出力する。これにより、２個の操作デバイス２０を同じように振動させることができる。また、２個の操作デバイス２０が接触している場合、振動制御部４４は、一方の操作デバイス２０の本体振動機構２５３に対する制御命令を中止して他方の操作デバイス２０のみを振動させてもよい。さらにこの場合、他方の操作デバイス２０の本体振動機構２５３に対して、両者が接触していない場合よりも大きな振幅で振動させる制御命令を出力してもよい。また、振動制御部４４は、２個の操作デバイス２０が接触しているか、又は所定距離以内に近づいた場合には、双方の本体振動機構２５３に対する制御命令を中止してどちらの振動も抑制することとしてもよい。
【００６７】
なお、振動制御部４４は、このような制御に先立って、デバイス位置特定部４２による特定結果を用いて２個の操作デバイス２０が接触しているか否か、また接触している場合どのような向きで接触しているかを判定する。また、振動制御部４４は、マイクロフォン２５２によって得られる音声信号から２個の操作デバイス２０の接触状態を判定してもよい。すなわち、マイクロフォン２５２によって得られる音声信号に２個の操作デバイス２０が接触して生じるノイズが含まれている場合に、両者が接触していると判定してもよい。
【００６８】
次に、ユーザが左右の手で２個の操作デバイス２０を同時に使用する場合の第２の制御例として、仮想空間内での仮想オブジェクトに対する操作に操作デバイス２０を利用する場合について、説明する。以下の例では、アプリケーション実行部４１は仮想空間内にユーザの両手に対応する仮想オブジェクト（右手オブジェクトＲ及び左手オブジェクトＬ）と、右手オブジェクトＲ及び左手オブジェクトＬによる操作の対象となるターゲットオブジェクトＴを配置する。アプリケーション実行部４１は、デバイス位置特定部４２によって特定される、ユーザが右手に装着した操作デバイス２０の位置、及び指位置特定部４３によって特定されるユーザの右手の指の位置に連動して、右手オブジェクトＲを仮想空間内で移動させたり、その形状を変化させたりする。同様に左手オブジェクトＬについても、ユーザが左手に装着した操作デバイス２０の位置や左手の指の位置に連動するように制御する。ユーザは、操作デバイス２０を装着した状態で自身の両手、及び指を動かすことで、右手オブジェクトＲ及び左手オブジェクトＬを操作し、仮想空間内のターゲットオブジェクトＴに触れたり掴んだりすることができる。
【００６９】
このような状況において、アプリケーション実行部４１は、右手オブジェクトＲ及び左手オブジェクトＬのそれぞれがどのターゲットオブジェクトＴに触れているか、をフラグ情報として管理する。さらに、ターゲットオブジェクトＴに触れたり掴んだりした際の触覚をユーザに提示するために、各操作デバイス２０の本体振動機構２５３やボタン振動機構３１を振動させる振動制御要求を出力する。具体的に、ターゲットオブジェクトＴが他のオブジェクトにぶつかるなどして振動が生じた場合、アプリケーション実行部４１は右手オブジェクトＲ及び左手オブジェクトＬのいずれかがターゲットオブジェクトＴに接触しているか否かを、フラグ情報を参照して判定する。そして、接触している方の手に対応する操作デバイス２０に対して、振動を伝達するための振動制御要求を出力する。これを受けて振動制御部４４は、振動制御要求の対象となった操作デバイス２０の本体振動機構２５３、及び／又はボタン振動機構３１に対して制御命令を出力する。
【００７０】
さらに、右手オブジェクトＲ及び左手オブジェクトＬの双方が同じターゲットオブジェクトＴに接触している場合、振動制御部４４は２個の操作デバイス２０のそれぞれを同時に振動させてもよい。図１０は、仮想空間内において右手オブジェクトＲ及び左手オブジェクトＬが同時に一つのターゲットオブジェクトＴを掴んでいる様子を示している。この場合、アプリケーション実行部４１はターゲットオブジェクトＴに発生した振動に応じてそれぞれの手に伝わるべき振動の向き、及び大きさを決定する。このときアプリケーション実行部４１は、予め定められたターゲットオブジェクトＴの剛性や材質などの特性を表す情報を参照して、振動の伝達度合いを決定してもよい。例えばターゲットオブジェクトＴが柔らかい物質を表すオブジェクトである場合、振動は伝達しにくく、金属等の固い物質を表すオブジェクトの場合には、強く振動が伝達する。この決定内容に応じて、アプリケーション実行部４１は、ユーザが右手に装着した操作デバイス２０、及び左手に装着した操作デバイス２０のそれぞれに対して振動制御要求を出力する。これに応じて振動制御部４４は、各操作デバイス２０に対してその本体振動機構２５３を振動させる制御命令を出力する。これによりユーザは、左右の手にそれぞれ別の操作デバイス２０を装着しているにもかかわらず、あたかも一つの物体を両手で持っているかのような感覚を体験することができる。
【００７１】
次に、ユーザの人差指の位置を指位置特定部４３が特定した結果に基づいて、アプリケーション実行部４１が実行する処理の具体例について、説明する。本実施形態では、前述したようにロッキングボタン２３４の表面に第１指センサ２３３が設けられている。アプリケーション実行部４１は、この第１指センサ２３３の検出結果とロッキングボタン２３４に対してユーザが行った操作量（可動部３０の押し込み量）の両方を、ユーザのロッキングボタン２３４に対する操作内容を表す情報として受け付けてもよい。これにより、単にロッキングボタン２３４に対する押し込み操作の操作量を使用するだけでは実現できないような、ユーザの操作に応じた処理を実現できる。以下、このような処理の具体例について説明する。
【００７２】
まず第１の例として、ユーザがロッキングボタン２３４を操作していない（すなわち、ロッキングボタン２３４の押し込み量が０である）が、人差指をロッキングボタン２３４に接触させた状態に関する処理について、説明する。この例では、指位置特定部４３の特定結果により、ユーザがロッキングボタン２３４の表面に人差指を接触させた状態が検出される。具体的には、指位置特定部４３が第１指センサ２３３からユーザの人差指までの距離ｘ＝０と検出した場合、ユーザが人差指をロッキングボタン２３４に接触させていると判定される。
【００７３】
ユーザがロッキングボタン２３４を操作中の場合にも、距離ｘ＝０になる。しかしながら、距離ｘ＝０であって、かつ、ロッキングボタン２３４に対する押し込み量が０の場合には、ユーザがロッキングボタン２３４に人差指をかけてまさにその操作を開始しようとしている状態にあることになる。そこでアプリケーション実行部４１は、このような状態になった場合に、表示装置１４の画面に所定の案内表示を行うなど、この操作状態に応じた処理を実行する。具体的には、ロッキングボタン２３４を押し込む操作を行った場合に発生するイベントを事前にユーザに通知するなどの処理を実行してよい。これにより、ユーザは、実際にロッキングボタン２３４の操作を行う前に、操作を行うと何が起こるかを知ることができる。
【００７４】
なお、以上の説明では距離ｘ＝０になったタイミングで案内表示などを行うこととしたが、これに限らず、アプリケーション実行部４１は、距離ｘが所定の閾値以下となったときに、各種の処理を実行してもよい。距離ｘが所定の閾値以下になったときには、ユーザの人差指がロッキングボタン２３４に接近しており、ユーザがロッキングボタン２３４を操作しようとしていると推定できるためである。
【００７５】
第２の例として、指位置特定部４３が特定する人差指の位置に関する情報と、ロッキングボタン２３４に対する押し込み量の情報と、の双方に基づいて算出される値をユーザの操作入力値として受け付ける例について、説明する。ここでは一例として、ロッキングボタン２３４に対する押し込み量が０〜２５５までの値をとるものとする。すなわち、無操作状態であれば押し込み量０、最大操作状態で押し込み量２５５となる。この場合、ロッキングボタン２３４に対する押し込み量の情報だけを使用すると、ユーザの操作量は０〜２５５までの２５６段階で表現されることになる。
【００７６】
この第２の例では、アプリケーション実行部４１は、指位置特定部４３が特定する人差指の位置までの距離ｘを、ロッキングボタン２３４に対する押し込み量とともにユーザの操作量を表す情報として使用する。具体的に、距離ｘが所定の閾値Ｔｈ以上の場合には操作量０とし、ユーザが閾値Ｔｈより人差指をロッキングボタン２３４に近づけた場合、その時点でユーザの操作が始まったとみなす。このときユーザの操作量ａは、距離ｘを用いて
ａ＝ｃ（Ｔｈ−ｘ）    （０≦ｘ≦Ｔｈ）
で表される。ここでｃは所与の係数である。例えば係数ｃは、ｃ・Ｔｈが２５６になるように決定される。この場合、ユーザがロッキングボタン２３４から人差指を距離Ｔｈ以上離した状態では操作量０であって、人差指がロッキングボタン２３４に近づくにつれ操作量は増加し、ロッキングボタン２３４に人差指を接触させた状態で操作量２５６の操作があったとみなされる。
【００７７】
そこからさらにユーザがロッキングボタン２３４を押し込む操作を行った場合、その押し込み量を表す数値を操作量ａに加算する。したがって、押し込み量をｐで表すと、ユーザの操作量ａは全体で以下の計算式により算出される。
ａ＝ｃ（Ｔｈ−ｘ）＋ｐ    （０≦ｘ≦Ｔｈ）
ユーザが最大操作状態までロッキングボタン２３４を押し込む操作を行った場合、ｐ＝２５５なので、操作量ａは５１１となる。
【００７８】
このように、ロッキングボタン２３４の押し込み量とロッキングボタン２３４までの距離ｘとを組み合わせて用いることにより、押し込み量だけを使用する場合よりも広いダイナミックレンジでユーザの操作量を取得することができる。図１１は、この例におけるユーザの操作内容と操作量の関係を模式的に示す図である。図１１（ａ）は人差指がロッキングボタン２３４から距離Ｔｈ以上離れた状態を示しており、この状態では操作量ａ＝０である。図１１（ｂ）は人差指がロッキングボタン２３４の表面に接触し、かつ押し込み操作が行われていない状態を示している。この状態では、距離ｘ＝０、押し込み量ｐ＝０なので、操作量ａ＝ｃ・Ｔｈ＝２５６である。図１１（ｃ）はロッキングボタン２３４が最大量まで押し込まれた最大操作状態を示しており、この状態では押し込み量ｐ＝２５５なので操作量ａ＝５１１となる。
【００７９】
以上説明した本実施形態に係る制御システム１によれば、ロッキングボタン２３４に内蔵されるボタン振動機構３１を振動させることにより、ロッキングボタン２３４を操作しようとするユーザの指に固有の振動を提示することができる。さらに、一つの操作デバイス２０が供えるボタン振動機構３１と本体振動機構２５３のそれぞれを振動させたり、２個の操作デバイス２０が備える振動機構をそれぞれ制御したりすることで、多様な種類の振動をユーザに提示することができる。
【００８０】
なお、本発明の実施の形態は、以上説明したものに限られない。例えば以上の説明では、デバイス位置特定部４２は、操作デバイス２０が備える発光素子の光をカメラで撮像することによって操作デバイス２０のポジショントラッキングを行うこととしたが、ポジショントラッキングの方法はこのようなものに限られない。例えば操作デバイス２０が加速度センサやジャイロスコープ等のモーションセンサを内蔵する場合、デバイス位置特定部４２は、これらのセンサの検出結果をポジショントラッキングに利用してもよい。また、以上の説明では表示装置１４は頭部装着型のデバイスであるとしたが、これに限らず家庭用テレビ受像機等の据え置き型のデバイスであってもよい。
【００８１】
また、以上の説明では押し込み量を検出可能なロッキングボタン２３４にボタン振動機構３１を搭載することとしたが、これ以外の各種の操作ボタンにボタン振動機構を設け、その操作ボタンを振動させてもよい。これにより、人差指に限らず、操作ボタンを操作する様々な指に固有の振動を提示できる。
【００８２】
また、以上の説明では本体振動機構２５３はデバイス本体２１０の筐体内に固定されるものとしたが、本体振動機構２５３は、ユーザの手のひらが直接接触するデバイス本体２１０の筐体よりも、剛性の低い部材に取り付けられてもよい。図１２は、このように本体振動機構２５３が配置されたデバイス本体２１０の構成を模式的に示す図である。
【００８３】
この図１２の例では、デバイス本体２１０の筐体を構成する第１部材２５４に対して、別体の第２部材２５５が突出するように取り付けられている。第２部材２５５は、例えば板金などでよく、第１部材２５４よりも剛性が低くなっている。ユーザが操作デバイス２０を装着した際には、ユーザの身体（ここでは手のひら）が第１部材２５４の一部分に接触する。この例の本体振動機構２５３は、振動アクチュエータ等であって、第２部材２５５に固定されている。本体振動機構２５３を振動させると、その振動は第２部材２５５から第１部材２５４を経由してユーザに伝達される。このような構成によれば、本体振動機構２５３を第１部材２５４に直接固定している場合と比較して、本体振動機構２５３を動作させた際にその内部でのメカ当たり等が発生しにくくなるので、高出力で本体振動機構２５３を動作させることができる。
【００８４】
また、以上の説明では操作デバイス２０とは別個独立の制御装置１０がユーザの操作内容や指の位置などを特定し、その内容に応じてボタン振動機構３１や本体振動機構２５３に対する制御命令を出力することとした。しかしながら本発明の実施の形態はこのようなものに限られない。例えば以上の説明において制御装置１０が実行することとした処理の一部又は全部は、操作デバイス２０に内蔵されるマイクロコンピュータ等の制御装置によって実行されることとしてもよい。
【符号の説明】
【００８５】
１  制御システム、１０  制御装置、１１  制御部、１２  記憶部、１３  通信部、１４  表示装置、２０  操作デバイス、３０  可動部、３１  ボタン振動機構、３２  基台、４１  アプリケーション実行部、４２  デバイス位置特定部、４３  指位置特定部、４４  振動制御部、２１０  デバイス本体、２１１  把持部、２１２  操作部、２２０  固定具、２２１  左側面、２２２  右側面、２３１  親指センサ部、２３２  ボタン操作部、２３３  第１指センサ、２３４  ロッキングボタン、２３５  表示部、２４０  バッテリ、２４１  第２指センサ、２４２  第３指センサ、２５１  スピーカー、２５２  マイクロフォン、２５３  本体振動機構。
【図１】
2020074078.tif 000003
【図２】
2020074078.tif 000004
【図３Ａ】
2020074078.tif 000005
【図３Ｂ】
2020074078.tif 000006
【図４】
2020074078.tif 000007
【図５】
2020074078.tif 000008
【図６】
2020074078.tif 000009
【図７】
2020074078.tif 000010
【図８】
2020074078.tif 000011
【図９】
2020074078.tif 000012
【図１０】
2020074078.tif 000013
【図１１】
2020074078.tif 000014
【図１２】
2020074078.tif 000015