(57)【要約】【課題】種々の態様の触力覚を提示可能な操作デバイス、及び操作デバイスの制御方法を提供する。【解決手段】第１の位置と第２の位置との間で移動可能な可動部を有し、ユーザに把持されて前記可動部がユーザにより操作される操作デバイスであって、触力覚の制御に係る指示として、制御モードを特定する情報と、制御モードごとに定められた制御情報とを受け入れ、当該受け入れた情報で特定される制御モードにて、受け入れた制御情報を用いて、可動部に対して提示する触力覚を制御する。【選択図】図１
2020166886.tif 000002
【特許請求の範囲】
【請求項１】
第１の位置と第２の位置との間で移動可能な可動部材と、
アクチュエータにより駆動され、前記可動部材の移動軌跡内を移動して、前記可動部材の移動可能範囲を規制する規制部材とを備えた操作デバイス。
【請求項２】
第１の位置と第２の位置との間で移動可能な可動部を有し、ユーザに把持されて前記可動部がユーザにより操作される操作デバイスと、当該操作デバイスと通信し、ユーザに提供する触力覚の制御に係る指示を出力する主装置とを含む情報処理システムであって、
前記操作デバイスは、
触力覚の制御に係る指示として、制御モードを特定する情報と、制御モードごとに定められた制御情報とを、前記主装置から受け入れる手段と、
前記受け入れた情報で特定される制御モードにて、前記受け入れた制御情報を用いて、前記可動部に対して提示する触力覚を制御する制御手段と、
を有することを特徴とする情報処理システム。
【請求項３】
第１の位置と第２の位置との間で移動可能な可動部を有し、ユーザに把持されて前記可動部がユーザにより操作される操作デバイスであって、
触力覚の制御に係る指示として、制御モードを特定する情報と、制御モードごとに定められた制御情報とを受け入れる受入手段と、
前記受け入れた情報で特定される制御モードにて、前記受け入れた制御情報を用いて、前記可動部に対して提示する触力覚を制御する制御手段と、
を有することを特徴とする操作デバイス。
【請求項４】
請求項３記載の操作デバイスであって、
前記可動部は、アクチュエータを含み、
前記制御手段は、当該アクチュエータに対する制御を行い、ユーザに対して提示する触力覚を制御する操作デバイス。
【請求項５】
請求項４記載の操作デバイスであって、
前記受入手段が前記触力覚の制御に係る指示として、第１の制御モードを特定する情報と、当該第１の制御モードについて予め定められた制御情報であるターゲット位置と、前記アクチュエータの制御ゲインとの情報を受け入れたときには、
前記制御手段は、前記アクチュエータの位置とターゲット位置との差、及び、前記制御ゲインの情報とに基づいて前記アクチュエータに対する制御を行い、前記可動部に対して提示する触力覚を制御する操作デバイス。
【請求項６】
請求項４または５に記載の操作デバイスであって、
前記受入手段が前記触力覚の制御に係る指示として、第２の制御モードを特定する情報と、当該第２の制御モードについて予め定められた制御情報である前記アクチュエータの制御電圧値または制御電流値の情報を受け入れたときには、
前記制御手段は、前記アクチュエータに供給する電圧または電流を、前記受け入れた制御電圧値または制御電流値に基づいて制御して前記アクチュエータに対する制御を行い、前記可動部に対して提示する触力覚を制御する操作デバイス。
【請求項７】
請求項６に記載の操作デバイスであって、
前記受入手段はさらに、第２の制御モードを特定する情報とともに制御の継続時間に係る情報を受け入れ、
前記制御手段は、当該受け入れた継続時間だけ、前記アクチュエータに対する制御を行う操作デバイス。
【請求項８】
請求項４から７のいずれか一項に記載の操作デバイスであって、
アクチュエータまたは可動部の位置範囲を特定する情報と制御情報との組を少なくとも一組含む設定情報を記憶する記憶手段をさらに有し、
前記受入手段が前記触力覚の制御に係る指示として、第３の制御モードを特定する情報と、前記記憶手段に記憶されている設定情報のうち、いずれかの設定情報を特定する情報を受け入れたときには、
前記制御手段は、前記特定された設定情報に含まれるアクチュエータまたは可動部の位置範囲を特定する情報と制御情報との組を前記記憶手段から読み出して、アクチュエータまたは可動部の位置を含むアクチュエータまたは可動部の位置範囲に対応する制御情報に基づいて前記アクチュエータに対する制御を行い、前記可動部に対して提示する触力覚を制御する操作デバイス。
【請求項９】
第１の位置と第２の位置との間で移動可能な可動部を有し、ユーザに把持されて前記可動部がユーザにより操作される操作デバイスの制御方法であって、
前記操作デバイスの制御部が、触力覚の制御に係る指示として、制御モードを特定する情報と、制御モードごとに定められた制御情報とを受け入れ、前記受け入れた情報で特定される制御モードにて、前記受け入れた制御情報を用いて、前記可動部に対して提示する触力覚を制御する、
操作デバイスの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、操作デバイス、及び操作デバイスの制御方法に関する。
【背景技術】
【０００２】
家庭用ゲーム機等における操作デバイスは、ユーザが行ったボタン押下や操作デバイスを振る等の動作を検出して、ゲーム機等の本体に当該検出したユーザの動作を表す情報を送出している。また、こうした操作デバイスのうちには、アクチュエータ等を用いて、ユーザに対して触力覚を提示するものもある。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
しかしながら、上記従来の、触力覚提示機能を有する操作デバイスでは、ゲーム機等の本体からの指示に応じて触力覚を提示するため、ユーザの操作に対する触力覚を提示しようとする場合、ユーザの操作内容を本体へ送出し、本体側で触力覚の制御に必要なパラメータを演算して求め、本体から操作デバイスへパラメータを送出して、操作デバイスにて当該パラメータに基づいて触力覚の提示動作を行うこととなっており、操作が行われてから触力覚を提示するまでに時間を要するので、提示可能な触力覚が限られていた。
【０００４】
本発明は上記実情に鑑みて為されたもので、種々の態様の触力覚を提示可能な操作デバイス、及び操作デバイスの制御方法を提供することを、その目的の一つとする。
【課題を解決するための手段】
【０００５】
上記従来例の問題点を解決する本発明の一態様は、第１の位置と第２の位置との間で移動可能な可動部を有し、ユーザに把持されて前記可動部がユーザにより操作される操作デバイスであって、触力覚の制御に係る指示として、制御モードを特定する情報と、制御モードごとに定められた制御情報とを受け入れる受入手段と、前記受け入れた情報で特定される制御モードにて、前記受け入れた制御情報を用いて、前記可動部に対して提示する触力覚を制御する制御手段と、を有することとしたものである。
【発明の効果】
【０００６】
本発明によると、種々の態様の触力覚が提示可能となる。
【図面の簡単な説明】
【０００７】
【図１】本発明の実施の形態に係る操作デバイスの正面側から見た斜視図である。
【図２】本発明の実施の形態に係る操作デバイスの背面側から見た斜視図である。
【図３】本発明の実施の形態に係る操作デバイスの構成例を表すブロック図である。
【図４】本発明の実施の形態に係る操作デバイスの可動部の例を表す概要図である。
【図５】本発明の実施の形態に係るアームと、ボタンカバーとの関係を概念的に示した説明図である。
【図６】本発明の実施の形態に係る操作デバイスの例を表す機能ブロック図である。
【図７】本発明の実施の形態に係る情報処理システムで送受されるパケットの内容例を表す説明図である。
【図８】本発明の実施の形態に係る操作デバイスが用いる設定情報の例を表す説明図である。
【図９】本発明の実施の形態に係る情報処理システムの動作例を表すフロー図である。
【発明を実施するための形態】
【０００８】
本発明の実施の形態について図面を参照しながら説明する。なお、以下の説明において各部の大きさやその比、配置等は一例であり、本実施の形態の例は、図示等した大きさや比率、配置に限られるものではない。本発明の実施の形態に係る情報処理システムは、図１に例示するように、操作デバイス１０と、操作デバイス１０に対して無線または有線にて接続される家庭用ゲーム機等の主装置２０とを含む。この操作デバイス１０は、ユーザから受け入れた指示操作の内容を主装置２０に出力する。また操作デバイス１０は、主装置２０から入力される指示を受け入れて、各部の制御を行う。この操作デバイス１０の詳しい動作は後に述べる。
【０００９】
本実施の形態の例では、操作デバイス１０は、ユーザの左手または右手のどちらかに装着されるものとして設定される。この操作デバイス１０の一例は、図１，図２に例示するようなものである。図１は操作デバイス１０を正面側から見た斜視図であり、図２は操作デバイス１０を背面側から見た斜視図である。
【００１０】
操作デバイス１０は、ユーザにより把持される把持部２１と、操作部２２とを含む。把持部２１は、実質的に多角形柱状をなし、操作部２２が、この把持部２１から連続して形成されている。図１，２の例では、操作部２２は、正面側にセンサ部２２１と、ボタン操作部２２２とを含み、背面側に、指センサ２２３と、本発明の可動部に対応するロッキングボタン２２４とを備える。またこの操作デバイス１０は、本体内部に、図３に例示するように、回路部１００を含む。この回路部１００は、制御部１１と、記憶部１２と、インタフェース部１３と、通信部１４とを含んで構成される。
【００１１】
この制御部１１は、マイクロコンピュータ等のプログラム制御デバイスであり、記憶部１２に格納されたプログラムに従って動作する。本実施の形態では、この制御部１１は、可動部としてのロッキングボタン２２４を介して触力覚を提示するための制御に係る指示として、制御モードを特定する情報と、制御モードごとに定められた制御情報とを、主装置２０から受け入れる。そして制御部１１は、この受け入れた情報で特定される制御モードにて、受け入れた制御情報を用いて、ロッキングボタン２２４のユーザによる移動動作に対し、ユーザに提示するべき触力覚を制御する。この制御部１１の動作については後述する。記憶部１２は、メモリデバイスであり、制御部１１によって実行されるプログラムを保持する。またこの記憶部１２は制御部１１のワークメモリとしても動作する。
【００１２】
インタフェース部１３は、操作部２２の各部に接続され、センサ部２２１や、ボタン操作部２２２等から入力されるユーザの指示を表す信号等、各種の信号を受け入れて制御部１１に出力する。またこのインタフェース部１３は、制御部１１から入力される指示を、操作部２２の各部に出力する。
【００１３】
通信部１４は、例えばブルートゥース（登録商標）等の無線通信インタフェース、またはＵＳＢや有線ＬＡＮ等の有線通信インタフェース等を含む。この通信部１４は、主装置２０に接続され、主装置２０との間で種々の信号を授受する。
【００１４】
本実施の形態では、この操作デバイス１０の左側面または右側面のいずれか一方側に固定具が固定される。この固定具は例えば可撓性あるベルトを環状としたものである。この例の操作デバイス１０を操作するユーザは、固定具にユーザ自身の人差指から小指までを通し、操作デバイス１０の本体をユーザの親指の付根に当接させた位置に固定して用いる。図１，２の例では、操作デバイス１０の右側面側がユーザの手の平に押付けられて操作デバイス１０が固定された状態が示されている。またこの操作デバイス１０の大きさは、固定具に指を通して操作デバイス１０を装着したユーザが、自然に操作デバイス１０を把持したときに、ユーザの親指末節が操作デバイス１０の正面側のボタン操作部２２２に到達する程度の大きさとする。つまり本実施の形態では、ロッキングボタン２２４を含む、操作部２２の少なくとも一部のボタン等が、把持部２１を把持したときに、ユーザの指が到達する範囲に配される。
【００１５】
すなわち、操作デバイス１０を装着したユーザが、自然に操作デバイス１０を把持したときには、当該ユーザの人差指は操作デバイス１０のロッキングボタン２２４に触れる位置となり、ユーザは把持部２１を手の平と、中指、薬指、小指とで握りこむようになる。もっとも、この状態からユーザが手を開いても、固定具により操作デバイス１０がユーザの手に固定されるので、操作デバイス１０が落下することはない。
【００１６】
センサ部２２１は、例えば、ユーザが自然にデバイス本体２１０を把持したとき、ユーザの親指の末節側が到達する位置よりやや下方、ユーザの親指の基節側が近接する位置に配される。この指センサ部２２１は、操作デバイス１０の正面側であって操作デバイス１０の表面の法線方向を中心とし、操作デバイス１０正面の左側面側から右側面側までの比較的広角の角度範囲を検出可能範囲として、この検出可能範囲においてユーザの親指を検出する。そして当該親指を検出した位置（上記角度範囲内の角度）と、指センサ部２２１からユーザの親指までの距離とを検出し、これらの情報を含む、検出結果情報を制御部１１に出力する。この指センサ部２２１は例えば、カメラや、光学センサ、焦電センサ、静電容量センサ等、どのようなものでも構わない。
【００１７】
ボタン操作部２２２は、少なくとも一つのボタンを含み、当該ボタンに対しユーザの押下操作があったときに、押下操作がされたボタンを特定する情報を制御部１１に出力する。指センサ２２３は、操作デバイス１０の把持部２１にユーザの中指ないし小指が近接しているか（あるいは触れているか）否かを検出する。そして当該検出の結果を表す情報を、制御部１１に出力する。
【００１８】
ロッキングボタン２２４は、本発明の可動部に相当し、操作デバイス１０の本体に対して、操作デバイス１０の背面側に突出した第１の位置と、操作デバイス１０の本体側へ押し込まれた第２の位置との間で回転移動可能なボタンである。このロッキングボタン２２４は、ユーザの人差指等で第２の位置に向って押し込み操作され、またユーザが指を放せば、第１の位置に復帰するよう、弾性体等によって付勢されている。
【００１９】
本実施の形態の操作デバイス１０は、このロッキングボタン２２４により、ユーザの指に触力覚を提示することで、ユーザが仮想的に手にした仮想対象物の質感を表現する。具体的にはロッキングボタン２２４の可動範囲を変化させ、またユーザの操作に対して反力（ユーザがロッキングボタン２２４を押込む力に抵抗する力）を提示して、ユーザに対して触力覚を提示する。なお、本実施の形態はこの例に限るものではなく、可動部を例えば、ロッキングボタン２２４ではなく、ユーザの手のひら近傍に配した部材として、ユーザの手のひらに触力覚を堤示するなど、ユーザの手の一部に触力覚を堤示できれば、可動部の配置及び態様は、ここで例示したものに限られるものではない。
【００２０】
具体的に、この例の本実施の形態では、このロッキングボタン２２４は、図４に例示するように、可動部材であるボタンカバー２２４ｂと、ボタンカバー支持部３０と、ロッキングボタン２２４の位置を検出する位置センサ３１と、ボタンカバー２２４ｂの可動範囲を、指示された範囲に規制する規制部３２とを備える。
【００２１】
ここで位置センサ３１は、アーム３２３の回転中心であるヒンジに取付けられたポテンショメータ等であり、アーム３２３の回転角度の情報を出力する。またはこの位置センサ３１は、アーム３２３ではなく、ロッキングボタン２２４の回転中心であるヒンジに取付けられたポテンショメータ等であってもよい。この場合、位置センサ３１は、ロッキングボタン２２４の回転角度の情報を出力することとなる。また、規制部３２は、例えばアクチュエータとしてのモータ３２１と、その制御回路３２２と、当該アクチュエータにより駆動される規制部材であるアーム３２３とを含んで構成される。
【００２２】
ボタンカバー２２４ｂは、ユーザの指によって押圧される面を有している。ボタンカバー支持部３０は、操作デバイス１０の本体側に固定されたヒンジを有し、このヒンジ周りの所定の角度範囲（上記第１の位置と第２の位置との間）で回転可能な状態にボタンカバー２２４ｂを支持する。またこのボタンカバー支持部３０は、ボタンカバー２２４ｂを第１の位置に向って、バネ等の弾性体により付勢している。これよりユーザが押圧しない状態では、ボタンカバー２２４ｂは第１の位置に移動する。
【００２３】
このボタンカバー２２４ｂは、操作デバイス１０の背面側に突出した第１の位置と、操作デバイス１０の本体側へ押し込まれた第２の位置との間であって、後に述べるアーム３２３に当接する位置（当接位置と呼ぶ）まで押込み可能となる。そこでユーザが操作デバイス１０本体を握る動作を行うとともに、ボタンカバー２２４ｂを人差指で押圧すると、当接位置まではボタンカバー２２４ｂは特段の抵抗力を感じることなく（ボタンカバー支持部３０の付勢力のみに抵抗するだけで）移動し、当接位置でアーム３２３に当接することで硬いものに触れたという触力覚が提示される。
【００２４】
さらにユーザが力を入れて握る動作を行い、それによりボタンカバー２２４ｂの押圧力を強めたときに、アーム３２３を操作デバイス１０の本体側に後退させるようモータ３２１を回転させると、ユーザに対して、あたかも握る力によって対象物が変形したかのような触力覚を提示できる。この際、モータ３２１の回転速度をユーザによるボタンカバー２２４ｂの押圧力に応じて変化させることで硬さの相違も併せて提示できる。
【００２５】
規制部３２のモータ３２１は、サーボモータまたはステッピングモータ等、回転角度を制御可能なモータである。このモータ３２１はギアヘッドが一体化されたいわゆるギアードモータであってもよい。このモータ３２１は、制御回路３２２から入力される電流により回転動作する。
【００２６】
モータ３２１の制御回路３２２は、制御部１１からトルク制御値τと回転方向の情報Ｄとの入力を受け入れる。この制御回路３２２は、そしてこのトルク制御値τに応じた大きさで、回転方向の情報Ｄに対応する方向の電流を、モータ３２１に供給する。モータ３２１はこの電流に応じたトルクで、指定された回転方向へ回転する。具体的に回転方向が「アップ」の場合、アーム３２３の先端（当接する部分）をボタンカバー２２４ｂ側へ移動させる方向へ回転する。また回転方向が「ダウン」の場合、アーム３２３の先端（当接する部分）を操作デバイス１０の本体側へ移動させる方向へ回転する。
【００２７】
回転方向が「アップ」の場合には、アーム３２３の先端（当接する部分）をボタンカバー２２４ｂ側へ移動させる方向へ回転し、モータ３２１によるトルクとユーザのボタンカバー２２４ｂの押圧力（アーム３２３によりモータ３２１の回転方向とは逆方向の回転力として伝達される）とが相殺し、押圧力がトルクに勝っている分の速度でボタンカバー２２４ｂが第２の位置に向って移動することとなる。また押圧力とトルクとがつり合えば、その時点の位置でボタンカバー２２４ｂが動かない状態となる。
【００２８】
またこの制御回路３２２は、制御部１１からトルク制御値τに代えて回転角度θの入力を受けてもよい。この場合制御回路３２２は、当該入力された回転角度θまでモータ３２１を回転制御して、アーム３２３の先端（当接する部分）をボタンカバー２２４ｂ側へ移動させる方向へ回転する。なお、モータを定められた回転角度まで回転して停止させる制御については広く知られているので、ここでの詳しい説明は省略する。
【００２９】
さらに別の例では、この制御回路３２２は、制御部１１からトルク制御値τに代えて電流値または電圧値の入力を受けてもよい。この場合制御回路３２２は、モータ３２１に対して入力された値に対応する大きさの電流を供給し、または入力された値に対応する大きさの電圧を印加する。
【００３０】
アーム３２３は、モータ３２１の回転軸に取付けられ、モータ３２１の回転角度θに応じて、ボタンカバー２２４ｂの移動可能範囲を規制する。具体的に本実施の形態の例では、アーム３２３は、図４に例示するように、ボタンカバー２２４ｂの裏側、つまり操作デバイス１０の本体側（ボタンカバー２２４ｂの移動軌跡上）に配され、アーム部材３２３ａと、円板状のアーム部本体３２３ｃとを有している。図４の例では、円板状のアーム部本体３２３ｃの中心がモータ３２１の回転軸に固定される。そしてアーム部材３２３ａはこのアーム部本体３２３ｃと一体的に構成されて、このアーム部本体３２３ｃからその円周接線方向に突出する凸部となっている。
【００３１】
この図４の例のアーム３２３によれば、モータ３２１の回転角度に応じてアーム部材３２３ａの先端（当接部）の位置が、ボタンカバー２２４ｂの移動可能範囲内で移動する。これによりボタンカバー２２４ｂはアーム部材３２３ａの当接部に当接する当接位置まで移動可能となる。
【００３２】
図５は、図４の例のアーム３２３と、ボタンカバー２２４ｂとの関係を概念的に示した図である。図５に概念的に示すように、アーム部材３２３ａの長手方向（突出方向）とボタンカバー２２４ｂの移動方向とのなす角度（図５（Ｂ）のφ）が所定値（例えば９０度）以上であれば、ボタンカバー２２４ｂの移動範囲を規制することがなく、第１の位置（図５（Ａ）のＸ）と、第２の位置（図５（Ａ）のＹ）との間で自由に（ボタンカバー支持部３０の付勢力のみに抵抗するだけで）移動可能となっている。図５（Ａ）の例では、アーム３２３の回転角度が「０」であるものとし、φが９０度となっているものとしている。
【００３３】
一方、アーム３２３がモータ３２１により回転角度θだけ回動し、アーム部材３２３ａの長手方向（突出方向）とボタンカバー２２４ｂの移動方向とのなす角度φが所定値（例えば９０度）未満となったときには、アーム部材３２３ａの先端がボタンカバー２２４ｂの移動軌跡内に位置することとなる。なお、ここではアーム３２３の回転角度θは、アーム３２３の初期位置から図面で反時計周りに角度γだけ回転した角度の位置を最大位置θmax（予め設定しておく）として、この最大位置を基準とし、この基準となった角度から初期位置の方向へ戻る角度θで定義する。つまりこの例では初期位置の回転角度θ＝γであり、最大の回転角度となったときのθ＝０となる。そしてアーム３２３の回転角度θが小さくなり、当該なす角φが「０」に近くなるほど、アーム部材３２３ａとボタンカバー２２４ｂとの当接位置（図５（Ｂ）のＹ′の位置）が、ボタンカバー２２４ｂの第１の位置（図５（Ｂ）のＸ）に近接する。これより、ボタンカバー２２４ｂの押込み可能量（可動範囲）が規制される。
【００３４】
なお、この規制部３２は図４に例示したようなモータ３２１及びアーム３２３の例に限られず、ボタンカバー２２４ｂの移動範囲を指定された範囲に規制できるものであれば、例えばリニアアクチュエータと、当該リニアアクチュエータによって移動される規制部材としてのソレノイドのように、ボタンカバー２２４ｂの移動方向に直線的に移動し、その一端側がボタンカバー２２４ｂと当接してボタンカバー２２４ｂの移動範囲を規制するものであってもよい。
【００３５】
主装置２０は、例えばカメラを備えてユーザを撮像し、所定のタイミングごとに、ユーザの手の現実空間内での位置を検出し、検出した現実空間内の位置に対応するゲーム空間内でのユーザの手の仮想的位置を演算により求める。そしてこの求めた仮想的位置の情報に基づいて、ゲームの処理としてユーザの手に対して提示するべき触力覚を決定する。一例として主装置２０は、ユーザがゲーム内で銃を手にしてトリガーを引こうとしていると検出すると、操作デバイス１０に対して銃のトリガーを引くときの触力覚を提示するよう制御する指示を出力する。
【００３６】
次に本発明の実施の形態に係る操作デバイス１０の制御部１１の動作について説明する。本実施の形態では、この制御部１１は、図６に例示するように、触力覚の制御に係る指示を受け入れる受入部５１と、当該受け入れた指示に基づき、ユーザのロッキングボタン２２４の操作に応じ、ユーザに対して提示する触力覚を制御するための指示を生成する触力覚制御部５２と、生成した指示を出力する出力部５３とを含んで構成される。
【００３７】
受入部５１は、主装置２０から触力覚の制御に係る指示を受け入れる。本実施の形態においてこの指示は、主装置２０から所定のタイミングごとに繰返し送信される指示データパケットに含めて送信される。ここで指示データパケットの送信タイミングは１０Ｈｚ〜１００Ｈｚのタイミング（１秒あたり１０回ないし１００回のタイミング）程度でよい。また、この指示データパケットは、図７に例示するように、パケット識別子（Ｎ）を含むヘッダ部Ｈと、触力覚指示部Ｆと、その他のデータ部Ｄとを含んでなる。また触力覚指示部Ｆは、制御モードを特定する情報（Ｍ）と、この制御モードごとに定められた制御情報（Ｐ）とを含む。
【００３８】
受入部５１は、このパケットを受信することで制御モードを特定する情報（Ｍ）と、制御モードごとに定められた制御情報（Ｐ）とを受け入れる。これらの情報の具体的な例については、後に述べる。
【００３９】
触力覚制御部５２は、受入部５１にて受け入れた情報で特定される制御モードにて、当該制御モードを特定する情報とともに受け入れた制御情報を用いて、可動部であるロッキングボタン２２４の移動動作に対して提示する触力覚を制御する。本実施の形態の例では、この触力覚制御部５２は、アクチュエータであるモータ３２１に対する制御を行い、ユーザに対して提示する触力覚を制御する。この触力覚制御部５２の動作は後に詳しく述べる。
【００４０】
出力部５３は、触力覚制御部５２から入力される制御の指示（トルク制御値や電流値、電圧値等）を、モータ３２１の制御回路３２２に出力する。
【００４１】
ここで触力覚制御部５２の動作を具体的な例を用いて説明する。本実施の形態の一例では、主装置２０からの指示によって指定される制御モードは、
（１）アクチュエータの目標位置及び、制御ゲインの情報を指定することで、アクチュエータを制御する第１の制御モード、
（２）アクチュエータに供給する電圧の電圧値またはアクチュエータに供給する電流の電流値を指定することでアクチュエータを制御する第２の制御モード、
（３）アクチュエータまたは可動部の位置範囲に対する制御情報を設定した複数の設定情報のうち、どの設定情報を用いるかを指定することで、操作デバイス１０側にアクチュエータの制御を指示する第３の制御モード、
を含む。
【００４２】
［目標位置とゲインとを指定する例］
まず、（１）アクチュエータの目標位置及び、制御ゲインの情報を指定する場合（第１の制御モード）、主装置２０から受け入れる制御ゲインの情報には、位置誤差に対するゲイン（ｐゲインｐ）と、速度に対するゲイン（ｄゲインｄ）とが含まれる。この場合、触力覚制御部５２は、位置センサ３１からアクチュエータの位置情報として、ロッキングボタン２２４の押し込みにより回転されるアーム３２３の回転角度θの情報を受け入れる。ここでの例では制御情報に含まれるアクチュエータの目標位置は、アーム３２３の回転角度θｔとして指定される。
【００４３】
そして触力覚制御部５２は、アクチュエータであるモータ３２１の制御回路３２２に出力するトルク制御値τを、ゲイン定数をＧとして、
τ＝（ｐ×｜θ−θｔ｜＋ｄ×Δθ）／Ｇｋ
として定める。ここでΔθは、前回位置センサ３１から入力された値θｐと、今回位置センサ３１から入力された値θとの差、
Δθ＝θ−θｐ
であり、｜ｘ｜は、ｘの絶対値を演算することを意味する。触力覚制御部５２は、ここで演算したトルク制御値τを出力部５３に出力する。
【００４４】
さらにこの例の場合、触力覚制御部５２は、モータ３２１の回転方向を、アーム３２３の実際の角度と、目標位置との差θ−θｔに基づいてθ−θｔ＞０であれば「アップ」、そうでなければ「ダウン」として、出力部５３に出力する。なお、「アップ」、「ダウン」の判断は、θ−θｔを用いることなく、トルク制御値τの符号によって、τ＞０であれば「アップ」、そうでなければ「ダウン」として、出力部５３に出力するようにしてもよい。制御の方法によっては、θ−θｔ＞０であってもモータ３２１の回転方向が「ダウン」となり得る場合があることを考慮したものである。
【００４５】
なお、この例において触力覚制御部５２は、｜θ−θｔ｜が所定値未満であれば、トルク制御値τを「０」として、出力部５３に出力することとしてもよい。
【００４６】
また、アクチュエータの目標位置は、可動部であるロッキングボタン２２４の位置の情報（回転角度）として指定されてもよい。この場合、位置センサ３１は、アーム３２３ではなくロッキングボタン２２４の回転角度の情報を出力する。
【００４７】
［電圧値・電流値を指定する例］
また、（２）アクチュエータに供給する電圧の電圧値またはアクチュエータに供給する電流の電流値を指定する場合（第２の制御モード）、触力覚制御部５２は、受け入れた電流値または電圧値をそのまま出力部５３に出力する。この例では、出力部５３を介してこの電流値または電圧値の入力を受けた制御回路３２２は、当該電流値または電圧値をモータ３２１に供給する。この例において受入部５１は、電流値または電圧値とともに、回転方向を表す情報（「アップ」または「ダウン」を表す情報）を主装置２０から受け入れる。そして触力覚制御部５２は、当該回転方向を表す情報をそのまま出力部５３に出力する。
【００４８】
［継続時間を指定する例］
この電圧値や電流値を指定する例においては、受入部５１は、主装置２０から第２の制御モードを特定する情報や、電流値または電圧値とともに制御の継続時間に係る情報を受け入れてもよい。
【００４９】
この場合、触力覚制御部５２は、制御回路３２２に対して電流値や電圧値を出力した時点からの経過時間を、図示しない計時手段（例えばクロック信号の発生部とカウンタとにより実現できる公知のものでよい）を用いて計時し、上記受け入れた情報で特定される継続時間が経過したときに、制御回路３２２に対してモータ３２１の動作を停止するよう指示する（例えば電流値として「０」を出力する）。これによると、主装置２０からアクチュエータの制御に係る情報を新たに受信しない場合でも、指定された時間が経過した時点で処理を終了でき、主装置２０との通信が途切れたときにも主装置２０側で実行されている処理で意図されている触力覚が提示可能となる。
【００５０】
［制御パターンを指定する例］
次に、（３）アクチュエータまたは可動部の位置範囲に対する制御情報を設定した複数の設定情報のうち、どの設定情報を用いるかを指定することで、操作デバイス１０側にアクチュエータの制御を指示する例（第３の制御モード）について説明する。
【００５１】
なお、本実施の形態においてアクチュエータの位置範囲は、実際にはアーム３２３の回転角度の範囲を表すが、この角度の範囲はアクチュエータの回転軸の回転角度の範囲そのものである場合と、そうでない場合（減速ギアを介してアーム３２３が接続されている場合など）とがあり得る。この後者の場合は、減速ギアの出力側の位置がアクチュエータの位置に相当する。
【００５２】
この例では、操作デバイス１０の記憶部１２には予め、アクチュエータまたは可動部の位置範囲と制御情報との組を少なくとも一組含む設定情報を記憶しておく。この情報は例えば、ゲーム中で銃を撃つ際の例である図８に例示するように、アクチュエータの位置範囲を表す情報として当該位置範囲の下限を表す情報θ１minと、制御情報としての目標位置θｔ１＝４０及び制御ゲインｐ１，ｄ１との組、または、アクチュエータの位置範囲を表す情報として当該位置範囲の下限を表す情報θ２minと、制御情報としての電圧値の情報ＣＶ（または電流値の情報ＣＩ）との組を含む。なお、図８及び以下の説明ではアクチュエータの位置範囲を用いる例を示しているが、可動部の位置範囲を用いる場合は、図８及び以下の説明において、アクチュエータの位置範囲の代わりに、可動部の位置範囲を表す情報とすればよい。
【００５３】
この例では触力覚制御部５２は、アーム３２３または可動部であるロッキングボタン２２４の回転角度θの情報を受け入れ、指定された設定情報において当該受け入れた回転角度θを含む位置範囲の情報に関連付けられた制御情報を参照して、それが目標位置及び制御ゲインの組であれば第１の制御モードと同様の処理によりアクチュエータを制御し、また参照した制御情報が電圧値または電流値であれば第２の制御モードと同様の処理によりアクチュエータを制御する。
【００５４】
すなわち図８の例では、位置範囲がθ２min（例えば４０とする）を下回ったとき「アップモード」となって、θ１min＝２０から次の位置範囲の下限であるθ２min＝４０の間、目標位置θｔ１及び制御ゲインｐ１，ｄ１（回転方向は図示していないがアップとする）にて制御を行う。またこの「アップモード」である間、θ２min＝４０から次の位置範囲の下限であるθ３min＝８０の間、電圧値ＣＶ＝２００とする制御を行い、θ３min＝８０から次の位置範囲の下限であるθ４min＝１２５までの間、電圧値ＣＶ＝−３０とする制御を行う（図８（Ａ），ここで電圧値ＣＶが正のときはアップ、負のときはダウンの回転方向に制御することを示す）。
【００５５】
また位置範囲がθ４min以上（θ＝１３０が最大角度であるとするとき、θ４minは例えば１２５とする）となったときには「ダウンモード」となって、制御情報としての目標位置θｔ２＝２０及び制御ゲインｐ２，ｄ２にて制御を行う（図８（Ｂ），回転方向はここではダウンとなる）。このように設定情報には、第１の制御モードに係る制御情報と、第２の制御モードに係る制御情報とが混在していても構わない。
【００５６】
この例によると、図８（Ａ）に例示するように、ユーザがロッキングボタン２２４を初期位置（このとき、アーム３２３の回転角度θ＝０）から押込むと、アーム３２３の位置がθ＝２０となるまでは何らの抵抗を受けずに（ロッキングボタン２２４を初期位置へ戻そうとする付勢力に抗するのみで）押込むこととなり、アーム３２３の位置がθ＝２０からθ＝４０までは徐々に抵抗が強くなる触力覚の提示を受け、アーム３２３の位置がθ＝４０からθ＝８０までは比較的強い反力（押戻そうとする力）の触力覚が提示され、アーム３２３の位置がθ＝８０となる位置までロッキングボタン２２４を押し込むと急激に反力がなくなったかのような触力覚を受けることとなる。
【００５７】
これはちょうど、拳銃などのトリガーを引くときに、最初に遊びがあり、撃鉄が引かれるまでは若干の反力があり、その後、撃鉄を戻すために強い力が必要となり、その後撃鉄が戻って弾丸が発射され、トリガーが自由になるのに対応する、いわば銃のノックバック感に相当する触力覚が提示されている状態に相当する。
【００５８】
また触力覚制御部５２は、アーム３２３の位置情報の変化速度に基づいてユーザの指の動きに基づいて速さまたは力を推定してゲインを変えてもよい。具体的に、ユーザの指の動き（アーム３２３の位置情報の変化速度）が予め定めた閾値より下回る場合と、閾値を上回る場合とで制御ゲインを異ならせる。例えば、ユーザの指の動き（アーム３２３の位置情報の変化速度）が予め定めた閾値より下回るときよりも、閾値を上回る場合において制御ゲインを強めに（より強い反力を提示するように）設定することとしてもよい。
【００５９】
［振動提示］
本実施の形態では、また、ロッキングボタン２２４を振動させて、ユーザに対して振動を提示してもよい。具体的には、主装置２０は、ロッキングボタン２２４を、上側の第１の位置と、下側の第２の位置との間で振動させる指示を行う。
【００６０】
そして操作デバイス１０の制御部１１は、この振動を提示する指示を受けたときには、所定のタイミングごとに、アクチュエータの目標位置を第１の位置とする第１の制御モードと、電流値または電圧値とともに、回転方向を「ダウン」とする情報とを出力する第２の制御モードとを切り替える。
【００６１】
このように第１の制御モードと第２の制御モードとを交互に切り替える方法によって振動を提示することで、上側の振動限界の位置（第１の位置）が制御可能となる。また、この方法によれば、第２の位置についても、アーム３２３が移動する距離（ユーザがロッキングボタン２２４を押し込んでいるときにはロッキングボタン２２４が移動する距離と同じになる）が第２の制御モードでの制御が行われている時間の長さに依存することとなり、一定の時間ごとに第２の制御モードから第１の制御モードへの切り替えを行っている場合は、ユーザがロッキングボタン２２４を押し込む力の大小に関わらず実質的に一定となるため、第１の制御モードと第２の制御モードとを切り替えるタイミングを変更することによって制御可能となる。
【００６２】
なお、制御部１１は、上述の場合に、第１の制御モードと第２の制御モードとを交互に切り替える方法に代えて、第１の制御モードにおいて目標位置を所定の時間ごとに、上側の第１の位置と、下側の第２の位置とで切り替えることとしてもよい。また、第２の制御モードを用い、回転方向の「アップ」、「ダウン」を所定の時間ごとに交互に切り替えてもよい。
【００６３】
また、第１の制御モードと第２の制御モードとを切り替えるタイミングは、例えば「アップ」方向への駆動中に、制御部１１がロッキングボタン２２４とアーム３２３の相対的な位置を検出し、アーム３２３とロッキングボタン２２４が接触するまでは第1の制御モードで駆動し、接触した後は第2の制御モードで駆動するようにしてもよい。
【００６４】
［実際の振動範囲に基づく制御］
またこの振動提示の制御においては、位置センサ３１が検出する位置の範囲の情報に基づいて、次のような制御を行ってもよい。具体的には、例えば、制御部１１は、指示された第１，第２（上限側，下限側）の位置の情報が２０度と６０度とであるのに、ロッキングアームに対するユーザの押し込み力の影響で、位置センサ３１により検出した位置の情報が４０度から６０度の間の２０度である場合に、振動の幅が、意図した振動の幅となるように上限側または下限側（例えば下限側である第２の位置）を制御して、例えば、４０度と８０度に制御する。なお、このとき上限側も制御してもよい。
【００６５】
［別の例：連射銃］
また、図８の例において、位置範囲がθ４min以上（θ＝１３０が最大角度であるとする）のときに、制御情報としての目標位置θｔ２＝１２５及び制御ゲインｐ２，ｄ２にて制御を行う（回転方向はここではアップとする）ようにしてもよい。この例によると、トリガーを引ききったときにトリガーを若干戻して引き切らせることを繰り返すこととなる。この別の例では銃を連射しているかのような触力覚が提示できる。
【００６６】
また銃の連射感を堤示する方法は、この例に限らず、例えば次のようにしてもよい。例えば操作デバイス１０は、アーム３２３またはロッキングボタン２２４の位置範囲が所定の値（開始条件値）を上回る（例えばθ＝１００が最大角度であれば、開始条件値は、その１／２のθ＝５０とする）ときに、「連射モード」に移行して、所定のタイミングごとにアクチュエータのアップ、ダウンを切り替えて振動を堤示する。
【００６７】
具体的には、アクチュエータをアップさせるときには、制御情報としての目標位置θｔ＝５とし、アクチュエータをダウンさせるときには、制御情報としての目標位置θｔ＝９５とする（制御がオーバーシュート気味に働く場合を考慮して、最小値や最大値に対して所定の余裕を持たせた値とする）。
【００６８】
またこの例では操作デバイス１０は、アーム３２３またはロッキングボタン２２４の位置範囲が所定の値（停止条件値）を下回ったときに「連射モード」を終了して、アクチュエータの制御を停止する。ここで停止条件値は、開始条件値と同じでもよいし、異なっていてもよい。例えば停止条件値は、開始条件値よりも第１の位置に近接する側、例えばθ＝３０としてもよい。
【００６９】
さらに、ここではアクチュエータの制御時に目標位置を設定することとしたが、これに限られず、アクチュエータをアップさせるときには、アクチュエータに供給する電圧の電圧値ＣＶを予め定めた負の値ＣＶ１とし、アクチュエータをダウンさせるときには、アクチュエータに供給する電圧の電圧値ＣＶを予め定めた正の値ＣＶ２（ここでは電圧値ＣＶが負のときはアップ、正のときはダウンの回転方向に制御することを示すものとした）として、所定のタイミングごとに電圧値ＣＶをＣＶ１，ＣＶ２に交互に設定し、振動を堤示することとしてもよい。この振動提示は、電圧値を交互に設定することに代えて、先に述べたように、第１の制御と第２の制御とを交互に行う方法を採用してもよい。
【００７０】
なお、上記開始条件値及び終了条件値にはヒステリシスをもたせてもよい。具体的には、「連射モード」の設定がされる前（開始条件値の判定処理開始前）のアームまたはロッキングボタン２２４の位置範囲が、開始条件値を上回っていたときには、開始条件値を一度下回り、その後、再度開始条件値を上回るまで「連射モード」に移行しないよう制御してもよい。
【００７１】
また、「連射モード」中は、制御がオーバーシュート気味に働く場合を考慮して、アーム３２３またはロッキングボタン２２４の位置範囲が停止条件値を下回ってもすぐに「連射モード」を終了せず、アーム３２３またはロッキングボタン２２４の位置範囲が停止条件値を下回っている時間が予め定めたしきい値を超えたときに「連射モード」を終了するよう制御してもよい。このようにフィルタリングしたような制御を行うことで、自然な連射感を堤示できる。なお、このフィルタリングは、移動平均を用いるような、ローパスフィルタによって行われてもよい。
【００７２】
［ゲームプログラムによる制御］
さらに、主装置２０はゲームの処理として、制御ゲインを設定する指示を出力してもよい。例えば銃の連射を行うゲームの場合、残弾数に応じて制御ゲインを変更制御してもよい。
【００７３】
また主装置２０は、所定の条件に応じてゲインを弱める制御を行ってもよい。具体的にこの条件には、総プレイ時間（毎回のプレイ時間の合計）、ゲームのプレイ回数、毎回のプレイ開始からの時間（プレイ時間）、所定の操作開始からの経過時間に基づいて制御ゲインを制御（例えば制御ゲインを弱める制御）してもよい。例えば、マシンガンを撃ち続ける操作が行われる場合に、マシンガンを撃つ操作開始からの経過時間に応じて制御ゲインを小さくなるよう制御する。このようにすると、マシンガンを連射している感覚は与えつつ、強い振動が継続的に提示されることが防止される。このことで操作性が向上する。
【００７４】
［力覚提示の他の例］
さらにユーザによるロッキングボタン２２４を押圧する力がアクチュエータの力よりも大きい場合には、ロッキングボタン２２４をユーザの力に抗して持ち上げることができなくなり、あたかも物体にぶつかってはねのけられたかのような力覚を提示することができなくなる。
【００７５】
そこで本実施の形態のある例では、位置センサ３１から入力される情報で示されるアーム３２３の位置情報がθであるときに、主装置２０からアーム３２３の回転角度の目標としてθｔ（θｔ＞θとする）が与えられると、触力覚制御部５２が、アクチュエータを駆動してアーム３２３を回転角度θｔまで回転するよう制御する。このとき、触力覚制御部５２は、所定のタイミングごとに繰り返し、位置センサ３１から入力される情報で示されるアーム３２３の位置情報θを調べ、予め定めた時間に亘ってθｔ＞θのままであるか否か（所定の時間に亘ってロッキングボタン２２４が移動不能であるか否か）を調べる。ここで所定の時間に亘ってロッキングボタン２２４が移動不能であると判断すると、触力覚制御部５２は、アーム３２３の回転角度の目標θｔを、θｔ＝θ−Δθ（ここでΔθ＞０）に設定し直して、アクチュエータを制御することとしてもよい。
【００７６】
この例では、ロッキングボタン２２４が持ち上げられる代わりに引き込まれることとなるが、ユーザは一時的にロッキングボタン２２４が引き込まれることで、一時的にユーザによりロッキングボタン２２４に与えられる力が弱められ、それに対して押し返す力を再度与えることで、押し返される力をより強く感じられることとなるうえ、引き込まれた位置から押し返すことによる慣性力のため、押し返す力がより強く与えられる。こうして何らの変化をも与えない場合に比べ、はねのけられた場合と類似する感覚を与える。
【００７７】
なお、この制御を行う場合は、アーム３２３の回転角度の目標値θｔが与えられたときに、触力覚制御部５２が目標値をθｔ−Δθに補正して制御しておくこととしてもよい。これにより予めアーム３２３がΔθだけ余計に回転していることとなり、ロッキングボタン２２４の規制範囲が対応する量だけ持ち上げられた位置に設定されることとなる。このことで、その後いつでもΔθだけ引き込む制御を行うことが可能となる。
【００７８】
また、ユーザがロッキングボタン２２４を押圧する力が比較的大きいときには、触力覚制御部５２が例えばモータ３２１を「アップ」の方向に回転させる制御をしている間に、単位時間あたりに取得する、位置センサ３１から入力される情報で示されるアーム３２３の位置情報θの変化量δθが、所定の閾値δθthを下回る場合がある。
【００７９】
触力覚制御部５２は、このような状態となったときには、アーム３２３の回転制御を停止する期間を設けることとしてもよい。具体的には、触力覚制御部５２は、アーム３２３の回転角度の目標をθｔとして制御しようとする場合に、アーム３２３の回転角度の目標を最終目標であるθｔとして制御を行う代わりに、Ｎ（Ｎ＞１なる整数）段階にわけて制御してもよい。つまり、Δθｔ＝（θｔ−θ）／Ｎ（ただしθは、この制御を開始する時点でのアーム３２３の回転角度を表す）とし、予め定めた時間間隔ΔＴごとに、その時点でのアーム３２３の回転角度θからΔθｔずつ移動させる制御を行う。
【００８０】
同様にモータ３２１に供給する電圧値により制御を行う場合も、指定するべき電圧値ＣＶにより制御を行う代わりに、予め定めた時間間隔ΔＴごとに、このΔＴとは異なり得る微小な時間τだけ、所定の電圧値ＣＶ′をモータ３２１に供給する（回転方向は本来の制御を行う方向とする）。
【００８１】
ここで所定の電圧値ＣＶ′は、モータ３２１に供給可能な最大電圧ＣＶmaxとしてもよいし、指定するべき電圧値ＣＶよりも大きい電圧値を所定の方法で演算してもよい。例えば１より大きい、予め定めた値を乗じるか、０より大きい予め定めた値を加算することとすればよい。いずれの場合も演算の結果、モータ３２１に供給可能な最大電圧ＣＶmaxを超える場合は、ＣＶ′＝ＣＶmaxとする。
【００８２】
このように、アーム３２３の回転角度を、目標となる回転角度まで直線的に制御することに代えて、段階的に、いわば離散的に制御することで、ロッキングボタン２２４が持ち上がろうとしている感覚を、ユーザに対して効果的に与えることが可能となる。
【００８３】
さらに触力覚制御部５２は、主装置２０からアーム３２３の回転角度の目標としてθｔが与えられると、位置センサ３１から入力される情報で示されるアーム３２３の位置情報θと、このθｔとを比較し、σ（θｔ−θ）を得る。ここでσ（Ｘ）は、Ｘの正負の符号を表し、Ｘ＜０のときσ（Ｘ）＝−１、Ｘ＞０のときσ（Ｘ）＝１、Ｘ＝０のときσ（Ｘ）＝０となるものとする。
【００８４】
そして触力覚制御部５２は、アーム３２３の回転角度の目標を、θｔ′＝θ−σ（θｔ−θ）×Δθ（Δθは予め定めた微小角度とする）に設定し、時間τ（このτも予め定めた微小時間とする）だけアーム３２３を回転角度θｔ′となるようアクチュエータを制御する。その後、時間τの経過後に、触力覚制御部５２は、アーム３２３の回転角度の目標を、主装置２０から指示された目標角度θｔに設定し、アーム３２３が回転角度θｔとなるようなアクチュエータの制御を開始する。
【００８５】
この例によると、指示された移動方向とは逆方向に一時的にアーム３２３が移動し（予備動作）、その後、指示された方向にアーム３２３が移動するように制御される（本動作）。このように本動作に先立って予備動作が行われることで、本動作の動きが強調され、ユーザがより強く、本動作時の移動を感じるようになる。
【００８６】
なお、この動作がより効果的となるよう、ロッキングボタン２２４の当初移動可能範囲（アーム３２３により規制されない移動可能範囲全体）外まで、アーム３２３が回転可能となっていることとしてもよい。つまり、図５（Ａ）の例において、ロッキングボタン２２４のボタンカバー２２４ｂが位置Ｙまで押し込み可能となっているとき、アーム３２３は回転角度θが負となる回転角まで回転可能となっていてもよい。このとき、ボタンカバー２２４ｂは位置Ｙよりも下方に移動できないよう別の部材によって規制されてアーム３２３に当接しない状態となっていても構わないが、アーム３２３は本来の回転方向と反対方向に引き込むことが可能となる。
【００８７】
なお、この制御は、アクチュエータに供給する電圧の電圧値またはアクチュエータに供給する電流の電流値を指定する場合（第２の制御モード）でも適用できる。すなわち、電流値または電圧値とともに、回転方向を表す情報（「アップ」または「ダウン」を表す情報）を主装置２０から受け入れたときに、触力覚制御部５２は、回転方向を、主装置２０から受け入れた方向とは逆方向とし、アクチュエータに供給する電流または電圧を、所定の電流値または電圧値（予め定めた電流値または電圧値でもよいし、入力された値そのものであってもよい）とするよう出力部５３に指示する。そして、その後時間τ（このτは上述と同じく予め定めた微小時間とする）だけ経過すると、触力覚制御部５２は、主装置２０から受け入れた回転方向を表す情報と、電流値または電圧値を表す情報とをそのまま出力部５３に出力する。
【００８８】
これにより、アーム３２３が一時的に、指示された移動方向とは逆方向に移動し（予備動作）、その後、指示された方向にアーム３２３が移動するように制御される（本動作）。
【００８９】
また、これらの種々の力覚提示の動作はそれぞれ組み合わせて用いられてもよい。例えば予備動作の後に本動作を行うときに、回転制御を停止する期間を設けつつ、いわば離散的にアーム３２３の回転制御を行ってもよい。
【００９０】
［チャタリング防止］
なお、本実施の形態の一例では、主装置２０が、ユーザが操作デバイス１０を動かす速度を検出し、当該検出した速度に応じて操作デバイス１０に対して送出するアクチュエータの制御のパラメータを異ならせてもよい。ここでユーザが操作デバイス１０を動かしている速度は、主装置２０に接続されたカメラ等でユーザを撮像して得た画像に基づいて検出してもよいし、操作デバイス１０が加速度センサ（不図示）を備えて、当該加速度センサで検出した加速度の値を送出している場合は、当該加速度センサで検出された加速度の積分値（累算値）によって速度を検出してもよい。
【００９１】
具体的に、このパラメータはローパスフィルタのカットオフ周波数であり、操作デバイス１０の制御部１１の出力部５３は、このカットオフ周波数に応じた直近のＭ回分（Ｍの値がカットオフ周波数に応じて変化する）の触力覚制御部５２から入力値（トルク制御値や電流値等）の平均を演算し（つまり直近Ｍ回分の移動平均を演算し）、当該演算の結果を制御回路３２２へ出力する。主装置２０は、ユーザが操作デバイス１０を早く動かしているほど、カットオフ周波数を低く設定する。
【００９２】
このようにすると、例えば主装置２０がゲームの仮想空間でのユーザの手の位置が、当該仮想空間内に配された物体に触れたときに触力覚を提示させようとする場合に、ユーザが手を早く動かしている（当該手に装着された操作デバイス１０が早く動いている）ほど、アクチュエータの動きが緩慢となり、一方でユーザが手をゆっくり動かせば動かすほど（例えば仮想空間内の物体表面に沿ってゆっくりと手を動かしている場合など）、仮想空間内の物体の形状に沿ってアクチュエータが駆動され、対応する触力覚が提示されることとなる。
【００９３】
これにより、ユーザが手を早く動かしているときに、仮想空間内の物体の位置に応じてアクチュエータが細かく振動しているように（チャタリングが生じたように）制御されてしまうことが防止される。
【００９４】
さらにこの制御は、把持部２１内にバイブレータ等の振動デバイスが固定されている場合、この振動デバイスに対して、主装置２０が、ユーザの操作デバイス１０を動かす速度を検出し、当該検出した速度に応じて操作デバイス１０に対して送出する振動デバイスの制御のパラメータを異ならせてもよい。つまり主装置２０は、この振動デバイスに対するローパスフィルタのカットオフ周波数を、ユーザが操作デバイス１０を早く動かしているほど、低く設定する。
【００９５】
［動作］
本発明の実施の形態の情報処理システムは以上の構成を備えており、次の例のように動作する。主装置２０が、所定のタイミングごと（例えばフレームごとのタイミング）に、ユーザの手の位置を検出し、ゲームの処理等に応じて、当該検出した手の位置に基づいて、ユーザの手に提示するべき触力覚の内容を決定する。本実施の形態では、ユーザの手に提示するべき触力覚を、ユーザの指に触力覚を提示することで代替する。ユーザは指にのみ触力覚の提示を受けることとなるが、手全体に触力覚が提示されたかのように感得する。
【００９６】
本実施の形態では、図９に例示するように、主装置２０が上記所定のタイミングごとに、ユーザの手に提示するべき触力覚の内容として、制御モードと制御情報または設定情報を指定する情報とを含むパケット（指示パケットと呼ぶ）を生成し（Ｓ１）、操作デバイス１０へ送出する（Ｓ２）。具体的にここでは、制御モードとして、第３の制御モードを指定する情報と、図７に例示した設定情報を指定する情報とを含むパケットが送出されたものとする。
【００９７】
操作デバイス１０では、位置センサ３１によりアクチュエータの位置情報として、アーム３２３（またはロッキングボタン２２４）の回転角度θの情報を得る（Ｓ３）。そして指定された設定情報を参照し、処理Ｓ３で得られた回転角度に対応する制御値を取得する（Ｓ４）。具体的に得られた回転角度がθ＝３０であれば、制御値として、θ１min＝２０から次の位置範囲の下限であるθ２min＝４０の間の制御値である、目標位置θｔ１及び制御ゲインｐ１，ｄ１を得る。そして、アクチュエータであるモータ３２１の制御回路３２２に出力するトルク制御値τを、ゲイン定数をＧとして、
τ＝（ｐ×｜θ−θｔ｜＋ｄ×Δθ）／Ｇｋ
として定め、当該演算したトルク制御値τを制御回路３２２に出力し、モータ３２１を回転制御する（Ｓ５）。
【００９８】
操作デバイス１０は、主装置２０から新たに指示パケットが受信されるまで処理Ｓ３からＳ５の処理を繰り返す。この繰り返しのタイミングは、例えば１ｋＨｚ程度の周期となる。この間、アーム３２３（またはロッキングボタン２２４）の回転角度に応じて、設定情報に設定されている制御値によりモータ３２１の回転制御を行う。
【００９９】
このように本実施の形態では、主装置２０から次の指示パケットが受信されるまでの間、前回受信した指示パケットの内容に基づいて操作デバイス１０が自律的に触力覚提示の動作を行う。これにより、操作のタイミングに合わせた触力覚提示も可能となり、種々の態様の触力覚が提示可能となる。
【０１００】
［弓ひき感の提示例］
また主装置２０では、左手と右手とのうち触力覚を提示する手（片手に操作デバイス１０を装着する場合、操作デバイス１０が装着されている手）の位置に基づいて提示するべき触力覚を定めるだけでなく、左右の手の位置に基づいて提示するべき触力覚を定めてもよい。例えば、主装置２０は、提示する触力覚の制御モードを第２の制御モードとし、左右の手の間の距離が大きいほど電流値を大きくする（回転方向はアップとする）ようにしてもよい。この例によると、例えば弓を引く動作をしているときに、左右の手の間の距離が大きくなるほど（より強く弓を引く動作をするほど）、操作デバイス１０を装着したユーザの手の指に、外側へ押出されるような（引く力に反するような）力を感じさせるよう、触力覚を提示させることができる。
【０１０１】
このような第３の制御モードを設けることで、主装置２０側のゲームプログラム等の開発者が細かい制御を指示することなく、操作デバイス１０側にて予め記憶している設定情報のいずれかを指定するだけで、所望の力覚堤示を行わせることが可能となる。
【０１０２】
［変形例］
もっとも、この第３の制御モードでは、主装置２０は、操作デバイス１０が予め記憶している設定情報のいずれかを選択する指示を送信するのではなく、主装置２０側のゲームプログラム等の開発者が細かい制御を指示するようにしても構わない。具体的に主装置２０は、第３の制御モードの指示とともに、設定情報の内容を表す情報（アクチュエータの位置範囲と制御情報との組を少なくとも一組含む情報）を送出し、操作デバイス１０が当該情報を設定情報として、第３の制御モードとしての動作を行っても構わない。
【０１０３】
この例では、操作デバイス１０はさらに、主装置２０から受信した設定情報の内容を表す情報を、記憶部１２に蓄積して記憶し、後に指定を受けることを可能としてもよい。この場合、主装置２０は、当該設定情報を特定する情報（識別情報）を併せて操作デバイス１０に送出し、操作デバイス１０は当該識別情報に関連付けて設定情報の内容を表す情報を記憶する。これにより、後に主装置２０から当該識別情報を用いて、当該設定情報の指定を受けることが可能となる。
【０１０４】
なお、本実施の形態の操作デバイス１０は、ロッキングボタン２２４等、可動部の移動動作に対して触力覚を堤示するだけでなく、可動部を移動していないときにも触力覚を堤示するようにしてもよい。
【０１０５】
また、ここまでの例では、ボタンカバー２２４ｂとアーム３２３とは連動しないものとして説明していたが、これらボタンカバー２２４ｂとアーム３２３とは互いに連結されて連動するように構成されていてもよい。
【０１０６】
この例でも、アーム３２３はモータ３２１の回転軸に取付けられ、モータ３２１の回転角度θrに応じて、ボタンカバー２２４ｂの移動可能範囲を規制する。そしてモータ３２１は、制御部１１から入力されるトルク制御値τに応じた大きさの電流をモータ３２１に供給する制御回路３２２から電流供給を受けて回転動作する。
【０１０７】
本実施の形態のこの例では、モータ３２１の回転角度θ（減速ギアが取り付けられているときには、減速ギアの出力側の角度、以下同じ）がθ0のとき、アーム３２３に連結されたボタンカバー２２４ｂが第１の位置に移動し、モータ３２１の回転角度θがθ1（θ0≠θ1）のとき、ボタンカバー２２４ｂが第２の位置に移動するものとする。
【０１０８】
そしてこの例では、制御回路３２２は、制御部１１からトルク制御値τが入力されている間は、当該トルク制御値τに応じた大きさの電流をモータ３２１に供給する。また、制御部１１からトルク制御値τが入力されていない間は、モータ３２１の回転角度θrが、θ0に等しいか否かを判断し、等しくなければ回転角度θ0に向けてモータ３２１を回転制御するべく、モータ３２１に対して予め定めた大きさの電流を供給する。ここで供給する電流量は、ボタンカバー２２４ｂとアーム３２３とが互いに連結されていない例において、ボタンカバー２２４ｂが押圧されていないときに、ボタンカバー２２４ｂを第１の位置に移動させる付勢力に相当する力でボタンカバー２２４ｂを移動させる程度の力が提示される程度の電流量として実験的に定めればよい。
【０１０９】
［左右のデバイスの制御］
また本実施の形態において、ユーザの左手と右手の双方に操作デバイス１０を装着する場合、主装置２０は、それぞれの操作デバイス１０に対してロッキングボタン２２４を介して触力覚を提示するための制御に係る指示を送出する。
【０１１０】
主装置２０は、所定の方法によって左手に装着した操作デバイス１０により提示する触力覚と右手に装着した操作デバイス１０により提示する触力覚とのどちらが主たる触力覚であるかを判断する。この判断は例えばゲーム等のアプリケーションプログラムに従った指示に基づいて行われてもよいし、左右の操作デバイス１０のうち、最後に触力覚の提示が指示された側が提示する触力覚が主たる触力覚であると判断してもよい。さらに、提示する触力覚の大きさ（例えば振幅の大きさ等）が大きい側が提示する触力覚が主たる触力覚であると判断してもよい。
【０１１１】
主装置２０は、左右の操作デバイス１０のうち、主たる触力覚を提示する側でない側については、制御を弱める。例えば、右側の操作デバイス１０が主たる触力覚を提示していると判断すると、主装置２０は、左側の操作デバイス１０に対して出力している触力覚の制御値（例えばトルク制御値）を小さくして電力消費を低減させる。
【符号の説明】
【０１１２】
１０  操作デバイス、１１  制御部、１２  記憶部、１３  インタフェース部、１４  通信部、１５  電源部、２０  主装置、２１  把持部、２２  操作部、３０  ボタンカバー支持部、３１  位置センサ、３２  規制部、５１  受入部、５２  触力覚制御部、５３  出力部、１００  回路部、２１０  デバイス本体、２２１  センサ部、２２２  ボタン操作部、２２３  指センサ、２２４  ロッキングボタン、２２４ｂ  ボタンカバー、３２１  モータ、３２２  制御回路、３２３  アーム、３２３ａ  アーム部材、３２３ｃ  アーム部本体。
【図１】
2020166886.tif 000003
【図２】
2020166886.tif 000004
【図３】
2020166886.tif 000005
【図４】
2020166886.tif 000006
【図５】
2020166886.tif 000007
【図６】
2020166886.tif 000008
【図７】
2020166886.tif 000009
【図８】
2020166886.tif 000010
【図９】
2020166886.tif 000011
【手続補正書】
【提出日】令和2年6月17日(2020.6.17)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
アクチュエータにより第１の位置と第２の位置との間で移動可能な可動部を有し、ユーザに把持されて前記可動部がユーザにより操作される操作デバイスであって、
前記可動部の位置を検出する手段と、
所定のタイミングごとに前記アクチュエータの移動方向を切り替えて、前記可動部に連射の振動を堤示する制御手段と、を有することを特徴とする操作デバイス。
【請求項２】
請求項１記載の操作デバイスであって、
前記制御手段は、前記アクチュエータのターゲット位置を指定して、前記可動部を移動制御するときに、前記連射の振動を提示する際には、アクチュエータのターゲット位置を、前記可動部の前記第１の位置に対応するターゲット位置から、前記第２の位置に対応するターゲット位置に所定の量だけ移動した第１のターゲット位置と、前記可動部の前記第２の位置に対応するターゲット位置から、前記第１の位置に対応するターゲット位置に所定の量だけ移動した第２のターゲット位置とを所定のタイミングごとに切り替えて設定し、当該所定のタイミングごとに前記アクチュエータの移動方向を切り替えて、前記可動部に連射の振動を堤示する操作デバイス。
【請求項３】
請求項１または２記載の操作デバイスであって、
前記制御手段は、前記可動部の位置が所定の開始条件値を上回るときに、連射モードに移行する制御手段であって、
連射モードの設定前に、前記可動部の位置が、前記開始条件値を上回っていたときには、前記可動部の位置が、当該開始条件値を一度下回り、その後再度、当該開始条件値を上回るまで、連射モードに移行しないよう制御する制御手段である操作デバイス。
【請求項４】
請求項１から３のいずれか一項に記載の操作デバイスであって、
前記制御手段は、連射モードでの動作中に、前記可動部の位置が、所定の停止条件値を下回っている時間が予め定めたしきい値を超えたときに、連射モードを終了する制御する制御手段である操作デバイス。
【請求項５】
請求項１または２記載の操作デバイスであって、
前記制御手段は、前記可動部の位置の情報に対して所定のフィルタリングを行い、当該フィルタリングの結果に基づいて、前記連射の振動を堤示の開始または終了の制御を行う操作デバイス。
【請求項６】
請求項５に記載の操作デバイスであって、前記フィルタリングはローパスフィルタである操作デバイス。
【請求項７】
請求項５または６に記載の操作デバイスであって、前記フィルタリングは前記可動部の位置の情報の移動平均を用いたフィルタリングである操作デバイス。
【請求項８】
アクチュエータにより第１の位置と第２の位置との間で移動可能な可動部を有し、ユーザに把持されて前記可動部がユーザにより操作される操作デバイスの制御方法であって、
センサが、前記可動部の位置を検出し、
制御手段が、所定のタイミングごとに前記アクチュエータの移動方向を切り替えて、前記可動部に連射の振動を堤示する、
操作デバイスの制御方法。