IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ソニー株式会社の特許一覧

特許7147775情報処理装置、情報処理方法及びプログラム
<>
  • 特許-情報処理装置、情報処理方法及びプログラム 図1
  • 特許-情報処理装置、情報処理方法及びプログラム 図2
  • 特許-情報処理装置、情報処理方法及びプログラム 図3
  • 特許-情報処理装置、情報処理方法及びプログラム 図4
  • 特許-情報処理装置、情報処理方法及びプログラム 図5
  • 特許-情報処理装置、情報処理方法及びプログラム 図6
  • 特許-情報処理装置、情報処理方法及びプログラム 図7
  • 特許-情報処理装置、情報処理方法及びプログラム 図8
  • 特許-情報処理装置、情報処理方法及びプログラム 図9
  • 特許-情報処理装置、情報処理方法及びプログラム 図10
  • 特許-情報処理装置、情報処理方法及びプログラム 図11
  • 特許-情報処理装置、情報処理方法及びプログラム 図12
  • 特許-情報処理装置、情報処理方法及びプログラム 図13
  • 特許-情報処理装置、情報処理方法及びプログラム 図14
  • 特許-情報処理装置、情報処理方法及びプログラム 図15
  • 特許-情報処理装置、情報処理方法及びプログラム 図16
  • 特許-情報処理装置、情報処理方法及びプログラム 図17
  • 特許-情報処理装置、情報処理方法及びプログラム 図18
  • 特許-情報処理装置、情報処理方法及びプログラム 図19
  • 特許-情報処理装置、情報処理方法及びプログラム 図20
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-09-27
(45)【発行日】2022-10-05
(54)【発明の名称】情報処理装置、情報処理方法及びプログラム
(51)【国際特許分類】
   G06T 7/70 20170101AFI20220928BHJP
   G06T 7/73 20170101ALI20220928BHJP
   G01B 11/00 20060101ALI20220928BHJP
   G01B 11/26 20060101ALI20220928BHJP
【FI】
G06T7/70 A
G06T7/73
G01B11/00 H
G01B11/26 H
【請求項の数】 20
(21)【出願番号】P 2019550915
(86)(22)【出願日】2018-10-03
(86)【国際出願番号】 JP2018036983
(87)【国際公開番号】W WO2019087658
(87)【国際公開日】2019-05-09
【審査請求日】2021-09-01
(31)【優先権主張番号】P 2017212051
(32)【優先日】2017-11-01
(33)【優先権主張国・地域又は機関】JP
(73)【特許権者】
【識別番号】000002185
【氏名又は名称】ソニーグループ株式会社
(74)【代理人】
【識別番号】110003339
【氏名又は名称】特許業務法人南青山国際特許事務所
(74)【代理人】
【識別番号】100104215
【弁理士】
【氏名又は名称】大森 純一
(74)【代理人】
【識別番号】100196575
【弁理士】
【氏名又は名称】高橋 満
(74)【代理人】
【識別番号】100168181
【弁理士】
【氏名又は名称】中村 哲平
(74)【代理人】
【識別番号】100117330
【弁理士】
【氏名又は名称】折居 章
(74)【代理人】
【識別番号】100160989
【弁理士】
【氏名又は名称】関根 正好
(74)【代理人】
【識別番号】100168745
【弁理士】
【氏名又は名称】金子 彩子
(74)【代理人】
【識別番号】100176131
【弁理士】
【氏名又は名称】金山 慎太郎
(74)【代理人】
【識別番号】100197398
【弁理士】
【氏名又は名称】千葉 絢子
(74)【代理人】
【識別番号】100197619
【弁理士】
【氏名又は名称】白鹿 智久
(72)【発明者】
【氏名】西部 満
【審査官】笠田 和宏
(56)【参考文献】
【文献】特開2015-005220(JP,A)
【文献】特開2009-031295(JP,A)
【文献】特開2011-128220(JP,A)
【文献】特開2015-166816(JP,A)
【文献】特開2017-181666(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 7/70
G06T 7/73
G01B 11/00
G01B 11/26
(57)【特許請求の範囲】
【請求項1】
画像情報を取得する撮像部と、
慣性情報を取得する慣性センサと、
前記画像情報及び前記慣性情報に基づいて、情報処理装置における自己位置を推定し、前記情報処理装置を付帯するユーザの状況を認識し、前記自己位置の推定において、前記画像情報及び前記慣性情報のうちどちらをより信頼して使用するかについての比率を、前記状況に応じて変化させる制御する制御部と
を具備する情報処理装置。
【請求項2】
請求項1に記載の情報処理装置であって、
前記制御部は、前記画像情報から特徴量を抽出し、前記状況に応じて、前記自己位置の推定において、前記特徴量のうちどの特徴量を使用するかを判定する
情報処理装置。
【請求項3】
請求項1に記載の情報処理装置であって、
前記制御部は、前記状況に応じて、1以上の座標系を設定可能であり、前記1以上の座標系において、それぞれ自己位置を推定する
情報処理装置。
【請求項4】
請求項3に記載の情報処理装置であって、
前記制御部は、前記1以上の座標系においてそれぞれ前記比率が異なるように前記比率を変化させる
情報処理装置。
【請求項5】
請求項3に記載の情報処理装置であって、
前記1以上の座標系は、前記ユーザを乗せて移動する第1の移動体を基準とした第1の移動体座標系を含み、
前記制御部は、前記第1移動体座標系における自己位置の推定において、前記画像情報及び前記慣性情報のうち前記画像情報をより信頼して使用するように前記比率を変化させる
情報処理装置。
【請求項6】
請求項5に記載の情報処理装置であって、
前記制御部は、前記第1移動体座標系における自己位置の推定において、前記画像情報及び前記慣性情報のうち前記画像情報のみを信頼して使用するように前記比率を変化させる
情報処理装置。
【請求項7】
請求項3に記載の情報処理装置であって、
前記1以上の座標系は、前記ユーザとは関連せずに移動する第2の移動体を基準とした第2の移動体座標系を含み、
前記制御部は、前記第2移動体座標系における自己位置の推定において、前記画像情報及び前記慣性情報のうち前記画像情報をより信頼して使用するように前記比率を変化させる
情報処理装置。
【請求項8】
請求項7に記載の情報処理装置であって、
前記制御部は、前記第2移動体座標系における自己位置の推定において、前記画像情報及び前記慣性情報のうち前記画像情報のみを信頼して使用するように前記比率を変化させる
情報処理装置。
【請求項9】
請求項1に記載の情報処理装置であって、
前記制御部は、カルマンフィルタ処理により自己位置を推定し、前記比率は、カルマンゲインである
情報処理装置。
【請求項10】
請求項3に記載の情報処理装置であって、
前記制御部は、前記画像情報から特徴量を抽出し、前記1以上の座標系毎に、前記画像情報における特徴量のうちどの特徴量を自己位置の推定に使用するかを判定する
情報処理装置。
【請求項11】
請求項10に記載の情報処理装置であって、
前記制御部は、前記慣性情報と、前記特徴量の動きとの一致度を判定し、前記一致度に基づいて、前記1以上の座標系毎に、前記画像情報における特徴量のうちどの特徴量を自己位置の推定に使用するかを判定する
情報処理装置。
【請求項12】
請求項3に記載の情報処理装置であって、
前記1以上の座標系は、地球を基準とした世界座標系と、前記ユーザを乗せて移動する第1の移動体を基準とした第1の移動体座標系とを含み、
前記制御部は、前記画像情報に基づいて、前記世界座標系から前記第1の移動体座標系が分裂したかどうかを判定し、前記分裂が生じたとき、前記第1の移動体座標系を設定する
情報処理装置。
【請求項13】
請求項12に記載の情報処理装置であって、
前記制御部は、前記分裂が生じたとき、前記世界座標系における自己位置の推定において、分裂が生じた時刻から所定時間前まで遡って、自己位置を再計算する
情報処理装置。
【請求項14】
請求項12に記載の情報処理装置であって、
前記制御部は、前記分裂が生じたとき、前記第1の移動体座標系における自己位置の推定において、分裂が生じた時刻から所定時間前まで遡って、自己位置を再計算する
情報処理装置。
【請求項15】
請求項3に記載の情報処理装置であって、
前記1以上の座標系は、地球を基準とした世界座標系と、前記ユーザとは関係なく移動する第2の移動体を基準とした第2の移動体座標系とを含み、
前記制御部は、前記画像情報に基づいて、前記世界座標系から前記第2の移動体座標系が分裂したかどうかを判定し、前記分裂が生じたとき、前記第2の移動体座標系を設定する
情報処理装置。
【請求項16】
請求項15に記載の情報処理装置であって、
前記制御部は、前記分裂が生じたとき、前記世界座標系における自己位置の推定において、分裂が生じた時刻から所定時間前まで遡って、自己位置を再計算する
情報処理装置。
【請求項17】
請求項15に記載の情報処理装置であって、
前記制御部は、前記分裂が生じたとき、前記第2の移動体座標系における自己位置の推定において、分裂が生じた時刻から所定時間前まで遡って、自己位置を再計算する
情報処理装置。
【請求項18】
請求項3に記載の情報処理装置であって、
前記制御部は、前記1以上の座標系毎に、前記撮像部における撮像に関するパラメータを変化させる
情報処理装置。
【請求項19】
画像情報及び慣性情報に基づいて、情報処理装置における自己位置を推定し、
前記情報処理装置を付帯するユーザの状況を認識し、
前記自己位置の推定において、前記画像情報及び慣性情報のうちどちらをより信頼して使用するかについての比率を、前記状況に応じて変化させる
情報処理方法。
【請求項20】
画像情報及び慣性情報に基づいて、情報処理装置における自己位置を推定し、
前記情報処理装置を付帯するユーザの状況を認識し、
前記自己位置の推定において、前記画像情報及び慣性情報のうちどちらをより信頼して使用するかについての比率を、前記状況に応じて変化させる
制御部としてコンピュータを機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本技術は、自己位置を推定する情報処理装置等の技術に関する。
【背景技術】
【0002】
近年、視覚を通じて仮想空間に存在するように知覚させるVR(Virtual Reality)技術や、現実世界における実物体に仮想オブジェクトを重畳表示するAR(Augmented Reality)技術が広く知られるようになってきている。VR技術、AR技術は、例えば、ヘッドマウントディスプレイや、スマートフォン等の各種の情報処理装置に搭載されている。
【0003】
AR技術や、VR技術においては、情報処理装置における自己位置を正確に推定する必要がある(例えば、下記特許文献1参照)。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2017-072560号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、情報処理装置(ヘッドマウントディスプレイ等)を付帯するユーザが、車、電車等の乗り物に乗っているような特定の状況下にある場合、自己位置の推定の精度が低下してしまうといった問題がある。
【0006】
以上のような事情に鑑み、本技術の目的は、情報処理装置を付帯するユーザが、車、電車等の乗り物に乗っているような特定の状況下にある場合においても、自己位置を正確に推定することができる技術を提供することにある。
【課題を解決するための手段】
【0007】
本技術に係る情報処理装置は、撮像部と、慣性センサと、制御部とを具備する。
前記撮像部は、画像情報を取得する。
前記慣性センサは、慣性情報を取得する。
前記制御部は、前記画像情報及び前記慣性情報に基づいて、情報処理装置における自己位置を推定し、前記情報処理装置を付帯するユーザの状況を認識し、前記自己位置の推定において、前記画像情報及び前記慣性情報のうちどちらをより信頼して使用するかについての比率を、前記状況に応じて変化させる。
【0008】
これにより、情報処理装置を付帯するユーザが、車、電車等の乗り物に乗っているような特定の状況下にある場合においても、自己位置を正確に推定することができる。
【0009】
上記情報処理装置において、前記制御部は、前記画像情報から特徴量を抽出し、前記状況に応じて、前記自己位置の推定において、前記特徴量のうちどの特徴量を使用するかを判定してもよい。
【0010】
上記情報処理装置において、前記制御部は、前記状況に応じて、1以上の座標系を設定可能であり、前記1以上の座標系において、それぞれ自己位置を推定してもよい。
【0011】
上記情報処理装置において、前記制御部は、前記1以上の座標系においてそれぞれ前記比率が異なるように前記比率を変化させてもよい。
【0012】
上記情報処理装置において、前記1以上の座標系は、前記ユーザを乗せて移動する第1の移動体を基準とした第1の移動体座標系を含み、前記制御部は、前記第1移動体座標系における自己位置の推定において、前記画像情報及び前記慣性情報のうち前記画像情報をより信頼して使用するように前記比率を変化さてもよい。
【0013】
上記情報処理装置において、前記制御部は、前記第1移動体座標系における自己位置の推定において、前記画像情報及び前記慣性情報のうち前記画像情報のみを信頼して使用するように前記比率を変化させてもよい。
【0014】
上記情報処理装置において、前記1以上の座標系は、前記ユーザとは関連せずに移動する第2の移動体を基準とした第2の移動体座標系を含み、前記制御部は、前記第2移動体座標系における自己位置の推定において、前記画像情報及び前記慣性情報のうち前記画像情報をより信頼して使用するように前記比率を変化させてもよい。
【0015】
上記情報処理装置において、前記制御部は、前記第2移動体座標系における自己位置の推定において、前記画像情報及び前記慣性情報のうち前記画像情報のみを信頼して使用するように前記比率を変化させてもよい。
【0016】
上記情報処理装置において、前記制御部は、カルマンフィルタ処理により自己位置を推定し、前記比率は、カルマンゲインであってもよい。
【0017】
上記情報処理装置において、前記制御部は、前記画像情報から特徴量を抽出し、前記1以上の座標系毎に、前記画像情報における特徴量のうちどの特徴量を自己位置の推定に使用するかを判定してもよい。
【0018】
上記情報処理装置において、前記制御部は、前記慣性情報と、前記特徴量の動きとの一致度を判定し、前記一致度に基づいて、前記1以上の座標系毎に、前記画像情報における特徴量のうちどの特徴量を自己位置の推定に使用するかを判定してもよい。
【0019】
上記情報処理装置において、前記1以上の座標系は、地球を基準とした世界座標系と、前記ユーザを乗せて移動する第1の移動体を基準とした第1の移動体座標系とを含み、前記制御部は、前記画像情報に基づいて、前記世界座標系から前記第1の移動体座標系が分裂したかどうかを判定し、前記分裂が生じたとき、前記第1の移動体座標系を設定してもよい。
【0020】
上記情報処理装置において、前記制御部は、前記分裂が生じたとき、前記世界座標系における自己位置の推定において、分裂が生じた時刻から所定時間前まで遡って、自己位置を再計算してもよい。
【0021】
上記情報処理装置において、前記制御部は、前記分裂が生じたとき、前記第1の移動体座標系における自己位置の推定において、分裂が生じた時刻から所定時間前まで遡って、自己位置の推定を再計算してもよい。
【0022】
上記情報処理装置において、前記1以上の座標系は、地球を基準とした世界座標系と、前記ユーザとは関係なく移動する第2の移動体を基準とした第2の移動体座標系とを含み、
前記制御部は、前記画像情報に基づいて、前記世界座標系から前記第2の移動体座標系が分裂したかどうかを判定し、前記分裂が生じたとき、前記第2の移動体座標系を設定してもよい。
【0023】
上記情報処理装置において、前記制御部は、前記分裂が生じたとき、前記世界座標系における自己位置の推定において、分裂が生じた時刻から所定時間前まで遡って、自己位置の推定を再計算してもよい。
【0024】
上記情報処理装置において、前記制御部は、前記分裂が生じたとき、前記第2の移動体座標系における自己位置の推定において、分裂が生じた時刻から所定時間前まで遡って、自己位置の推定を再計算してもよい。
情報処理装置。
【0025】
上記情報処理装置において、前記制御部は、前記1以上の座標系毎に、前記撮像部における撮像に関するパラメータを変化させてもよい。
【0026】
本技術に係る情報処理方法は、画像情報及び慣性情報に基づいて、情報処理装置における自己位置を推定し、前記情報処理装置を付帯するユーザの状況を認識し、前記自己位置の推定において、前記画像情報及び前記慣性情報のうちどちらをより信頼して使用するかについての比率を、前記状況に応じて変化させる。
【0027】
本技術に係るプログラムは、画像情報及び慣性情報に基づいて、情報処理装置における自己位置を推定し、前記情報処理装置を付帯するユーザの状況を認識し、前記自己位置の推定において、前記画像情報及び慣性情報のうちどちらをより信頼して使用するかについての比率を、前記状況に応じて変化させる制御部としてコンピュータを機能させる。
【発明の効果】
【0028】
以上のように、本技術によれば、情報処理装置を付帯するユーザが、車、電車等の乗り物に乗っているような特定の状況下にある場合においても、自己位置を正確に推定することができる技術を提供することができる。
【図面の簡単な説明】
【0029】
図1】本技術の第1実施形態に係るHMDを示す斜視図である。
図2】HMDの内部構成を示すブロック図である。
図3】制御部の処理を示すフローチャートである。
図4】状況認識処理における制御部の処理を示すフローチャートである。
図5】特徴量分類処理における制御部の処理を示すフローチャートである。
図6】座標系設定処理における制御部の処理を示すフローチャートである。
図7】自己位置推定処理における制御部の処理を示すフローチャートである。
図8】自己位置再計算処理における制御部の処理を示すフローチャートである。
図9】仮想オブジェクト配置処理における制御部の処理を示すフローチャートある。
図10】ユーザが車を運転しているときに、グラス部及び表示部を介してユーザが見ている視野の一例を示す図である。
図11】ユーザが車を運転しているときに、撮像部により取得された画像情報の一例を示す図である。
図12】ユーザがリビングルームにいるときに、ユーザが見ている視野の一例を示す図である。
図13図13は、ユーザがリビングルームにいるとき撮像部により撮像された画像情報の一例を示す図である。
図14】ユーザがトロッコに乗っているときに、ユーザが見ている視野の一例を示す図である。
図15】ユーザがトロッコに乗っているときに、撮像部により撮像された画像情報の一例を示す図である。
図16】本技術の第2実施形態に係るスマートフォンを示す斜視図である。
図17】スマートフォンの内部構成を示すブロック図である。
図18】ユーザが電車をホームで待っているときに、撮像部により撮像された画像上に、仮想キャラクタが配置されたときの様子を示す図である。
図19】ユーザが電車をホームで待っているときに、電車に仮想オブジェクトが配置されたときの様子を示す図である。
図20】ユーザが電車に乗っているときの画面の一例を示す図である。
【発明を実施するための形態】
【0030】
以下、本技術に係る実施形態を、図面を参照しながら説明する。
【0031】
≪第1実施形態≫
<HMD100の全体構成及び各部の構成>
図1は、本技術の第1実施形態に係るヘッドマウントディスプレイ(以下、HMD)100を示す斜視図である。図2は、HMD100の内部構成を示すブロック図である。
【0032】
これらの図に示すように、HMD100(情報処理装置)は、HMD本体11と、制御部1と、記憶部2と、表示部3と、撮像部4と、慣性センサ5と、操作部6と、マイクロフォン7と、スピーカ8と、通信部9とを備えている。
【0033】
HMD本体11は、ユーザの頭部に装着されて使用される。HMD本体11は、フロント部12と、フロント部12の右側に設けられた右テンプル部13と、フロント部12の左側に設けられた左テンプル部14と、フロント部12の下側に取り付けられたグラス部15とを有する。
【0034】
表示部3は、シースルータイプの表示部であり、グラス部15の表面に設けられている。表示部3は、制御部1の制御に応じて、仮想オブジェクト20(図10参照)を表示することで、グラス部15を介してユーザが見ている実空間上に仮想オブジェクト20が配置されているようにユーザに認識させる。なお、表示部3は、非シースルータイプの表示部であってもよい。この場合、撮像部4により撮像された画像が表示部3上に表示される。
【0035】
撮像部4は、例えば、カメラであり、CCD(Charge Coupled Device)センサ、CMOS(Complemented Metal Oxide Semiconductor)センサ等の撮像素子と、結像レンズなど等の光学系とを含む。撮像部4は、フロント部12の外面において外向きに設けられており、ユーザの視線方向の先に存在する物体を撮像し、撮像により得られた画像情報を制御部1へと出力する。撮像部4は、フロント部12において横方向に所定の間隔を開けて2つ設けられている。なお、撮像部4が設けられる場所、数については、適宜変更可能である。
【0036】
撮像部4は、ユーザの眼を撮像する撮像部をさらに含んでいてもよい。この撮像部4は、フロント部12の内面側において内向きに設けられ、この撮像部4により撮像された眼の画像は、例えば、眼の視線推定に用いられる。
【0037】
慣性センサ5は、3軸方向の加速度を検出する3軸の加速度センサと、3軸回りの角速度を検出する角速度センサとを含む。慣性センサ5は、検出により得られた3軸方向の加速度、3軸回りの角速度を慣性情報として、制御部1に出力する。
【0038】
本実施形態では、慣性センサ5の検出軸が3軸とされているが、この検出軸は、1軸、あるいは、2軸であってもよい。また、本実施形態では、慣性センサ5として、2種類のセンサが用いられているが、慣性センサ5として1種類、あるいは、3種類以上のセンサが用いられてもよい。なお、慣性センサ5の他の例としては、速度センサ、角度センサ等が挙げられる。
【0039】
操作部6は、例えば、押圧式、接触式等の各種のタイプの操作部であり、ユーザによる操作を検出して制御部1へと出力する。図1に示す例では、操作部6は、左テンプル部14の前方側に設けられているが、操作部6が設けられる位置はユーザが操作しやすい位置であればどのような位置であってもよい。
【0040】
マイクロフォン7は、ユーザが発した声や、ユーザの周囲の環境音を電気信号に変換して、この信号を制御部1へと出力する。スピーカ8は、例えば、表示部3に表示される仮想オブジェクト20(図10参照)に関する補助情報などを音声として出力する。
【0041】
通信部9は、例えば、外部機器との間で、直接的又は間接的に通信を行う。
【0042】
制御部1は、CPU(Central Processing Unit)等により構成されている。制御部1は、記憶部2に記憶された各種のプログラムに基づき種々の演算を実行し、HMD100の各部を統括的に制御する。なお、制御部1の処理については、動作説明の欄において後に詳述する。
【0043】
記憶部2は、制御部1の処理に必要な各種のプログラムや、各種のデータが記憶される不揮発性のメモリと、制御部1の作業領域として用いられる揮発性のメモリとを含む。なお、上記各種のプログラムは、光ディスク、半導体メモリなどの可搬性の記録媒体から読み取られてもよいし、ネットワーク上のサーバ装置からダウンロードされてもよい。
【0044】
<基本的な考え方>
次に、本技術の基本的な考え方について説明する。本技術においては、ユーザがHMD100を装着(付帯)している状態で、移動体(第1の移動体)に乗っているときに、特定の座標系において正確に自己位置を推定することを目的の一つとしている。
【0045】
ここで、まず、ユーザがHMD100を装着している状態で、車を運転している場合を想定する。図10は、本実施形態において、ユーザが車を運転しているときに、グラス部15及び表示部3を介してユーザが見ている視野の一例を示す図である。
【0046】
図10に示す例では、仮想オブジェクト20がAR表示(以下、配置(定位)とも呼ぶ)されている。AR表示とは、ユーザから見て、仮想オブジェクト20が、あたかも実空間に存在する現実物体であるかのように知覚させるように表示を行うことを意味する。
【0047】
図10に示す例では、ニュースの情報を含む仮想オブジェクト20aが、車30のダッシュボード31上に配置されている。また、道案内としての矢印形の仮想オブジェクト20bが道路21に対して配置され、建物に関する情報を含む仮想オブジェクト20cが建物22に対して配置されている。また、対向車の情報を含む仮想オブジェクト20dが対向車25に対して配置されている。
【0048】
なお、仮想オブジェクト20は、ニュース、メール、スケジュール、時計、天気、音楽、ゲーム、道案内、現実の物体の情報に関するもの等、どのようなオブジェクトであってもよい。
【0049】
本実施形態においては、後述のように、撮像部4によって撮像された画像情報と、慣性センサ5によって検出された慣性情報(3軸方向の加速度、3軸方向の角速度)とに基づいて、HMD100における自己位置を推定する。
【0050】
道案内としての矢印形の仮想オブジェクト20b、建物に関する情報を含む仮想オブジェクト20cが配置される物体(道路21、建物22)は、地球を基準とした世界座標系に属している。従って、この場合には、世界座標系において自己位置が推定されるべきである。
【0051】
一方、ニュースの情報を含む仮想オブジェクト20aが表示される物体(ダッシュボード31)は、車30を基準とした移動体座標系(第1の移動体座標系)に属している。従って、この場合には、地球を基準とした世界座標系ではなく、車30を基準とした移動体座標系(第1の移動体座標系)において自己位置が推定されるべきである。
【0052】
一方、慣性センサ5により取得される慣性情報は、車30を基準とした移動体座標系(第1の移動体座標系)に基づく値ではなく、常に、地球を基準とした世界座標系に基づく値となる。
【0053】
このため、車30を基準とした移動体座標系(第1の移動体座標系)において、画像情報と、慣性情報とに基づいて自己位置が推定されるとき、何ら対策を講じないと、移動体座標系での信頼度が低い慣性情報が自己位置の推定に反映されてしまう。
【0054】
この場合、移動体座標系(第1の移動体座標系)における自己位置の推定が、不正確となり、仮想オブジェクト20aを車30のダッシュボード31上に正確に配置することができない。例えば、ユーザからすると、仮想オブジェクト20aが車30の後ろへ向けて移動して見えなくなってしまうような状況が発生する。
【0055】
本実施形態においては、このようなことが発生することを防止するための処理が実行される。典型的には、HMD100を装着(付帯)したユーザの状況(例えば、車30に乗っているかどうか)が認識され、自己位置の推定において、画像情報及び慣性情報のうちどちらをより信頼して使用するかについての比率が、ユーザの状況に応じて変化される。
【0056】
以上が、本技術の基本的な考え方である。
【0057】
次に、本技術の基本的な考え方の補足として、画像情報の扱い方について説明する。図11は、ユーザが車30を運転しているときに、撮像部4により取得された画像情報の一例を示している。
【0058】
画像情報において、車30のダッシュボード31、フレーム32、天井33等は、移動体座標系(第1の移動体座標系)に属する物体である。一方、車30の窓を介してその先に見える、道路21、ガードレール23、植木24、建物22等は、世界座標系に属する物体である。
【0059】
つまり、ユーザが車30を運転している等の特定の状況下では、画像情報には、移動体座標系(第1の移動体座標系)に属する物体と、世界座標系に属する物体とが混在する場合がある。
【0060】
画像情報に基づいて、車30を基準とした移動体座標系(第1の移動体座標系)において自己位置を推定するとき、何ら対策を講じないと、移動体座標系とは無関係である、世界座標系に属する物体が、自己位置の推定に反映されてしまう。
【0061】
従って、この場合も、移動体座標系(第1の移動体座標系)における自己位置の推定が、不正確となり、仮想オブジェクト20aを車30のダッシュボード31上に正確に配置することができない場合がある。
【0062】
一方、画像情報に基づいて、世界座標系において自己位置を推定するとき、何ら対策を講じないと、世界座標系とは無関係である、第1の移動体座標系に属する物体が、自己位置の推定に反映されてしまう。
【0063】
本実施形態においては、このようなことが発生することを防止するための処理も実行される。典型的には、HMD100を装着(付帯)したユーザの状況に応じて、自己位置の推定において、画像情報における特徴量のうちどの特徴量を使用するかが判定される。
【0064】
<動作説明>
以下、制御部1の処理について、一例を挙げて具体的に説明する。図3は、制御部1の処理を示すフローチャートである。制御部1は、状況認識処理(ステップ100)と、特徴量分類処理(ステップ200)と、座標系設定処理(ステップ300)と、自己位置推定処理(ステップ400)と、自己位置再計算処理(ステップ500)と、仮想オブジェクト配置処理(ステップ600)とをこの順番で実行する。
【0065】
「状況認識処理」
図4は、状況認識処理における制御部1の処理を示すフローチャートである。まず、制御部1は、慣性センサ5により検出された慣性情報(3軸方向の加速度、3軸回りの角速度)を取得し(ステップ101)、撮像部4により撮像された画像情報を取得する(ステップ102)。
【0066】
次に、制御部1は、画像情報に基づいて、画像認識処理を実行する(ステップ103)。そして、制御部1は、慣性情報、画像認識処理に基づいて、HMD100を装着したユーザの現在の状況を判定する(ステップ104)。
【0067】
状況の認識においては、まず、制御部1は、大まかに、ユーザが第1の移動体に乗っている状況であるか、第1の移動体には乗っていない状況であるか(建物の中にいる。外にいる等)が判定される。なお、本明細書中において、第1の移動体とは、HMD100を装着したユーザを乗せて移動する移動体である。第1の移動体は、例えば、車30、バス、電車、飛行機、トロッコ、エレベータ、エスカレータ、自転車などである。典型的には、ユーザを乗せて移動する乗り物であればどのような移動体であっても第1の移動体に該当する。
【0068】
本実施形態では、第1の移動体に乗っていれば、第1の移動体が動いていなくても、第1の移動体に乗っている状況であると判定される。なお、第1の移動体に乗っており、かつ、第1の移動体が動いているときに、第1の移動体に乗っている状況であると判定されてもよい。
【0069】
この場合、第1の移動体座標系が世界座標系から分裂(後述:ステップ305参照)してから、第1の移動体座標系が世界座標系に統合(後述:ステップ307参照)されるまでの間の区間が、第1の移動体に乗っている状況であると判定されてもよい。
【0070】
第1の移動体に乗っている場合においては、その第1の移動体の種類も判定される(車30か、電車か等)。第1の移動体に乗っていない場合、外にいる、建物の中にいる等の状況が判定されてもよい。
【0071】
また、第1の移動体に乗っている場合、第1の移動体に乗って静止している(座っている、立っている、寝ている)、歩いている、走っている等の行動が認識されてもよい。移動体に乗っていない場合にも同様に、静止している(座っている、立っている、寝ている)、歩いている、走っている等の行動が認識されてもよい。
【0072】
なお、本実施形態では、慣性情報及び画像情報(画像認識処理)の両方の情報に基づいて、ユーザの現在の状況が判定されているが、1つの情報にのみ基づいて、ユーザの現在の状況が判定されてもよい。また、マイクロフォン7によって取得された、環境音などに基づいて、ユーザの現在の状況が判定されてもよい。
【0073】
「特徴量分類処理」
次に、特徴量分類処理について説明する。図5は、特徴量分類処理における制御部1の処理を示すフローチャートである。
【0074】
本実施形態では、画像情報に基づく特徴量が、世界座標系、第1の移動体座標系及び第2の移動体座標系のうちいずれか座標系の特徴量に分類される。
【0075】
ここで、世界座標系は、地球を基準とした座標系である。第1の移動体座標系は、HMD100を装着したユーザを乗せて移動する第1の移動体を基準とした座標系である。第2の移動体座標系は、HMD100を装着したユーザとは無関係に移動する第2の移動体を基準とした座標系である。
【0076】
なお、第2の移動体について、図11を用いて説明すると、対向車線をこちら側に向けて走ってくる対向車25が第2の移動体に対応する。なお、前を走る車や、歩道を歩いる歩行者等が画像内に写っている場合には、これらも第2の移動体に該当する。典型的には、ユーザと無関係に移動する移動体であれば、どのような移動体であっても第2の移動体に該当する。
【0077】
まず、制御部1は、画像処理により、画像情報における画像全体から特徴量を抽出し、抽出された全特徴量を類似する特徴量群毎に分類して記憶部2に記憶する(ステップ201)。例えば、画像情報が、図11に示す例の場合、ダッシュボード31、フレーム32、天井33、道路21、個々の建物22、ガードレール23、個々の植木24、対向車25に対応する特徴量は、それぞれ、異なる特徴量群に分類される。
【0078】
次に、制御部1は、特徴量群を記憶部2から1つ読み出し(ステップ202)、特徴量群の動きを判定する(ステップ203)。そして、制御部1は、慣性センサ5における慣性情報(3軸方向の加速度、3軸回りの角速度)と、特徴量群の動きとの一致度を判定する(ステップ204)。
【0079】
この一致度は、例えば、後述のカルマンフィルタ処理における観測残差(観測残差の逆数)が用いられてもよい。
【0080】
次に、制御部1は、慣性情報と、特徴量群の動きとの一致度が閾値以下であるかどうかを判定する(ステップ205)。一致度が閾値を超える場合(ステップ205のNO)、制御部1は、その特徴量群を、世界座標系の特徴量に分類する(ステップ206)。
【0081】
例えば、図11に示す例では、道路21、ガードレール23、個々の植木24、個々の建物22にそれぞれ対応する特徴量群の動きは、慣性情報(3軸方向の加速度、3軸回りの角速度)との間の一致度が高い。従って、このような特徴量群は、世界座標系の特徴量に分類される。
【0082】
一方、ステップ205において、慣性センサ5における慣性情報と、特徴量群の動きとの一致度が閾値以下である場合(ステップ205のYES)、制御部1は、次のステップ207へ進む。
【0083】
例えば、図11に示す例では、ダッシュボード31、フレーム32、天井33、対向車25に対応するにそれぞれ対応する特徴量群の動きは、慣性情報(3軸方向の加速度、3軸回りの角速度)との間の一致度が低い。従って、このような特徴量群については、ステップ207以降の処理が実行される。
【0084】
ステップ207では、制御部1は、HMD100を装着したユーザが第1の移動体に乗っているかどうかを判定する。なお、第1の移動体に乗っているかどうかの判断は、状況認識処理において既に実行されている。
【0085】
ユーザが第1の移動体に乗っている場合(ステップ207のYES)、制御部1は、現在において判定の対象とされている特徴量群に対応する物体と、HMD100(ユーザ)との間の距離を測定する(ステップ208)。この距離は、例えば、2つの撮像部4によって得られた2つの画像情報(視差)に基づいて測定することができる。なお、この距離は、例えば、光、音波等を用いた距離センサにより測定されてもよい。
【0086】
次に、制御部1は、特徴量群に対応する物体と、HMD100(ユーザ)との間の距離が閾値以下であるかどうかを判定する(ステップ209)。
【0087】
上記距離が、閾値以下である場合(ステップ209のYES)、制御部1は、現在において判定の対象とされている特徴量群を、第1の移動体座標系の特徴量に分類する(ステップ210)。
【0088】
ここで、例えば、図11に示す例では、ダッシュボード31、フレーム32、天井33等の車30を構成する各部については、HMD100(ユーザ)との間の距離が近い。従って、ダッシュボード31、フレーム32、天井33等の車30を構成する各部については、上記距離が閾値以下であるとされ(ステップ209のYES)、これらに対応する特徴量群は、第1の移動体座標系の特徴量に分類される(ステップ210)。
【0089】
一方、上記距離が、閾値を超える場合(ステップ209のNO)、制御部1は、現在において判定の対象とされている特徴量群を、対応する第2の移動体座標系の特徴量に分類する(ステップ211)。
【0090】
ここで、例えば、図11に示す例では、対向車25は、HMD100(ユーザ)との間の距離が遠い。従って、対向車25については、上記距離が閾値を超える(ステップ209のNO)。この場合、対向車25に対応する特徴量群は、対向車25に対応する第2の移動体座標系の特徴量に分類される(ステップ211)。
【0091】
なお、ステップ209において上記距離と比較される閾値は、ユーザが乗っている移動体の種類に応じて異なっていてもよい。例えば、ユーザが車30に乗っているときの車体とHMD100との間の距離は、ユーザが電車90に乗っているときの車体とHMD100との間の距離とは異なることが考えられる。従って、例えば、ユーザが車30に乗っている場合の閾値が、ユーザが電車90に乗っているときの閾値よりも小さく設定されてもよい。
【0092】
なお、ステップ207において、ユーザが第1の移動体に乗っていない場合も(ステップ207のNO)、上記距離が閾値を超える場合と同様に、現在において判定の対象とされている特徴量群が、対応する第2の移動体座標系の特徴量に分類される(ステップ211)。
【0093】
一例として、例えば、ユーザが歩道を歩いるとき、対向車25が走ってきたとする。対向車25に対応する特徴量群の動きは、慣性情報との一致度が低く(ステップ205のYES)、かつ、このとき、ユーザは、第1の移動体には乗っていない(ステップ207のNO)。この場合、制御部1は、対向車25に対応する特徴量群を、対向車25に対応する第2の移動体座標系の特徴量に分類する。
【0094】
制御部1は、ステップ206、ステップ210、ステップ211の後、全ての特徴量群について分類が完了したかどうかを判定する(ステップ212)。
【0095】
分類が完了していない特徴量群が残っている場合(ステップ212のNO)、制御部1は、ステップ202へ戻り、まだ分類が完了していない特徴量群を1つ読みだして、再びステップ204以降の処理を実行する。
【0096】
ステップ212において、全ての特徴量群について分類が完了している場合(ステップ212のYES)、制御部1は、処理を終了する。
【0097】
なお、制御部1は、ステップ201~ステップ212において、慣性情報と、特徴量の動きとの一致度を判定し、一致度に基づいて、座標系毎に、画像情報における特徴量のうちどの特徴量を自己位置の推定に使用するかを判定している。
【0098】
「座標系設定処理」
次に、座標系設定処理について説明する。図6は、座標系設定処理における制御部1の処理を示すフローチャートである。
【0099】
まず、制御部1は、世界座標系が設定されているかどうかを判定する(ステップ301)。世界座標系が設定されていない場合(ステップ301のNO)、制御部1は、地球の或る特定の位置を原点として地球座標系を設定する(ステップ302)。
【0100】
次に、制御部1は、今回の特徴量分類処理において、第1の移動体座標系の特徴量に分類された特徴量群が存在したかどうかを判定する(ステップ303)。
【0101】
今回の特徴量分類処理において、第1の移動体座標系の特徴量に分類された特徴量群が存在した場合(ステップ303のYES)、制御部1は、第1の移動体座標系が設定されているかどうかを判定する(ステップ304)。第1の移動体座標系が設定されていない場合(ステップ304のNO)、制御部1は、第1の移動体における或る特定の位置を原点として第1の移動体座標系を新たに設定する(ステップ305)。これにより、世界座標系からの第1の移動体座標系の分裂が生じる。
【0102】
ステップ304において、第1の移動体座標系が既に設定されている場合(ステップ304のYES)、制御部1は、第1の移動体座標系を新たに設定する処理を実行せずに、次のステップ308へ進む。
【0103】
ステップ303において、今回の特徴量分類処理において、第1の移動体座標系の特徴量に分類された特徴量群が存在しなかった場合(ステップ303のNO)、制御部1は、第1の移動体座標系が設定されているかどうかを判定する(ステップ306)。第1の移動体座標系が設定されている場合(ステップ306のYES)、制御部1は、第1の移動体座標系を消去する(ステップ307)。これにより、第1の移動体座標系が世界座標系へ統合される。
【0104】
なお、制御部1は、第1の移動体座標系の特徴量に分類される特徴量群が存在しなくなってから所定時間(数秒程度)が経過しても、第1の移動体座標系の特徴量に分類される特徴量群が現れなかったときに、第1の移動体座標系を消去してもよい。
【0105】
ステップ306において、第1の移動体座標系が設定されていない場合(ステップ306のNO)、制御部1は、第1の移動体座標系を消去する処理を実行せずに、次のステップ308へ進む。
【0106】
ステップ308では、制御部1は、今回の特徴量分類処理において、第2の移動体座標系の特徴量に分類された特徴量群が存在したかどうかを判定する。
【0107】
今回の特徴量分類処理において、第2の移動体座標系の特徴量に分類された特徴量群が存在した場合(ステップ308のYES)、制御部1は、対応する第2の移動体座標系が設定されているかどうかを判定する(ステップ309)。対応する第2の移動体座標系が設定されていない場合(ステップ309のNO)、制御部1は、第2の移動体における或る特定の位置を原点として、第2の移動体座標系を新たに設定する(ステップ310)。これにより、世界座標系からの第2の移動体座標系の分裂が生じる。
【0108】
ステップ309において、対応する第2の移動体座標系が既に設定されている場合(ステップ309のYES)、制御部1は、第2の移動体座標系を新たに設定する処理を実行せずに、処理を終了する。
【0109】
ステップ308において、今回の特徴量分類処理において、第2の移動体座標系の特徴量に分類された特徴量群が存在しなかった場合(ステップ308のNO)、制御部1は、対応する第2の移動体座標系が設定されているかどうかを判定する(ステップ311)。対応する第2の移動体座標系が設定されている場合(ステップ311のYES)、制御部1は、第2の移動体座標系を消去する(ステップ312)。これにより、対応する第2の移動体座標系が世界座標系へ統合される。
【0110】
なお、制御部1は、第2の移動体座標系の特徴量に分類される特徴量群が存在しなくなってから所定時間(数秒程度)が経過しても、対応する第2の移動体座標系の特徴量に分類される特徴量群が現れなかったときに、第2の移動体座標系を消去してもよい。
【0111】
ステップ311において、対応する第2の移動体座標系が設定されていない場合(ステップ311のNO)、制御部1は、第2の移動体座標系を消去する処理を実行せずに、処理を終了する。
【0112】
以下、第1の移動体座標系、第2の移動体座標系による世界座標からの分裂、世界座標への統合について、一例を挙げて具体的に説明する。なお、ここでは、特徴量の分類処理を参照しつつ説明を行う。
【0113】
例えば、図11に示す例において、HMD100を装着したユーザが乗った車30が停止しているとする。車30が停止している状態では、車30は、世界座標系に属している。つまり、ダッシュボード31、フレーム32、天井33等の車30を構成する各部にそれぞれ対応する特徴量群の動きと、慣性情報との一致度は高く(ステップ205のNO)、この特徴量群は、世界座標系の特徴量に分類される(ステップ206)。
【0114】
このとき、第1の移動体座標系の特徴量に分類される特徴量群はなく、従って、まだ第1の移動体座標系は設定されていない。
【0115】
一方、停止まっている車30が走り出して、車30を構成する各部にそれぞれ対応する特徴量群の動きと、慣性情報との一致度が閾値以下となったとする(ステップ205のYES)。この場合、車30を構成する各部分と、HMD100との間の距離が閾値以下であり(ステップ209のYES)、車30を構成する各部にそれぞれ対応する特徴量群が、第1の移動体座標系の特徴量に分類される(ステップ210)。
【0116】
この場合、第1の移動体座標系の特徴量に分類される特徴量群が存在することになり(ステップ303のYES)、また、この時点では、まだ第1の移動体座標系は設定されていない(ステップ304のNO)。従って、第1の移動体座標系が新たに設定され、第1の移動体座標系が、世界座標系から分裂する(ステップ305)。
【0117】
一方、走っている車30が停止し(あるいは、車30が停止する寸前でゆっくり動いて)、車30を構成する各部にそれぞれ対応する特徴量群の動きと、慣性情報との一致度が閾値を超えたとする(ステップ205のYES)。この場合、車30を構成する各部にそれぞれ対応する特徴量群が、世界座標系の特徴量に分類される(ステップ206)。
【0118】
この場合、第1の移動体座標系の特徴量に分類される特徴量群が存在せず(ステップ303のNO)、また、この時点においては、既に第1の移動体座標系が設定されている(ステップ306のYES)。従って、第1の移動体座標系が消去され、第1の移動体座標系が、世界座標系へと統合される(ステップ307)。
【0119】
また、例えば、図11に示す例において、対向車25が停止しているとする。なお、ユーザが乗った車30は走っていても、停止していてもよい。対向車25が停止している状態では、対向車25は、世界座標系に属している。つまり、対向車25に対応する特徴量群の動きと、慣性情報との一致度は高く(ステップ205のNO)、この特徴量群は、世界座標系の特徴量に分類される(ステップ206)。
【0120】
このとき、対向車25に対応する第2の移動体座標系の特徴量に分類される特徴量群はなく、従って、まだ、対向車25に対応する第2の移動体座標系は設定されていない。
【0121】
一方、停止している対向車25が走り出して、対向車25に対応する特徴量群の動きと、慣性情報との一致度が閾値以下となったとする(ステップ205のYES)。この場合、対向車25と、HMD100との間の距離が閾値以下であり(ステップ209のNO)、対向車25に対応する特徴量群が、対向車25に対応する第2の移動体座標系の特徴量に分類される(ステップ211)。
【0122】
この場合、第2の移動体座標系の特徴量に分類される特徴量群が存在することになり(ステップ308のYES)、また、この時点では、対向車25に対応する第2の移動体座標系は設定されていない(ステップ309のNO)。従って、対向車25に対応する第2の移動体座標系が新たに設定され、この第2の移動体座標系が、世界座標系から分裂する(ステップ310)。
【0123】
一方、走っている対向車25が止まり(あるいは、対向車25が止まる寸前でゆっくり動いて)、対向車25に対応する特徴量群の動きと、慣性情報との一致度が閾値を超えたとする(ステップ205のNO)。この場合、対向車25に対応する特徴量群が、世界座標系の特徴量に分類される(ステップ206)。
【0124】
この場合、対向車25に対応する第2の移動体座標系の特徴量に分類される特徴量群が存在せず(ステップ308のNO)、また、この時点においては、既に対向車25に対応する第2の移動体座標系が設定されている(ステップ311のYES)。従って、対向車25に対応する第2の移動体座標系が消去され、第2の移動体座標系が、世界座標系へと統合される(ステップ312)。
【0125】
「自己位置推定処理」
次に、制御部1が、自己位置(自己姿勢を含む)を推定するときの処理について説明する。図7は、自己位置推定処理における制御部1の処理を示すフローチャートである。
【0126】
まず、制御部1は、仮想オブジェクト20を配置するための座標系が指定されているかどうかを判定する(ステップ401)。座標系は、例えば、アプリケーション毎に指定されており、また、指定される座標系は、アプリケーション毎に異なる場合がある。
【0127】
座標系が指定されるパターンとしては、2つのパターンがある。1つ目の指定パターンは、世界座標系、第1の移動座標系、第2の移動座標系のうち使用する座標系が1つ決められているパターンである。
【0128】
図10を参照して、道案内としての矢印形の仮想オブジェクト20b、建物に関する情報を含む仮想オブジェクト20cが配置される場合を想定する。このような仮想オブジェクト20に関するアプリケーションは、常に世界座標系を使用するという指定パターンでの指定を行う。
【0129】
2つ目のパターンは、優先すべき座標系が存在する場合には、その優先すべき座標系を使用し、該当する座標系が存在しない場合には、他の座標系を使用するという指定パターンである。例えば、第1の移動座標系が存在する場合には、第1の移動体座標系を使用し、第1の移動体座標系が存在しない場合には、地球座標系を使用するなどの指定パターンである。
【0130】
図10を参照して、ニュースの仮想オブジェクト20aが配置される場合を想定する。例えば、このような仮想オブジェクト20に関するアプリケーションは、第1の移動座標系が存在する場合には、第1の移動体座標系を使用し、第1の移動体座標系が存在しない場合には、地球座標系を使用するという指定パターンでの指定を行う。
【0131】
座標系が指定されていない場合(ステップ401のNO)、制御部1は、仮想オブジェクト20を配置するための配置対象がアプリケーションにより指定されているかどうかを判定する(ステップ402)。仮想オブジェクト20を配置するための配置対象が指定されている場合(ステップ402のYES)、制御部1は、配置対象が属する座標系を判定する(ステップ403)。
【0132】
例えば、図10を参照して、仮想オブジェクト20の配置対象として、道路21、建物22等が指定されているとする。この場合、制御部1は、道路21、建物22が属する座標系がどの座標系であるかを判定する。この判定は、道路21、建物22に対応する特徴量群が、どの座標系の特徴量に分類されたかを判断することで行うことができる(ステップ206、ステップ210、ステップ211参照)。なお、この場合、道路21、建物22が属する座標系は、世界座標系であると判定される。
【0133】
また、図10を参照して、仮想オブジェクト20の配置対象として、例えば、車30のダッシュボード31が指定されているとする。この場合、制御部1は、ダッシュボード31が属する座標系がどの座標系であるかを判定する。この判定は、ダッシュボード31に対応する特徴量群が、どの座標系の特徴量に分類されたかを判断することで行うことができる(ステップ206、ステップ210、ステップ211参照)。なお、この場合、ダッシュボード31は、車30が停止していれば、世界座標系に属すると判定され、車30が走っていれば第1の移動体座標系に属すると判定される。
【0134】
また、図12を参照して、仮想オブジェクト20の配置対象として、例えば、対向車25が指定されているとする。この場合、制御部1は、対向車25が属する座標系がどの座標系であるかを判定する。この判定は、対向車25に対応する特徴量群が、どの座標系の特徴量に分類されたかを判断することで行うことができる(ステップ206、ステップ210、ステップ211参照)。なお、対向車25は、対向車25が停止していれば、世界座標系に属すると判定され、対向車25が移動していれば、第2の移動体座標系に属すると判定される。
【0135】
なお、配置対象の指定については、アプリケーションからの指定でなく、ユーザから指定されてもよい。例えば、ユーザが特定の入力(撮像部4を介したジェスチャ入力、マイクロフォン7を介した音声入力、操作部6を介した操作入力)をすると、この入力が検出されて、配置対象が指定される。例えば、ユーザが手をダッシュボード31の方向へ伸ばして撮像部4に写る状態で、特定のジェスチャ操作をすると、ダッシュボード31が、ニュースの仮想オブジェクト20aの配置対象として指定される。
【0136】
座標系が指定されておらず(ステップ401のNO)、また、配置対象も指定されていない場合(ステップ402のNO)、制御部1は、処理を終了する。
【0137】
座標系が指定されている場合(ステップ401のYES)、並びに、配置対象が指定されていてその配置対象が属する座標系が判定された場合(ステップ402~403)、制御部1は、次のステップ404へ進む。ステップ404では、制御部1は、対応する座標系の特徴量を読みだす。
【0138】
次に、制御部1は、読み出した特徴量に基づいて、位置・姿勢の変化量Δpose1を算出する。
【0139】
なお、ここでの説明から理解されるように、世界座標系における自己位置の推定においては、世界座標系の特徴量が用いられ、第1の移動体座標系、第2の移動体座標系の特徴量は用いられない。同様に、第1の移動体座標系における自己位置の推定においては、第1の移動体座標系の特徴量が用いられ、世界座標系、第2の移動体座標系の特徴量は用いられない。同様に、第2の移動体座標系における自己位置の推定においては、第2の移動体座標系の特徴量が用いられ、世界座標系、第1の移動体座標系の特徴量は用いられない。
【0140】
制御部1は、ステップ404及びステップ405において、画像情報における特徴量に基づいてΔpose1の算出しているとき、これと並行して、ステップ406及びステップ407において慣性情報に基づいて、Δpose2の算出を行っている。
【0141】
具体的には、制御部1は、慣性センサ5から今回の慣性情報を取得し(ステップ406)、この取得した情報に基づいて、位置・姿勢の変化量を算出する(ステップ407)。
【0142】
次に、制御部1は、共分散行列に基づいて、カルマンゲインを算出する(ステップ408)。なお、本実施形態では、自己位置の推定において、カルマンフィルタ処理を基本とした処理が実行される。カルマンフィルタは、典型的には、拡張カルマンフィルタ(EKF)が用いられるが、アンセンテッド・カルマンフィルタ(UKF)が用いられてもよい。
【0143】
カルマンフィルタ処理におけるカルマンゲインは、いわば、自己位置の推定において、画像情報における特徴量に基づいて算出されるΔpose1と、慣性情報に基づいて算出されるΔpose2とのうちどちらをどの程度信頼して使用するかの比率である。
【0144】
カルマンゲインを算出すると、制御部1は、カルマンゲインを、対応する座標系に応じて変化させる(ステップ409)。つまり、本実施形態では、制御部1は、ユーザが第1の移動体に乗っているかどうかなどのユーザの各種の状況や、使用される座標系に応じて、カルマンゲインによる比率を変化させている。
【0145】
ステップ409において、例えば、制御部1は、世界座標系における自己位置の推定の場合には、カルマンゲインを変化させずにそのままの値を用いる。
【0146】
一方、第1の移動体座標系における自己位置の推定においては、画像情報に基づくΔpose1をより信頼して使用するように、カルマンゲインを変化させる。
【0147】
なお、本実施形態では、第1の移動体座標系における自己位置の推定においては、信頼度が低いΔpose2を全く信用せず、このΔpose2を自己位置の推定に全く反映させない(つまり無視する)。つまり、制御部1は、第1移動体座標系における自己位置の推定において、画像情報に基づくΔpose1及び慣性情報に基づくΔpose2のうち画像情報に基づくΔpose1のみを信頼して使用するように、カルマンゲインを変化させる。
【0148】
また、第2の移動体座標系における自己位置の推定においても、第1の移動体座標系と同様に、画像情報に基づくΔpose1をより信頼して使用するように、カルマンゲインを変化させる。
【0149】
本実施形態では、第2の移動体座標系における自己位置の推定においては、第1の移動体座標系と同様に、信頼度が低いΔpose2を全く信用せず、このΔpose2を自己位置の推定に全く反映させない(つまり無視する)。つまり、制御部1は、第2移動体座標系における自己位置の推定において、前記画像情報に基づくΔpose1及び慣性情報に基づくΔpose2のうち画像情報に基づくΔpose1のみを信頼して使用するようにカルマンゲインを変化させる。
【0150】
次に、制御部1は、画像情報に基づくΔpose1、慣性情報に基づくΔpose2及びカルマンゲインを使用して、対応する座標系における自己位置を推定する(ステップ410)。
【0151】
なお、本実施形態では、世界座標系における自己位置の推定と、第1の移動体座標系における自己位置の推定と、第2の移動体座標系における自己位置の推定とを、同時に並行して行うことが可能とされている。
【0152】
第2の移動体座標系における自己位置の推定においては、第2の移動体(例えば、対向車25)から位置情報(例えば、GPS情報(GPS:Global Positioning System))を取得できるのであれば、この位置情報が考慮されて自己位置が推定されてもよい。また、このとき、HMD100における位置情報(例えば、GPS情報)が考慮されてもよい。
【0153】
また、第1の移動体座標系、第2の移動体座標系における自己位置の推定において、世界座標系に基づく慣性情報の値を、第1の移動体座標系、第2の移動体座標系に変換して使用することもできる。
【0154】
次に、制御部1は、遅延補償、ノイズリダクション等のポストフィルタ処理を実行し(ステップ411)、処理を終了する。
【0155】
なお、遅延補償は、自己位置推定処理における計算時間(特に、画像処理)に基づく遅延を補償するために行われるが、この遅延補償は、慣性情報に基づいて行われる。一方、第1の移動体座標系、第2の移動体座標系においては、慣性情報の信頼度が低いので、慣性情報に基づく遅延補償自体が行われなくてもよい。なお、世界座標系においては、通常通り、慣性情報に基づく遅延補償が行われる。
【0156】
なお、慣性情報(世界座標に基づく値)を第1の移動体座標系、第2の移動体座標系に変換して、変換された値を遅延補償に用いてもよい。一方、慣性情報の値を座標変換するとき、この計算時間に基づく遅れが発生するため、この遅れを埋める予測が実行されてもよい。
【0157】
また、各座標系において、カルマンフィルタ内部の分散値が大きくなった場合(自己位置の推定の精度が低くなった場合)、ポストフィルタにより仮想オブジェクト20の動きが滑らかにされてもよい。
【0158】
[自己位置の再計算処理]
次に、自己位置の再計算処理について説明する。図8は、自己位置の再計算処理における制御部1の処理を示すフローチャートである。
【0159】
ここでの説明では、まず、自己位置の再計算処理を行う理由について説明する。
【0160】
上述のように、ユーザが乗った車30(第1の移動体)が停止しているとき、ダッシュボード31などの車30の各部分に対応する特徴量群は、世界座標系の特徴量に分類される(ステップ206)。そして、車30の各部分に対応する特徴量群は、世界座標系における自己位置推定用の特徴量として用いられる(ステップ404、405)。
【0161】
一方、停止している車30が走り出し、車30の各部分に対応する特徴量群の動きと、慣性情報との一致度が閾値以下となると(ステップ205のYES)、車30の各部分に対応する特徴量群が第1の移動体座標系に分類される(ステップ210)。そして、第1の移動体座標系が、世界座標系から分裂する(ステップ305)。
【0162】
ここで、停止している車30が走り出してから、上記一致度が閾値以下となるまでの区間に着目する。この区間においては、ダッシュボード31などの車30の各部分に対応する特徴量群は、世界座標の特徴量に分類され(ステップ206)、世界座標系における自己位置推定用の特徴量として用いられる(ステップ404、405)。
【0163】
つまり、上記区間においては、世界座標系に対して動いている車30の各部分の特徴量群が、世界座標系における自己位置推定用の特徴量として使用されてしまう。このため、この区間においては、世界座標系における自己位置の推定の精度が低下してしまう。
【0164】
また、第1の移動体座標系における自己位置推定の精度の観点からすると、上記区間において、世界座標系に分類された車30の各部分の特徴量群は、本来、第1の移動体座標系における自己位置推定用の特徴量として使用すべきである。
【0165】
また、停止している対向車25が走り出し、第2の移動体座標系が、世界座標系から分裂した場合にも同様のことが言える。つまり、停止している対向車25が走り出してから、上記一致度が閾値以下となるまでの区間について、世界座標系に対して動いている対向車25に対応する特徴量群が、世界座標系における自己位置推定用の特徴量として使用されてしまう。この場合も同様に、世界座標系における自己位置の推定の精度が低下してしまう。
【0166】
また、第2の移動体座標系における自己位置推定の精度の観点からすると、上記区間において、世界座標系に分類された対向車25の特徴量群は、本来、第2の移動体座標系における自己位置推定用の特徴量として使用すべきである。
【0167】
このため、本実施形態においては、図8に示す自己位置の再計算処理が実行される。
【0168】
まず、制御部1は、今回において、第1の移動体座標系が地球座標系から分裂したかどうかを判定する(ステップ501)(ステップ305参照)。
【0169】
第1の移動体座標系が世界座標系から分裂した場合(ステップ501のYES)、制御部1は、世界座標系における自己位置の推定において、分裂が生じた時刻から所定時間前(車30が走り出した瞬間)まで遡って自己位置を再計算する(ステップ502)。このとき、制御部1は、分裂が生じた時刻から所定時間前まで遡り、分裂時に上記一致度が閾値以下となった特徴量群(つまり、車30の各部に対応する特徴量群)を除いて、自己位置の推定を再計算する。
【0170】
また、第1の移動体座標系が世界座標系から分裂した場合、制御部1は、第1の移動体座標系における自己位置の推定において、分裂が生じた時刻から所定時間前(車30が走り出した瞬間)まで遡って自己位置を再計算する(ステップ503)。このとき、制御部1は、分裂が生じた時刻から所定時間前まで遡り、分裂時に上記一致度が閾値以下となった特徴量群(つまり、車30の各部に対応する特徴量群)を用いて、自己位置を再計算する。
【0171】
次に、制御部1は、今回において、第2の移動体座標系が地球座標系から分裂したかどうかを判定する(ステップ504)(ステップ310参照)。
【0172】
第2の移動体座標系が世界座標系から分裂した場合(ステップ504のYES)、制御部1は、世界座標系における自己位置の推定において、分裂が生じた時刻から所定時間前(対向車25が走り出した瞬間)まで遡って自己位置を再計算する(ステップ505)。このとき、制御部1は、分裂が生じた時刻から所定時間前まで遡り、分裂時に上記一致度が閾値以下となった特徴量群(つまり、対向車25に対応する特徴量群)を除いて、自己位置を再計算する。
【0173】
また、第2の移動体座標系が世界座標系から分裂した場合、制御部1は、第2の移動体座標系における自己位置の推定において、分裂が生じた時刻から所定時間前(対向車25が走り出した瞬間)まで遡って自己位置を再計算する(ステップ506)。このとき、制御部1は、分裂が生じた時刻から所定時間前まで遡り、分裂時に上記一致度が閾値以下となった特徴量群(つまり、対向車25に対応する特徴量群)を用いて、自己位置を再計算する。
【0174】
[仮想オブジェクト配置処理]
次に、制御部1が、各座標系において仮想オブジェクト20を実空間における物体に対して配置するときの処理について説明する。図9は、仮想オブジェクト配置処理を示すフローチャートある。
【0175】
まず、制御部1は、今回において仮想オブジェクト20を初期配置するかどうかを判定する(ステップ601)。仮想オブジェクト20を初期配置する場合(ステップ601のYES)、制御部1は、ステップ604へ進む。
【0176】
一方、仮想オブジェクト20が既に配置されている場合(ステップ601のNO)、制御部1は、今回において、対応する座標系が地球座標系から分裂したかどうかを判定する(ステップ602)(ステップ305、ステップ310参照)。
【0177】
対応する座標系が地球座標系から分裂した場合(ステップ602のYES)、制御部1は、次のステップ604へ進む。一方、対応する座標系が地球座標系から分裂していない場合(ステップ602のNO)、制御部1は、今回において対応する座標系が地球座標系へ統合されたかどうかを判定する(ステップ603)(ステップ307、ステップ312参照)。
【0178】
対応する座標系が地球座標系へ統合された場合(ステップ603のYES)、制御部1は、次のステップ604へ進む。
【0179】
ステップ604では、制御部1は、座標系が指定されているかどうかを判定する。
【0180】
座標系が指定されるパターンとしては、上述のように、2つのパターンがある。1つ目の指定パターンは、世界座標系、第1の移動座標系、第2の移動座標系のうち使用する座標系が1つ決められているパターンである。2つ目のパターンは、優先すべき座標系が存在する場合には、その優先すべき座標系を使用し、該当する座標系が存在しない場合には、他の座標系を使用するという指定パターンである。
【0181】
座標系が指定されていない場合(ステップ604のNO)、制御部1は、仮想オブジェクト20の配置対象が指定されているかどうかを判定する(ステップ605)。配置対象が指定されている場合(ステップ605のYES)、制御部1は、その配置対象が属する座標系を判定する(ステップ606)。
【0182】
座標系が指定されておらず(ステップ604のNO)、また、配置対象も指定されていない場合(ステップ605のNO)、制御部1は、処理を終了する。
【0183】
なお、ステップ604~ステップ606においては、上述のステップ401~403と基本的に同様の処理が実行される。
【0184】
座標系が指定されている場合(ステップ604のYES)、並びに、配置対象が指定されていてその配置対象が属する座標系が判定された場合(ステップ606)、制御部1は、次のステップ607へ進む。ステップ607では、制御部1は、対応する座標系(その座標系における自己位置)を使用して、仮想オブジェクト20を配置すべき位置、姿勢を算出する。
【0185】
そして、制御部1は、仮想オブジェクト20がその位置、姿勢に見えるように、配置対象に対して仮想オブジェクト20を重畳して表示する(ステップ609)。なお、仮想オブジェクト20に含まれる文字、図形、記号などの情報は、その情報が必要なときにネットワークを介して受信されてもよいし、予め記憶部2に記憶されていてもよい。
【0186】
今回において、仮想オブジェクト20の初期配置でもなく、対応する座標系の分裂、統合も生じていない場合(ステップ603のNO)、制御部1は、ステップ608へ進む。ステップ608では、制御部1は、制御部1は、前回と同じ座標系(その座標系における自己位置)を使用して、仮想オブジェクト20を配置すべき位置、姿勢を算出する。そして、制御部1は、仮想オブジェクト20を表示するように、表示部3へ指示を出す(ステップ609)。
【0187】
なお、仮想オブジェクト20が一旦初期配置されば、仮想オブジェクト20が消去されるタイミングまでは、仮想オブジェクト20を配置すべき位置・姿勢については、仮想オブジェクト20(配置対象)が画像(視界)からはずれても算出される。また、ユーザが、仮想オブジェクト20の方向を向いていれば、仮想オブジェクト20が表示されるが、仮想オブジェクト20と違う方向を向いているときには仮想オブジェクト20は表示されない。
【0188】
一例として、図10を参照して、道路21、建物22に仮想オブジェクト20が初期配置される場合について説明する。なお、ユーザが乗った車30は、停止していても、走っていてもよい。
【0189】
道案内としての矢印の仮想オブジェクト20bは、例えば、運転が開始されるタイミングで道路21に対して初期配置される(ステップ601のYES)(運転が終了するタイミングで消去される)。あるいは、この仮想オブジェクト20bは、道案内が必要である所定のタイミングで道路21に対して初期配置される(ステップ601のYES)(そのタイミングを過ぎると消去される)。
【0190】
また、建物に関する情報を含む仮想オブジェクト20cは、HMD100(ユーザ)から建物22までの距離が所定の閾値以下となったタイミングで建物22に対して初期配置される(ステップ601のYES)(建物22までの距離が所定の閾値を超えたタイミングで消去される)。
【0191】
なお、ここでの例では、座標系の指定について、常に世界座標系を使用するという指定パターンでの指定が行われているとする(ステップ604のYES)。
【0192】
この場合、制御部1は、世界座標系を使用して、仮想オブジェクト20を(初期)配置すべき位置、姿勢を算出し(ステップ607)、仮想オブジェクト20を表示部3上に表示させる(ステップ609)。
【0193】
仮想オブジェクト20が初期配置された後、制御部1は、前回と同じ世界座標系を使用して、仮想オブジェクト20を配置すべき位置、姿勢を算出する(ステップ608)。
【0194】
次に、図10を参照して、ニュースに関する仮想オブジェクト20aがダッシュボード31上に初期配置される場合について説明する。
【0195】
ニュースに関する仮想オブジェクト20aは、例えば、ユーザからの指示があったタイミグで、ダッシュボード31上に初期配置される。例えば、ユーザがダッシュボード31を指さす(ジェスチャ入力)と仮想オブジェクト20の配置対象として、車30のダッシュボード31が指定され、このとき、仮想オブジェクト20がダッシュボード31上に対して初期配置される。
【0196】
まず、車30が停止している状態で仮想オブジェクト20aが初期配置されるとする(ステップ601のYES)。このとき、制御部1は、配置対象であるダッシュボード31が世界座標系に属していると判定し(ステップ605~606)、世界座標系を使用して、仮想オブジェクト20aを(初期)配置すべき位置、姿勢を算出する(ステップ607)。
【0197】
仮想オブジェクト20aが初期配置された後、車30が停止した状態を維持している限りは、制御部1は、前回と同じ世界座標系を使用して、仮想オブジェクト20aを配置すべき位置、姿勢を算出する(ステップ608)。
【0198】
次に、ユーザが乗った車30が走っている状態で仮想オブジェクト20aが初期配置されるとする(ステップ601のYES)。この場合、制御部1は、配置対象であるダッシュボード31が第1の移動体座標系に属していると判定し(ステップ605~606)、第1の移動体座標系を使用して、仮想オブジェクト20を(初期)配置すべき位置、姿勢を算出する。
【0199】
仮想オブジェクト20が初期配置された後、車30が走っている状態を維持している限りは、制御部1は、前回と同じ第1の移動体座標系を使用して、仮想オブジェクト20を配置すべき位置、姿勢を算出する(ステップ608)。
【0200】
次に、図10を参照して、対向車に関する情報を含む仮想オブジェクト20dが対向車25に初期配置される場合について説明する。なお、ユーザが乗った車30は、停止していても、走っていてもよい。
【0201】
対向車に関する情報を含む仮想オブジェクト20dは、HMD100(ユーザ)から対向車25までの距離が所定の閾値以下となったタイミングで対向車25に対して初期配置される(対向車25までの距離が所定の閾値を超えたタイミングで消去される)。なお、仮想オブジェクト20の配置対象として、対向車25が指定されているとする。
【0202】
まず、対向車25が止まっている状態で仮想オブジェクト20dが初期配置されるとする(ステップ601のYES)。この場合、仮想オブジェクト20dの配置対象である対向車25が属する座標系が、世界座標系であると判定される(ステップ605~606)。この場合、制御部1は、世界座標系を使用して、仮想オブジェクト20dを(初期)配置すべき位置、姿勢を算出する(ステップ607)。
【0203】
仮想オブジェクト20が初期配置された後、対向車25が停止した状態を維持している限りは、制御部1は、前回と同じ世界座標系を使用して、仮想オブジェクト20dを配置すべき位置、姿勢を算出する(ステップ608)。
【0204】
次に、対向車25が走っている状態で仮想オブジェクト20dが初期配置されるとする(ステップ601のYES)。この場合、仮想オブジェクト20dの配置対象である対向車25が属する座標系が、対向車25に対応する第2の移動体座標系であると判定される(ステップ605~606)。この場合、制御部1は、対向車25に対応する第2の移動体座標系を使用して、仮想オブジェクト20を初期配置すべき位置、姿勢を算出する(ステップ607)。
【0205】
仮想オブジェクト20が初期配置された後、対向車25が走っている状態を維持している限りは、制御部1は、前回と同じ第2の移動体座標系を使用して、仮想オブジェクト20を配置すべき位置、姿勢を算出する(ステップ608)。
【0206】
次に、図10を参照して、ニュースに関する仮想オブジェクト20aがダッシュボード31上に既に配置されている状態で、停止している車30が走り出した場合を想定する。
【0207】
停止している車30が走り出し、車30の各部分に対応する特徴量群の動きと、慣性情報との一致度が閾値以下となると(ステップ205のYES)、車30の各部分に対応する特徴量群が第1の移動体座標系に分類される(ステップ210)。これにより、今回において、第1の移動体座標系が、世界座標系から分裂する(ステップ602のYES)(ステップ305参照)。
【0208】
この場合、仮想オブジェクト20の配置対象であるダッシュボード31が属する座標系が、第1の移動体座標系であると判定される(ステップ605~606)。次に、制御部1は、第1の移動体座標系を使用して、仮想オブジェクト20を配置すべき位置、姿勢を算出する(ステップ607)。つまり、制御部1は、停止している車30が走り出したとき、使用する座標系を、世界座標系から第1の移動体座標系へと切換える。
【0209】
なお、第1の移動体座標系が世界座標系から分裂した後、車30が走っている状態を維持している限りは、制御部1は、前回と同じ第1の移動体座標系を使用して、仮想オブジェクト20を配置すべき位置、姿勢を算出する(ステップ608)。
【0210】
次に、図10を参照して、対向車25の仮想オブジェクト20dが対向車25に既に配置されている状態で、停止している対向車25が走り出した場合を想定する。なお、ユーザが乗った車30は、停止していても、走っていてもよい。
【0211】
停止している対向車25が走り出し、対向車25に対応する特徴量群の動きと、慣性情報との一致度が閾値以下となると(ステップ205のYES)、対向車25に対応する特徴量群が第2の移動体座標系に分類される(ステップ210)。これにより、今回において、対向車25に対応する第2の移動体座標系が、世界座標系から分裂する(ステップ602のYES)(ステップ310参照)。
【0212】
この場合、仮想オブジェクト20dの配置対象である対向車25が属する座標系が、対向車25に対応する第2の移動体座標系であると判定される(ステップ605~606)。次に、制御部1は、対向車25に対応する第2の移動体座標系を使用して、仮想オブジェクト20を配置すべき位置、姿勢を算出する(ステップ607)。つまり、制御部1は、停止している対向車25が走り出したとき、使用する座標系を、世界座標系から第2の移動体座標系へと切換える。
【0213】
なお、第2の移動体座標系が世界座標系から分裂した後、対向車25が走っている状態を維持している限りは、制御部1は、前回と同じ第2の移動体座標系を使用して、仮想オブジェクト20を配置すべき位置、姿勢を算出する(ステップ608)。
【0214】
次に、図10を参照して、ニュースに関する仮想オブジェクト20aがダッシュボード31上に既に配置されている状態で、走っている車30が停止した場合を想定する。
【0215】
走っている車30が停止し、車30の各部分に対応する特徴量群の動きと、慣性情報との一致度が閾値を超えると(ステップ205のNO)、車30の各部分に対応する特徴量群が世界座標系に分類される(ステップ206)。これにより、今回において、第1の移動体座標系が、世界座標系へ統合される(ステップ603のYES)(ステップ307参照)。
【0216】
この場合、仮想オブジェクト20aの配置対象であるダッシュボード31が属する座標系が、世界移動体座標系であると判定される(ステップ605~606)。この場合、制御部1は、世界座標系を使用して、仮想オブジェクト20aを配置すべき位置、姿勢を算出する(ステップ607)。つまり、制御部1は、走っている車30が停止したとき、使用する座標系を、第1の移動体座標系から世界座標系へと切換える。
【0217】
なお、第1の移動体座標系が世界座標系へ統合された後、車30が停止している状態を維持している限りは、制御部1は、前回と同じ世界座標系を使用して、仮想オブジェクト20aを配置すべき位置、姿勢を算出する(ステップ608)。
【0218】
次に、図10を参照して、対向車に関する情報を含む仮想オブジェクト20dが対向車25に既に配置されている状態で、走っている対向車25が停止した場合を想定する。なお、ユーザが乗った車30は、停止していても、走っていてもよい。
【0219】
走っている対向車25が停止し、対向車25に対応する特徴量群の動きと、慣性情報との一致度が閾値を超えると(ステップ205のNO)、対向車25に対応する特徴量群が世界座標系に分類される(ステップ206)。これにより、今回において、対向車25に対応する第2の移動体座標系が、世界座標系へ統合される(ステップ603のYES)(ステップ312参照)。
【0220】
この場合、制御部1は、仮想オブジェクト20の配置対象である対向車25が属する座標系が、世界座標系であると判定し(ステップ605~606)、世界座標系を使用して、仮想オブジェクト20dを配置すべき位置、姿勢を算出する(ステップ607)。つまり、制御部1は、走っている対向車25が停止したとき、使用する座標系を、第2の移動体座標系から世界座標系へと切換える。
【0221】
なお、第2の移動体座標系が世界座標系へ統合された後、対向車25が停止している状態を維持している限りは、制御部1は、前回と同じ世界座標系を使用して、仮想オブジェクト20dを配置すべき位置、姿勢を算出する(ステップ608)。
【0222】
[適用例1]
(リビングルーム)
次に、本技術の適用例について説明する。まず、リビングルームにおいて、仮想オブジェクト20が配置される場合について説明する。
【0223】
図12は、ユーザがリビングルームにいるときに、ユーザが見ている視野の一例を示す図である。図13は、ユーザがリビングルームにいるとき撮像部4により撮像された画像情報の一例を示す図である。
【0224】
図12においては、ニュースに関する情報を含む仮想オブジェクト20aがテレビ41の上側の配置されており、メールに関する情報を含む仮想オブジェクト20eがユーザの椅子42の上側に配置されている。なお、メールの仮想オブジェクト20eは、家族における個別の椅子42に対して、家族の個別の仮想オブジェクト20eが配置されてもよい。
【0225】
例えば、HMD100を装着したユーザが、リビングルームに立ち、テレビ41、椅子42が存在する方向を見ているとする。
【0226】
この場合、まず、状況認識処理において、慣性情報及び画像情報に基づいて、ユーザの状況が認識される(ステップ101~ステップ104)。この場合、少なくとも第1の移動体に乗っているか、乗っていないかが判定され、この場合には、移動体に乗っていないと判定される。
【0227】
次に、特徴量分類処理において、画像全体における全特徴量が類似する特徴量群毎に分類される(ステップ201)。このとき、図13に示す画像全体における全特徴量が、テレビ41、テレビ台43、椅子42、テーブル44、壁45等に対応する特徴量群に分類される。
【0228】
今、テレビ41、テレビ台43、椅子42、テーブル44、壁45などは、静止しているので、これらに対応する特徴量群は、慣性情報との一致度が高い(ステップ205のYES)。従って、これらに対応する特徴量群は、全て、世界座標系の特徴量に分類される(ステップ206)。
【0229】
次に、座標系設定処理において、世界座標系が設定されていなければ(ステップ301のNO)、世界座標系が設定される(ステップ302)。
【0230】
次に、自己位置推定処理が実行される。なお、ここでの例では、ニュースに関する情報を含む仮想オブジェクト20aの配置対象がテレビ41に指定されており、また、メールに関する情報を含む仮想オブジェクト20eの配置対象が椅子42に指定されているとする。
【0231】
この場合、配置対象であるテレビ41、椅子42が属する座標系が、世界座標系であると判定され(ステップ402~403)、世界座標系の特徴量に基づいて、位置・姿勢変化量Δpose1が推定される(ステップ404~405)。これと並行して、慣性情報に基づいて、位置・姿勢変化量Δpose2が推定される(ステップ406~407)。
【0232】
次に、共分散行列に基づいて、カルマンゲインが算出される(ステップ408)。次に、カルマンゲインの調整が行われるが(ステップ407)、世界座標系での自己位置推定であるので、カルマンゲインの値は、そのままの値が用いられる。
【0233】
次に、Δpose1、Δpose2及びカルマンゲインに基づいて、世界座標系において自己位置が推定され(ステップ410)、その後、ポストフィルタ処理が実行される(ステップ411)。ポストフィルタ処理において、世界座標系での自己位置推定であるので、慣性情報を用いた遅延補償が実行される。
【0234】
次に、仮想オブジェクト20の配置処理が実行される。まだ、仮想オブジェクト20a、20eが配置されていない場合、初期配置であると判定される(ステップ601のYES)。ここでの例では、配置対象がテレビ41、椅子42に指定されているので(ステップ605のYES)、テレビ41、椅子42が属する座標系が世界座標系であると判定される(ステップ606)。そして、世界座標系を使用して、仮想オブジェクト20a、20eを配置すべき位置、姿勢が算出され(ステップ607)、この位置に、仮想オブジェクト20a、20eが表示される(ステップ606)。
【0235】
仮想オブジェクト20a、20eが初期配置された後、テレビ41、椅子42が静止している限りは、前回と同じ世界座標系を使用して、仮想オブジェクト20a、20eを配置すべき位置、姿勢が算出される(ステップ608)。
【0236】
次に、既に仮想オブジェクト20eが配置されている状態で、静止している椅子42が移動した場合を想定する。この場合、まず、状況認識処理において、少なくとも第1の移動体に乗っているか、乗っていないかが判定され、この場合には、移動体に乗っていないと判定される。
【0237】
次に、特徴量分類処理において、画像全体における全特徴量が類似する特徴量群毎に分類される(ステップ201)。このとき、図13に示す画像全体における全特徴量が、テレビ41、テレビ台43、椅子42、テーブル44、壁45等に対応する特徴量群に分類される。
【0238】
今、テレビ41、テレビ台43、テーブル44、壁45などは、静止しているので、これらに対応する特徴量群は、慣性情報との一致度が高い(ステップ205のYES)。従って、これらに対応する特徴量群は、世界座標系の特徴量に分類される(ステップ206)。
【0239】
一方、椅子42が動きだして、椅子42に対応する特徴量群の動きと、慣性情報との間の一致度が閾値以下となったとする(ステップ205のYES)。このとき、ユーザは、第1の移動体には乗っていないので(ステップ207のNO)、椅子42に対応する特徴量群は、椅子42に対応する第2の移動体座標系の特徴量に分類される(ステップ211)。
【0240】
次に、座標系設定処理が実行される。ここでの例では、第2の移動体座標系に分類された特徴量が存在し(ステップ308のYES)、かつ、未だ、椅子42に対応する第2の移動体座標系が設定されていない(ステップ309のNO)。従って、椅子42に対応する第2の移動体座標系が新たに設定され(ステップ310)、これにより、椅子42に対応する第2の移動体座標系が世界座標系から分裂する。
【0241】
次に、自己位置推定処理が実行される。ここでの例では、テレビ41が配置対象として指定されているので、テレビ41が属する世界座標系の特徴量に基づいて、位置・姿勢変化量Δpose1が推定される(ステップ402~ステップ405)。このとき、椅子42に対応する第2の移動体座標系の特徴量は用いられない。なお、テレビ41に対して配置される仮想オブジェクト20aに関する以降の処理については、基本的に上述の処理と同様であるため、説明を省略する。
【0242】
一方、ここでの例では、椅子42が配置対象として指定されているので、椅子42が属する第2の移動体座標系の特徴量に基づいて、位置・姿勢変化量Δpose1が推定される(ステップ402~ステップ405)。なお、このとき、世界座標系の特徴量は用いられない。これと並行して、慣性情報に基づいて、位置・姿勢変化量Δpose2が推定される(ステップ406、ステップ407)。
【0243】
次に、共分散行列に基づいて、カルマンゲインが算出され(ステップ408)、カルマンゲインの調整が行われる(ステップ407)。このとき、第2の移動体座標系での自己位置推定であるので、慣性情報に基づくΔpose2を、全く信頼しない(無視する)ようにカルマンゲインが調整される。
【0244】
次に、Δpose1、Δpose2及びカルマンゲインに基づいて、第2の移動体座標系において自己位置が推定され(ステップ410)、その後、ポストフィルタ処理が実行される(ステップ411)。ポストフィルタ処理において、第2の移動体座標系での自己位置推定であるので、慣性情報を用いた遅延補償は実行されない。
【0245】
次に、自己位置の再計算処理が実行される。椅子42に対応する第2の移動体座標系が、世界座標系から分裂したとき(ステップ504のYES)、世界座標系における自己位置の推定において、分裂が生じた時刻から所定時間前(椅子42が動きだした瞬間)まで遡って自己位置が再計算される(ステップ505)。この場合、分裂が生じた時刻から所定時間前まで遡り、椅子42に対応する特徴量群が除かれて、自己位置の推定が再計算される。
【0246】
また、椅子42に対応する第2の移動体座標系が、世界座標系から分裂したとき、第2の移動体座標系における自己位置の推定において、分裂が生じた時刻から所定時間前(椅子42が動きだした瞬間)まで遡って自己位置の推定が再計算される(ステップ506)。この場合、分裂が生じた時刻から所定時間前まで遡り、椅子42に対応する特徴量群が用いられて、自己位置の推定が再計算される。
【0247】
次に、仮想オブジェクト20の配置処理が実行される。今回において、椅子42に対応する第2の移動体が分裂すると(ステップ602のYES)、仮想オブジェクト20eの配置対象である椅子42が属する座標系が、第2の移動体座標系であると判定される(ステップ605、606)。そして、椅子42に対応する第2の移動体座標系が使用されて、仮想オブジェクト20eを配置すべき位置、姿勢が算出される(ステップ607)。
【0248】
なお、椅子42が動いている限りは、前回と同じ第2の移動体座標系を使用して、仮想オブジェクト20eを配置すべき位置、姿勢が算出される(ステップ608)。
【0249】
次に、既に仮想オブジェクト20eが配置されている状態で、動いている椅子42が停止した場合を想定する。まず、状況認識処理が実行され、その後、特徴量分類処理において、画像全体における全特徴量が類似する特徴量群毎に分類される。
【0250】
動いている椅子42が停止しようとして、椅子42に対応する特徴量群の動きと、慣性情報との間の一致度が閾値を超えたとする(ステップ205のNO)。この場合、椅子42に対応する特徴量群は、世界座標系の特徴量に分類される(ステップ211)。なお、テレビ41、テレビ台43、テーブル44、壁45などに対応する特徴量群についても、世界座標系の特徴量に分類される。
【0251】
次に、座標系設定処理が実行される。ここでの例では、第2の移動体座標系に分類された特徴量が存在せず(ステップ308のNO)、かつ、椅子42に対応する第2の移動体座標系が設定されている(ステップ311のYES)。従って、椅子42に対応する第2の移動体座標系が消去され(ステップ312)、これにより、椅子42に対応する第2の移動体座標系が世界座標系へ統合される。
【0252】
次に、自己位置推定処理が実行される。ここでの例では、椅子42が配置対象として指定されているので、椅子42が属する世界座標系の特徴量に基づいて、位置・姿勢変化量Δpose1が推定される(ステップ402~ステップ405)。これと並行して、慣性情報に基づいて、位置・姿勢変化量Δpose2が推定される(ステップ406、ステップ407)。
【0253】
次に、共分散行列に基づいて、カルマンゲインが算出され(ステップ408)、カルマンゲインの調整が行われる(ステップ407)。このとき、世界座標系での自己位置推定であるので、カルマンゲインはそのままの値が用いられる。
【0254】
次に、Δpose1、Δpose2及びカルマンゲインに基づいて、世界座標系において自己位置が推定され(ステップ410)、その後、ポストフィルタ処理が実行される(ステップ411)。ポストフィルタ処理において、世界座標標系での自己位置推定であるので、慣性情報を用いた遅延補償が実行される。
【0255】
次に、仮想オブジェクト20の配置処理が実行される。今回において、椅子42に対応する第2の移動体が世界座標系へ統合されると(ステップ603のYES)、仮想オブジェクト20eの配置対象である椅子42が属する座標系が、世界座標系であると判定される(ステップ605~606)。そして、世界座標系が使用されて、仮想オブジェクト20を配置すべき位置、姿勢が算出される(ステップ607)。
【0256】
なお、椅子42が静止している限りは、前回と同じ世界座標系を使用して、仮想オブジェクト20を配置すべき位置、姿勢が算出される(ステップ608)。
【0257】
[適用例2]
(車30に乗っている場合)
次に、ユーザが車30に乗っている状態での仮想オブジェクト20の配置例について説明する。なお、ユーザが車30に乗っている状態での仮想オブジェクト20の配置例については、図10及び図11を参照して既に上述されているため、ここでは、時系列に沿って、簡単に説明する。
【0258】
例えば、ユーザが、リビングルームに居るときに(図12図13参照)、テレビ41の上に配置されたニュースの仮想オブジェクト20aの方向へ手を伸ばし、手が撮像部4に写る状態で特定のジェスチャをしたとする。この場合、ニュースの仮想オブジェクト20aが、小さくなって、HMD100(ユーザ)を中心として浮遊する。そして、この仮想オブジェクト20aは、ユーザが移動すると、ユーザの移動に合わせて移動する(ユーザが移動しても、ユーザから一定の距離の位置に見える)。
【0259】
なお、これを実現するため、制御部1は、例えば、以下のような処理を実行する。まず、制御部1は、ユーザから特定の入力(撮像部4を介したジェスチャ入力、マイクロフォン7を介した音声入力、操作部6を介した操作入力等)があったかどうかを判定する。特定の入力があった場合、制御部1は、世界座標系においてユーザが移動すると、仮想オブジェクト20aの配置位置がユーザから一定の距離となるように、世界座標系における仮想オブジェクト20aの配置位置を変更する(付いてくる設定)。そして、制御部1は、配置位置の変更に応じて、表示部3上においてその位置に仮想オブジェクト20aが浮遊しているように表示を行う。
【0260】
なお、制御部1は、ユーザから特定の入力を検出したとき、仮想オブジェクト20が属する座標系を世界座標系から自己座標系(HMD100が中心となる座標系)に切り替えてもよい。そして、制御部1は、仮想オブジェクト20がユーザから一定の距離の位置に浮遊するように表示を行ってもよい。
【0261】
次に、ユーザが車30の運転席に乗り込み、ダッシュボード31の方向へ手を伸ばし、特定のジェスチャ操作をしたとする。この場合、ニュースの仮想オブジェクト20aの配置対象として、ダッシュボード31が指定される。
【0262】
このとき、まず、状況認識処理において、ユーザが第1の移動体の乗っていると判定される。今、車30は停止しているので、特徴量分類処理において、対向車25などの動いている物体が存在しない限り、全ての特徴量群は、世界座標系の特徴量に分類される(ステッ206)。
【0263】
自己位置の推定処理において、配置対象であるダッシュボード31が属する座標系が、世界座標系であると判定され(ステップ402、403)、世界座標系において自己位置が推定される(ステップ404~ステップ411)。
【0264】
仮想オブジェクト配置処理において、ユーザの周りに浮遊しているニュースの仮想オブジェクト20aが、ダッシュボード31に対して初期配置されるとき(ステップ601のYES)、ダッシュボード31が属する座標系が、世界座標系であると判定される(ステップ605~606)。そして、世界座標系が使用されて、ニュースの仮想オブジェクト20aを配置すべき位置、姿勢が算出される(ステップ607)。
【0265】
なお、車30内において、例えば、種類の異なる複数の仮想オブジェクト20を配置することも可能である。
【0266】
ユーザが運転を開始して、車30が走り出し、車30の各部分に対応する特徴量群の動きと、慣性情報との一致度が閾値以下となると(ステップ205のYES)、車30の各部分に対応する特徴量群が第1の移動体座標系に分類される(ステップ210)。そして、第1の移動体座標系が、世界座標系から分裂する(ステップ305)。
【0267】
自己位置推定処理において、配置対象であるダッシュボード31が属する座標系が、第1の移動体座標系であると判定され(ステップ402~403)、第1の移動体座標系において自己位置が推定される(ステップ404~ステップ411)。
【0268】
自己位置再計算処理において、車30に対応する第1の移動体座標系が世界座標系から分裂したとき(ステップ501のYES)、世界座標系において、分裂が生じた時刻から所定時間前(車30が走りだした瞬間)まで遡って自己位置が再計算される(ステップ502)。この場合、分裂が生じた時刻から所定時間前まで遡り、車30に対応する特徴量群が除かれて、自己位置が再計算される。
【0269】
また、第1の移動体座標系が、世界座標系から分裂したとき、第1の移動体座標系における自己位置の推定において、分裂が生じた時刻から所定時間前(車30が走りだした瞬間)まで遡って自己位置の推定が再計算される(ステップ503)。この場合、分裂が生じた時刻から所定時間前まで遡り、車30の各部に対応する特徴量群が用いられて、自己位置が再計算される。
【0270】
次に、仮想オブジェクト20の配置処理が実行される。今回において第1の移動体座標系が世界座標系から分裂したとき(ステップ602のYES)、ダッシュボード31が属する第1の移動体座標系を使用して、ニュースの仮想オブジェクト20aを配置すべき位置、姿勢が算出される(ステップ605~607)。
【0271】
車30が走っているとき、世界座標系において、自己位置が推定される(ステップ401~411)。
【0272】
仮想オブジェクト配置処理において、道案内としての矢印の仮想オブジェクト20bが表示されるタイミングとなったとする(ステップ601のYES)。この場合、道路21が属する世界座標系を使用して、仮想オブジェクト20bを配置すべき位置・姿勢が算出される(ステップ607)。
【0273】
また、仮想オブジェクト配置処理において、HMD100(ユーザ)から建物22までの距離が閾値以下となったとする(ステップ601のYES)。この場合、建物22が属する世界座標系を使用して、建物に関する情報を含む仮想オブジェクト20cを配置すべき位置・姿勢が算出される(ステップ607)。
【0274】
また、車30が走っているときに、対向車25(走っている)が存在すると、対向車25に対応する第2の移動体座標系において、自己位置が推定される(ステップ401~411)。
【0275】
仮想オブジェクト配置処理において、HMD100(ユーザ)から対向車25までの距離が閾値以下となったとする(ステップ601のYES)。この場合、対向車25が属する第2の移動体座標系を使用して、対向車に関する情報を含む仮想オブジェクト20dを配置すべき位置・姿勢が算出される(ステップ607)。
【0276】
走っている車30が停止しようとして、車30の各部分に対応する特徴量群の動きと、慣性情報との一致度が閾値を超えると(ステップ205のNO)、車30の各部分に対応する特徴量群が世界座標系に分類される(ステップ206)。そして、第1の移動体座標系が、世界座標系へ統合される(ステップ307)。
【0277】
自己位置推定処理において、ダッシュボード31が属する世界座標系において、自己位置が推定される(ステップ401~411)。
【0278】
仮想オブジェクト配置処理において、第1の移動体座標系が世界座標系へ統合されたとき(ステップ603のYES)、ダッシュボード31が属する世界座標系を使用して、ニュースの仮想オブジェクト20aを配置すべき位置、姿勢が算出される(ステップ607)。
【0279】
ユーザが、車30内に配置した仮想オブジェクト20aをそのままにして(持ち出すこともできる)、車30を出たとする。この後、車30に戻ってきたとき、仮想オブジェクト20aにおいて、同じ状態が再現されてもよい。これは、例えば、制御部1が、ユーザが車30を出たときの仮想オブジェクト20aの状態(配置対象の特徴量と、仮想オブジェクト20aとの位置関係等)を記憶しておくことで実現することができる。
【0280】
また、例えば、ユーザが車30に乗っている(歩いていてもよい)ときに、地球上の特定の地点の方向に手を向けて特定のジェスチャを行うと、目印としてのピン形の仮想オブジェクト20が地球上の特定の地点に配置されてもよい。このピン形の仮想オブジェクト20は、ユーザが再び、その場所を訪れたときに同じ場所に立っているように表示が行われる。
【0281】
なお、これを実現するために、例えば、制御部1は、ユーザから特定の入力(撮像部4を介したジェスチャ入力、マイクロフォン7を介した音声入力、操作部6を介した操作入力)があったときに、世界座標系において特定の地点に仮想オブジェクト20を配置する。そして、制御部1は、世界座標系においてこの位置を記憶部2に記憶しておけばよい。
【0282】
[適用例3]
(トロッコ50のアトラクション)
次に、本技術が、テーマパークにおけるトロッコ50のアトラクションに適用された場合について説明する。
【0283】
図14は、ユーザがトロッコ50に乗っているときに、ユーザが見ている視野の一例を示す図である。図15は、ユーザがトロッコ50に乗っているときに、撮像部4により撮像された画像情報の一例を示す図である。
【0284】
ここでの例では、ユーザがトロッコ50に乗りながら、銃(偽物)を使って敵61を倒したり宝箱62内のアイテムをゲットしたりするアトラクションが想定されている。敵61は、人、あるいは、人形であり、本実施形態では、敵61は動くとして説明するが、静止していてもよい。また、宝箱62については、静止しているとして説明するが、動いてもよい。
【0285】
図14においては、アトラクションの進行に関する情報を含む仮想オブジェクト20fがトロッコ50の前端部51に対して配置されている。また、敵61に関する情報を含む仮想オブジェクト20gが敵61の上側の配置されており、アイテムに関する情報を含む仮想オブジェクト20hが宝箱62の上側に配置されている。
【0286】
敵61に配置される仮想オブジェクト20gは、銃の照準に関するガイドであってもよいし、敵61の能力(攻撃能力、耐性、残りの体力など)に関するガイドであってもよい。あるいは、敵61には配置される仮想オブジェクト20gは、弾丸が敵61に当たったことを示すエフェクト等であってもよい。また、宝箱62に配置される仮想オブジェクト20hは、宝箱62内のアイテムの内容を示すガイドであってもよいし、弾丸が宝箱62に当たったことを示すエフェクト等であってもよい。
【0287】
なお、上述の車30の例における、車30がトロッコ50(第1の移動体)に対応しており、対向車25が敵61(第2の移動体)に対応しており、建物22が宝箱62に対応している。従って、典型的な処理については、車30の例と同じであるので、ここでの説明については、時系列に沿って、簡単に説明する。
【0288】
ここでの説明では、アトラクションの進行に関する情報を含む仮想オブジェクト20fの配置対象としてトロッコ50の前端部51が指定されているとする。また、敵61に関する情報を含む仮想オブジェクト20gの配置対象として敵61が指定され、アイテムに関する情報を含む仮想オブジェクト20hの配置対象として、宝箱62が指定されているとする。
【0289】
ユーザが停止しているトロッコ50に乗り込んだとする。このとき、まず、状況認識処理において、ユーザが第1の移動体の乗っていると判定される。今、トロッコ50は停止しているので、特徴量分類処理において、敵61などの動いている物体が存在しない限り、全ての特徴量群は、世界座標系の特徴量に分類される(ステッ206)。
【0290】
自己位置の推定処理において、配置対象であるトロッコ50の前端部51が属する座標系が、世界座標系であると判定され(ステップ402、403)、世界座標系において自己位置が推定される(ステップ404~ステップ411)。なお、世界座標系における自己位置の推定において、テーマパークにおけるシステムから取得可能なトロッコ50の位置が考慮されて、自己位置が推定されてもよい。
【0291】
仮想オブジェクト20の配置処理において、アトラクションの進行に関する仮想オブジェクト20fが初期配置されるとき(ステップ401のYES)、トロッコ50の前端部51が属する座標系が、世界座標系であると判定される(ステップ605~606)。そして、世界座標系が使用されて、アトラクションの進行に関する情報を含む仮想オブジェクト20fを配置すべき位置、姿勢が算出される(ステップ607)。
【0292】
トロッコ50が走り出し、トロッコ50の各部分に対応する特徴量群の動きと、慣性情報との一致度が閾値以下となると(ステップ205のYES)、トロッコ50の各部分に対応する特徴量群が第1の移動体座標系に分類される(ステップ210)。そして、第1の移動体座標系が、世界座標系から分裂する(ステップ305)。
【0293】
自己位置推定処理において、トロッコ50の前端部51が属する第1の移動体座標系において、自己位置が推定される(ステップ401~ステップ411)。
【0294】
トロッコ50に対応する第1の移動体座標系が、世界座標系から分裂したとき(ステップ501のYES)、世界座標系における自己位置の推定において、分裂が生じた時刻から所定時間前(トロッコ50が走りだした瞬間)まで遡って自己位置が再計算される(ステップ502)。この場合、分裂が生じた時刻から所定時間前まで遡り、トロッコ50に対応する特徴量群が除かれて、自己位置が再計算される。
【0295】
また、第1の移動体座標系が、世界座標系から分裂したとき、第1の移動体座標系における自己位置の推定において、分裂が生じた時刻から所定時間前(トロッコ50が走りだした瞬間)まで遡って自己位置の推定が再計算される(ステップ503)。この場合、分裂が生じた時刻から所定時間前まで遡り、トロッコ50の各部に対応する特徴量群が用いられて、自己位置が再計算される。
【0296】
次に、仮想オブジェクト配置処理が実行される。今回において第1の移動体座標系が世界座標系から分裂したとき(ステップ602のYES)、トロッコ50の前端部51が属する第1の移動体座標系を使用して、アトラクションの進行に関する仮想オブジェクト20fを配置すべき位置、姿勢が算出される(ステップ605~607)。
【0297】
トロッコ50が走っているとき、世界座標系において、自己位置が推定される(ステップ401~411)。
【0298】
仮想オブジェクト20において、HMD100(ユーザ)から宝箱62までの距離が閾値以下となったとする(ステップ601のYES)。この場合、宝箱62が属する世界座標系を使用して、アイテムに関する情報を含む仮想オブジェクト20hを配置すべき位置・姿勢が算出される(ステップ607)。
【0299】
また、トロッコ50が走っているときに、敵61(動いている)が存在すると、敵61に対応する第2の移動体座標系において、自己位置が推定される(ステップ401~411)。
【0300】
なお、図に示す例では、3体の敵61に対応する3つの第2の移動体座標系がそれぞれ用意され、この3つの移動体座標系において自己位置が推定される。なお、第2の移動体座標系における自己位置の推定において、テーマパークにおけるシステムから取得可能な敵61の位置が考慮されて、自己位置が推定されてもよい。
【0301】
仮想オブジェクト配置処理において、HMD100(ユーザ)から敵61までの距離が閾値以下となったとする(ステップ601のYES)。この場合、敵61が属する第2の移動体座標系を使用して、敵61に関する情報を含む仮想オブジェクト20gを配置すべき位置・姿勢が算出される(ステップ607)。
【0302】
走っているトロッコ50が停止しようとして、トロッコ50の各部分に対応する特徴量群の動きと、慣性情報との一致度が閾値を超えると(ステップ205のNO)、トロッコ50の各部分に対応する特徴量群が世界座標系に分類される(ステップ206)。そして、第1の移動体座標系が、世界座標系へ統合される(ステップ307)。
【0303】
自己位置推定処理において、トロッコ50が属する世界座標系において自己位置が推定される(ステップ401~411)。
【0304】
次に、仮想オブジェクト20の配置処理が実行される。今回において第1の移動体座標系が世界座標系へ統合されたとき(ステップ603のYES)、トロッコ50が属する世界座標系を使用して、アトラクションの進行に関する仮想オブジェクト20fを配置すべき位置、姿勢が算出される(ステップ605~607)。
【0305】
<作用等>
以上説明したように、本実施形態に係るHMD100では、画像情報及び慣性情報に基づいて、HMD100における自己位置が推定される。また、HMD100を装着(付帯)したユーザの状況(第1の移動体に持っているかどうか等)が認識され、自己位置の推定において、画像情報及び慣性情報のうちどちらをより信頼して使用するかについての比率(カルマンゲイン)が、状況に応じて変化される。
【0306】
これにより、HMD100を装着したユーザが、車30等に乗っているような特定の状況下にある場合においても、自己位置を正確に推定することができる。結果として、配置対象に対して正確に仮想オブジェクト20を配置(定位)させることができる。例えば、図10におけるニュースの仮想オブジェクト20aや、図14におけるアトラクションの進行に関する仮想オブジェクト20fが、車30、トロッコ50の後ろへ向けて移動して見えなくなってしまうような状況を防止することができる。
【0307】
さらに、本実施形態では、画像情報から特徴量が抽出され、上記状況に応じて、自己位置の推定において、特徴量のうちどの特徴量を使用するかが判定(分類)される。特に、本実施形態では、座標系毎に、画像情報における特徴量のうちどの特徴量を自己位置の推定に使用するかが判定(分類)される。
【0308】
これにより、例えば、画像情報に基づいて、第1の移動体座標系において、自己位置が推定されるとき、第1の移動体座標系とは無関係である、世界座標系、第2の移動体座標系の物体の特徴量が、自己位置の推定に反映されてしまうことを防止することができる。
【0309】
同様に、画像情報に基づいて、世界座標系において、自己位置が推定されるとき、世界座標系とは無関係である、第1の移動体座標系、第2の移動体座標系の特徴量が、自己位置の推定に反映されてしまうことを防止することができる。
【0310】
同様に、画像情報に基づいて、第2の移動体座標系において、自己位置が推定されるとき、第2の移動体座標系とは無関係である、世界座標系、第1の移動体座標系の物体の特徴量が、自己位置の推定に反映されてしまうことを防止することができる。
【0311】
従って、本実施形態では、自己位置の推定の精度をさらに向上させることができる。
【0312】
また、本実施形態では、慣性情報と、特徴量の動きとの一致度が判定され、一致度に基づいて、座標系毎に、画像情報における特徴量のうちどの特徴量が自己位置の推定に使用するかが判定(分類)される。
【0313】
これにより、画像情報における特徴量のうちどの特徴量を自己位置の推定に使用するかを、座標系毎に適切に判定(分類)することができる。
【0314】
また、本実施形態では、上記状況に応じて、1以上の座標系が設定可能であり、各座標系において、それぞれ(同時に)自己位置が推定される。
【0315】
これにより、例えば、図10図14に示すように、第1の移動体座標系(車30、トロッコ50)の仮想オブジェクト20、世界座標系(建物22、宝箱62)の仮想オブジェクト20、第2の移動体座標系(対向車25、敵61)の仮想オブジェクト20を同時に表示することも可能となる。
【0316】
また、本実施形態では、第1移動体座標系における自己位置の推定において、画像情報及び慣性情報のうち画像情報をより信頼して使用するように上記比率(カルマンゲイン)が変化される。特に、本実施形態では、第1の移動体座標系における自己位置の推定において、画像情報及び慣性情報のうち画像情報のみを信頼して使用するように上記比率が変化される
【0317】
これにより、第1の移動体座標系において、自己位置の推定の精度をさらに向上させることができる。
【0318】
また、本実施形態では、第2移動体座標系における自己位置の推定において、画像情報及び慣性情報のうち画像情報をより信頼して使用するように上記比率(カルマンゲイン)が変化される。特に、本実施形態では、第2の移動体座標系における自己位置の推定において、画像情報及び慣性情報のうち画像情報のみを信頼して使用するように上記比率が変化される。
【0319】
これにより、第2の移動体座標系において、自己位置の推定の精度をさらに向上させることができる。
【0320】
また、本実施形態では、各座標系においてそれぞれ上記比率が異なるように上記比率(カルマンゲイン)が変化される。
【0321】
つまり、世界座標系において、カルマンゲインとしてそのままの値が用いられるが、一方で、第1の移動体座標系、第2の移動体座標系では、画像情報及び慣性情報のうち画像情報をより信頼して使用するようにカルマンゲインが変化される。
【0322】
これにより、座標系毎に、適切にカルマンゲインを調整することができる。
【0323】
また、本実施形態では、第1の移動体座標系が世界座標系から分裂したとき、世界座標系における自己位置の推定において、分裂が生じた時刻から所定時間前まで遡って、自己位置が再計算される。
【0324】
これにより、世界座標系において、自己位置の推定の精度をさらに向上させることができる。
【0325】
また、本実施形態では、第1の移動体座標系が世界座標系から分裂したとき、第1の移動体座標系おける自己位置の推定において、分裂が生じた時刻から所定時間前まで遡って、自己位置が再計算される。
【0326】
これにより、第1の移動体座標系において、自己位置の推定の精度をさらに向上させることができる。
【0327】
また、本実施形態では、第2の移動体座標系が世界座標系から分裂したとき、世界座標系における自己位置の推定において、分裂が生じた時刻から所定時間前まで遡って、自己位置が再計算される。
【0328】
これにより、世界座標系において、自己位置の推定の精度をさらに向上させることができる。
【0329】
また、本実施形態では、第2の移動体座標系が世界座標系から分裂したとき、第2の移動体座標系おける自己位置の推定において、分裂が生じた時刻から所定時間前まで遡って、自己位置が再計算される。
【0330】
これにより、第2の移動体座標系において、自己位置の推定の精度をさらに向上させることができる。
【0331】
≪第2実施形態≫
<全体構成及び各部の構成>
図16は、本技術の第2実施形態に係るスマートフォン200(情報処理装置)を示す斜視図である。図17は、スマートフォン200の内部構成を示すブロック図である。
【0332】
これらの図に示すように、スマートフォン200は、筐体70と、制御部71と、記憶部72と、表示部73と、撮像部74と、慣性センサ75と、近接センサ76と、マイクロフォン77と、スピーカ78と、通信部79とを備えている。
【0333】
筐体70は、平板状であり、ユーザが把持することができる程度の大きさとされる。表示部73は、筐体70の正面に配置されている。表示部73は、撮像部74によって撮像された実空間に対応する画像を表示させることが可能とされており、また、この画像内において仮想オブジェクト20を重畳して表示することが可能とされている。
【0334】
撮像部74は、筐体70の背面側に設けられている。撮像部74の数は、本実施形態では、2つとされているが、1つであってもよい。撮像部74は、筐体70の背面側の先に存在する物体を撮像し、撮像により得られた画像情報を制御部1へと出力する。
【0335】
慣性センサ75は、3軸方向の加速度を検出する3軸の加速度センサと、3軸回りの角速度を検出する角速度センサとを含む。慣性センサ75は、検出により得られた3軸方向の加速度、3軸回りの角速度を慣性情報として、制御部71に出力する。
【0336】
近接センサ76は、表示部73の表面に設けられている。近接センサ76は、ユーザの指による表示部73への近接を検出し、ユーザの指が近接したことを示す信号と、指が近接した位置を示す信号とを制御部71に出力する。
【0337】
マイクロフォン77は、ユーザの通話による音声や、ユーザの周囲の環境音を電気信号に変換して、この信号を制御部71へと出力する。スピーカ78は、例えば、相手の通話による音声や、表示部73に表示される仮想オブジェクト20に関する補助情報などを音声として出力する。
【0338】
通信部79は、例えば、他の電話機や、外部装置との間で直接または間接的に通信を行う。
【0339】
制御部71は、記憶部72に記憶された各種のプログラムに基づき種々の演算を実行し、スマートフォン200の各部を統括的に制御する。記憶部72は、制御部71の処理に必要な各種のプログラムや、各種のデータが記憶される不揮発性のメモリと、制御部71の作業領域として用いられる揮発性のメモリとを含む。
【0340】
<動作説明>
【0341】
次に、制御部71の処理について説明する。なお、第2実施形態に係る基本的な処理については、第1実施形態における図4図9と同じであるため、図4図9を参照しつつ、制御部71の処理を説明する。
【0342】
なお、ここでの説明では、地元の町の紹介ビデオを作成するために、仮想キャラクタ20i(仮想オブジェクト)と一緒に、電車90を使って目的地へと向かうという設定を想定する。仮想キャラクタ20iは、例えば、地元の町のPRを目的として使用されるキャラクタ(ゆるキャラとも呼ばれる)である。この紹介ビデオは、通信部9を介して、ネットワーク上のサーバ装置にアップロードされ、リアルタイム、あるいは、非リアルタイムで配信される。
【0343】
[ホームに仮想キャラクタが配置]
まず、ユーザが、画像上においてホーム81に仮想キャラクタ20iを配置するときの処理について説明する。
【0344】
図18は、ユーザが電車90をホーム81で待っているときに、撮像部4により撮像された画像上に、仮想キャラクタ20iが配置されたときの様子を示す図である。
【0345】
例えば、スマートフォン200を把持(付帯)したユーザが、ホーム81に立ち、スマートフォン200の撮像部4をホーム81の方向に向けているとする。このとき、ユーザが画面上において、ホーム81の任意の位置をタッチ操作すると、仮想キャラクタ20iの配置対象として、ホーム81における任意の位置が指定される。
【0346】
この場合、まず、状況認識処理において、慣性情報及び画像情報に基づいて、ユーザの状況が認識される(ステップ101~ステップ104)。この場合、少なくとも第1の移動体に乗っているか、乗っていないかが判定され、この場合には、移動体に乗っていないと判定される。
【0347】
次に、特徴量分類処理において、画像全体における全特徴量が類似する特徴量群毎に分類される(ステップ201)。このとき、画像内に動いている物体が写り込んでいない限り、全ての特徴量群は、世界座標系の特徴量に分類される(ステップ206)。
【0348】
次に、座標系設定処理において、世界座標系が設定されていなければ、世界座標系が設定される(ステップ302)。
【0349】
次に、自己位置推定処理が実行される。今、仮想キャラクタ20iの配置対象としてホーム81における任意の位置(ユーザがタッチした位置)が指定されているので、ホーム81が属する座標系が世界座標系であると判定される(ステップ402~403)。そして、ホーム81が属する世界座標系において、自己位置が推定される(ステップ404~411)。
【0350】
次に、仮想キャラクタ20iの配置処理が実行される。まだ仮想キャラクタ20iが配置されていない場合において、ユーザが画面上において、ホーム81の任意の位置をタッチ操作すると、初期配置であると判定される(ステップ601のYES)。
【0351】
仮想キャラクタ20iの配置対象としてホーム81における任意の位置(ユーザがタッチした位置)が指定されているので、ホーム81が属する座標系が世界座標系であると判定される(ステップ605~606)。そして、世界座標系において、仮想キャラクタ20iを配置すべき位置、姿勢が算出され(ステップ607)、仮想キャラクタ20iが表示される(ステップ609)。
【0352】
仮想キャラクタ20iが初期配置された後、前回と同じ世界座標系を使用して、仮想キャラクタ20iを配置すべき位置、姿勢が算出される(ステップ608)。
【0353】
[電車に仮想オブジェクトが配置]
次に、電車90に対して仮想オブジェクト20jが配置されるときの処理について説明する。図19は、ユーザが電車90をホーム81で待っているときに、電車90に仮想オブジェクト20jが配置されたときの様子を示す図である。
【0354】
撮像部4により撮像された画像内において、走ってくる電車90が写り込むと、電車90に対応する特徴量群が電車90に対応する第2の移動体座標系の特徴量に分類される(ステップ211)。そして、電車90に対応する第2の移動体座標系が新たに設定され、第2の移動体座標系が世界座標系から分裂する(ステップ310)。
【0355】
次に、自己位置推定処理が実行される。なお、ここでの説明では、仮想オブジェクト20jにおいて、配置対象が電車90に指定されているとする。
【0356】
この場合、配置対象である電車90が属する第2の移動体座標系において、自己位置が推定される(ステップ401~411)。電車90に対応する第2の移動体座標系における自己位置の推定においては、電車90からの位置情報(GPS情報)や、スマートフォン200の位置情報(GPS情報)等が考慮されてもよい。
【0357】
なお、仮想キャラクタ20iの配置のために、世界座標系においても自己位置が推定されるが、この自己位置の推定においては、第2の移動体座標系の特徴量は除かれる。
【0358】
仮想オブジェクト配置処理において、スマートフォン200(ユーザ)から電車90までの距離が閾値以下となったとする(ステップ601のYES)。この場合、電車90が属する第2の移動体座標系を使用して、電車に関する情報を含む仮想オブジェクト20jを配置すべき位置・姿勢が算出される(ステップ607)。そして、電車90に対して、仮想オブジェクト20が表示される(ステップ609)。
【0359】
走っている電車90が停止しようとして、電車90に対応する特徴量群の動きと、慣性情報との間の一致度が閾値を超えたとする(ステップ205のNO)。この場合、電車90に対応する特徴量群は、世界座標系の特徴量に分類される(ステップ211)。
【0360】
このとき、電車90に対応する第2の移動体座標系が消去され(ステップ312)、これにより、電車90に対応する第2の移動体座標系が世界座標系へ統合される。
【0361】
その後、電車90が停止しており、他に動いている物体が画像内に写り込まない限り、全ての特徴量は、世界座標系の特徴量に分類される。そして、仮想キャラクタ20i、仮想オブジェクト20jの配置のために、世界座標系の特徴量と慣性情報とに基づいて、自己位置が推定される。
【0362】
[電車内]
次に、ユーザが電車90に乗っているときの処理について説明する。図20は、ユーザが電車90に乗っているときの画面の一例を示す図である。
【0363】
ユーザが歩いてホーム81から電車90に乗り込むと、画像内では、仮想キャラクタ20iも歩いて電車90に乗り込む。
【0364】
なお、これを実現するため、制御部71は、例えば、以下のような処理を実行する。まず、制御部71は、ユーザから特定の入力(撮像部4を介したジェスチャ入力、マイクロフォン7を介した音声入力、操作部(近接センサ76)を介した操作入力等)があったかどうかを判定する。特定の入力が検出された場合、制御部71は、世界座標系においてユーザが移動すると、仮想キャラクタ20iの配置位置がユーザから一定の距離となるように、世界座標系における仮想キャラクタ20iの配置位置を変更する(付いてくる設定)。そして、制御部71は、配置位置の変更に応じて、画面上においてその位置に仮想キャラクタ20iが歩いてくるように表示を行う。
【0365】
なお、制御部71は、ユーザから特定の入力を検出したとき、仮想キャラクタ20iが属する座標系を世界座標系から自己座標系(スマートフォン200が中心となる座標系)に切り替えてもよい。そして、制御部71は、仮想キャラクタ20iがユーザから一定の距離の位置にいるように表示を行ってもよい。
【0366】
次に、ユーザが電車90内の座席91の方向へスマートフォン200の撮像部4を向け、画像内において座席91の特定の位置をタッチ操作したとする。この場合、仮想キャラクタ20iの配置対象として、座席91が指定される。このとき、制御部1は、画面上において、仮想オブジェクト20が歩いて座席91に座るように表示を行う。
【0367】
ユーザが、電車90に乗り込むと、状況認識処理において、ユーザが第1の移動体の乗っていると判定される。今、電車90は停止しているので、特徴量分類処理において、画像内に動いている物体が存在しない限り、全ての特徴量群は、世界座標系の特徴量に分類される(ステッ206)。
【0368】
自己位置の推定処理において、配置対象である座席91が属する座標系が、世界座標系であると判定され(ステップ402~403)、世界座標系において自己位置が推定される(ステップ404~ステップ411)。
【0369】
仮想オブジェクト20の配置処理において、仮想キャラクタ20iが、座席91に対して初期配置されるとき(ステップ401のYES)、座席91が属する座標系が、世界座標系であると判定される(ステップ605~606)。そして、世界座標系が使用されて、仮想キャラクタ20iを配置すべき位置、姿勢が算出される(ステップ607)。
【0370】
電車90が走り出し、電車90の各部分(図20における座席91、内壁等)に対応する特徴量群の動きと、慣性情報との一致度が閾値以下となると(ステップ205のYES)、電車90の各部分に対応する特徴量群が第1の移動体座標系に分類される(ステップ210)。そして、第1の移動体座標系が、世界座標系から分裂する(ステップ305)。
【0371】
自己位置推定処理において、配置対象としての座席91が属する第1の移動体座標系において、自己位置が推定される(ステップ401~ステップ411)。
【0372】
電車90に対応する第1の移動体座標系が、世界座標系から分裂したとき(ステップ501のYES)、世界座標系における自己位置の推定において、分裂が生じた時刻から所定時間前(電車が走りだした瞬間)まで遡って自己位置が再計算される(ステップ502)。
【0373】
また、第1の移動体座標系が、世界座標系から分裂したとき、第1の移動体座標系における自己位置の推定において、分裂が生じた時刻から所定時間前(電車90が走りだした瞬間)まで遡って自己位置が再計算される(ステップ503)。
【0374】
今回において第1の移動体座標系が世界座標系から分裂したとき(ステップ602のYES)、座席91が属する第1の移動体座標系を使用して、仮想キャラクタ20iを配置すべき位置、姿勢が算出される(ステップ605~607)。
【0375】
電車90が走っているとき、世界座標系の特徴量(図20において、窓を介して見える景色)に基づいて、自己位置が推定される。
【0376】
仮想オブジェクト20の配置処理において、スマートフォン200(ユーザ)から山82までの距離が閾値以下となったとする(ステップ601のYES)。この場合、山82が属する世界座標系を使用して、山に関する情報を含む仮想オブジェクト20kを配置すべき位置・姿勢が算出される(ステップ607)。
【0377】
走っている電車90が停止しようとして、電車90の各部分に対応する特徴量群の動きと、慣性情報との一致度が閾値を超えると(ステップ205のNO)、電車90の各部分に対応する特徴量群が世界座標系に分類される(ステップ206)。そして、第1の移動体座標系が、世界座標系へ統合される(ステップ307)。
【0378】
自己位置推定処理において、座席91が属する世界座標系において、自己位置が推定される(ステップ401~411)。
【0379】
今回において第1の移動体座標系が世界座標系へ統合されたとき(ステップ603のYES)、座席91が属する世界座標系を使用して、仮想キャラクタ20iを配置すべき位置、姿勢が算出される(ステップ605~607)。
【0380】
ユーザが歩いて電車90から降りると、画像内では、仮想キャラクタ20iも歩いて電車90から降りる(付いてくる設定)。
【0381】
第2実施形態においても上述の第1実施形態と同様の効果を奏する。例えば、電車90が動いているときに、仮想キャラクタ20iが電車90の後ろへ向けて移動して見えなくなってしまうような状況を防止することができる。
【0382】
≪各種変形例≫
ここで、図10を参照して、第1の移動体座標系において、ダッシュボード31上の仮想オブジェクト20aだけが配置されている(つまり、建物22、道路21、対向車25には仮想オブジェクト20が配置されていない)場合を想定する。このような場合、第1の移動体座標系において、自己位置を推定するために、画像情報において車30の各部分に対応する特徴量群が必要とされる。一方で、窓の外の景色に対応する特徴量群は、必要とされない。
【0383】
このような場合、制御部1は、今必要とされている車30の各部の画像を鮮明に写すために、撮像部4におけるパラメータを変更してもよい。例えば、昼間である場合には、車30内は、外に比べて暗いので、制御部1は、暗い場所を鮮明に写すために、露光時間、ゲイン等の撮像に関するパラメータを変化させる。
【0384】
逆に、図10を参照して、世界座標系、第2の移動体座標系において、建物22、道路21、対向車25の仮想オブジェクト20だけが配置されている(つまり、ダッシュボード31上には仮想オブジェクト20が配置されていない)場合を想定する。このような場合、世界座標系、第2の移動体座標系において、自己位置を推定するために、画像情報において窓の景色に対応する特徴量群が必要とされる。一方で、車30の各部分に対応する特徴量群は、必要とされない。
【0385】
このような場合、制御部1は、今必要とされている外の景色を鮮明に写すために、撮像部4におけるパラメータを変更してもよい。例えば、昼間である場合には、外は、車30内に比べて明るいので、制御部1は、明るい場所を鮮明に写すために、露光時間、ゲイン等の撮像に関するパラメータを変化させる。
【0386】
典型的には、制御部1は、使用される座標系毎に、撮像部4における撮像に関するパラメータを変化させればよい。これにより、各座標系において、自己位置の推定の精度を更に向上させることができる。
【0387】
車30や電車90などの第1の移動体に対して、HMD100、スマートフォン200を撮像するための外部撮像部が固定して配置されていてもよい。制御部1は、外部撮像部により撮像されたHMD100、スマートフォン200の画像を取得し、この画像を、第1の移動体座標系における自己位置の推定に使用する。これにより、第1の移動体座標系における自己位置の推定の精度がさらに向上する。
【0388】
本技術は、例えば、ショッピング等の普段の生活に関する分野や、ビジネス等の仕事に関する分野、ゲーム、アトラクション等のアミューズメントに関する分野など、各種の分野に適用可能である。典型的には、本技術は、ユーザが第1の移動体に乗る状況が想定され得る分野であれば、どのような分野にも適用可能である。
【0389】
以上の説明では、情報処理装置の一例として、HMD100及びスマートフォン200を例に挙げて説明したが、情報処理装置は、これに限られない。例えば、情報処理装置は、リストバンド型、指輪型、ペンダント型などのHMD100以外のウェアラブル装置であってもよい。あるいは、情報処理装置は、スマートフォン200以外の携帯電話機であってもよいし、タブレットPC(PC:personal computer)、ラップトップPC等であってもよい。また、上記した制御部1における各処理は、ネットワーク上のサーバ装置(情報処理装置)により実行されてもよい。
【0390】
以上の説明では、本技術がAR技術に適用された場合について説明したが、本技術は、VR技術に適用されてもよい。例えば、ユーザが第1の移動体に乗っているときに、VR技術(例えば、ゲーム等)を楽しむような場合に、本技術により自己位置を正確に推定することができる。
【0391】
本技術は以下の構成をとることもできる。
(1) 画像情報を取得する撮像部と、
慣性情報を取得する慣性センサと、
前記画像情報及び前記慣性情報に基づいて、情報処理装置における自己位置を推定し、前記情報処理装置を付帯するユーザの状況を認識し、前記自己位置の推定において、前記画像情報及び前記慣性情報のうちどちらをより信頼して使用するかについての比率を、前記状況に応じて変化させる制御する制御部と
を具備する情報処理装置。
(2) 上記(1)に記載の情報処理装置であって、
前記制御部は、前記画像情報から特徴量を抽出し、前記状況に応じて、前記自己位置の推定において、前記特徴量のうちどの特徴量を使用するかを判定する
情報処理装置。
(3) 上記(1)又は(2)に記載の情報処理装置であって、
前記制御部は、前記状況に応じて、1以上の座標系を設定可能であり、前記1以上の座標系において、それぞれ自己位置を推定する
情報処理装置。
(4) 上記(3)に記載の情報処理装置であって、
前記制御部は、前記1以上の座標系においてそれぞれ前記比率が異なるように前記比率を変化させる
情報処理装置。
(5) 上記(3)又は(4)に記載の情報処理装置であって、
前記1以上の座標系は、前記ユーザを乗せて移動する第1の移動体を基準とした第1の移動体座標系を含み、
前記制御部は、前記第1移動体座標系における自己位置の推定において、前記画像情報及び前記慣性情報のうち前記画像情報をより信頼して使用するように前記比率を変化させる
情報処理装置。
(6) 上記(5)に記載の情報処理装置であって、
前記制御部は、前記第1移動体座標系における自己位置の推定において、前記画像情報及び前記慣性情報のうち前記画像情報のみを信頼して使用するように前記比率を変化させる
情報処理装置。
(7) 上記(3)~(6)のうちいずれか1つに記載の情報処理装置であって、
前記1以上の座標系は、前記ユーザとは関連せずに移動する第2の移動体を基準とした第2の移動体座標系を含み、
前記制御部は、前記第2移動体座標系における自己位置の推定において、前記画像情報及び前記慣性情報のうち前記画像情報をより信頼して使用するように前記比率を変化させる
情報処理装置。
(8) 上記(7)に記載の情報処理装置であって、
前記制御部は、前記第2移動体座標系における自己位置の推定において、前記画像情報及び前記慣性情報のうち前記画像情報のみを信頼して使用するように前記比率を変化させる
情報処理装置。
(9) 上記(1)~(8)のうちいずれか1つに記載の情報処理装置であって、
前記制御部は、カルマンフィルタ処理により自己位置を推定し、前記比率は、カルマンゲインである
情報処理装置。
(10) 上記(3)~(9)のうちいずれか1つに記載の情報処理装置であって、
前記制御部は、前記画像情報から特徴量を抽出し、前記1以上の座標系毎に、前記画像情報における特徴量のうちどの特徴量を自己位置の推定に使用するかを判定する
情報処理装置。
(11) 上記(10)に記載の情報処理装置であって、
前記制御部は、前記慣性情報と、前記特徴量の動きとの一致度を判定し、前記一致度に基づいて、前記1以上の座標系毎に、前記画像情報における特徴量のうちどの特徴量を自己位置の推定に使用するかを判定する
情報処理装置。
(12) 上記(3)~(11)のうちいずれか1つに記載の情報処理装置であって、
前記1以上の座標系は、地球を基準とした世界座標系と、前記ユーザを乗せて移動する第1の移動体を基準とした第1の移動体座標系とを含み、
前記制御部は、前記画像情報に基づいて、前記世界座標系から前記第1の移動体座標系が分裂したかどうかを判定し、前記分裂が生じたとき、前記第1の移動体座標系を設定する
情報処理装置。
(13) 上記(12)に記載の情報処理装置であって、
前記制御部は、前記分裂が生じたとき、前記世界座標系における自己位置の推定において、分裂が生じた時刻から所定時間前まで遡って、自己位置を再計算する
情報処理装置。
(14) 上記(12)又は(13)に記載の情報処理装置であって、
前記制御部は、前記分裂が生じたとき、前記第1の移動体座標系における自己位置の推定において、分裂が生じた時刻から所定時間前まで遡って、自己位置を再計算する
情報処理装置。
(15) 上記(3)~(14)のうちいずれか1つに記載の情報処理装置であって、
前記1以上の座標系は、地球を基準とした世界座標系と、前記ユーザとは関係なく移動する第2の移動体を基準とした第2の移動体座標系とを含み、
前記制御部は、前記画像情報に基づいて、前記世界座標系から前記第2の移動体座標系が分裂したかどうかを判定し、前記分裂が生じたとき、前記第2の移動体座標系を設定する
情報処理装置。
(16) 上記(15)に記載の情報処理装置であって、
前記制御部は、前記分裂が生じたとき、前記世界座標系における自己位置の推定において、分裂が生じた時刻から所定時間前まで遡って、自己位置を再計算する
情報処理装置。
(17) 上記(15)又は(16)に記載の情報処理装置であって、
前記制御部は、前記分裂が生じたとき、前記第2の移動体座標系における自己位置の推定において、分裂が生じた時刻から所定時間前まで遡って、自己位置を再計算する
情報処理装置。
(18) 上記(3)~(17)のうちいずれか1つに記載の情報処理装置であって、
前記制御部は、前記1以上の座標系毎に、前記撮像部における撮像に関するパラメータを変化させる
情報処理装置。
(19) 画像情報及び慣性情報に基づいて、情報処理装置における自己位置を推定し、
前記情報処理装置を付帯するユーザの状況を認識し、
前記自己位置の推定において、前記画像情報及び慣性情報のうちどちらをより信頼して使用するかについての比率を、前記状況に応じて変化させる
情報処理方法。
(20) 画像情報及び慣性情報に基づいて、情報処理装置における自己位置を推定し、
前記情報処理装置を付帯するユーザの状況を認識し、
前記自己位置の推定において、前記画像情報及び慣性情報のうちどちらをより信頼して使用するかについての比率を、前記状況に応じて変化させる
制御部としてコンピュータを機能させるプログラム。
【符号の説明】
【0392】
1、71…制御部
4、74…撮像部
5、75…慣性センサ
20…仮想オブジェクト
30…車
50…トロッコ
90…電車
100…ヘッドマウントディスプレイ
200…スマートフォン
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20