JP7841117B2 - スプリット計算アーキテクチャの周辺デバイス - Google Patents

スプリット計算アーキテクチャの周辺デバイス

Info

Publication number
JP7841117B2
JP7841117B2 JP2024563256A JP2024563256A JP7841117B2 JP 7841117 B2 JP7841117 B2 JP 7841117B2 JP 2024563256 A JP2024563256 A JP 2024563256A JP 2024563256 A JP2024563256 A JP 2024563256A JP 7841117 B2 JP7841117 B2 JP 7841117B2
Authority
JP
Japan
Prior art keywords
data
wearable device
peripheral
companion
companion device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2024563256A
Other languages
English (en)
Other versions
JP2025515605A (ja
Inventor
カー,ジェイムズ
ウルバヌス,マーク・サンダー
オクテム,メルテム
プランケット,パトリック
ジョシ,アクシャイ
ワン,チャーリー・ゴンザオ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Publication of JP2025515605A publication Critical patent/JP2025515605A/ja
Application granted granted Critical
Publication of JP7841117B2 publication Critical patent/JP7841117B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B27/00Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
    • G02B27/01Head-up displays
    • G02B27/017Head mounted
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/16Constructional details or arrangements
    • G06F1/1613Constructional details or arrangements for portable computers
    • G06F1/163Wearable computers, e.g. on a belt
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • G06F3/012Head tracking input arrangements
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • G06F3/013Eye tracking input arrangements
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • G06F3/147Digital output to display device ; Cooperation and interconnection of the display device with other functional units using display panels
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three-dimensional [3D] modelling for computer graphics
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/50Image enhancement or restoration using two or more images, e.g. averaging or subtraction
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/363Graphics controllers
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/37Details of the operation on graphic patterns
    • G09G5/377Details of the operation on graphic patterns for mixing or overlaying two or more graphic patterns
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/39Control of the bit-mapped memory
    • G09G5/395Arrangements specially adapted for transferring the contents of the bit-mapped memory to the screen
    • G09G5/397Arrangements specially adapted for transferring the contents of two or more bit-mapped memories to the screen simultaneously, e.g. for mixing or overlay
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/52Network services specially adapted for the location of the user terminal
    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B27/00Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
    • G02B27/01Head-up displays
    • G02B27/017Head mounted
    • G02B2027/0178Eyeglass type
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/508Monitor
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/544Remote
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20212Image combination
    • G06T2207/20221Image fusion; Image merging
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2320/00Control of display operating conditions
    • G09G2320/02Improving the quality of display appearance
    • G09G2320/0261Improving the quality of display appearance in the context of movement of objects on the screen or movement of the observer relative to the screen
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2340/00Aspects of display data processing
    • G09G2340/10Mixing of images, i.e. displayed pixel being the result of an operation, e.g. adding, on the corresponding input pixels
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/06Use of more than one graphics processor to process data before displaying to one or more screens

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Security & Cryptography (AREA)
  • Bioethics (AREA)
  • Medical Informatics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Graphics (AREA)
  • Computing Systems (AREA)
  • Databases & Information Systems (AREA)
  • Optics & Photonics (AREA)
  • Geometry (AREA)
  • Multimedia (AREA)
  • User Interface Of Digital Computer (AREA)
  • Arrangements For Transmission Of Measured Signals (AREA)

Description

関連出願の相互参照
本出願は、「SPLIT-COMPUTE ARCHITECTURE」と題する、2022年4月26日出願の米国仮特許出願63/363,592号の利益及び優先権を主張し、この開示は、参照によりその全体が本明細書に組み込まれる。
本出願はまた、関連する同時係属中の出願、2023年4月24日出願のPCT出願第PCT/US2023/019563号、2023年4月25日出願のPCT出願第PCT/US2023/019832号、2023年4月26日出願の「SPLIT-COMPUTE ARCHITECTURE」(弁理士整理番号0120-497WO1)、2023年4月26日出願の「PERIPHERAL DEVICES IN A SPLIT-COMPUTE ARCHITECTURE」(弁理士整理番号0120-498WO1)、2023年4月26日出願の「MULTIPLE APPLICATION RUNTIMES IN SPLIT-COMPUTE ARCHITECTURE」(弁理士整理番号0120-505WO1)、及び2023年4月26日出願の「MACHINE LEARNING PROCESSING OFFLOAD IN A SPLIT-COMPUTE ARCHITECTURE」(弁理士整理番号0120-509WO1)に対する開示を参照により本明細書に組み込む。
実施態様は、ウェアラブルデバイス処理アーキテクチャに関する。
一部のデバイス(例えば、ウェアラブルデバイス)は、高度なディスプレイ機能を有する場合がある。これらのデバイスにとっては、十分な機能を備えた電子機器を小さなフォームファクタに収めることが課題となる場合がある。これらの問題は、アクセス可能性など、デバイスが一日中装着されることが予想される可能性がある用途ではますます困難になっている。
既存の市販されているシステムは、継続的な使用シナリオをサポートできない。例えば、ウェアラブルデバイス(例えば、スマートグラス、スマートウォッチ、ヘッドマウントディスプレイなど)は、断続的に関与することを意図しており、電話クラスのシステムオンチップ(SoC)を中心に構築されている。これらのデバイスは、ディスプレイをオンにした状態では数時間のバッテリ寿命しか提供できない。さらに、ヘッドマウントディスプレイの体積が小さいため、熱的快適性が問題になる可能性がある。
例示的な実施態様は、スプリット計算アーキテクチャを使用するウェアラブルデバイスと、コンパニオンデバイスとを含む。ウェアラブルデバイスのリソースを節約するために、コンパニオンデバイスは、そうでなければウェアラブルデバイスによって実行されるであろうコンピューティングタスクを処理できる。ウェアラブルデバイスは、ウェアラブルデバイスのメモリに格納される周辺デバイスデータを生成する周辺デバイスを含むことができる。スプリット計算アーキテクチャは、コンパニオンデバイス及び/またはウェアラブルデバイス上での周辺デバイスデータのミラーリングを容易にするように構成することができる。
一般的な態様では、デバイス、システム、非一時的コンピュータ可読媒体(コンピュータシステム上で実行できるコンピュータ実行可能プログラムコードを格納している)、及び/または方法は、方法を用いてプロセスを実施することができ、方法は、ウェアラブルデバイスをコンパニオンデバイスと通信可能に結合することと、ウェアラブルデバイスによって、ウェアラブルデバイスの周辺デバイスから取得されたデータを、周辺データとしてコンパニオンデバイス上でミラーリングすることと、を含み、ミラーリングすることは、ウェアラブルデバイスによって、周辺デバイスから周辺データを取得すること、及びウェアラブルデバイスによって、周辺データをコンパニオンデバイスに通信することを含み、方法は、コンパニオンデバイスによって、周辺データを受信し、周辺データを処理されたデータに処理することと、コンパニオンデバイスによって、処理されたデータをウェアラブルデバイスに送信することと、ウェアラブルデバイスによって、処理されたデータを受信し、処理されたデータを利用してコンピューティングプロセスを完了することと、を含む。
別の一般的な態様では、デバイス、システム、非一時的コンピュータ可読媒体(コンピュータシステム上で実行できるコンピュータ実行可能プログラムコードを格納している)、及び/または方法は、方法を用いてプロセスを実行することができ、方法は、ウェアラブルデバイスをコンパニオンデバイスと通信可能に結合することと、コンパニオンデバイスによって、ウェアラブルデバイスの周辺デバイスと関連付けられたデータを周辺データとしてミラーリングすることと、コンパニオンデバイスによって、ウェアラブルデバイスから周辺データを受信することと、コンパニオンデバイスによって、コンパニオンデバイスによるコンピューティングプロセスの完了と関連付けられた結果を生成することと、を含み、コンピューティングプロセスは、周辺データを使用するように構成され、方法は、コンパニオンデバイスによってウェアラブルデバイスに、コンピューティングプロセスの完了と関連付けられた結果を通信することを含む。
例示的な実施態様は、本明細書で以下に示す発明を実施するための形態、及び添付の図面からより完全に理解されるようになる。同様の要素は同様の参照番号で表され、これらは例示としてのみ示されており、したがって例示的な実施態様を限定しない。
例示的な実施態様による高レベルスプリット計算アーキテクチャのブロック図を示す。 例示的な実施態様による共有ランタイム環境を有する高レベルスプリット計算アーキテクチャのブロック図を示す。 例示的な実施態様によるウェアラブルデバイススプリット計算アーキテクチャのブロック図を示す。 例示的な実施態様による高レベルスプリット計算アーキテクチャのブロック図を示す。 例示的な実施態様によるウェアラブルデバイスアプリケーションのアクティビティ要素のブロック図を示す。 例示的な実施態様によるウェアラブルデバイスランタイム環境におけるウェアラブルデバイスアプリケーションのブロック図を示す。 例示的な実施態様によるスプリット計算アーキテクチャを使用するシステムのブロック図を示す。 例示的な実施態様によるコンパニオンデバイスランタイム環境を示すブロック図である。 例示的な実施態様によるスプリット計算システムを操作する方法のブロック図である。 例示的な実施態様によるスプリット計算アーキテクチャシステムを操作する方法のブロック図である。 例示的な実施態様によるコンパニオンデバイスを操作する方法のブロック図である。
これらの図は、特定の例示的な実施態様で利用される方法及び/または構造の一般的な特徴を示すこと、及び以下に提供される書面の説明を補足することを意図していることに留意されたい。しかしながら、これらの図面は、原寸に比例しておらず、いずれかの所与の実施態様の正確な構造特性または性能特性を正確に反映していない場合があり、例示的な実施態様によって包含される値の範囲または特性を定義または制限すると解釈されるべきではない。例えば、モジュール及び/または構造要素の配置は、明確にするために削減または誇張される場合がある。様々な図面での類似または同一の参照番号の使用は、類似または同一の要素または特徴が存在することを示すことを意図している。
ウェアラブルデバイスは、ディスプレイをオンにした状態では数時間のバッテリ寿命しか提供できない。例えば、ウェアラブルディスプレイ光学系用の画像レンダリング、歪み補正、位置特定サービスなどの計算コストが高い操作は、ウェアラブルデバイスに実装された低電力の組み込みシステムで効率的に実行することが必ずしも可能ではない場合がある。したがって、シンクライアントのウェアラブルデバイス(例えば、スマートガラス)のためのディスプレイアーキテクチャは、計算集約的な操作(例えば、グラフィックス操作)をコンパニオンデバイス(例えば、モバイルデバイス、スマートフォン、サーバなど)にオフロードすることによってデバイス搭載電力及び熱フットプリントを減少させる機会を有することができる。
一部のウェアラブルデバイスは、実装の制約を有する場合がある。例えば、スマートグラスの実装制約は、(1)スマートグラスが、ウェアラブルコンピューティングを通して重要なサービスを増幅する必要があることを含む場合がある。これは、AR及び視覚認識などの支援技術を含むことができる。例えば、スマートグラスの実装制約は、(2)スマートグラスがただ1回の充電で一日中使用に持ちこたえる必要があることを含む場合がある。例えば、スマートグラスの実装制約は、(3)スマートグラスが本物の眼鏡のように見え、感じられる必要があることを含む場合がある。ウェアラブルデバイスは、拡張現実(AR)デバイス及び仮想現実(VR)デバイスを含む場合がある。ウェアラブルデバイスは、スマートグラス、頭部装着型デバイス、及び/またはヘッドマウントデバイスを含む場合がある。ウェアラブルデバイス、頭部装着型デバイス、及び/またはヘッドマウントデバイスは、AR/VRデバイスである場合がある。所望の特徴をサポートする機能を有するモバイルSoCを備えた完全にスタンドアロンのウェアラブルデバイス(例えば、スマートグラス)解決策は、上記に示した電力及び工業デザインの制約を満たさない場合がある。制約(1)、(2)、及び(3)を満たすオンデバイス計算解決策は、現在の技術では達成が困難である場合がある。現在の技術は、機能性要件を満たすモバイルシステムオンチップ(SoC)技術によるスタンドアロン解決策が、上記に示した電力及び工業デザインの制約を満たさないという点で制限されている。
スプリット計算アーキテクチャは、上述の制約を満たす既存のウェアラブルデバイス技術の実装と関連付けられた問題を解決するために使用することができる。スプリット計算アーキテクチャは、アプリケーションランタイム環境を、以下、多くの場合、コンパニオンデバイスと呼ばれる、スマートフォン、サーバ、クラウド、デスクトップコンピュータなどのリモートコンピューティングエンドポイントに移動させるアーキテクチャである場合がある。いくつかの実施態様では、表示コンテンツは、コンパニオンデバイスからウェアラブルデバイスにストリーミングされて戻すことができる。スマートグラスの例を続けると、計算及びレンダリングの大部分は、スマートグラスでは行われないため、スプリット計算アーキテクチャは、低電力プロセッサ及び/または低電力マイクロコントローラのMCUベースのシステムを利用することを可能にできる。いくつかの実施態様では、MCUを含むウェアラブルデバイスと組み合わされたスプリット計算アーキテクチャは、電力使用量を最小限に抑え、制約(1)及び(2)及び(3)を満たすことを可能にできる。コーデック及びネットワーキングの新しい革新によって、必要とされるネットワーキング帯域幅を低電力方式で持続することが可能である。いくつかの実施態様では、ウェアラブルデバイスは、明確に定義されたプロトコルを介してコンパニオンデバイスと通信することができる。このアーキテクチャはプラットフォームに依存しないことが可能である。
いくつかの実施態様では、慣性測定ユニット(IMU)及びカメラセンサなどの周辺デバイスは、ウェアラブルデバイスで周辺データを生成するように構成することができる。コンパニオンデバイスは、いくつかのコンピューティングプロセスで周辺データを使用するように構成され得る。例えば、コンパニオンデバイス上で動作するアプリケーションは、ウェアラブルデバイスのIMUによって生成された周辺データを使用するように構成することができる。アプリケーションは、ウェアラブルデバイスから周辺データを要求できるであろう。しかしながら、例示的な実施態様では、周辺データは、コンパニオンデバイスの(例えば、メモリ内に)格納できる。例示的な実施態様では、ウェアラブルデバイスは、新しい周辺データが利用可能になるといつでも(例えば、要求されることなく自動的になど)周辺データを通信(例えば、ストリーミング)するように構成することができる。例示的な実施態様では、ウェアラブルデバイスの周辺データは、コンパニオンデバイス上でミラーリングすることができる(例えば、複製メモリ位置)。例示的な実施態様では、コンパニオンデバイスの周辺データは、ウェアラブルデバイス上でミラーリングすることができる(例えば、複製メモリ位置)。
図1は、例示的な実施態様による高レベルスプリット計算アーキテクチャのブロック図を示す。図1に示すように、スプリット計算アーキテクチャは、周辺データ135を含むウェアラブルデバイス105と、周辺データ140を含むコンパニオンデバイス110とを含むことができる。例示的な実施態様では、ウェアラブルデバイス105は、スマートグラス、拡張現実/仮想現実ヘッドセット、ヘッドマウントディスプレイ(HMD)、スマートウォッチ、スマートリングなどである場合がある。一例として、図1は、ウェアラブルデバイス105をスマートグラス145として示す。例示的な実施態様では、コンパニオンデバイス110は、別のウェアラブルデバイス、モバイルデバイス、スマートフォン、タブレット、サーバ、及びプロセッサとオペレーティングシステムとを含むデバイスである場合がある。一例として、図1は、コンパニオンデバイス110をスマートフォン150として示す。
ウェアラブルデバイス105及びコンパニオンデバイス110は、通信可能に結合することができる。例えば、ウェアラブルデバイス105及びコンパニオンデバイス110は、有線でまたは無線で通信可能に結合することができる。言い換えれば、ウェアラブルデバイス105及びコンパニオンデバイス110は、双方向の有線及び/または無線の通信リンクのエンドポイントである場合がある。一例として、ウェアラブルデバイス105及びコンパニオンデバイス110は、通信回線115を介してオーディオストリーム及び/またはビデオストリームを通信することができる。一例として、ウェアラブルデバイス105及びコンパニオンデバイス110は、通信回線120を介してデータ(例えば、IMU、カメラ、入力など)を通信することができる。一例として、ウェアラブルデバイス105及びコンパニオンデバイス110は、通信回線125を介して制御ストリームを通信することができる。通信回線115、通信回線120、及び/または通信回線125は、集合的に通信回線130と呼ばれる場合がある。いくつかの実施態様では、通信回線130は、双方向である場合がある。
いくつかの実施態様では、コンパニオンデバイス110は、ウェアラブルデバイス105が接続できるランタイム環境を含むことができる。いくつかの実施態様では、ウェアラブルデバイス105は、IMU及びカメラ画像などのデータをランタイム環境にストリーミングすることができる。いくつかの実施態様では、コンパニオンデバイス110のランタイム環境は、追跡、知覚、及び/またはアプリケーションレンダリングを実行する、及び/または符号化されたビデオコマンドまたはレンダリングコマンドなど、出力をグラフィックのアプリケーションプログラミングインターフェース(API)を介してウェアラブルデバイス105に送り返すように構成することができる。いくつかの実施態様では、ランタイム環境は、コンパニオンデバイス110上で実行するコードまたはソフトウェアアプリケーション及び/またはコンテナである場合がある。いくつかの実施態様では、ランタイム環境は、ウェアラブルデバイス105と同時に、及び/またはウェアラブルデバイス105及びコンパニオンデバイス110が通信可能に結合されている間に、コンパニオンデバイス110上で動作するソフトウェアである場合がある。いくつかの実施態様では、入力は、ウェアラブルデバイス105から取り込まれ、コンパニオンデバイス110のランタイム環境に注入される(例えば、通信される)。
いくつかの実施態様では、コンパニオンデバイス110のランタイム環境は、追跡、知覚、及びアプリケーションレンダリングを実行し、符号化されたビデオコマンドまたはレンダリングコマンドなど、出力をグラフィックのアプリケーションプログラミングインターフェース(API)を介してウェアラブルデバイス105に送り返すように構成することができる。いくつかの実施態様では、入力は、ウェアラブルデバイス105から取り込まれ、コンパニオンデバイス110のランタイム環境に注入される(例えば、通信される)。
一例として、コンパニオンデバイス110がないときは、コンピューティングプロセスは、完全にウェアラブルデバイス105上で実行されるであろう。コンピューティングプロセスは、ウェアラブルデバイスの機能と関連付けられた任意のコンピューティングプロセスである場合がある。例えば、コンピューティングプロセスは、ウェアラブルデバイス105のディスプレイにコンテンツを(例えば、画像またはビデオとして)表示するように構成されたコンピューティングプロセスである場合がある。コンピューティングプロセスは、ウェアラブルデバイス105のプロセッサによって実行される、ウェアラブルデバイス105のメモリに格納されたコンピュータ命令(例えば、コード)を含む任意のコンピューティングプロセスである場合がある。コンピュータ命令(例えば、コード)は、ウェアラブルデバイスのプロセッサによって実行される複数のタスクである場合がある。いくつかの実施態様では、タスク(複数可)はサービスとして実装できる。サービスは、例えば、ネットワークを介したマシン間のインタラクションである場合がある。サービスは、バックグラウンド処理として実装できる。例えば、サービスは、バックグラウンドから、ネットワークトランザクションの実行、オーディオの再生、I/Oの実行、コンテンツプロバイダとのインタラクションなどを行うことができる。
コンパニオンデバイス110(例えば、コンパニオンデバイス110のランタイム環境)を含むことによって、デバイスの搭載電力の使用量及び熱的フットプリントは、複数のタスクの1つ以上のタスクをコンパニオンデバイス110にオフロードすることによって削減することができる。例示的な実施態様では、複数のタスクを断片化することができる。タスクを断片化することは、ウェアラブルデバイス105とコンパニオンデバイス110との間で複数のタスクを方法論的に及び/またはランダムに割り当てることを含むことができる。例えば、ウェアラブルデバイス105とコンパニオンデバイス110との間で複数のタスクを整然と割り当てることは、リソースの使用量に基づく場合がある。例えば、コンパニオンデバイス110上でタスク(または複数のタスク)を実行させるために使用されるリソースの量が、ウェアラブルデバイス105上でタスク(または複数のタスク)を実行することよりも多い場合(タスクを実行することが、コンピュータ操作を実行することを含むことを留意する)、次にタスク(または複数のタスク)はウェアラブルデバイス105上で実行することができる。
例えば、タスク(または複数のタスク)は、ウェアラブルデバイス105の周辺デバイスによって取り込まれた周辺データ(例えば、コンピュータデータ、IMUデータ、高解像度画像など)を含むことができる、及び/または使用することができる。周辺データを通信することが、ウェアラブルデバイス105によってデータを処理することを含むタスクよりも多くのリソース(例えば、ウェアラブルデバイス105のバッテリリソース)を使用する場合、ウェアラブルデバイス105は、タスクを完了するために割り当てることができるであろう。それ以外の場合、コンパニオンデバイス110は、タスクを完了するために割り当てられる必要がある。この例示的な実施態様では、ウェアラブルデバイス105とコンパニオンデバイス110の両方ともタスク(または複数のタスク)を実行することができる。いくつかの実施態様では、複数のタスクを含むプロセスを完了するために、2つ以上のコンパニオンデバイスが使用される。
コンパニオンデバイス110は、タスクを処理するとき、ウェアラブルデバイス105の周辺デバイスと関連付けられたデータを必要とする場合がある。ウェアラブルデバイス105からデータを要求する及び/または受信する代わりに、例示的な実施態様では、コンパニオンデバイス110が周辺データ140からデータを読み取ることができる。言い換えれば、例示的な実施態様では、周辺データ135は、周辺データ140としてコンパニオンデバイス110上でミラーリングされているため、コンパニオンデバイス110上で実行するアプリケーションは、周辺データ135からウェアラブルデバイス105の周辺デバイスと関連付けられたデータを読み取ることができる。さらに、例示的な実施態様では、周辺データ140は、周辺データ135としてウェアラブルデバイス105上でミラーリングされているため、ウェアラブルデバイス105上で実行するアプリケーションは、周辺データ140からコンパニオンデバイス110の周辺デバイスと関連付けられたデータを読み取ることができる。
いくつかの実施態様では、ウェアラブルデバイス105がタスクを処理しているとき、ウェアラブルデバイス105は、コンパニオンデバイス110の周辺デバイスと関連付けられたデータを必要とする場合がある。コンパニオンデバイス110からデータを要求する及び/または受信する代わりに、例示的な実施態様では、ウェアラブルデバイス105が周辺データ140からデータを読み取ることができる。言い換えれば、例示的な実施態様では、周辺データ140は、周辺データ135としてウェアラブルデバイス105上でミラーリングされているため、ウェアラブルデバイス105上で実行するアプリケーションは、周辺データ140からコンパニオンデバイス110の周辺デバイスと関連付けられたデータを読み取ることができる。いくつかの例示的な実施態様では、周辺データ(または周辺デバイスから取得されたデータ)は、IMUデータ、画像データ、オーディオデータ、マイクロフォンデータ、マルチチャネルマイクロフォンデータ、他のカメラデータ(例えば、深度データ)、周囲光センサ(ALS)データなどを含むことができる。
図2は、例示的な実施態様による共有ランタイム環境を有する高レベルスプリット計算アーキテクチャのブロック図を示す。図2に示すように、ウェアラブルデバイス105は、それぞれ通信回線130-1、130-2...130-nを介して、2つ以上のコンパニオンデバイス110-1、110-2...110-nに通信可能に結合される。いくつかの実施態様では、ウェアラブルデバイス105は、様々なコンパニオンデバイス110-1、110-2、...110-nの間でローミングして、その時点で最高の経験を提供するコンパニオンデバイス110-1、110-2、...110-nを選択できるであろう。ウェアラブルデバイス105は、複数のコンパニオンデバイス110-1、110-2、…110-nのランタイムに同時に接続することができる。したがって、ウェアラブルデバイス105は、複数のランタイム環境に同時に接続することができる。さらに、図示していないが、周辺データ135は、複数のコンパニオンデバイス110-1、110-2、…110-nで同時にミラーリングすることができる。
例えば、コンパニオンデバイス110-1と関連付けられたランタイム環境は、ウェアラブルデバイス105のディスプレイ上にコンテンツを投影するように構成することができ、コンパニオンデバイス110-2と関連付けられたランタイム環境は、処理のためにウェアラブルデバイス105、データベースサーバ、インターネットなどからのデータソース(例えば、センサ)にアクセスするように構成することができる。追加的にまたは代替的に、コンパニオンデバイス110-1、110-2,...110-nは、リソース及び/またはデータを共有するために、通信可能に結合することができる(例えば、有線または無線で)。例えば、コンパニオンデバイス110-1及びコンパニオンデバイス110-2は、通信可能に結合することができ、コンパニオンデバイス110-1と関連付けられたランタイム環境が、コンパニオンデバイス110-2と関連付けられたランタイム環境が画像(またはフレーム)を生成して、ウェアラブルデバイス105のディスプレイ上にコンテンツを投影するときに使用するためのコンパニオンデバイス110-2と関連付けられたランタイム環境からデータを受信することを可能にする。
例えば、コンパニオンデバイス110-1及びコンパニオンデバイス110-2は、(例えば、通信回線205を介して)通信可能に結合することができ、コンパニオンデバイス110-2と関連付けられたランタイム環境が、コンパニオンデバイス110-1と関連付けられたランタイム環境と処理リソースを共有することを可能にする。例えば、コンパニオンデバイス110-1と関連付けられたランタイム環境は、コンパニオンデバイス110-2と関連付けられたランタイム環境によってより効率的に生成されるコンテンツ(例えば、画像、フレーム、マップなど)を生成するように命令され得る。例えば、コンパニオンデバイス110-2は、マップデータベースと、マップ(例えば、画像)生成器とを含み得る。コンパニオンデバイス110-1と関連付けられたランタイム環境は、マップを含むコンテンツを生成するように命令され得る。この例では、コンパニオンデバイス110-1と関連付けられたランタイム環境は、コンパニオンデバイス110-2と関連付けられたランタイム環境からマップを要求できる。
上記の例を続けると、コンパニオンデバイス110-1がタスク(複数可)を実行する必要があると判断が下されると、コンパニオンデバイス110-1(またはウェアラブルデバイス105)は、2つ以上のコンパニオンデバイス110がタスク(複数可)を実行できると判断することができる。例えば、タスク(複数可)は、ウェアラブルデバイス105に表示されるコンテンツ(例えば、画像)を生成することを含む場合がある。この例では、コンパニオンデバイス110-1がコンテンツを生成するように構成することができる。しかしながら、コンテンツを生成するために使用されるデータが、コンパニオンデバイス110-2によって生成され得、次に(例えば、通信回線205を介して)コンパニオンデバイス110-2からコンパニオンデバイス110-1に通信される。例えば、コンパニオンデバイス110-2は、ユーザの心拍数を感知するように構成されたウェアラブルスマートウォッチである場合がある。心拍数を表すデータは、コンパニオンデバイス110-2からコンパニオンデバイス110-1に通信することができる。次に、コンパニオンデバイス110-1は、心拍数を表すデータを使用してコンテンツを生成することができ、コンテンツは、ウェアラブルデバイス105のディスプレイ上での表示のためにウェアラブルデバイス105に通信することができる。
図3は、例示的な実施態様によるウェアラブルデバイススプリット計算アーキテクチャのブロック図を示す。図3に示すように、ウェアラブルデバイススプリット計算アーキテクチャは、ハードウェア抽象化層(HAL)310ブロックを含むことができる。HAL310は、ハードウェアレベルではなく一般的または抽象的レベルで、オペレーティングシステム(例えば、RTOS340)とハードウェアデバイスとの間をインターフェースするように構成されたソフトウェアの層である場合がある。いくつかの実施態様では、抽象化層を使用すると、スプリット計算アーキテクチャプラットフォームを独立させることができる。HAL310は、オペレーティングシステムカーネルから呼び出すことができる。いくつかの実施態様では、HAL310は仮想HALである場合がある。仮想HALは、ゲストとホストプラットフォームとの間のアーキテクチャの類似性に基づいて、解釈の遅延を最小限に抑えることができる。仮想化技術は、仮想リソースを物理リソースにマッピングし、仮想HAL内での計算にネイティブハードウェアを使用するのを助ける。
したがって、一例として、HAL310は、それぞれが対応するハードウェアデバイスとインターフェースするように構成された、接続性315ブロックと、コーデック320ブロックと、グラフィックスプロセッシングユニット(GPU)325ブロックと、表示330ブロックとを含むことができる。例えば、接続性315は、オペレーティングシステム(例えば、RTOS340)とBluetooth(登録商標)ハードウェア、WIFIハードウェア、超広帯域(UWB)ハードウェア、5Gハードウェアなどとの間でインターフェースするように構成することができる。したがって、ウェアラブルデバイススプリット計算アーキテクチャは、ウェアラブルデバイス105の中に設計された任意の接続性ハードウェアを利用するように構成することができる。
例えば、コーデック320は、オペレーティングシステム(例えば、RTOS340)と符号器及び/または復号器(例えば、ハードウェアベースの符号器及び/または復号器)との間でインターフェースするように構成することができる。コーデック320規格は、例えば、H.265、H.264、MPEG、VP9、機械学習されたものなどである場合がある。コーデック320は、画像、ビデオ、及び/またはオーディオコーデックである場合がある。したがって、ウェアラブルデバイススプリット計算アーキテクチャは、ウェアラブルデバイス105の中に設計された任意のコーデックソフトウェア及び/またはハードウェアを利用するように構成することができる。例えば、GPU325は、オペレーティングシステム(例えば、RTOS340)とGPUハードウェア(例えば、GPU ASIC)との間でインターフェースするように構成することができる。したがって、ウェアラブルデバイススプリット計算アーキテクチャは、ウェアラブルデバイス105の中に設計された任意のGPUを利用するように(例えば、ディスプレイシステム上で画像をレンダリングするように)構成することができる。例えば、ディスプレイ330は、オペレーティングシステム(例えば、RTOS340)とディスプレイハードウェア(例えば、ウェアラブルデバイスディスプレイ)との間でインターフェースするように構成することができる。したがって、ウェアラブルデバイススプリット計算アーキテクチャは、ウェアラブルデバイス105の中に設計された任意のディスプレイ(例えば、ディスプレイドライバシステム)を利用するように構成することができる。
図3に示すように、ウェアラブルデバイススプリット計算アーキテクチャは、オペレーティングシステム(OS)抽象化層(OSAL)335を含むことができる。いくつかの実施態様では、抽象化層を使用すると、スプリット計算アーキテクチャプラットフォームを独立させることができる。OSAL335は、ウェアラブルデバイス105のOSによって提供される共通のシステム機能へのインターフェースを提供するように構成することができる。これらのOSAL335は、複数のOS及びハードウェアプラットフォームに開発及び移植ソフトウェア(例えば、アプリケーション)を簡略化できる。いくつかの実施態様では、OSAL335は、アプリケーションプログラミングインターフェース(API)として(またはAPIと同様に)動作することができる。いくつかの実施態様では、OSAL335は、プラットフォームに依存する場合がある。
OSAL335は、リアルタイムオペレーティングシステム(RTOS)340のブロックを含むことができる。RTOS340は、例えば、リアルタイムのデッドラインを満たすためにマルチスレッドアプリケーションを処理するように構成することができる。例えば、RTOS340は、それぞれ(またはタスクのグループ)が最大完了時間を有する複数のタスクを処理するように構成することができる。RTOSが示されているが、任意のOSが使用されてもよい。例えば、高レベルオペレーティングシステム(HLOS)を使用することができる。スプリット計算システムでは、タスクを使用すると、コンピューティングデバイス間でこれらのタスク(またはタスクのグループ)を分散させることが可能になる。例えば、ウェアラブルデバイス105のためのコンテンツ表示動作は、ウェアラブルデバイス105とコンパニオンデバイス110(例えば、コンパニオンデバイス110と関連付けられたランタイム環境)との間でスプリットすることができる。言い換えれば、ウェアラブルデバイス105(及び/またはコンパニオンデバイス110)は、(例えば、ウェアラブルデバイススプリット計算アーキテクチャを使用して)コンパニオンデバイス110にプロセス(例えば、コンテンツ表示)の一部(タスクまたはタスクのグループ)を実行させるように構成することができる。デバイスにタスクを実行させることは、デバイス及び/または別のデバイス(複数可)によるタスクの処理を開始する、及び/またはタスクの処理をトリガするように構成された命令を送信することを含むことができる。コンピューティングプロセスは、ウェアラブルデバイスのユーザが、対応するユーザ入力(例えば、ジェスチャ)をウェアラブルデバイスに提供することによって開始することができる。いくつかの実施態様では、ウェアラブルデバイスは、別のコンピューティングプロセスに基づいて、ウェアラブルデバイスの空間位置に基づいてなど、コンピューティングプロセスを開始することができる。
図3に示すように、ウェアラブルデバイススプリット計算アーキテクチャは、周辺ドライバ345ブロックを含むことができる。周辺ドライバ345は、OSと周辺デバイスとの間でインターフェースするように構成することができる。例えば、ウェアラブルデバイス105は、例えば、カメラ(複数可)、マイクロフォン(複数可)、スピーカ(複数可)、入力(複数可)、慣性測定ユニット(複数可)(IMU)などを含む複数の周辺デバイスを含むことができる。したがって、周辺ドライバ345は、RTOS340とウェアラブルデバイス105の周辺デバイス(複数可)との間でインターフェースするように構成することができる。
図3に示すように、ウェアラブルデバイススプリット計算アーキテクチャは、デバイスクライアント305を含むことができる。デバイスクライアント305は、ウェアラブルデバイス105とコンパニオンデバイス110との間の通信を制御するように構成することができる。例えば、デバイスクライアント305は、通信回線130、及び通信回線130を介した通信を生成、初期化、及び制御するように構成することができる。通信回線130は、例えば、ソケット(例えば、ネットワークソケット、TCP/IPネットワークソケットなど)として動作することができる。ソケットは、2つのコンピューティングデバイス上で実行しているコンピュータコード(例えば、アプリケーション、プログラム、ソフトウェアシステムなど)間の双方向通信リンクの一方のエンドポイントである場合がある。例えば、クライアントとホストの両方が、それぞれがどの機能をサポートするのかを決定することを示す双方向ハンドシェークを使用することができる。ソケット機構は、2つのエンドポイントの間、及び/または2つのエンドポイントと中間デバイス(例えば、アクセスポイント(AP))との間に名前付き通信接点を確立することによって、プロセス間通信(IPC)を提供するように構成することができる。ソケットは、双方向の先入れ先出し(FIFO)通信チャネルを提供するように構成することができる。ネットワークに接続するソケットが、通信の各端に作成される。一例として、各ソケットはアドレス(またはメモリ位置)を有することができる。アドレス(またはメモリ位置)は、例えば、IPアドレス及びポート番号である場合がある。したがって、デバイスクライアント305は、コンパニオンデバイス110(またはコンパニオンデバイス110と関連付けられたランタイム環境)と関連付けられたソケットに書き込み、ソケットから読み取るように構成することができる。いくつかの実施態様では、デバイスクライアント305は、プラットフォームに依存しない場合がある。
いくつかの実施態様では、ソフトウェア開発キット(SDK)は、ウェアラブルデバイス105及びコンパニオンデバイス110と関連付けることができる。SDKは、ウェアラブルデバイス105及び/またはコンパニオンデバイス110用のアプリケーションを開発するときに使用することができる。SDKは、スプリット計算アーキテクチャの実装を可能にできる。したがって、スプリット計算アーキテクチャを含む任意のウェアラブルデバイス105及び/またはコンパニオンデバイス110は(ハードウェア及び/またはソフトウェアのプラットフォームとは関わりなく)SDKを使用して開発されたアプリケーションを使用することができる。したがって、アプリケーションを開発し、ウェアラブルデバイス105及び/またはコンパニオンデバイス110として使用し得る各ハードウェア及び/またはソフトウェアプラットフォームに移植する必要はない。SDKは、アプリケーションがウェアラブルデバイス105及び/またはコンパニオンデバイス110にインストールされるときに、アプリケーションに含める(または含めることができる要素を有する)ことができる。
図4は、例示的な実施態様による高レベルスプリット計算アーキテクチャのブロック図を示す。図4に示すように、システムは、ウェアラブルデバイス105と、コンパニオンデバイス110とを含むことができる。システムのスプリット計算アーキテクチャは、ウェアラブルデバイス105と関連付けられたデバイスクライアント305ブロックと、コンパニオンデバイス110と関連付けられた、アプリケーション410ブロックと、SDK415ブロックと、コア420ブロックとを含むことができる。上述のように、デバイスクライアント305は、ウェアラブルデバイス105とコンパニオンデバイス110との間の通信を制御するように構成することができる。コア420は、ウェアラブルデバイス105とコンパニオンデバイス110との間の通信を制御するように構成することができる。したがって、コア420は、少なくとも、通信回線130及び通信回線130を介した通信を生成、初期化、及び制御するように構成することができる。通信回線130は、例えば、(上述のように)ソケットとして動作することができる。
いくつかの実施態様では、アプリケーション410は、アプリケーションロジックを保持するOS上で使用されるアプリケーションのためのファイル形式を含むことができる(例えば、Android(登録商標)パッケージキット(APK))。いくつかの実施態様では、ウェアラブルデバイスアプリケーションは、SDKのスタブ(例えば、完全ではない)バージョンとリンクして、コンパイルサービス及びテストサービスをサポートすることができる。いくつかの実施態様では、ランタイム時に、アプリケーション410は、ウェアラブルデバイスランタイム環境から直接、ウェアラブルデバイスSDK415をロードすることができる。いくつかの実施態様では、SDK415は、ウェアラブルデバイスアプリケーションを構築するために使用されるアプリケーションプログラミングインターフェース(API)を開発者に提供することができる。いくつかの実施態様では、APIバージョニングスキームによって、下位互換性を維持しながら、新しいAPIを導入することが可能になる。いくつかの実施態様では、ウェアラブルデバイスランタイム環境は、ウェアラブルデバイス実行環境を維持することを担当するコアサービスの集合体である場合がある。いくつかの実施態様では、ウェアラブルデバイスアプリケーションは、コアサービスと直接インタラクトしない場合がある。いくつかの実施態様では、1つ以上のインタラクションがSDKを通過し得る。いくつかの実施態様では、デバイスクライアント305は、ウェアラブルデバイス105のハードウェア上で実行するシンクライアントである場合がある。
一例として、アプリケーション410は、ウェアラブルデバイス105上に表示するためのコンテンツを生成する(または生成するのを助ける)ように構成することができる。例えば、アプリケーションはタスク(複数可)を処理するように構成することができる。例えば、アプリケーションは、コンテンツを(例えば、画像として)生成し、SDK415を介してコア420にコンテンツを通信することができる。SDK415を介してコア420にコンテンツを通信することは、アプリケーション410が任意のハードウェア及び/またはソフトウェアプラットフォーム向けに開発されることを可能にする特徴の1つである場合がある。例えば、SDK415は、アプリケーション410が開発されるときにアプリケーション410と通信するように構成することができる。SDK415はまた、複数のハードウェア及び/またはソフトウェアプラットフォームと関連付けられたコア420と通信するように構成することができる。コンテンツを受信した後、コア420は、例えば、事前に確立されたソケットを使用して、デバイスクライアント305を介してウェアラブルデバイス105にコンテンツを通信することができる。アプリケーション410は、ウェアラブルデバイス105から受信したデータに基づいてコンテンツを生成するように構成することができる。例えば、周辺ドライバ345は、通信回線120を使用して、データを検知し、デバイスクライアント305及びコア420を介してアプリケーションモジュール630に周辺データ(例えば、IMUデータ)としてデータを通信することができる。言い換えれば、周辺データは、周辺ドライバ345を介して周辺デバイスによって収集及び処理され(例えば、圧縮される、パッケージ化される、構文解析される、フィルタにかけられる、ノイズを除去されるなど)、ウェアラブルデバイス105及び/またはコンパニオンデバイス110との通信及びウェアラブルデバイス105及び/またはコンパニオンデバイス110による使用のためにパッケージ化されるデータである場合がある。
上述のように、いくつかの実施態様では、ウェアラブルデバイス105は、所与のときに複数のコンパニオンデバイス110に接続するように構成することができる。いくつかの実施態様では、異なるコンパニオンデバイス110は、(例えば、アプリケーション410を使用して)異なるサービスを提供するように構成することができる。いくつかの実施態様では、低遅延、高帯域幅の5G接続が主流になると、コンパニオンデバイス110は、クラウドで動作する(例えば、5G規格を通じて接続する)ように構成することができる。
図5は、例示的な実施態様によるウェアラブルデバイスアプリケーションのアクティビティ要素のブロック図を示す。図5に示すように、アプリケーション410は、ウェアラブルアクティビティ505ブロックと、ウェアラブルアクティビティサービス510ブロックと、ウェアラブルアクティビティホスト515ブロックとを含むことができ、コア420は、コアサービス520ブロックを含むことができる。
いくつかの例示的な実施態様では、ウェアラブルデバイスアプリケーションの設計は、アクティビティモデルに似ている場合がある。図3を参照すると、RTOS340は、1つのタスク、それぞれ(またはタスクのグループ)が最大完了時間を有する複数のタスクを処理するように構成することができる。したがって、各アクティビティは、並行プロセスで実行され、完了されるまでの時間(または時間量)を有するタスクである場合がある。
例示的な実施態様では、アクティビティは、サービスコンテキストで実行することができる。いくつかの実施態様では、サービスコンテキストで実行することによって、アプリケーション410はコンパニオンデバイス110のアプリケーションと同時に実行することが可能になる。いくつかの実施態様では、コンパニオンデバイス110のディスプレイがオフになっているとき、アプリケーションは実行及びレンダリングを継続することができる。
いくつかの実施態様では、1つ以上のアプリケーション410は、ウェアラブルアクティビティサービス510を含むことができる。ウェアラブルアクティビティサービス510は、ウェアラブルアクティビティ505を顕在化させるように構成することができ、その結果、ウェアラブルアクティビティ505は、SDK415によってインスタンス化することができる。したがって、ウェアラブルアクティビティ505は、より後の時点でインスタンス化することができる。開発者の観点から、ウェアラブルアクティビティサービス510は、アプリケーション410のロジックに直接関係しないボイラープレートコードである可能性がある。ウェアラブルアクティビティ505は、アプリケーション410のロジックに関係するコードである場合がある。いくつかの実施態様では、ウェアラブルアクティビティ505は、アクティビティマネージャによって管理することができ、標準的なOSのアクティビティ対応物と同様に動作することができる。
いくつかの実施態様では、サービスバインディングは、アプリケーション410のライフサイクルを開始及び管理するためにウェアラブルデバイスランタイム環境によって使用することができる。アクティビティマネージャが起動フローの一部としてサービスをバインドすると、SDK415は、例えば、一般的なアクティビティ状態制御を担うことができるクラスとして、ウェアラブルアクティビティホスト515をインスタンス化し、取り付けることができる。例えば、初期化中に、ウェアラブルアクティビティホスト515は、ウィンドウマネージャから表面を要求することができる。この表面は次に、アプリケーション410のコンテンツをレンダリングするために使用される仮想ディスプレイのためのバッキングストアとして使用される。
図6は、例示的な実施態様によるウェアラブルデバイスランタイム環境におけるウェアラブルデバイスアプリケーションのブロック図を示す。図6に示すように、コンパニオンデバイスOS605は、2つ以上のアプリケーション環境を同時に処理することができる。例えば、コンパニオンデバイスOS605は、アプリケーションモジュール610を含むことができる。アプリケーションモジュール610は、標準のOSアプリケーションアクティビティと関連付けることができる。さらに、コンパニオンデバイスOS605は、ウェアラブルランタイム環境625と関連付けて動作するアプリケーションモジュール630を含むことができる。ウェアラブルランタイム環境625は、ウェアラブルデバイス105と関連付けることができる。
アクティビティ(複数可)620、640は、アプリケーションが実行できる単一の集中的なタスクであることができる。例えば、いくつかのアプリケーションは、ユーザインターフェース(UI)を含むことができる。したがって、アクティビティ(複数可)620、640は、UIを配置するためのウィンドウを作成するように構成することができる。ウィンドウは、フルスクリーンウィンドウ、他のウィンドウに埋め込まれたフローティングウィンドウ、隠しウィンドウなどである場合がある。異なるタイプのウィンドウを、異なるアクティビティ(複数可)620、640と関連付けることができる。アクティビティ(複数可)620、640は任意のタスクのために構成することができ、ウィンドウは一例にすぎない。
アクティビティマネージャ615、635は、アクティビティ620、640に関する情報を通信し、アクティビティ620、640とインタラクトするように構成することができる。アクティビティマネージャ615、635はさらに、タスク、スレッド、サービス、及び他のプロセスについての情報を通信し、タスク、スレッド、サービス、及び他のプロセスとインタラクトするように構成することができる。
例示的な実施態様では、ウェアラブルランタイム環境625は、仮想ランタイム環境である場合がある。仮想ランタイム環境は、コンピューティングデバイスのバックグラウンドで動作するように構成することができる。したがって、ウェアラブルランタイム環境625は、ウェアラブルデバイス105と関連付けられ、コンパニオンデバイス110上でバックグラウンドプロセスとして動作するように構成された仮想ランタイム環境である場合がある。言い換えれば、ウェアラブルランタイム環境625は、コンパニオンデバイス110のディスプレイに示されたユーザインターフェースなしで動作することができる。例えば、ウェアラブルランタイム環境625は、コンパニオンデバイス110の隠しウィンドウで動作することができる。したがって、ウェアラブルランタイム環境625が仮想ランタイム環境である場合、コンパニオンデバイス110のユーザは、ウェアラブルランタイム環境625を使用してアプリケーションを視覚的制御またはI/O制御できない場合がある。
代替的または追加の実施態様では、アプリケーション410及び/またはアプリケーションモジュール630は、仮想プロセスである場合がある。仮想プロセスは、コンピューティングデバイスのバックグラウンドで動作するように構成することができる。したがって、アプリケーション410及び/またはアプリケーションモジュール630は、ウェアラブルデバイス105と関連付けられ、コンパニオンデバイス110上でバックグラウンドプロセスとして動作するように構成された仮想プロセスである場合がある。言い換えれば、アプリケーション410及び/またはアプリケーションモジュール630は、コンパニオンデバイス110のディスプレイに示されたユーザインターフェースなしで動作することができる。例えば、アプリケーション410及び/またはアプリケーションモジュール630は、コンパニオンデバイス110の隠しウィンドウで動作することができる。したがって、プロセスが仮想ランタイムプロセスである場合、コンパニオンデバイス110のユーザは、アプリケーション410及び/またはアプリケーションモジュール630を視覚的制御またはI/O制御できない場合がある。
図7は、例示的な実施態様によるスプリット計算アーキテクチャを使用するシステムのブロック図を示す。図7に示すように、システムは、ウェアラブルデバイス105と、コンパニオンデバイス110とを含む。ウェアラブルデバイス105は、デバイスクライアント305と、ミラーモジュール705と、周辺ドライバ345とを含むことができる。ミラーモジュール705は、周辺機器715-1、715-2、715-3、…及び周辺機器715-nを含むことができる。周辺機器715-1、715-2、715-3、…、及び周辺機器715-nはそれぞれ、周辺データを含むことができる。コンパニオンデバイス110は、コア420と、ウェアラブルランタイム環境625とを含むことができる。ウェアラブルランタイム環境625は、アプリケーション410を含むアプリケーションモジュール630と、ミラーモジュール710とを含むことができる。ミラーモジュール710は、周辺720-1、720-2、720-3、…、及び周辺720-nとを含むことができる。周辺機器720-1、720-2、720-3、…、及び周辺機器720-nはそれぞれ、周辺データを含むことができる。この例示的な実施態様は、コンパニオンデバイス110が周辺データをミラーリングし、使用することと関連付けられた信号フローを説明するために使用することができる。
この例示的な実施態様では、アプリケーション410は、例えば、コンテンツ、ヘッドポーズ、レンダリング画像などを生成するように構成することができる。一例として、ヘッドポーズを生成すること(例えば、ヘッドポーズ操作)は、ウェアラブルデバイス105によって取り込まれた画像及び/またはIMUデータを使用することを含むことができる。この例では、カメラ(例えば、周辺機器)が画像データとして画像を取り込むと、画像データは、例えば、周辺データとして周辺機器715-1に格納することができる。さらに、IMUがデータを検知するとき、IMUデータは、例えば、周辺データとして周辺機器715-2に格納することができる。
この実施例の実施態様では、周辺機器715-1、715-2、715-3、...、及び周辺機器715-nはそれぞれ、周辺機器720-1、720-2、720-3...、及び周辺720-nとしてコンパニオンデバイス110上でミラーリングすることができる。ミラーリング、データミラーリング、またはミラーリングされたデータは、第1の場所から第2の場所にリアルタイムでデータをコピーすることを含むことができる。データはリアルタイムでコピーされるため、第2の場所に格納されたデータは、第1の場所のデータの正確なコピーである。第1の位置及び第2の位置は、メモリ位置(例えば、アドレス指定可能なメモリ位置)であることができる。例示的な実施態様では、第1の位置は、ウェアラブルデバイス105のメモリであることができ、第2の位置は、コンパニオンデバイス110のメモリ(例えば、ウェアラブルランタイム環境625と関連付けられたメモリ)であることができる。上記の例を続けると、周辺機器720-1は、周辺機器715-1のミラー(例えば、正確なコピー)であり、周辺機器720-2は、周辺機器715-2のミラー(例えば、正確なコピー)である。したがって、周辺機器720-1の周辺データは、周辺機器715-1の同じ周辺データであり、周辺機器720-2の周辺データは、周辺機器715-2の同じ周辺データである。
したがって、アプリケーション410は、周辺機器720-1の周辺データ及び周辺機器720-2の周辺データを使用して、例えば、コンテンツ、ヘッドポーズ、レンダリング画像などを生成するように構成することができる。生成されたコンテンツ、ヘッドポーズ、レンダリング画像などは、プロセスがウェアラブルデバイス105によって実行されるならば、実質的に同じであるはずである。したがって、ウェアラブルデバイス105のリソースを節約する。
図8は、例示的な実施態様によるコンパニオンデバイスランタイム環境625を示すブロック図である。ランタイム環境625は、コンパニオンデバイス110のメモリに含めることができる。メモリは、揮発性メモリ(例えば、RAM)と、1つ以上のROM、ディスクドライブ、ソリッドステートドライブなどの不揮発性メモリとの両方を含むことができる。例示的な実施態様では、ランタイム環境625は、ヘッドポーズデータを生成するように構成されたモジュール(例えば、ソフトウェアコード、コンピュータ命令など)を含むことができる。ヘッドポーズデータは、画像データ及び/またはIMUデータに基づいて生成することができる。
いくつかの実施態様では、ランタイム環境625のコンポーネントの1つ以上は、メモリに格納された命令を処理するように構成されたプロセッサと関連付けることができる。図8に示すそのような命令の例は、ミラーモジュール710と、IMUマネージャ810と、ニューラルネットワークマネージャ820と、視覚的位置決めシステムマネージャ830とを含む。さらに、図8に示すように、ランタイム環境625は、様々なデータを格納するように構成することができ、これは、そのようなデータを使用するそれぞれのモジュールに関して説明される。
この例では、ミラーモジュール710は、それぞれ、ウェアラブルデバイス105上の周辺データのミラーである周辺データを含む画像周辺機器805-1と、IMU周辺機器805-2とを含む。IMUマネージャ810は、IMUデータ850を取得するように構成することができる。いくつかの実施態様では、IMUマネージャ810は、IMU周辺機器805-2から周辺データを読み出すことによってIMUデータ850を取得するように構成することができる。図8に示すように、IMUマネージャ810は、誤差補償マネージャ812と、積分マネージャ814とを含むことができる。
誤差補償マネージャ812は、IMU較正パラメータを格納するように構成することができる。誤差補償マネージャ812は、例えば、IMUマネージャ810からIMU出力(IMUデータ850)受信し、IMU較正パラメータ値を使用して、誤差についてIMU出力を補償するようにさらに構成することができる。誤差補償マネージャ812はさらに、誤差補償を実行した後、IMUデータ850を生成するように構成することができる。
積分マネージャ814は、IMUデータ850に対して積分演算(例えば、時間依存値を合計すること)を実行するように構成することができる。例えば、回転速度データ851を経時的に積分して、向きを生成することができる。さらに、加速度データ852を経時的に2回積分して、位置を生成することができる。したがって、積分マネージャ814は、例えば、回転速度データ851及び加速度データ852など、IMU出力から6DoF姿勢(位置及び向き)を生成するように構成することができる。
IMUデータ850は、IMU較正パラメータ値を使用して誤差(複数可)について補償されたワールドフレーム(例えば、IMUのフレームなどのローカルフレームと対照的に)でジャイロ測定値と加速度計測定値、回転速度データ851、及び加速度データ852を表すことができる。さらに、IMUデータ850は、ジャイロ測定値及び加速度計測定値から導出される、6DoF姿勢及び移動データ、位置データ854、向きデータ855、及び速度データ856とを含む。最後に、いくつかの実施態様では、IMUデータ850は、IMU温度データ853を含むことができる。これは、回転速度データ851、及び加速度データ852におけるさらなる誤差を(誤差補償マネージャ812による補正のために)示し得る。
ニューラルネットワークマネージャ820は、入力として、回転速度データ851及び加速度データ852を取得し、第1の位置データ842と、第1の向きデータ844と、第1の速度データ846とを含むニューラルネットワークデータ840を生成するように構成することができる。いくつかの実施態様では、入力された回転速度データ851及び加速度データ852は、誤差補償マネージャ812が、例えば、IMU較正パラメータ値によって補償された誤差で、未処理のIMU出力値に作用することによって生成することができる。図8に示すように、ニューラルネットワークマネージャ820は、ニューラルネットワークトレーニングマネージャ822を含むことができる。
ニューラルネットワークトレーニングマネージャ822は、トレーニングデータ848を受け取り、層ならびにコスト関数及び値に関するデータを含むニューラルネットワークデータ840を生成するように構成することができる。いくつかの実施態様では、トレーニングデータ848は、ウェアラブルデバイス105を装着し、例えば、頭部及び/または身体の他の部分を移動させるユーザの測定値から生成された移動データ、ならびにそれらの測定値から生成されたグラウンドトゥルース6DoF姿勢データを含むことができる。いくつかの実施態様では、トレーニングデータ848は、測定された6DoFの姿勢及び速度と組み合わされた、動作からの測定された回転速度及び加速度を含むことができる。
さらに、いくつかの実施態様では、ニューラルネットワークマネージャ820は、IMUからの履歴データを使用して、第1の位置データ842、第1の向きデータ844、及び第1の速度データ846を生成することができる。例えば、履歴データは、結果として生じる6DoF姿勢及び移動結果に対して、以前の回転速度、加速度、及び温度でトレーニングデータ848を拡張し、したがってニューラルネットワークをさらに改良するために使用することができる。いくつかの実施態様では、ニューラルネットワークマネージャ820によって表されるニューラルネットワークは、畳み込みニューラルネットワークであり、層は畳み込み層である。
視覚位置決めシステム(VPS)マネージャ830は、入力として画像を受け取り、第2の位置データ862と、第2の向きデータ864とを含むVPSデータ860を生成するように構成することができる。いくつかの実施態様では、VPSデータは、例えば、画像に基づいた6DoF姿勢などの第2の速度データ866を含むことができる。VPSマネージャ830は、VPSデータ860を生成するために使用される画像を取得するように構成することができる。いくつかの実施態様では、VPSマネージャ830は、画像周辺機器805-1から周辺データを読み出すことによって画像を取得するように構成することができる。画像周辺機器805-1に格納された画像または画像データは、ウェアラブルデバイス105上の世界に面するカメラで取り込まれた画像のミラーである場合がある。
いくつかの実施態様では、VPSデータ860を生成する際のVPSマネージャ830の精度レベルは、位置を取り囲む環境に依存する可能性がある。例えば、屋内位置の精度要件は1~10cmのオーダーである場合があり、屋外位置の精度要件は1~10mのオーダーである場合がある。
ウェアラブルデバイス105のヘッドポーズは、画像周辺機器805-1及び/またはIMU周辺機器805-2の周辺データに基づいて、コンパニオンデバイス110によって生成することができる。例えば、ウェアラブルデバイス105のヘッドポーズは、ニューラルネットワークデータ840に基づいて、コンパニオンデバイス110によって生成することができる。例えば、ウェアラブルデバイス105のヘッドポーズは、VPSデータ860に基づいて、コンパニオンデバイス110によって生成することができる。例えば、ウェアラブルデバイス105のヘッドポーズは、IMUデータ850に基づいて、コンパニオンデバイス110によって生成することができる。例えば、ウェアラブルデバイス105のヘッドポーズは、ニューラルネットワークデータ840、VPSデータ860、及び/またはIMUデータ850に基づいて、コンパニオンデバイス110によって生成することができる。生成されたヘッドポーズは、プロセスがウェアラブルデバイス105によって実行されるならば、実質的に同じであるはずである。したがって、ウェアラブルデバイス105のリソースを節約する。さらに、スプリット計算システム、ならびに画像周辺機器805-1及び/またはIMU周辺機器805-2のミラーリングされた周辺データのため、ヘッドポーズは、最大完了時間内に生成することができる。
実施例1。図9は、例示的な実施態様による、ウェアラブルデバイスと、前記ウェアラブルデバイスに通信可能に結合されたコンパニオンデバイスとを含むスプリット計算システムを操作する方法のブロック図である。図9に示すように、ステップS905において、ウェアラブルデバイスをコンパニオンデバイスと通信可能に結合すること。前記結合することは、前記ウェアラブルデバイス、前記コンパニオンデバイスのいずれかによって、または前記ウェアラブルデバイスのもしくは前記コンパニオンデバイスのユーザのユーザコマンドに応答してトリガすることができる。前記ウェアラブルデバイスが、例えば、1つ以上の有線及び/または無線通信リンクを介してなど、1つ以上のコマンド及び/またはデータを、少なくとも部分的に、前記コンパニオンデバイスに送信すること、及び/または前記コンパニオンデバイスから受信することが可能である場合、前記ウェアラブルデバイスは、前記コンパニオンデバイスに「通信可能に結合する」ことができる。いくつかの実施態様では、クライアントとホストの両方が、それぞれがどの機能をサポートするのかを決定することを示す、双方向ハンドシェークを使用することができる。ステップS910において、前記ウェアラブルデバイスによって、周辺デバイスから取得されたデータを、周辺データとして前記コンパニオンデバイスでミラーリングすることであって、前記ウェアラブルデバイスによって、前記周辺デバイスから前記周辺データを取得することと、前記ウェアラブルデバイスによって、前記周辺データを前記コンパニオンデバイスに通信することを含む、前記ミラーリングすること。ここで、用語「周辺デバイス」は、例えば、慣性測定ユニット(IMU)などのように、前記ウェアラブルデバイスの入力/出力デバイスなど、前記ウェアラブルデバイスに直接接続する、前記ウェアラブルデバイスの内部デバイスまたは外部デバイスを指すために使用することができる。ここで、用語「ミラーリング」は、正確なコピーとして、前記周辺データを前記コンパニオンデバイスにコピーするリアルタイム動作を指すために使用することができる。ステップS915において、前記コンパニオンデバイスによって、前記周辺データを受信し、前記周辺データを処理されたデータに処理すること。前記ミラーリングされた周辺データは、それぞれ(またはタスクのグループ)が最大完了時間を有する可能性がある複数のタスクに関する場合がある。ここで、前記複数のタスクまたは前記複数のタスクの一部は、前記周辺データを前記コンパニオンデバイスにミラーリングするときに、前記コンパニオンデバイスによって実行することができる。前記完了したタスクの結果は、次に前記ウェアラブルデバイスに返すことができる。ステップS920において、前記コンパニオンデバイスによって、前記処理されたデータを前記ウェアラブルデバイスに送信すること。ステップS925において、前記ウェアラブルデバイスによって、前記処理されたデータを受信し、前記処理されたデータを利用してコンピューティングプロセスを完了すること。ここで、前記コンピューティングプロセスは、例えば、前記ウェアラブルデバイスが前記コンパニオンデバイスと結合されているときなど、前記周辺データが前記ユーザに送信される前または送信されるときに開始することができる。
実施例2。前記ウェアラブルデバイスによって、前記コンパニオンデバイスの周辺デバイスから取得されたデータを、コンパニオンデバイス周辺データとして前記ウェアラブルデバイス上でミラーリングすることは、前記ウェアラブルデバイスによって、前記コンパニオンデバイスから前記コンパニオンデバイス周辺データを受信することを含むことをさらに備える、実施例1に記載の方法。
実施例3。前記周辺データが、慣性測定ユニット(IMU)データである場合があり、前記コンピューティングプロセスがヘッドポーズ操作である場合があり、前記ウェアラブルデバイスによって前記コンピューティングプロセスを完了することが、前記ヘッドポーズ操作に基づいて前記結果を使用することを含むことができる、実施例1に記載の方法。
実施例4。前記周辺データが、画像データである場合があり、前記コンピューティングプロセスがヘッドポーズ操作である場合があり、前記ウェアラブルデバイスによって前記コンピューティングプロセスを完了することが、前記ヘッドポーズ操作に基づく前記結果を使用することを含むことができる、実施例1に記載の方法。
実施例5。前記周辺データが、画像データである場合があり、前記コンピューティングプロセスがアイトラッキング操作である場合があり、前記ウェアラブルデバイスによって前記コンピューティングプロセスを完了することが、前記アイトラッキング操作に基づく前記結果を使用することを含むことができる、実施例1に記載の方法。
実施例6。前記ウェアラブルデバイスが第1のソケットを含むことができ、前記コンパニオンデバイスが、前記第1のソケットに通信可能に結合された第2のソケットを含むことができ、周辺デバイスと関連付けられた前記データをミラーリングすることが、前記第1のソケットと前記第2のソケットとの間で前記周辺データを通信することを含むことができる、実施例1に記載の方法。
実施例7。前記ウェアラブルデバイスがスマートグラスである場合がある、実施例1に記載の方法。
実施例8。前記コンパニオンデバイスが、別のウェアラブルデバイス、モバイルデバイス、スマートフォン、タブレット、サーバ、及びプロセッサとオペレーティングシステムとを含むデバイスの少なくとも1つである場合がある、実施例1に記載の方法。
実施例9。図10は、例示的な実施態様によるスプリット計算アーキテクチャを操作する方法のブロック図である。システムは、デバイスクライアントと、ハードウェアアプリケーション層と、オペレーティングシステム抽象化層と、少なくとも1つの周辺デバイスドライバとを含むウェアラブルデバイスを含むことができる。前記システムは、前記ウェアラブルデバイスと関連付けられたランタイム環境を含むコンパニオンデバイスを含むことができる。図10に示すように、ステップS1005において、前記周辺デバイスと関連付けられたデータを、周辺データとして前記コンパニオンデバイス上でミラーリングする。ステップS1010において、前記ウェアラブルデバイスによって、前記周辺データを検出する。ステップS1015において、前記ウェアラブルデバイスによって、前記周辺データを前記コンパニオンデバイスに通信する。ステップS1020において、前記コンパニオンデバイスによって、前記周辺デバイスを受信する。ステップS1025において、前記コンパニオンデバイスによって、前記コンパニオンデバイスによるコンピューティングプロセスの完了と関連付けられた結果を生成し、前記コンピューティングプロセスが、前記周辺データを使用するように構成される。ステップS1030において、前記ウェアラブルデバイスによって、前記コンピューティングプロセスの前記完了と関連付けられた結果を受信する。ステップS1035において、及び、前記ウェアラブルデバイスによって、前記コンピューティングプロセスの前記完了と関連付けられた前記結果に基づいて、前記コンピューティングプロセスを完了する。
実施例10。前記ウェアラブルデバイスがスマートグラスである場合がある、実施例9に記載の方法。
実施例11。前記コンパニオンデバイスが、別のウェアラブルデバイス、モバイルデバイス、スマートフォン、タブレット、サーバ、及びプロセッサとオペレーティングシステムとを含むデバイスの少なくとも1つである場合がある、実施例9に記載の方法。
実施例12。前記ランタイム環境が、前記コンパニオンデバイスのバックグラウンドで動作する仮想ランタイム環境である場合があり、前記周辺デバイスと関連付けられた前記データのミラーが、前記仮想ランタイム環境に含まれる場合がある、実施例9に記載の方法。
実施例13。前記周辺データが、慣性測定ユニット(IMU)データである場合があり、前記コンピューティングプロセスがヘッドポーズ操作である場合があり、前記ウェアラブルデバイスによって前記コンピューティングプロセスを完了することが、前記ヘッドポーズ操作に基づいて前記結果を使用することを含むことができる、実施例9に記載の方法。
実施例14。前記周辺データが、画像データである場合があり、前記コンピューティングプロセスがヘッドポーズ操作である場合があり、前記ウェアラブルデバイスによって前記コンピューティングプロセスを完了することが、前記ヘッドポーズ操作に基づく前記結果を使用することを含むことができる、実施例9に記載の方法。
実施例15。前記周辺データが、画像データである場合があり、前記コンピューティングプロセスがアイトラッキング操作である場合があり、前記ウェアラブルデバイスによって前記コンピューティングプロセスを完了することが、前記アイトラッキング操作に基づく前記結果を使用することを含むことができる、実施例9に記載の方法。
実施例16。前記ウェアラブルデバイスが第1のソケットを含むことができ、前記コンパニオンデバイスが、前記第1のソケットに通信可能に結合された第2のソケットを含むことができ、周辺デバイスと関連付けられた前記データをミラーリングすることが、前記第1のソケットと前記第2のソケットとの間で前記周辺データを通信することを含むことができる、実施例9に記載の方法。
実施例17。図11は、例示的な実施態様によるコンパニオンを操作する方法のブロック図である。図11に示すように、ステップS1105において、ウェアラブルデバイスをコンパニオンデバイスと通信可能に結合すること。ステップS1110において、前記コンパニオンデバイスによって、前記ウェアラブルデバイスの周辺デバイスと関連付けられたデータを、周辺データとしてミラーリングすること。ステップS1115において、前記コンパニオンデバイスによって、前記ウェアラブルデバイスから前記周辺データを受信すること。ステップS1120において、前記コンパニオンデバイスによって、前記コンパニオンデバイスによるコンピューティングプロセスの完了と関連付けられた結果を生成し、前記コンピューティングプロセスが、前記周辺データを使用するように構成される。ステップS1125において、前記コンパニオンデバイスによって、前記コンピューティングプロセスの前記完了と関連付けられた前記結果を前記ウェアラブルデバイスに通信すること。
実施例18。前記ウェアラブルデバイスがスマートグラスである場合がある、実施例17に記載の方法。
実施例19。前記コンパニオンデバイスが、別のウェアラブルデバイス、モバイルデバイス、スマートフォン、タブレット、サーバ、及びプロセッサとオペレーティングシステムとを含むデバイスの少なくとも1つである場合がある、実施例17に記載の方法。
実施例20。前記コンパニオンデバイスによって、前記コンパニオンデバイスの周辺デバイスから取得されたデータを、コンパニオンデバイス周辺データとして前記ウェアラブルデバイス上でミラーリングすることは、前記コンパニオンデバイスによって、前記コンパニオンデバイス周辺データを前記コンパニオンデバイスに通信することを含むことをさらに備える、実施例17に記載の方法。
実施例21。前記周辺データが、慣性測定ユニット(IMU)データである場合があり、前記コンピューティングプロセスがヘッドポーズ操作である場合があり、前記ウェアラブルデバイスによって前記コンピューティングプロセスを完了することが、前記ヘッドポーズ操作に基づく前記結果を使用することを含むことができる、実施例17に記載の方法。
実施例22。前記周辺データが、画像データである場合があり、前記コンピューティングプロセスがヘッドポーズ操作である場合があり、前記ウェアラブルデバイスによって前記コンピューティングプロセスを完了することが、前記ヘッドポーズ操作に基づいて前記結果を使用することを含むことができる、実施例17に記載の方法。
実施例23。前記周辺データが、画像データである場合があり、前記コンピューティングプロセスがアイトラッキング操作である場合があり、前記ウェアラブルデバイスによって前記コンピューティングプロセスを完了することが、前記アイトラッキング操作に基づいて前記結果を使用することを含むことができる、実施例17に記載の方法。
実施例24。前記ウェアラブルデバイスが第1のソケットを含むことができ、前記コンパニオンデバイスが、前記第1のソケットに通信可能に結合された第2のソケットを含むことができ、周辺デバイスと関連付けられた前記データをミラーリングすることが、前記第1のソケットと前記第2のソケットとの間で前記周辺データを通信することを含むことができる、実施例17に記載の方法。
実施例25。前記コンパニオンデバイスが、仮想ランタイム環境を含む場合があり、前記周辺デバイスと関連付けられたミラーが、前記仮想ランタイム環境に含まれる場合がある、実施例17に記載の方法。
実施例26。方法は、実施例1~実施例25の1つ以上の任意の組み合わせを含むことができる。
実施例27。非一時的コンピュータ可読記憶媒体であって、前記非一時的コンピュータ可読記憶媒体に格納された命令を含み、前記命令は、少なくとも1つのプロセッサによって実行されるとき、コンピューティングシステムに、実施例1~26のいずれかに記載の方法を実行させるように構成される、前記非一時的コンピュータ可読記憶媒体。
実施例28。実施例1~26のいずれかに記載の前記方法を実行するための手段を備える装置。
実施例29。少なくとも1つのプロセッサと、コンピュータプログラムコードを含む少なくとも1つのメモリとを備える装置であって、前記少なくとも1つのメモリ及び前記コンピュータプログラムコードが、前記少なくとも1つのプロセッサを用いて、前記装置に実施例1~26のいずれかに記載の方法を少なくとも実行させるように構成された、前記装置。
例示的な実施態様は、命令を含む非一時的コンピュータ可読記憶媒体を含むことができ、この命令は、少なくとも1つのプロセッサによって実行されるとき、コンピューティングシステムに、上述の方法のいずれかに記載の方法を実行させるように構成される。例示的な実施態様は、上述の方法のいずれかを実行するための手段を含む装置を含むことができる。例示的な実施態様は、少なくとも1つのプロセッサと、コンピュータプログラムコードを含む少なくとも1つのメモリとを含む装置を含むことができ、少なくとも1つのメモリ及びコンピュータプログラムコードは、少なくとも1つのプロセッサを用いて、上述の方法のいずれかを少なくとも実行させるように構成される。
本明細書において説明するシステム及び技術の様々な実施態様は、デジタル電子回路、集積回路、特別に設計されたASIC(特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、及び/またはそれらの組み合わせで実現され得る。これらの様々な実施態様は、ストレージシステムからのデータ及び命令を受信し、ストレージシステムにデータ及び命令を送信するように結合された、特殊または汎用であり得る、少なくとも1つのプログラマブルプロセッサ、少なくとも1つの入力デバイス、及び少なくとも1つの出力デバイスを含んだプログラム可能なシステムで実行可能及び/または解釈可能な1つ以上のコンピュータプログラムにおける実装を含み得る。
これらのコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、またはコードとしても知られる)は、プログラマブルプロセッサのための機械命令を含み、かつ高水準手続型及び/またはオブジェクト指向プログラミング言語、及び/またはアセンブリ/機械言語で実装されることができる。本明細書で使用する場合、「機械可読の媒体」及び「コンピュータ可読の媒体」という用語は、機械可読の信号として機械命令を受け取る機械可読の媒体を含むプログラマブルプロセッサに機械命令及び/またはデータを提供するために用いられる、あらゆるコンピュータプログラム製品、装置及び/またはデバイス(例えば、磁気ディスク、光ディスク、メモリ、プログラマブル論理回路(PLD))を指す。「機械可読の信号」という用語は、機械命令及び/またはデータをプログラマブルプロセッサに提供するために用いられるあらゆる信号を指す。
ユーザとのインタラクションを提供するために、本明細書で説明するシステム及び技術は、ユーザに情報を表示するためのディスプレイデバイス(LED(発光ダイオード)またはOLED(有機LED)、またはLCD(液晶ディスプレイ)モニタ/画面)、ならびにユーザがそれによってコンピュータへの入力を提供することができるキーボード及びポインティングデバイス(例えば、マウスやトラックボール)を有するコンピュータ上に実装できる。他の種類のデバイスもまた、ユーザとのインタラクションを提供するために使用することができ、例えば、ユーザに提供されるフィードバックは、あらゆる形式の感覚的フィードバック(例えば、視覚フィードバック、聴覚フィードバック、または触覚フィードバック)である場合があり、ユーザからの入力は、音響、音声言語、または触覚入力を含む任意の形式で受信できる。
ここに説明するシステム及び技術は、バックエンドコンポーネント(例えば、データサーバとして)を含むか、またはミドルウェアコンポーネント(例えば、アプリケーションサーバ)を含むか、またはフロントエンドコンポーネント(例えば、ユーザがそれを通じてここに説明するシステム及び技術の実装とインタラクトできるグラフィカルユーザインターフェースもしくはウェブブラウザを有するクライアントコンピュータ)を含むコンピューティングシステムに、あるいはそのようなバックエンド、ミドルウェア、もしくはフロントエンドのコンポーネントの組み合わせに実装することができる。システムのコンポーネントは、あらゆる形式または媒体のデジタルデータ通信(例えば、通信ネットワーク)によって相互接続することができる。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)、広域ネットワーク(「WAN」)、及びインターネットを含む。
コンピューティングシステムは、クライアントとサーバとを含むことができる。クライアントとサーバは、概して互いに遠く離れており、通常通信ネットワークを通じてインタラクトする。クライアントとサーバの関係は、それぞれのコンピュータ上で実行されると共にクライアントとサーバの関係を互いに有するコンピュータプログラムにより生じる。
いくつかの実施態様が説明されてきた。それにも関わらず、本明細書の趣旨及び範囲から逸脱することなく、様々な修正が成され得ることが理解される。
さらに、図に示されたロジックフローは、所望の結果を成し遂げるために、示されている特定の順序、つまり連続した順序を必要としない。さらに、説明したフローに他のステップを設けてもよく、または説明したフローからステップを排除してもよく、及び説明したシステムに他の構成要素を追加してもよく、または説明したシステムから他の構成要素を除去してもよい。したがって、他の実施態様は、以下の特許請求の範囲内である。
本明細書で説明されるように、記載の実施態様の特定の特徴が例示されたが、数多くの修正、置換、変更、及び均等物が、当業者には想到されるであろう。よって、添付の特許請求の範囲は、実施態様の範囲に入るそのような修正及び変更をすべて網羅する意図があることを、理解されたい。それらは、限定ではなく、例としてのみ提示されており、形式及び詳細における様々な変更を行い得ることが理解されるべきである。本明細書に説明する装置及び/または方法の任意の部分は、相互に排他的な組み合わせを除いて、任意の組み合わせで組み合わせ得る。本明細書に説明する実施態様は、説明する異なる実施態様の機能、構成要素、及び/または特徴の様々な組み合わせ及び/または部分組み合わせを含むことができる。
例示的な実施態様は、様々な修正及び代替の形態を含み得るが、その実施態様は、図面に例として示され、本明細書で詳細に説明される。しかしながら、開示される特定の形式に例示的な実施態様を限定する意図はなく、逆に、例示的な実施形態は、特許請求の範囲の範囲内に含まれるすべての修正形態、均等物、及び代替形態を含むべきであることを理解されたい。同様の番号は、図の説明を通して同様の構成要素を指す。
上述の例示的な実施態様のいくつかは、フローチャートとして示されるプロセスまたは方法として説明されている。フローチャートでは動作を逐次処理として説明しているが、動作の多くは並行して、共に、または同時に行ってもよい。また、動作の順番を入れ替えでもよい。プロセスは、それらの動作が完了したときに終了させてもよいが、図に含まれていない追加のステップを有してもよい。プロセスは、方法、機能、手順、サブルーチン、サブプログラムなどに対応し得る。
それらのいくつかはフローチャートによって示されている、上記の方法は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはそれらの任意の組み合わせによって実施され得る。ソフトウェア、ファームウェア、ミドルウェア、またはマイクロコードに実装されるとき、必要なタスクを実行するためのプログラムコードまたはコードセグメントは、記憶媒体などの機械可読媒体またはコンピュータ可読媒体に記憶され得る。プロセッサ(複数可)は必要なタスクを実行し得る。
本明細書に開示される具体的な構造的及び機能的な詳細は、単に例示的な実施態様を説明する目的で表すにすぎない。しかしながら、例示的な実施態様は、多くの代替形態で具体化され、本明細書で説明される実施態様のみに限定されると解釈されるべきではない。
用語、第1の、第2のなどは、様々な要素を説明するために本明細書で使用されてよいが、これらの要素がこれらの用語によって制限されるべきではないことを理解されたい。これらの用語は、ある要素を別の要素と区別するためだけに使用される。例えば、例示的な実施態様の範囲から逸脱することなく、第1の要素が第2の要素と称され、同様に、第2の要素が第1の要素と称される場合があるであろう。本明細書で使用する場合、用語、及び/またはは、関連付けられた記載された項目の1つ以上のありとあらゆる組み合わせを含む。
要素が別の要素に接続または結合されていると言及されるとき、要素は他の要素に直接接続または結合される可能性もあれば、介在する要素が存在する場合もあることを理解されたい。対照的に、要素が、別の要素に直接接続または直接結合されていると言及されるとき、介在要素は存在しない。要素間の関係性を説明するために使用される他の単語は、同様に(例えば、間に対直接間に、隣接する対直接隣接するなど)解釈されるべきである。
本明細書に使用される専門用語は、特定の実施態様を説明する目的のためであり、例示的な実施態様を限定することを意図しない。本明細書で使用する場合、単数形のa、an、及びtheは、文脈が別段に明確に示さない限り、同様に複数形も含むことが意図される。用語、備える/含む(comprises)、備える/含む(comprising)、含む(includes)、及び/または含む(including)は、本明細書で使用されているときには、述べられている特徴、整数、ステップ、動作、要素、及び/またはコンポーネントの存在を指定するが、1つ以上の他の特徴、構成要素、ステップ、動作、要素、コンポーネント、及び/またはそれらの群の存在または追加を排除しないことをさらに理解されたい。
また、いくつかの代替実施態様では、示される機能/行為が、図で示される順序とは違う順序で起こり得ることに留意されたい。例えば、連続して示される2つの図は、実際には同時に実行される場合もあれば、関与する機能/行為に応じて、逆の順序で実行される場合もある。
別途定義されない限り、本明細書で使用されるすべての用語(技術用語及び科学用語を含む)は、例示的な実施態様が属する当業者により一般に理解されるものと同じ意味を有する。例えば、一般的に使用される辞書で定義される用語などの用語は、関連技術の文脈におけるそれらの意味と一致する意味を有すると解釈されるべきであり、本明細書に明示的にそのように定義されない限り、理想化された意味または過度に形式的な意味で解釈されないことをさらに理解されたい。
上記の例示的な実施態様及び対応する発明を実施するための形態の部分は、ソフトウェアに関して、またはアルゴリズム及びコンピュータメモリ内のデータビットに対する操作の記号表現に関して提示される。これらの説明及び表現は、当業者が自分の研究の趣旨を当業者に効果的に伝えるものである。この用語がここで使用されている場合、及び一般に使用されている場合、アルゴリズムは、望ましい結果につながるステップの自己矛盾のないシーケンスであると考えられる。ステップは、物理量の物理的操作を必要とするステップである。通常、必ずしもではないが、これらの量は、記憶され、移転され、組み合わされ、比較され、そうでない場合、操作が可能な光信号、電気信号、または磁気信号の形式をとる。おもに一般的な使用の理由から、これらの信号をビット、値、要素、記号、文字、用語、数などと呼ぶことが、ときには好都合であることが証明されている。
上述の例示的な実施態様では、プログラムモジュールまたは機能プロセスとして実装され得る(例えば、フローチャートの形式の)行為及び操作の記号表現に対する言及は、特定のタスクを実行するか、または特定の抽象データタイプを実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含み、これらは、既存の構造要素において既存のハードウェアを使用して説明及び/または実装され得る。そのような既存のハードウェアは、1つ以上の中央処理装置(CPU)、デジタルシグナルプロセッサ(DSP)、特定用途向け集積回路、フィールドプログラマブルゲートアレイ(FPGA)コンピュータなどを含み得る。
しかしながら、これらの用語及び類似した用語のすべては、適切な物理量と関連付けられるべきであり、これらの量に適用される便宜上のラベルにすぎないことを認識しておくべきである。特に明記されていない限り、または説明から明らかであるように、処理またはコンピューティングまたは計算または表示することの決定などの用語は、コンピュータシステムまたは類似した電子コンピューティングデバイスのアクション及びプロセスを指し、コンピュータシステムまたは類似した電子コンピューティングデバイスは、コンピュータシステムのレジスタ及びメモリ内の物理量、電子量として表されるデータを操作し、コンピュータシステムメモリもしくはレジスタまたは他のそのような情報ストレージデバイス、送信デバイス、または表示デバイス内の物理量として同様に表される他のデータに変換する。
また、例示的な実施態様のソフトウェア実装態様は、通常、なんらかの形式の非一時的プログラム記憶媒体上で符号化されるか、またはなんらかのタイプの伝送媒体を介して実装されることにも留意されたい。プログラム記憶媒体は、磁気(例えば、フロッピー(登録商標)ディスクもしくはハードドライブ)または光(例えば、コンパクトディスク読み出し専用メモリ、すなわちCD ROM)である場合もあれば、読み出し専用またはランダムアクセスである場合もある。同様に、伝送媒体は、ツイストワイヤペア、同軸ケーブル、光ファイバ、または当該技術で既知のなんらかの他の適切な伝送媒体であってもよい。例示的な実施態様は、任意の所与の実施態様のこれらの態様によって限定されない。
最後に、添付の特許請求の範囲は、本明細書に説明する特徴の特定の組み合わせを説明しているが、本開示の範囲は、以下に特許請求される特定の組み合わせに限定されるのではなく、代わりに、特定の組み合わせがこの時点で添付の特許請求の範囲に明確に列挙されているか否かに関わらず、本明細書に開示された実施態様の特徴の任意の組み合わせを包含するように拡大することも留意されたい。

Claims (29)

  1. 方法であって、
    ウェアラブルデバイスをコンパニオンデバイスと通信可能に結合することと、
    前記ウェアラブルデバイスによって、前記ウェアラブルデバイスの周辺デバイスから取得されたデータを、周辺データとして前記コンパニオンデバイス上でミラーリングすることと、を備え、ミラーリングすることは、
    前記ウェアラブルデバイスによって、前記周辺デバイスから前記周辺データを取得することと、
    前記ウェアラブルデバイスによって、前記周辺データを前記コンパニオンデバイスに通信することと、
    を含み、前記方法はさらに、
    前記コンパニオンデバイスによって、前記周辺データを受信し、前記周辺データを処理されたデータに処理することと、
    前記コンパニオンデバイスによって、前記処理されたデータを前記ウェアラブルデバイスに送信することと、
    前記ウェアラブルデバイスによって、前記処理されたデータを受信し、前記処理されたデータを利用してコンピューティングプロセスを完了することと、
    を備える、方法。
  2. 前記ウェアラブルデバイスによって、前記コンパニオンデバイスの周辺デバイスから取得されたデータを、コンパニオンデバイス周辺データとして前記ウェアラブルデバイス上でミラーリングすることは、前記ウェアラブルデバイスによって、前記コンパニオンデバイスから前記コンパニオンデバイス周辺データを受信することを含むことをさらに備える、請求項1に記載の方法。
  3. 前記周辺データは、慣性測定ユニット(IMU)データであり、
    前記コンピューティングプロセスは、ヘッドポーズ操作であり、
    前記ウェアラブルデバイスによって前記コンピューティングプロセスを完了することは、前記ヘッドポーズ操作の結果を使用することを含む、
    請求項1または請求項2に記載の方法。
  4. 前記周辺データは、画像データであり、
    前記コンピューティングプロセスは、ヘッドポーズ操作であり、
    前記ウェアラブルデバイスによって前記コンピューティングプロセスを完了することは、前記ヘッドポーズ操作の結果を使用することを含む、
    請求項1または請求項2に記載の方法。
  5. 前記周辺データは、画像データであり、
    前記コンピューティングプロセスは、アイトラッキング操作であり、
    前記ウェアラブルデバイスによって前記コンピューティングプロセスを完了することは、前記アイトラッキング操作の結果を使用することを含む、
    請求項1または請求項2に記載の方法。
  6. 前記ウェアラブルデバイスは、第1のソケットを含み、
    前記コンパニオンデバイスは、前記第1のソケットに通信可能に結合された第2のソケットを含み、
    周辺デバイスと関連付けられた前記データをミラーリングすることは、前記第1のソケットと前記第2のソケットとの間で前記周辺データを通信することを含む、
    請求項1または請求項2に記載の方法。
  7. 前記ウェアラブルデバイスは、スマートグラスである、請求項1または請求項に記載の方法。
  8. 前記コンパニオンデバイスは、別のウェアラブルデバイス、モバイルデバイス、スマートフォン、タブレット、サーバ、ならびに、プロセッサ及びオペレーティングシステムを含むデバイスの中の少なくとも1つである、請求項1または請求項に記載の方法。
  9. システムであって、
    ウェアラブルデバイスと、
    コンパニオンデバイスと、
    を備え、
    前記ウェアラブルデバイスは、
    デバイスクライアントと、
    ハードウェア抽象化層と、
    オペレーティングシステムの抽象化層と、
    少なくとも1つの周辺デバイスの各々のための少なくとも1つのドライバと、
    を含み、
    前記コンパニオンデバイスは、前記ウェアラブルデバイスと関連付けられたランタイム環境を含み、
    前記システムは、
    前記少なくとも1つの周辺デバイスと関連付けられたデータを、周辺データとして前記コンパニオンデバイス上でミラーリングするように構成され、ミラーリングすることは、
    前記ウェアラブルデバイスによって、前記周辺デバイスから前記周辺データを取得することと、
    前記ウェアラブルデバイスによって、前記周辺データを前記コンパニオンデバイスに通信することと、
    を含み、前記システムは、
    前記コンパニオンデバイスによって、前記周辺データを受信し、前記周辺データを処理されたデータに処理し、
    前記コンパニオンデバイスによって、前記処理されたデータを前記ウェアラブルデバイスに送信し、
    前記ウェアラブルデバイスによって、前記処理されたデータを受信し、前記処理されたデータを利用してコンピューティングプロセスを完了する、
    ように構成される、
    システム。
  10. 前記ウェアラブルデバイスは、スマートグラスである、請求項9に記載のシステム。
  11. 前記コンパニオンデバイスは、別のウェアラブルデバイス、モバイルデバイス、スマートフォン、タブレット、サーバ、ならびに、プロセッサ及びオペレーティングシステムを含むデバイスの中の少なくとも1つである、請求項9または請求項10に記載のシステム。
  12. 前記ウェアラブルデバイスによって、前記コンパニオンデバイスの周辺デバイスから取得されたデータを、コンパニオンデバイス周辺データとして前記ウェアラブルデバイス上でミラーリングすることは、前記ウェアラブルデバイスによって、前記コンパニオンデバイスから前記コンパニオンデバイス周辺データを受信することを含むことを備える、請求項9または請求項10に記載のシステム。
  13. 前記ランタイム環境は、前記コンパニオンデバイス上でバックグラウンドプロセスとして動作する仮想ランタイム環境であり、
    前記周辺デバイスと関連付けられた前記データのミラーは、前記仮想ランタイム環境に含まれる、
    請求項9または請求項10に記載のシステム。
  14. 前記周辺データは、慣性測定ユニット(IMU)データであり、
    前記コンピューティングプロセスは、ヘッドポーズ操作であり、
    前記ウェアラブルデバイスによって前記コンピューティングプロセスを完了することは、前記ヘッドポーズ操作に基づいて生成された結果を使用することを含む、
    請求項9または請求項10に記載のシステム。
  15. 前記周辺データは、画像データであり、
    前記コンピューティングプロセスは、ヘッドポーズ操作であり、
    前記ウェアラブルデバイスによって前記コンピューティングプロセスを完了することは、前記ヘッドポーズ操作に基づいて生成された結果を使用することを含む、
    請求項9または請求項10に記載のシステム。
  16. 前記周辺データは、画像データであり、
    前記コンピューティングプロセスは、アイトラッキング操作であり、
    前記ウェアラブルデバイスによって前記コンピューティングプロセスを完了することは、前記アイトラッキング操作に基づいて生成された結果を使用することを含む、
    請求項9または請求項10に記載のシステム。
  17. 前記ウェアラブルデバイスは、第1のソケットを含み、
    前記コンパニオンデバイスは、前記第1のソケットに通信可能に結合された第2のソケットを含み、
    周辺デバイスと関連付けられた前記データをミラーリングすることは、前記第1のソケットと前記第2のソケットとの間で前記周辺データを通信することを含む、
    請求項9または請求項10に記載のシステム。
  18. 方法であって、
    ウェアラブルデバイスをコンパニオンデバイスと通信可能に結合することと、
    前記コンパニオンデバイスによって、前記ウェアラブルデバイスの周辺デバイスと関連付けられたデータを、周辺データとしてミラーリングすることと、
    前記コンパニオンデバイスによって、前記ウェアラブルデバイスから前記周辺データを受信することと、
    前記コンパニオンデバイスによって、前記コンパニオンデバイスによるコンピューティングプロセスの完了と関連付けられた結果を生成することと、を備え、前記コンピューティングプロセスは、前記周辺データを使用するように構成され、前記方法はさらに、
    前記コンパニオンデバイスによって、前記コンピューティングプロセスの前記完了と関連付けられた前記結果を前記ウェアラブルデバイスに通信すること、
    を備える、方法。
  19. 前記ウェアラブルデバイスは、スマートグラスである、請求項18に記載の方法。
  20. 前記コンパニオンデバイスは、別のウェアラブルデバイス、モバイルデバイス、スマートフォン、タブレット、サーバ、ならびに、プロセッサ及びオペレーティングシステムを含むデバイスの少なくとも1つである、請求項18または請求項19に記載の方法。
  21. 前記コンパニオンデバイスによって、前記コンパニオンデバイスの周辺デバイスから取得されたデータを、コンパニオンデバイス周辺データとして前記ウェアラブルデバイス上でミラーリングすることは、前記コンパニオンデバイスによって、前記コンパニオンデバイス周辺データを前記コンパニオンデバイスに通信することを含むことをさらに備える、請求項18または請求項19に記載の方法。
  22. 前記周辺データは、慣性測定ユニット(IMU)データであり、
    前記コンピューティングプロセスは、ヘッドポーズ操作であり、
    前記ウェアラブルデバイスによって前記コンピューティングプロセスを完了することは、前記ヘッドポーズ操作に基づく前記結果を使用することを含む、
    請求項18または請求項19に記載の方法。
  23. 前記周辺データは、画像データであり、
    前記コンピューティングプロセスは、ヘッドポーズ操作であり、
    前記ウェアラブルデバイスによって前記コンピューティングプロセスを完了することは、前記ヘッドポーズ操作に基づく前記結果を使用することを含む、
    請求項18または請求項19に記載の方法。
  24. 前記周辺データは、画像データであり、
    前記コンピューティングプロセスは、アイトラッキング操作であり、
    前記ウェアラブルデバイスによって前記コンピューティングプロセスを完了することは、前記アイトラッキング操作に基づく前記結果を使用することを含む、
    請求項18または請求項19に記載の方法。
  25. 前記ウェアラブルデバイスは、第1のソケットを含み、
    前記コンパニオンデバイスは、前記第1のソケットに通信可能に結合された第2のソケットを含み、
    周辺デバイスと関連付けられた前記データをミラーリングすることは、前記第1のソケットと前記第2のソケットとの間で前記周辺データを通信することを含む、
    請求項18または請求項19に記載の方法。
  26. 前記コンパニオンデバイスは、仮想ランタイム環境を含み、
    前記周辺デバイスと関連付けられた前記データのミラーは、前記仮想ランタイム環境に含まれる、
    請求項18または請求項19に記載の方法。
  27. 令を含み、前記命令は、コンピューティングシステムの少なくとも1つのプロセッサによって実行されるとき、前記コンピューティングシステムに、請求項1または請求項18に記載の方法を実行させるように構成される、コンピュータプログラム
  28. 請求項1または請求項18に記載の方法を実行するための手段を備える装置。
  29. 装置であって、
    少なくとも1つのプロセッサと、
    コンピュータプログラムコードを含む少なくとも1つのメモリと、
    を備え、
    記コンピュータプログラムコードは、前記少なくとも1つのプロセッサによって実行されるとき、前記装置に請求項1または請求項18に記載の方法を少なくとも実行させるように構成された、
    装置。
JP2024563256A 2022-04-26 2023-04-26 スプリット計算アーキテクチャの周辺デバイス Active JP7841117B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US202263363592P 2022-04-26 2022-04-26
US63/363,592 2022-04-26
PCT/US2023/020049 WO2023212103A1 (en) 2022-04-26 2023-04-26 Peripheral devices in a split-compute architecture

Publications (2)

Publication Number Publication Date
JP2025515605A JP2025515605A (ja) 2025-05-20
JP7841117B2 true JP7841117B2 (ja) 2026-04-06

Family

ID=86387209

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2024563218A Pending JP2025516185A (ja) 2022-04-26 2023-04-26 ウェアラブルデバイス及びコンパニオンデバイスを含むスプリットコンピュートアーキテクチャ
JP2024563256A Active JP7841117B2 (ja) 2022-04-26 2023-04-26 スプリット計算アーキテクチャの周辺デバイス

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2024563218A Pending JP2025516185A (ja) 2022-04-26 2023-04-26 ウェアラブルデバイス及びコンパニオンデバイスを含むスプリットコンピュートアーキテクチャ

Country Status (6)

Country Link
US (5) US20250239008A1 (ja)
EP (3) EP4515361A1 (ja)
JP (2) JP2025516185A (ja)
KR (2) KR20240161829A (ja)
CN (2) CN119013662A (ja)
WO (6) WO2023211803A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20250071727A1 (en) * 2023-08-25 2025-02-27 Qualcomm Incorporated Radio frequency map aggregation
US12602105B2 (en) * 2024-02-01 2026-04-14 Google Llc Systems and methods for rendering augmented reality content

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017504107A (ja) 2014-01-03 2017-02-02 マカフィー, インコーポレイテッド ウェアラブルデバイスのリソースを節約する機構
JP2020522795A (ja) 2017-05-31 2020-07-30 マジック リープ, インコーポレイテッドMagic Leap,Inc. 眼追跡較正技術

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6931463B2 (en) * 2001-09-11 2005-08-16 International Business Machines Corporation Portable companion device only functioning when a wireless link established between the companion device and an electronic device and providing processed data to the electronic device
US10061910B2 (en) * 2015-06-09 2018-08-28 Intel Corporation Secure biometric data capture, processing and management for selectively prohibiting access to a data storage component from an application execution environment
US11204808B2 (en) * 2016-12-12 2021-12-21 Intel Corporation Offload computing protocol
US20190068983A1 (en) * 2017-08-25 2019-02-28 Advanced Micro Devices, Inc. Sending a Frame Difference or Raw Chunk Based on a Known Acknowledgement
US10475149B2 (en) * 2017-09-25 2019-11-12 Intel Corporation Policies and architecture to dynamically offload VR processing to HMD based on external cues
US10997943B2 (en) * 2018-03-02 2021-05-04 Facebook Technologies, Llc Portable compute case for storing and wirelessly communicating with an eyewear device
US10861215B2 (en) * 2018-04-30 2020-12-08 Qualcomm Incorporated Asynchronous time and space warp with determination of region of interest
US10446119B1 (en) * 2018-08-17 2019-10-15 Qualcomm Incorporated Method for supporting multiple layers in split rendering
US11302055B2 (en) * 2019-04-01 2022-04-12 Apple Inc. Distributed processing in computer generated reality system
US12142265B2 (en) * 2019-06-01 2024-11-12 Apple Inc. Synchronization of remote context data
US11580324B2 (en) * 2019-06-14 2023-02-14 Google Llc Systems and methods for detecting environmental occlusion in a wearable computing device display
US11423171B2 (en) * 2019-12-23 2022-08-23 Intel Corporation Protection of privacy and data on smart edge devices

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017504107A (ja) 2014-01-03 2017-02-02 マカフィー, インコーポレイテッド ウェアラブルデバイスのリソースを節約する機構
JP2020522795A (ja) 2017-05-31 2020-07-30 マジック リープ, インコーポレイテッドMagic Leap,Inc. 眼追跡較正技術

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Ed Burnette,初めてのAndroid,第4版,株式会社オライリー・ジャパン,2016年02月25日,p.17-21

Also Published As

Publication number Publication date
WO2023211803A1 (en) 2023-11-02
WO2023212111A1 (en) 2023-11-02
US20250028570A1 (en) 2025-01-23
WO2023211957A1 (en) 2023-11-02
US20250231806A1 (en) 2025-07-17
CN119032333A (zh) 2024-11-26
WO2023212108A1 (en) 2023-11-02
CN119013662A (zh) 2024-11-22
WO2023212112A1 (en) 2023-11-02
EP4515361A1 (en) 2025-03-05
JP2025516185A (ja) 2025-05-27
EP4515389A1 (en) 2025-03-05
KR20240161839A (ko) 2024-11-12
WO2023212103A1 (en) 2023-11-02
JP2025515605A (ja) 2025-05-20
US20250239008A1 (en) 2025-07-24
US20250232028A1 (en) 2025-07-17
EP4515365A1 (en) 2025-03-05
KR20240161829A (ko) 2024-11-12
US20250258707A1 (en) 2025-08-14

Similar Documents

Publication Publication Date Title
JP7841117B2 (ja) スプリット計算アーキテクチャの周辺デバイス
CN106687886A (zh) 三维混合现实视口
JP7672271B2 (ja) ヒューマン・インターフェイス・デバイスのレイテンシ決定
US12518490B2 (en) Wrist rotation manipulation of virtual objects
US12469234B2 (en) Robotic learning of assembly tasks using augmented reality
US20220375028A1 (en) Dynamic over-rendering in late-warping
US12352965B2 (en) AR system bending correction
US11961195B2 (en) Method and device for sketch-based placement of virtual objects
JP2018032440A (ja) 制御可能なヘッドセットコンピュータディスプレイ
US20240362743A1 (en) Late warping to minimize latency of moving objects
US20240029197A1 (en) Dynamic over-rendering in late-warping
US20240280355A1 (en) Joint bending estimation
WO2023250257A9 (en) Low latency hand-tracking in augmented reality systems
US12067693B2 (en) Late warping to minimize latency of moving objects
Bhowmik ILLIXR-A: an open source extended reality system for android platforms
WO2026054934A1 (en) Shared 3rd person mobile view
Al-Qasab The concept of visual future: smart glasses using Raspberry Pi
KR20260029952A (ko) 사용자 입력을 식별하기 위한 전자 장치, 방법, 및 비-일시적 컴퓨터 판독 가능 저장 매체

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20250121

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20250121

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20260123

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20260224

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20260325

R150 Certificate of patent or registration of utility model

Ref document number: 7841117

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150