JP2023120843A - 情報処理装置およびデバイス位置推定方法 - Google Patents
情報処理装置およびデバイス位置推定方法 Download PDFInfo
- Publication number
- JP2023120843A JP2023120843A JP2022023936A JP2022023936A JP2023120843A JP 2023120843 A JP2023120843 A JP 2023120843A JP 2022023936 A JP2022023936 A JP 2022023936A JP 2022023936 A JP2022023936 A JP 2022023936A JP 2023120843 A JP2023120843 A JP 2023120843A
- Authority
- JP
- Japan
- Prior art keywords
- estimation
- unit
- image
- captured image
- estimated
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 36
- 230000010365 information processing Effects 0.000 title claims description 61
- 238000009795 derivation Methods 0.000 claims abstract description 27
- 238000012545 processing Methods 0.000 claims description 118
- 238000003384 imaging method Methods 0.000 claims description 57
- 230000001133 acceleration Effects 0.000 claims description 20
- 230000033001 locomotion Effects 0.000 claims description 8
- 239000003550 marker Substances 0.000 description 70
- 230000006870 function Effects 0.000 description 25
- 230000008569 process Effects 0.000 description 19
- 238000004891 communication Methods 0.000 description 18
- 239000011159 matrix material Substances 0.000 description 11
- 230000003287 optical effect Effects 0.000 description 10
- 230000008859 change Effects 0.000 description 9
- 230000036544 posture Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 210000003811 finger Anatomy 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 238000012937 correction Methods 0.000 description 5
- 238000013519 translation Methods 0.000 description 5
- 239000000284 extract Substances 0.000 description 4
- 210000003128 head Anatomy 0.000 description 4
- 210000000245 forearm Anatomy 0.000 description 3
- 238000005259 measurement Methods 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 238000003705 background correction Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 210000000887 face Anatomy 0.000 description 2
- 230000004927 fusion Effects 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 210000003813 thumb Anatomy 0.000 description 2
- 206010034719 Personality change Diseases 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 210000005069 ears Anatomy 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000005484 gravity Effects 0.000 description 1
- 238000010191 image analysis Methods 0.000 description 1
- 238000007654 immersion Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000003825 pressing Methods 0.000 description 1
- 239000011347 resin Substances 0.000 description 1
- 229920005989 resin Polymers 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/033—Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
- G06F3/0346—Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor with detection of the device orientation or free movement in a 3D space, e.g. 3D mice, 6-DOF [six degrees of freedom] pointers using gyroscopes, accelerometers or tilt-sensors
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Position Input By Displaying (AREA)
- Length Measuring Devices By Optical Means (AREA)
Abstract
【課題】デバイスが撮影されなくなった場合に、デバイス位置を推定する技術を提供する。
【解決手段】撮影画像取得部212は、デバイスを撮影した画像を取得する。センサデータ取得部214は、デバイスの角速度を示すセンサデータを取得する。位置姿勢導出部244は、撮影画像にデバイスが含まれているとき、撮影画像におけるデバイスの位置座標から、三次元空間におけるデバイスの位置を導出する。部位位置推定部246は、推定したデバイスの位置にもとづいて、ユーザの体における所定の部位の位置を推定する。位置姿勢導出部244は、撮影画像にデバイスが含まれなくなると、位置姿勢導出部244が推定した部位の位置を回転中心としてセンサデータに対応する回転量で回転した位置を、デバイスの位置として導出する。
【選択図】図8
【解決手段】撮影画像取得部212は、デバイスを撮影した画像を取得する。センサデータ取得部214は、デバイスの角速度を示すセンサデータを取得する。位置姿勢導出部244は、撮影画像にデバイスが含まれているとき、撮影画像におけるデバイスの位置座標から、三次元空間におけるデバイスの位置を導出する。部位位置推定部246は、推定したデバイスの位置にもとづいて、ユーザの体における所定の部位の位置を推定する。位置姿勢導出部244は、撮影画像にデバイスが含まれなくなると、位置姿勢導出部244が推定した部位の位置を回転中心としてセンサデータに対応する回転量で回転した位置を、デバイスの位置として導出する。
【選択図】図8
Description
本発明は、ユーザが持つデバイスの位置を推定する技術に関する。
特許文献1は、複数のマーカを備えたデバイスを撮影した画像からマーカ像の代表座標を特定し、マーカ像の代表座標を用いてデバイスの位置情報および姿勢情報を導出する情報処理装置を開示する。特許文献1に開示された情報処理装置は、撮影画像において第1輝度以上の画素が連続する領域を囲む第1境界ボックスを特定するとともに、第1境界ボックス内において第1輝度よりも高い第2輝度以上の画素が連続する領域を囲む第2境界ボックスを特定し、第1境界ボックス内または第2境界ボックス内の画素にもとづいてマーカ像の代表座標を導出する。
特許文献2は、複数の発光部と複数の操作部材とを設けられた入力デバイスを開示する。入力デバイスの発光部は、ヘッドマウンティングデバイスに設けられたカメラにより撮影され、検知された発光部の位置にもとづいて、入力デバイスの位置と姿勢が算出される。
近年、デバイスの位置や姿勢をトラッキングし、VR空間の3Dモデルに反映させる情報処理技術が普及している。ゲーム空間のプレイヤキャラクタやゲームオブジェクトの動きを、トラッキング対象となるデバイスの位置や姿勢の変化に連動させることで、ユーザによる直観的な操作が実現される。
特許文献1に開示されたデバイス位置推定処理は、デバイスが撮像装置により撮影されて、撮影画像にマーカ像が含まれているときに実施される。そのためデバイスが撮像装置の画角外に移動して、撮影画像にマーカ像が含まれなくなると、特許文献1に開示されたデバイス位置推定処理は実施できない。
そこで本発明は、デバイスが撮影されなくなった場合においても、デバイス位置を推定する技術を提供することを目的とする。なおデバイスは操作部材を有する入力デバイスであってよいが、操作部材を有しない単にトラッキングの対象となるデバイスであってもよい。
上記課題を解決するために、本発明のある態様の情報処理装置は、ユーザが持つデバイスの位置を推定する情報処理装置であって、デバイスを撮影した画像を取得する撮影画像取得部と、デバイスを撮影した画像にもとづいて、デバイスの位置を推定する推定処理部と、デバイスの角速度を示すセンサデータを取得するセンサデータ取得部とを備える。推定処理部は、撮影画像にデバイスが含まれているとき、撮影画像におけるデバイスの位置座標から、三次元空間におけるデバイスの位置を導出する導出部と、推定したデバイスの位置にもとづいて、ユーザの体における所定の部位の位置を推定する部位位置推定部とを備える。導出部は、撮影画像にデバイスが含まれなくなると、部位位置推定部が推定した部位の位置を回転中心としてセンサデータに対応する回転量で回転した位置を、デバイスの位置として導出する。
本発明の別の態様の情報処理装置は、ユーザが持つデバイスの位置を推定する情報処理装置であって、デバイスを撮影した画像を取得する撮影画像取得部と、デバイスを撮影した画像にもとづいて、デバイスの位置を推定する第1推定処理部と、デバイスの加速度および/または角速度を示すセンサデータを取得するセンサデータ取得部と、センサデータにもとづいて、デバイスの位置を推定する第2推定処理部と、第1推定処理部が推定したデバイスの位置と、第2推定処理部が推定したデバイスの位置にもとづいて、デバイスの位置を導出する第3推定処理部とを備える。第1推定処理部は、撮影画像にデバイスが含まれているとき、撮影画像におけるデバイスの位置座標から、三次元空間におけるデバイスの位置を導出する導出部と、推定したデバイスの位置にもとづいて、ユーザの体における所定の部位の位置を推定する部位位置推定部とを備える。導出部は、撮影画像にデバイスが含まれなくなると、部位位置推定部が推定した部位の位置を回転中心としてセンサデータに対応する回転量で回転した位置を、デバイスの位置として導出する。
本発明の別の態様のデバイス位置推定方法は、ユーザが持つデバイスの位置を推定する方法であって、撮像装置が撮影した画像を取得するステップと、撮像装置がデバイスを撮影した画像にもとづいて、デバイスの位置を推定するステップと、推定したデバイスの位置にもとづいて、ユーザの体における所定の部位の位置を推定するステップと、デバイスの角速度を示すセンサデータを取得するステップと、撮像装置が撮影した画像にデバイスが含まれなくなると、推定した部位の位置を回転中心としてセンサデータに対応する回転量で回転した位置を、デバイスの位置として導出するステップとを有する。
本発明の別の対応のデバイス位置推定方法は、ユーザが持つデバイスの位置を推定する方法であって、撮像装置が撮影した画像を取得するステップと、撮像装置がデバイスを撮影した画像にもとづいて、デバイスの位置を推定する第1推定ステップと、デバイスの加速度および/または角速度を示すセンサデータを取得するステップと、センサデータにもとづいて、デバイスの位置を推定する第2推定ステップと、第1推定ステップで推定したデバイスの位置と、第2推定ステップで推定したデバイスの位置にもとづいて、デバイスの位置を推定する第3推定ステップと、を備える。第1推定ステップは、撮影画像にデバイスが含まれているとき、撮影画像におけるデバイスの位置座標から、三次元空間におけるデバイスの位置を推定するステップと、推定したデバイスの位置にもとづいて、ユーザの体における所定の部位の位置を推定するステップと、撮影画像にデバイスが含まれなくなると、推定した部位の位置を回転中心としてセンサデータに対応する回転量で回転した位置を、デバイスの位置として導出するステップとを有する。
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラム、コンピュータプログラムを読み取り可能に記録した記録媒体、データ構造などの間で変換したものもまた、本発明の態様として有効である。
図1は、実施例における情報処理システム1の構成例を示す。情報処理システム1は情報処理装置10と、記録装置11と、ヘッドマウントディスプレイ(HMD)100と、ユーザが持って手指で操作する入力デバイス16と、画像および音声を出力する出力装置15とを備える。出力装置15はテレビであってよい。情報処理装置10は、アクセスポイント(AP)17を介して、インターネットなどの外部のネットワーク2に接続される。AP17は無線アクセスポイントおよびルータの機能を有し、情報処理装置10はAP17とケーブルで接続してもよく、既知の無線通信プロトコルで接続してもよい。
記録装置11は、システムソフトウェアや、ゲームソフトウェアなどのアプリケーションを記録する。情報処理装置10は、コンテンツサーバからネットワーク2経由で、ゲームソフトウェアを記録装置11にダウンロードしてよい。情報処理装置10はゲームソフトウェアを実行して、ゲームの画像データおよび音声データをHMD100に供給する。情報処理装置10とHMD100とは既知の無線通信プロトコルで接続されてもよく、またケーブルで接続されてもよい。
HMD100は、ユーザが頭部に装着することによりその眼前に位置する表示パネルに画像を表示する表示装置である。HMD100は、左目用表示パネルに左目用の画像を、右目用表示パネルに右目用の画像を、それぞれ別個に表示する。これらの画像は左右の視点から見た視差画像を構成し、立体視を実現する。ユーザは光学レンズを通して表示パネルを見るため、情報処理装置10は、レンズによる光学歪みを補正した視差画像データをHMD100に供給する。
HMD100を装着したユーザにとって出力装置15は必要ないが、出力装置15を用意することで、別のユーザが出力装置15の表示画像を見ることができる。情報処理装置10は、HMD100を装着したユーザが見ている画像と同じ画像を出力装置15に表示させてもよいが、別の画像を表示させてもよい。たとえばHMDを装着したユーザと、別のユーザとが一緒にゲームをプレイするような場合、出力装置15からは、当該別のユーザのキャラクタ視点からのゲーム画像が表示されてもよい。
情報処理装置10と入力デバイス16とは既知の無線通信プロトコルで接続されてよく、またケーブルで接続されてもよい。入力デバイス16は操作ボタンなどの複数の操作部材を備え、ユーザは入力デバイス16を把持しながら、手指で操作部材を操作する。情報処理装置10がゲームを実行する際、入力デバイス16はゲームコントローラとして利用される。入力デバイス16は、3軸の加速度センサおよび3軸の角速度センサを含む慣性計測装置(IMU:Inertial Measurement Unit)を備え、所定の周期(たとえば800Hz)でセンサデータを情報処理装置10に送信する。
実施例のゲームは、入力デバイス16の操作部材の操作情報だけでなく、入力デバイス16の位置、速度、姿勢などを操作情報として取り扱って、仮想3次元空間内におけるプレイヤキャラクタの動きに反映する。たとえば操作部材の操作情報は、プレイヤキャラクタを移動させるための情報として利用され、入力デバイス16の位置、速度、姿勢などの操作情報は、プレイヤキャラクタの腕を動かすための情報として利用されてよい。ゲーム内の戦闘シーンにおいて、入力デバイス16の動きが、武器をもつプレイヤキャラクタの動きに反映されることで、ユーザの直観的な操作が実現され、ゲームへの没入感が高められる。
入力デバイス16の位置および姿勢をトラッキングするために、入力デバイス16には、撮像装置14によって撮影可能な複数のマーカ(光出射部)が設けられる。情報処理装置10は、入力デバイス16を撮影した画像を解析して、実空間における入力デバイス16の位置および姿勢を推定する機能(以下、「第1推定機能」とも呼ぶ)を備える。
HMD100には、複数の撮像装置14が搭載される。複数の撮像装置14は、それぞれの撮影範囲を足し合わせた全体の撮影範囲がユーザの視野の全てを含むように、HMD100の前面の異なる位置に異なる姿勢で取り付けられる。撮像装置14は、入力デバイス16の複数のマーカの像を取得できるイメージセンサを備える。たとえばマーカが可視光を出射する場合、撮像装置14はCCD(Charge Coupled Device)センサやCMOS(Complementary Metal Oxide Semiconductor)センサなど、一般的なデジタルビデオカメラで利用されている可視光センサを有する。マーカが非可視光を出射する場合、撮像装置14は非可視光センサを有する。複数の撮像装置14は同期したタイミングで、ユーザの前方を所定の周期(たとえば120フレーム/秒)で撮影し、実空間を撮影した画像データを情報処理装置10に送信する。
情報処理装置10は第1推定機能を実施して、撮影画像に含まれる入力デバイス16の複数のマーカ像の位置を特定する。なお1つの入力デバイス16が同じタイミングで複数の撮像装置14に撮影されることもあるが、撮像装置14の取付位置および取付姿勢は既知であるため、情報処理装置10は複数の撮影画像を合成して、マーカ像の位置を特定してよい。
入力デバイス16の3次元形状と、その表面に配置された複数のマーカの位置座標は既知であり、情報処理装置10は、撮影画像内の複数のマーカ像の位置座標にもとづいて、入力デバイス16の実空間における位置および姿勢を推定する。入力デバイス16の位置は、基準位置を原点とした3次元空間におけるワールド座標における座標値として推定され、基準位置はゲーム開始前に設定した位置座標(緯度、経度、高度(標高))であってよい。
実施例の情報処理装置10は、入力デバイス16から送信されるセンサデータを解析して、実空間における入力デバイス16の位置および姿勢を推定する機能(以下、「第2推定機能」とも呼ぶ)を備える。情報処理装置10は、第1推定機能による推定結果と、第2推定機能による推定結果を用いて、入力デバイス16の位置および姿勢を導出する。実施例の情報処理装置10は、カルマンフィルタを用いた状態推定技術を利用して、第1推定機能による推定結果と第2推定機能による推定結果とを統合することで、現在時刻における入力デバイス16の状態を高精度に推定する。
図2は、HMD100の外観形状の例を示す。HMD100は、出力機構部102および装着機構部104から構成される。装着機構部104は、ユーザが被ることにより頭部を一周してHMD100を頭部に固定する装着バンド106を含む。装着バンド106はユーザの頭囲に合わせて長さの調節が可能な素材または構造をもつ。
出力機構部102は、HMD100をユーザが装着した状態において左右の目を覆う形状の筐体108を含み、内部には装着時に目に正対する表示パネルを備える。表示パネルは液晶パネルや有機ELパネルなどであってよい。筐体108内部にはさらに、表示パネルとユーザの目との間に位置し、ユーザの視野角を拡大する左右一対の光学レンズが備えられる。HMD100はさらに、ユーザの耳に対応する位置にスピーカーやイヤホンを備えてよく、外付けのヘッドホンが接続されるように構成されてもよい。
筐体108の前方側外面には、複数の撮像装置14a、14b、14c、14dが備えられる。ユーザの顔正面方向を基準として、撮像装置14aは、カメラ光軸が右斜め上を向くように前方側外面の右上隅に取り付けられ、撮像装置14bは、カメラ光軸が左斜め上を向くように前方側外面の左上隅に取り付けられ、撮像装置14cは、カメラ光軸が右斜め下を向くように前方側外面の右下隅に取り付けられ、撮像装置14dは、カメラ光軸が左斜め下を向くように前方側外面の左下隅に取り付けられる。このように複数の撮像装置14が設置されることで、それぞれの撮影範囲を足し合わせた全体の撮影範囲がユーザの視野の全てを含む。このユーザの視野は、3次元仮想空間におけるユーザの視野であってよい。
HMD100は、IMU(慣性計測装置)が検出したセンサデータおよび撮像装置14が撮影した画像データを情報処理装置10に送信し、また情報処理装置10で生成されたゲーム画像データおよびゲーム音声データを受信する。
図3は、HMD100の機能ブロックを示す。制御部120は、画像データ、音声データ、センサデータなどの各種データや、命令を処理して出力するメインプロセッサである。記憶部122は、制御部120が処理するデータや命令などを一時的に記憶する。IMU124は、HMD100の動きに関するセンサデータを取得する。IMU124は、少なくとも3軸の加速度センサおよび3軸の角速度センサを含んでよい。IMU124は、所定の周期(たとえば800Hz)で各軸成分の値(センサデータ)を検出する。
通信制御部128は、ネットワークアダプタまたはアンテナを介して、有線または無線通信により、制御部120から出力されるデータを外部の情報処理装置10に送信する。また通信制御部128は、情報処理装置10からデータを受信し、制御部120に出力する。
制御部120は、ゲーム画像データやゲーム音声データを情報処理装置10から受け取ると、表示パネル130に供給して表示させ、また音声出力部132に供給して音声出力させる。表示パネル130は、左目用表示パネル130aと右目用表示パネル130bから構成され、各表示パネルに一対の視差画像が表示される。また制御部120は、IMU124からのセンサデータ、マイク126からの音声データ、撮像装置14からの撮影画像データを、通信制御部128から情報処理装置10に送信させる。
図4(a)は、左手用の入力デバイス16aの形状を示す。左手用の入力デバイス16aは、ケース体20と、ユーザが操作する複数の操作部材22a、22b、22c、22d(以下、特に区別しない場合は「操作部材22」と呼ぶ)と、ケース体20の外部に光を出射する複数のマーカ30とを備える。マーカ30は断面円形の出射部を有してよい。操作部材22は、傾動操作するアナログスティック、押下式ボタンなどを含んでよい。ケース体20は、把持部21と、ケース体頭部とケース体底部とを連結する湾曲部23を有し、ユーザは湾曲部23に左手を入れて、把持部21を把持する。ユーザは把持部21を把持した状態で、左手の親指を用いて、操作部材22a、22b、22c、22dを操作する。
図4(b)は、右手用の入力デバイス16bの形状を示す。右手用の入力デバイス16bは、ケース体20と、ユーザが操作する複数の操作部材22e、22f、22g、22h(以下、特に区別しない場合は「操作部材22」と呼ぶ)と、ケース体20の外部に光を出射する複数のマーカ30とを備える。操作部材22は、傾動操作するアナログスティック、押下式ボタンなどを含んでよい。ケース体20は、把持部21と、ケース体頭部とケース体底部とを連結する湾曲部23を有し、ユーザは湾曲部23に右手を入れて、把持部21を把持する。ユーザは把持部21を把持した状態で、右手の親指を用いて、操作部材22e、22f、22g、22hを操作する。
図5は、右手用の入力デバイス16bの形状を示す。入力デバイス16bは、図4(b)で示した操作部材22e、22f、22g、22hに加えて、操作部材22i、22jを有する。ユーザは把持部21を把持した状態で、右手の人差し指を用いて操作部材22iを操作し、中指を用いて操作部材22jを操作する。以下、入力デバイス16aと入力デバイス16bとを特に区別しない場合、「入力デバイス16」と呼ぶ。
入力デバイス16に設けられた操作部材22は、押さなくても、触れるだけで指を認識するタッチセンス機能を搭載してよい。右手用の入力デバイス16bに関して言えば、操作部材22f、22g、22jが、静電容量式タッチセンサを備えてよい。なおタッチセンサは他の操作部材22に搭載されてもよいが、入力デバイス16をテーブルなどの載置面に置いた際に、タッチセンサが載置面に接触することのない操作部材22に搭載されることが好ましい。
マーカ30は、ケース体20の外部に光を出射する光出射部であり、ケース体20の表面において、LED(Light Emitting Diode)素子などの光源からの光を外部に拡散出射する樹脂部を含む。マーカ30は撮像装置14により撮影されて、入力デバイス16のトラッキング処理に利用される。
情報処理装置10は、撮像装置14による撮影画像を、入力デバイス16のトラッキング処理と、HMD100のSLAM(Simultaneous Localization and Mapping)処理に利用する。実施例では撮像装置14が120フレーム/秒で撮影する画像のうち、60フレーム/秒で撮影されるグレースケール画像が、入力デバイス16のトラッキング処理に利用され、60フレーム/秒で撮影される別のフルカラー画像が、HMD100の自己位置推定および環境地図作成を同時実行する処理に利用されてよい。
図6は、入力デバイス16を撮影した画像の一部の例を示す。この画像は、右手で把持された入力デバイス16bを撮影した画像であり、光を出射する複数のマーカ30の像が含まれる。HMD100において、通信制御部128は、撮像装置14が撮影した画像データをリアルタイムで情報処理装置10に送信する。
図7は、入力デバイス16の機能ブロックを示す。制御部50は、操作部材22に入力された操作情報を受け付ける。また制御部50は、IMU(慣性計測装置)32により検出されたセンサデータとタッチセンサ24により検出されたセンサデータを受け付ける。上記したようにタッチセンサ24は、複数の操作部材22のうちの少なくとも一部に取り付けられ、ユーザの指が操作部材22に接触している状態を検知する。
IMU32は、入力デバイス16の動きに関するセンサデータを取得し、少なくとも3軸の加速度データを検出する加速度センサ34と、3軸の角速度データを検出する角速度センサ36を含む。加速度センサ34および角速度センサ36は、所定の周期(たとえば800Hz)で各軸成分の値(センサデータ)を検出する。制御部50は、受け付けた操作情報およびセンサデータを通信制御部54に供給し、通信制御部54は、ネットワークアダプタまたはアンテナを介して有線または無線通信により、操作情報およびセンサデータを情報処理装置10に送信する。
入力デバイス16は、複数のマーカ30を点灯するための複数の光源58を備える。光源58は、所定の色で発光するLED素子であってよい。通信制御部54が情報処理装置10から発光指示を取得すると、制御部50は発光指示にもとづいて光源58を発光させ、マーカ30を点灯させる。なお図7に示す例では、1つのマーカ30に対して1つの光源58が設けられているが、1つの光源58が複数のマーカ30を点灯させてもよい。
図8は、情報処理装置10の機能ブロックを示す。情報処理装置10は、処理部200および通信部202を備え、処理部200は、取得部210、ゲーム実行部220、画像信号処理部222、マーカ情報保持部224、状態保持部226、推定処理部230、画像信号処理部268およびSLAM処理部270を備える。通信部202は、入力デバイス16から送信される操作部材22の操作情報およびセンサデータを受信し、取得部210に供給する。また通信部202は、HMD100から送信される撮影画像データおよびセンサデータを受信し、取得部210に供給する。取得部210は、撮影画像取得部212、センサデータ取得部214および操作情報取得部216を備える。
情報処理装置10はコンピュータを備え、コンピュータがプログラムを実行することによって、図8に示す様々な機能が実現される。コンピュータは、プログラムをロードするメモリ、ロードされたプログラムを実行する1つ以上のプロセッサ、補助記憶装置、その他のLSIなどをハードウェアとして備える。プロセッサは、半導体集積回路やLSIを含む複数の電子回路により構成され、複数の電子回路は、1つのチップ上に搭載されてよく、または複数のチップ上に搭載されてもよい。図8に示す機能ブロックは、ハードウェアとソフトウェアとの連携によって実現され、したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは、当業者には理解されるところである。
(SLAM機能)
撮影画像取得部212は、HMD100のSLAM処理用のフルカラー画像を取得し、画像信号処理部268に供給する。画像信号処理部268は、画像データにノイズ低減や光学補正(シェーディング補正)などの画像信号処理を施し、画像信号処理した画像データをSLAM処理部270に供給する。
撮影画像取得部212は、HMD100のSLAM処理用のフルカラー画像を取得し、画像信号処理部268に供給する。画像信号処理部268は、画像データにノイズ低減や光学補正(シェーディング補正)などの画像信号処理を施し、画像信号処理した画像データをSLAM処理部270に供給する。
センサデータ取得部214は、HMD100から送信されるセンサデータを取得し、SLAM処理部270に供給する。SLAM処理部270は、撮影画像取得部212から供給される画像データと、センサデータ取得部214から供給されるセンサデータにもとづいて、HMD100の自己位置推定および環境地図作成を同時実行する。
(撮影画像を用いる第1推定機能)
撮影画像取得部212は、入力デバイス16のトラッキング処理用のグレースケール画像を取得し、画像信号処理部222に供給する。画像信号処理部222は、画像データにノイズ低減や光学補正(シェーディング補正)などの画像信号処理を施し、画像信号処理した画像データを第1推定処理部240に供給する。
撮影画像取得部212は、入力デバイス16のトラッキング処理用のグレースケール画像を取得し、画像信号処理部222に供給する。画像信号処理部222は、画像データにノイズ低減や光学補正(シェーディング補正)などの画像信号処理を施し、画像信号処理した画像データを第1推定処理部240に供給する。
第1推定処理部240は、マーカ像座標特定部242、位置姿勢導出部244、部位位置推定部246およびノイズ導出部248を備え、入力デバイス16を撮影した画像にもとづいて入力デバイス16の位置および姿勢を推定する第1推定機能を実現する。第1推定処理部240は、撮影画像から入力デバイス16の複数のマーカ30を撮影したマーカ像を抽出し、抽出した複数のマーカ像の配置から、入力デバイス16の位置および姿勢を推定する。第1推定処理部240は、推定した入力デバイス16の位置および姿勢を、そのノイズ(誤差)の分散とともに、第3推定処理部260に出力する。
(センサデータを用いる第2推定機能)
センサデータ取得部214は、入力デバイス16から送信されるセンサデータを取得し、第2推定処理部250に供給する。第2推定処理部250は、入力デバイス16の加速度および角速度を示すセンサデータにもとづいて、入力デバイス16の位置および姿勢を推定する第2推定機能を実現する。実施例において、第2推定機能はカルマンフィルタにおける状態予測ステップを実施する機能であり、第2推定処理部250は、前回の時刻における状態ベクトル(位置、速度、姿勢)に、供給されたセンサデータを積分演算することで得られる状態ベクトルの変化量を加算することで、今回の時刻における状態ベクトルを推定する。第2推定処理部250は、推定した状態ベクトルを、そのノイズの分散とともに、第3推定処理部260に出力する。なお積分演算により得られる変化量は、時間経過とともにノイズが蓄積するため、第2推定処理部250により推定される状態ベクトル(位置、速度、姿勢)は、実際の状態ベクトル(位置、速度、姿勢)から離れていく傾向がある。
センサデータ取得部214は、入力デバイス16から送信されるセンサデータを取得し、第2推定処理部250に供給する。第2推定処理部250は、入力デバイス16の加速度および角速度を示すセンサデータにもとづいて、入力デバイス16の位置および姿勢を推定する第2推定機能を実現する。実施例において、第2推定機能はカルマンフィルタにおける状態予測ステップを実施する機能であり、第2推定処理部250は、前回の時刻における状態ベクトル(位置、速度、姿勢)に、供給されたセンサデータを積分演算することで得られる状態ベクトルの変化量を加算することで、今回の時刻における状態ベクトルを推定する。第2推定処理部250は、推定した状態ベクトルを、そのノイズの分散とともに、第3推定処理部260に出力する。なお積分演算により得られる変化量は、時間経過とともにノイズが蓄積するため、第2推定処理部250により推定される状態ベクトル(位置、速度、姿勢)は、実際の状態ベクトル(位置、速度、姿勢)から離れていく傾向がある。
(推定結果の統合機能)
第3推定処理部260は、第1推定処理部240が推定した入力デバイス16の位置および姿勢と、第2推定処理部250が推定した入力デバイス16の状態ベクトル(位置、速度、姿勢)から、入力デバイス16の位置および姿勢を高精度に導出する。第3推定処理部260は、UKF(無香料カルマンフィルタ)のフィルタリングステップ(補正ステップ)を実施してよい。第3推定処理部260は、第2推定処理部250が推定した状態ベクトルを「事前推定値」として取得し、第1推定処理部240が推定した位置および姿勢を「観測値」として取得して、カルマンゲインを算出し、カルマンゲインを用いて「事前推定値」を補正した「事後推定値」を求める。「事後推定値」は、入力デバイス16の位置および姿勢を高精度に表現し、ゲーム実行部220に提供されるとともに、状態保持部226に記録されて、第2推定処理部250における次の時刻の状態ベクトルの推定に利用される。
第3推定処理部260は、第1推定処理部240が推定した入力デバイス16の位置および姿勢と、第2推定処理部250が推定した入力デバイス16の状態ベクトル(位置、速度、姿勢)から、入力デバイス16の位置および姿勢を高精度に導出する。第3推定処理部260は、UKF(無香料カルマンフィルタ)のフィルタリングステップ(補正ステップ)を実施してよい。第3推定処理部260は、第2推定処理部250が推定した状態ベクトルを「事前推定値」として取得し、第1推定処理部240が推定した位置および姿勢を「観測値」として取得して、カルマンゲインを算出し、カルマンゲインを用いて「事前推定値」を補正した「事後推定値」を求める。「事後推定値」は、入力デバイス16の位置および姿勢を高精度に表現し、ゲーム実行部220に提供されるとともに、状態保持部226に記録されて、第2推定処理部250における次の時刻の状態ベクトルの推定に利用される。
撮像装置14やIMU32など複数のセンサを用いた解析結果を統合して精度を高める手法はセンサフュージョンとして知られている。センサフュージョンにおいては、各センサによりデータが取得された時刻を共通の時間軸で表現する必要がある。情報処理システム1においては、撮像装置14の撮像周期とIMU32のサンプリング周期が異なり、また非同期であるため、画像の撮影時刻と、加速度および角速度の検出時刻とを正確に管理することで、第3推定処理部260は、入力デバイス16の位置および姿勢を高精度に推定することが可能となる。
操作情報取得部216は、入力デバイス16から送信される操作情報を取得し、ゲーム実行部220に供給する。ゲーム実行部220は、操作情報と、推定処理部230により推定された入力デバイス16の位置姿勢情報にもとづいて、ゲームを進行する。
図9は、第1推定処理部240による位置姿勢推定処理を示すフローチャートである。撮影画像取得部212は、入力デバイス16を撮影した画像データを取得して(S10)、画像信号処理部222に供給する。画像信号処理部222は、画像データにノイズ低減や光学補正などの画像信号処理を施し(S12)、画像信号処理した画像データをマーカ像座標特定部242に供給する。
マーカ像座標特定部242は、撮影画像に含まれる複数のマーカ像の代表座標を特定する(S14)。グレースケール画像の各画素の輝度が8ビットで表現されて、0~255の輝度値をとる場合、マーカ像は、図6に示すように高輝度をもつ像として撮影される。マーカ像座標特定部242は、撮影画像から、所定値以上の輝度値(たとえば128輝度値)をもつ画素が連続する領域を特定し、その連続画素領域の重心座標を算出して、マーカ像の代表座標を特定してよい。
なお撮影画像には、マーカ像だけでなく、電灯などの照明機器の像も含まれている。そこでマーカ像座標特定部242は、いくつかの所定の基準に照らし合わせて、所定値以上の輝度値をもつ連続画素領域がマーカ像に対応するか調査する。たとえば連続画素領域が大きすぎる場合や、長尺形状である場合には、当該連続画素領域はマーカ像に対応しないことが確実であるため、マーカ像座標特定部242は、そのような連続画素領域がマーカ像ではないことを判断してよい。マーカ像座標特定部242は、所定の基準を満たす連続画素領域の重心座標を算出して、マーカ像の代表座標(マーカ像座標)として特定し、特定した代表座標をメモリ(図示せず)に記憶する。
マーカ情報保持部224は、基準位置および基準姿勢にある入力デバイス16の3次元モデルにおける各マーカの3次元座標を保持している。3次元の形状および大きさが既知である物体の撮影画像から、それを撮影した撮像装置の位置および姿勢を推定する手法として、PNP(Perspective n-Point)問題を解く方法が知られている。
実施例において位置姿勢導出部244は、N(Nは3以上の整数)個のマーカ像座標をメモリ(図示せず)から読み出し、読み出したN個のマーカ像座標と、入力デバイス16の3次元モデルにおけるN個のマーカの3次元座標から、入力デバイス16の位置および姿勢を推定する。位置姿勢導出部244は、以下の(式1)を用いて撮像装置14の位置および姿勢を推定し、その推定結果をもとに入力デバイス16の3次元空間の位置および姿勢を導出する。
ここで(u,v)は撮影画像におけるマーカ像座標であり、(X,Y,Z)は、入力デバイス16の3次元モデルが基準位置および基準姿勢にあるときのマーカ30の3次元空間での位置座標である。なお3次元モデルは、入力デバイス16と完全に同一の形状および大きさをもち、マーカを同一位置に配置したモデルであり、マーカ情報保持部224は、基準位置および基準姿勢にある3次元モデルにおける各マーカの3次元座標を保持している。位置姿勢導出部244は、マーカ情報保持部224から各マーカの3次元座標を読み出して、(X,Y,Z)を取得する。
(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問題を解くことで実施する。
具体的に位置姿勢導出部244は、マーカ像座標特定部242により特定された複数のマーカ像座標の中から、任意の3個のマーカ像座標を抽出する。位置姿勢導出部244は、マーカ情報保持部224から3次元モデルにおけるマーカの3次元座標を読み出し、(式1)を用いてP3P問題を解く。位置姿勢導出部244は、抽出された3個のマーカ像座標に共通する回転・並進行列を特定すると、抽出した3個のマーカ像座標以外の入力デバイス16のマーカ像座標を用いて再投影誤差を算出する。
位置姿勢導出部244は、3個のマーカ像座標の組合せを所定数抽出する。位置姿勢導出部244は、抽出された3個のマーカ像座標のそれぞれの組合せに対して回転・並進行列を特定し、それぞれの再投影誤差を算出する。それから位置姿勢導出部244は、所定数の再投影誤差の中から最小の再投影誤差となる回転・並進行列を特定して、入力デバイス16の位置および姿勢を導出する(S16)。
ノイズ導出部248は、推定した位置および姿勢のそれぞれのノイズ(誤差)の分散を導出する(S18)。ノイズの分散値は、推定した位置および姿勢の信頼度に対応し、信頼度が高ければ分散値は小さく、信頼度が低ければ分散値は大きくなる。ノイズ導出部248は、撮像装置14と入力デバイス16の間の距離や、画角内におけるマーカ像の位置にもとづいて、ノイズの分散を導出してよい。たとえば撮像装置14と入力デバイス16とが遠く離れていたり、または極端に近い場合や、マーカ像が撮影画像の端に位置するような場合は、正確なマーカ像の重心座標を導出することが難しくなるため、ノイズ分散は大きく導出される傾向がある。
なおトラッキング処理中(第1推定機能の実施中)に推定する位置および姿勢の信頼度が高いことは確実であるため、ノイズ導出部248は、推定位置および推定姿勢のそれぞれのノイズの分散を、小さい固定値に設定してもよい。たとえばノイズ導出部248は、トラッキング処理中の位置ノイズの分散を固定値である「0.5mm」に設定して、第3推定処理部260に供給してもよい。トラッキング処理中、第1推定処理部240は、推定した位置および姿勢の情報とともに、位置ノイズおよび姿勢ノイズの分散を第3推定処理部260に出力してよいが、位置ノイズおよび姿勢ノイズの分散が固定値である場合には、トラッキング処理の開始時にノイズの分散を第3推定処理部260に一回出力して、第3推定処理部260がノイズの分散を記憶して使用してもよい。
第1推定処理部240による位置姿勢推定処理は、入力デバイス16のトラッキング用画像の撮像周期(60フレーム/秒)で実施される(S20のN)。ゲーム実行部220がゲームを終了すると、第1推定処理部240による位置姿勢推定処理は終了する(S20のY)。
図10は、推定処理部230の内部構成を示す。時刻kにおいて、第1推定処理部240は、推定した位置および姿勢を「観測値nk」、位置ノイズおよび姿勢ノイズの分散を「観測ノイズRk」として、第3推定処理部260に出力する。
・ 観測値nk : 時刻kの観測ベクトル
・ 観測ノイズRk : 時刻kの観測値の誤差共分散行列
・ 観測値nk : 時刻kの観測ベクトル
・ 観測ノイズRk : 時刻kの観測値の誤差共分散行列
第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の状態の推定誤差共分散行列
・ 状態ベクトルmk-1|k-1 : 時刻k-1までの情報で推定した時刻k-1の状態ベクトル
・ 推定誤差Pk-1|k-1 : 時刻k-1までの情報で推定した時刻k-1の状態の推定誤差共分散行列
また第2推定処理部250は、センサデータ取得部214から、入力デバイス16の加速度akと角速度ωkを取得し、加速度akと角速度ωkを「プロセス入力lk」として、予測部に入力する。
・ 加速度ak : 時刻kの加速度
・ 角速度ωk : 時刻kの角速度
・ プロセス入力lk : 時刻kのプロセス入力ベクトル
・ 加速度ak : 時刻kの加速度
・ 角速度ωk : 時刻kの角速度
・ プロセス入力lk : 時刻kのプロセス入力ベクトル
第2推定処理部250は、加速度akと角速度ωkと、固定のノイズパラメータ(軸ずれ、スケールずれ、値ずれ、バイアスずれを含む)から、加速度ノイズの分散および角速度ノイズの分散を計算し、「プロセスノイズQk」として、予測部に入力する。
・ プロセスノイズQk : 時刻kのプロセス入力の誤差共分散行列
・ プロセスノイズQk : 時刻kのプロセス入力の誤差共分散行列
予測部は、加速度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の状態の推定誤差共分散行列
・ 状態ベクトルmk|k-1 : 時刻k-1までの情報で推定した時刻kの状態ベクトル
・ 推定誤差Pk|k-1 : 時刻k-1までの情報で推定した時刻kの状態の推定誤差共分散行列
第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の状態の推定誤差共分散行列
・ 状態ベクトルmk|k : 時刻kまでの情報で推定した時刻kの状態ベクトル
・ 推定誤差Pk|k : 時刻kまでの情報で推定した時刻kの状態の推定誤差共分散行列
「状態ベクトルmk|k」は、高精度に推定された位置、速度、姿勢を示し、ゲーム実行部220に提供されて、ゲーム操作に利用されてよい。「状態ベクトルmk|k」および「推定誤差Pk|k」は状態保持部226に一時的に保持されて、第2推定処理部250における時刻k+1の推定処理の際に読み出される。
推定処理部230において、第1推定処理部240による推定処理は60Hzの周期で実施される一方で、第2推定処理部250による推定処理は800Hzの周期で実施される。そのため第1推定処理部240が観測値を出力してから、次の観測値を出力するまでの間に、第2推定処理部250は状態ベクトルを順次更新し、この間、状態ベクトルは補正されない。実施例の推定処理部230は、観測時刻kの直前の時刻k-1の状態を基準に補正ステップを行っており、つまり観測値を、過去の状態を修正するために利用している。
以上のように、入力デバイス16のトラッキング処理が実施されている間は、推定処理部230が、入力デバイス16の位置および姿勢を高精度に推定する。しかしながら入力デバイス16のマーカ30が撮像装置14により撮影されなくなると、第1推定処理部240は、図9に示す位置姿勢推定処理を実行できない。
図11は、HMD100に搭載した撮像装置14の撮影可能な範囲を模式的に示す。撮像装置14はHMD100の前面側に取り付けられているため、HMD100の前方側の空間は撮影できるが、後方側の空間を撮影できない。そのためユーザが入力デバイス16を顔の後方に動かすと、入力デバイス16が撮像装置14の画角から外れることで、図9に示した位置姿勢推定処理が実行できなくなる。
このような場合に備えて、部位位置推定部246は、トラッキング処理の実施中に、入力デバイス16の推定位置にもとづいて、ユーザの体における所定の部位の位置を推定しておく。入力デバイス16の推定位置は、位置姿勢導出部244が推定した位置を利用しよいが、第3推定処理部260が出力する状態ベクトルに含まれる推定位置を利用してもよい。
図12(a)は、実空間のワールド座標系におけるHMD100と入力デバイス16の推定位置の例を示す。実施例の情報処理装置10は、HMD100のSLAM処理および入力デバイス16a、16bのトラッキング処理を実施することで、HMD100および入力デバイス16a、16bのワールド座標系における位置および姿勢を推定している。
図12(b)は、ユーザの体における所定の部位の位置を推定する手法を示す。部位位置推定部246は、HMD100の位置と入力デバイス16の位置から、体の部位である肘の位置を推定する。
まず部位位置推定部246は、HMD100の位置および姿勢から、ユーザの右肩の位置H1と左肩の位置H2を推定する。HMD100が傾斜していない場合、部位位置推定部246は、HMD100の中心位置から距離d1だけ下方にある点Iを特定し、点Iから距離d2だけ右方にある位置H1を右肩位置、点Iから距離d2だけ左方にある位置H2を左肩位置と特定してよい。この距離d1、d2は固定値であってよいが、ユーザの体の大きさに合わせて設定されてもよい。
続いて部位位置推定部246は、右肩位置H1と右手用の入力デバイス16bの位置にもとづいて、右肘の位置J1を推定する。このとき部位位置推定部246は、右肩から肘までの上腕長l1と、肘から手までの前腕長l2から、インバースキネマティクスにより右肘の位置J1を推定してよい。なお上腕長l1と、前腕長l2は固定値であってよいが、ユーザの体の大きさに合わせて設定されてもよい。
なおインバースキネマティクスにより推定される右肘位置J1の候補は無数にあるため、部位位置推定部246は、これまでの入力デバイス16bの挙動や、入力デバイス16bとHMD100との間の距離などのパラメータにもとづいて、最も確からしい右肘位置J1を導出することが好ましい。なおHMD100と入力デバイス16bの相対的な位置関係および相対的な姿勢関係に応じて右肘位置J1を一意に導き出す関数またはマップを予め用意しておき、部位位置推定部246は、当該関数またはマップを用いて、右肘位置J1を導出してもよい。
同様に部位位置推定部246は、左肩位置H2と左手用の入力デバイス16aの位置にもとづいて、左肘の位置J2を推定する。なお部位位置推定部246が、フルカラー撮影画像に含まれるユーザの肘位置を画像解析により特定して、ワールド座標空間における肘位置の座標を導出する機能を有していれば、当該肘位置を利用してもよい。
図13は、入力デバイス16が撮像装置14の撮影可能範囲から外れた状態を示す。入力デバイス16が撮像装置14の画角から外れると、撮影画像にマーカ像が含まれなくなる。このときマーカ像座標特定部242は、撮影画像からマーカ像を抽出できないことを判定し、その判定結果を位置姿勢導出部244に通知する。位置姿勢導出部244は、判定結果を受けてトラッキング処理を実施不能であることを認識すると、推定モードを切り替えて、部位位置推定部246で推定された肘位置にもとづいた入力デバイス16の位置推定処理を開始する。
位置姿勢導出部244は、部位位置推定部246から、撮影画像にマーカ像が含まれなくなる直前に(つまりトラッキングがロスト状態となる直前に)推定された肘位置を取得する。位置姿勢導出部244は、取得した肘位置を回転中心としてセンサデータに対応する回転量で回転した位置を、入力デバイス16の位置として導出する。
図14は、肘位置を基点としてデバイス位置を推定する処理を説明するための図である。図中、×印で示す位置は、マーカ30が最後に撮影されたときに推定された入力デバイス16の位置を示し、肘位置Jは、そのときに推定された肘の位置を示す。位置姿勢導出部244は、肘位置Jを回転中心として、入力デバイス16の角速度に対応する回転量および回転方向で所定長の仮想的な前腕を回転させて、入力デバイス16の位置を導出する。図12に示したように、肘位置Jと入力デバイス16の間の前腕の長さはl2であり、したがって位置姿勢導出部244は、トラッキングロスト状態が継続する間、肘位置Jを回転中心とした半径l2の球面上の位置を、入力デバイス16の位置として導出する。このように導出された位置は、必ずしも正確とは言えないが、トラッキングロストが生じる直前の肘位置を基点として推定されるため、ゲームを継続するには十分な精度であると言える。
トラッキングロスト状態が継続する間、部位位置推定部246は、肘位置Jを、HMD100の動きに追従して動かして、HMD100の位置と肘位置Jとの相対的位置関係を固定することが好ましい。
ノイズ導出部248は、トラッキングロスト中の位置ノイズの分散を導出する。ノイズ導出部248は、トラッキング処理中(撮影画像にマーカ像が含まれているとき)の位置ノイズの分散よりも、トラッキングロスト中(撮影画像にマーカ像が含まれていないとき)の位置ノイズの分散を大きく設定する。上記した例で、ノイズ導出部248は、トラッキング処理中の位置ノイズの分散を0.5mmに設定しているが、トラッキングロスト中は5mm以上の位置ノイズの分散を導出してよい。肘位置Jを回転中心とした回転量(回転角度)が大きくなるほど、推定位置の信頼度は低くなるため、ノイズ導出部248は、回転量が大きくなると、回転量が小さいときよりも大きな位置ノイズの分散を導出してもよい。たとえばトラッキングロストする直前のデバイス位置からの回転量が20度未満である場合、位置ノイズの分散を5mmに設定し、回転量が20度以上となる場合、位置ノイズの分散を50mmに設定してもよい。ノイズ導出部248は、位置ノイズの分散を、回転量の増加に応じて線形的または非線形的に大きくなるように導出してもよい。
なお入力デバイス16が撮像装置14の画角内に移動して、撮影画像にマーカ像が含まれるようになると、マーカ像座標特定部242は、撮影画像からマーカ像を抽出し、位置姿勢導出部244は、推定モードを元に戻して、マーカ像にもとづいた位置姿勢推定処理を再開する。
以上、本発明を実施例をもとに説明した。上記実施例は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。実施例では推定処理を情報処理装置10が実施したが、情報処理装置10の機能がHMD100に設けられて、HMD100が推定処理を実施してもよい。つまりHMD100が、情報処理装置10であってもよい。
実施例では、操作部材22を備えた入力デバイス16における複数マーカ30の配置について説明したが、トラッキングの対象となるデバイスは、必ずしも操作部材22を備えていなくてよい。実施例では撮像装置14がHMD100に取り付けられているが、撮像装置14は、マーカ像を撮影できればよく、HMD100以外の別の位置に取り付けられてもよい。
1・・・情報処理システム、10・・・情報処理装置、14・・・撮像装置、16,16a,16b・・・入力デバイス、20・・・ケース体、21・・・把持部、22・・・操作部材、23・・・湾曲部、24・・・タッチセンサ、30・・・マーカ、32・・・IMU、34・・・加速度センサ、36・・・角速度センサ、50・・・制御部、54・・・通信制御部、58・・・光源、100・・・HMD、102・・・出力機構部、104・・・装着機構部、106・・・装着バンド、108・・・筐体、120・・・制御部、122・・・記憶部、124・・・IMU、126・・・マイク、128・・・通信制御部、130・・・表示パネル、130a・・・左目用表示パネル、130b・・・右目用表示パネル、132・・・音声出力部、200・・・処理部、202・・・通信部、210・・・取得部、212・・・撮影画像取得部、214・・・センサデータ取得部、216・・・操作情報取得部、220・・・ゲーム実行部、222・・・画像信号処理部、224・・・マーカ情報保持部、226・・・状態保持部、230・・・推定処理部、240・・・第1推定処理部、242・・・マーカ像座標特定部、244・・・位置姿勢導出部、246・・・部位位置推定部、248・・・ノイズ導出部、250・・・第2推定処理部、260・・・第3推定処理部、268・・・画像信号処理部、270・・・SLAM処理部。
Claims (10)
- ユーザが持つデバイスの位置を推定する情報処理装置であって、
前記デバイスを撮影した画像を取得する撮影画像取得部と、
前記デバイスを撮影した画像にもとづいて、前記デバイスの位置を推定する推定処理部と、
前記デバイスの角速度を示すセンサデータを取得するセンサデータ取得部と、を備え、
前記推定処理部は、
撮影画像に前記デバイスが含まれているとき、前記撮影画像における前記デバイスの位置座標から、三次元空間における前記デバイスの位置を導出する導出部と、
推定した前記デバイスの位置にもとづいて、ユーザの体における所定の部位の位置を推定する部位位置推定部と、を備え、
前記導出部は、撮影画像に前記デバイスが含まれなくなると、前記部位位置推定部が推定した前記部位の位置を回転中心として前記センサデータに対応する回転量で回転した位置を、前記デバイスの位置として導出する、
ことを特徴とする情報処理装置。 - 前記撮影画像取得部は、ユーザが装着したヘッドマウントディスプレイに搭載された撮像装置が撮影した画像を取得し、
前記部位位置推定部は、撮影画像に前記デバイスが含まれているとき、前記ヘッドマウントディスプレイの位置と前記デバイスの位置から、インバースキネマティクスにより前記部位の位置を推定する、
ことを特徴とする請求項1に記載の情報処理装置。 - 前記部位位置推定部は、撮影画像に前記デバイスが含まれなくなると、前記部位の位置を、ヘッドマウントディスプレイの動きに追従して動かす、
ことを特徴とする請求項2に記載の情報処理装置。 - 前記導出部は、撮影画像に前記デバイスが含まれなくなると、前記部位の位置を回転中心として、前記センサデータに対応する回転量で所定長の仮想腕を回転させて、前記デバイスの位置を導出する、
ことを特徴とする請求項1から3のいずれかに記載の情報処理装置。 - ユーザが持つデバイスの位置を推定する情報処理装置であって、
前記デバイスを撮影した画像を取得する撮影画像取得部と、
前記デバイスを撮影した画像にもとづいて、前記デバイスの位置を推定する第1推定処理部と、
前記デバイスの加速度および/または角速度を示すセンサデータを取得するセンサデータ取得部と、
前記センサデータにもとづいて、前記デバイスの位置を推定する第2推定処理部と、
前記第1推定処理部が推定した前記デバイスの位置と、前記第2推定処理部が推定した前記デバイスの位置にもとづいて、前記デバイスの位置を導出する第3推定処理部と、を備え、
前記第1推定処理部は、
撮影画像に前記デバイスが含まれているとき、撮影画像における前記デバイスの位置座標から、三次元空間における前記デバイスの位置を導出する導出部と、
推定した前記デバイスの位置にもとづいて、ユーザの体における所定の部位の位置を推定する部位位置推定部と、を備え、
前記導出部は、撮影画像に前記デバイスが含まれなくなると、前記部位位置推定部が推定した前記部位の位置を回転中心として前記センサデータに対応する回転量で回転した位置を、前記デバイスの位置として導出する、
ことを特徴とする情報処理装置。 - 前記第1推定処理部は、前記デバイスの位置のノイズの分散を導出するノイズ導出部を有し、
前記ノイズ導出部は、撮影画像に前記デバイスが含まれているときに第1の分散を導出し、撮影画像に前記デバイスが含まれていないときに、前記第1の分散より大きな第2の分散を導出する、
ことを特徴とする請求項5に記載の情報処理装置。 - 前記ノイズ導出部は、撮影画像に前記デバイスが含まれていないとき、回転量が大きくなると、回転量が小さいときよりも大きな前記第2の分散を導出する、
ことを特徴とする請求項6に記載の情報処理装置。 - 前記部位は、ユーザの肘である、
ことを特徴とする請求項1から7のいずれかに記載の情報処理装置。 - ユーザが持つデバイスの位置を推定する方法であって、
撮像装置が撮影した画像を取得するステップと、
前記撮像装置が前記デバイスを撮影した画像にもとづいて、前記デバイスの位置を推定するステップと、
推定した前記デバイスの位置にもとづいて、ユーザの体における所定の部位の位置を推定するステップと、
前記デバイスの角速度を示すセンサデータを取得するステップと、
前記撮像装置が撮影した画像に前記デバイスが含まれなくなると、推定した前記部位の位置を回転中心として前記センサデータに対応する回転量で回転した位置を、前記デバイスの位置として導出するステップと、
を有することを特徴とするデバイス位置推定方法。 - ユーザが持つデバイスの位置を推定する方法であって、
撮像装置が撮影した画像を取得するステップと、
前記撮像装置がデバイスを撮影した画像にもとづいて、前記デバイスの位置を推定する第1推定ステップと、
前記デバイスの加速度および/または角速度を示すセンサデータを取得するステップと、
前記センサデータにもとづいて、前記デバイスの位置を推定する第2推定ステップと、
前記第1推定ステップで推定した前記デバイスの位置と、前記第2推定ステップで推定した前記デバイスの位置にもとづいて、前記デバイスの位置を推定する第3推定ステップと、を備え、
前記第1推定ステップは、
撮影画像に前記デバイスが含まれているとき、撮影画像における前記デバイスの位置座標から、三次元空間における前記デバイスの位置を推定するステップと、
推定した前記デバイスの位置にもとづいて、ユーザの体における所定の部位の位置を推定するステップと、
撮影画像に前記デバイスが含まれなくなると、推定した前記部位の位置を回転中心として前記センサデータに対応する回転量で回転した位置を、前記デバイスの位置として導出するステップと、を有する、
ことを特徴とするデバイス位置推定方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022023936A JP2023120843A (ja) | 2022-02-18 | 2022-02-18 | 情報処理装置およびデバイス位置推定方法 |
PCT/JP2022/048495 WO2023157499A1 (ja) | 2022-02-18 | 2022-12-28 | 情報処理装置およびデバイス位置推定方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022023936A JP2023120843A (ja) | 2022-02-18 | 2022-02-18 | 情報処理装置およびデバイス位置推定方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023120843A true JP2023120843A (ja) | 2023-08-30 |
Family
ID=87578071
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022023936A Pending JP2023120843A (ja) | 2022-02-18 | 2022-02-18 | 情報処理装置およびデバイス位置推定方法 |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP2023120843A (ja) |
WO (1) | WO2023157499A1 (ja) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6693718B2 (ja) * | 2015-02-27 | 2020-05-13 | 株式会社ソニー・インタラクティブエンタテインメント | 表示制御プログラム、表示制御装置、及び表示制御方法 |
US10386938B2 (en) * | 2017-09-18 | 2019-08-20 | Google Llc | Tracking of location and orientation of a virtual controller in a virtual reality system |
US11347303B2 (en) * | 2018-11-30 | 2022-05-31 | Sony Interactive Entertainment Inc. | Systems and methods for determining movement of a controller with respect to an HMD |
-
2022
- 2022-02-18 JP JP2022023936A patent/JP2023120843A/ja active Pending
- 2022-12-28 WO PCT/JP2022/048495 patent/WO2023157499A1/ja unknown
Also Published As
Publication number | Publication date |
---|---|
WO2023157499A1 (ja) | 2023-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110047104B (zh) | 对象检测和跟踪方法、头戴式显示装置和存储介质 | |
CN109146965B (zh) | 信息处理装置、计算机可读介质和头戴式显示装置 | |
JP4532856B2 (ja) | 位置姿勢計測方法及び装置 | |
TWI722280B (zh) | 用於多個自由度之控制器追蹤 | |
JP7248490B2 (ja) | 情報処理装置、デバイスの位置および姿勢の推定方法 | |
JP2023175052A (ja) | 3次元空間内の姿勢推定 | |
CN111353355B (zh) | 动作追踪系统及方法 | |
JP2017142813A (ja) | 仮想現実システムの較正 | |
JP2018067115A (ja) | プログラム、追跡方法、追跡装置 | |
US20160210761A1 (en) | 3d reconstruction | |
US20240198211A1 (en) | Device including plurality of markers | |
JP7198149B2 (ja) | 情報処理装置およびデバイス情報導出方法 | |
JP7288792B2 (ja) | 情報処理装置およびデバイス情報導出方法 | |
WO2023157499A1 (ja) | 情報処理装置およびデバイス位置推定方法 | |
WO2023157498A1 (ja) | 情報処理装置、デバイス速度推定方法およびデバイス位置推定方法 | |
WO2023157338A1 (ja) | 情報処理装置およびデバイス位置推定方法 | |
WO2023238678A1 (ja) | 情報処理装置、コントローラ表示方法およびコンピュータプログラム | |
WO2023153093A1 (ja) | 情報処理装置および代表座標導出方法 | |
WO2023153094A1 (ja) | 情報処理装置および代表座標導出方法 | |
JP2024019472A (ja) | 複数のマーカを備えたデバイス | |
JP2024018242A (ja) | 情報処理装置および画像生成方法 |