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

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

▶ グーグル インコーポレイテッドの特許一覧

特許7611385ウェアラブルデバイスを用いた制御可能デバイスの位置の特定
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-25
(45)【発行日】2025-01-09
(54)【発明の名称】ウェアラブルデバイスを用いた制御可能デバイスの位置の特定
(51)【国際特許分類】
   G06F 3/01 20060101AFI20241226BHJP
   G06F 3/0482 20130101ALI20241226BHJP
   G06F 3/0346 20130101ALI20241226BHJP
   G06T 7/70 20170101ALI20241226BHJP
   G06T 19/00 20110101ALI20241226BHJP
【FI】
G06F3/01 510
G06F3/0482
G06F3/0346 426
G06T7/70 A
G06T19/00 600
【請求項の数】 22
(21)【出願番号】P 2023528595
(86)(22)【出願日】2020-11-16
(65)【公表番号】
(43)【公表日】2023-11-29
(86)【国際出願番号】 US2020070792
(87)【国際公開番号】W WO2022103420
(87)【国際公開日】2022-05-19
【審査請求日】2023-11-14
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ウー,ションジー
(72)【発明者】
【氏名】ファーボーグ,アレクサンダー・ジェイムズ
【審査官】冨永 昌彦
(56)【参考文献】
【文献】特開2011-164666(JP,A)
【文献】特表2020-513618(JP,A)
【文献】特開2020-135679(JP,A)
【文献】特表2016-533565(JP,A)
【文献】特開2020-098451(JP,A)
【文献】特開2015-213212(JP,A)
【文献】米国特許出願公開第2018/0157398(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/01
G06F 3/048 - 3/0895
G06F 3/03 - 3/039
G06T 7/00 - 7/90
G06T 19/00 - 19/20
(57)【特許請求の範囲】
【請求項1】
ウェアラブルデバイスを用いて制御可能デバイスの位置を特定する方法であって、
ウェアラブルデバイス上の画像センサから視覚データを受信することと、
オブジェクト認識モジュールが、前記視覚データに基づいて識別データを生成することと、
前記識別データを用いて、第1の3次元(3D)マップと第2の3Dマップとを含む複数の3Dマップを格納するマップデータベースから、前記第1の3Dマップを特定することとを含み、前記第1の3Dマップは第1の制御可能デバイスに関連付けられ、前記第2の3Dマップは第2の制御可能デバイスに関連付けられ、前記方法はさらに、
前記第1の3Dマップの視覚的位置決めデータに基づいて、物理空間における前記第1の制御可能デバイスの位置を取得することと、
前記第1の制御可能デバイスの前記位置の閾値距離以内の位置で、前記ウェアラブルデバイスのディスプレイ上にユーザインターフェイス(UI)オブジェクトをレンダリングすることとを含む、方法。
【請求項2】
前記位置は、前記制御可能デバイスの6自由度位置を含む、請求項1に記載の方法。
【請求項3】
前記識別データは、前記第1の制御可能デバイスのデバイス名またはデバイスタイプの少なくとも1つを含む、請求項1または2に記載の方法。
【請求項4】
前記識別データは、前記第1の制御可能デバイスに関連付けられた前記物理空間の空間タイプを含む、請求項1~3のいずれか1項に記載の方法。
【請求項5】
前記識別データは、前記マップデータベースに、前記第1の3Dマップに関連付けて格納される、請求項1~4のいずれか1項に記載の方法。
【請求項6】
前記視覚データを、前記第1の3Dマップと比較することをさらに含む、請求項1~5のいずれか1項に記載の方法。
【請求項7】
前記第1の制御可能デバイスに関連付けられたセットアップ手順中に、前記第1の3Dマップを生成することをさらに含む、請求項1~6のいずれか1項に記載の方法。
【請求項8】
前記第1の3Dマップは、1人以上の他のユーザと共有するように構成された仮想クラウドアンカーに対応する特徴点マップを含む、請求項1~7のいずれか1項に記載の方法。
【請求項9】
前記UIオブジェクトは、ユーザが前記第1の制御可能デバイスを制御することを許可する1つ以上のコントロールを含む、請求項1~8のいずれか1項に記載の方法。
【請求項10】
命令を有したプログラムであって、前記命令は、少なくとも1つのプロセッサによって実行されると、前記少なくとも1つのプロセッサに、
ウェアラブルデバイス上の画像センサから視覚データを受信させ、
オブジェクト認識モジュールによって、前記視覚データに基づいて識別データを生成させ、
前記識別データを用いて、第1の3次元(3D)マップと第2の3Dマップとを含む複数の3Dマップを格納するマップデータベースから、前記第1の3Dマップを特定させるように構成され、前記第1の3Dマップは第1の制御可能デバイスに関連付けられ、前記第2の3Dマップは第2の制御可能デバイスに関連付けられ、前記令はさらに、
前記第1の3Dマップの視覚的位置決めデータに基づいて、前記視覚データによって少なくとも部分的に表現される物理空間における前記第1の制御可能デバイスの位置を取得させ、
前記第1の制御可能デバイスの前記位置の閾値距離以内の位置で、前記ウェアラブルデバイスのディスプレイ上にユーザインターフェイス(UI)オブジェクトをレンダリングさせるように構成され、前記UIオブジェクトは、前記第1の制御可能デバイスを制御するための1つ以上の対話型コントロールを含む、プログラム
【請求項11】
前記マップデータベースはサーバコンピュータに格納され、前記命令は、前記少なくとも1つのプロセッサによって実行されると、前記少なくとも1つのプロセッサに、前記サーバコンピュータと通信して前記マップデータベースにアクセスさせるように構成されている、請求項10に記載のプログラム
【請求項12】
前記マップデータベースは、前記ウェアラブルデバイスまたは前記ウェアラブルデバイスに通信可能に結合されたコンピューティングデバイスに格納され、前記命令は、前記少なくとも1つのプロセッサによって実行されると、前記少なくとも1つのプロセッサに、前記ウェアラブルデバイスまたは前記コンピューティングデバイスとそれぞれ通信して、前記マップデータベースにアクセスさせるように構成されている、請求項10に記載のプログラム
【請求項13】
前記UIオブジェクトは、前記第1の制御可能デバイスに関する情報を提供するように構成されている、請求項10~12のいずれか1項に記載のプログラム
【請求項14】
前記識別データは、前記第1の制御可能デバイスに関連付けられたデバイス名、デバイスタイプ、または空間タイプの少なくとも1つを含む、請求項10~13のいずれか1項に記載のプログラム
【請求項15】
記命令は、前記少なくとも1つのプロセッサに、
前記第1の制御可能デバイスに関連付けられたセットアップ手順の間に、前記第1の3Dマップを生成させ、
前記第2の制御可能デバイスに関連付けられたセットアップ手順中に、前記第2の3Dマップを生成させる命令を含む、請求項10~14のいずれか1項に記載のプログラム
【請求項16】
前記第1の3Dマップは、1人以上の他のユーザと共有されるように構成された仮想クラウドアンカーに対応する特徴点マップを含む、請求項10~15のいずれか1項に記載のプログラム
【請求項17】
制御可能デバイスの位置を特定するためのコンピューティングシステムであって、
視覚データを受信するように構成された画像センサと、
前記視覚データに基づいて識別データを生成するように構成されたオブジェクト認識モジュールと、
前記識別データを用いて、第1の3次元(3D)マップと第2の3Dマップとを含む複数の3Dマップを格納するマップデータベースから、前記第1の3Dマップを特定するように構成された位置特定器とを備え、前記第1の3Dマップは第1の制御可能デバイスに関連付けられ、前記第2の3Dマップは第2の制御可能デバイスに関連付けられ、前記位置特定器は、前記第1の3Dマップの視覚的位置決めデータに基づいて、物理空間における前記第1の制御可能デバイスの位置を取得するように構成され、前記コンピューティン
グシステムはさらに、
前記第1の制御可能デバイスの前記位置の閾値距離以内の位置で、ウェアラブルデバイスのディスプレイ上にUIオブジェクトをレンダリングするように構成されたユーザインターフェイス(UI)オブジェクトレンダラーを備える、コンピューティングシステム。
【請求項18】
前記コンピューティングシステムは、前記ウェアラブルデバイスとコンピューティングデバイスとを備え、前記コンピューティングデバイスは、無線接続を介して前記ウェアラブルデバイスに通信可能に結合される、請求項17に記載のコンピューティングシステム。
【請求項19】
前記マップデータベースは、前記コンピューティングシステムのメモリデバイスに格納されている、請求項17または18に記載のコンピューティングシステム。
【請求項20】
前記マップデータベースは、サーバコンピュータに関連付けられたメモリデバイスに格納され、前記コンピューティングシステムはさらに、
前記サーバコンピュータにおいて前記第1の3Dマップを特定するために、前記識別データを前記サーバコンピュータに送信するように構成されたアンテナを備え、前記アンテナは、前記サーバコンピュータから前記視覚的位置決めデータを受信するように構成されている、請求項17または18に記載のコンピューティングシステム。
【請求項21】
前記コンピューティングシステムは前記ウェアラブルデバイスを含み、前記ウェアラブルデバイスはスマートグラスを含む、請求項17~20のいずれか1項に記載のコンピューティングシステム。
【請求項22】
請求項1~9のいずれか1項に記載の方法をプロセッサに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
技術分野
本明細書は、一般に、ウェアラブルデバイスを用いた制御可能デバイスの位置の取得に関する。
【背景技術】
【0002】
背景
ウェアラブルデバイスは、メディアストリーミングデバイス、ホームスピーカ、スマート電球などの1つ以上の制御可能デバイスを制御するために使用することができる。いくつかの例では、ウェアラブルデバイスは、視覚データをキャプチャするカメラと、画像データを処理してウェアラブルデバイスのカメラの視野内のデバイスを検出するための画像認識ソフトウェアとを備え、デバイスの2次元(2D)位置を取得することができる。しかしながら、2D位置は、ユーザがインタラクティブなユーザインターフェイス(user interface:UI)でデバイスを制御できるように、またはデバイスに関する追加情報をユーザに提示できるように、3D空間におけるデバイスの位置に近接した位置で、ウェアラブルデバイスのディスプレイ上にUIコントロールをレンダリングするには十分ではない場合がある。また、従来技術によっては、ユーザが複数の類似した外観のデバイス(たとえば、同じように見える2つのスマート電球)を持っている場合、ユーザが意図するデバイスを制御するために、ウェアラブルデバイスが複数のデバイスを区別することができない場合がある。
【発明の概要】
【課題を解決するための手段】
【0003】
概要
ある態様によると、ウェアラブルデバイスを用いて制御可能デバイスの位置を特定する方法は、ウェアラブルデバイス上の画像センサから視覚データを受信することと、オブジェクト認識モジュールが、視覚データに基づいて識別データを生成することと、識別データを用いて、第1の3次元(3D)マップと第2の3Dマップとを含む複数の3Dマップを格納するマップデータベースから、第1の3Dマップを特定することとを含み、第1の3Dマップは第1の制御可能デバイスに関連付けられ、第2の3Dマップは第2の制御可能デバイスに関連付けられている。方法は、第1の3Dマップの視覚的位置決めデータに基づいて、物理空間における第1の制御可能デバイスの位置を取得することと、第1の制御可能デバイスの位置の閾値距離以内の位置で、ウェアラブルデバイスのディスプレイ上にユーザインターフェイス(UI)オブジェクトをレンダリングすることとを含む。いくつかの例において、UIオブジェクトは、第1の制御可能デバイスの位置に対応する位置において、ディスプレイ上にレンダリングされる。
【0004】
いくつかの態様によると、方法は、以下の特徴のうちの1つ以上(またはそれらの任意の組み合わせ)を含み得る。位置は、制御可能デバイスの6自由度位置を含む。識別データは、第1の制御可能デバイスのデバイス名またはデバイスタイプの少なくとも1つを含み得る。識別データは、第1の制御可能デバイスに関連付けられた物理空間の空間タイプを含み得る。識別データは、マップデータベースに、第1の3Dマップに関連付けて格納される。方法は、視覚データを、第1の3Dマップと比較することを含み得る。方法は、第1の制御可能デバイスに関連付けられたセットアップ手順中に、第1の3Dマップを生成することを含み得る。第1の3Dマップは、1人以上の他のユーザと共有するように構成された仮想クラウドアンカーに対応する特徴点マップを含み得る。UIオブジェクトは、ユーザが第1の制御可能デバイスを制御することを許可する1つ以上のコントロールを含み得る。
【0005】
ある態様によると、実行可能命令を格納した非一時的なコンピュータ読取可能媒体であって、実行可能命令は、少なくとも1つのプロセッサによって実行されると、少なくとも1つのプロセッサに、ウェアラブルデバイス上の画像センサから視覚データを受信させ、オブジェクト認識モジュールによって、視覚データに基づいて識別データを生成させ、識別データを用いて、第1の3次元(3D)マップと第2の3Dマップとを含む複数の3Dマップを格納するマップデータベースから、第1の3Dマップを特定させるように構成され、第1の3Dマップは第1の制御可能デバイスに関連付けられ、第2の3Dマップは第2の制御可能デバイスに関連付けられ、実行可能命令はさらに、第1の3Dマップの視覚的位置決めデータに基づいて、視覚データによって少なくとも部分的に表現される物理空間における第1の制御可能デバイスの位置を取得させ、第1の制御可能デバイスの位置の閾値距離以内の位置で、ウェアラブルデバイスのディスプレイ上にユーザインターフェイス(UI)オブジェクトをレンダリングさせるように構成され、UIオブジェクトは、第1の制御可能デバイスを制御するための1つ以上の対話型コントロールを含む。いくつかの例において、UIオブジェクトは、第1の制御可能デバイスの位置(たとえば、6DoF位置)に対応する位置において、ディスプレイ上にレンダリングされる。
【0006】
いくつかの態様によると、非一時的なコンピュータ読取可能媒体は、上記/下記の特徴のうちの1つ以上(またはそれらの任意の組み合わせ)を含み得る。マップデータベースは、サーバコンピュータに格納され得る。実行可能命令は、少なくとも1つのプロセッサによって実行されると、少なくとも1つのプロセッサに、サーバコンピュータと通信してマップデータベースにアクセスさせるように構成され得る。マップデータベースは、ウェアラブルデバイスまたはウェアラブルデバイスに通信可能に結合されたコンピューティングデバイスに格納され得る。実行可能命令は、少なくとも1つのプロセッサによって実行されると、少なくとも1つのプロセッサに、ウェアラブルデバイスまたはコンピューティングシステムとそれぞれ通信して、マップデータベースにアクセスさせるように構成され得る。識別データは、第1の制御可能デバイスに関連付けられたデバイス名、デバイスタイプ、または空間タイプの少なくとも1つを含み得る。実行可能命令は、少なくとも1つのプロセッサに、第1の制御可能デバイスに関連付けられたセットアップ手順の間に、第1の3Dマップを生成させ、第2の制御可能デバイスに関連付けられたセットアップ手順中に、第2の3Dマップを生成させる命令を含み得る。第1の3Dマップは、1人以上の他のユーザと共有されるように構成された仮想クラウドアンカーに対応する特徴点マップを含み得る。
【0007】
ある態様によると、制御可能デバイスの位置を特定するためのコンピューティングシステムは、視覚データを受信するように構成された画像センサと、視覚データに基づいて識別データを生成するように構成されたオブジェクト認識モジュールと、識別データを用いて、第1の3次元(3D)マップと第2の3Dマップとを含む複数の3Dマップを格納するマップデータベースから、第1の3Dマップを特定するように構成された位置特定器とを備え、第1の3Dマップは第1の制御可能デバイスに関連付けられ、第2の3Dマップは第2の制御可能デバイスに関連付けられ、位置特定器は、第1の3Dマップの視覚的位置決めデータに基づいて、物理空間における第1の制御可能デバイスの位置を取得するように構成され、コンピューティングシステムはさらに、第1の制御可能デバイスの閾値位置内にある位置のウェアラブルデバイスのディスプレイ上にUIオブジェクトをレンダリングするように構成されたユーザインターフェイス(UI)オブジェクトレンダラーを備える。いくつかの例において、UIオブジェクトは、第1の制御可能デバイスの位置に対応する位置において、ディスプレイ上にレンダリングされる。
【0008】
いくつかの態様によると、コンピューティングシステムは、上記/下記の特徴のうちの1つ以上(またはそれらの任意の組み合わせ)を含み得る。コンピューティングシステムは、ウェアラブルデバイスとコンピューティングデバイスとを備えることができ、コンピューティングデバイスは、無線接続を介してウェアラブルデバイスに通信可能に結合される。コンピューティングシステムはウェアラブルデバイスを含むことができ、ウェアラブルデバイスはスマートグラスを含み得る。マップデータベースは、コンピューティングシステムのメモリデバイスに格納され得る。マップデータベースは、サーバコンピュータに関連付けられたメモリデバイスに格納され得る。コンピューティングシステムは、サーバコンピュータにおいて第1の3Dマップを特定するために、識別データをサーバコンピュータに送信するように構成されたアンテナを備えることができ、アンテナは、サーバコンピュータから視覚的位置決めデータを受信するように構成されている。
【0009】
1つ以上の実現例の詳細が、添付の図面および以下の説明に記載されている。他の特徴は、説明および図面、ならびに特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【0010】
図1A】ある態様に係る、画像センサによってキャプチャされる視覚データおよび3次元(three-dimensional:3D)マップを用いて制御可能デバイスの位置を特定するためのコンピューティングシステムを示す図である。
図1B】ある態様に係る、制御可能デバイスの位置に対応する位置でコンピューティングデバイスのディスプレイ上にレンダリングされたユーザインターフェイス(UI)オブジェクトを示す図である。
図1C】ある態様に係る、複数の3Dマップを格納するマップデータベースを示す図である。
図1D】ある態様に係る、マップデータベースにおいて3Dマップにリンクされている識別データの一例を示す図である。
図1E】ある態様に係る、識別データに基づいてマップデータベース内の3Dマップを識別できるデバイス検出器の例を示す図である。
図1F】ある態様に係る、サーバコンピュータで3Dマップを生成し格納するためのシステムを示す図である。
図1G】ある態様に係る、3Dマップを生成し格納するためのコンピューティングシステムを示す図である。
図1H】別の態様に係る、3Dマップを生成し格納するためのコンピューティングシステムを示す図である。
図2】ある態様に係る、ヘッドマウント表示デバイスとコンピューティングデバイスとを有するコンピューティングシステムを示す図である。
図3】ある態様に係る、スマートグラスの一例を示す図である。
図4A】ある態様に係る、ウェアラブルデバイスのディスプレイ上でのUIオブジェクトのレンダリングの例を示す図である。
図4B】ある態様に係る、ウェアラブルデバイスのディスプレイ上でのUIオブジェクトのレンダリングの例を示す図である。
図4C】ある態様に係る、ウェアラブルデバイスのディスプレイ上でのUIオブジェクトのレンダリングの例を示す図である。
図4D】ある態様に係る、ウェアラブルデバイスのディスプレイ上でのUIオブジェクトのレンダリングの例を示す図である。
図5】制御可能デバイスの位置に対応する位置にレンダリングされたUIオブジェクトを有する表示例を示す図である。
図6】制御可能デバイスの位置に対応する位置にレンダリングされたUIオブジェクトを有する表示例を示す図である。
図7】制御可能デバイスの位置に対応する位置にレンダリングされたUIオブジェクトを有する表示例を示す図である。
図8】制御可能デバイスの位置に対応する位置にレンダリングされたUIオブジェクトを有する表示例を示す図である。
図9】ある態様に係る、コンピューティングシステムの動作例を示すフローチャートである。
図10】ある態様に係る、本明細書で議論されるコンピューティングシステムのコンピューティングデバイスの例を示す図である。
【発明を実施するための形態】
【0011】
詳細な説明
本開示は、視覚データをキャプチャし、視覚データに基づいて、マップデータベースからあらかじめ格納された3次元(3D)マップ(たとえば、3Dメッシュ、3D特徴マップ、仮想クラウドアンカーなど)を特定するウェアラブルデバイスに関し、3Dマップは、視覚データによって少なくとも部分的に表現される物理空間内の制御可能デバイスの場所に印を付ける。マップデータベースは、複数の3Dマップを格納することができ、各3Dマップは、別々の制御可能デバイスに関する視覚的位置決めデータを含む。マップデータベースは、ローカルに格納されてもよく、サーバコンピュータにリモートに格納されてもよい。3Dマップからの情報は、制御可能デバイスの6自由度(degree of freedom:DoF)位置を検出するために使用される。次に、ウェアラブルデバイスは、3D空間における制御可能デバイスの位置の閾値距離以内の場所で、ウェアラブルデバイスのディスプレイ上にユーザインターフェイス(UI)オブジェクトをレンダリングできる。いくつかの例では、UIオブジェクトは、制御可能デバイスの位置(たとえば、6DoF位置)に対応する位置でディスプレイ上にレンダリングされる。UIオブジェクトは、制御可能デバイスを制御するための1つ以上のコントロールおよび/または制御可能デバイスに関する追加情報を、ユーザに提供し得る。
【0012】
たとえば、第1の制御可能デバイスのセットアップ中に、コンピューティングデバイス(たとえば、ウェアラブルデバイス、またはスマートフォンなどの別のタイプのデバイス)を使用して、第1の制御可能デバイスの場所に印を付け得る。ユーザは、コンピューティングデバイスの画像センサを第1の制御可能デバイスに向け、デバイスを動かして、異なる視野角および位置から物理空間をマッピングして、第1の制御可能デバイスの周囲の特徴点を算出し得る。
【0013】
いくつかの例では、特徴点は、第1の3Dマップを生成するためにサーバコンピュータに送信され、第1の3Dマップは、サーバコンピュータにおいてマップデータベースに格納される。いくつかの例では、第1の3Dマップは、特徴点マップである。いくつかの例では、第1の3Dマップは、他のユーザのためにキャプチャされたシーンをローカライズするために使用することができる仮想アンカーである。第1の3Dマップは、第1の制御可能デバイスに関する情報を含む識別データに関連付けて格納される。いくつかの例では、識別データは、第1の制御可能デバイスのデバイスタイプおよび/またはデバイス名を含む。いくつかの例では、識別データは、第1の制御可能デバイスが位置する空間のタイプ(たとえば、リビングルーム、寝室、キッチン)を特定する空間タイプを含む。たとえば、サーバコンピュータは、特徴点を分析して、どのタイプの物理空間が第1の制御可能デバイスに関連付けられているかを判断し(たとえば、第1の制御可能デバイスの部屋のベッドは、第1の制御可能デバイスが寝室にあることを示し得る)、第1の3Dマップは、空間タイプに関連付けて格納される。いくつかの例では、コンピューティングデバイスは、特徴点または一般に任意のタイプの3Dスキャン技術を使用して、第1の3Dマップをローカルに生成および格納し得る。
【0014】
同じ動作を、別の制御可能デバイスのセットアップ中に適用し得る。たとえば、第2の制御可能デバイスのセットアップ中に、第2の制御可能デバイスの場所を特定する第2の3Dマップが生成される。第2の3Dマップは、第2の制御可能デバイスを特定することができる識別データに関連付けて格納される。
【0015】
セットアップ手順の後、ユーザは物理空間に入り、ウェアラブルデバイスの画像センサを使用して視覚データをキャプチャし得る。いくつかの例では、ウェアラブルデバイスは、視覚データに含まれるオブジェクトの種類を判定することができるオブジェクト認識モジュールを含む。たとえば、第1の制御可能デバイスがウェアラブルデバイスの画像センサの視野に入る場合、オブジェクト認識モジュールは、視覚データを分析してデバイスのタイプを判定し得る。いくつかの例では、オブジェクト認識は、視覚データを分析して、ユーザが位置する空間のタイプを検出してもよく、たとえば、ベッドの検出は、ユーザが寝室に位置することを示してもよい。オブジェクト認識モジュールは、第1の制御可能デバイスおよび/または物理空間を特定する識別データ(たとえば、デバイスタイプ、デバイス名、空間タイプ等)を生成し得る。オブジェクト認識モジュールによって生成された識別データは、マップデータベースから適切な3Dマップを特定するために使用され得る。たとえば、第1の制御可能デバイスがホームスピーカである場合、マップデータベースは、制御可能デバイスのタイプ、たとえばホームスピーカに関連付けて、第1の3Dマップを格納する。そして、ユーザがホームスピーカのある部屋に入り、ウェアラブルデバイスのオブジェクト認識モジュールがホームスピーカを検出すると、第1の3Dマップに同じ識別データで注釈が付けられているため、第1の3Dマップが特定される。いくつかの例では、ウェアラブルデバイスは、マップデータベースに格納されたどの3Dマップかを特定するために、(オブジェクト認識装置によって導出された)識別データをサーバコンピュータに送信する。
【0016】
次に、特定された第1の3Dマップが、画像センサによってキャプチャされた視覚データによって表現される物理空間に少なくとも部分的に対応すると判定するために、視覚データを第1の3Dマップと比較して、一致する(たとえば、同じ物理空間を伴う)かどうかを判定する。いくつかの例では、比較はサーバコンピュータにおいて実行され、比較の結果が一致した場合、サーバコンピュータは、第1の制御可能デバイスの姿勢(たとえば、位置および向き)を返し、これを使用して、ウェアラブルデバイスは、第1の制御可能デバイスに対するウェアラブルデバイスの位置および向きを判定する。いくつかの例では、比較はローカルに実行される。いくつかの例では、姿勢は、第1の制御可能デバイスの6DoF位置と称されることがある。いくつかの例では、視覚データを3Dマップと比較する動作は、3Dマップの解決と称されることがある。
【0017】
いくつかの例では、視覚データによってキャプチャされたデバイスのタイプを検出するためにオブジェクト認識モジュールを使用する(そして、デバイスのタイプを使用して3Dマップを迅速に特定する)のではなく、どの3Dマップが画像センサによってキャプチャされた視覚データに対応するかを判定するために、視覚データをマップデータベース内の格納された3Dマップと、連続的または周期的に比較し得る。一致する場合、ウェアラブルデバイスは、一致する3Dマップから制御可能デバイスの6DoF位置を取得し得る。しかしながら、いくつかの例では、3Dマップの解決は計算上高価であり、マップデータベースが比較的多数の3Dマップを含む場合、処理能力および/または時間が比較的増加する可能性がある。さらに、システムは、受信するビデオデータを3Dマップと繰り返し(および/または連続的に)比較しなければならず、それによって、システムの効率が低下する。しかしながら、オブジェクト認識モジュールによって取得される情報を活用することにより、(視覚データベースを3Dマップと連続的に比較するのとは対照的に)比較的少数のフレームについてより少ない3Dマップ(たとえば、認識されたデバイスに関連付けられたもの)を解決することによって、効率を改善できる(また、処理能力および/または時間を削減することができる)。
【0018】
図1A図1Hは、コンピューティングシステム100上のセンサシステム112によってキャプチャされた視覚データ116と、マップデータベース105に格納された3Dマップ124とに基づいて、1つ以上の制御可能デバイス152の位置134を検出するように構成されたコンピューティングシステム100を示す。位置134は、制御可能デバイス152の3D位置であってもよく、3D位置は、ユーザ(および/またはコンピューティングシステム100)が位置する3D物理空間における制御可能デバイス152の場所(およびオプションとして、向き)である。いくつかの例では、位置134は、制御可能デバイス152の6DoF位置134aを含む。図1Bを参照すると、コンピューティングシステム100は、位置134を使用して、3D空間における制御可能デバイス152の閾値距離に対応する場所および/または当該閾値距離以内の場所で、ディスプレイ108上にユーザインターフェイス(UI)オブジェクト140をレンダリングする。いくつかの例では、コンピューティングシステム100は、位置134を使用して、3D空間における制御可能デバイス152の位置に(たとえば、ユーザの視点から見て)近接する場所で、ディスプレイ108上にUIオブジェクト140をレンダリングする。いくつかの例では、UIオブジェクト140は、コンピューティングシステム100の画像センサ114によってキャプチャされた物理空間においてレンダリングされた仮想オブジェクトである。いくつかの例では、UIオブジェクト140は、部屋における制御可能デバイス152の位置を強調表示する視覚インジケータである。いくつかの例では、UIオブジェクト140は、制御可能デバイス152を制御するための1つ以上の対話型コントロールを提供する。いくつかの例では、ユーザは、ユーザがUIオブジェクト140と対話できるように、UIオブジェクト140に(たとえば、ユーザの視点から見て)近接する場所で自分の手を動かし得る。いくつかの例では、UIオブジェクト140は、制御可能デバイス152に関する追加情報を提供する。
【0019】
コンピューティングシステム100は、1つ以上のデバイスを含むことができ、デバイスの少なくとも1つは、人の皮膚上にまたは皮膚に近接して装着可能な表示デバイスである。いくつかの例では、コンピューティングシステム100は、ウェアラブルデバイスであるか、またはウェアラブルデバイスを含む。ウェアラブルデバイスは、光学式ヘッドマウントディスプレイ(optical head-mounted display:OHMD)デバイス、透明ヘッドアップディスプレイ(transparent heads-up display:HUD)デバイス、拡張現実(augmented reality:AR)デバイスなどのヘッドマウントディスプレイ(head-mounted display:HMD)デバイス、またはセンサ、ディスプレイ、およびコンピューティング能力を有するゴーグルもしくはヘッドセットなどの他のデバイスを含み得る。いくつかの例では、ウェアラブルデバイスは、スマートグラスを含む。スマートグラスは、眼鏡の形状に設計された光学式ヘッドマウント表示デバイスである。たとえば、スマートグラスは、着用者が眼鏡を通して見るものと一緒に情報を追加する(たとえば、ディスプレイ108を投影する)眼鏡である。いくつかの例では、ユーザがスマートグラスを着用してドレッサーに設置されたスマートスピーカのある寝室に入ると、ウェアラブルデバイスは、ユーザがスマートスピーカを制御し、かつ/またはスマートスピーカに関する追加情報を見ることができるように、スマートスピーカの閾値距離に対応する(たとえば、ディスプレイの)位置および/または当該閾値距離以内の位置で、UIオブジェクト140をレンダリングし得る。
【0020】
いくつかの例では、コンピューティングシステム100は、ウェアラブルデバイス(たとえば、スマートグラス)およびコンピューティングデバイス(たとえば、スマートフォン、タブレット、ラップトップ、またはスマートウォッチ等の別のウェアラブルデバイスなどのモバイルコンピューティングデバイス)を含む。ウェアラブルデバイスは、短距離接続(たとえば、Bluetooth(登録商標)接続もしくは近距離通信(near-field communication:NFC)接続)またはインターネット接続(たとえば、Wi-Fi(登録商標)もしくはモバイルネットワーク)などの無線接続を介して、コンピューティングデバイスに接続され得る。いくつかの例では、コンピューティングシステム100のコンポーネントの一部は、ウェアラブルデバイスに含まれ、コンピューティングシステム100のコンポーネントの一部は、コンピューティングデバイスに含まれる。いくつかの例では、コンピューティングシステム100のコンポーネントのすべてが、ウェアラブルデバイスに含まれる。
【0021】
コンピューティングシステム100は、1つ以上のプロセッサ104を含み、これらは、1つ以上の機械実行可能命令もしくはソフトウェア、ファームウェア、またはそれらの組み合わせを実行するように構成された基板に形成され得る。プロセッサ104は、半導体ベースであり得る、すなわち、プロセッサは、デジタル論理を実行することができる半導体材料を含み得る。コンピューティングシステム100はまた、1つ以上のメモリデバイス106を含み得る。メモリデバイス106は、プロセッサ(複数可)104によって読取および/または実行可能なフォーマットで情報を格納する、任意のタイプの記憶装置を含み得る。メモリデバイス106は、プロセッサ(複数可)104によって実行されると、特定の動作を実行するアプリケーションおよびモジュール(たとえば、デバイス検出器126、位置特定器132、UIオブジェクトレンダラー136、オブジェクト認識モジュール118、仮想アンカーアプリケーション170など)を格納し得る。いくつかの例では、アプリケーションおよびモジュールは、外部記憶装置に格納され、メモリデバイス106にロードされ得る。
【0022】
コンピューティングシステム100は、ユーザの視野に投影されるディスプレイ108を含む。ディスプレイ108は、液晶ディスプレイ(liquid crystal display:LCD)、発光ダイオード(light-emitting diode:LED)ディスプレイ、有機発光ディスプレイ(organic light-emitting display:OLED)、電気泳動ディスプレイ(electro-phoretic display:EPD)、またはLED光源を採用するマイクロ投影ディスプレイを含み得る。いくつかの例では、スマートグラスの場合、ディスプレイ108は、眼鏡をかけたユーザがディスプレイ108によって提供される画像だけでなく、投影画像の背後にあるスマートグラスの視野に位置する情報も見ることができるように、透明または半透明のディスプレイを提供し得る。いくつかの例では、UIオブジェクト140は、物理空間のユーザの光学的視野に重畳される。コンピューティングシステム100は、他のコンピューティングデバイス(複数可)との通信を可能にするために、1つ以上のアンテナ110を含み得る。図1A図1Hには示されていないが、コンピューティングシステム100は、ユーザがコンピューティングシステム100を制御することを可能にする(たとえば、ディスプレイ108に表示されるインターフェイスを介してスワイプすることを可能にする)タッチパッドを含み得る。
【0023】
コンピューティングシステム100は、センサシステム112を含む。センサシステム112は、画像センサ114を含む。いくつかの例では、センサシステム112は、複数の画像センサ114を含む。いくつかの例では、ユーザがコンピューティングシステム100(またはコンピューティングシステム100の一部)を装着している間、画像センサ114は、深度情報と共に画像データを含み得る視覚データ116をキャプチャする。いくつかの例では、画像センサ114は、赤緑青(red green blue:RGB)カメラである。いくつかの例では、画像センサ114は、パルスレーザセンサ(たとえば、LiDARセンサ)または深度カメラを含む。たとえば、画像センサ114は、視覚データ116によって表現される画像を作成するために使用される情報を検出し伝達するように構成されたカメラであってもよい。画像センサ114は、写真の撮影およびビデオの記録が可能である。センサシステム112は、慣性運動ユニット(inertial motion unit:IMU)115を含み得る。IMU115は、コンピューティングシステム100の動き、移動、および/または加速を検出し得る。IMU115は、たとえば、加速度計、ジャイロスコープ、磁力計、および他のそのようなセンサなど、さまざまな異なるタイプのセンサを含み得る。センサシステム112は、光センサ、オーディオセンサ、距離および/もしくは近接センサ、静電容量センサなどの接触センサ、タイマー、ならびに/または他のセンサおよび/もしくはセンサの異なる組み合わせ(複数可)などの他のタイプのセンサを含み得る。
【0024】
いくつかの例では、コンピューティングシステム100は、ネットワーク150を介してサーバコンピュータ160と通信するように構成されている。サーバコンピュータ160は、たとえば標準サーバ、そのようなサーバのグループ、またはラックサーバシステムのような、多数の異なるデバイスの形態をとるコンピューティングデバイスであってよい。いくつかの例では、サーバコンピュータ160は、プロセッサおよびメモリなどのコンポーネントを共有する単一のシステムである。ネットワーク150は、インターネットおよび/またはローカルエリアネットワーク(local area network:LAN)、ワイドエリアネットワーク(wide area network:WAN)、セルラーネットワーク、衛星ネットワークなどの他のタイプのデータネットワーク、または他のタイプのデータネットワークを含み得る。ネットワーク150はまた、ネットワーク150内でデータを受信および/または送信するように構成された任意の数のコンピューティングデバイス(たとえば、コンピュータ、サーバ、ルータ、ネットワークスイッチなど)を含み得る。
【0025】
サーバコンピュータ160は、1つ以上のプロセッサ162を含み、これらは、1つ以上の機械実行可能命令もしくはソフトウェア、ファームウェア、またはそれらの組み合わせを実行するように構成された基板に形成され得る。プロセッサ(複数可)162は、半導体ベースであり得る、すなわち、プロセッサは、デジタル論理を実行できる半導体材料を含み得る。サーバコンピュータ160は、1つ以上のメモリデバイス164を含む。メモリデバイス164は、プロセッサ162によって読取および/または実行可能なフォーマットで情報を格納する主メモリを含み得る。
【0026】
いくつかの例では、サーバコンピュータ160は、視覚的位置決めデータサービス161を実行するように構成されている。視覚的位置決めデータサービス161は、ユーザが共有可能なマルチプレイヤーまたは協調的なAR体験を作成するためのクラウドアンカー(たとえば、3Dマップ124)を、ユーザが作成できるようにする拡張現実(AR)協調サービスであってよい。たとえば、ユーザは、ARシーンに仮想オブジェクトを追加することができ、その後、複数のユーザが、共有物理空間内の異なる位置からこれらの仮想オブジェクトを同時に見ることができ、かつこれらと対話することができる。たとえば、ユーザは、自分の環境においてローカルアンカー(たとえば、3Dマップ124)を作成し得る。ホスティング中、コンピューティングシステム100は、視覚的位置決めデータサービス161において3Dマップ124を生成するためにデータをアップロードすることができ、視覚的位置決めデータサービス161は、その3Dマップ124の一意の識別子を返し、当該一意の識別子を他のユーザに配布して同じAR環境に参加することができる。同じ環境にいる他のユーザが、3Dマップ124(たとえば、仮想クラウドアンカー)がホストされた領域にデバイスカメラを向けると、解決要求によって、視覚的位置決めデータサービス161は、シーンからの視覚特徴を、作成された3Dマップ124と定期的に比較し、これを用いて、コンピューティングシステム100は、3Dマップ124に対するユーザの位置および向きを正確に特定する。
【0027】
制御可能デバイス152は、コンピューティングシステム100によって制御可能な多種多様なデバイスを含み得る。図1Aに示すように、制御可能デバイス152は、第1の制御可能デバイス152-1と第2の制御可能デバイス152-2とを含み得る。いくつかの例では、制御可能デバイス152は、コンピューティングシステム100と同じネットワークに接続される(たとえば、制御可能デバイス152は、コンピューティングシステム100と同じWi-Fiネットワークに接続される)。図1Aでは2つの制御可能デバイス152が示されているが、コンピューティングシステム100は、任意の数の制御可能デバイス152に接続され得る。制御可能デバイス152は、照明、スイッチ、コンセント、サーモスタット、バッジリーダー、火災または他の環境アラーム、ブラインド、テレビ、ステレオ、メディアプレーヤーなどの娯楽装置、ならびに無線ネットワークアクセスポイント、プリンタ、スキャナ、およびコピー機などのコンピューティング装置を含み得る。状況によっては、建物には、同じ種類の制御可能デバイスが複数存在する場合がある。たとえば、建物には、複数のホームスピーカまたは複数のビデオストリーミングデバイスがある場合がある。また、建物には、複数の同一またはほぼ同一の制御可能デバイス(たとえば、電球、ホームスピーカなど)が存在する場合がある。
【0028】
ユーザは、コンピューティングシステム100を使用して、制御可能デバイス152にアクセスし、これを制御し、または他の態様ではこれと通信することを望む場合がある。たとえば、コンピューティングシステム100は、1つ以上の制御可能デバイス152(たとえば、第1の制御可能デバイス152-1および第2の制御可能デバイス152-2)へのアクセス、その制御、および/またはそれとの通信を提供し得る。UIオブジェクト(複数可)140がディスプレイ108上にレンダリングされて、制御可能デバイス152にアクセスし、これを制御し、または他の態様ではこれと通信できるように、コンピューティングシステム100が制御可能デバイス152の正確な位置を取得することを可能にするために、3Dマップ124の生成およびマップデータベース105への格納が可能になり、各3Dマップ124は、それぞれの制御可能デバイス152の視覚的位置決めデータを提供する。いくつかの例では、マップデータベース105は、サーバコンピュータ160においてメモリデバイス164に格納される。いくつかの例では、マップデータベース105は、コンピューティングシステム100においてメモリデバイス106に格納される。いくつかの例では、マップデータベース105は、ウェアラブルデバイスに格納される。いくつかの例では、マップデータベース105は、ウェアラブルデバイスに(ローカルに)無線接続されたコンピューティングデバイスに格納される。
【0029】
図1Cに示すように、マップデータベース105は、複数の3Dマップ124を格納することができ、各3Dマップ124は、別々の制御可能デバイス152に対応する。たとえば、第1の3Dマップ124-1は第1の制御可能デバイス152-1に対応し、第2の3Dマップ124-2は第2の制御可能デバイス152-2に対応する。いくつかの例では、3Dマップ124は3Dメッシュである。いくつかの例では、3Dマップ124は3D特徴マップである。いくつかの例では、3Dマップ124は仮想アンカーまたは仮想クラウドアンカーである。いくつかの例では、3Dマップ124は、物理空間および制御可能デバイス152からの視覚情報が位置決めされる座標空間を含む。
【0030】
図1Cに示すように、3Dマップ124は、識別データ120に関連付けて格納され得る。識別データ120は、対応する制御可能デバイス152および/または制御可能デバイス152が位置する空間に関する1つ以上の特性を含み得る。いくつかの例では、図1Dに示すように、識別データ120は、制御可能デバイス152のデバイス名121を含む。いくつかの例では、デバイス名121は、制御可能デバイス152(たとえば、ネストサーモスタット、Google home miniなど)に関連する名前である。いくつかの例では、識別データ120は、制御可能デバイス152のデバイスタイプ123を含む。いくつかの例では、デバイスタイプ123は、デバイスのタイプ、たとえば、スマートスピーカ、メディアストリーミングデバイス、スマートサーモスタットなどを特定する。いくつかの例では、識別データ120は、3Dマップ124に関連する空間の種類を特定する空間タイプ125を含む。たとえば、空間タイプ125は、寝室、書斎、リビングルーム、キッチンなどを指定し得る。図1Cに示すように、第1の3Dマップ124-1は、第1の制御可能デバイス152-1を特定する識別データ120-1に関連付けられ、第2の3Dマップ124-2は、第2の制御可能デバイス152-2を特定する識別データ120-2に関連付けられている。
【0031】
いくつかの例では、3Dマップ124および対応する識別データ120(またはその一部)は、特定の制御可能デバイス152のセットアップ手順の間に生成される。いくつかの例では、3Dマップ124および対応する識別データ120(またはその一部)は、特定の制御可能デバイス152のセットアップ手順の後の時点で生成され得る。いくつかの例では、3Dマップ124および対応する識別データ120は、互いに同じ時間(または同じ時間前後)に生成される。いくつかの例では、識別データ120は、3Dマップ124の生成後に生成され、対応する3Dマップ124にリンクされている。
【0032】
いくつかの例では、第1の制御可能デバイス152-1のセットアップ中に、コンピューティングシステム100(たとえば、ウェアラブルデバイスまたはスマートフォンなどのモバイルデバイスであり得る)は、第1の制御可能デバイス152-の位置に印を付けるために使用される。ユーザは、コンピューティングシステム100上の画像センサ114を関心の中心(たとえば、第1の制御可能デバイス152-)に向け、コンピューティングシステム100を動かして、異なる視野角および位置から環境をマッピングして、第1の制御可能デバイス152-の周囲の特徴点を計算し得る。コンピューティングシステム100によって収集されたデータは、特徴点を生成するために使用される。特徴点は、ユーザの環境を表す関心点であってよい。いくつかの例では、各特徴点は、物理空間における固定された位置および向きを近似し、視覚特徴点のセットは、ユーザが物理空間をマッピングするためにデバイスを移動させるにつれて、時間と共に更新され得る。
【0033】
いくつかの例では、その後、特徴点は、第1の3Dマップ124-1を生成するためにサーバコンピュータ160における視覚的位置決めデータサービス161に送信され、第1の3Dマップ124-1は、サーバコンピュータ160におけるマップデータベース105に格納される。以上説明したように、第1の3Dマップ124-1は、第1の制御可能デバイス152-1を特定する識別データ120-1(たとえば、デバイス名121、デバイスタイプ123、空間タイプ125など)に関連付けて格納される。第1の制御可能デバイス152-1がスマートスピーカである場合、識別データ120-1は、第1の3Dマップ124-1がスマートスピーカに関連付けられていること、スマートスピーカの名前、および/またはスマートスピーカのタイプを表し得る。いくつかの例では、サーバコンピュータ160における視覚的位置決めデータサービス161は、特徴点を分析して、どのタイプの物理空間が第1の制御可能デバイス152-1に関連付けられているかを判断し(たとえば、第1の制御可能デバイス152-1の部屋のベッドが、第1の制御可能デバイス152-1が寝室にあることを示す場合がある)、第1の3Dマップ124-1は空間タイプ125に関連付けて格納される。いくつかの例では、サーバコンピュータ160において第1の3Dマップ124-1を生成する代わりに、コンピューティングシステム100は、特徴点または一般に任意のタイプの3Dスキャン技術を使用して、メモリデバイス106において第1の3Dマップ124-1(および対応する識別データ120-1)を生成し、マップデータベース105に格納し得る。
【0034】
別の制御可能デバイス152のセットアップ中に、同じ動作を適用し得る。たとえば、第2の制御可能デバイス152-2のセットアップ中に、第2の制御可能デバイス152-2の場所を特定する第2の3Dマップ124-2が生成される。第2の3Dマップ124-2は、第2の制御可能デバイス152-2に関連する識別データ120-2(たとえば、デバイス名121、デバイスタイプ123、空間タイプ125など)に関連付けて格納される。第2の制御可能デバイス152-2がスマートサーモスタットである場合、識別データ120-2は、第2の3Dマップ124-2がスマートサーモスタットに関連付けられていること、スマートサーモスタットの名前、および/またはスマートサーモスタットのタイプを示し得る。いくつかの例では、サーバコンピュータ160における視覚的位置決めデータサービス161は、特徴点を分析して、どのタイプの物理空間が第2の制御可能デバイス152-2に関連付けられているかを判断し(たとえば、第2の制御可能デバイス152-2の部屋のソファが、第2の制御可能デバイス152-2がリビングルームにあることを示す場合がある)、第2の3Dマップ124-2は、空間タイプ125に関連付けて格納される。いくつかの例では、第1の制御可能デバイス152-1は、第2の制御可能デバイス152-2と同じ空間に配置されている。いくつかの例では、第1の制御可能デバイス152-1は、第2の制御可能デバイス152-2と異なる空間に配置されている。
【0035】
セットアップ手順の後(たとえば、コンピューティングシステム100の通常の使用中)、ユーザは、物理空間に入り、画像センサ114を使用して視覚データ116をキャプチャし得る。コンピューティングシステム100は、視覚データ116およびマップデータベース105を使用して、制御可能デバイス152および制御可能デバイス152の位置134を検出するように構成されたデバイス検出器126を含む。位置134は、制御可能デバイス152の6DoF位置134aを含み得る。いくつかの例では、6DoF位置134は、上下の移動(たとえば、昇降/上下動)、左右の移動(たとえば、横滑り/揺動)、前後の移動(たとえば、歩行/前後動)、左右の旋回(たとえば、偏揺れ)、前後の傾斜(たとえば、縦揺れ)、および/または左右の旋回(たとえば、回転)等の平行移動ならびに回転を記述する情報を含む。
【0036】
デバイス検出器126は、オブジェクト認識モジュール118を含む。オブジェクト認識モジュール118は、1つ以上の画像認識アルゴリズムを含むことができ、この画像認識アルゴリズムは、1つ以上のニューラルネットワークを含み得る。いくつかの例では、オブジェクト認識モジュール118は、画像センサ114をオブジェクトに向けると、バーコード、QRコード(登録商標)、ラベル、および/またはテキストを読み取ることによってオブジェクトを特定するように構成されている。オブジェクト認識モジュール118は、視覚データ116内のオブジェクトを特定し、検出されたオブジェクトに関する識別データ120を生成するように構成されている。オブジェクト認識モジュール118によって生成された識別データ120は、視覚データ116に対して解決するためのマップデータベース105内の3Dマップ124のどれかを選択または特定するために使用される。上記したように、識別データ120は、デバイス名121、デバイスタイプ123、空間タイプ125、および/または制御可能デバイス152もしくは制御可能デバイス152を含む空間に関する他の特性(複数可)を含み得る。
【0037】
たとえば、第1の制御可能デバイス152-1が視覚データ116によってキャプチャされる場合、オブジェクト認識モジュール118は、第1の制御可能デバイス152-1のデバイス名121および/またはデバイスタイプ123を含むように識別データ120を生成し得る。同様に、第2の制御可能デバイス152-2が視覚データ116によってキャプチャされる場合、オブジェクト認識モジュール118は、第2の制御可能デバイス152-2のデバイス名121および/またはデバイスタイプ123を含むように識別データ120を生成し得る。いくつかの例では、ベッドが視覚データ116によってキャプチャされる場合、オブジェクト認識モジュール118は、空間タイプ125(たとえば、寝室)を含むように識別データ120を生成し得る。いくつかの例では、オーブンが視覚データ116によってキャプチャされる場合、オブジェクト認識モジュール118は、空間タイプ125(たとえば、キッチン)を含むように識別データ120を生成し得る。
【0038】
デバイス検出器126は、識別データ120を用いてマップデータベース105に格納されている3Dマップ124を特定する位置特定器132を含む。図1Eに示すように、識別データ120が識別データ120-1である場合、第1の3Dマップ124-1が識別データ120-1に関連付けられてマップデータベース105に格納されているので、複数の3Dマップ124のうちの第1の3Dマップ124-1が特定され得る。いくつかの例では、識別データ120-1はホームスピーカを示し、第2の識別データ120-2はスマート電球を示し得る。位置特定器132で受信された識別データ120がホームスピーカを示す場合、第1の3Dマップ124-1が特定され得る。
【0039】
次に、視覚データ116を特定された3Dマップ124と比較して、一致するかどうかを判定する。たとえば、特定された3Dマップ124が、画像センサ114によってキャプチャされた視覚データ116によって表現される物理空間に少なくとも部分的に対応することを判定するために、視覚データ116は、一致があるかどうか(たとえば、同じ物理空間を含むかどうか)判断するために、3Dマップ124と比較される。たとえば、物理空間が格納された特徴点の物理空間と同じかどうかを判断し、物理空間内の制御可能デバイス152の場所を計算するために、3Dマップ124内の視覚特徴点を使用して、(たとえば、視覚データ116から検出された)他の視覚特徴点と比較し突き合わせることができる。
【0040】
一致する場合、位置特定器132は、3Dマップ124の視覚的位置決めデータ141を取得する。いくつかの例では、視覚的位置決めデータ141は、制御可能デバイス152の姿勢(たとえば、位置および向き)を含む。位置特定器132は、視覚的位置決めデータ141を使用して、コンピューティングシステム100に対する制御可能デバイス152-1の位置134を計算する。いくつかの例では、位置特定器132は、視覚的位置決めデータ141およびIMU115からの情報を使用して、コンピューティングシステム100に対する制御可能デバイス152-1の位置134を計算する。
【0041】
マップデータベース105がサーバコンピュータ160におけるメモリデバイス164に格納されている場合、デバイス検出器126は、アンテナ(複数可)110と連動して動作して、サーバコンピュータ160における視覚的位置決めデータサービス161と通信し得る。たとえば、デバイス検出器126は、識別データ120および視覚データ116を、視覚的位置決めデータサービス161に送信し得る。視覚的位置決めデータサービス161は、サーバコンピュータ160におけるメモリデバイス164に格納されたマップデータベース105から適切な3Dマップ124を特定し、視覚データ116を特定した3Dマップ124と比較することができ、比較の結果が一致する場合、視覚的位置決めデータサービス161は、3Dマップ124の視覚的位置決めデータ141をデバイス検出器126に返し得る。
【0042】
マップデータベース105がコンピューティングシステム100におけるメモリデバイス106に格納されている場合、いくつかの例では、デバイス検出器126は、コンピューティングシステム100におけるメモリデバイス106に格納されているマップデータベース105から適切な3Dマップ124を特定し、視覚データ116を特定した3Dマップ124と比較することができ、比較が一致する場合、位置特定器132は、適切な3Dマップ124から視覚的位置決めデータ141を取得し得る。
【0043】
いくつかの例では、デバイス検出器126は、制御可能デバイス152の検出を支援するために、視覚データ116以外の他の信号を使用する。たとえば、デバイス検出器126は、1つ以上の無線信号130を受信し、無線信号130を使用して、複数の類似した外観の制御可能デバイス152を区別し得る。いくつかの例では、無線信号130は、Bluetooth信号および/またはNFC信号(もしくは超音波信号)などの短距離無線信号を含む。たとえば、2つの類似した外観の制御可能デバイス152がユーザの領域にある場合、デバイス検出器126は、制御可能デバイス152からBluetooth信号を受信することができ、Bluetooth信号の強度が、ユーザがどの制御可能デバイス152を制御しようと意図しているかを表示し得る。
【0044】
コンピューティングシステム100は、位置134を使用して、3D空間における制御可能デバイス152の位置134に近接する場所でディスプレイ108上にUIオブジェクト140をレンダリングするUIオブジェクトレンダラー136を含む。いくつかの例では、UIオブジェクト140は、ユーザがスマートグラスを通して見る物理空間内に配置される仮想オブジェクトである。いくつかの例では、UIオブジェクト140は、現実世界における制御可能デバイス152の位置134に近い場所に位置決めされてもよい。いくつかの例では、UIオブジェクト140は、3D空間における制御可能デバイス152の位置134の閾値距離内にある場所で、ディスプレイ108上に位置決めされる。言い換えれば、UIオブジェクト140の位置と制御可能デバイス152の位置134との間の距離は、閾値レベル未満であってよい。いくつかの例では、UIオブジェクト140は、UIオブジェクト140によって提供される情報が制御可能デバイス152に対応することをユーザが認識するであろう位置で、ディスプレイ108上にレンダリングされる。いくつかの例では、UIオブジェクト140は、制御可能デバイス152の位置134に対応する場所で、ディスプレイ108上にレンダリングされる。いくつかの例では、UIオブジェクト140の位置は、制御可能デバイス152の位置134を基準として使用して、判定または計算される。いくつかの例では、UIオブジェクト140は、制御可能デバイス152を制御するための1つ以上のコントロールを提供する。たとえば、UIオブジェクト140は、メディアストリーミングプレーヤでアプリケーションを起動する、スマートスピーカの音量を変更する、スマートスピーカで曲を再生する、などのための1つ以上のコントロールを提供し得る。いくつかの例では、UIオブジェクト140は、制御可能デバイス152に関する追加情報を提供する。たとえば、UIオブジェクト140は、スマートサーモスタットに関する履歴データを指定し得る。
【0045】
図1F図1Hは、3Dマップ124の生成および格納のさまざまな例を示す。図1Fは、ある態様に係るサーバコンピュータにおける第1の制御可能デバイス152-1のための第1の3Dマップ124-1の生成および格納を示す。図1Gは、ある態様に係る、コンピューティングシステム100における第1の制御可能デバイス152-1のための第1の3Dマップ124-1の生成および格納を示す。図1Hは、別の態様に係る、コンピューティングシステム100における第1の制御可能デバイス152-1のための第1の3Dマップ124-1の生成および格納を示す。
【0046】
図1Fを参照すると、第1の制御可能デバイス152-1のセットアップ中に、コンピューティングシステム100は、第1の制御可能デバイス152-1の位置に印を付けるために使用され得る。ユーザは、センサシステム112の画像センサ114を第1の制御可能デバイス152-1に向け、コンピューティングシステム100を移動させて、異なる視野角および位置から環境をマッピングし得る。いくつかの例では、コンピューティングシステム100は、センサシステム112からデータを受信し、仮想アンカーデータ172を生成する仮想アンカーアプリケーション170を含む。仮想アンカーデータ172は、視覚データ174、デバイス姿勢(複数可)176、およびアンカー姿勢(複数可)178を含み得る。いくつかの例では、視覚データ174は視覚データ116の一例である。仮想アンカーアプリケーション170は、(1つ以上のアプリケーションプログラミングインターフェイス(application programming interface:API)を介して)サーバコンピュータ160における視覚的位置決めデータサービス161と通信するように構成されている。仮想アンカーアプリケーション170は、物理空間に対するその位置を検出および追跡し、異なるタイプの表面(たとえば、水平面、垂直面、角度のある面)のサイズおよび場所を検出し、環境の現在の照明条件を推定するように構成されている。仮想アンカーアプリケーション170は、仮想アンカーデータ172を(コンピューティングシステム100が環境をマッピングすると)視覚的位置決めデータサービス161に送信するように構成されている。視覚的位置決めデータサービス161は、仮想アンカーデータ172に基づいて第1の3Dマップ124-1を生成するように構成された3Dマップ生成器165を含む。3Dマップ生成器165は、第1の3Dマップ124-1をマップデータベース105に格納するように構成されている。
【0047】
いくつかの例では、仮想アンカーアプリケーション170は、視覚データ174から視覚特徴点のセットを検出し、視覚特徴点のセットの移動を経時的に追跡するように構成されている。視覚特徴点のセットは、ユーザの環境を表す複数の点(たとえば、関心点)であり、視覚特徴点のセットは、時間の経過と共に更新され得る。いくつかの例では、視覚特徴点のセットは、アンカーまたは物理的世界の物理的オブジェクトを表す永続的な視覚特徴のセットと呼ばれることがあり、視覚特徴点のセットは、マップデータベース105に格納され、これは、後続のセッションにおいてまたは別のユーザのために環境をローカライズするためのものであってもよい。
【0048】
図1Gを参照すると、第1の制御可能デバイス152-1のセットアップの間、図1Fと同様に、コンピューティングシステム100は、第1の制御可能デバイス152-1の場所に印を付けるために使用される。ユーザは、センサシステム112の画像センサ114を第1の制御可能デバイス152-1に向け、コンピューティングシステム100を移動させて、異なる視野角および位置から環境をマッピングし得る。仮想アンカーアプリケーション170は、センサシステム112からデータを受信し、視覚データ174、デバイス姿勢(複数可)176、およびアンカー姿勢(複数可)178を含む仮想アンカーデータ172を生成する。図1Gの例では、コンピューティングシステム100は、仮想アンカーデータ172に基づいて第1の3Dマップ124-1を生成するように構成された3Dマップ生成器165を含む。3Dマップ生成器165は、コンピューティングシステム100において、第1の3Dマップ124-1をマップデータベース105に格納するように構成されている。
【0049】
図1Hを参照すると、第1の制御可能デバイス152-1のセットアップ中、図1Fおよび図1Gと同様に、コンピューティングシステム100は、第1の制御可能デバイス152-1の場所に印を付けるために使用される。いくつかの例では、コンピューティングシステム100は、第1の制御可能デバイス152-1の環境をスキャンし、コンピューティングシステム100においてマップデータベース105に格納される第1の3Dマップ124-1を作成するように構成された3Dスキャンモジュール111を含む。
【0050】
図2は、別の態様に係るコンピューティングシステム200を示す。コンピューティングシステム200は、図1A図1Hのコンピューティングシステム100を参照して説明された特徴のいずれかを含み得る。いくつかの例では、コンピューティングシステム200は、ヘッドマウント表示デバイス202を含む。いくつかの例では、ヘッドマウント表示デバイス202は、図1A図1Hのコンピューティングシステム100のコンポーネントの全てを含む。たとえば、ヘッドマウント表示デバイス202は、プロセッサ(複数可)104と、メモリデバイス(複数可)106と、ディスプレイ108と、センサシステム112(画像センサ114およびIMU115を含む)と、アンテナ(複数可)と、デバイス検出器126(およびデバイス検出器126のサブコンポーネント)と、図1A図1HのUIオブジェクトレンダラー136とを含み得る。いくつかの例では、ヘッドマウント表示デバイス202は、マップデータベース105を含む。いくつかの例では、ヘッドマウント表示デバイス202は、図1F図1Hを参照して説明したように(たとえば、セットアップ手順の間に)3Dマップ124を生成および格納するように構成され、3Dマップ124は、ヘッドマウント表示デバイス202にローカルに、またはサーバコンピュータ(たとえば、図1A図1Hのサーバコンピュータ160)に、格納することができる。いくつかの例では、図1Fおよび図1Gの仮想アンカーアプリケーション170は、ヘッドマウント表示デバイス202に含まれる。いくつかの例では、3Dスキャンモジュール111は、ヘッドマウント表示デバイス202に含まれる。
【0051】
いくつかの例では、コンピューティングシステム200は、ヘッドマウント表示デバイス202およびコンピューティングデバイス201を含む。コンピューティングデバイス201は、無線接続275を介してヘッドマウント表示デバイス202に接続され得る。いくつかの例では、コンピューティングデバイス201は、スマートフォン、タブレット、ラップトップ、または他のウェアラブルデバイスのようなモバイルコンピューティングデバイスを含む。いくつかの例では、無線接続275は、近距離通信(NFC)接続またはBluetooth接続などの短距離通信リンクである。いくつかの例では、無線接続275は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、セルラーネットワーク、衛星ネットワーク、または他のタイプのデータネットワークのようなネットワーク接続である。いくつかの例では、無線接続275は、ネットワーク内でデータを受信および/または送信するように構成された任意の数のコンピューティングデバイス(たとえば、コンピュータ、サーバ、ルータ、ネットワークスイッチなど)を含み得る。
【0052】
いくつかの例では、図1A図1Hのコンピューティングシステム100のコンポーネントの一部は、ヘッドマウント表示デバイス202に含まれ、図1A図1Hのコンピューティングシステム100のコンポーネントの一部は、コンピューティングデバイス201に含まれる。いくつかの例では、図1A図1Hのセンサシステム112、プロセッサ(複数可)104、メモリデバイス(複数可)106、アンテナ(複数可)110、およびディスプレイ108は、ヘッドマウント表示デバイス202に含まれる。いくつかの例では、図1A図1HのUIオブジェクトレンダラー136は、ヘッドマウント表示デバイス202に含まれる。いくつかの例では、図1A図1HのUIオブジェクトレンダラー136は、コンピューティングデバイス201に含まれる。いくつかの例では、図1A図1Hのマップデータベース105は、コンピューティングデバイス201に格納される。いくつかの例では、図1A図1Hのマップデータベース105は、サーバコンピュータ(たとえば、図1A図1Hのサーバコンピュータ160)に格納され、コンピューティングデバイス201および/またはヘッドマウント表示デバイス202は、図1A図1Hのサーバコンピュータ160と通信するように構成されている。
【0053】
いくつかの例では、図1A図1Hのデバイス検出器126は、コンピューティングデバイス201に含まれる。いくつかの例では、ヘッドマウント表示デバイス202上でセンサシステム112によってキャプチャされた視覚データ116は、無線接続275を介してコンピューティングデバイス201に送信されてもよい。デバイス検出器126は、制御可能デバイス152の位置134を検出し、ヘッドマウント表示デバイス202上のUIオブジェクトレンダラー136によって使用されるように、無線接続275を介して、位置134をヘッドマウント表示デバイス202に送信し得る。いくつかの例では、UIオブジェクトレンダラー136は、コンピューティングデバイス201上に含まれ、ヘッドマウント表示デバイス202上のディスプレイ108上にUIオブジェクト140をレンダリングするための命令を、無線接続275を介して送信する。いくつかの例では、図1A図1Hのオブジェクト認識モジュール118は、ヘッドマウント表示デバイス202に含まれ、位置特定器132はコンピューティングデバイス201に含まれ、ヘッドマウント表示デバイス202は、識別データ120をコンピューティングデバイス201上の位置特定器132に送信する。
【0054】
いくつかの例では、コンピューティングデバイス201は、図1F図1Hを参照して説明したように(たとえば、セットアップ手順の間に)3Dマップ124を生成および格納するように構成され、3Dマップ124は、コンピューティングデバイス201にローカルに、またはサーバコンピュータ(たとえば、図1A図1Hのサーバコンピュータ160)に格納することができる。いくつかの例では、図1Fおよび図1Gの仮想アンカーアプリケーション170は、コンピューティングデバイス201に含まれる。いくつかの例では、図1Fおよび図1Gの仮想アンカーアプリケーション170は、コンピューティングデバイス201およびヘッドマウント表示デバイス202に含まれる。いくつかの例では、3Dスキャンモジュール111は、コンピューティングデバイス201に含まれる。
【0055】
図3は、ある態様に係るヘッドマウント表示デバイス302の一例を示す。ヘッドマウント表示デバイス302は、図1A図1Hのコンピューティングシステム100および/または図2のヘッドマウント表示デバイス202の一例であってもよい。ヘッドマウント表示デバイス302は、スマートグラス396を含む。スマートグラス396は、着用者が眼鏡を通して見るものと一緒に情報を追加する(たとえば、ディスプレイ308を投影する)眼鏡である。いくつかの例では、ディスプレイ308は、情報を投影するものではなくレンズ内マイクロディスプレイである。いくつかの例では、スマートグラス396(たとえば、眼鏡(eyeglasses, spectacles))は、人の目の前で保持するフレーム371に取り付けられたレンズ372(たとえば、ガラスまたは硬質プラスチックレンズ)を含む視覚補助具であり、典型的には鼻上のブリッジ373、および耳の上に載る脚部374(たとえば、テンプルまたはテンプル片)を利用する。スマートグラス396は、スマートグラス396の回路を含む電子機器コンポーネント370を含む。いくつかの例では、電子機器コンポーネント370は、図1A図1Hのコンピューティングシステム100のコンポーネントおよび/または図2のヘッドマウント表示デバイス202のコンポーネントを包含する筐体を含む。いくつかの例では、電子機器コンポーネント370は、スマートグラス396の脚部374の一方(または脚部374の両方)に含まれるか統合される。
【0056】
図4A図4Dは、(たとえば、結果として生じる視覚的印象において)検出された制御可能デバイス452に近接する場所に配置されたUIオブジェクト440を示すディスプレイ408の例を示す。いくつかの例では、制御可能デバイス452は、スマートスピーカを含む。しかしながら、制御可能デバイス452は、本明細書で議論される任意のタイプの制御可能デバイスを含み得る。いくつかの例では、ディスプレイ408に示される情報は、スマートグラスのレンズを通して示される視覚情報である。UIオブジェクト440は、スマートグラスを通して示されるような物理空間に配置される仮想オブジェクトと見なされ得る。
【0057】
図4Aを参照すると、UIオブジェクト440は、3D空間における制御可能デバイス452の場所を示す、制御可能デバイス452の周囲の視覚インジケータとしてレンダリングされ得る。図4Bを参照すると、UIオブジェクト440は、制御可能デバイス452に近接した(たとえば、近い)位置でレンダリングされ得る。図4Bにおいて、UIオブジェクト440は、制御可能デバイス452の周りの視覚インジケータと、ユーザが制御可能デバイス452と対話することを可能にするUIコントロールとを含む。いくつかの例では、ユーザは、音楽を再生するためのコントール等の、制御可能デバイスを制御するためのUIコントロールと対話し得る。図4Cを参照すると、UIオブジェクト440は、ユーザが制御可能デバイス452と対話することを可能にするUIコントロールと、ディスプレイ408に示される他の視覚情報に関連してユーザの手(または指)が配置される領域を示す視覚インジケータとを含み得る。たとえば、ユーザは、制御可能デバイス452と対話するために、UIオブジェクト440の領域で手(または指)を動かすことができる。図4Cの視覚インジケータは、UIオブジェクト440に関連してユーザの身体部分がどの位置/方向に位置しているかを判断する際にユーザを支援し得る。図4Dを参照すると、UIオブジェクト440は、ディスプレイ408に示される他の視覚情報に関連してユーザの手(または指)が配置される領域を示す視覚インジケータと、ユーザが制御可能デバイス452を制御することを可能にする複数のUIコントロールとを含み得る。いくつかの例では、UIコントロールは、音楽の再生またはウェブの検索などの動作を含み得る。
【0058】
図5は、検出された制御可能デバイス552に近接する場所に配置されたUIオブジェクト540を示すディスプレイ508の例を示す。いくつかの例では、制御可能デバイス552は、スマートテレビまたはメディアストリーミングデバイスを含む。しかしながら、制御可能デバイス552は、本明細書で議論される任意のタイプの制御可能デバイスを含み得る。いくつかの例では、ディスプレイ508に示される情報は、スマートグラスのレンズを通して示される視覚情報である。UIオブジェクト540は、スマートグラスを通して示されるような物理空間内に配置される仮想オブジェクトと見なされ得る。図5を参照すると、UIオブジェクト540は、メディアストリーミングアプリケーション等のアプリケーションを開くといった、ユーザが制御可能デバイス552と対話することを可能にするUIコントロールを含む。
【0059】
図6は、検出された制御可能デバイス652に近接する(たとえば、近い)場所に配置されたUIオブジェクト640を示すディスプレイ608の例を示す。いくつかの例では、制御可能デバイス652は、スマートスピーカを含む。しかしながら、制御可能デバイス652は、本明細書で議論される任意のタイプの制御可能デバイスを含み得る。いくつかの例では、ディスプレイ608に示される情報は、スマートグラスのレンズを通して示される視覚情報である。UIオブジェクト640は、スマートグラスを通して示されるような物理空間内に配置される仮想オブジェクトと見なされ得る。図6を参照すると、UIオブジェクト640は、音楽を再生するためのコントロールなど、ユーザが制御可能デバイス652と対話することを可能にするUIコントロールを含む。
【0060】
図7は、検出された制御可能デバイス752に近接する(たとえば、近い)場所に配置されたUIオブジェクト740を示すディスプレイ708の例を示す。いくつかの例では、制御可能デバイス752は、スマートサーモスタットを含む。しかしながら、制御可能デバイス752は、本明細書で議論される任意のタイプの制御可能デバイスを含み得る。いくつかの例では、ディスプレイ708に示される情報は、スマートグラスのレンズを通して示される視覚情報である。UIオブジェクト740は、スマートグラスを通して示されるような物理空間に配置される仮想オブジェクトと見なされ得る。図7を参照すると、UIオブジェクト740は、制御可能デバイス752に関する履歴データまたは他の情報といった、制御可能デバイス752に関する追加情報を提供する。
【0061】
図8は、検出された制御可能デバイス852に近接する(たとえば、近い)場所に配置されたUIオブジェクト840を示すディスプレイ808の例を示す。いくつかの例では、制御可能デバイス852は、スマートスピーカを含む。しかしながら、制御可能デバイス852は、本明細書で議論される任意のタイプの制御可能デバイスを含み得る。いくつかの例では、ディスプレイ808に示される情報は、スマートグラスのレンズを通して示される視覚情報である。UIオブジェクト840は、スマートグラスを通して示されるような物理空間内に配置される仮想オブジェクトと見なされ得る。図8を参照すると、UIオブジェクト840は、スマートスピーカを制御するためのUIコントロールと、スマートスピーカで再生されているものについての情報とを含む。
【0062】
図9は、図1A図1Hのコンピューティングシステム100の動作例を示すフローチャート900を示す。フローチャート900は、図1A図1Hのコンピューティングシステム100を参照して説明されているが、フローチャート900は、本明細書の実施形態のいずれにも適用可能である。
【0063】
動作902は、ウェアラブルデバイス(たとえば、コンピューティングシステム100)上の画像センサ114から、視覚データ116を受信することを含む。動作904は、視覚データ116を用いて、第1の3次元(3D)マップ124-1および第2の3Dマップ124-2を含む複数の3Dマップ124を格納するマップデータベース105から、第1の3Dマップ124-1を特定することを含み、第1の3Dマップ124-1は第1の制御可能デバイス152-1に関連付けられ、第2の3Dマップ124-2は第2の制御可能デバイス152-2に関連付けられている。動作906は、第1の3Dマップ124-1に基づいて、ウェアラブルデバイスに対する空間内の第1の制御可能デバイス152-1の位置134(たとえば、6DoF位置134a)を取得することを含む。動作908は、第1の制御可能デバイス152-1の位置134に近接する位置で、ウェアラブルデバイスのディスプレイ108上にユーザインターフェイス(UI)オブジェクト140をレンダリングすることを含む。
【0064】
図10は、本明細書で説明する技術と共に使用され得る例示的なコンピュータデバイス1000および例示的なモバイルコンピュータデバイス1050の一例を示す。コンピューティングデバイス1000は、プロセッサ1002と、メモリ1004と、ストレージデバイス1006と、メモリ1004および高速拡張ポート1010に接続する高速インターフェイス1008と、低速バス1014およびストレージデバイス1006に接続する低速インターフェイス1012とを含む。コンポーネント1002,1004,1006,1008,1010および1012の各々は、さまざまなバスを用いて相互接続されており、共通のマザーボードに搭載され得る、または適宜の態様で搭載され得る。プロセッサ1002は、高速インターフェイス1008に結合されたディスプレイ1016などの外部入出力デバイスにGUI用のグラフィカル情報を表示するために、メモリ1004またはストレージデバイス1006に格納された命令を含む、コンピューティングデバイス1000内で実行するための命令を処理することができる。他の実現例では、複数のプロセッサおよび/または複数のバスが、複数のメモリおよび複数のタイプのメモリと共に、適宜使用され得る。さらに、複数のコンピューティングデバイス1000を接続することができ、各デバイスが必要な動作の一部を(たとえば、サーババンク、ブレードサーバ群、またはマルチプロセッサシステムとして)提供する。
【0065】
メモリ1004は、コンピューティングデバイス1000内の情報を格納する。ある実現例では、メモリ1004は、1つまたは複数の揮発性メモリユニットである。別の実現例では、メモリ1004は、1つまたは複数の不揮発性メモリユニットである。メモリ1004はまた、磁気ディスクまたは光ディスクなどの別の形態のコンピュータ読取可能媒体であってもよい。
【0066】
ストレージデバイス1006は、コンピューティングデバイス1000に大容量ストレージを提供可能である。ある実現例では、ストレージデバイス1006は、フロッピー(登録商標)ディスクデバイス、ハードディスクデバイス、光ディスクデバイス、もしくはテープデバイス等の、フラッシュメモリもしくは他の同様のソリッドステートメモリデバイス、またはストレージエリアネットワークもしくは他の構成におけるデバイスを含むデバイスのアレイなどであり得るか、またはそれらを含み得る。コンピュータプログラム製品は、情報担体において有形に具現化可能である。また、コンピュータプログラム製品は、実行されると、上述したような1つ以上の方法を実行する命令を含み得る。情報担体は、メモリ1004、ストレージデバイス1006、またはプロセッサ1002上のメモリなどの、コンピュータ読取可能媒体または機械読取可能媒体である。
【0067】
高速コントローラ1008は、コンピューティングデバイス1000の帯域幅集約型の動作を管理し、低速コントローラ1012は、より低い帯域幅集約型の動作を管理する。そのような機能の割り当ては例示に過ぎない。ある実現例において、高速コントローラ1008は、メモリ1004、(たとえば、グラフィックプロセッサまたはアクセラレータを介して)ディスプレイ1016、およびさまざまな拡張カード(図示せず)を受け付けることができる高速拡張ポート1010に結合される。この実現例において、低速コントローラ1012は、ストレージデバイス1006および低速拡張ポート1014に結合される。さまざまな通信ポート(たとえば、USB、Bluetooth、イーサネット(登録商標)、無線イーサネット)を含み得る低速拡張ポートは、キーボード、ポインティングデバイス、スキャナなどの1つ以上の入出力デバイス、またはスイッチもしくはルータなどのネットワークデバイスに、たとえば、ネットワークアダプタを介して結合され得る。
【0068】
コンピューティングデバイス1000は、図に示すように、多数の異なる形態で実現され得る。たとえば、標準的なサーバ1020として、またはそのようなサーバのグループ内で複数回、実現されてもよい。また、ラックサーバシステム1024の一部として実装されてもよい。さらに、ラップトップコンピュータ1022のようなパーソナルコンピュータにおいて実装されてもよい。または、コンピューティングデバイス1000からのコンポーネントは、デバイス1050などのモバイルデバイス(図示せず)において、他のコンポーネントと組み合わされてもよい。このようなデバイスの各々は、コンピューティングデバイス1000,1050の1つ以上を含むことができ、システム全体は、互いに通信する複数のコンピューティングデバイス1000,1050で構成され得る。
【0069】
コンピューティングデバイス1050は、プロセッサ1052、メモリ1064、ディスプレイ1054などの入出力デバイス、通信インターフェイス1066、およびトランシーバ1068などのコンポーネントを含む。また、デバイス1050に、追加のストレージを提供するために、マイクロドライブなどのストレージデバイスが備えられ得る。コンポーネント1050,1052,1064,1054,1066および1068の各々は、さまざまなバスを使用して相互接続され、コンポーネントのいくつかは、共通のマザーボード上に、または適宜他の様式で実装され得る。
【0070】
プロセッサ1052は、メモリ1064に格納された命令を含む、コンピューティングデバイス1050内の命令を実行することができる。プロセッサは、別個の複数のアナログおよびデジタルプロセッサを含むチップのチップセットとして実装されてもよい。プロセッサは、たとえば、ユーザインターフェイスの制御、デバイス1050によって実行されるアプリケーション、およびデバイス1050による無線通信など、デバイス1050の他のコンポーネントの調整のために提供されてもよい。
【0071】
プロセッサ1052は、ディスプレイ1054に結合された制御インターフェイス1058および表示インターフェイス1056を介して、ユーザと通信し得る。ディスプレイ1054は、たとえば、薄膜-トランジスタ液晶ディスプレイ(Thin-Film-Transistor Liquid Crystal Display:TFT LCD)または有機発光ダイオード(OLED)ディスプレイ、または他の適切なディスプレイ技術であってもよい。表示インターフェイス1056は、グラフィカルな情報および他の情報をユーザに提示するためにディスプレイ1054を駆動するための適切な回路を含み得る。制御インターフェイス1058は、ユーザからコマンドを受信し、プロセッサ1052に提示するために変換し得る。さらに、外部インターフェイス1062が、デバイス1050の他のデバイスとの近距離通信を可能にするように、プロセッサ1052と通信し得る。外部インターフェイス1062は、たとえば、いくつかの実現例では有線通信を、または他の実現例では無線通信を提供してもよく、複数のインターフェイスが使用されてもよい。
【0072】
メモリ1064は、コンピューティングデバイス1050内の情報を格納する。メモリ1064は、1つ以上のコンピュータ読取可能媒体、1つ以上の揮発性メモリユニット、または1つ以上の不揮発性メモリユニットのうちの1つ以上として実装することができる。拡張メモリ1074はまた、たとえばSIMM(Single In Line Memory Module)カードインターフェイスを含み得る拡張インターフェイス1072を通じてデバイス1050に提供および接続され得る。そのような拡張メモリ1074は、デバイス1050のための余分な記憶空間を提供してもよいし、デバイス1050のためのアプリケーションまたは他の情報を格納してもよい。具体的には、拡張メモリ1074は、上述した処理を実行または補足するための命令を含むことができ、セキュアな情報を含むこともできる。したがって、たとえば、拡張メモリ1074は、デバイス1050のセキュリティモジュールとして提供されてもよく、デバイス1050の安全な使用を可能にする命令でプログラムされてもよい。さらに、セキュアアプリケーションは、SIMMカード上に識別情報をハッキングされない方法で配置すること等の追加情報と共に、SIMMカードを介して提供されてもよい。
【0073】
メモリは、たとえば、後述するように、フラッシュメモリおよび/またはNVRAMメモリを含み得る。ある実現例では、コンピュータプログラム製品は、情報担体に有形に具現化される。コンピュータプログラム製品は、実行されると、上述したような1つ以上の方法を実行する命令を含む。情報担体は、メモリ1064、拡張メモリ1074、もしくはプロセッサ1052上のメモリなどのコンピュータ読取可能媒体または機械読取可能媒体であり、たとえば、トランシーバ1068または外部インターフェイス1062を介して受信され得る。
【0074】
デバイス1050は、必要に応じてデジタル信号処理回路を含み得る通信インターフェイス1066を介して、無線通信し得る。通信インターフェイス1066は、GSM(登録商標)音声通話、SMS、EMS、またはMMSメッセージング、CDMA、TDMA、PDC、WCDMA(登録商標)、CDMA2000、またはGPRSなど、さまざまなモードまたはプロトコルでの通信を提供し得る。このような通信は、たとえば、無線周波数トランシーバ1068を介して行われ得る。さらに、Bluetooth、Wi-Fi、または他のそのようなトランシーバ(図示せず)を使用するなどして、短距離通信が生じてもよい。さらに、GPS(Global Positioning System)受信機モジュール1070は、デバイス1050に追加のナビゲーション関連および位置関連の無線データを提供し、デバイス1050上で実行されるアプリケーションによって適切に使用され得る。
【0075】
また、デバイス1050は、オーディオコーデック1060を使用して可聴的に通信することができ、オーディオコーデック1060は、ユーザから音声情報を受信し、それを使用可能なデジタル情報に変換し得る。同様に、オーディオコーデック1060は、たとえばデバイス1050のハンドセット内のスピーカを介するなどして、ユーザのために可聴音を生成し得る。そのような音は、音声電話からの音を含み、録音された音(たとえば、音声メッセージ、音楽ファイルなど)を含んでもよく、デバイス1050上で動作するアプリケーションによって生成された音も含んでもよい。
【0076】
コンピューティングデバイス1050は、図示のように、多くの異なる形態で実装され得る。たとえば、携帯電話1080として実装されてもよい。また、スマートフォン1082、パーソナルデジタルアシスタント、または他の同様のモバイルデバイスの一部として実装されてもよい。
【0077】
本明細書に記載のシステムおよび技術のさまざまな実現例は、デジタル電子回路、集積回路、特別に設計された特定用途向け集積回路(application specific integrated circuit:ASIC)、コンピュータハードウェア、ファームウェア、ソフトウェア、および/またはそれらの組合せで実現することができる。これらのさまざまな実現例は、ストレージシステム、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスとの間でデータおよび命令の送受信を行なうように結合された、専用または汎用であり得る少なくとも1つのプログラマブルプロセッサを含むプログラマブルシステム上で実行可能なおよび/または解釈可能な1つ以上のコンピュータプログラムにおける実現例を含み得る。さらに、「モジュール」という用語は、ソフトウェアおよび/またはハードウェアを含む場合がある。
【0078】
これらのコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーションまたはコードとしても知られている)は、プログラマブルプロセッサのための機械命令を含み、高水準手続き型および/もしくはオブジェクト指向型のプログラミング言語で、ならびに/またはアセンブリ/機械言語で実装可能である。本明細書で使用する場合、「機械読取可能媒体」および「コンピュータ読取可能媒体」という用語は、機械読取可能信号として機械命令を受信する機械読取可能媒体を含む、機械命令および/またはデータをプログラマブルプロセッサに提供するために使用される、任意のコンピュータプログラム製品、装置および/またはデバイス(たとえば、磁気ディスク、光ディスク、メモリ、プログラマブル論理デバイス(Programmable Logic Device:PLD))を指す。「機械読取可能信号」という用語は、機械命令および/またはデータをプログラマブルプロセッサに提供するために用いられる任意の信号を指す。
【0079】
ユーザとの対話を提供するために、本明細書に記載のシステムおよび技術は、情報をユーザに表示するための表示デバイス(たとえば陰極線管(cathode ray tube:CRT)または液晶ディスプレイ(LCD)モニタ)と、ユーザによるコンピュータへの入力を可能にするキーボードおよびポインティングデバイス(たとえば、マウスまたはトラックボール)とを有するコンピュータ上で実現可能である。他の種類のデバイスも同様に、ユーザとの対話を提供するために使用可能である。たとえば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック(たとえば、視覚フィードバック、聴覚フィードバックまたは触覚フィードバック)であり得る。また、ユーザからの入力は、音響入力、音声入力または触覚入力を含む任意の形態で受信可能である。
【0080】
本明細書で説明するシステムおよび技術は、バックエンドコンポーネント(たとえば、データサーバとして)を含む、またはミドルウェアコンポーネント(たとえば、アプリケーションサーバ)を含む、またはフロントエンドコンポーネント(たとえば、ユーザが本明細書に記載のシステムおよび技術の実装例と対話できるようなグラフィカルユーザインターフェイスもしくはウェブブラウザを有するクライアントコンピュータ)を含む、またはそのようなバックエンドコンポーネント、ミドルウェアコンポーネントまたはフロントエンドコンポーネントの任意の組み合わせにおいて実現することができる。システムのコンポーネントは、デジタルデータ通信の任意の形態または媒体(たとえば、通信ネットワーク)によって相互接続することができる。通信ネットワークの例としては、ローカルエリアネットワーク(「LAN」)、ワイドエリアネットワーク(「WAN」)、およびインターネットが挙げられる。
【0081】
コンピューティングシステムは、クライアントとサーバとを含み得る。クライアントとサーバとは、一般に互いに離れており、典型的には、通信ネットワークを通じて対話する。クライアント-サーバ関係は、それぞれのコンピュータ上で実行されて互いにクライアント-サーバ関係を有するコンピュータプログラムによって生じる。
【0082】
いくつかの実現例では、図10に示されるコンピューティングデバイスは、仮想現実(virtual reality(VR)ヘッドセット1090)とインターフェイスするセンサを含み得る。たとえば、コンピューティングデバイス1050または図10に示される他のコンピューティングデバイスに含まれる1つ以上のセンサは、VRヘッドセット1090に入力を提供し、または一般に、VR空間に入力を提供することができる。センサは、タッチスクリーン、加速度計、ジャイロスコープ、圧力センサ、生体センサ、温度センサ、湿度センサ、および周囲光センサを含み得るが、これらに限定されない。コンピューティングデバイス1050は、センサを使用して、次にVR空間への入力として使用することができるVR空間におけるコンピューティングデバイスの絶対位置および/または検出された回転を判定することができる。たとえば、コンピューティングデバイス1050は、コントローラ、レーザポインタ、キーボード、武器などの仮想オブジェクトとしてVR空間に組み込まれ得る。VR空間に組み込まれる場合のユーザによるコンピューティングデバイス/仮想オブジェクトの位置決めは、ユーザがVR空間において特定の作法で仮想オブジェクトを見るためにコンピューティングデバイスを位置決めすることを可能にし得る。たとえば、仮想オブジェクトがレーザポインタを表している場合、ユーザは、コンピューティングデバイスを、実際のレーザポインタであるかのように操作することができる。ユーザは、コンピューティングデバイスを左右、上下、円形などに動かし、レーザポインタを使用するのと同様の方法でデバイスを使用することができる。
【0083】
いくつかの実現例では、コンピューティングデバイス1050に含まれる、または接続される1つ以上の入力デバイスを、VR空間への入力として使用することができる。入力デバイスは、タッチスクリーン、キーボード、1つ以上のボタン、トラックパッド、タッチパッド、ポインティングデバイス、マウス、トラックボール、ジョイスティック、カメラ、マイク、入力機能付きイヤフォン、ゲームコントローラ、または他の接続可能な入力デバイスを含み得るが、これらに限定されない。コンピューティングデバイスがVR空間に組み込まれるとコンピューティングデバイス1050に含まれる入力デバイスと対話するユーザは、VR空間において特定のアクションを発生させることができる。
【0084】
いくつかの実現例では、コンピューティングデバイス1050のタッチスクリーンは、VR空間においてタッチパッドとしてレンダリングすることができる。ユーザは、コンピューティングデバイス1050のタッチスクリーンと対話することができる。対話は、たとえばVRヘッドセット1090において、VR空間内のレンダリングされたタッチパッド上の動きとしてレンダリングされる。レンダリングされた動きは、VR空間内のオブジェクトを制御することができる。
【0085】
いくつかの実現例では、コンピューティングデバイス1050に含まれる1つ以上の出力デバイスは、VR空間においてVRヘッドセット1090のユーザに出力および/またはフィードバックを提供することができる。出力およびフィードバックは、視覚的、触覚的、または聴覚的であり得る。出力および/またはフィードバックは、振動、1つ以上のライトもしくはストロボのオンおよびオフまたは点滅および/もしくは閃光、アラームを鳴らすこと、チャイムを鳴らすこと、曲の再生、ならびにオーディオファイルの再生を含み得るが、これらに限定されない。出力デバイスは、振動モータ、振動コイル、圧電デバイス、静電デバイス、発光ダイオード(LED)、ストロボ、およびスピーカを含み得るが、これらに限定されない。
【0086】
いくつかの実現例では、コンピューティングデバイス1050は、コンピュータが生成した3D環境において別のオブジェクトとして現われ得る。ユーザによるコンピューティングデバイス1050との対話(たとえば、タッチスクリーンの回転、タッチスクリーンの揺動、タッチスクリーンへの接触、タッチスクリーン上での指のスワイプ)は、VR空間内のオブジェクトとの対話として解釈することができる。VR空間内のレーザポインタの例では、コンピューティングデバイス1050は、コンピュータが生成した3D環境内の仮想レーザポインタとして現れる。ユーザがコンピューティングデバイス1050を操作すると、VR空間内のユーザにはレーザポインタの動きが見える。ユーザは、コンピューティングデバイス1050またはVRヘッドセット1090上のVR空間内のコンピューティングデバイス1050との対話から、フィードバックを受け取る。
【0087】
いくつかの実現例では、コンピューティングデバイスに加えて、1つ以上の入力デバイス(たとえば、マウス、キーボード)を、コンピュータが生成した3D環境においてレンダリングすることができる。レンダリングされた入力デバイス(たとえば、レンダリングされたマウス、レンダリングされたキーボード)は、VR空間内のオブジェクトを制御するためにVR空間内でレンダリングされたものとして使用することができる。
【0088】
コンピューティングデバイス1000は、ラップトップ、デスクトップ、ワークステーション、パーソナルデジタルアシスタント、サーバ、ブレードサーバ、メインフレーム、および他の適切なコンピュータなど、さまざまな形態のデジタルコンピュータを表すことを意図している。コンピューティングデバイス1050は、パーソナルデジタルアシスタント、携帯電話、スマートフォン、および他の同様のコンピューティングデバイスなど、さまざまな形態のモバイルデバイスを表すことを意図している。本明細書に記載の構成要素、それらの接続および関係、ならびにそれらの機能は、例示的なものであることのみを意図しており、本明細書で記載および/または主張する発明の実現例を制限することを意図するものではない。
【0089】
いくつかの実施形態を説明してきたが、本発明の精神および範囲から逸脱することなく、種々の変更が行なわれ得ることが理解されるだろう。
【0090】
また、図に示される論理フローは、所望の結果を達成するために、示される特定の順序または連続した順序を必要とするものではない。さらに、他のステップが設けられてもよく、または、説明したフローからステップが排除されてもよく、説明したシステムに対して他の構成要素が追加または除去されてもよい。したがって、他の実施形態は、添付の特許請求の範囲内にある。
図1A
図1B
図1C
図1D
図1E
図1F
図1G
図1H
図2
図3
図4A
図4B
図4C
図4D
図5
図6
図7
図8
図9
図10