JP2023120842A - 情報処理装置、デバイス速度推定方法およびデバイス位置推定方法 - Google Patents
情報処理装置、デバイス速度推定方法およびデバイス位置推定方法 Download PDFInfo
- Publication number
- JP2023120842A JP2023120842A JP2022023935A JP2022023935A JP2023120842A JP 2023120842 A JP2023120842 A JP 2023120842A JP 2022023935 A JP2022023935 A JP 2022023935A JP 2022023935 A JP2022023935 A JP 2022023935A JP 2023120842 A JP2023120842 A JP 2023120842A
- Authority
- JP
- Japan
- Prior art keywords
- sensor data
- estimation
- unit
- stationary
- processing unit
- 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
- 238000012545 processing Methods 0.000 claims abstract description 145
- 230000001133 acceleration Effects 0.000 claims abstract description 69
- 230000010365 information processing Effects 0.000 claims description 60
- 238000003384 imaging method Methods 0.000 claims description 51
- 238000013016 damping Methods 0.000 claims description 3
- 239000003550 marker Substances 0.000 description 66
- 230000008859 change Effects 0.000 description 24
- 230000006870 function Effects 0.000 description 21
- 238000004891 communication Methods 0.000 description 19
- 230000008569 process Effects 0.000 description 17
- 239000011159 matrix material Substances 0.000 description 11
- 238000009795 derivation Methods 0.000 description 10
- 230000003287 optical effect Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 210000003811 finger Anatomy 0.000 description 6
- 230000033001 locomotion Effects 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 230000036544 posture Effects 0.000 description 6
- 238000012937 correction Methods 0.000 description 5
- 239000000284 extract Substances 0.000 description 5
- 238000003860 storage Methods 0.000 description 5
- 238000013519 translation Methods 0.000 description 5
- 210000003128 head Anatomy 0.000 description 4
- 238000005259 measurement Methods 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 238000005070 sampling Methods 0.000 description 3
- 238000003705 background correction Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 210000000887 face Anatomy 0.000 description 2
- 230000004927 fusion Effects 0.000 description 2
- 238000007654 immersion Methods 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
- 238000012935 Averaging Methods 0.000 description 1
- 206010034719 Personality change Diseases 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000002238 attenuated effect 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
- 230000003247 decreasing effect Effects 0.000 description 1
- 239000006185 dispersion Substances 0.000 description 1
- 210000005069 ears Anatomy 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000005484 gravity Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000004519 manufacturing process Methods 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
- 238000003825 pressing Methods 0.000 description 1
- 239000011347 resin Substances 0.000 description 1
- 229920005989 resin Polymers 0.000 description 1
- 230000035807 sensation Effects 0.000 description 1
- 230000000638 stimulation Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01P—MEASURING LINEAR OR ANGULAR SPEED, ACCELERATION, DECELERATION, OR SHOCK; INDICATING PRESENCE, ABSENCE, OR DIRECTION, OF MOVEMENT
- G01P1/00—Details of instruments
- G01P1/04—Special adaptations of driving means
-
- 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)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- User Interface Of Digital Computer (AREA)
- Position Input By Displaying (AREA)
Abstract
【課題】デバイスが撮影されなくなった場合においても、デバイス位置を推定するために必要な技術を提供する。【解決手段】センサデータ取得部214は、振動子を備えるデバイスの加速度を示すセンサデータを取得する。第2推定処理部250は、センサデータにもとづいて、デバイスの速度を推定する。振動判定部262は、センサデータにもとづいて、振動子が振動しているか否かを判定する。静止判定部264は、センサデータにもとづいて、デバイスが静止しているか否かを判定する。第2推定処理部250は、振動子が振動し且つデバイスが静止していると判定された場合に、推定したデバイスの速度を小さくする。【選択図】図8
Description
本発明は、振動子を備えるデバイスの速度および/または位置を推定する技術に関する。
特許文献1は、複数のマーカを備えたデバイスを撮影した画像からマーカ像の代表座標を特定し、マーカ像の代表座標を用いてデバイスの位置情報および姿勢情報を導出する情報処理装置を開示する。特許文献1に開示された情報処理装置は、撮影画像において第1輝度以上の画素が連続する領域を囲む第1境界ボックスを特定するとともに、第1境界ボックス内において第1輝度よりも高い第2輝度以上の画素が連続する領域を囲む第2境界ボックスを特定し、第1境界ボックス内または第2境界ボックス内の画素にもとづいてマーカ像の代表座標を導出する。
特許文献2は、複数の発光部と複数の操作部材とを設けられた入力デバイスを開示する。入力デバイスの発光部は、ヘッドマウンティングデバイスに設けられたカメラにより撮影され、検知された発光部の位置にもとづいて、入力デバイスの位置と姿勢が算出される。
近年、デバイスの位置や姿勢をトラッキングし、VR空間の3Dモデルに反映させる情報処理技術が普及している。ゲーム空間のプレイヤキャラクタやゲームオブジェクトの動きを、トラッキング対象となるデバイスの位置や姿勢の変化に連動させることで、ユーザによる直観的な操作が実現される。
特許文献1に開示されたトラッキング処理は、デバイスが撮像装置により撮影されて、撮影画像にマーカ像が含まれているときに実施される。そのためデバイスが撮像装置の画角外に移動して、撮影画像にマーカ像が含まれなくなると、特許文献1に開示されたトラッキング処理は実施できない。
そこで本発明は、デバイスが撮影されなくなった場合においても、デバイス位置を推定するために必要な技術を提供することを目的とする。なおデバイスは操作部材を有する入力デバイスであってよいが、操作部材を有しない単にトラッキングの対象となるデバイスであってもよい。
上記課題を解決するために、本発明のある態様の情報処理装置は、振動子を備えるデバイスの速度を推定する情報処理装置であって、デバイスの加速度を示すセンサデータを取得するセンサデータ取得部と、センサデータにもとづいて、デバイスの速度を推定する推定処理部と、センサデータにもとづいて、振動子が振動しているか否かを判定する振動判定部と、センサデータにもとづいて、デバイスが静止しているか否かを判定する静止判定部とを備える。振動子が振動し且つデバイスが静止していると判定された場合に、推定処理部は、推定したデバイスの速度を小さくする。
本発明の別の態様の情報処理装置は、振動子を備えるデバイスの位置を推定する情報処理装置であって、デバイスを撮影した画像を取得する撮影画像取得部と、デバイスを撮影した画像にもとづいて、デバイスの位置を推定する第1推定処理部と、デバイスの加速度を示すセンサデータを取得するセンサデータ取得部と、センサデータにもとづいて、デバイスの速度および位置を推定する第2推定処理部と、第1推定処理部が推定したデバイスの位置と、第2推定処理部が推定したデバイスの位置にもとづいて、デバイスの位置を導出する第3推定処理部と、センサデータにもとづいて、振動子が振動しているか否かを判定する振動判定部と、センサデータにもとづいて、デバイスが静止しているか否かを判定する静止判定部とを備える。第2推定処理部は、振動子が振動し且つデバイスが静止していると判定された場合に、推定したデバイスの速度を小さくする。
本発明のさらに別の態様のデバイス速度推定方法は、振動子を備えるデバイスの速度を推定する方法であって、デバイスの加速度を示すセンサデータを取得するステップと、センサデータにもとづいて、デバイスの速度を推定するステップと、センサデータにもとづいて、振動子が振動しているか否かを判定するステップと、センサデータにもとづいて、デバイスが静止しているか否かを判定するステップと、振動子が振動し且つデバイスが静止していることが判定された場合に、推定したデバイスの速度を小さくするステップとを有する。
本発明のさらに別の態様のデバイス位置推定方法は、振動子を備えるデバイスの位置を推定する方法であって、撮像装置が撮影した画像を取得するステップと、撮像装置がデバイスを撮影した画像にもとづいて、デバイスの位置を推定する第1推定ステップと、デバイスの加速度を示すセンサデータを取得するステップと、センサデータにもとづいて、デバイスの速度および位置を推定する第2推定ステップと、第1推定ステップで推定したデバイスの位置と、第2推定ステップで推定したデバイスの位置にもとづいて、デバイスの位置を推定する第3推定ステップと、センサデータにもとづいて、振動子が振動しているか否かを判定するステップと、センサデータにもとづいて、デバイスが静止しているか否かを判定するステップと、振動子が振動し且つデバイスが静止していると判定された場合に、第2推定ステップで推定したデバイスの速度を小さくするステップとを備える。
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラム、コンピュータプログラムを読み取り可能に記録した記録媒体、データ構造などの間で変換したものもまた、本発明の態様として有効である。
図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を点灯させてもよい。
振動子52は、ユーザにゲーム演出用の触覚刺激を提示する。ユーザのゲームプレイ中、情報処理装置10は、ゲーム進行に応じて、振動指示を入力デバイス16に送信する。通信制御部54が情報処理装置10から振動指示を取得すると、制御部50は振動指示にもとづいて振動子52を振動させる。振動子52がゲーム進行に応じた触覚をユーザに提示することで、ユーザのゲームへの没入感を高めることができる。振動子52は、たとえばボイスコイルモータであってよい。
図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を備え、入力デバイス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)。
ノイズ導出部246は、推定した位置および姿勢のそれぞれのノイズ(誤差)の分散を導出する(S18)。ノイズの分散値は、推定した位置および姿勢の信頼度に対応し、信頼度が高ければ分散値は小さく、信頼度が低ければ分散値は大きくなる。ノイズ導出部246は、撮像装置14と入力デバイス16の間の距離や、画角内におけるマーカ像の位置にもとづいて、ノイズの分散を導出してよい。たとえば撮像装置14と入力デバイス16とが遠く離れていたり、または極端に近い場合や、マーカ像が撮影画像の端に位置するような場合は、正確なマーカ像の重心座標を導出することが難しくなるため、ノイズ分散は大きく導出される傾向がある。
第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を積分して速度変化量を算出し、算出した速度変化量を「状態ベクトルmk-1|k-1」に含まれる時刻k-1の速度に加算して、時刻kにおける速度を推定する。予測部は、推定した時刻kにおける速度を積分して位置変化量を算出し、算出した位置変化量を「状態ベクトルmk-1|k-1」に含まれる時刻k-1の位置に加算して、時刻kにおける位置を推定する。また予測部は、角速度ωkを積分して姿勢変化量を算出し、算出した姿勢変化量を「状態ベクトルmk-1|k-1」に含まれる時刻k-1の姿勢に加算して、時刻kにおける姿勢を推定する。このように予測部は、「状態ベクトルmk|k-1」を算出する。予測部は、「状態ベクトル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に示した位置姿勢推定処理が実行できなくなる。
図12は、入力デバイス16が撮像装置14の撮影可能範囲から外れた状態を示す。この例では、ユーザが入力デバイス16を顔の横まで動かしたため、入力デバイス16が撮像装置14の画角から外れている。このとき撮影画像にマーカ像が含まれなくなり、マーカ像座標特定部242は、撮影画像からマーカ像を抽出することができない。
上記したように、第2推定処理部250は、時刻kにおける加速度akを積分して速度変化量を算出し、算出した速度変化量を時刻k-1の推定速度に加算して、時刻kにおける速度を推定する。それから第2推定処理部250は、推定した時刻kにおける速度を積分して位置変化量を算出し、算出した位置変化量を時刻k-1の推定位置に加算して、時刻kにおける位置を推定する。推定した時刻kにおける速度、位置には積分ドリフトが混入しており、そのドリフト量は、積分演算を繰り返す度に蓄積されるため、実施例の推定処理部230においては、第3推定処理部260が、第1推定処理部240におけるトラッキング処理の周期(60Hz)で、信頼度の高い「観測値nk」を用いて、第2推定処理部250が出力する状態ベクトル(速度、位置、姿勢)を補正している。
しかしながら第1推定処理部240がトラッキング処理を実行できなくなると、「観測値nk」を第3推定処理部260に入力できず、第3推定処理部260は、第2推定処理部250が出力する状態ベクトルを補正できない。トラッキング処理を実行できない期間が長くなると、推定される状態ベクトルは真の状態ベクトルから大きく離れていくが、通常のゲームプレイでは、ユーザが短時間のうちに入力デバイス16を前方に動かし、入力デバイス16の撮影が再開されるため、それほど大きな問題にはならない。
しかしながら、入力デバイス16が撮影されていない期間に、ゲームの演出により振動子52が振動させられると、加速度センサ34は、振動子52の振動による大きな加速度を検出する。そのためユーザが入力デバイス16を顔の横で静止させているにもかかわらず、加速度センサ34が大きな加速度を検出することで、第2推定処理部250が、大きな速度変化量および位置変化量を算出することになる。
図13(a)は、振動子52の振動中に検出された加速度の時系列データを示す。この加速度の計測時、入力デバイス16は静止した状態にあり、加速度センサ34は800Hzの周期で、振動子52の振動による加速度を計測している。
図13(b)は、図13(a)に示す加速度を用いて推定される速度の変化を示し、図13(c)は、図13(b)に示す速度を用いて推定される位置の変化を示す。
図13(b)は、図13(a)に示す加速度を用いて推定される速度の変化を示し、図13(c)は、図13(b)に示す速度を用いて推定される位置の変化を示す。
入力デバイス16は静止しているため、入力デバイス16の速度はゼロと推定されることが理想であるが、第2推定処理部250は、加速度にもとづいて速度を推定するため、図13(b)に示すように、推定される速度はドリフトし、したがって図13(c)に示すように、推定される位置もドリフトする。そこで実施例の第2推定処理部250は、第1推定処理部240による入力デバイス16のトラッキング処理が実施不能となった場合に、振動子52が振動し且つ入力デバイス16が静止状態にあることを条件として、推定する速度および位置のドリフトを抑制するための減衰処理を実施する。
図14(a)は、振動子52が振動し且つ入力デバイス16が静止しているときに検出される加速度の時系列データを示す。振動判定部262は、加速度を示すセンサデータにもとづいて、振動子52が振動しているか否かを判定する。図14(a)に示すように、振動子52の振動中に計測される加速度は大きく変動するため、加速度の時系列データの分散は大きな値を示す。そこで振動判定部262は、加速度の時系列データから分散を算出し、算出した分散にもとづいて、振動子52が振動しているか否かを判定する。
実施例の振動判定部262は、現在時刻tから過去時刻(t-99)までの100個の加速度値の偏差(それぞれのサンプリング値と平均サンプリング値の差)を2乗し、100個の偏差の2乗を平均した値を、分散として算出する。なお分散を算出するときのサンプル数は100個以外であってもよい。振動判定部262は、センサデータのサンプリング周期で分散を算出し、常時、振動子52が振動しているか否かを判定してよい。
振動判定部262は、算出した分散が所定の閾値Vth以上であると、振動子52が振動していることを判定し、算出した分散が閾値Vth未満であると、振動子52が振動していないことを判定する。振動判定部262は、図14(a)に示す加速度の時系列データから算出した分散が閾値Vth以上であることを確認することで、振動子52が振動していることを判定する。なお判定結果が頻繁に入れ替わることを防止するために、振動判定部262は、算出する分散が所定回数(N1回)連続して閾値Vth以上となったときに、振動子52が振動していることを判定してよく、振動を判定した後は、算出する分散が所定回数(N2回)連続して閾値Vth未満となったときに、振動子52が振動していないことを判定してもよい。N1とN2は同じ回数であってよいが、異なる回数であってもよい。
静止判定部264は、加速度を示すセンサデータにもとづいて、入力デバイス16が静止しているか否かを判定する。静止判定部264は、加速度の時系列データから加速度の傾きを算出し、算出した傾きにもとづいて、入力デバイス16が静止しているか否かを判定する。
実施例の静止判定部264は、現在時刻tから過去時刻(t-99)までの100個の加速度値に最小二乗法を適用して回帰直線を求め、その傾きを特定する。なお傾きを算出するときのサンプル数は100個以外であってもよい。静止判定部264は、センサデータのサンプリング周期で傾きを算出し、常時、入力デバイス16が静止しているか否かを判定してよい。
静止判定部264は、算出した傾きの絶対値が所定の閾値Sth以上であると、入力デバイス16が動いていることを判定し、算出した傾きの絶対値が閾値Sth未満であると、入力デバイス16が静止していることを判定する。静止判定部264は、図14(a)に示す加速度の時系列データから算出した傾きが閾値Sth未満であることを確認することで、入力デバイス16が静止していることを判定する。なお判定結果が頻繁に入れ替わることを防止するために、静止判定部264は、算出する傾きの絶対値が所定回数(N3回)連続して閾値Sth未満となったときに、入力デバイス16が静止していることを判定してよく、静止を判定した後は、算出する傾きの絶対値が所定回数(N4回)連続して閾値Sth以上となったときに、入力デバイス16が動いていることを判定してもよい。N3とN4は同じ回数であってよいが、異なる回数であってもよい。
図14(b)は、振動子52が振動し且つ入力デバイス16が動いているときに検出される加速度の時系列データを示す。振動判定部262は、図14(b)に示す加速度の時系列データから算出した分散が閾値Vth以上であることを確認することで、振動子52が振動していることを判定する。
図14(a)に示す加速度の時系列データと比べると、図14(b)に示す加速度の時系列データは、徐々に増加する傾向を示している。静止判定部264は、図14(b)に示す加速度の時系列データから算出した傾きの絶対値が閾値Sth以上であることを確認することで、入力デバイス16が動いていることを判定する。
第2推定処理部250は、第1推定処理部240による入力デバイス16のトラッキング処理が実施不能となっている場合に、振動判定部262が振動子52が振動していることを判定し、且つ静止判定部264が入力デバイス16が静止していることを判定すると、推定した入力デバイス16の速度を小さくする減衰処理を実施する。この減衰処理において静止判定部264は、「状態ベクトルmk|k-1」に含まれる速度に、所定の減衰係数c(0<c<1)を乗算して、推定速度を小さくする演算を行う。実施例において減衰係数cは0.99であるが、それ以外の固定値であってもよい。静止判定部264は、推定速度を小さくする減衰処理を実施することで、速度および位置のドリフトを抑制できる。
図15は、加速度の時系列データ、分散の変化および傾きの変化の関係を説明するための図である。分散の変化を示すグラフでは、直近の100個の加速度データから算出される分散値を時間軸上に並べており、傾きの変化を示すグラフでは、直近の100個の加速度データから算出される傾きを時間軸上に並べている。
図15(a)は、振動子52が振動せず且つ入力デバイス16が静止しているときに検出される加速度の時系列データと、算出した分散の変化および傾きの変化を示す。振動判定部262は、算出した分散が閾値Vth未満であることから、振動子52が振動していないことを判定する。また静止判定部264は、算出した傾きの絶対値が閾値Sth未満であることから、入力デバイス16が静止していることを判定する。
図15(b)は、振動子52が振動し且つ入力デバイス16が静止しているときに検出される加速度の時系列データと、算出した分散の変化および傾きの変化を示す。振動判定部262は、算出した分散が閾値Vth以上であることから、振動子52が振動していることを判定する。なお振動判定部262は、算出した分散が閾値Vth未満になると、振動子52が振動していないことを判定してよいが、上記したように、振動を判定した後は、算出する分散が所定回数(N2回)連続して閾値Vth未満となったときに、振動子52が振動していないことを判定してもよい。静止判定部264は、算出した傾きの絶対値が閾値Sth未満であることから、入力デバイス16が静止していることを判定する。
図15(c)は、振動子52が振動し且つ入力デバイス16が動いているときに検出される加速度の時系列データと、算出した分散の変化および傾きの変化を示す。図15(c)に示す加速度は、ユーザが入力デバイス16を振っているときに検出された加速度である。振動判定部262は、算出した分散が閾値Vth以上であることから、振動子52が振動していることを判定する。また静止判定部264は、算出した傾きの絶対値が閾値Sth以上であることから、入力デバイス16が動いていることを判定する。なお振動判定部262は、算出した傾きの絶対値が閾値Sth未満になると、入力デバイス16が静止していることを判定してよいが、動いていることを判定した後は、算出する傾きの絶対値が所定回数連続して閾値Sth未満となったときに、入力デバイス16が静止していることを判定してもよい。
図15(b)に示すように、振動判定部262により振動子52が振動していることが判定され、同時に静止判定部264により入力デバイス16が静止していることが判定された場合に、第2推定処理部250は、推定した入力デバイス16の速度を小さくする減衰処理を実施する。振動子52が振動し且つ入力デバイス16が静止している状態が継続すると、第2推定処理部250は、800Hzの周期で推定する速度に係数cを乗算し続けるため、推定速度は次第にゼロに近づくことになる。
図16(a)は、振動子52が振動し且つ入力デバイス16が静止しているときに検出される加速度の時系列データを示す。
図16(b)は、減衰処理された推定速度の変化を示す。推定速度は、減衰処理されることで時間の経過とともに減衰して、ゼロに近づいていく。
図16(c)は、推定速度にもとづいて推定される位置の変化を示す。第2推定処理部250は、減衰した推定速度にもとづいて位置を推定するため、推定位置はドリフトしない。このように第1推定処理部240によるトラッキング処理が実施できない場合において、振動子52が振動し且つ入力デバイス16が静止している状態にあるときは、第2推定処理部250が、推定速度を減衰処理することで、安定した位置を推定できる。なお第2推定処理部250は、トラッキング処理が実施されない場合に減衰処理を実施するのであって、トラッキング処理が実施されていれば、減衰処理を実施する必要はない。
図16(b)は、減衰処理された推定速度の変化を示す。推定速度は、減衰処理されることで時間の経過とともに減衰して、ゼロに近づいていく。
図16(c)は、推定速度にもとづいて推定される位置の変化を示す。第2推定処理部250は、減衰した推定速度にもとづいて位置を推定するため、推定位置はドリフトしない。このように第1推定処理部240によるトラッキング処理が実施できない場合において、振動子52が振動し且つ入力デバイス16が静止している状態にあるときは、第2推定処理部250が、推定速度を減衰処理することで、安定した位置を推定できる。なお第2推定処理部250は、トラッキング処理が実施されない場合に減衰処理を実施するのであって、トラッキング処理が実施されていれば、減衰処理を実施する必要はない。
なお入力デバイス16が撮像装置14の画角内に移動して、撮影画像にマーカ像が含まれるようになると、マーカ像座標特定部242は、撮影画像からマーカ像を抽出し、位置姿勢導出部244は、マーカ像にもとづいた位置姿勢推定処理を再開する。第1推定処理部240によるトラッキング処理の再開後、第2推定処理部250は、減衰処理の実施を中止してよい。
以上、本発明を実施例をもとに説明した。上記実施例は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。実施例では推定処理を情報処理装置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・・・制御部、52・・・振動子、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・・・ノイズ導出部、250・・・第2推定処理部、260・・・第3推定処理部、262・・・振動判定部、264・・・静止判定部、268・・・画像信号処理部、270・・・SLAM処理部。
Claims (9)
- 振動子を備えるデバイスの速度を推定する情報処理装置であって、
前記デバイスの加速度を示すセンサデータを取得するセンサデータ取得部と、
前記センサデータにもとづいて、前記デバイスの速度を推定する推定処理部と、
前記センサデータにもとづいて、前記振動子が振動しているか否かを判定する振動判定部と、
前記センサデータにもとづいて、前記デバイスが静止しているか否かを判定する静止判定部と、を備え、
前記振動子が振動し且つ前記デバイスが静止していると判定された場合に、前記推定処理部は、推定した前記デバイスの速度を小さくする、
ことを特徴とする情報処理装置。 - 前記振動判定部は、加速度の時系列データから算出される分散にもとづいて、前記振動子が振動しているか否かを判定する、
ことを特徴とする請求項1に記載の情報処理装置。 - 前記静止判定部は、加速度の時系列データから算出される加速度の傾きにもとづいて、前記デバイスが静止しているか否かを判定する、
ことを特徴とする請求項1または2に記載の情報処理装置。 - 前記振動子が振動し且つ前記デバイスが静止していると判定された場合に、前記推定処理部は、推定した前記デバイスの速度に、所定の減衰係数c(0<c<1)を乗算する、
ことを特徴とする請求項1から3のいずれかに記載の情報処理装置。 - 前記センサデータ取得部がセンサデータを取得する周期で、前記推定処理部は前記デバイスの速度を推定する、
ことを特徴とする請求項1から4のいずれかに記載の情報処理装置。 - 振動子を備えるデバイスの位置を推定する情報処理装置であって、
前記デバイスを撮影した画像を取得する撮影画像取得部と、
前記デバイスを撮影した画像にもとづいて、前記デバイスの位置を推定する第1推定処理部と、
前記デバイスの加速度を示すセンサデータを取得するセンサデータ取得部と、
前記センサデータにもとづいて、前記デバイスの速度および位置を推定する第2推定処理部と、
前記第1推定処理部が推定した前記デバイスの位置と、前記第2推定処理部が推定した前記デバイスの位置にもとづいて、前記デバイスの位置を導出する第3推定処理部と、
前記センサデータにもとづいて、前記振動子が振動しているか否かを判定する振動判定部と、
前記センサデータにもとづいて、前記デバイスが静止しているか否かを判定する静止判定部と、を備え、
前記第2推定処理部は、前記振動子が振動し且つ前記デバイスが静止していると判定された場合に、推定した前記デバイスの速度を小さくする、
ことを特徴とする情報処理装置。 - 前記第2推定処理部は、撮影画像に前記デバイスが含まれているとき、推定した前記デバイスの速度を小さくせず、撮影画像に前記デバイスが含まれなくなると、推定した前記デバイスの速度を小さくする、
ことを特徴とする請求項6に記載の情報処理装置。 - 振動子を備えるデバイスの速度を推定する方法であって、
前記デバイスの加速度を示すセンサデータを取得するステップと、
前記センサデータにもとづいて、前記デバイスの速度を推定するステップと、
前記センサデータにもとづいて、前記振動子が振動しているか否かを判定するステップと、
前記センサデータにもとづいて、前記デバイスが静止しているか否かを判定するステップと、
前記振動子が振動し且つ前記デバイスが静止していることが判定された場合に、推定した前記デバイスの速度を小さくするステップと、
を有することを特徴とするデバイス速度推定方法。 - 振動子を備えるデバイスの位置を推定する方法であって、
撮像装置が撮影した画像を取得するステップと、
前記撮像装置がデバイスを撮影した画像にもとづいて、前記デバイスの位置を推定する第1推定ステップと、
前記デバイスの加速度を示すセンサデータを取得するステップと、
前記センサデータにもとづいて、前記デバイスの速度および位置を推定する第2推定ステップと、
前記第1推定ステップで推定した前記デバイスの位置と、前記第2推定ステップで推定した前記デバイスの位置にもとづいて、前記デバイスの位置を推定する第3推定ステップと、
前記センサデータにもとづいて、前記振動子が振動しているか否かを判定するステップと、
前記センサデータにもとづいて、前記デバイスが静止しているか否かを判定するステップと、
前記振動子が振動し且つ前記デバイスが静止していると判定された場合に、前記第2推定ステップで推定した前記デバイスの速度を小さくするステップと、
を有することを特徴とするデバイス位置推定方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022023935A JP2023120842A (ja) | 2022-02-18 | 2022-02-18 | 情報処理装置、デバイス速度推定方法およびデバイス位置推定方法 |
PCT/JP2022/048494 WO2023157498A1 (ja) | 2022-02-18 | 2022-12-28 | 情報処理装置、デバイス速度推定方法およびデバイス位置推定方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022023935A JP2023120842A (ja) | 2022-02-18 | 2022-02-18 | 情報処理装置、デバイス速度推定方法およびデバイス位置推定方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023120842A true JP2023120842A (ja) | 2023-08-30 |
Family
ID=87578072
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022023935A Pending JP2023120842A (ja) | 2022-02-18 | 2022-02-18 | 情報処理装置、デバイス速度推定方法およびデバイス位置推定方法 |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP2023120842A (ja) |
WO (1) | WO2023157498A1 (ja) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3804409B2 (ja) * | 2000-07-21 | 2006-08-02 | 株式会社デンソー | 加速度を利用した処理装置 |
JP2007278983A (ja) * | 2006-04-11 | 2007-10-25 | Mitsubishi Electric Corp | 移動検出装置及び移動検出方法 |
JP6644396B1 (ja) * | 2019-10-09 | 2020-02-12 | サイトセンシング株式会社 | 速度計測装置、地上走行体 |
-
2022
- 2022-02-18 JP JP2022023935A patent/JP2023120842A/ja active Pending
- 2022-12-28 WO PCT/JP2022/048494 patent/WO2023157498A1/ja unknown
Also Published As
Publication number | Publication date |
---|---|
WO2023157498A1 (ja) | 2023-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109146965B (zh) | 信息处理装置、计算机可读介质和头戴式显示装置 | |
CN110047104B (zh) | 对象检测和跟踪方法、头戴式显示装置和存储介质 | |
KR102448284B1 (ko) | 헤드 마운트 디스플레이 추적 시스템 | |
JP4532856B2 (ja) | 位置姿勢計測方法及び装置 | |
WO2017077918A1 (ja) | 情報処理装置、情報処理システム、および情報処理方法 | |
JP7248490B2 (ja) | 情報処理装置、デバイスの位置および姿勢の推定方法 | |
JP2018067115A (ja) | プログラム、追跡方法、追跡装置 | |
US20240198211A1 (en) | Device including plurality of markers | |
JP6859447B2 (ja) | 情報処理システムおよび対象物情報取得方法 | |
JP6768933B2 (ja) | 情報処理装置、情報処理システム、および画像処理方法 | |
JP2017208707A (ja) | 情報処理装置、情報処理システム、撮像装置、ヘッドマウントディスプレイ、および情報処理方法 | |
JP7198149B2 (ja) | 情報処理装置およびデバイス情報導出方法 | |
JP6499993B2 (ja) | 情報処理装置、情報処理システム、および情報処理方法 | |
WO2023157498A1 (ja) | 情報処理装置、デバイス速度推定方法およびデバイス位置推定方法 | |
JP7288792B2 (ja) | 情報処理装置およびデバイス情報導出方法 | |
WO2023157338A1 (ja) | 情報処理装置およびデバイス位置推定方法 | |
WO2023157499A1 (ja) | 情報処理装置およびデバイス位置推定方法 | |
WO2023238678A1 (ja) | 情報処理装置、コントローラ表示方法およびコンピュータプログラム | |
US20240256056A1 (en) | Information processing apparatus and device position acquisition method | |
WO2023153094A1 (ja) | 情報処理装置および代表座標導出方法 | |
WO2023153093A1 (ja) | 情報処理装置および代表座標導出方法 | |
US20240033618A1 (en) | Information processing apparatus and image generating method | |
US20240257391A1 (en) | Information processing apparatus and device information derivation method | |
JP7394046B2 (ja) | システム、撮像装置、情報処理装置、情報処理方法および情報処理プログラム | |
JP2021007231A (ja) | 情報処理装置、情報処理システム、および画像処理方法 |