(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024106855
(43)【公開日】2024-08-08
(54)【発明の名称】情報処理装置およびデバイス位置取得方法
(51)【国際特許分類】
G06F 3/01 20060101AFI20240801BHJP
G06F 3/0346 20130101ALI20240801BHJP
【FI】
G06F3/01 514
G06F3/01 570
G06F3/0346 422
G06F3/0346 425
【審査請求】未請求
【請求項の数】12
【出願形態】OL
(21)【出願番号】P 2023011323
(22)【出願日】2023-01-27
(71)【出願人】
【識別番号】310021766
【氏名又は名称】株式会社ソニー・インタラクティブエンタテインメント
(74)【代理人】
【識別番号】100105924
【弁理士】
【氏名又は名称】森下 賢樹
(74)【代理人】
【識別番号】100109047
【弁理士】
【氏名又は名称】村田 雄祐
(74)【代理人】
【識別番号】100109081
【弁理士】
【氏名又は名称】三木 友由
(74)【代理人】
【識別番号】100134256
【弁理士】
【氏名又は名称】青木 武司
(72)【発明者】
【氏名】山内 孔貴
(72)【発明者】
【氏名】南野 孝範
(72)【発明者】
【氏名】西川 憲三
【テーマコード(参考)】
5B087
5E555
【Fターム(参考)】
5B087AA07
5B087BC32
5E555AA11
5E555AA27
5E555AA64
5E555BA20
5E555BA38
5E555BB20
5E555BB38
5E555BC04
5E555BE16
5E555BE17
5E555CA23
5E555CA42
5E555CA44
5E555CB19
5E555CB66
5E555DA08
5E555DA11
5E555EA22
5E555FA00
(57)【要約】
【課題】デバイスの位置によらずその位置情報を継続して取得できる技術を提供する。
【解決手段】情報処理装置の第1デバイス情報取得部は、HMD100の位置姿勢情報を取得する。第2デバイス情報取得部は、HMD100の位置姿勢情報に基づき骨格モデルを設定し、肘位置J1、J2に基づき入力デバイス16b、16aの位置を推定する。第2デバイス情報取得部は、HMD100と入力デバイス16a、16bのセンサデータに基づき、HMD100の運動に対する骨格モデルの追従の度合いが高いFAモードと、追従の度合いが低いFTモードを切り替え制御する。
【選択図】
図15
【特許請求の範囲】
【請求項1】
ユーザに装着される第1デバイスの位置姿勢情報を取得する第1デバイス情報取得部と、
前記第1デバイスと異なる部位に装着される第2デバイスの位置情報を、前記第1デバイスの位置姿勢情報および人の骨格モデルに基づき取得する第2デバイス情報取得部と、
前記第1デバイスおよび前記第2デバイスの運動を計測するセンサからセンサデータを取得するセンサデータ取得部と、
を備え、
前記第2デバイス情報取得部は、前記センサデータに基づき、前記第1デバイスに対する前記骨格モデルの追従の度合いを変化させることを特徴とする情報処理装置。
【請求項2】
前記第2デバイス情報取得部は、前記第1デバイスと前記第2デバイスの角速度の差が所定の基準を越えたとき、前記追従の度合いを低くすることを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記第2デバイス情報取得部は、前記追従の度合いの変化として、前記第1デバイスの回転運動に前記骨格モデルを追従させるか否かを決定することを特徴とする請求項1に記載の情報処理装置。
【請求項4】
前記第2デバイス情報取得部は、前記第1デバイスの回転運動に前記骨格モデルを追従させないモードにおいても、所定の条件下で、前記骨格モデルを前記第1デバイスの回転方向と同方向に回転させることを特徴とする請求項3に記載の情報処理装置。
【請求項5】
前記第2デバイス情報取得部は、前記第1デバイスと前記骨格モデルの正面方向の角度差が増加する方向にあり、前記第1デバイスの角速度が所定のしきい値以上である期間に、当該角速度に対し所定比率k(0<k<1.0)を乗算した角速度で、前記骨格モデルを回転させることを特徴とする請求項4に記載の情報処理装置。
【請求項6】
前記第2デバイス情報取得部は、前記第1デバイスと前記骨格モデルの正面方向の角度差が所定の上限を超えるとき、前記骨格モデルを前記第1デバイスの回転運動に追従させないモードから、当該回転運動に追従させるモードへ切り替えることを特徴とする請求項3から5のいずれかに記載の情報処理装置。
【請求項7】
前記第1デバイス情報取得部は、前記第1デバイスとしてヘッドマウントディスプレイの位置姿勢情報を取得し、
前記第2デバイス情報取得部は、前記第2デバイスとして、ユーザが把持するデバイスの位置を取得することを特徴とする請求項1から5のいずれかに記載の情報処理装置。
【請求項8】
前記第2デバイス情報取得部は、前記第2デバイスとしてユーザが左右の手に把持する2つのデバイスの双方の角速度と、前記第1デバイスの角速度との差が所定の基準を超えたことを条件に、前記追従の度合いを低くすることを特徴とする請求項7に記載の情報処理装置。
【請求項9】
前記第1デバイスは撮像装置を含み、
前記第2デバイス情報取得部は、前記第2デバイスが前記撮像装置の視野内にあるとき、当該撮像装置による撮影画像に基づき、前記第2デバイスの位置情報を取得し、前記第2デバイスが前記撮像装置の視野外にあるとき、前記骨格モデルに基づき、前記第2デバイスの位置情報を取得することを特徴とする請求項1から5のいずれかに記載の情報処理装置。
【請求項10】
前記第1デバイス情報取得部は、前記撮像装置による撮影画像に基づき、SLAM(Simultaneous Localization and Mapping)処理により前記第1デバイスの位置姿勢情報を取得することを特徴とする請求項9に記載の情報処理装置。
【請求項11】
ユーザに装着される第1デバイスの位置姿勢情報を取得するステップと、
前記第1デバイスと異なる部位に装着される第2デバイスの位置情報を、前記第1デバイスの位置姿勢情報および人の骨格モデルに基づき取得するステップと、
前記第1デバイスおよび前記第2デバイスの運動を計測するセンサからセンサデータを取得するステップと、
を含み、
前記第2デバイスの位置情報を取得するステップは、前記センサデータに基づき、前記第1デバイスに対する前記骨格モデルの追従の度合いを変化させることを特徴とするデバイス位置取得方法。
【請求項12】
ユーザに装着される第1デバイスの位置姿勢情報を取得する機能と、
前記第1デバイスと異なる部位に装着される第2デバイスの位置情報を、前記第1デバイスの位置姿勢情報および人の骨格モデルに基づき取得する機能と、
前記第1デバイスおよび前記第2デバイスの運動を計測するセンサからセンサデータを取得する機能と、
をコンピュータに実現させ、
前記第2デバイスの位置情報を取得する機能は、前記センサデータに基づき、前記第1デバイスに対する前記骨格モデルの追従の度合いを変化させることを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コントローラ等のデバイスの位置情報を取得する情報処理装置、およびデバイス位置取得方法に関する。
【背景技術】
【0002】
特許文献1は、複数のマーカを備えたデバイスを撮影した画像からマーカ像の代表座標を特定し、マーカ像の代表座標を用いてデバイスの位置情報および姿勢情報を導出する情報処理装置を開示する。特許文献1に開示された情報処理装置は、撮影画像において第1輝度以上の画素が連続する領域を囲む第1境界ボックスを特定するとともに、第1境界ボックス内において第1輝度よりも高い第2輝度以上の画素が連続する領域を囲む第2境界ボックスを特定し、第1境界ボックス内または第2境界ボックス内の画素にもとづいてマーカ像の代表座標を導出する。
【0003】
特許文献2は、複数の発光部と複数の操作部材とを設けられた入力デバイスを開示する。入力デバイスの発光部は、ヘッドマウンティングデバイスに設けられたカメラにより撮影され、検知された発光部の位置にもとづいて、入力デバイスの位置と姿勢が算出される。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2020-181322号公報
【特許文献2】国際公開第2021/240930号
【発明の概要】
【発明が解決しようとする課題】
【0005】
近年、デバイスの位置や姿勢をトラッキングし、VR空間の3Dモデルに反映させる情報処理技術が普及している。ゲーム空間のプレイヤキャラクタやゲームオブジェクトの動きを、トラッキング対象となるデバイスの位置や姿勢の変化に連動させることで、ユーザによる直観的な操作が実現される。
【0006】
特許文献1に開示されたデバイス位置推定処理は、デバイスが撮像装置により撮影されて、撮影画像にマーカ像が含まれているときに実施される。そのためデバイスが撮像装置の画角外に移動して、撮影画像にマーカ像が含まれなくなると、特許文献1に開示されたデバイス位置推定処理は実施できない。
【0007】
そこで本発明は、デバイスの位置によらずその位置情報を継続して取得できる技術を提供することを目的とする。なおデバイスは操作部材を有する入力デバイスであってよいが、操作部材を有しない単にトラッキングの対象となるデバイスであってもよい。
【課題を解決するための手段】
【0008】
上記課題を解決するために、本発明のある態様は情報処理装置に関する。この情報処理装置は、ユーザに装着される第1デバイスの位置姿勢情報を取得する第1デバイス情報取得部と、第1デバイスと異なる部位に装着される第2デバイスの位置情報を、第1デバイスの位置姿勢情報および人の骨格モデルに基づき取得する第2デバイス情報取得部と、第1デバイスおよび第2デバイスの運動を計測するセンサからセンサデータを取得するセンサデータ取得部と、を備え、第2デバイス情報取得部は、センサデータに基づき、第1デバイスに対する骨格モデルの追従の度合いを変化させることを特徴とする。
【0009】
ここで「装着」とは、人体に直接的または間接的に略固定された状態を指し、貼付されたり何らかの固定機構により身につけたりする場合のほか、ユーザ自身が把持する場合も含まれる。
【0010】
本発明の別の態様は、デバイス位置推定方法に関する。このデバイス位置推定方法は、ユーザに装着される第1デバイスの位置姿勢情報を取得するステップと、第1デバイスと異なる部位に装着される第2デバイスの位置情報を、第1デバイスの位置姿勢情報および人の骨格モデルに基づき取得するステップと、第1デバイスおよび第2デバイスの運動を計測するセンサからセンサデータを取得するステップと、を含み、第2デバイスの位置情報を取得するステップは、センサデータに基づき、第1デバイスに対する前記骨格モデルの追従の度合いを変化させることを特徴とする。
【0011】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラム、コンピュータプログラムを読み取り可能に記録した記録媒体、データ構造などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【0012】
本発明によれば、デバイスの位置によらずその位置情報を継続して取得できる。
【図面の簡単な説明】
【0013】
【
図1】本実施の形態における情報処理システムの構成例を示す図である。
【
図2】本実施の形態のHMDの外観形状の例を示す図である。
【
図3】本実施の形態のHMDの機能ブロックを示す図である。
【
図4】本実施の形態の入力デバイスの形状を示す図である。
【
図5】本実施の形態の入力デバイスの形状を示す図である。
【
図6】本実施の形態において入力デバイスを撮影した画像の一部の例を示す図である。
【
図7】本実施の形態の入力デバイスの機能ブロックを示す図である。
【
図8】本実施の形態の情報処理装置の機能ブロックを示す図である。
【
図9】本実施の形態の位置姿勢推定処理を示すフローチャートである。
【
図10】本実施の形態の推定処理部の内部構成を示す図である。
【
図11】本実施の形態において撮像装置の撮影可能な範囲を模式的に示す図である。
【
図12】本実施の形態における、HMDと入力デバイスの推定位置の例を示す図である。
【
図13】本実施の形態において入力デバイスが撮影可能範囲から外れた状態を示す図である。
【
図14】本実施の形態において、肘位置を基点としてデバイス位置を推定する処理を説明するための図である。
【
図15】本実施の形態において、HMDに対する骨格モデルの状態設定に係るモードを説明するための図である。
【
図16】本実施の形態の部位置推定部の機能ブロックの構成をより詳細に示す図である。
【
図17】本実施の形態のFTモードにおいて、腕モデルの正面方向をHMDの正面方向に近づける補正部の処理を説明するための図である。
【
図18】本実施の形態において部位位置推定部が腕モデルの設定モードを制御する処理手順を示すフローチャートである。
【発明を実施するための形態】
【0014】
図1は、本実施の形態における情報処理システム1の構成例を示す。情報処理システム1は情報処理装置10と、記録装置11と、ヘッドマウントディスプレイ(HMD)100と、ユーザが持って手指で操作する入力デバイス16と、画像および音声を出力する出力装置15とを備える。出力装置15はテレビであってよい。情報処理装置10は、アクセスポイント(AP)17を介して、インターネットなどの外部のネットワーク2に接続される。AP17は無線アクセスポイントおよびルータの機能を有し、情報処理装置10はAP17とケーブルで接続してもよく、既知の無線通信プロトコルで接続してもよい。
【0015】
記録装置11は、システムソフトウェアや、ゲームソフトウェアなどのアプリケーションを記録する。情報処理装置10は、コンテンツサーバからネットワーク2経由で、ゲームソフトウェアを記録装置11にダウンロードしてよい。情報処理装置10はゲームソフトウェアを実行して、ゲームの画像データおよび音声データをHMD100に供給する。情報処理装置10とHMD100とは既知の無線通信プロトコルで接続されてもよく、またケーブルで接続されてもよい。
【0016】
HMD100は、ユーザが頭部に装着することによりその眼前に位置する表示パネルに画像を表示する表示装置である。HMD100は、左目用表示パネルに左目用の画像を、右目用表示パネルに右目用の画像を、それぞれ別個に表示する。これらの画像は左右の視点から見た視差画像を構成し、立体視を実現する。ユーザは光学レンズを通して表示パネルを見るため、情報処理装置10は、レンズによる光学歪みを補正した視差画像データをHMD100に供給する。
【0017】
HMD100を装着したユーザにとって出力装置15は必要ないが、出力装置15を用意することで、別のユーザが出力装置15の表示画像を見ることができる。情報処理装置10は、HMD100を装着したユーザが見ている画像と同じ画像を出力装置15に表示させてもよいが、別の画像を表示させてもよい。たとえばHMDを装着したユーザと、別のユーザとが一緒にゲームをプレイするような場合、出力装置15からは、当該別のユーザのキャラクタ視点からのゲーム画像が表示されてもよい。
【0018】
情報処理装置10と入力デバイス16とは既知の無線通信プロトコルで接続されてよく、またケーブルで接続されてもよい。入力デバイス16は操作ボタンなどの複数の操作部材を備え、ユーザは入力デバイス16を把持しながら、手指で操作部材を操作する。情報処理装置10がゲームを実行する際、入力デバイス16はゲームコントローラとして利用される。入力デバイス16は、3軸の加速度センサおよび3軸の角速度センサを含む慣性計測装置(IMU:Inertial Measurement Unit)を備え、所定の周期(たとえば800Hz)でセンサデータを情報処理装置10に送信する。
【0019】
本実施形態のゲームは、入力デバイス16の操作部材の操作情報だけでなく、入力デバイス16の位置、速度、姿勢などを操作情報として取り扱って、仮想3次元空間内におけるプレイヤキャラクタの動きに反映する。たとえば操作部材の操作情報は、プレイヤキャラクタを移動させるための情報として利用され、入力デバイス16の位置、速度、姿勢などの操作情報は、プレイヤキャラクタの腕を動かすための情報として利用されてよい。ゲーム内の戦闘シーンにおいて、入力デバイス16の動きが、武器をもつプレイヤキャラクタの動きに反映されることで、ユーザの直観的な操作が実現され、ゲームへの没入感が高められる。
【0020】
入力デバイス16の位置および姿勢をトラッキングするために、入力デバイス16には、撮像装置14によって撮影可能な複数のマーカ(光出射部)が設けられる。情報処理装置10は、入力デバイス16を撮影した画像を解析して、実空間における入力デバイス16の位置および姿勢を推定する機能(以下、「第1推定機能」とも呼ぶ)を備える。
【0021】
HMD100には、複数の撮像装置14が搭載される。複数の撮像装置14は、それぞれの撮影範囲を足し合わせた全体の撮影範囲がユーザの視野の全てを含むように、HMD100の前面の異なる位置に異なる姿勢で取り付けられる。撮像装置14は、入力デバイス16の複数のマーカの像を取得できるイメージセンサを備える。たとえばマーカが可視光を出射する場合、撮像装置14はCCD(Charge Coupled Device)センサやCMOS(Complementary Metal Oxide Semiconductor)センサなど、一般的なデジタルビデオカメラで利用されている可視光センサを有する。マーカが非可視光を出射する場合、撮像装置14は非可視光センサを有する。複数の撮像装置14は同期したタイミングで、ユーザの前方を所定の周期(たとえば120フレーム/秒)で撮影し、実空間を撮影した画像データを情報処理装置10に送信する。
【0022】
情報処理装置10は第1推定機能を実施して、撮影画像に含まれる入力デバイス16の複数のマーカ像の位置を特定する。なお1つの入力デバイス16が同じタイミングで複数の撮像装置14に撮影されることもあるが、撮像装置14の取付位置および取付姿勢は既知であるため、情報処理装置10は複数の撮影画像を合成して、マーカ像の位置を特定してよい。
【0023】
入力デバイス16の3次元形状と、その表面に配置された複数のマーカの位置座標は既知であり、情報処理装置10は、撮影画像内の複数のマーカ像の位置座標にもとづいて、入力デバイス16の実空間における位置および姿勢を推定する。入力デバイス16の位置は、基準位置を原点とした3次元空間におけるワールド座標における座標値として推定され、基準位置はゲーム開始前に設定した位置座標(緯度、経度、高度(標高))であってよい。
【0024】
本実施形態の情報処理装置10は、入力デバイス16から送信されるセンサデータを解析して、実空間における入力デバイス16の位置および姿勢を推定する機能(以下、「第2推定機能」とも呼ぶ)を備える。情報処理装置10は、第1推定機能による推定結果と、第2推定機能による推定結果を用いて、入力デバイス16の位置および姿勢を導出する。本実施形態の情報処理装置10は、カルマンフィルタを用いた状態推定技術を利用して、第1推定機能による推定結果と第2推定機能による推定結果とを統合することで、現在時刻における入力デバイス16の状態を高精度に推定する。
【0025】
図2は、HMD100の外観形状の例を示す。HMD100は、出力機構部102および装着機構部104から構成される。装着機構部104は、ユーザが被ることにより頭部を一周してHMD100を頭部に固定する装着バンド106を含む。装着バンド106はユーザの頭囲に合わせて長さの調節が可能な素材または構造をもつ。
【0026】
出力機構部102は、HMD100をユーザが装着した状態において左右の目を覆う形状の筐体108を含み、内部には装着時に目に正対する表示パネルを備える。表示パネルは液晶パネルや有機ELパネルなどであってよい。筐体108内部にはさらに、表示パネルとユーザの目との間に位置し、ユーザの視野角を拡大する左右一対の光学レンズが備えられる。HMD100はさらに、ユーザの耳に対応する位置にスピーカーやイヤホンを備えてよく、外付けのヘッドホンが接続されるように構成されてもよい。
【0027】
筐体108の前方側外面には、複数の撮像装置14a、14b、14c、14dが備えられる。ユーザの顔正面方向を基準として、撮像装置14aは、カメラ光軸が右斜め上を向くように前方側外面の右上隅に取り付けられ、撮像装置14bは、カメラ光軸が左斜め上を向くように前方側外面の左上隅に取り付けられ、撮像装置14cは、カメラ光軸が右斜め下を向くように前方側外面の右下隅に取り付けられ、撮像装置14dは、カメラ光軸が左斜め下を向くように前方側外面の左下隅に取り付けられる。このように複数の撮像装置14が設置されることで、それぞれの撮影範囲を足し合わせた全体の撮影範囲がユーザの視野の全てを含む。このユーザの視野は、3次元仮想空間におけるユーザの視野であってよい。
【0028】
HMD100は、IMU(慣性計測装置)が検出したセンサデータおよび撮像装置14が撮影した画像データを情報処理装置10に送信し、また情報処理装置10で生成されたゲーム画像データおよびゲーム音声データを受信する。
【0029】
図3は、HMD100の機能ブロックを示す。制御部120は、画像データ、音声データ、センサデータなどの各種データや、命令を処理して出力するメインプロセッサである。記憶部122は、制御部120が処理するデータや命令などを一時的に記憶する。IMU124は、HMD100の動きに関するセンサデータを取得する。IMU124は、少なくとも3軸の加速度センサおよび3軸の角速度センサを含んでよい。IMU124は、所定の周期(たとえば800Hz)で各軸成分の値(センサデータ)を検出する。
【0030】
通信制御部128は、ネットワークアダプタまたはアンテナを介して、有線または無線通信により、制御部120から出力されるデータを外部の情報処理装置10に送信する。また通信制御部128は、情報処理装置10からデータを受信し、制御部120に出力する。
【0031】
制御部120は、ゲーム画像データやゲーム音声データを情報処理装置10から受け取ると、表示パネル130に供給して表示させ、また音声出力部132に供給して音声出力させる。表示パネル130は、左目用表示パネル130aと右目用表示パネル130bから構成され、各表示パネルに一対の視差画像が表示される。また制御部120は、IMU124からのセンサデータ、マイク126からの音声データ、撮像装置14からの撮影画像データを、通信制御部128から情報処理装置10に送信させる。
【0032】
図4(a)は、左手用の入力デバイス16aの形状を示す。左手用の入力デバイス16aは、ケース体20と、ユーザが操作する複数の操作部材22a、22b、22c、22d(以下、特に区別しない場合は「操作部材22」と呼ぶ)と、ケース体20の外部に光を出射する複数のマーカ30とを備える。マーカ30は断面円形の出射部を有してよい。操作部材22は、傾動操作するアナログスティック、押下式ボタンなどを含んでよい。ケース体20は、把持部21と、ケース体頭部とケース体底部とを連結する湾曲部23を有し、ユーザは湾曲部23に左手を入れて、把持部21を把持する。ユーザは把持部21を把持した状態で、左手の親指を用いて、操作部材22a、22b、22c、22dを操作する。
【0033】
図4(b)は、右手用の入力デバイス16bの形状を示す。右手用の入力デバイス16bは、ケース体20と、ユーザが操作する複数の操作部材22e、22f、22g、22h(以下、特に区別しない場合は「操作部材22」と呼ぶ)と、ケース体20の外部に光を出射する複数のマーカ30とを備える。操作部材22は、傾動操作するアナログスティック、押下式ボタンなどを含んでよい。ケース体20は、把持部21と、ケース体頭部とケース体底部とを連結する湾曲部23を有し、ユーザは湾曲部23に右手を入れて、把持部21を把持する。ユーザは把持部21を把持した状態で、右手の親指を用いて、操作部材22e、22f、22g、22hを操作する。
【0034】
図5は、右手用の入力デバイス16bの形状を示す。入力デバイス16bは、
図4(b)で示した操作部材22e、22f、22g、22hに加えて、操作部材22i、22jを有する。ユーザは把持部21を把持した状態で、右手の人差し指を用いて操作部材22iを操作し、中指を用いて操作部材22jを操作する。以下、入力デバイス16aと入力デバイス16bとを特に区別しない場合、「入力デバイス16」と呼ぶ。
【0035】
入力デバイス16に設けられた操作部材22は、押さなくても、触れるだけで指を認識するタッチセンス機能を搭載してよい。右手用の入力デバイス16bに関して言えば、操作部材22f、22g、22jが、静電容量式タッチセンサを備えてよい。なおタッチセンサは他の操作部材22に搭載されてもよいが、入力デバイス16をテーブルなどの載置面に置いた際に、タッチセンサが載置面に接触することのない操作部材22に搭載されることが好ましい。
【0036】
マーカ30は、ケース体20の外部に光を出射する光出射部であり、ケース体20の表面において、LED(Light Emitting Diode)素子などの光源からの光を外部に拡散出射する樹脂部を含む。マーカ30は撮像装置14により撮影されて、入力デバイス16のトラッキング処理に利用される。
【0037】
情報処理装置10は、撮像装置14による撮影画像を、入力デバイス16のトラッキング処理と、HMD100のSLAM(Simultaneous Localization and Mapping)処理に利用する。本実施形態では撮像装置14が120フレーム/秒で撮影する画像のうち、60フレーム/秒で撮影されるグレースケール画像が、入力デバイス16のトラッキング処理に利用され、60フレーム/秒で撮影される別のフルカラー画像が、HMD100の自己位置推定および環境地図作成を同時実行する処理に利用されてよい。
【0038】
図6は、入力デバイス16を撮影した画像の一部の例を示す。この画像は、右手で把持された入力デバイス16bを撮影した画像であり、光を出射する複数のマーカ30の像が含まれる。HMD100において、通信制御部128は、撮像装置14が撮影した画像データをリアルタイムで情報処理装置10に送信する。
【0039】
図7は、入力デバイス16の機能ブロックを示す。制御部50は、操作部材22に入力された操作情報を受け付ける。また制御部50は、IMU(慣性計測装置)32により検出されたセンサデータとタッチセンサ24により検出されたセンサデータを受け付ける。上述したようにタッチセンサ24は、複数の操作部材22のうちの少なくとも一部に取り付けられ、ユーザの指が操作部材22に接触している状態を検知する。
【0040】
IMU32は、入力デバイス16の動きに関するセンサデータを取得し、少なくとも3軸の加速度データを検出する加速度センサ34と、3軸の角速度データを検出する角速度センサ36を含む。加速度センサ34および角速度センサ36は、所定の周期(たとえば800Hz)で各軸成分の値(センサデータ)を検出する。制御部50は、受け付けた操作情報およびセンサデータを通信制御部54に供給し、通信制御部54は、ネットワークアダプタまたはアンテナを介して有線または無線通信により、操作情報およびセンサデータを情報処理装置10に送信する。
【0041】
入力デバイス16は、複数のマーカ30を点灯するための複数の光源58を備える。光源58は、所定の色で発光するLED素子であってよい。通信制御部54が情報処理装置10から発光指示を取得すると、制御部50は発光指示にもとづいて光源58を発光させ、マーカ30を点灯させる。なお
図7に示す例では、1つのマーカ30に対して1つの光源58が設けられているが、1つの光源58が複数のマーカ30を点灯させてもよい。
【0042】
図8は、情報処理装置10の機能ブロックを示す。情報処理装置10はコンピュータを備え、コンピュータがプログラムを実行することによって、
図8に示す様々な機能が実現される。コンピュータは、プログラムをロードするメモリ、ロードされたプログラムを実行する1つ以上のプロセッサ、補助記憶装置、その他のLSIなどをハードウェアとして備える。プロセッサは、半導体集積回路やLSIを含む複数の電子回路により構成され、複数の電子回路は、1つのチップ上に搭載されてよく、または複数のチップ上に搭載されてもよい。
図8に示す機能ブロックは、ハードウェアとソフトウェアとの連携によって実現され、したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは、当業者には理解されるところである。
【0043】
本実施の形態において情報処理装置10は、撮像装置14を備えるデバイスであるHMD100の位置や姿勢をトラッキングするとともに、その撮影画像を利用して、その他のデバイスである入力デバイス16をトラッキングすることを基本とする。これらのデバイスはユーザの身に装着され、またはユーザに把持されることにより、位置や姿勢が変化し得る点で共通するが、撮像装置14を備えるか否かに依存してトラッキング手法、ひいては結果の取得特性に差が生じる。
【0044】
つまり撮像装置14を備えるデバイスは基本的には、SLAM等の技術によりそれ自体の状態によらずトラッキングが可能であるのに対し、被写体であるデバイスは、画角から逸脱している期間のトラッキングが困難になる。このため情報処理装置10は、例えば前者のデバイスの位置や姿勢を基準として、人の骨格モデルに基づき後者のデバイスの位置や姿勢を推定する機能を有する。
【0045】
本実施の形態では、前者のデバイスとしてHMD100、後者のデバイスとして入力デバイス16を例に説明するが、各デバイスの種類は特に限定されず、それぞれを「第1デバイス」、「第2デバイス」と表現することができる。第1デバイスおよび第2デバイスは、身体の部位のいずれに装着(把持を含む)されてもよい。また第1デバイスの状態取得の手段も、基準として用いることができる程度に継続的なトラッキングが可能な限り特に限定されない。
【0046】
情報処理装置10は、処理部200および通信部202を備え、処理部200は、データ取得部210、ゲーム実行部220、画像信号処理部222、マーカ情報保持部224、状態保持部226、第1デバイス情報取得部269、第2デバイス情報取得部230を備える。通信部202は、入力デバイス16から送信される操作部材22の操作情報およびセンサデータを受信し、データ取得部210に供給する。また通信部202は、HMD100から送信される撮影画像データおよびセンサデータを受信し、データ取得部210に供給する。データ取得部210は、撮影画像取得部212、センサデータ取得部214および操作情報取得部216を備える。
【0047】
(SLAM機能)
撮影画像取得部212は、HMD100のSLAM処理用のフルカラー画像を取得し、第1デバイス情報取得部269の画像信号処理部268に供給する。画像信号処理部268は、画像データにノイズ低減や光学補正(シェーディング補正)などの画像信号処理を施し、画像信号処理した画像データをSLAM処理部270に供給する。
【0048】
センサデータ取得部214は、HMD100から送信されるセンサデータを取得し、SLAM処理部270に供給する。SLAM処理部270は、撮影画像取得部212から供給される画像データと、センサデータ取得部214から供給されるセンサデータにもとづいて、HMD100の自己位置推定および環境地図作成を同時実行する。
【0049】
(撮影画像を用いる第1推定機能)
撮影画像取得部212は、入力デバイス16のトラッキング処理用のグレースケール画像を取得し、画像信号処理部222に供給する。画像信号処理部222は、画像データにノイズ低減や光学補正(シェーディング補正)などの画像信号処理を施し、画像信号処理した画像データを、第2デバイス情報取得部230の第1推定処理部240に供給する。
【0050】
第1推定処理部240は、マーカ像座標特定部242、位置姿勢導出部244、部位位置推定部246およびノイズ導出部248を備え、入力デバイス16を撮影した画像にもとづいて入力デバイス16の位置および姿勢を推定する第1推定機能を実現する。第1推定処理部240は、撮影画像から入力デバイス16の複数のマーカ30を撮影したマーカ像を抽出し、抽出した複数のマーカ像の配置から、入力デバイス16の位置および姿勢を推定する。第1推定処理部240は、推定した入力デバイス16の位置および姿勢を、そのノイズ(誤差)の分散とともに、第3推定処理部260に出力する。
【0051】
なお後述するように、入力デバイス16が撮影画像の画角から逸脱する状況に備え、センサデータ取得部214は、HMD100および入力デバイス16から送信されるセンサデータも、第1推定処理部240に供給する。当該センサデータは、骨格の可動範囲から入力デバイス16の位置や姿勢を推定するのに用いられるほか、骨格モデルを設定する際の、頭部に対する身体の向きの制御にも用いられる。
【0052】
(センサデータを用いる第2推定機能)
センサデータ取得部214は、入力デバイス16から送信されるセンサデータを取得し、第2推定処理部250に供給する。第2推定処理部250は、入力デバイス16の加速度および角速度を示すセンサデータにもとづいて、入力デバイス16の位置および姿勢を推定する第2推定機能を実現する。本実施形態において、第2推定機能はカルマンフィルタにおける状態予測ステップを実施する機能であり、第2推定処理部250は、前回の時刻における状態ベクトル(位置、速度、姿勢)に、供給されたセンサデータを積分演算することで得られる状態ベクトルの変化量を加算することで、今回の時刻における状態ベクトルを推定する。第2推定処理部250は、推定した状態ベクトルを、そのノイズの分散とともに、第3推定処理部260に出力する。なお積分演算により得られる変化量は、時間経過とともにノイズが蓄積するため、第2推定処理部250により推定される状態ベクトル(位置、速度、姿勢)は、実際の状態ベクトル(位置、速度、姿勢)から離れていく傾向がある。
【0053】
(推定結果の統合機能)
第3推定処理部260は、第1推定処理部240が推定した入力デバイス16の位置および姿勢と、第2推定処理部250が推定した入力デバイス16の状態ベクトル(位置、速度、姿勢)から、入力デバイス16の位置および姿勢を高精度に導出する。第3推定処理部260は、UKF(無香料カルマンフィルタ)のフィルタリングステップ(補正ステップ)を実施してよい。第3推定処理部260は、第2推定処理部250が推定した状態ベクトルを「事前推定値」として取得し、第1推定処理部240が推定した位置および姿勢を「観測値」として取得して、カルマンゲインを算出し、カルマンゲインを用いて「事前推定値」を補正した「事後推定値」を求める。「事後推定値」は、入力デバイス16の位置および姿勢を高精度に表現し、ゲーム実行部220に提供されるとともに、状態保持部226に記録されて、第2推定処理部250における次の時刻の状態ベクトルの推定に利用される。
【0054】
撮像装置14やIMU32など複数のセンサを用いた解析結果を統合して精度を高める手法はセンサフュージョンとして知られている。センサフュージョンにおいては、各センサによりデータが取得された時刻を共通の時間軸で表現する必要がある。情報処理システム1においては、撮像装置14の撮像周期とIMU32のサンプリング周期が異なり、また非同期であるため、画像の撮影時刻と、加速度および角速度の検出時刻とを正確に管理することで、第3推定処理部260は、入力デバイス16の位置および姿勢を高精度に推定することが可能となる。
【0055】
操作情報取得部216は、入力デバイス16から送信される操作情報を取得し、ゲーム実行部220に供給する。ゲーム実行部220は、操作情報と、第2デバイス情報取得部230により取得された入力デバイス16の位置姿勢情報にもとづいて、ゲームを進行する。
【0056】
図9は、第1推定処理部240による位置姿勢推定処理を示すフローチャートである。撮影画像取得部212は、入力デバイス16を撮影した画像データを取得して(S10)、画像信号処理部222に供給する。画像信号処理部222は、画像データにノイズ低減や光学補正などの画像信号処理を施し(S12)、画像信号処理した画像データをマーカ像座標特定部242に供給する。
【0057】
マーカ像座標特定部242は、撮影画像に含まれる複数のマーカ像の代表座標を特定する(S14)。グレースケール画像の各画素の輝度が8ビットで表現されて、0~255の輝度値をとる場合、マーカ像は、
図6に示すように高輝度をもつ像として撮影される。マーカ像座標特定部242は、撮影画像から、所定値以上の輝度値(たとえば128輝度値)をもつ画素が連続する領域を特定し、その連続画素領域の重心座標を算出して、マーカ像の代表座標を特定してよい。
【0058】
なお撮影画像には、マーカ像だけでなく、電灯などの照明機器の像も含まれている。そこでマーカ像座標特定部242は、いくつかの所定の基準に照らし合わせて、所定値以上の輝度値をもつ連続画素領域がマーカ像に対応するか調査する。たとえば連続画素領域が大きすぎる場合や、長尺形状である場合には、当該連続画素領域はマーカ像に対応しないことが確実であるため、マーカ像座標特定部242は、そのような連続画素領域がマーカ像ではないことを判断してよい。マーカ像座標特定部242は、所定の基準を満たす連続画素領域の重心座標を算出して、マーカ像の代表座標(マーカ像座標)として特定し、特定した代表座標をメモリ(図示せず)に記憶する。
【0059】
マーカ情報保持部224は、基準位置および基準姿勢にある入力デバイス16の3次元モデルにおける各マーカの3次元座標を保持している。3次元の形状および大きさが既知である物体の撮影画像から、それを撮影した撮像装置の位置および姿勢を推定する手法として、PNP(Perspective n-Point)問題を解く方法が知られている。
【0060】
本実施形態において位置姿勢導出部244は、N(Nは3以上の整数)個のマーカ像座標をメモリ(図示せず)から読み出し、読み出したN個のマーカ像座標と、入力デバイス16の3次元モデルにおけるN個のマーカの3次元座標から、入力デバイス16の位置および姿勢を推定する。位置姿勢導出部244は、以下の(式1)を用いて撮像装置14の位置および姿勢を推定し、その推定結果をもとに入力デバイス16の3次元空間の位置および姿勢を導出する。
【0061】
【0062】
ここで(u,v)は撮影画像におけるマーカ像座標であり、(X,Y,Z)は、入力デバイス16の3次元モデルが基準位置および基準姿勢にあるときのマーカ30の3次元空間での位置座標である。なお3次元モデルは、入力デバイス16と完全に同一の形状および大きさをもち、マーカを同一位置に配置したモデルであり、マーカ情報保持部224は、基準位置および基準姿勢にある3次元モデルにおける各マーカの3次元座標を保持している。位置姿勢導出部244は、マーカ情報保持部224から各マーカの3次元座標を読み出して、(X,Y,Z)を取得する。
【0063】
(fx、fy)は撮像装置14の焦点距離、(cx、cy)は画像主点であり、いずれも撮像装置14の内部パラメータである。r11~r33、t1~t3を要素とする行列は、回転・並進行列である。(式1)において(u,v)、(fx、fy)、(cx、cy)、(X,Y,Z)は既知であり、位置姿勢導出部244は、N個のマーカ30について方程式を解くことにより、それらに共通の回転・並進行列を求める。本実施形態では、入力デバイス16の位置姿勢を推定する処理を、P3P問題を解くことで実施する。
【0064】
具体的に位置姿勢導出部244は、マーカ像座標特定部242により特定された複数のマーカ像座標の中から、任意の3個のマーカ像座標を抽出する。位置姿勢導出部244は、マーカ情報保持部224から3次元モデルにおけるマーカの3次元座標を読み出し、(式1)を用いてP3P問題を解く。位置姿勢導出部244は、抽出された3個のマーカ像座標に共通する回転・並進行列を特定すると、抽出した3個のマーカ像座標以外の入力デバイス16のマーカ像座標を用いて再投影誤差を算出する。
【0065】
位置姿勢導出部244は、3個のマーカ像座標の組合せを所定数抽出する。位置姿勢導出部244は、抽出された3個のマーカ像座標のそれぞれの組合せに対して回転・並進行列を特定し、それぞれの再投影誤差を算出する。それから位置姿勢導出部244は、所定数の再投影誤差の中から最小の再投影誤差となる回転・並進行列を特定して、入力デバイス16の位置および姿勢を導出する(S16)。
【0066】
ノイズ導出部248は、推定した位置および姿勢のそれぞれのノイズ(誤差)の分散を導出する(S18)。ノイズの分散値は、推定した位置および姿勢の信頼度に対応し、信頼度が高ければ分散値は小さく、信頼度が低ければ分散値は大きくなる。ノイズ導出部248は、撮像装置14と入力デバイス16の間の距離や、画角内におけるマーカ像の位置にもとづいて、ノイズの分散を導出してよい。たとえば撮像装置14と入力デバイス16とが遠く離れている、または極端に近い場合や、マーカ像が撮影画像の端に位置するような場合は、正確なマーカ像の重心座標を導出することが難しくなるため、ノイズ分散は大きく導出される傾向がある。
【0067】
なおトラッキング処理中(第1推定機能の実施中)に推定する位置および姿勢の信頼度が高いことは確実であるため、ノイズ導出部248は、推定位置および推定姿勢のそれぞれのノイズの分散を、小さい固定値に設定してもよい。たとえばノイズ導出部248は、トラッキング処理中の位置ノイズの分散を固定値である「0.5mm」に設定して、第3推定処理部260に供給してもよい。トラッキング処理中、第1推定処理部240は、推定した位置および姿勢の情報とともに、位置ノイズおよび姿勢ノイズの分散を第3推定処理部260に出力してよいが、位置ノイズおよび姿勢ノイズの分散が固定値である場合には、トラッキング処理の開始時にノイズの分散を第3推定処理部260に一回出力して、第3推定処理部260がノイズの分散を記憶して使用してもよい。
【0068】
第1推定処理部240による位置姿勢推定処理は、入力デバイス16のトラッキング用画像の撮像周期(60フレーム/秒)で実施される(S20のN)。ゲーム実行部220がゲームを終了すると、第1推定処理部240による位置姿勢推定処理は終了する(S20のY)。
【0069】
図10は、第2デバイス情報取得部230の内部構成を示す。時刻kにおいて、第1推定処理部240は、推定した位置および姿勢を「観測値n
k」、位置ノイズおよび姿勢ノイズの分散を「観測ノイズR
k」として、第3推定処理部260に出力する。
・ 観測値n
k : 時刻kの観測ベクトル
・ 観測ノイズR
k : 時刻kの観測値の誤差共分散行列
【0070】
第2推定処理部250は、1時刻前(時刻k-1)の「状態ベクトルmk-1|k-1」および「推定誤差Pk-1|k-1」を状態保持部226から読み出し、「状態ベクトルmk-1|k-1」および「推定誤差Pk-1|k-1」を予測部に入力する。本実施形態の状態変数mは、入力デバイス16の位置、速度、姿勢を含むが、さらに加速度バイアス、角速度バイアスを含んでもよい。
・ 状態ベクトルmk-1|k-1 : 時刻k-1までの情報で推定した時刻k-1の状態ベクトル
・ 推定誤差Pk-1|k-1 : 時刻k-1までの情報で推定した時刻k-1の状態の推定誤差共分散行列
【0071】
また第2推定処理部250は、センサデータ取得部214から、入力デバイス16の加速度akと角速度ωkを取得し、加速度akと角速度ωkを「プロセス入力lk」として、予測部に入力する。
・ 加速度ak : 時刻kの加速度
・ 角速度ωk : 時刻kの角速度
・ プロセス入力lk : 時刻kのプロセス入力ベクトル
【0072】
第2推定処理部250は、加速度akと角速度ωkと、固定のノイズパラメータ(軸ずれ、スケールずれ、値ずれ、バイアスずれを含む)から、加速度ノイズの分散および角速度ノイズの分散を計算し、「プロセスノイズQk」として、予測部に入力する。
・ プロセスノイズQk : 時刻kのプロセス入力の誤差共分散行列
【0073】
予測部は、加速度akおよび角速度ωkをそれぞれ積分演算して、「状態ベクトルmk-1|k-1」からの変化量(つまり、位置変化量、速度変化量、姿勢変化量)を算出し、「状態ベクトルmk-1|k-1」に加算する演算を行う。予測部は、加速度akを積分して速度変化量を算出し、速度変化量を用いて推定される速度を積分して位置変化量を算出し、角速度ωkを積分して姿勢変化量を算出する。予測部は、「状態ベクトルmk|k-1」および「推定誤差Pk|k-1」を、第3推定処理部260に出力する。
・ 状態ベクトルmk|k-1 : 時刻k-1までの情報で推定した時刻kの状態ベクトル
・ 推定誤差Pk|k-1 : 時刻k-1までの情報で推定した時刻kの状態の推定誤差共分散行列
【0074】
第3推定処理部260は、第1推定処理部240から「観測値nk」および「観測ノイズRk」を取得し、第2推定処理部250から「状態ベクトルmk|k-1」および「推定誤差Pk|k-1」を取得して、「状態ベクトルmk|k-1」を補正するためのカルマンゲインを算出する。第3推定処理部260は、カルマンゲインを用いて「状態ベクトルmk|k-1」を補正し、「状態ベクトルmk|k」および「推定誤差Pk|k」を出力する。
・ 状態ベクトルmk|k : 時刻kまでの情報で推定した時刻kの状態ベクトル
・ 推定誤差Pk|k : 時刻kまでの情報で推定した時刻kの状態の推定誤差共分散行列
【0075】
「状態ベクトルmk|k」は、高精度に推定された位置、速度、姿勢を示し、ゲーム実行部220に提供されて、ゲーム操作に利用されてよい。「状態ベクトルmk|k」および「推定誤差Pk|k」は状態保持部226に一時的に保持されて、第2推定処理部250における時刻k+1の推定処理の際に読み出される。
【0076】
第2デバイス情報取得部230において、第1推定処理部240による推定処理は60Hzの周期で実施される一方で、第2推定処理部250による推定処理は800Hzの周期で実施される。そのため第1推定処理部240が観測値を出力してから、次の観測値を出力するまでの間に、第2推定処理部250は状態ベクトルを順次更新し、この間、状態ベクトルは補正されない。本実施形態の第2デバイス情報取得部230は、観測時刻kの直前の時刻k-1の状態を基準に補正ステップを行っており、つまり観測値を、過去の状態を修正するために利用している。
【0077】
以上のように、入力デバイス16のトラッキング処理が実施されている間は、第2デバイス情報取得部230が、入力デバイス16の位置および姿勢を高精度に推定する。しかしながら入力デバイス16のマーカ30が撮像装置14により撮影されなくなると、第1推定処理部240は、
図9に示す位置姿勢推定処理を実行できない。
【0078】
図11は、HMD100に搭載した撮像装置14の撮影可能な範囲を模式的に示す。撮像装置14はHMD100の前面側に取り付けられているため、HMD100の前方側の空間は撮影できるが、後方側の空間を撮影できない。そのためユーザが入力デバイス16を顔の後方に動かすと、入力デバイス16が撮像装置14の画角から外れることで、
図9に示した位置姿勢推定処理が実行できなくなる。
【0079】
このような場合に備えて、部位位置推定部246は、トラッキング処理の実施中に、入力デバイス16の推定位置にもとづいて、ユーザの体における所定の部位の位置を推定しておく。入力デバイス16の推定位置は、位置姿勢導出部244が推定した位置を利用しよいが、第3推定処理部260が出力する状態ベクトルに含まれる推定位置を利用してもよい。
【0080】
図12(a)は、実空間のワールド座標系におけるHMD100と入力デバイス16の推定位置の例を示す。本実施形態の情報処理装置10は、HMD100のSLAM処理および入力デバイス16a、16bのトラッキング処理を実施することで、HMD100および入力デバイス16a、16bのワールド座標系における位置および姿勢を推定している。
【0081】
図12(b)は、ユーザの体における所定の部位の位置を推定する手法を示す。部位位置推定部246は、HMD100の位置と入力デバイス16の位置から、体の部位である肘の位置を推定する。
【0082】
まず部位位置推定部246は、HMD100の位置および姿勢から、ユーザの右肩の位置H1と左肩の位置H2を推定する。HMD100が傾斜していない場合、部位位置推定部246は、HMD100の中心位置から距離d1だけ下方にある点Iを特定し、点Iから距離d2だけ右方にある位置H1を右肩位置、点Iから距離d2だけ左方にある位置H2を左肩位置と特定してよい。この距離d1、d2は固定値であってよいが、ユーザの体の大きさに合わせて設定されてもよい。
【0083】
続いて部位位置推定部246は、右肩位置H1と右手用の入力デバイス16bの位置にもとづいて、右肘の位置J1を推定する。このとき部位位置推定部246は、右肩から肘までの上腕長l1と、肘から手までの前腕長l2から、インバースキネマティクスにより右肘の位置J1を推定してよい。なお上腕長l1と、前腕長l2は固定値であってよいが、ユーザの体の大きさに合わせて設定されてもよい。
【0084】
なおインバースキネマティクスにより推定される右肘位置J1の候補は無数にあるため、部位位置推定部246は、これまでの入力デバイス16bの挙動や、入力デバイス16bとHMD100との間の距離などのパラメータにもとづいて、最も確からしい右肘位置J1を導出することが好ましい。なおHMD100と入力デバイス16bの相対的な位置関係および相対的な姿勢関係に応じて右肘位置J1を一意に導き出す関数またはマップを予め用意しておき、部位位置推定部246は、当該関数またはマップを用いて、右肘位置J1を導出してもよい。
【0085】
同様に部位位置推定部246は、左肩位置H2と左手用の入力デバイス16aの位置にもとづいて、左肘の位置J2を推定する。なお部位位置推定部246が、フルカラー撮影画像に含まれるユーザの肘位置を画像解析により特定して、ワールド座標空間における肘位置の座標を導出する機能を有していれば、当該肘位置を利用してもよい。
【0086】
図13は、入力デバイス16が撮像装置14の撮影可能範囲から外れた状態を示す。入力デバイス16が撮像装置14の画角から外れると、撮影画像にマーカ像が含まれなくなる。このときマーカ像座標特定部242は、撮影画像からマーカ像を抽出できないことを判定し、その判定結果を位置姿勢導出部244に通知する。位置姿勢導出部244は、判定結果を受けてトラッキング処理を実施不能であることを認識すると、推定モードを切り替えて、部位位置推定部246で推定された肘位置にもとづいた入力デバイス16の位置推定処理を開始する。
【0087】
位置姿勢導出部244は、部位位置推定部246から、撮影画像にマーカ像が含まれなくなる直前に(つまりトラッキングがロスト状態となる直前に)推定された肘位置を取得する。位置姿勢導出部244は、取得した肘位置を回転中心としてセンサデータに対応する回転量で回転した位置を、入力デバイス16の位置として導出する。
【0088】
図14は、肘位置を基点としてデバイス位置を推定する処理を説明するための図である。図中、×印で示す位置は、マーカ30が最後に撮影されたときに推定された入力デバイス16の位置を示し、肘位置Jは、そのときに推定された肘の位置を示す。位置姿勢導出部244は、肘位置Jを回転中心として、入力デバイス16の角速度に対応する回転量および回転方向で所定長の仮想的な前腕を回転させて、入力デバイス16の位置を導出する。
図12に示したように、肘位置Jと入力デバイス16の間の前腕の長さはl2であり、したがって位置姿勢導出部244は、トラッキングロスト状態が継続する間、肘位置Jを回転中心とした半径l2の球面上の位置を、入力デバイス16の位置として導出する。このように導出された位置は、必ずしも正確とは言えないが、トラッキングロストが生じる直前の肘位置を基点として推定されるため、ゲームを継続するには十分な精度であると言える。
【0089】
トラッキングロスト状態が継続する間、部位位置推定部246は後述するように、HMD100の動きに追従して骨格モデルを動かすことで、HMD100の位置と肘位置Jとの相対的位置関係を良好に保つことが好ましい。
【0090】
ノイズ導出部248は、トラッキングロスト中の位置ノイズの分散を導出する。ノイズ導出部248は、トラッキング処理中(撮影画像にマーカ像が含まれているとき)の位置ノイズの分散よりも、トラッキングロスト中(撮影画像にマーカ像が含まれていないとき)の位置ノイズの分散を大きく設定する。上記した例で、ノイズ導出部248は、トラッキング処理中の位置ノイズの分散を0.5mmに設定しているが、トラッキングロスト中は5mm以上の位置ノイズの分散を導出してよい。肘位置Jを回転中心とした回転量(回転角度)が大きくなるほど、推定位置の信頼度は低くなるため、ノイズ導出部248は、回転量が大きくなると、回転量が小さいときよりも大きな位置ノイズの分散を導出してもよい。たとえばトラッキングロストする直前のデバイス位置からの回転量が20度未満である場合、位置ノイズの分散を5mmに設定し、回転量が20度以上となる場合、位置ノイズの分散を50mmに設定してもよい。ノイズ導出部248は、位置ノイズの分散を、回転量の増加に応じて線形的または非線形的に大きくなるように導出してもよい。
【0091】
なお入力デバイス16が撮像装置14の画角内に移動して、撮影画像にマーカ像が含まれるようになると、マーカ像座標特定部242は、撮影画像からマーカ像を抽出し、位置姿勢導出部244は、推定モードを元に戻して、マーカ像にもとづいた位置姿勢推定処理を再開する。
【0092】
次に、トラッキングロストの状態において、HMD100の動きに対し骨格モデルを追従させる際の制御手法について説明する。
図15は、本実施の形態において、HMD100に対する骨格モデルの状態設定に係るモードを説明するための図である。図は、HMD100と骨格モデルの複数の状態を斜視図で示している。これまで述べたようにユーザが両手に把持する入力デバイス16a、16bを状態取得の対象とした場合、骨格モデルとしては、
図12(b)に示したように、両肩(位置H1、H2)と、両肘(位置J1、J2)を含む腕モデルが導入される。
【0093】
上述したように部位位置推定部246は、トラッキングロストの状態において、両肘の位置J1、J2を中心に上腕長を半径とする球面上で入力デバイス16a、16bの位置を導出する。腕モデルを導入することにより、トラッキングロスト直後における両肘の位置J1、J2の推定精度を向上できるとともに、その後、トラッキングロストの状態が継続しても、HMD100の動きから推定される身体の動きに合うように、両肘の位置J1、J2を更新できる。
【0094】
多くの場合、図の左端に示すように、ユーザの顔と身体が同じ方向を向いた状態300が自然な体勢となるため、これを仮定すれば、
図12(b)を参照して説明したように腕モデルを容易に設定できる。詳細には部位位置推定部246は、腕モデルの正面方向、すなわちベクトルvaの向きが、HMD100の正面方向、すなわちベクトルvhの向きと一致するように、また、HMD100と腕モデルの中心軸(z軸)が一致するように、腕モデルを設定すればよい。
【0095】
一方、ユーザが頭部の姿勢を変化させる際、実際にはこのような標準状態を保ったままとは限らない。すなわちユーザは、身体ごと向きを変えるのではなく、一時的に振り向いたり首をかしげたりして頭のみ姿勢を変化させることがあり得る。このような状況において常に状態300を前提に腕モデルを設定すると、肘の位置J1、J2が実際と乖離し、結果として入力デバイス16a、16bの位置や姿勢に大きな誤差が生じてしまうことが考えられる。
【0096】
そこで本実施の形態において部位位置推定部246は、頭部、ひいてはHMD100に対する腕モデルの追従の度合いを、HMD100と入力デバイス16a、16bのセンサデータに応じて変化させる。「追従の度合い」とは、腕モデルの運動を定義するパラメータのうち拘束条件を課すパラメータの数と言い換えられる。具体的には、腕モデルをHMD100の並進運動および回転運動に完全に追従させるモード(以後、「FA(Follow All)モード」と呼ぶ)と、腕モデルをHMD100の並進運動には追従させるが回転運動には追従させないモード(以後、「FT(Follow Translation)モード」と呼ぶ)とを準備し、部位位置推定部246がセンサデータに基づき切り替え制御する。
【0097】
図では状態300を初期状態とし、HMD100の回転運動発生時における腕モデルの変化を、FAモード(上段)とFTモード(下段)で比較している。まず図の中列(a)は、HMD100が頭部の鉛直方向の中心軸(z軸)周りにヨー方向の回転をした場合を示す。このとき部位位置推定部246は、FAモードでは、腕モデルをHMD100と同じ角度でヨー方向に回転させる。その結果、HMD100の正面方向のベクトルvhと腕モデルの正面方向のベクトルvaの向きは常に一致する。FTモードでは、部位位置推定部246は腕モデルを回転させない。その結果、HMD100の正面方向のベクトルvhと腕モデルの正面方向のベクトルvaには角度差が生じる。
【0098】
図の右列(b)は、HMD100が頭部の前後方向の軸周りにロール方向の回転をした場合を示す。このとき部位位置推定部246は、FAモードでは、腕モデルをHMD100と同じ角度でロール方向に回転させる。FTモードでは、部位位置推定部246は腕モデルを回転させない。図示したいずれの状態においても、そのように設定した腕モデルから両肘の位置J1、J2を取得し、それに基づき入力デバイス16a、16bの位置姿勢を導出する手法は前述のとおりでよい。また部位位置推定部246は、図示しないHMD100の並進運動成分に対しては、腕モデルも同じだけ並進運動をさせる。
【0099】
図16は部位位置推定部246の機能ブロックの構成をより詳細に示している。部位位置推定部246は、第1デバイス情報取得部310、センサデータ取得部312、モード制御部314、補正部316、および部位位置決定部318を備える。第1デバイス情報取得部310は、第1デバイス情報取得部269からHMD100の位置および姿勢に係る情報を取得する。センサデータ取得部312は、センサデータ取得部214からHMD100および入力デバイス16のセンサデータを取得する。
【0100】
モード制御部314は、HMD100および入力デバイス16のセンサデータに基づき、上述のFAモードとFTモード間でのモード切り替えを制御する。例えばモード制御部314は、センサデータが以下の(式2)を満たしている期間をFAモード、それ以外の期間をFTモードとする。
【0101】
【0102】
ここでωh、ωcはそれぞれ、ワールド座標系におけるHMD100、入力デバイス16の角速度である。(式2)によるモード制御によれば、HMD100と入力デバイス16の角速度の差が、基準より小さければ頭部と腕は同じように回転していると判断し、差が基準以上であれば頭部のみ回転していると判断していることになる。ここで基準を、HMD100自体の角速度を用いた変数とすることにより、動作スピードそのものが判定に与える影響を軽減している。
【0103】
なおモード制御部314は、左右の手に把持される2つの入力デバイス16a、16bのうち少なくともどちらかが(式2)を満たしたとき、FAモードとしてよい。これにより、腕モデルが左右で異なる挙動となったり、角速度の計測上のノイズ等により容易にFTモードへ切り替わったりするのを防ぐことができる。上述のとおり本来は、顔と身体が同じ方向を向いた状態が標準であるため、異なる方向を向いた状態を許容するFTモードへの移行や、当該状態の継続に対し比較的厳しい条件を課すことにより、確率の低い不自然な状態が作り出されないようにすることが肝要である。
【0104】
補正部316は、HMD100と腕モデルの姿勢に不自然な差が生じないように腕モデルの姿勢を補正する。具体的には補正部316はFTモードにおいて、腕モデルの回転を完全に停止させるのでなく、HMD100の向きに徐々に合わせる補正を行う。例えば補正部316は、HMD100が腕モデルに対し角度差を広げる方向に大きく回転している期間に、所定比率の小さい角速度で、同じ方向に腕モデルを回転させる。つまりHMD100の回転運動に対し所定割合での追従を許容する。これにより、HMD100と腕モデルの角度差が不自然に大きくなるのを防ぐことができる。
【0105】
補正部316はさらに、FTモードにおいて、HMD100と腕モデルの角度差を監視し、当該角度差が、あらかじめ設定された上限を超えるとき、FAモードへの切り替えをモード制御部314に要求する。例えば補正部316は、HMD100および入力デバイス16のセンサデータが以下の(式3)、(式4)の双方を満たしているか否かを監視する。
【0106】
【0107】
【0108】
(式3)のv
hf、v
cfはそれぞれ、ワールド座標系におけるHMD100、入力デバイス16の正面方向のベクトルである。前者は
図15のベクトルvhに対応し、後者は
図15のベクトルvaと同様の意味を持つ。また(式4)のa
hr、a
crはそれぞれ、HMD100、入力デバイス16の、標準状態からのロール方向の回転角である。θ
f、θ
rはそれぞれ、(式3)、(式4)の左辺の角度に与える上限であり、人の身体の可動域等に基づきあらかじめ設定しておく。一例としてθ
fは90°、θ
rは60°などとする。
【0109】
補正部316は(式3)によって、HMD100と腕モデルの正面方向の角度差がθfを越えないことを監視している。また補正部316は(式4)によって、HMD100と腕モデルのロール方向の角度差がθrを越えないことを監視している。なお補正部316は、左右の手に把持される2つの入力デバイス16a、16bのうち少なくともどちらかが(式3)、(式4)のどちらかを満たしたとき、FAモードへの切り替えを要求してもよい。モード制御部314は当該要求を受け、FTモードからFAモードへ切り替える。
【0110】
これにより、以後は、腕モデルがHMD100の回転運動に追従することになり、上限を超えた角度差が生じなくなる。例えば、身体に対する顔の向きが90°を越えたり、身体に対し頭が60°を越えて傾いだりする不自然な状況の発生を防止できる。なおHMD100および腕モデルの正面方向のベクトルのなす角や、両者のロール方向の角度差を定性的に表せる指標であれば、監視対象とするパラメータは(式3)、(式4)に限定されない。
【0111】
部位位置決定部318は、モード制御部314の制御のもとFAモード、FTモードのポリシーに従い、腕モデルをワールド座標系に設定したうえ、入力デバイス16の位置決定に用いる部位、すなわち肘の位置Jを所定周期で決定する。決定結果は位置姿勢導出部244に順次通知され、
図14を参照して説明したように入力デバイスの位置導出に用いられる。なお位置導出の対象とするデバイスを装着する身体の箇所によって、用いる骨格モデルの種類や、位置を求める部位が様々に置き換え可能であることは、当業者には理解されるところである。
【0112】
図17は、FTモードにおいて、腕モデルの正面方向をHMD100の正面方向に近づける補正部316の処理を説明するための図である。上段はHMD100および腕モデルの正面方向のベクトルの角度(ヨー角)の時間変化を例示している。この例ではHMD100が標準状態(0°)から徐々に回転した結果、実線で示したHMD100の角度350が単調増加している。FTモードでは原則として、腕モデルを当該回転に追従させないため、本来は一点鎖線で示すように、腕モデルの角度352aが一定値となる。その結果、HMD100と腕モデルの正面方向のベクトルの角度差はΔαとなる。
【0113】
一方、上述のとおり補正部316は、HMD100と腕モデルとの角度差が容易に拡大しないように、腕モデルをHMD100と同方向に所定の比率で回転させる。例えば補正部316は、図の破線で示した角度352bのような変化で腕モデルを回転させる。その結果、HMD100と腕モデルの正面方向のベクトルの角度差はΔα’(<Δα)に縮小される。ここで補正部316は、HMD100の角速度に応じて、腕モデルの補正速度(補正のための角速度)を変化させる。定性的には、HMD100の角速度が大きいときに腕モデルの補正速度を大きくする。
【0114】
図の下段は、上段に示した角度の変化をもたらす角速度の変化を示している。この例でHMD100の角速度356は、時刻t0から徐々に増加し、中盤の時刻t1で極大値をとったあとに徐々に減少する変化となる。これに対し補正部316は、腕モデルの角速度354に示すように、HMD100の角速度ωhに対し所定比率k(0<k<1.0)を乗算した角速度ωh*kで、腕モデルを同方向に回転させる。
【0115】
また補正部316は図示するように、HMD100の角速度ωhが所定のしきい値ωth以上である期間に限定して、腕モデルを角速度ωh*kで回転させてもよい。例えば補正部316は、フレームの生成周期に対し0.5°の変化をもたらす角速度をしきい値ωthとし、それ以上の角速度でHMD100が回転している期間に、当該角速度の2%の角速度で腕モデルを同方向に回転させる。
【0116】
このようにFTモードであっても、所定比率で腕モデルをHMD100の回転運動に追従させておくことにより、HMD100と腕モデルの角度差が不自然に大きな状態に到る可能性を低くできる。またHMD100が大きく動いているときに角度差の解消を図ることにより、腕モデルの状態、ひいては入力デバイス16の位置情報を、ユーザに気付かれにくい状況下で補正することができる。
【0117】
図18は、本実施の形態において部位位置推定部246が腕モデルの設定モードを制御する処理手順を示すフローチャートである。部位位置推定部246はまず、左右の手(腕)、ひいては左右の手に把持する入力デバイスを識別するパラメータ「arm」に0を代入する(S30)。例えば部位位置推定部246は、パラメータ「arm」が0のとき右手を対象とし、1のとき左手を対象とする。
【0118】
パラメータ「arm」が2未満のとき(S32のY)、部位位置推定部246は、対象の手に把持する入力デバイス16とHMD100の正面方向、ロール方向の角度差が、あらかじめ設定された上限θf、θr以下であるか否か、すなわち上述の式3、式4を満たすか否かを確認する(S34)。どちらかの角度差が上限を超えている場合(S34のN)、部位位置推定部246はFAモードとして、腕モデルをHMD100の回転運動にも追従させる(S38)。
【0119】
角度差が上限以下の場合(S34のY)、部位位置推定部246は次に、対象の手に把持する入力デバイス16とHMD100の角速度差が基準より小さいか否か、すなわち上述の式2を満たすか否かを確認する(S36)。角速度差が基準より小さい場合(S36のN)、部位位置推定部246はFAモードとして、腕モデルをHMD100の回転運動にも追従させる(S38)。
【0120】
対象の手に把持された入力デバイス16について、HMD100との角度差が上限以下であり(S34のY)、角速度差が基準以上のとき(S36のY)、部位位置推定部246はパラメータ「arm」をインクリメントし、もう一方の手に把持された入力デバイス16を対象として同じ判定処理を行う(S36、S32のY、S34、S36)。もう一方の手に把持された入力デバイス16についても、HMD100との角度差が上限以下であり(S34のY)、角速度差が基準以上のとき(S36のY)、部位位置推定部246はFTモードとして、腕モデルをHMD100の回転運動に追従させない(S32のN、S40)。
【0121】
FTモードにおいて部位位置推定部246は、HMD100が腕モデル(あるいは少なくともどちらかの入力デバイス16)に対する角度差が増す方向に回転し、その角速度ωhがしきい値ωth以上か否かを確認する(S42)。角速度ωhがしきい値ωth以上のとき(S42のY)、部位位置推定部246は、当該角速度ωhに所定比率kを乗算した角速度ωh*kでHMD100に追従するように、腕モデルを回転させる(S44)。角度差を増加させるHMD100の回転において角速度ωhがしきい値未満のときは(S42のN)、部位位置推定部246は腕モデルを回転させない。
【0122】
部位位置推定部246は図示する処理を、表示画像のフレーム周期など所定の周期で繰り返す。これにより腕モデルをHMD100の回転に追従させるか否か、あるいはその度合いを、ユーザの動きの変化に応じて細かく切り替えることができる。
【0123】
以上述べた本実施の形態によれば、HMD(第1デバイス)と、入力デバイス(第2デバイス)を把持する手などの部位との位置関係を、人の骨格モデルを利用して設定することにより、第2デバイスの位置や姿勢の情報を導出する。この際、頭と身体が一体的に動く場合と、頭のみが回転する場合とを想定し、センサデータを利用した所定の判定基準で骨格モデルの設定モードを切り替える。
【0124】
具体的には、HMDと入力デバイスの角速度の差が基準より小さいときは、HMDの並進運動、回転運動の双方に骨格モデルを追従させ、角速度の差が基準以上のときは、HMDの並進運動のみに骨格モデルを追従させる。これにより、素早く振り向く、首を傾げる、身体全体で姿勢を変える、といった実際の運動特性を考慮して骨格モデルを設定でき、部位の位置、ひいては入力デバイスの位置や姿勢の情報の精度を高められる。また、撮影画像に基づき入力デバイスをトラッキングするシステムにおいて、入力デバイスが撮像装置の画角から逸脱してもトラッキングを継続できるため、位置姿勢情報を用いた情報処理の精度も高められる。
【0125】
さらに、顔と身体が同方向を向くのが標準的な状態であることを踏まえ、骨格モデルをHMDの回転運動に追従させないモードにおいても、当該標準的な状態から乖離する方向性に対しフィルタをかける補正処理を、骨格モデルに継続的に施す。これにより、センサデータの誤差などに起因して骨格モデルが不自然な状態に到る可能性を低くし、入力デバイスの位置姿勢情報の取得精度を保つことができる。
【0126】
以上、実施形態をもとに本発明を説明した。上記本実施形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。本実施形態ではデバイスの位置や姿勢の取得を情報処理装置10が実施したが、情報処理装置10の機能がHMD100に設けられて、HMD100が情報取得を実施してもよい。つまりHMD100が、情報処理装置10であってもよい。
【0127】
本実施形態では、操作部材22を備えた入力デバイス16における複数マーカ30の配置について説明したが、トラッキングの対象となるデバイスは、必ずしも操作部材22を備えていなくてよい。本実施形態では撮像装置14がHMD100に取り付けられているが、撮像装置14は、マーカ像を撮影できればよく、HMD100以外の別の位置に取り付けられてもよい。
【符号の説明】
【0128】
1 情報処理システム、 10 情報処理装置、 14 撮像装置、 16 入力デバイス、 212 撮影画像取得部、 214 センサデータ取得部、 230 第2デバイス情報取得部、 240 第1推定処理部、 242 マーカ像座標特定部、 244 位置姿勢導出部、 246 部位位置推定部、 269 第1デバイス情報取得部、 270 SLAM処理部、 310 第1デバイス情報取得部、 312 センサデータ取得部、 314 モード制御部、 316 補正部、 318部位位置決定部。