(57)【要約】【課題】現実世界に近い感覚で仮想空間内のオブジェクトを動かすことが可能なコントローラの提供。【解決手段】コントローラ２０は、右把持部２１と左把持部２２と連結部２３とリニアセンサとＣＰＵとを備える。右把持部２１はプレイヤの右手で把持され、左把持部２２はプレイヤの左手で把持される。連結部２３は、右把持部２１と左把持部２２とを、両者の相対位置を変更可能に連結する。リニアセンサは、右把持部２１と左把持部２２との相対位置の変更量を検出する。ＣＰＵは、装置本体が形成する仮想空間の操作対象オブジェクトの動きをリニアセンサが検出する変更量に応じて指示する操作信号を生成して、装置本体へ送信させる。【選択図】図３
2008102789.tif 000002
【特許請求の範囲】
【請求項１】
所定のオブジェクトを含む仮想空間を形成する情報処理装置との間で通信を行うコントローラであって、
ユーザの一方の手で把持される第１の把持部と、
前記ユーザの他方の手で把持される第２の把持部と、
前記第１の把持部と前記第２の把持部とを、両者の相対位置を変更可能に連結する連結手段と、
前記第１の把持部と前記第２の把持部との相対位置の変更量を検出する検出手段と、
前記検出手段が検出する変更量に基づく信号を生成する信号生成手段と、
前記信号生成手段が生成した信号を前記情報処理装置へ送信する送信手段と、を備え、
前記連結手段は、前記第１の把持部と前記第２の把持部とを主軸に沿って移動可能に連結し、
前記検出手段は、前記第１の把持部と前記第２の把持部との間の前記主軸に沿った距離の変更量を検出し、
前記信号生成手段は、前記検出手段が前記距離の変更量を検出したとき、前記所定のオブジェクトの動きを前記検出された距離の変更量に応じて指示する第１の操作信号を生成する
ことを特徴とするコントローラ。
【請求項２】
請求項１に記載のコントローラであって、
前記第１の操作信号が指示する前記所定のオブジェクトの動きは、前記仮想空間における水平方向の移動である
ことを特徴とするコントローラ。
【請求項３】
請求項１又は請求項２に記載のコントローラであって、
前記連結手段は、前記第１の把持部と前記第２の把持部とを、前記主軸とは異なる方向に設定された回転軸を中心として回転可能に連結し、
前記検出手段は、前記第１の把持部と前記第２の把持部との間の前記回転軸を中心とした角度の変更量を検出し、
前記信号生成手段は、前記検出手段が前記回転軸を中心とした角度の変更量を検出したとき、前記所定のオブジェクトの動きを前記検出された角度の変更量に応じて指示する第２の操作信号を生成する
ことを特徴とするコントローラ。
【請求項４】
請求項３に記載のコントローラであって、
前記第２の操作信号が指示する前記所定のオブジェクトの動きは、前記仮想空間における鉛直方向の移動、奥行き方向の移動、鉛直方向の軸を中心とした回転、及び奥行き方向の軸を中心とした回転のうち何れか一つである
ことを特徴とするコントローラ。
【請求項５】
請求項１〜請求項４の何れかに記載のコントローラであって、
前記連結手段は、前記第１の把持部と前記第２の把持部とを前記主軸を中心として回転可能に連結し、
前記検出手段は、前記第１の把持部と前記第２の把持部との間の前記主軸を中心とした角度の変更量を検出し、
前記信号生成手段は、前記検出手段が前記主軸を中心とした角度の変更量を検出したとき、前記所定のオブジェクトの動きを前記検出された角度の変更量に応じて指示する第３の操作信号を生成する
ことを特徴とするコントローラ。
【請求項６】
請求項５に記載のコントローラであって、
前記第３の操作信号が指示する前記所定のオブジェクトの動きは、前記仮想空間における水平方向の軸を中心とした回転である
ことを特徴とするコントローラ。
【請求項７】
情報処理装置との間で通信を行うコントローラであって、
ユーザの一方の手で把持される第１の把持部と、
前記ユーザの他方の手で把持される第２の把持部と、
前記第１の把持部と前記第２の把持部とを、両者の相対位置を変更可能に連結する連結手段と、
前記第１の把持部と前記第２の把持部との相対位置の変更量を検出する検出手段と、
前記検出手段が検出する変更量に基づく信号を生成する信号生成手段と、
前記信号生成手段が生成した信号を前記情報処理装置へ送信する送信手段と、
傾斜角検出手段と、を備え、
前記連結手段は、前記第１の把持部と前記第２の把持部とを、主軸に沿って移動可能に連結するとともに、前記主軸とは異なる方向に設定された回転軸を中心として回転可能に連結し、
前記検出手段は、前記第１の把持部と前記第２の把持部との間の前記主軸に沿った距離の変更量及び前記回転軸を中心とした角度の変更量を検出し、
前記回転軸は、前記第１の把持部と前記第２の把持部とが前記ユーザに把持された基本操作状態で上下方向に延び、
前記傾斜角度検知手段は、鉛直方向に対する前記回転軸の傾き角度を検知し、
前記信号生成手段は、前記検出手段が検出する前記回転軸を中心とした角度の変更量を前記傾斜角度検知手段が検知する前記傾き角度を用いて補正し、この補正された変更量に対応した信号を生成する
ことを特徴とするコントローラ。
【請求項８】
請求項７に記載のコントローラであって、
前記傾斜角度検知手段は、前記主軸を中心とした前記回転軸の傾き角度を検知する
ことを特徴とするコントローラ。
【請求項９】
請求項７又は請求項８に記載のコントローラであって、
前記連結手段は、前記第１の把持部と前記第２の把持部とを、前記主軸及び前記回転軸とは異なる方向に設定された他の回転軸を中心として回転可能に連結し、
前記検出手段は、前記第１の把持部と前記第２の把持部との間の前記他の回転軸を中心とした角度の変更量を検出し、
前記信号生成手段は、前記検出手段が検出する前記他の回転軸の角度の変更量を前記傾斜角度検知手段が検知する前記傾き角度を用いて補正し、この補正された変更量に対応した信号を生成する
ことを特徴とするコントローラ。
【請求項１０】
情報処理装置との間で通信を行うコントローラであって、
ユーザの一方の手で把持される第１の把持部と、
前記ユーザの他方の手で把持される第２の把持部と、
前記第１の把持部と前記第２の把持部とを、両者の相対位置を変更可能に連結する連結手段と、
前記第１の把持部と前記第２の把持部との相対位置の変更量を検出する検出手段と、
前記検出手段が検出する変更量に基づく信号を生成する信号生成手段と、
前記信号生成手段が生成した信号を前記情報処理装置へ送信する送信手段と、を備え、
前記連結手段は、主連結機構と、前記第１の把持部と前記主連結機構とを連結する第１の連結機構と、前記第２の把持部と前記主連結機構とを連結する第２の連結機構と、を有し、
前記主連結機構は、前記第１の連結機構と前記第２の連結機構とを、主軸に沿って移動可能に連結し、
前記第１の連結機構は、前記第１の把持部と前記主連結機構とを、前記主軸とは異なる方向に設定された回転軸を中心として回転可能に連結し、
前記第２の連結機構は、前記第２の把持部と前記主連結機構とを、前記主軸とは異なる方向に設定された他の回転軸を中心として回転可能に連結し、
前記回転軸と前記他の回転軸とは略平行に設定され、
前記検出手段は、前記第１の把持部と前記主連結機構との間の前記回転軸を中心とした角度の変更量と、前記第２の把持部と前記主連結機構との間の前記他の回転軸を中心とした角度の変更量とを検出し、
前記信号生成手段は、前記検出手段が検出する前記回転軸を中心とした角度の変更量を前記他の回転軸を中心とした角度の変更量を用いて補正し、この補正された変更量に対応した信号を生成する
ことを特徴とするコントローラ。
【請求項１１】
請求項１０に記載のコントローラであって、
前記信号生成手段は、前記検出手段が検出する前記回転軸を中心とした角度の変更量が所定値以上のときに前記補正を行う
ことを特徴とするコントローラ。
【請求項１２】
所定のオブジェクトを含む仮想空間を形成する情報処理装置との間で通信を行うコントローラであって、
ユーザの一方の手で把持される第１の把持部と、
前記ユーザの他方の手で把持される第２の把持部と、
前記第１の把持部と前記第２の把持部とを、両者の相対位置を変更可能に連結する連結手段と、
前記第１の把持部と前記第２の把持部との相対位置の変更量を検出する検出手段と、
前記検出手段が検出する変更量に基づく信号を生成する信号生成手段と、
前記信号生成手段が生成した信号を前記情報処理装置へ送信する送信手段と、を備え、
前記連結手段は、主連結機構と、前記第１の把持部と前記主連結機構とを連結する第１の連結機構と、前記第２の把持部と前記主連結機構とを連結する第２の連結機構と、を有し、
前記主連結機構は、前記第１の連結機構と前記第２の連結機構とを、主軸に沿って移動可能に連結するとともに、前記主軸を中心として回転可能に連結し、
前記主軸は、前記第１の把持部と第２の把持部とが前記ユーザに把持された基本操作状態で前記ユーザに対して左右方向に延び、
前記第１の連結機構は、前記第１の把持部と前記主連結機構とを、前記主軸とは異なる方向に設定された第１の回転軸を中心として回転可能に連結するとともに、前記主軸及び前記第１の回転軸とは異なる方向に設定された第２の回転軸を中心として回転可能に連結し、
前記第２の連結機構は、前記第２の把持部と前記主連結機構とを、前記主軸とは異なる方向に設定された第３の回転軸を中心として回転可能に連結するとともに、前記主軸及び前記第３の回転軸とは異なる方向に設定された第４の回転軸を中心として回転可能に連結し、
前記第１の回転軸と前記第３の回転軸とは、前記基本操作状態で上下方向に延び、
前記第２の回転軸と前記第４の回転軸とは、前記基本操作状態で前記ユーザに対して前後方向に延び、
前記検出手段は、
前記第１の把持部と前記第２の把持部との間の前記主軸に沿った距離の変更量を検出する距離変更量検出手段と、
前記第１の把持部と前記主連結機構との間の前記第１の回転軸を中心とした角度の変更量を検出する第１の角度変更量検出手段と、
前記第１の把持部と前記主連結機構との間の前記第２の回転軸を中心とした角度の変更量を検出する第２の角度変更量検出手段と、
前記第２の把持部と前記主連結機構との間の前記第３の回転軸を中心とした角度の変更量を検出する第３の角度変更量検出手段と、
前記第２の把持部と前記主連結機構との間の前記第４の回転軸を中心とした角度の変更量を検出する第４の角度変更量検出手段と、
前記第１の把持部と前記第２の把持部との間の前記主軸を中心とした角度の変更量を検出する第５の角度変更量検出手段と、を有し、
前記信号生成手段は、
前記距離変更量検出手段が前記距離の変更量を検出したとき、前記仮想空間における前記所定のオブジェクトの水平方向の移動を前記検出された距離の変更量に応じて指示する操作信号を生成し、
前記第１の角度変更量検出手段が前記角度の変更量を検出したとき、前記仮想空間における鉛直方向の軸を中心とした前記所定のオブジェクトの回転を前記検出された角度の変更量に応じて指示する操作信号を生成し、
前記第２の角度変更量検出手段が前記角度の変更量を検出したとき、前記仮想空間における奥行き方向の軸を中心とした前記所定のオブジェクトの回転を前記検出された角度の変更量に応じて指示する操作信号を生成し、
前記第３の角度変更量検出手段が角度の変更量を検出したとき、前記仮想空間における前記所定のオブジェクトの奥行き方向の移動を前記検出された角度の変更量に応じて指示する操作信号を生成し、
前記第４の角度変更量検出手段が角度の変更量を検出したとき、前記仮想空間における前記所定のオブジェクトの鉛直方向の移動を前記検出された角度の変更量に応じて指示する操作信号を生成し、
前記第５の角度変更量検出手段が前記角度の変更量を検出したとき、前記仮想空間における水平方向の軸を中心とした前記所定のオブジェクトの回転を前記検出された角度の変更量に応じて指示する操作信号を生成する
ことを特徴とするコントローラ。
【請求項１３】
請求項１〜請求項１２の何れかに記載のコントローラであって、
前記第２の把持部の位置を保持して前記第１の把持部を動かす操作態様に適した第１のモードと、前記第１の把持部の位置を保持して前記第２の把持部を動かす操作態様に適した第２のモードとを含む複数のモードの中から、ユーザからの入力に応じた一つのモードを選択して設定するモード設定手段を備え、
前記信号生成手段は、前記複数のモードのそれぞれに対応して予め設定された複数の処理のうち前記モード設定手段が設定したモードに対応する処理に従って前記信号を生成する
ことを特徴とするコントローラ。
【請求項１４】
ユーザの一方の手で把持される第１の把持部と、
前記ユーザの他方の手で把持される第２の把持部と、
前記第１の把持部と前記第２の把持部とを、両者の相対位置を変更可能に連結する連結手段と、
前記第１の把持部と前記第２の把持部との相対位置の変更量を検出する検出手段と、
前記検出手段が検出する変更量に基づく信号を生成する信号生成手段と、
前記信号生成手段が生成した信号を送信する送信手段と、を有するコントローラと、
前記送信手段から信号を受信する受信手段と、
所定のオブジェクトを含む仮想空間を形成する画像処理手段と、を有する情報処理装置と、
を備えた画像処理システムであって、
前記連結手段は、前記第１の把持部と前記第２の把持部とを主軸に沿って移動可能に連結し、
前記検出手段は、前記第１の把持部と前記第２の把持部との間の前記主軸に沿った距離の変更量を検出し、
前記信号生成手段は、前記検出手段が検出した前記距離の変更量に応じて第１の操作信号を生成し、
前記画像処理手段は、前記受信手段が前記送信手段から前記第１の操作信号を受信したとき、この受信した第１の操作信号に基づいて前記所定のオブジェクトを前記仮想空間で水平方向へ移動させる画像を生成する
ことを特徴とする画像処理システム。
【請求項１５】
請求項１４に記載の画像処理システムであって、
前記連結手段は、前記第１の把持部と前記第２の把持部とを、前記主軸とは異なる方向に設定された回転軸を中心として回転可能に連結し、
前記検出手段は、前記第１の把持部と前記第２の把持部との間の前記回転軸を中心とした角度の変更量を検出し、
前記信号生成手段は、前記検出手段が検出した前記回転軸を中心とした角度の変更量に応じて第２の操作信号を生成し、
前記画像処理手段は、前記受信手段が前記送信手段から前記第２の操作信号を受信したとき、この受信した第２の操作信号に基づいて前記所定のオブジェクトを前記仮想空間で鉛直方向への移動させる画像、奥行き方向へ移動させる画像、鉛直方向の軸を中心として回転させる画像、及び奥行き方向の軸を中心として回転させる画像のうち何れか一つの画像を生成する
ことを特徴とする画像処理システム。
【請求項１６】
請求項１４又は請求項１５に記載の画像処理システムであって、
前記連結手段は、前記第１の把持部と前記第２の把持部とを前記主軸を中心として回転可能に連結し、
前記検出手段は、前記第１の把持部と前記第２の把持部との間の前記主軸を中心とした角度の変更量を検出し、
前記信号生成手段は、前記検出手段が検出した前記主軸を中心とした角度の変更量に応じて第３の操作信号を生成し、
前記画像処理手段は、前記受信手段が前記送信手段から前記第３の操作信号を受信したとき、この受信した第３の操作信号に基づいて前記所定のオブジェクトを前記仮想空間で水平方向の軸を中心として回転させる画像を生成する
ことを特徴とする画像処理システム。
【請求項１７】
ユーザの一方の手で把持される第１の把持部と、前記ユーザの他方の手で把持される第２の把持部と、前記第１の把持部と前記第２の把持部とを、両者の相対位置を変更可能に連結する連結手段と、前記第１の把持部と前記第２の把持部との相対位置の変更量を検出する検出手段と、前記検出手段が検出する変更量に基づく信号を生成する信号生成手段と、前記信号生成手段が生成した信号を送信する送信手段と、を有し、前記連結手段は、前記第１の把持部と前記第２の把持部とを主軸に沿って移動可能に連結し、前記検出手段は、前記第１の把持部と前記第２の把持部との間の前記主軸に沿った距離の変更量を検出し、前記信号生成手段は、前記検出手段が検出した前記距離の変更量に応じて第１の操作信号を生成するコントローラとの間で通信可能な情報処理装置であって、
前記送信手段から信号を受信する受信手段と、
所定のオブジェクトを含む仮想空間を形成する画像処理手段と、を備え、
前記画像処理手段は、前記受信手段が前記送信手段から前記第１の操作信号を受信したとき、この受信した第１の操作信号に基づいて前記所定のオブジェクトを前記仮想空間で水平方向へ移動させる画像を生成する
ことを特徴とする情報処理装置。
【請求項１８】
ユーザの一方の手で把持される第１の把持部と、前記ユーザの他方の手で把持される第２の把持部と、前記第１の把持部と前記第２の把持部とを、両者の相対位置を変更可能に連結する連結手段と、前記第１の把持部と前記第２の把持部との相対位置の変更量を検出する検出手段と、前記検出手段が検出する変更量に基づく信号を生成する信号生成手段と、前記信号生成手段が生成した信号を送信する送信手段と、を有し、前記連結手段は、前記第１の把持部と前記第２の把持部とを主軸に沿って移動可能に連結し、前記検出手段は、前記第１の把持部と前記第２の把持部との間の前記主軸に沿った距離の変更量を検出し、前記信号生成手段は、前記検出手段が検出した前記距離の変更量に応じて第１の操作信号を生成するコントローラとの間で通信可能な情報処理装置のコンピュータに実行させる情報処理プログラムであって、
画像処理手段が所定のオブジェクトを含む仮想空間を形成するステップと、
受信手段が前記送信手段から信号を受信するステップと、
前記受信手段が前記第１の操作信号を受信したとき、この受信した第１の操作信号に基づいて前記所定のオブジェクトを前記仮想空間で水平方向へ移動させる画像を前記画像処理手段が生成するステップと、
を含む複数のステップを前記コンピュータに実行させる情報処理プログラム。
【請求項１９】
前記コントローラの前記連結手段は、前記第１の把持部と前記第２の把持部とを、前記主軸とは異なる方向に設定された回転軸を中心として回転可能に連結し、前記検出手段は、前記第１の把持部と前記第２の把持部との間の前記回転軸を中心とした角度の変更量を検出し、前記信号生成手段は、前記検出手段が検出した前記回転軸を中心とした角度の変更量に応じて第２の操作信号を生成する請求項１８に記載の情報処理プログラムであって、
前記複数のステップは、
前記受信手段が前記第２の操作信号を受信したとき、この受信した第２の操作信号に基づいて前記所定のオブジェクトを前記仮想空間で鉛直方向への移動させる画像、奥行き方向へ移動させる画像、鉛直方向の軸を中心として回転させる画像、及び奥行き方向の軸を中心として回転させる画像のうち何れか一つの画像を前記画像処理手段が生成するステップを含む
ことを特徴とする情報処理プログラム。
【請求項２０】
前記コントローラの前記連結手段は、前記第１の把持部と前記第２の把持部とを前記主軸を中心として回転可能に連結し、前記検出手段は、前記第１の把持部と前記第２の把持部との間の前記主軸を中心とした角度の変更量を検出し、前記信号生成手段は、前記検出手段が検出した前記主軸を中心とした角度の変更量に応じて第３の操作信号を生成する請求項１８又は請求項１９に記載の情報処理プログラムであって、
前記複数のステップは、
前記受信手段が前記第３の操作信号を受信したとき、この受信した第３の操作信号に基づいて前記所定のオブジェクトを前記仮想空間で水平方向の軸を中心として回転させる画像を前記画像処理手段が生成するステップを含む
ことを特徴とする情報処理プログラム。
【請求項２１】
ユーザの一方の手で把持される第１の把持部と、前記ユーザの他方の手で把持される第２の把持部と、前記第１の把持部と前記第２の把持部とを、両者の相対位置を変更可能に連結する連結手段と、前記第１の把持部と前記第２の把持部との相対位置の変更量を検出する検出手段と、前記検出手段が検出する変更量に基づく信号を生成する信号生成手段と、前記信号生成手段が生成した信号を送信する送信手段と、傾斜角検出手段と、を有し、前記連結手段は、前記第１の把持部と前記第２の把持部とを、主軸に沿って移動可能に連結するとともに、前記主軸とは異なる方向に設定された回転軸を中心として回転可能に連結し、前記検出手段は、前記第１の把持部と前記第２の把持部との間の前記主軸に沿った距離の変更量及び前記回転軸を中心とした角度の変更量を検出し、前記回転軸は、前記第１の把持部と第２の把持部とが前記ユーザに把持された基本操作状態で上下方向に延び、前記傾斜角度検知手段は、鉛直方向に対する前記回転軸の傾き角度を検知し、前記送信手段は、前記傾斜角度検出手段が検知した前記傾き角度に基づく信号を送信するコントローラとの間で通信可能な情報処理装置のコンピュータに実行させる情報処理プログラムであって、
受信手段が前記送信手段から信号を受信するステップと、
前記受信手段が前記角度の変更量に基づく信号と前記傾き角度に基づく信号とを受信したとき、情報処理手段が前記傾き角度を用いて前記角度の変更量を補正するステップと、
前記補正した変更量を用いて、前記情報処理手段が所定の処理を実行するステップと、
を含む複数のステップを前記コンピュータに実行させる情報処理プログラム。
【請求項２２】
ユーザの一方の手で把持される第１の把持部と、前記ユーザの他方の手で把持される第２の把持部と、前記第１の把持部と前記第２の把持部とを、両者の相対位置を変更可能に連結する連結手段と、前記第１の把持部と前記第２の把持部との相対位置の変更量を検出する検出手段と、前記検出手段が検出する変更量に基づく信号を生成する信号生成手段と、前記信号生成手段が生成した信号を送信する送信手段と、を有し、前記連結手段は、主連結機構と、前記第１の把持部と前記主連結機構とを連結する第１の連結機構と、前記第２の把持部と前記主連結機構とを連結する第２の連結機構と、を有し、前記主連結機構は、前記第１の連結機構と前記第２の連結機構とを、主軸に沿って移動可能に連結し、前記第１の連結機構は、前記第１の把持部と前記主連結機構とを、前記主軸とは異なる方向に設定された回転軸を中心として回転可能に連結し、前記第２の連結機構は、前記第２の把持部と前記主連結機構とを、前記主軸とは異なる方向に設定された他の回転軸を中心として回転可能に連結し、前記回転軸と前記他の回転軸とは略平行に設定され、前記検出手段は、前記第１の把持部と前記主連結機構との間の前記回転軸を中心とした第１の角度変更量と、前記第２の把持部と前記主連結機構との間の前記他の回転軸を中心とした第２の角度変更量とを検出するコントローラとの間で通信可能な情報処理装置のコンピュータに実行させる情報処理プログラムであって、
受信手段が前記送信手段から信号を受信するステップと、
前記受信手段が前記第１の角度変更量に基づく信号と前記第２の角度変更量に基づく信号とを受信したとき、情報処理手段が前記第２の角度変更量を用いて前記第１の角度変更量を補正するステップと、
前記補正した変更量を用いて、前記情報処理手段が所定の処理を実行するステップと、
を含む複数のステップを前記コンピュータに実行させる情報処理プログラム。
【請求項２３】
請求項１８〜請求項２２の何れかに記載の情報処理プログラムが記憶されたコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばビデオゲーム機などの情報処理装置、この情報処理装置との間で通信を行うコントローラ、画像処理システム、情報処理プログラム、及び記憶媒体に関する。
【背景技術】
【０００２】
ビデオゲーム機との間で通信を行うコントローラとして、複数の操作ボタンを備えたコントローラが知られている。このコントローラを使用するプレイヤは、操作ボタンを押下することにより、ビデオゲーム機が表示画面に映し出す画像内のオブジェクトを操作することができる。
【０００３】
また、特開平８−１７９８８４号公報には、左右の手中にそれぞれ把持可能な２つの把持部が屈曲可能に接続され、両把持部の屈曲の量及び方向を検出し、検出した屈曲の量及び方向によって、操作量及び操作方向が決定されるリモートコントローラが開示されている。このコントローラを使用するプレイヤは、２つの把持部を屈曲させることにより、画像内のオブジェクトを、上記操作ボタンを使用する場合とは異なる感覚で操作することができる。
【０００４】
【特許文献１】特開平８−１７９８８４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ここで、画像として表示される仮想空間内において、例えば手を表すオブジェクトを動かす場合、プレイヤが自分の手を動かすような感覚でコントローラを操作してオブジェクトを動かすことができれば、現実世界に近い感覚でコントローラを操作することが可能となる。
【０００６】
しかし、上記従来のコントローラでは、操作ボタンの押下や２つの把持部の屈曲によってオブジェクトの移動を操作するため、現実世界に近い感覚でコントローラを操作することが難しかった。
【０００７】
本発明は上述の課題に鑑みてなされたものであり、現実世界に近い感覚で仮想空間内のオブジェクトを動かすことが可能なコントローラの提供を目的とする。
【課題を解決するための手段】
【０００８】
本発明は、情報処理装置との間で通信を行うコントローラであって、第１の把持部と第２の把持部と連結手段と検出手段と信号生成手段と送信手段とを備える。
【０００９】
本発明の一態様において、情報処理装置は、所定のオブジェクトを含む仮想空間を形成する。第１の把持部は、ユーザの一方の手で把持される。第２の把持部は、ユーザの他方の手で把持される。連結手段は、第１の把持部と第２の把持部とを、両者の相対位置を変更可能に連結する。検出手段は、第１の把持部と第２の把持部との相対位置の変更量を検出する。信号生成手段は、検出手段が検出する変更量に基づく信号を生成する。送信手段は、信号生成手段が生成した信号を情報処理装置へ送信する。
【００１０】
連結手段は、第１の把持部と第２の把持部とを主軸に沿って移動可能に連結する。検出手段は、第１の把持部と第２の把持部との間の主軸に沿った距離の変更量を検出する。信号生成手段は、検出手段が距離の変更量を検出したとき、第１の操作信号を生成する。第１の操作信号は、所定のオブジェクトの動きを、検出された距離の変更量に応じて指示する。
【発明の効果】
【００１１】
本発明によれば、仮想空間のオブジェクトを動かす際に、現実世界の物を動かす手の動きに近い感覚でコントローラを操作することができる。
【発明を実施するための最良の形態】
【００１２】
〔本実施形態のエンタテインメントシステムの概略構成〕
本発明の一実施形態としてのエンタテインメントシステムを図１に模式的に示す。
【００１３】
このエンタテインメントシステムは、情報処理装置（ビデオゲーム機）の一例であるエンタテインメント装置（以下、装置本体と称する）１０と、プレイヤ（ユーザ）によって操作される操作端末であるコントローラ２０と、装置本体１０から映像及び音声信号が供給されるモニタ装置（例えばテレビジョン受像機など）１００とを備える。モニタ装置１００は、装置本体１０から供給された映像信号に基づいて画像を表示する画像表示部（表示画面）１０１を有する。
【００１４】
装置本体１０とコントローラ２０との間では、通信により情報が送受信される。両者間の通信方法は、ケーブル１３を介した有線接続による通信と無線による通信の何れでもよい。本実施形態のコントローラ２０では、有線と無線の双方による通信が可能であり、装置本体１０にコントローラ２０が有線接続された状態では有線による通信が行われ、有線接続が解除された状態では、無線よる通信が行われる。
【００１５】
図１の例において、装置本体１０は、複数のコントローラポート１１（本実施形態では、１１Ａ，１１Ｂ，１１Ｃ，１１Ｄの４箇所）を有する。コントローラ２０と装置本体１０とをケーブル１３によって有線接続する場合、ケーブル１３の一端部に設けられた差込コネクタ１２が装置本体１０のコントローラポート１１のうち任意の一つ（この例では１１Ａ）に差し込まれて電気的に接続され、他端部に設けられた差込コネクタ１４がコントローラ２０の接続ポート１５に差し込まれて電気的に接続される。なお、他のコントローラポート１１（この例では１１Ｂ，１１Ｃ，１１Ｄ）を使用することにより、装置本体１０は複数のコントローラ２０との間で有線による同時接続が可能となる。装置本体１０とコントローラ２０との有線接続方式は、双方向にて通信可能であればよく、本実施形態では、ＵＳＢ（Universal Serial Bus）形式による接続（以下、ＵＳＢ接続と称する）を採用している。
【００１６】
また、コントローラ２０には、装置本体１０の無線通信部（アンテナ）１６との間で無線による情報の送受信を行う無線通信部（アンテナ）１７がそれぞれ設けられている。両無線通信部１６，１７同士の通信方式としては、双方向にて無線通信可能であれば、ブルーツゥース（Bluetooth（登録商標））通信のような汎用の近距離高速無線通信方式や専用の近距離無線通信方式などのあらゆる通信方式の適用が可能である。本実施形態では、ブルーツゥース無線通信方式（以下、ＢＴ通信と称する）を採用している。
【００１７】
装置本体１０からの映像信号に基づいて３次元の仮想空間とその仮想空間内の所定のオブジェクトとを含む画像が画像表示部１０１に表示された状態で、ゲームのプレイヤが画像表示部１０１の画像を視ながらオブジェクトを動かすためにコントローラ２０に対して所定の操作を行うと、コントローラ２０から装置本体１０に信号が送信される。装置本体１０がコントローラ２０から所定の信号を受信すると、装置本体１０はコントローラ２０からの信号に応じた映像信号を生成してモニタ装置１００へ出力し、画像表示部１０１にはプレイヤの操作に応じて仮想空間内を動く所定のオブジェクト（以下、操作対象オブジェクト１２０と称する）が表示される。
【００１８】
本実施形態において装置本体１０が形成する仮想空間は、互いに直交するＸ軸（水平方向）とＹ軸（鉛直方向）とＺ軸（奥行き方向）とによって規定される３次元空間である。また、仮想空間内の操作対象オブジェクト１２０は、コントローラ２０からの信号に応じて、Ｘ軸方向、Ｙ軸方向及びＺ軸方向のそれぞれに沿った移動（以下の説明では、それぞれ並進Ｘ、並進Ｙ及び並進Ｚと称する）と、Ｘ軸、Ｙ軸及びＺ軸にそれぞれ平行な軸を中心とした回転（以下の説明では、それぞれ回転Ｘ、回転Ｙ及び回転Ｚと称する）とを行う。
【００１９】
一つのコントローラ２０から装置本体１０に送信される信号は、上記並進Ｘ、並進Ｙ、並進Ｚ、回転Ｘ、回転Ｙ及び回転Ｚという少なくとも６種類の異なる情報（操作信号）を含み、装置本体１０側には、一つのコントローラ２０に対して少なくとも６つの受信ポート（ポート番号１〜６）が設定されている。本実施形態では、図１１に示すように、ポート番号１に並進Ｚの情報が、ポート番号２に並進Ｙの情報が、ポート番号３に回転Ｙの情報が、ポート番号４に回転Ｚの情報が、ポート番号５に並進Ｘの情報が、ポート番号６に回転Ｘの情報がそれぞれ割り当てられている。
【００２０】
〔装置本体の外観〕
上記装置本体１０には、上記コントローラポート１１（１１Ａ〜１１Ｄ）及び無線通信部１６の他、図示は省略するが、半導体記憶素子などを内蔵するメモリカードが着脱自在とされるメモリカードスロット、ディスクトレイ、ディスクトレイをオープン又はクローズさせるオープン／クローズボタン、電源のオンやスタンバイ，リセットを行うためのオン／スタンバイ／リセットボタン、音声映像出力端子（ＡＶマルチ出力端子）、ＰＣカードスロット、光ディジタル出力端子、ＩＥＥＥ（Institute of Electrical and Electronics Engineers）１３９４接続端子、電源スイッチ、ＡＣ電源入力端子などが設けられている。
【００２１】
また、装置本体１０は、例えばいわゆるＤＶＤ−ＲＯＭやＣＤ−ＲＯＭ等のディスク媒体に記録されているビデオゲーム用のアプリケーションプログラムに基づいてビデオゲームを実行したり、例えばＤＶＤビデオやＣＤに記録されたビデオデータ、オーディオデータを再生（デコード）可能なものである。
【００２２】
なお、上記アプリケーションプログラムやビデオ、オーディオデータは、ディスク媒体に限らず、半導体メモリやテープ媒体から読み取られたもの、有線若しくは無線の広域或いは域内通信回線等により供給されたものであってもよい。
【００２３】
〔装置本体の内部回路構成〕
図２には、上記装置本体１０の主要な内部構成を示す。
【００２４】
図２に示すように、装置本体１０は、メインバス６１とサブバス６２とを有し、これらのバス６１，６２は、バスインターフェース６３を介して互いに接続され又は切り離される。
【００２５】
メインバス６１には、メインＣＰＵ６４と、ＲＡＭで構成されるメインメモリ６５と、メインＤＭＡＣ（Direct Memory Access Controller）６６と、フレームメモリ６７を内蔵する画像処理デバイス（ＧＰＵ（Graphic Processing Unit））６８が接続される。ＧＰＵ６８には、ビデオ出力信号を生成するための制御手段であるＣＲＴＣ（CRT controller）６９が接続される。ビデオ出力信号により、ケーブル等によって装置本体１０と接続されている所定の表示装置（本実施形態では、モニタ装置１００の画像表示部１０１）に画像が表示される。
【００２６】
メインＣＰＵ６４は、装置本体１０の起動時にサブバス６２上のＲＯＭ７０から、バスインターフェース６３を介して起動プログラムを読み込み、その起動プログラムを実行してオペレーティングシステムを動作させる。また、メディアドライブ７１を制御するとともに、このメディアドライブ７１に装着されたメディア７２からアプリケーションプログラムやデータを読み出し、これをメインメモリ６５に記憶させる。さらに、メディア７２から読み出した各種データ、例えば複数の基本図形（ポリゴン）で構成された３次元オブジェクトデータ（ポリゴンの頂点（代表点）の座標値など）に対して、ジオメトリ処理を行う。ジオメトリ処理によりポリゴン定義情報をその内容とするディスプレイリストを生成する。また、ＭＰＥＧ（Moving Picture Experts Group）方式あるいはＪＰＥＧ（Joint Photographic Experts Group）方式等で圧縮されたデータを伸張する。つまりメインＣＰＵ６４は、ソフトウェアにより情報を解読する情報解読機能を持つ。
【００２７】
ポリゴン定義情報は、描画領域設定情報とポリゴン情報とからなる。描画領域設定情報は、描画領域のフレームバッファアドレスにおけるオフセット座標と、描画領域の外部にポリゴンの座標があった場合に、描画をキャンセルするための描画クリッピング領域の座標からなる。ポリゴン情報は、ポリゴン属性情報と頂点情報とからなり、ポリゴン属性情報は、シェーディングモード、αブレンディングモード、及びテクスチャマッピングモード等を指定する情報であり、頂点情報は、頂点描画領域内座標、頂点テクスチャ領域内座標、及び頂点色等の情報である。
【００２８】
ＧＰＵ６８は、描画コンテクストを保持しており、メインＣＰＵ６４から通知されるディスプレイリストに含まれる画像コンテクストの識別情報に基づいて該当する描画コンテクストを読み出し、これを用いてレンダリング処理を行い、フレームメモリ６７にポリゴンを描画する。フレームメモリ６７は、テクスチャメモリとしても使用できるため、フレームメモリ６７上のピクセルイメージをテクスチャとして描画するポリゴンに貼り付けることができる。
【００２９】
また、ＵＳＢ通信モジュール７８又はＢＴ通信モジュール７９がコントローラ２０から信号を受信すると、メインＣＰＵ６４は、その受信信号に基づいてディスプレイリストを生成してＧＰＵ６８へ出力する。
【００３０】
メインＤＭＡＣ６６は、メインバス６１に接続されている各回路を対象としてＤＭＡ転送制御を行うとともに、バスインターフェース６３の状態に応じて、サブバス６２に接続されている各回路を対象としてＤＭＡ転送制御を行う。
【００３１】
サブバス６２には、マイクロプロセッサなどで構成されるサブＣＰＵ７３、ＲＡＭで構成されるサブメモリ７４、サブＤＭＡＣ７５、オペレーティングシステムなどのプログラムが記憶されているＲＯＭ７０、サウンドメモリ７６に蓄積された音データを読み出してオーディオ出力として出力する音声処理装置（ＳＰＵ（Sound Processing Unit））７７、ＵＳＢ接続ケーブルを介してコントローラ２０との間で有線による情報の送受信を行うＵＳＢ通信モジュール７８、ＢＴ通信を介してコントローラ２０との間で無線による情報の送受信を行うＢＴ通信モジュール７９、所定のメディア７２を装着するためのメディアドライブ７１、及びキーボード８０が接続されている。メディア７２は、画像処理用のプログラムが記録されたＣＤ−ＲＯＭやＤＶＤ−ＲＯＭ等の記録媒体である。装置本体１０は、この画像処理用のプログラムを読み取って実行することにより、所要のエンタテインメント処理を実行する。ＵＳＢ通信モジュール７８は、コントローラポート１１（図１に示す）を含み、ＢＴ通信モジュール７９は、無線通信部１６（図１に示す）を含む。
【００３２】
サブＣＰＵ７３は、ＲＯＭ７０に記憶されているプログラムに従って各種動作を行う。サブＤＭＡＣ７５は、バスインターフェース６３がメインバス６１とサブバス６２を切り離している状態においてのみ、サブバス６２に接続されている各回路を対象としてＤＭＡ転送などの制御を行う。
【００３３】
〔コントローラの構造〕
図３〜図８を用いて、コントローラ２０の構造を説明する。図３はコントローラ２０の外観斜視図、図４はコントローラ２０を図３の矢印ＩＶ方向から視た正面図、図５はコントローラ２０を図３の矢印Ｖ方向から視た平面図、図６はコントローラ２０の右把持部２１を図３の矢印ＶＩ方向から視た背面図、図７はコントローラ２０の内部構造を模式的に示す斜視図、図８はコントローラ２０内のコイルバネ５２〜５５の配置を示す模式図である。
【００３４】
図３〜図６に示すように、コントローラ２０は、プレイヤの右手によって把持される右把持部２１と、プレイヤの左手によって把持される左把持部２２と、右把持部２１と左把持部２２とを連結する連結部２３と、中央ケース体２４とを備える。なお、装置本体１０との間でＵＳＢ接続するための上記接続ポート１５と、装置本体１０との間でＢＴ通信するための上記無線通信部１７とは、中央ケース体２４に設けられているが、図３〜図６ではその図示を省略している。
【００３５】
右把持部２１は、右手によって把持し易い長筒形状を有する中空の右ケース体２５と、右ケース体２５の内部に設けられ右ケース体２５に対して固定されるベース体２７（図７に示す）とを備える。同様に、左把持部２２も、左手によって把持し易い長筒形状を有する中空の左ケース体２６と、左ケース体２６の内部に設けられ左ケース体２６に対して固定されるベース体２８（図７に示す）とを備える。
【００３６】
なお、以下の説明において、左右方向、上下方向及び前後方向は、右把持部２１（右ケース体２５）と左把持部２２（左ケース体２６）とをほぼ鉛直方向に起立させた状態でコントローラ２０を両手で把持したプレイヤにとっての左右方向（図中ｘ軸と平行な方向）、上下方向（図中ｙ１軸及びｙ２軸と平行な方向）及び前後方向（図中ｚ１軸及びｚ２軸と平行な方向）をそれぞれ意味する。また、本実施形態では、ｘ軸が主軸に、ｙ１軸が第１の回転軸に、ｚ１軸が第２の回転軸に、ｙ２軸が第３の回転軸に、ｚ２軸が第４の回転軸にそれぞれ相当する。
【００３７】
右把持部２１には、プレイヤの右手の親指により押下される第１の操作ボタン３１と、右手の人差し指によって押下される第２の操作ボタン３２と、右手の中指、薬指又は小指によって押指される第３の操作ボタン３３とが設けられている。第１の操作ボタン３１は、右ケース体２５をプレイヤが把持した状態で右手の親指によって操作し易い位置である右ケース体２５の一面側の表面上部に配置されている。第１の操作ボタン３１は、右ケース体２５の一面側の表面上部に配置され、第２及び第３の操作ボタン３２，３３は、右ケース体２５の他面側の表面上部と表面中央部とにそれぞれ配置されている。すなわち、第１の操作ボタン３１は、右ケース体２５を把持する右手の親指によって操作し易い場所に位置し、第２の操作ボタン３２は、右ケース体２５を把持する右手の人差し指によって操作し易い場所に位置し、第３の操作ボタン３３は、右ケース体２５を把持する右手の中指、薬指又は小指の何れかによって操作し易い場所に位置する。これら第１〜第３の操作ボタン３１，３２，３３には、例えばゲームキャラクタの機能の設定や実行など、ゲームアプリケーションによりそれぞれ異なる機能が割り付けられる。なお、第３の操作ボタン３３に代えて、中指用の操作ボタンと薬指及び小指用の操作ボタンとを設けてもよい。また、右把持部２１に代えて又は加えて、左把持部２２にも左手の各指によって操作される操作ボタンを右把持部２１と同様に設けてもよい。
【００３８】
図７に示すように、連結部２３は、右ケース体２５（図３に示す）の内部でベース体２７に支持される右連結機構（第１の連結機構）３４と、左ケース体２６（図３に示す）の内部でベース体２８に支持される左連結機構（第２の連結機構）３５と、右連結機構３４と左連結機構３５とを連結する中央連結機構（主連結機構）３６とを備える。
【００３９】
右連結機構３４は、上回転軸３７と下回転軸３８と中央回転軸３９と前回転軸４０と後回転軸４１と上下連結体４２と前後連結体４３とを備える。
【００４０】
上回転軸３７と下回転軸３８と中央回転軸３９とは、右ケース体２５（図３に示す）の長手方向に延びて右ケース体２５のほぼ中央を通るｙ１軸と同軸上に、上下に並んで配置されている。上回転軸３７の上端部と下回転軸３８の下端部とは、ベース体２７に回転自在に支持されている。上回転軸３７の下端部は上下連結体４２の上部に固定され、下回転軸３８の上端部は上下連結体４２の下部に固定されている。中央回転軸３９の上端と下端とは、前後連結体４３の上部と下部とにそれぞれ回転自在に支持されている。前回転軸４０と後回転軸４１とは、右ケース体２５（図３に示す）の前後方向に延びて右ケース体２５のほぼ中央を通り且つｙ１軸と直交するｚ１軸と同軸上に、前後に並んで配置されている。前回転軸４０の前端部と後回転軸４１の後端部とは、ベース体２７に回転自在に支持されている。前回転軸４０の後端部は前後連結体４３の前部に固定され、後回転軸４１の前端部は前後連結体４３の後部に固定されている。中央回転軸３９の上下方向のほぼ中央には、ｙ１軸及びｚ１軸と交叉する左方向へ延びる第１連結軸４４の右端が固定され、第１連結軸４４の左端部は、右ケース体２５から突出している。上下連結体４２には、第１連結軸４４が挿通され、ｚ１軸（前回転軸４０及び後回転軸４１）を中心とした第１連結軸４４の回転を許容する上下方向に長穴状の軸挿通部４５が設けられている。前後連結体４３には、第１連結軸４４が挿通され、ｙ１軸（上回転軸３７及び下回転軸３８）を中心とした第１連結軸４４の回転を許容する前後方向に長穴状の軸挿通部４６が設けられている。
【００４１】
右連結機構３４が上記構造を有するため、第１連結軸４４を固定した状態でｙ１軸を中心としてベース体２７（右把持部２１）を回転させると、ベース体２７は上回転軸３７及び下回転軸３８に対して回転する。前後連結体４３の軸挿通部４６は、この回転に伴う前後連結体４３（前回転軸４０及び後回転軸４１）のｙ１軸周りの回転を許容する。同様に、第１連結軸４４を固定した状態でｚ１軸を中心としてベース体２７（右把持部２１）を回転させると、ベース体２７は前回転軸４０及び後回転軸４１に対して回転する。上下連結体４２の軸挿通部４５は、この回転に伴う上下連結体４２（上回転軸３７及び下回転軸３８）のｚ１軸周りの回転を許容する。
【００４２】
また、右連結機構３４が上記構造を有するため、ｙ１軸とｚ１軸とは常に直交した状態に維持される。これに対し、第１連結軸４４とｙ１軸との状態は、ベース体２７を第１連結軸４４に対してｚ１軸を中心として回転させることによって変わる。同様に、第１連結軸４４とｚ１軸との状態は、ベース体２７を第１連結軸４４に対してｙ１軸を中心として回転させることによって変わる。後述するように、右ケース体２５の内部には、第１連結軸４４がｙ１軸及びｚ１軸の双方と直交するｘ軸と同軸上に位置するようにベース体２７を付勢するコイルバネ５４（図８に示す）が設けられている。
【００４３】
左連結機構３５は、対応する各構成が上記右連結機構３４と左右対称に配置されている点を除き、右連結機構３４とほぼ同一の構成を有するため、同一の符号を付して詳しい説明を省略する。なお、第１連結軸４４、ｙ１軸及びｚ１軸に対応する構成については、第２連結軸４７、ｙ２軸及びｚ２軸とそれぞれ称して右連結機構３４と区別する。
【００４４】
中央連結機構３６は、上記第１連結軸４４と上記第２連結軸４７と中央ベース体４８とを備える。
【００４５】
中央ベース体４８は、中央ケース体２４（図３に示す）の内部に配置され、中央ケース体２４を支持する。中央ベース体４８は、左右方向に延びるベース部４９と、ベース部４９の右端部から延びる右支持部５０と、ベース部４９の左端部から延びる左支持部５１とを有する。本実施形態では、左支持部５１は、対向する２枚の板体によって構成されている。右支持部５０は、第１連結軸４４の左端部を回転自在に支持する。左支持部５１は、第２連結軸４７の右端側を左右方向にスライド移動自在に支持する。右支持部５０と左支持部５１とに支持された状態で、第１連結軸４４と第２連結軸４７とは同軸（ｘ軸）上に位置する。
【００４６】
図８に示すように、中央ケース体２４の内部には、右支持部５０に対する第１連結軸４４の回転位置を予め定められた初期位置に付勢する複数の第１のコイルバネ５２（付勢手段）と、左支持部５１に対する第２連結軸４７のスライド位置を予め定められた所定位置に付勢する複数の第２のコイルバネ５３（付勢手段）とが設けられている。第１のコイルバネ５２の一端は中央ベース体４８に対して固定され、その他端は第１連結軸４４に対して固定されている。また、第２のコイルバネ５３の一端は中央ベース体４８に対して固定され、その他端は第２連結軸４７に対して固定されている。第１のコイルバネ５２からの付勢力により、第１連結軸４４に外部からの回転力が加えられていない初期状態では、第１連結軸４４は右支持部５０に対して予め定められた初期位置に設定される。また、第２のコイルバネ５３からの付勢力により、第２連結軸４７に外部からのスライド力が加えられていない初期状態では、第２連結軸４７は右支持部５０に対して予め定められた初期位置に設定される。
【００４７】
右ケース体２５及び左ケース体２６の内部には、ベース体２７，２８に対する上回転軸３７及び下回転軸３８の回転位置と、ベース体２７，２８に対する前回転軸４０及び後回転軸４１の回転位置とを、予め定められた初期位置に付勢する第３及び第４のコイルバネ５４，５５（付勢手段）がそれぞれ複数設けられている。第３のコイルバネ５４の一端はベース体２７に対して固定され、その他端は第１連結軸４４に対して固定されている。第４のコイルバネ５５の一端はベース体２８に対して固定され、その他端は第２連結軸４７に対して固定されている。
【００４８】
これらのコイルバネ５２，５３，５４，５５からの付勢力により、右把持部２１及び左把持部２２に外力が加えられていない初期状態では、右把持部２１及び左把持部２２が初期位置に設定される。かかる初期位置では、ｘ軸とｙ１軸とｚ１軸とは互いに直交し、ｘ軸とｙ２軸とｚ２軸とは互いに直交し、ｙ１軸とｙ２軸とが平行となり、且つｚ１軸とｚ２軸とが平行となる。
【００４９】
なお、中央連結機構３６には、図４に示すように、第２連結軸４７と平行に配置されて第２連結軸４７のスライド移動を案内する２本のガイド軸５６が設けられている。
【００５０】
図７に示すように、中央ケース体２４（図３に示す）の内部には、中央ベース体４８に固定されて第２連結軸４７の位置を検出するリニアセンサ９１（距離変更量検出手段）と、第１連結軸４４の回転角度を検出する第１の回転角センサ９２（第５の角度変更量検出手段）とが設けられている。また、右ケース体２５の内部には、下回転軸３８（上回転軸３７）の回転角度を検出する第２の回転角センサ９３（第１の角度変更量検出手段）と、前回転軸４０（後回転軸４１）の回転角度を検出する第３の回転角センサ９４（第２の角度変更量検出手段）とが設けられている。同様に、左ケース体２６の内部には、下回転軸３８（上回転軸３７）の回転角度を検出する第４の回転角センサ９５（第３の角度変更量検出手段）と、前回転軸４０（後回転軸４１）の回転角度を検出する第５の回転角センサ９６（第４の角度変更量検出手段）とが設けられている。リニアセンサ９１は、リニアポテンショエンコーダなどによって構成され、各回転角センサ９２〜９６は、ポテンショメータやエンコーダなどによって構成されている。
【００５１】
リニアセンサ９１からの検出値の変動量は、右把持部２１と左把持部２２との間のｘ軸に沿った距離の変更量に相当する。第１の回転角センサ９２からの検出値の変動量は、右把持部２１と左把持部２２との間のｘ軸を中心とした角度の変更量に相当する。第２の回転角センサ９３からの検出値の変動量は、右把持部２１と中央連結機構３６との間のｙ１軸を中心とした角度の変更量に相当する。第３の回転角センサ９４からの検出値の変動量は、右把持部２１と中央連結機構３６との間のｚ１軸を中心とした角度の変更量に相当する。第４の回転角センサ９５からの検出値の変動量は、左把持部２２と中央連結機構３６との間のｙ２軸を中心とした角度の変更量に相当する。第５の回転角センサ９６からの検出値の変動量は、左把持部２２と中央連結機構３６との間のｚ２軸を中心とした角度の変更量に相当する。なお、本実施形態では、コントローラ２０が初期位置に設定された状態での各センサ９１〜９６からの検出値がゼロに設定されているため、各センサ９１〜９６からの正負の符号を含む検出値がそのまま初期位置からの各変動量となる。
【００５２】
また、中央連結機構３６には、第２連結軸４７に摺動抵抗（負荷）を付与して、第２連結軸４７のスライド移動に要する外力を可変する負荷付与器９７が設けられている。なお、このような負荷付与器９７を、第１連結軸４４、上回転軸３７、下回転軸３８、前回転軸４０又は後回転軸４１に対して適宜設けてもよい。
【００５３】
さらに、図３に示すように、中央ケース体２４には、電源ボタン５７と、ＨＯＭＥボタン５８と、ＬＥＤ（表示部）５９と、モード切替スイッチ６０とが設けられている。電源ボタン５７が押下される度に、コントローラ２０の電源のＯＮ／ＯＦＦ状態が切り替わる。ＨＯＭＥボタン５８は、装置本体１０との間で通信を開始させる際の入力用及び画像表示部１０１へのメニュー画面の表示処理を装置本体１０に開始させるための入力用として割り当てられている。また、モード切替スイッチ６０は、コントローラ２０を、右利き用として機能させるモード（以下、右モードと称する）と左利き用として機能させるモード（以下、左モードと称する）との切替用として割り当てられている。モード切替スイッチ６０の摘み部６０ａを右側に設定することにより、コントローラ２０が右モードに設定され、摘み部６０ａを左側に設定することにより、コントローラ２０が左モードに設定される。なお、このような電源ボタン５７、ＨＯＭＥボタン５８及びモード切替スイッチ６０を別途設けず、第１〜第３の操作ボタン３１〜３３に上記機能を割り当ててもよい。
【００５４】
〔コントローラの電気的構成〕
次に、図９に、コントローラ２０の主要な電気的構成を示す。
【００５５】
図９に示すように、コントローラ２０は、ＣＰＵ８１と、ＲＯＭ８２と、ＲＡＭ８４と、バッテリ８３と、操作入力部８５と、ＬＥＤ５９と、操作センサ８６と、加速度センサ８７と、負荷付与器９７と、ＵＳＢ通信モジュール８８と、ＢＴ通信モジュール８９とを有し、これらはバス９０を介して接続されている。操作入力部８５とは、上記第１〜第３の操作ボタン３１〜３３、電源ボタン５７、ＨＯＭＥボタン５８及びモード切替スイッチ６０の総称である。また、操作センサ８６とは、上記リニアセンサ９１及び第１〜第５の回転角センサ９２〜９６の総称である。
【００５６】
ＣＰＵ８１は、起動処理、操作信号生成処理、指示信号生成処理、信号出力処理、負荷制御処理及び表示制御処理などの所定の処理を実行する。
【００５７】
起動処理では、コントローラ２０の起動時にＲＯＭ８２から起動プログラムを読み込み、その起動プログラムを実行する。操作信号生成処理では、操作センサ８６からの検出値に応じた操作信号を生成する。指示信号生成処理では、操作入力部８５に対するプレイヤからの操作入力に応じて予め設定された指示信号を生成する。信号出力処理では、操作信号生成処理や指示信号生成処理で生成した信号をＵＳＢ通信モジュール８８又はＢＴ通信モジュール８９から装置本体１０へ送信させる。負荷制御処理では、ＵＳＢ通信モジュール８８又はＢＴ通信モジュール８９が装置本体１０から受信した負荷情報に応じて、負荷付与器９７が第２連結軸４７に対して付与する負荷を制御する。なお、操作信号生成処理及び負荷制御処理の詳細については、後述する。
【００５８】
表示制御処理では、ＬＥＤ５９を所定の発光状態に制御する。この表示制御処理には、モード表示制御処理が含まれる。モード表示制御処理では、コントローラ２０が右モードと左モードとの何れに設定されているかによって、ＬＥＤ５９の発光状態（例えば発光色）を変更させる。プレイヤは、ＬＥＤ５９の発光状態を視ることによりコントローラ２０が設定されているモードを認識し、必要に応じてモード切替スイッチ６０を操作して、モードを切り替えることができる。
【００５９】
ＵＳＢ通信モジュール８８は、ＵＳＢ接続ケーブルを介して装置本体１０との間で有線による情報の送受信を行い、ＢＴ通信モジュール８９は、ＢＴ通信を介して装置本体１０との間で無線による情報の送受信を行う。ＵＳＢ通信モジュール８８は、接続ポート１５（図１に示す）を含み、ＢＴ通信モジュール８９は、無線通信部１７（図１に示す）を含む。
【００６０】
なお、コントローラ２０と装置本体１０との間を接続するＵＳＢケーブル１３（図１に示す）は電源供給線を含み、ＵＳＢ接続状態において、装置本体１０は、電源供給線を介してコントローラ２０の電源を供給すると共に、バッテリ８３の充電を行う。
【００６１】
加速度センサ８７は、コントローラ２０のｘ軸上に配置されて重力加速度を検出する。ＣＰＵ８１は、加速度センサ８７の検出値を用いて、ｘ軸を中心とした鉛直方向に対するｙ軸の傾き角（コントローラ２０のｘ軸周りの傾斜角）を算出する。
【００６２】
〔操作信号生成処理の説明〕
図１０は、右把持部２１と左把持部２２と操作センサ８６（各センサ９１，９２，９３，９４，９５，９６）との関係を示す模式図、図１１は、右モード時と左モード時の各センサ９１，９２，９３，９４，９５，９６の役割（機能）を示す図である。
【００６３】
この操作信号生成処理は、プレイヤからの入力に応じてコントローラ２０を右モードと左モードとに選択的に切り替えて設定する処理（モード設定処理）を含む。以下の説明では、右モード時の信号生成処理について最初に説明し、左モード時については後述する。なお、コントローラ２０に右モード及び左モード以外の他のモードを設けてもよい。この場合のモード設定処理では、右モード及び左モードを含む複数のモードのうち一つのモードが、プレイヤからの入力に応じて択一的に設定される。
【００６４】
（右モード時の信号生成処理の基本的な説明）
図１０に示すように、リニアセンサ９１は、右把持部２１と左把持部２２との間のｘ軸に沿った相対的な位置を検出する。第１の回転角センサ９２は、右把持部２１と左把持部２２との間のｘ軸を中心とした角度を検出する。第２の回転角センサ９３は、右把持部２１と中央連結機構３６との間のｙ１軸を中心とした角度を検出する。第３の回転角センサ９４は、右把持部２１と中央連結機構３６との間のｚ１軸を中心とした角度を検出する。第４の回転角センサ９５は、左把持部２２と中央連結機構３６との間のｙ２軸を中心とした角度を検出する。第５の回転角センサ９６は、左把持部２２と中央連結機構３６との間のｚ２軸を中心とした角度を検出する。なお、本実施形態では、コントローラ２０が初期位置に設定された状態での各センサ９１〜９６からの検出値がゼロに設定されているため、各センサ９１〜９６からの検出値がそのまま初期位置からの各変動量となる。
【００６５】
図１０及び図１１の上欄に示すように、右モード時には、ｙ２軸周りの回転量を検出する第４の回転角センサ９５は、並進Ｚに割り当てられ、ＣＰＵ８１は、第４の回転角センサ９５の検出値に応じた操作信号を生成し、生成した操作信号を装置本体１０（図１に示す）のポート番号１へ出力させる。第４の回転角センサ９５からの検出値が正方向への変動すると、装置本体１０は、モニタ装置１００（図１に示す）の画像表示部１０１（図１に示す）に表示された操作対象オブジェクト１２０（図１に示す）を、Ｚ軸に沿って正方向へ移動表示させ、反対に負方向へ変動すると、Ｚ軸に沿って負方向へ移動表示させる。
【００６６】
ｚ２軸周りの回転量を検出する第５の回転角センサ９６は、並進Ｙに割り当てられ、ＣＰＵ８１は、第５の回転角センサ９６の検出値に応じた操作信号を生成し、生成した操作信号を装置本体１０のポート番号２へ出力させる。第５の回転角センサ９６からの検出値が正方向への変動すると、装置本体１０は、モニタ装置１００の画像表示部１０１に表示された操作対象オブジェクト１２０を、Ｙ軸に沿って正方向へ移動表示させ、反対に負方向へ変動すると、Ｙ軸に沿って負方向へ移動表示させる。
【００６７】
ｙ１軸周りの回転量を検出する第２の回転角センサ９３は、回転Ｙに割り当てられ、ＣＰＵ８１は、第２の回転角センサ９３の検出値に応じた操作信号を生成し、生成した操作信号を装置本体１０のポート番号３へ出力させる。第２の回転角センサ９３からの検出値が正方向への変動すると、装置本体１０は、モニタ装置１００の画像表示部１０１に表示された操作対象オブジェクト１２０を、Ｙ軸周り正方向へ回転表示させ、反対に負方向へ変動すると、Ｙ軸周り負方向へ回転表示させる。
【００６８】
ｚ１軸周りの回転量を検出する第３の回転角センサ９４は、回転Ｚに割り当てられ、ＣＰＵ８１は、第３の回転角センサ９４の検出値に応じた操作信号を生成し、生成した操作信号を装置本体１０のポート番号４へ出力させる。第３の回転角センサ９４からの検出値が正方向への変動すると、装置本体１０は、モニタ装置１００の画像表示部１０１に表示された操作対象オブジェクト１２０を、Ｚ軸周り正方向へ回転表示させ、反対に負方向へ変動すると、Ｚ軸周り負方向へ回転表示させる。
【００６９】
ｘ軸に沿った移動量を検出するリニアセンサ９１は、並進Ｘに割り当てられ、ＣＰＵ８１は、リニアセンサ９１の検出値に応じた操作信号を生成し、生成した操作信号を装置本体１０のポート番号５へ出力させる。リニアセンサ９１からの検出値が正方向への変動すると、装置本体１０は、モニタ装置１００の画像表示部１０１に表示された操作対象オブジェクト１２０を、Ｘ軸に沿って正方向へ移動表示させ、反対に負方向へ変動すると、Ｘ軸に沿って負方向へ移動表示させる。
【００７０】
ｘ軸周りの回転量を検出する第１の回転角センサ９２は、回転Ｘに割り当てられ、ＣＰＵ８１は、第１の回転角センサ９１の検出値に応じた操作信号を生成し、生成した操作信号を装置本体１０のポート番号６へ出力させる。第１の回転角センサ９２からの検出値が正方向への変動すると、装置本体１０は、モニタ装置１００の画像表示部１０１に表示された操作対象オブジェクト１２０を、Ｘ軸周り正方向へ回転表示させ、反対に負方向へ変動すると、Ｘ軸周り負方向へ回転表示させる。
【００７１】
また、リニアセンサ９１及び各回転センサ９２〜９６の検出値の正方向は、右モード時にプレイヤの右手の動く方向に合わせて操作対象オブジェクト１２０が移動又は回転するように、予め設定されている。
【００７２】
（右モード時のコントローラの操作と操作対象オブジェクトの動きとの関係）
次に、プレイヤによるコントローラ２０の操作と操作対象オブジェクト１２０の動きとの関係について、図１２〜図２４に基づき説明する。なお、図１３〜図２４では、右把持部２１及び操作対象オブジェクト１２０の後にそれぞれＡ，Ｂ，Ｃの符号を付すことにより、右把持部２１の位置と操作対象オブジェクト１２０の表示位置との対応関係を表現している。また、本実施形態では、各センサ９１〜９６の検出値と仮想空間内の各軸（Ｘ軸、Ｙ軸、Ｚ軸）の座標位置や回転角度とが対応付けられたゲームプログラムを装置本体１０が実行する場合の操作対象オブジェクト１２０の動きを例示している。なお、操作対象オブジェクト１２０の動きは、装置本体１０が実行するプログラムによって様々である。例えば、各センサ９１〜９６の検出値のうち正負の符号が仮想空間内の各軸に沿った移動方向や各軸周りの回転方向に対応付けられ、検出値の絶対値が移動速度や回転速度に対応付けられているプログラムを装置本体１０が実行する場合、操作対象オブジェクト１２０は本実施形態とは異なる動きを示す。
【００７３】
図１２に示すように、コントローラ２０を操作するプレイヤは、右手１３０Ｒによって右把持部２１を把持し、左手１３０Ｌによって左把持部２２を把持する。また、操作開始時には、ｘ軸、ｚ１軸及びｚ２軸が略水平に、ｙ１軸及びｙ２軸が略鉛直にそれぞれ設定されるように、右把持部２１及び左把持部２２を起立させた状態で、プレイヤはコントローラ２０を把持する。このようにプレイヤによって把持されることにより、コントローラ２０は基本操作状態となる。
【００７４】
右利きのプレイヤは、操作対象オブジェクト１２０を動かす場合、コントローラ２０を右モードに設定し、左把持部２２が動かないように左手１３０Ｌを固定した状態で、右手１３０Ｒを動かして右把持部２１を移動又は回転させる。
【００７５】
操作対象オブジェクト１２０を仮想空間内でＸ方向に平行移動させる場合、図１３及び図１４に示すように、プレイヤは、左把持部２２（左手１３０Ｌ）を固定したまま、右腕を全体的に左右方向に水平移動させ、右把持部２１を左把持部２２に対してｘ軸に沿って移動させる。この移動量は、リニアセンサ９１（図１０に示す）によって検出され、移動量（検出値）に応じた操作信号が装置本体１０（図１に示す）のポート番号５へ出力され、画像表示部１０１に表示された操作対象オブジェクト１２０が、Ｚ軸に沿って平行移動する。
【００７６】
例えば、図１３に示すように、左把持部２２に近接した右把持部２１Ａが、ｘ軸に沿って右側（図１３中矢印方向）へ移動し、中間位置（図１３中符号２１Ｂで示す）を経て右側位置（図１３中符号２１Ｃで示す）まで移動した場合、仮想空間の左側に位置する操作対象オブジェクト１２０Ａは、図１４に示すように、仮想空間で中央位置（図１４中符号１２０Ｂで示す）を経て右側位置（図１４中符号１２０Ｃで示す）までＸ軸に沿って平行移動する。すなわち、操作対象オブジェクト１２０は、プレイヤの右手１３０Ｒの左右方向への移動に伴って右手１３０Ｒと同方向に移動表示される。
【００７７】
操作対象オブジェクト１２０を仮想空間内でＹ方向に平行移動させる場合、図１５及び図１６に示すように、プレイヤは、左把持部２２（左手１３０Ｌ）を固定したまま、右腕を全体的に上下方向に移動させ、右把持部２１及び中央連結機構３６をｚ２軸を中心として回転移動させる。この回転量は、第５の回転センサ９６（図１０に示す）によって検出され、回転量（検出値）に応じた操作信号が装置本体１０（図１に示す）のポート番号２へ出力され、画像表示部１０１に表示された操作対象オブジェクト１２０が、Ｙ軸に沿って平行移動する。
【００７８】
例えば、図１５に示すように、左把持部２２に対して下方に位置した右把持部２１Ａが、ｚ２軸を中心として上方（図１５中矢印方向）へ回転移動し、中間位置（図１５中符号２１Ｂで示す）を経て上方位置（図１５中符号２１Ｃで示す）まで移動した場合、仮想空間の下方に位置する操作対象オブジェクト１２０Ａは、仮想空間で中央位置（図１６中符号１２０Ｂで示す）を経て上方位置（図１６中符号１２０Ｃで示す）までＹ軸に沿って平行移動する。従って、操作対象オブジェクト１２０は、プレイヤの右手１３０Ｒの上下方向への移動に伴って右手１３０Ｒと同方向に移動表示される。
【００７９】
操作対象オブジェクト１２０を仮想空間内でＺ方向に平行移動させる場合、図１７及び図１８に示すように、プレイヤは、左把持部２２（左手１３０Ｌ）を固定したまま、右腕を全体的に前後方向に移動させ、右把持部２１及び中央連結機構３６をｙ２軸を中心として回転移動させる。この回転量は、第４の回転センサ９５（図１０に示す）によって検出され、回転量（検出値）に応じた操作信号が装置本体１０（図１に示す）のポート番号１へ出力され、画像表示部１０１に表示された操作対象オブジェクト１２０が、Ｚ軸に沿って平行移動する。
【００８０】
例えば、図１７に示すように、左把持部２２に対して後方（プレイヤにとって手前側）に位置した右把持部２１Ａが、ｙ２軸を中心として前方（図１７中矢印方向）へ回転移動し、中間位置（図１７中符号２１Ｂで示す）を経てプレイヤから離れた奥側の前方位置（図１７中符号２１Ｃで示す）まで移動した場合、仮想空間の手前側に位置する操作対象オブジェクト１２０Ａは、仮想空間で中央位置（図１８中符号１２０Ｂで示す）を経て奥側の位置（図１８中符号１２０Ｃで示す）までＺ軸に沿って平行移動する。従って、操作対象オブジェクト１２０は、プレイヤの右手１３０Ｒの前後方向への移動に伴って右手１３０Ｒと同方向に移動表示される。
【００８１】
操作対象オブジェクト１２０を仮想空間内でＸ軸周りに回転させる場合、図１９及び図２０に示すように、プレイヤは、左把持部２２（左手１３０Ｌ）を固定したまま、右手首を回転させ、右把持部２１をｘ軸を中心として回転させる。この回転量は、第１の回転センサ９２（図１０に示す）によって検出され、回転量（検出値）に応じた操作信号が装置本体１０（図１に示す）のポート番号６へ出力され、画像表示部１０１に表示された操作対象オブジェクト１２０が、Ｘ軸周りに回転する。
【００８２】
例えば、図１９に示すように、その上端が後方（プレイヤにとって手前側）に傾いて位置した右把持部２１Ａが、ｘ軸を中心として正方向（図１９中矢印方向）へ回転移動し、中間位置（図１９中符号２１Ｂで示す）を経てその上端が前方（プレイヤから離れた奥側）に傾く位置（図１９中符号２１Ｃで示す）まで移動した場合、仮想空間の操作対象オブジェクト１２０Ａは、図２０中符号１２０Ｂで示す位置を経て符号１２０Ｃで示す位置まで、右把持部２１のｘ軸周りの回転と同方向にＸ軸周りに回転する。従って、操作対象オブジェクト１２０は、プレイヤの右手１３０Ｒの回転（右把持部２１のｘ軸周りの回転）に伴って右手１３０Ｒの動きと同方向に回転表示される。
【００８３】
操作対象オブジェクト１２０を仮想空間内でＹ軸周りに回転させる場合、図２１及び図２２に示すように、プレイヤは、左把持部２２（左手１３０Ｌ）を固定したまま、右手首を回転させ、右把持部２１をｙ１軸を中心として回転させる。この回転量は、第２の回転センサ９３（図１０に示す）によって検出され、回転量（検出値）に応じた操作信号が装置本体１０（図１に示す）のポート番号３へ出力され、画像表示部１０１に表示された操作対象オブジェクト１２０が、Ｙ軸周りに回転する。
【００８４】
例えば、図２１に示すように、その左端が後方（プレイヤにとって手前側）に傾いて位置した右把持部２１Ａが、ｙ１軸を中心として正方向（図２１中矢印方向）へ回転移動し、中間位置（図２１中符号２１Ｂで示す）を経てその左端が前方（プレイヤから離れた奥側）に傾く位置（図２１中符号２１Ｃで示す）まで移動した場合、仮想空間の操作対象オブジェクト１２０Ａは、図２２中符号１２０Ｂで示す位置を経て符号１２０Ｃで示す位置まで、右把持部２１のｙ１軸周りの回転と同方向にＹ軸周りに回転する。従って、操作対象オブジェクト１２０は、プレイヤの右手１３０Ｒの回転（右把持部２１のｙ１軸周りの回転）に伴って右手１３０Ｒの動きと同方向に回転表示される。
【００８５】
操作対象オブジェクト１２０を仮想空間内でＺ軸周りに回転させる場合、図２３及び図２４に示すように、プレイヤは、左把持部２２（左手１３０Ｌ）を固定したまま、右手首を回転させ、右把持部２１をｚ１軸を中心として回転させる。この回転量は、第３の回転センサ９４（図１０に示す）によって検出され、回転量（検出値）に応じた操作信号が装置本体１０（図１に示す）のポート番号４へ出力され、画像表示部１０１に表示された操作対象オブジェクト１２０が、Ｚ軸周りに回転する。
【００８６】
例えば、図２３に示すように、その上端がプレイヤにとって右側に傾いて位置した右把持部２１Ａが、ｚ１軸を中心として正方向（図２３中矢印方向）へ回転移動し、中間位置（図２３中符号２１Ｂで示す）を経てその上端がプレイヤにとって左側に傾く位置（図２３中符号２１Ｃで示す）まで移動した場合、仮想空間の操作対象オブジェクト１２０Ａは、図２４中符号１２０Ｂで示す位置を経て符号１２０Ｃで示す位置まで、右把持部２１のｚ１軸周りの回転と同方向にＺ軸周りに回転する。従って、操作対象オブジェクト１２０は、プレイヤの右手１３０Ｒの回転（右把持部２１のｚ１軸周りの回転）に伴って右手１３０Ｒの動きと同方向に回転表示される。
【００８７】
（左モード時の信号生成処理の基本的な説明）
次に、左モード時にＣＰＵ８１が実行する操作信号生成処理について説明する。
【００８８】
左利きのプレイヤは、操作対象オブジェクト１２０を移動表示させる場合、コントローラ２０を左モードに設定し、右把持部２１が動かないように右手１３０Ｒを固定した状態で、左手１３０Ｌを動かして左把持部２２を移動又は回転させる。ここで、ＣＰＵ８１は、右モード時の左右の手の役割を入れ替え、右モード時の右手１３０Ｒと同様に左手１３０Ｌを動かすことによって操作対象オブジェクト１２０が移動するように、左モード時の操作信号を生成する。
【００８９】
具体的には、図１１の下欄に示すように、ｙ１軸周りの回転量を検出する第２の回転角センサ９３は、並進Ｚに割り当てられ、ＣＰＵ８１は、第２の回転角センサ９３の検出値に応じた操作信号を生成し、生成した操作信号を装置本体１０のポート番号１へ出力させる。
【００９０】
ｚ１軸周りの回転量を検出する第３の回転角センサ９４は、並進Ｙに割り当てられ、ＣＰＵ８１は、第３の回転角センサ９４の検出値に応じた操作信号を生成し、生成した操作信号を装置本体１０のポート番号２へ出力させる。
【００９１】
ｙ２軸周りの回転量を検出する第４の回転角センサ９５は、回転Ｙに割り当てられ、ＣＰＵ８１は、第４の回転角センサ９５の検出値に応じた操作信号を生成し、生成した操作信号を装置本体１０（図１に示す）のポート番号３へ出力させる。
【００９２】
ｚ２軸周りの回転量を検出する第５の回転角センサ９６は、回転Ｚに割り当てられ、ＣＰＵ８１は、第５の回転角センサ９６の検出値に応じた操作信号を生成し、生成した操作信号を装置本体１０のポート番号４へ出力させる。
【００９３】
なお、ｘ軸に沿った移動量を検出するリニアセンサ９１とｘ軸周りの回転量を検出する第１の回転角センサ９２とは、右モード時と同様に、並進Ｘと回転Ｘとにそれぞれ割り当てられる。
【００９４】
また、リニアセンサ９１及び各回転センサ９２〜９６の検出値の正方向は、右モード時にプレイヤの右手の動く方向に合わせて操作対象オブジェクト１２０が移動又は回転するように予め設定されている。このため、左モードと右モードとの間で各機能を割り当てる各センサ９１〜９６を上述のように変更しただけでは、左モード時においてプレイヤの左手の動く方向と逆方向に操作対象オブジェクト１２０が移動又は回転してしまう場合がある。
【００９５】
例えば、左モード時の回転Ｙに第４の回転角センサ９５を単に割り当てただけでは、プレイヤが左手１３０Ｌを回転させて左把持部２２をｙ２軸周りに回転させた際に、操作対象オブジェクト１２０のＹ軸周りの回転方向がプレイヤの左手１３０Ｌの回転方向とは逆方向となり、プレイヤに違和感を与える。このような違和感を解消するため、本実施形態のＣＰＵ８１は、左モード時には、第４の回転角センサ９５からの検出値の正負を逆転させて（検出値＋θを−θ、検出値−θを＋θとして）処理し、操作信号を生成する。
【００９６】
同様の理由から、ＣＰＵ８１は、左モード時には、第５の回転角センサ９６と第１の回転センサ９２とリニアセンサ９１からの検出値についても、その正負を逆転させて処理し、操作信号を生成する。
【００９７】
このように、本実施形態のコントローラ２０では、プレイヤの利き手の動く方向に合わせて操作対象オブジェクト１２０が移動又は回転するので、仮想空間の操作対象オブジェクト１２０を動かす際に、現実世界の物を動かす際の手の動きに近い感覚でコントローラ２０を操作することができる。
【００９８】
また、右利きのプレイヤのための右モードと左利きのプレイヤのための左モードとを選択して設定可能であり、右モード時には右手１３０Ｒの動く方向に合わせて操作対象オブジェクト１２０が移動又は回転し、左モード時には左手１３０Ｌの動く方向に合わせて操作対象オブジェクト１２０が移動又は回転するので、右利きのプレイヤと左利きのプレイヤとが同じ感覚でコントローラ２０を操作することができる。
【００９９】
さらに、コントローラ２０から出力される操作信号が右モード及び左モードに応じて生成されるので、装置本体１０は、右モードと左モードとに関係なく共通した処理を実行すればよい。
【０１００】
（コントローラの傾き補正の説明）
プレイヤは、コントローラ２０の姿勢を任意に設定可能であり、図２５（ａ）に示す起立状態のほか、例えば図２５（ｂ）に示すように、ｘ軸周りに傾かせた傾斜状態でコントローラ２０を操作する場合がある。なお、起立状態では、ｘ軸とｚ１軸とｚ２軸が略水平に、ｙ１軸及びｙ２軸が略鉛直にそれぞれ設定される。また上記傾斜状態では、ｘ軸は略水平に設定されるが、ｚ１軸とｚ２軸とは水平方向から傾き、且つｙ１軸及びｙ２軸は鉛直方向から傾く。このような起立状態と傾斜状態とでは、プレイヤにとってのコントローラ２０の操作感が相違する。例えば、右モード時において、右把持部２１をｚ２軸周りに回転させた場合の右把持部２１の鉛直方向への移動量は、起立状態の方が傾斜状態よりも大きくなる。
【０１０１】
本実施形態のコントローラ２０には、ｘ軸周りのコントローラ２０の傾き（傾斜角θ）を検出するための加速度センサ（重力センサ）８７が設けられ、プレイヤがコントローラ２０を起立状態からｘ軸周りに傾けて操作した場合、ＣＰＵ８１は、加速度センサ８７からの検出値を用いて傾斜角θを算出し、算出した傾斜角θに基づく傾斜補正処理を実行し、起立状態での操作感との差を小さくしている。
【０１０２】
ここで、図２６及び図２７に示す移動量検出センサをモデルとして、傾斜補正の基本的な概念を説明する。
【０１０３】
このモデルでは、コントローラ２０に上記加速度センサ８７（図２６（ａ）に示す）と移動量検出センサ１０２（図２７（ａ）に示す）とが設けられている。コントローラ２０のｘ軸周りの傾斜角θ（図２６（ｂ）に示す）は、加速度センサ８６からの検出値を用いて算出される。移動量検出センサ１０２は、右把持部２１に配置され、コントローラ２０がｘ軸周りに傾斜していない状態（図２６（ａ）に示すように、右把持部２１及び左把持部（図示省略）が起立した状態）において、左把持部に対する右把持部２１の前後方向ｚの移動量を検出する前後方向検出部Ｍ（図２７（ａ）に示す）と鉛直方向ｙの移動量を検出する上下方向検出部Ｎ（図２７（ａ）に示す）とを有する。
【０１０４】
コントローラ２０がｘ軸周りに傾斜角θで傾いている状態で左把持部に対して右把持部２１を移動させた場合、図２７（ｂ）に示すように前後方向検出部Ｍの検出値ｍと上下方向検出部Ｎの検出値ｎとは、それぞれ水平方向及び鉛直方向から傾斜角θ分傾くため、これらの検出値ｍ，ｎは右把持部２１の水平方向及び鉛直方向の移動量とは一致しない。
【０１０５】
そこで、前後方向検出部Ｍ及び上下方向検出部Ｎからの各検出値を、次式（１）（２）に従って補正する。
【０１０６】
補正後の前後方向検出部Ｍの検出値＝  ｍcosθ＋ｎsinθ  ・・・（１）
補正後の上下方向検出部Ｎの検出値＝−ｍsinθ＋ｎcosθ  ・・・（２）
なお、上式（１）（２）において、ｍは前後方向検出部Ｍの検出値、ｎは上下方向検出部Ｎの検出値、θはコントローラ２０のｘ軸周りの傾斜角θである。また、上式（１）（２）は、図２６及び図２７の矢印方向を正とした場合の式である。
【０１０７】
本実施形態のＣＰＵ８１は、上記傾斜補正の基本的な概念に基づき、傾斜補正処理を実行する。具体的には、第２の回転センサ９３の実際の検出値φ２と第３の回転センサ９４の実際の検出値φ３と傾斜角θとによって、第２の回転センサ９３の検出値と第３の回転センサ９４の検出値とを補正する。第２の回転センサ９３の補正後の検出値は、上記（１）式のｍにφ２をｎにφ３をそれぞれ代入することにより算出され、第３の回転センサ９４の補正後の検出値は、上記（２）式のｍにφ２をｎにφ３をそれぞれ代入することにより算出される。同様に、第４の回転センサ９５の実際の検出値φ４と第５の回転センサ９６の実際の検出値φ５と傾斜角θとによって、第４の回転センサ９５の検出値と第５の回転センサ９６の検出値とを補正する。第４の回転センサ９５の補正後の検出値は、上記（１）式のｍにφ４をｎにφ５をそれぞれ代入することにより算出され、第５の回転センサ９６の補正後の検出値は、上記（２）式のｍにφ４をｎにφ５をそれぞれ代入することにより算出される。ＣＰＵ８１は、補正後の検出値に基づいて操作信号を生成する。また、本実施形態では、右モード時と左モード時とでは、同じ傾斜補正処理が実行される。
【０１０８】
なお、本実施形態では、コントローラ２０のｘ軸周りの傾きを検出するための加速度センサ８６を設けたが、これに代えて又は加えて、コントローラ２０のｚ１軸及びｚ２軸周りの傾きを検出するための加速度センサを設け、この加速度センサが検出する傾斜角に基づく傾斜補正処理をＣＰＵ８１が実行してもよい。また、コントローラ２０の傾斜角を、加速度センサ以外の手段によって検出してもよい。
【０１０９】
また、本実施形態では、上記傾斜補正処理をコントローラ２０側で行っているが、これを装置本体１０側で行ってもよい。この場合、コントローラ２０は、各回転センサの実際の検出値を補正せずに装置本体１０へ送信すると共に、加速度センサ８７の検出値を装置本体１０へ送信する。装置本体１０では、コントローラ２０から受信したこれらの検出値を用いて、装置本体１０のメインＣＰＵ６４やサブＣＰＵ７３が上記傾斜補正処理を実行する。
【０１１０】
（操作センサの検出値の組み合わせ補正の説明）
右モード時において、操作対象オブジェクト１２０（図１に示す）を仮想空間内でＺ方向に平行移動させる場合、プレイヤは、図２８（ａ）に示す初期状態から、左把持部２２（左手１３０Ｌ）を固定したまま、図２８（ｂ）に示すように、右把持部２１をｙ２軸を中心として回転移動させる。このような操作により、操作対象オブジェクト１２０は、第４の回転角センサ９５の検出値に応じて仮想空間内でＺ方向に平行移動する。
【０１１１】
しかし、右把持部２１はｙ１軸周りにも回転自在であるため、左把持部２１をｙ１軸周りに回転させずにｙ２軸周りに回転させることはプレイヤにとって困難であり、無理のない自然な操作を行うと、図２８（ｃ）に示すように、右把持部２１が前方（図中上方）に直線的に移動する。この場合、右把持部２２がｙ１軸周りに回転するため、操作対象オブジェクト１２０は、プレイヤの意図に反して、第２の回転角センサ９３の検出値に応じて仮想空間内でＹ軸周りに回転してしまう。
【０１１２】
本実施形態では、上記不都合を解消するため、ＣＰＵ８１は、第４の回転角センサ９５の検出値θ１（図２９に示す）の絶対値が予め定められた所定値以上となったとき、第２の回転角センサ９３の実際の検出値から第４の回転角センサ９５の検出値θ１を除算した値を第２の回転角センサ９３の検出値として算出し、算出した補正後の検出値に基づいて操作信号を生成する。これにより、操作対象オブジェクト１２０がプレイヤの意図に反して動いてしまうことが抑制される。
【０１１３】
また、第４の回転角センサ９５の検出値θ１の絶対値が予め定められた所定値以上となることを条件としているので、プレイヤが右把持部２１をｙ２軸周りに積極的に回転させたい場合にのみ上記補正処理が実行される。すなわち、プレイヤが右把持部２１をｙ１軸周りに積極的に回転させたい場合において、右把持部２１がプレイヤの意図に反してｙ２軸周りに回転しても、第４の回転角センサ９５の検出値θ１の絶対値が所定値未満であれば上記補正処理が実行されず、操作対象オブジェクト１２０はプレイヤの意図した分だけ仮想空間内でＹ軸周りに回転する。
【０１１４】
同様に、ＣＰＵ８１は、第３の回転角センサ９４の検出値についても、第５の回転角センサ９６の検出値を用いて、上記補正処理を行う。
【０１１５】
また、本実施形態では、上記補正処理をコントローラ２０側で行っているが、これを装置本体１０側で行ってもよい。この場合、コントローラ２０は、各回転センサの実際の検出値を補正せずに装置本体１０へ送信する。装置本体１０では、コントローラ２０から受信したこれらの検出値を用いて、装置本体１０のメインＣＰＵ６４やサブＣＰＵ７３が上記傾斜補正処理を実行する。
【０１１６】
[負荷制御処理の説明]
ＣＰＵ８１は、ＵＳＢ通信モジュール８８又はＢＴ通信モジュール８９が装置本体１０から受信した負荷情報に応じて、負荷付与器９７が第２連結軸４７に対して付与する負荷を制御する。例えば、仮想空間が操作対象オブジェクト１２０（図１に示す）と柔らかな表面を有する接触対象オブジェクト（図示省略）とを含む場合、装置本体１０は接触対象オブジェクトの表面の柔らかさに応じた負荷情報をコントローラ２０に送信する。プレイヤからの操作によって操作対象オブジェクト１２０がＸ軸方向に沿って移動して接触対象オブジェクトに接触すると、ＣＰＵ１８は、受信した負荷情報に応じて、負荷付与器９７が第２連結軸４７に対して付与する負荷を制御する。これにより、プレイヤは、接触対象オブジェクトの表面の柔らかさを体感することができる。
【０１１７】
なお、上述の各実施の形態の説明は本発明の一例である。このため、本発明は上述の各実施の形態に限定されることはなく、本発明に係る技術的思想を逸脱しない範囲であれば、上述の実施の形態以外であっても種々の変更が可能であることは勿論である。
【図面の簡単な説明】
【０１１８】
【図１】本発明の一実施形態としてのエンタテインメントシステムの概要を示す模式図である。
【図２】装置本体の主要な内部構成を示すブロック図である。
【図３】コントローラの外観斜視図である。
【図４】コントローラを図３の矢印ＩＶ方向から視た正面図である。
【図５】コントローラを図３の矢印Ｖ方向から視た平面図である。
【図６】コントローラの右把持部を図３の矢印ＶＩ方向から視た背面図である。
【図７】コントローラの内部構造を模式的に示す斜視図である。
【図８】コントローラ内のコイルバネの配置を示す模式図である。
【図９】コントローラの主要な電気的構成を示すブロック図である。
【図１０】右把持部と左把持部と操作センサとの関係を示す模式図である。
【図１１】右モード時と左モード時の各操作センサの機能を示す図である。
【図１２】コントローラの操作開始時の状態を示す模式図である。
【図１３】右把持部をｘ軸方向に移動させた状態を示す模式図である。
【図１４】右把持部のｘ軸方向への移動に対応した操作対象オブジェクトの動きを示す模式図である。
【図１５】右把持部をｚ２軸周りに回転させた状態を示す模式図である。
【図１６】右把持部のｚ２軸周りの回転に対応した操作対象オブジェクトの動きを示す模式図である。
【図１７】右把持部をｙ２軸周りに回転させた状態を示す模式図である。
【図１８】右把持部のｙ２軸周りの回転に対応した操作対象オブジェクトの動きを示す模式図である。
【図１９】右把持部をｘ軸周りに回転させた状態を示す模式図である。
【図２０】右把持部のｘ軸周りの回転に対応した操作対象オブジェクトの動きを示す模式図である。
【図２１】右把持部をｙ１軸周りに回転させた状態を示す模式図である。
【図２２】右把持部のｙ１軸周りの回転に対応した操作対象オブジェクトの動きを示す模式図である。
【図２３】右把持部をｚ１軸周りに回転させた状態を示す模式図である。
【図２４】右把持部のｚ１軸周りの回転に対応した操作対象オブジェクトの動きを示す模式図である。
【図２５】プレイヤがコントローラを把持した状態を模式的に示す斜視図であり、（ａ）はコントローラを起立させた状態を示し、（ｂ）はコントローラを傾斜させた状態を示す。
【図２６】傾斜補正を説明するためのモデルのコントローラを示す模式図であり、（ａ）はコントローラを起立させた状態を示し、（ｂ）はコントローラを傾斜させた状態を示す。
【図２７】傾斜補正を説明するためのモデルの移動量検出センサを示す模式図であり、（ａ）はコントローラを起立させた状態を示し、（ｂ）はコントローラを傾斜させた状態を示す。
【図２８】コントローラの操作状態を示す模式図であり、（ａ）は初期状態を示し、（ｂ）は右把持部をｙ１軸周りの回転を生じさせずｙ２軸周りに回転させた状態を示し、（ｃ）は右把持部をｙ１軸周りの回転を伴ってｙ２軸周りに回転させた状態を示す。
【図２９】図２８（ｃ）の回転角センサを示す模式図である。
【符号の説明】
【０１１９】
１０：装置本体、１５：接続ポート、１７：無線通信部、２０：コントローラ、２１：右把持部、２２：左把持部、２３：連結部、２４：中央ケース体、２５：右ケース体、２６：左ケース体、２７：ベース体、３４：右連結機構、３５：左連結機構、３６：中央連結機構、４８：中央ベース体、５２：第１のコイルバネ、５３：第２のコイルバネ、５４：第３のコイルバネ、５５：第４のコイルバネ、８１：ＣＰＵ、８６：操作センサ、８７：加速度センサ、９１：リニアセンサ、９２：第１の回転角センサ、９３：第２の回転角センサ、９４：第３の回転角センサ、９５：第４の回転角センサ、９６：第５の回転角センサ、９７：負荷付与器、１００：モニタ装置、１０１画像表示部、１２０：操作対象オブジェクト、１３０Ｒ：プレイヤの左手、１３０Ｌ：プレイヤの右手
【図１】
2008102789.tif 000003
【図２】
2008102789.tif 000004
【図３】
2008102789.tif 000005
【図４】
2008102789.tif 000006
【図５】
2008102789.tif 000007
【図６】
2008102789.tif 000008
【図７】
2008102789.tif 000009
【図８】
2008102789.tif 000010
【図９】
2008102789.tif 000011
【図１０】
2008102789.tif 000012
【図１１】
2008102789.tif 000013
【図１２】
2008102789.tif 000014
【図１３】
2008102789.tif 000015
【図１４】
2008102789.tif 000016
【図１５】
2008102789.tif 000017
【図１６】
2008102789.tif 000018
【図１７】
2008102789.tif 000019
【図１８】
2008102789.tif 000020
【図１９】
2008102789.tif 000021
【図２０】
2008102789.tif 000022
【図２１】
2008102789.tif 000023
【図２２】
2008102789.tif 000024
【図２３】
2008102789.tif 000025
【図２４】
2008102789.tif 000026
【図２５】
2008102789.tif 000027
【図２６】
2008102789.tif 000028
【図２７】
2008102789.tif 000029
【図２８】
2008102789.tif 000030
【図２９】
2008102789.tif 000031