Peripheral devices for split computing architectures
The split computing architecture addresses the limitations of wearable devices by offloading intensive tasks to companion devices, ensuring continuous operation and reduced power consumption through task distribution and data mirroring.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Filing Date
- 2023-04-26
- Publication Date
- 2026-04-06
AI Technical Summary
Wearable devices face challenges in fitting advanced functionality into a small form factor, particularly in continuous use scenarios, with issues such as limited battery life and thermal comfort due to computationally intensive operations like image rendering and localization services.
A split computing architecture is implemented, offloading computationally intensive tasks to a companion device, such as a smartphone or server, while the wearable device handles peripheral data generation and mirroring, using a shared runtime environment to reduce power consumption and thermal footprint.
The split computing architecture enables wearable devices to operate continuously by leveraging low-power processors, minimizing power consumption and thermal issues, while maintaining functionality through task offloading and data mirroring.
Smart Images

Figure 0007841117000001 
Figure 0007841117000002 
Figure 0007841117000003
Abstract
Description
Technical Field
[0001] Cross - Reference to Related Applications This application claims the benefit and priority of U.S. Provisional Patent Application No. 63 / 363,592, filed Apr. 26, 2022, entitled “SPLIT - COMPUTE ARCHITECTURE”, the disclosure of which is hereby incorporated by reference in its entirety.
[0002] This application also incorporates by reference herein the disclosures of related co - pending applications: PCT Application No. PCT / US2023 / 019563, filed Apr. 24, 2023; PCT Application No. PCT / US2023 / 019832, filed Apr. 25, 2023; “SPLIT - COMPUTE ARCHITECTURE” (Attorney Docket No. 0120 - 497WO1), filed Apr. 26, 2023; “PERIPHERAL DEVICES IN A SPLIT - COMPUTE ARCHITECTURE” (Attorney Docket No. 0120 - 498WO1), filed Apr. 26, 2023; “MULTIPLE APPLICATION RUNTIMES IN SPLIT - COMPUTE ARCHITECTURE” (Attorney Docket No. 0120 - 505WO1), filed Apr. 26, 2023; and “MACHINE LEARNING PROCESSING OFFLOAD IN A SPLIT - COMPUTE ARCHITECTURE” (Attorney Docket No. 0120 - 509WO1), filed Apr. 26, 2023.
[0003] Embodiments relate to wearable device processing architectures.
Background Art
[0004] Some devices (e.g., wearable devices) may have advanced display functions. For these devices, it can be a challenge to fit an electronic device with sufficient functionality into a small form factor. These problems are becoming increasingly difficult in applications where the device is expected to be worn throughout the day, such as in terms of accessibility.
[0005] Existing commercially available systems cannot support continuous use scenarios. For example, wearable devices (e.g., smart glasses, smartwatches, head-mounted displays) are intended for intermittent use and are built around phone-class system-on-a-chip (SoCs). These devices can only offer a few hours of battery life with the display on. Furthermore, the small size of head-mounted displays can lead to thermal comfort issues. [Overview of the project]
[0006] An exemplary embodiment includes a wearable device using a split computing architecture and a companion device. To conserve resources in the wearable device, the companion device can handle computing tasks that would otherwise be performed by the wearable device. The wearable device may include peripheral devices that generate peripheral device data to be stored in the wearable device's memory. The split computing architecture can be configured to facilitate mirroring of peripheral device data on the companion device and / or the wearable device.
[0007] In a general embodiment, a device, a system, a non-temporary computer-readable medium (containing computer-executable program code that can be run on a computer system), and / or a method may perform a process using the method, the method comprising: communicatively coupling a wearable device with a companion device; and mirroring data acquired from a peripheral device of the wearable device as peripheral data on the companion device, the mirroring comprising: acquiring peripheral data from the peripheral device by the wearable device; and communicating the peripheral data to the companion device by the wearable device; the method comprising: receiving the peripheral data and processing the peripheral data into processed data by the companion device; transmitting the processed data to the wearable device by the companion device; and receiving the processed data and using the processed data to complete a computing process by the wearable device.
[0008] In another general embodiment, a device, a system, a non-temporary computer-readable medium (containing computer-executable program code that can be run on a computer system), and / or a method may perform a process using the method, the method comprising: communicatively coupling a wearable device with a companion device; the companion device mirroring data associated with peripheral devices of the wearable device as peripheral data; the companion device receiving peripheral data from the wearable device; and the companion device generating results associated with the completion of a computing process by the companion device, the computing process being configured to use the peripheral data, and the method comprising the companion device communicating the results associated with the completion of the computing process to the wearable device.
[0009] Exemplary embodiments will be better understood from the embodiments for carrying out the invention described below herein and the accompanying drawings. Similar elements are represented by the same reference numerals and are shown for illustrative purposes only and are not limiting to the exemplary embodiments. [Brief explanation of the drawing]
[0010] [Figure 1] A block diagram of a high-level split computing architecture according to an exemplary embodiment is shown. [Figure 2] A block diagram of a high-level split computing architecture with a shared runtime environment, according to an exemplary embodiment, is shown. [Figure 3] A block diagram of a wearable device split computing architecture according to an exemplary embodiment is shown. [Figure 4] A block diagram of a high-level split computing architecture according to an exemplary embodiment is shown. [Figure 5] A block diagram of activity elements in a wearable device application according to an exemplary embodiment is shown. [Figure 6] A block diagram of a wearable device application in a wearable device runtime environment according to an exemplary embodiment is shown. [Figure 7] A block diagram of a system using a split computing architecture according to an exemplary embodiment is shown. [Figure 8] This block diagram shows a companion device runtime environment according to an exemplary embodiment. [Figure 9] This is a block diagram of a method for operating a split calculation system according to an exemplary embodiment. [Figure 10] This is a block diagram of a method for operating a split computing architecture system according to an exemplary embodiment. [Figure 11] This is a block diagram of a method for operating a companion device according to an exemplary embodiment. [Modes for carrying out the invention]
[0011] It should be noted that these drawings are intended to illustrate general characteristics of the methods and / or structures used in specific exemplary embodiments and to supplement the written descriptions provided below. However, these drawings are not to scale and may not accurately reflect the exact structural or performance characteristics of any given embodiment and should not be construed as defining or limiting the range of values or characteristics encompassed by the exemplary embodiments. For example, the arrangement of modules and / or structural elements may be reduced or exaggerated for clarity. The use of similar or identical reference numbers in various drawings is intended to indicate the existence of similar or identical elements or features.
[0012] Wearable devices can only offer a few hours of battery life with the display on. For example, computationally intensive operations such as image rendering, distortion correction, and localization services for wearable display optics may not always be efficiently performed by the low-power embedded systems implemented in wearable devices. Therefore, display architectures for thin-client wearable devices (e.g., smart glass) can have the opportunity to reduce the device's power consumption and thermal footprint by offloading computationally intensive operations (e.g., graphics operations) to companion devices (e.g., mobile devices, smartphones, servers, etc.).
[0013] Some wearable devices may have implementation constraints. For example, implementation constraints for smart glasses may include (1) the need for smart glasses to amplify critical services through wearable computing. This may include assistive technologies such as AR and visual recognition. For example, implementation constraints for smart glasses may include (2) the need for smart glasses to last all day on a single charge. For example, implementation constraints for smart glasses may include (3) the need for smart glasses to look and feel like real glasses. Wearable devices may include augmented reality (AR) devices and virtual reality (VR) devices. Wearable devices may include smart glasses, head-mounted devices, and / or head-worn devices. Wearable devices, head-mounted devices, and / or head-worn devices may be AR / VR devices. A fully standalone wearable device solution (e.g., smart glasses) with a mobile SoC capable of supporting desired features may not meet the power and industrial design constraints described above. On-device computing solutions that satisfy constraints (1), (2), and (3) may be difficult to achieve with current technology. Current technology is limited in that standalone solutions using mobile system-on-chip (SoC) technology that meet the functional requirements do not meet the power and industrial design constraints described above.
[0014] The split computing architecture can be used to solve problems associated with the implementation of existing wearable device technologies that satisfy the constraints described above. The split computing architecture may involve moving the application runtime environment to a remote computing endpoint, such as a smartphone, server, cloud, or desktop computer, often referred to as a companion device. In some embodiments, display content can be streamed back from the companion device to the wearable device. Continuing with the smart glasses example, since most of the computation and rendering is not performed in the smart glasses, the split computing architecture can enable the use of MCU-based systems with low-power processors and / or low-power microcontrollers. In some embodiments, a split computing architecture combined with a wearable device including an MCU can minimize power consumption and satisfy constraints (1), (2), and (3). New innovations in codecs and networking make it possible to sustain the required networking bandwidth in a low-power manner. In some embodiments, the wearable device can communicate with the companion device via a clearly defined protocol. This architecture can be platform-independent.
[0015] In some embodiments, peripheral devices such as an inertial measurement unit (IMU) and a camera sensor can be configured to generate peripheral data on the wearable device. The companion device can be configured to use the peripheral data in several computing processes. For example, an application running on the companion device can be configured to use the peripheral data generated by the wearable device's IMU. The application could request peripheral data from the wearable device. However, in exemplary embodiments, the peripheral data can be stored on the companion device (e.g., in its memory). In exemplary embodiments, the wearable device can be configured to communicate (e.g., stream) peripheral data whenever new peripheral data becomes available (e.g., automatically without being requested). In exemplary embodiments, the peripheral data of the wearable device can be mirrored on the companion device (e.g., at a duplicate memory location).
[0016] Figure 1 shows a block diagram of a high-level split computing architecture according to an exemplary embodiment. As shown in Figure 1, the split computing architecture may include a wearable device 105 containing peripheral data 135 and a companion device 110 containing peripheral data 140. In the exemplary embodiment, the wearable device 105 may be smart glasses, an augmented reality / virtual reality headset, a head-mounted display (HMD), a smartwatch, a smart ring, etc. As an example, Figure 1 shows the wearable device 105 as smart glasses 145. In the exemplary embodiment, the companion device 110 may be another wearable device, a mobile device, a smartphone, a tablet, a server, and a device including a processor and an operating system. As an example, Figure 1 shows the companion device 110 as a smartphone 150.
[0017] The wearable device 105 and the companion device 110 can be connected in a communicative manner. For example, the wearable device 105 and the companion device 110 can be connected in a communicative manner via a wired or wireless connection. In other words, the wearable device 105 and the companion device 110 may be endpoints of a bidirectional wired and / or wireless communication link. For example, the wearable device 105 and the companion device 110 can communicate audio streams and / or video streams via communication line 115. For example, the wearable device 105 and the companion device 110 can communicate data (e.g., IMU, camera, input, etc.) via communication line 120. For example, the wearable device 105 and the companion device 110 can communicate control streams via communication line 125. Communication lines 115, 120, and / or 125 may be collectively referred to as communication line 130. In some embodiments, the communication line 130 may be bidirectional.
[0018] In some embodiments, the companion device 110 can include a runtime environment to which the wearable device 105 can connect. In some embodiments, the wearable device 105 can stream data, such as IMU and camera images, to the runtime environment. In some embodiments, the runtime environment of the companion device 110 can be configured to perform tracking, perception, and / or application rendering and / or send back outputs, such as encoded video commands or rendering commands, to the wearable device 105 via a graphics application programming interface (API). In some embodiments, the runtime environment can be code or a software application and / or container running on the companion device 110. In some embodiments, the runtime environment can be software operating on the companion device 110 while the wearable device 105 is simultaneously and / or while the wearable device 105 and the companion device 110 are communicatively coupled. In some embodiments, the input is captured from the wearable device 105 and injected (e.g., communicated) into the runtime environment of the companion device 110.
[0019] In some embodiments, the runtime environment of the companion device 110 can be configured to perform tracking, perception, and application rendering and send back outputs, such as encoded video commands or rendering commands, to the wearable device 105 via a graphics application programming interface (API). In some embodiments, the input is captured from the wearable device 105 and injected (e.g., communicated) into the runtime environment of the companion device 110.
[0020] For example, in the absence of the companion device 110, the computing process would run entirely on the wearable device 105. The computing process may be any computing process associated with the functionality of the wearable device. For example, the computing process may be a computing process configured to display content (e.g., as images or videos) on the display of the wearable device 105. The computing process may be any computing process that includes computer instructions (e.g., code) stored in the memory of the wearable device 105, executed by the processor of the wearable device 105. The computer instructions (e.g., code) may be multiple tasks executed by the processor of the wearable device. In some embodiments, the task(s) can be implemented as a service. A service may be, for example, machine-to-machine interaction over a network. A service can be implemented as background processing. For example, a service can perform network transactions, play audio, perform I / O, interact with content providers, etc., from the background.
[0021] By including the companion device 110 (e.g., the runtime environment of the companion device 110), the power consumption and thermal footprint of the device can be reduced by offloading one or more of a plurality of tasks to the companion device 110. In an exemplary embodiment, a plurality of tasks can be fragmented. Fragmenting tasks can include methodologically and / or randomly allocating a plurality of tasks between the wearable device 105 and the companion device 110. For example, methodically allocating a plurality of tasks between the wearable device 105 and the companion device 110 may be based on resource usage. For example, if the amount of resources used to execute a task (or tasks) on the companion device 110 is more than executing the task (or tasks) on the wearable device 105 (note that executing a task includes performing computer operations), then the task (or tasks) can be executed on the wearable device 105.
[0022] For example, a task (or tasks) can include and / or use peripheral data (e.g., computer data, IMU data, high-resolution images, etc.) captured by a peripheral device of the wearable device 105. If communicating peripheral data uses more resources (e.g., the battery resources of the wearable device 105) than a task that includes processing data by the wearable device 105, the wearable device 105 would be able to allocate to complete the task. Otherwise, the companion device 110 would need to be allocated to complete the task. In this exemplary embodiment, both the wearable device 105 and the companion device 110 can execute a task (or tasks). In some embodiments, two or more companion devices are used to complete a process that includes a plurality of tasks.
[0023] When the companion device 110 processes a task, it may require data associated with peripheral devices of the wearable device 105. Instead of requesting and / or receiving data from the wearable device 105, in an exemplary embodiment, the companion device 110 can read data from peripheral data 140. In other words, in an exemplary embodiment, peripheral data 135 is mirrored on the companion device 110 as peripheral data 140, so an application running on the companion device 110 can read data associated with peripheral devices of the wearable device 105 from peripheral data 135. Furthermore, in an exemplary embodiment, peripheral data 140 is mirrored on the wearable device 105 as peripheral data 135, so an application running on the wearable device 105 can read data associated with peripheral devices of the companion device 110 from peripheral data 140.
[0024] In some embodiments, when the wearable device 105 is performing a task, the wearable device 105 may require data associated with the peripheral devices of the companion device 110. Instead of requesting and / or receiving data from the companion device 110, in an exemplary embodiment, the wearable device 105 can read data from peripheral data 140. In other words, in an exemplary embodiment, peripheral data 140 is mirrored on the wearable device 105 as peripheral data 135, so that an application running on the wearable device 105 can read data associated with the peripheral devices of the companion device 110 from peripheral data 140. In some exemplary embodiments, peripheral data (or data obtained from a peripheral device) may include IMU data, image data, audio data, microphone data, multi-channel microphone data, other camera data (e.g., depth data), ambient light sensor (ALS) data, etc.
[0025] Figure 2 shows a block diagram of a high-level split computing architecture with a shared runtime environment according to an exemplary embodiment. As shown in Figure 2, the wearable device 105 is communicably coupled to two or more companion devices 110-1, 110-2...110-n, respectively, via communication lines 130-1, 130-2...130-n. In some embodiments, the wearable device 105 may roam among various companion devices 110-1, 110-2, ...110-n to select the companion device 110-1, 110-2, ...110-n that provides the best experience at that time. The wearable device 105 can simultaneously connect to the runtimes of multiple companion devices 110-1, 110-2, ...110-n. Thus, the wearable device 105 can simultaneously connect to multiple runtime environments. Furthermore, although not shown in the diagram, peripheral data 135 can be simultaneously mirrored by multiple companion devices 110-1, 110-2, ..., 110-n.
[0026] For example, the runtime environment associated with companion device 110-1 can be configured to project content onto the display of wearable device 105, and the runtime environment associated with companion device 110-2 can be configured to access data sources (e.g., sensors) from wearable device 105, a database server, the internet, etc., for processing. Additionally or alternatively, companion devices 110-1, 110-2, ... 110-n can be communicatively coupled (e.g., wired or wirelessly) to share resources and / or data. For example, companion devices 110-1 and 110-2 can be communicatively coupled, allowing the runtime environment associated with companion device 110-1 to receive data from the runtime environment associated with companion device 110-2 for use when the runtime environment associated with companion device 110-2 generates an image (or frame) to project content onto the display of wearable device 105.
[0027] For example, companion devices 110-1 and 110-2 can be communicatively coupled (e.g., via a communication line 205), enabling the runtime environment associated with companion device 110-2 to share processing resources with the runtime environment associated with companion device 110-1. For example, the runtime environment associated with companion device 110-1 can be instructed to generate content (e.g., images, frames, maps, etc.) that is more efficiently generated by the runtime environment associated with companion device 110-2. For example, companion device 110-2 may include a map database and a map (e.g., image) generator. The runtime environment associated with companion device 110-1 can be instructed to generate content that includes maps. In this example, the runtime environment associated with companion device 110-1 can request maps from the runtime environment associated with companion device 110-2.
[0028] Continuing the above example, when it is determined that companion device 110-1 needs to perform a task(s), companion device 110-1 (or wearable device 105) may determine that two or more companion devices 110 can perform the task(s). For example, the task(s) may include generating content (e.g., images) to be displayed on wearable device 105. In this example, companion device 110-1 may be configured to generate the content. However, the data used to generate the content may be generated by companion device 110-2 and then communicated from companion device 110-2 to companion device 110-1 (e.g., via communication line 205). For example, companion device 110-2 may be a wearable smartwatch configured to sense the user's heart rate. Data representing the heart rate can be communicated from companion device 110-2 to companion device 110-1. Next, the companion device 110-1 can generate content using data representing heart rate, and the content can be communicated to the wearable device 105 for display on the wearable device 105's display.
[0029] Figure 3 shows a block diagram of a wearable device split computing architecture according to an exemplary embodiment. As shown in Figure 3, the wearable device split computing architecture may include a Hardware Abstraction Layer (HAL) 310 block. HAL 310 may be a layer of software configured to interface between the operating system (e.g., RTOS 340) and the hardware device at a general or abstract level rather than at the hardware level. In some embodiments, the abstraction layer allows the split computing architecture platform to be isolated. HAL 310 can be invoked from the operating system kernel. In some embodiments, HAL 310 may be a virtual HAL. A virtual HAL can minimize interpretation delays based on the architectural similarity between the guest and host platforms. Virtualization techniques help map virtual resources to physical resources and use native hardware for computations within the virtual HAL.
[0030] Therefore, as an example, HAL310 may include a connectivity 315 block, a codec 320 block, a graphics processing unit (GPU) 325 block, and a display 330 block, each configured to interface with a corresponding hardware device. For example, connectivity 315 can be configured to interface between an operating system (e.g., RTOS340) and Bluetooth® hardware, Wi-Fi hardware, ultra-wideband (UWB) hardware, 5G hardware, etc. Thus, the wearable device split computing architecture can be configured to utilize any connectivity hardware designed within the wearable device 105.
[0031] For example, codec 320 can be configured to interface between an operating system (e.g., RTOS340) and an encoder and / or decoder (e.g., a hardware-based encoder and / or decoder). Codec 320 standards may include, for example, H.265, H.264, MPEG, VP9, or machine learning-based codes. Codec 320 may be an image, video, and / or audio codec. Therefore, the wearable device split computing architecture can be configured to utilize any codec software and / or hardware designed within the wearable device 105. For example, GPU 325 can be configured to interface between an operating system (e.g., RTOS340) and GPU hardware (e.g., a GPU ASIC). Therefore, the wearable device split computing architecture can be configured to utilize any GPU designed within the wearable device 105 (e.g., to render images on a display system). For example, the display 330 can be configured to interface between an operating system (e.g., RTOS 340) and display hardware (e.g., a wearable device display). Thus, the wearable device split computing architecture can be configured to utilize any display (e.g., a display driver system) designed within the wearable device 105.
[0032] As shown in Figure 3, the wearable device split computing architecture may include an operating system (OS) abstraction layer (OSAL) 335. In some embodiments, the abstraction layer can make the split computing architecture platform independent. The OSAL 335 can be configured to provide an interface to common system functions provided by the OS of the wearable device 105. These OSAL 335s can simplify the development and porting of software (e.g., applications) to multiple OS and hardware platforms. In some embodiments, the OSAL 335 can operate as (or similarly to) an application programming interface (API). In some embodiments, the OSAL 335 may be platform-dependent.
[0033] OSAL335 may contain a block of a Real-Time Operating System (RTOS) 340. The RTOS 340 can be configured to handle multithreaded applications to meet real-time deadlines, for example. For example, the RTOS 340 can be configured to handle multiple tasks, each (or group of tasks) having a maximum completion time. Although an RTOS is shown, any OS may be used. For example, a High-Level Operating System (HLOS) can be used. In a split computing system, tasks make it possible to distribute these tasks (or groups of tasks) across computing devices. For example, content display operations for a wearable device 105 can be split between the wearable device 105 and a companion device 110 (e.g., a runtime environment associated with the companion device 110). In other words, the wearable device 105 (and / or companion device 110) can be configured to have the companion device 110 execute a portion (task or group of tasks) of a process (e.g., content display) (e.g., using a wearable device split computing architecture). Making a device perform a task may include sending instructions configured to initiate and / or trigger the processing of the task by the device and / or other devices. A computing process can be initiated by a user of a wearable device providing corresponding user input (e.g., gestures) to the wearable device. In some embodiments, a wearable device may initiate a computing process based on another computing process, based on the spatial location of the wearable device, etc.
[0034] As shown in Figure 3, the wearable device split computing architecture may include a peripheral driver 345 block. The peripheral driver 345 can be configured to interface between the OS and the peripheral devices. For example, the wearable device 105 may include multiple peripheral devices, such as cameras, microphones, speakers, inputs, and inertial measurement units (IMUs). Therefore, the peripheral driver 345 can be configured to interface between the RTOS 340 and the peripheral devices of the wearable device 105.
[0035] As shown in Figure 3, the wearable device split computing architecture may include a device client 305. The device client 305 can be configured to control communication between the wearable device 105 and the companion device 110. For example, the device client 305 can be configured to generate, initialize, and control a communication line 130 and communication over the communication line 130. The communication line 130 can operate as a socket (e.g., a network socket, TCP / IP network socket, etc.). The socket may be one endpoint of a bidirectional communication link between computer code (e.g., an application, program, software system, etc.) running on two computing devices. For example, a bidirectional handshake can be used in which both the client and the host indicate which functions each supports. The socket mechanism can be configured to provide inter-process communication (IPC) by establishing named communication contacts between two endpoints and / or between two endpoints and an intermediate device (e.g., an access point (AP)). The socket can be configured to provide a bidirectional first-in, first-out (FIFO) communication channel. A socket connecting to the network is created at each end of the communication. For example, each socket may have an address (or memory location). The address (or memory location) may be, for example, an IP address and a port number. Thus, the device client 305 can be configured to write to and read from a socket associated with the companion device 110 (or the runtime environment associated with the companion device 110). In some embodiments, the device client 305 may be platform-independent.
[0036] In some embodiments, a software development kit (SDK) can be associated with a wearable device 105 and a companion device 110. The SDK can be used when developing applications for the wearable device 105 and / or the companion device 110. The SDK can enable the implementation of a split computing architecture. Therefore, any wearable device 105 and / or companion device 110 that includes a split computing architecture can use applications developed using the SDK (regardless of the hardware and / or software platform). Thus, it is not necessary to develop an application and port it to each hardware and / or software platform that can be used as a wearable device 105 and / or companion device 110. The SDK can be included in (or have elements that can be included in) an application when the application is installed on the wearable device 105 and / or the companion device 110.
[0037] Figure 4 shows a block diagram of a high-level split computing architecture according to an exemplary embodiment. As shown in Figure 4, the system may include a wearable device 105 and a companion device 110. The system's split computing architecture may include a device client 305 block associated with the wearable device 105, and an application 410 block, an SDK 415 block, and a core 420 block associated with the companion device 110. As described above, the device client 305 can be configured to control communication between the wearable device 105 and the companion device 110. The core 420 can be configured to control communication between the wearable device 105 and the companion device 110. Thus, the core 420 can be configured to generate, initialize, and control at least a communication line 130 and communication over the communication line 130. The communication line 130 can operate, for example, as a socket (as described above).
[0038] In some embodiments, application 410 may include a file format for applications used on an OS that holds the application logic (e.g., an Android® Package Kit (APK)). In some embodiments, a wearable device application may support compilation and test services by linking with a stub (e.g., incomplete) version of the SDK. In some embodiments, at runtime, application 410 may load the wearable device SDK 415 directly from the wearable device runtime environment. In some embodiments, SDK 415 may provide developers with application programming interfaces (APIs) used to build wearable device applications. In some embodiments, an API versioning scheme may enable the introduction of new APIs while maintaining backward compatibility. In some embodiments, the wearable device runtime environment may be a collection of core services responsible for maintaining the wearable device execution environment. In some embodiments, a wearable device application may not directly interact with the core services. In some embodiments, one or more interactions may pass through the SDK. In some embodiments, the device client 305 may be a thin client running on the hardware of the wearable device 105.
[0039] For example, application 410 can be configured to generate (or help generate) content for display on wearable device 105. For example, the application can be configured to handle one task. For example, the application can generate content (e.g., as an image) and communicate the content to core 420 via SDK 415. Communicating content to core 420 via SDK 415 may be one of the features that allows application 410 to be developed for any hardware and / or software platform. For example, SDK 415 can be configured to communicate with application 410 when application 410 is being developed. SDK 415 can also be configured to communicate with core 420 associated with multiple hardware and / or software platforms. After receiving the content, core 420 can communicate the content to wearable device 105 via device client 305, for example, using a pre-established socket. Application 410 can be configured to generate content based on data received from wearable device 105. For example, the peripheral driver 345 can use the communication line 120 to detect data and communicate the data as peripheral data (e.g., IMU data) to the application module 630 via the device client 305 and core 420. In other words, peripheral data may be data that is collected and processed by the peripheral device via the peripheral driver 345 (e.g., compressed, packaged, parsed, filtered, denoised, etc.) and packaged for communication with the wearable device 105 and / or companion device 110 and for use by the wearable device 105 and / or companion device 110.
[0040] As described above, in some embodiments, the wearable device 105 can be configured to connect to multiple companion devices 110 at a given time. In some embodiments, different companion devices 110 can be configured to provide different services (e.g., using application 410). In some embodiments, as low-latency, high-bandwidth 5G connectivity becomes mainstream, the companion devices 110 can be configured to operate in the cloud (e.g., connect via the 5G standard).
[0041] Figure 5 shows a block diagram of activity elements of a wearable device application according to an exemplary embodiment. As shown in Figure 5, the application 410 may include a wearable activity 505 block, a wearable activity service 510 block, and a wearable activity host 515 block, and the core 420 may include a core service 520 block.
[0042] In some exemplary embodiments, the design of a wearable device application may resemble an activity model. Referring to Figure 3, the RTOS340 can be configured to handle one task, or multiple tasks, each (or group of tasks) having a maximum completion time. Thus, each activity may be a task that runs in parallel processes and has a time (or amount of time) to complete.
[0043] In exemplary embodiments, the activity can run in a service context. In some embodiments, running in a service context allows the application 410 to run concurrently with the application on the companion device 110. In some embodiments, the application can continue running and rendering when the display on the companion device 110 is turned off.
[0044] In some embodiments, one or more applications 410 may include a wearable activity service 510. The wearable activity service 510 can be configured to manifest a wearable activity 505, which can then be instantiated by the SDK 415. Thus, the wearable activity 505 can be instantiated at a later point in time. From a developer's perspective, the wearable activity service 510 may be boilerplate code that is not directly related to the logic of application 410. The wearable activity 505 may be code that is related to the logic of application 410. In some embodiments, the wearable activity 505 can be managed by an activity manager and can behave similarly to a standard OS activity counterpart.
[0045] In some embodiments, service binding can be used by the wearable device runtime environment to initiate and manage the lifecycle of application 410. Once the activity manager binds the service as part of the launch flow, SDK 415 can instantiate and attach a wearable activity host 515, for example, as a class that can be responsible for general activity state control. For example, during initialization, the wearable activity host 515 may request a surface from the window manager. This surface is then used as a backing store for a virtual display used to render the content of application 410.
[0046] Figure 6 shows a block diagram of a wearable device application in a wearable device runtime environment according to an exemplary embodiment. As shown in Figure 6, the companion device OS 605 can handle two or more application environments simultaneously. For example, the companion device OS 605 may include an application module 610. The application module 610 can be associated with standard OS application activities. Furthermore, the companion device OS 605 may include an application module 630 that operates in association with a wearable runtime environment 625. The wearable runtime environment 625 can be associated with a wearable device 105.
[0047] Activities 620 and 640 can be a single, centralized task that an application can perform. For example, some applications may include a user interface (UI). Therefore, Activities 620 and 640 can be configured to create a window for placing the UI. A window may be a full-screen window, a floating window embedded in another window, a hidden window, etc. Different types of windows can be associated with different Activities 620 and 640. Activities 620 and 640 can be configured for any task, and windows are just one example.
[0048] Activity managers 615 and 635 can be configured to communicate information about activities 620 and 640 and to interact with activities 620 and 640. Furthermore, activity managers 615 and 635 can be configured to communicate information about tasks, threads, services, and other processes and to interact with tasks, threads, services, and other processes.
[0049] In exemplary embodiments, the wearable runtime environment 625 may be a virtual runtime environment. A virtual runtime environment can be configured to run in the background of a computing device. Thus, the wearable runtime environment 625 may be a virtual runtime environment associated with the wearable device 105 and configured to run as a background process on the companion device 110. In other words, the wearable runtime environment 625 can operate without a user interface displayed on the companion device 110's display. For example, the wearable runtime environment 625 can operate in a hidden window on the companion device 110. Therefore, if the wearable runtime environment 625 is a virtual runtime environment, the user of the companion device 110 may not be able to visually control or I / O control the application using the wearable runtime environment 625.
[0050] In alternative or additional embodiments, application 410 and / or application module 630 may be virtual processes. Virtual processes can be configured to run in the background of a computing device. Thus, application 410 and / or application module 630 may be virtual processes associated with wearable device 105 and configured to run as background processes on companion device 110. In other words, application 410 and / or application module 630 can operate without a user interface shown on the companion device 110's display. For example, application 410 and / or application module 630 can operate in a hidden window on companion device 110. Therefore, if the process is a virtual runtime process, the user of companion device 110 may not have visual or I / O control over application 410 and / or application module 630.
[0051] Figure 7 shows a block diagram of a system using a split computing architecture according to an exemplary embodiment. As shown in Figure 7, the system includes a wearable device 105 and a companion device 110. The wearable device 105 may include a device client 305, a mirror module 705, and a peripheral driver 345. The mirror module 705 may include peripherals 715-1, 715-2, 715-3, ... and peripheral 715-n. Peripherals 715-1, 715-2, 715-3, ... and peripheral 715-n may each include peripheral data. The companion device 110 may include a core 420 and a wearable runtime environment 625. The wearable runtime environment 625 may include an application module 630 containing an application 410 and the mirror module 710. The mirror module 710 may include peripherals 720-1, 720-2, 720-3, ..., and peripheral 720-n. Each of the peripherals 720-1, 720-2, 720-3, ..., and peripheral 720-n may contain peripheral data. This exemplary embodiment can be used to illustrate the signal flow associated with the companion device 110 mirroring and using peripheral data.
[0052] In this exemplary embodiment, application 410 can be configured to generate, for example, content, head poses, rendered images, and the like. For example, generating a head pose (e.g., a head pose operation) may involve using images and / or IMU data captured by the wearable device 105. In this example, when a camera (e.g., a peripheral) captures an image as image data, the image data can be stored, for example, in peripheral device 715-1 as peripheral data. Furthermore, when the IMU detects data, the IMU data can be stored, for example, in peripheral device 715-2 as peripheral data.
[0053] In this embodiment, peripherals 715-1, 715-2, 715-3, ..., and peripheral 715-n can be mirrored on the companion device 110 as peripherals 720-1, 720-2, 720-3..., and peripheral 720-n, respectively. Mirroring, data mirroring, or mirrored data may include copying data in real time from a first location to a second location. Since the data is copied in real time, the data stored in the second location is an exact copy of the data in the first location. The first and second locations may be memory locations (e.g., addressable memory locations). In an exemplary embodiment, the first location may be the memory of the wearable device 105, and the second location may be the memory of the companion device 110 (e.g., memory associated with the wearable runtime environment 625). Continuing the above example, peripheral device 720-1 is a mirror (e.g., an exact copy) of peripheral device 715-1, and peripheral device 720-2 is a mirror (e.g., an exact copy) of peripheral device 715-2. Therefore, the peripheral data of peripheral device 720-1 is the same peripheral data of peripheral device 715-1, and the peripheral data of peripheral device 720-2 is the same peripheral data of peripheral device 715-2.
[0054] Therefore, application 410 can be configured to use peripheral data from peripheral device 720-1 and peripheral data from peripheral device 720-2 to generate, for example, content, head poses, rendered images, etc. The generated content, head poses, rendered images, etc. should be substantially the same if the process is performed by the wearable device 105. Thus, resources of the wearable device 105 are saved.
[0055] Figure 8 is a block diagram showing a companion device runtime environment 625 according to an exemplary embodiment. The runtime environment 625 can be included in the memory of the companion device 110. The memory can include both volatile memory (e.g., RAM) and non-volatile memory such as one or more ROMs, disk drives, or solid-state drives. In the exemplary embodiment, the runtime environment 625 can include a module (e.g., software code, computer instructions, etc.) configured to generate head pause data. The head pause data can be generated based on image data and / or IMU data.
[0056] In some embodiments, one or more components of the runtime environment 625 can be associated with a processor configured to process instructions stored in memory. Examples of such instructions shown in Figure 8 include a mirror module 710, an IMU manager 810, a neural network manager 820, and a visual positioning system manager 830. Furthermore, as shown in Figure 8, the runtime environment 625 can be configured to store various types of data, which will be described with respect to each module that uses such data.
[0057] In this example, the mirror module 710 includes an image peripheral 805-1 containing peripheral data which is a mirror of the peripheral data on the wearable device 105, and an IMU peripheral 805-2, respectively. The IMU manager 810 can be configured to acquire IMU data 850. In some embodiments, the IMU manager 810 can be configured to acquire IMU data 850 by reading peripheral data from the IMU peripheral 805-2. As shown in Figure 8, the IMU manager 810 may include an error compensation manager 812 and an integration manager 814.
[0058] The error compensation manager 812 can be configured to store IMU calibration parameters. The error compensation manager 812 can be further configured, for example, to receive IMU output (IMU data 850) from the IMU manager 810 and compensate the IMU output for errors using the IMU calibration parameter values. The error compensation manager 812 can also be configured to generate IMU data 850 after performing error compensation.
[0059] The integration manager 814 can be configured to perform integral operations (e.g., summing time-dependent values) on the IMU data 850. For example, rotational velocity data 851 can be integrated over time to generate orientation. Furthermore, acceleration data 852 can be integrated twice over time to generate position. Thus, the integration manager 814 can be configured to generate 6DoF attitude (position and orientation) from IMU outputs, such as rotational velocity data 851 and acceleration data 852.
[0060] IMU data 850 can represent gyro and accelerometer measurements, rotational velocity data 851, and acceleration data 852 in a world frame (as opposed to a local frame, e.g., an IMU frame) compensated for errors (maybe multiple errors) using IMU calibration parameter values. Furthermore, IMU data 850 includes 6DoF attitude and motion data, position data 854, orientation data 855, and velocity data 856 derived from gyro and accelerometer measurements. Finally, in some embodiments, IMU data 850 may include IMU temperature data 853, which may indicate further errors in the rotational velocity data 851 and acceleration data 852 (for correction by the error compensation manager 812).
[0061] The neural network manager 820 can be configured to take rotational velocity data 851 and acceleration data 852 as input and generate neural network data 840 including first position data 842, first orientation data 844, and first velocity data 846. In some embodiments, the input rotational velocity data 851 and acceleration data 852 can be generated by an error compensation manager 812 acting on the raw IMU output values with an error compensated, for example, by IMU calibration parameter values. As shown in Figure 8, the neural network manager 820 may include a neural network training manager 822.
[0062] The neural network training manager 822 can be configured to receive training data 848 and generate neural network data 840, which includes data on layers and cost functions and values. In some embodiments, the training data 848 may include motion data generated from measurements of a user wearing a wearable device 105 and moving, for example, their head and / or other parts of their body, as well as ground truth 6DoF posture data generated from those measurements. In some embodiments, the training data 848 may include measured rotational velocity and acceleration from motion, combined with measured 6DoF posture and velocity.
[0063] Furthermore, in some embodiments, the neural network manager 820 can use historical data from the IMU to generate first position data 842, first orientation data 844, and first velocity data 846. For example, the historical data can be used to extend the training data 848 with previous rotational velocity, acceleration, and temperature for the resulting 6DoF attitude and motion results, and thus to further improve the neural network. In some embodiments, the neural network represented by the neural network manager 820 is a convolutional neural network, and the layers are convolutional layers.
[0064] The Visual Positioning System (VPS) manager 830 can be configured to receive an image as input and generate VPS data 860 including second position data 862 and second orientation data 864. In some embodiments, the VPS data may include second velocity data 866, such as 6DoF pose based on the image. The VPS manager 830 can be configured to acquire the image used to generate the VPS data 860. In some embodiments, the VPS manager 830 can be configured to acquire the image by reading peripheral data from an image peripheral 805-1. The image or image data stored in the image peripheral 805-1 may be a mirror image of an image captured by a world-facing camera on the wearable device 105.
[0065] In some embodiments, the accuracy level of the VPS manager 830 when generating the VPS data 860 may depend on the environment surrounding the location. For example, the accuracy requirement for indoor locations may be on the order of 1 to 10 cm, while the accuracy requirement for outdoor locations may be on the order of 1 to 10 m.
[0066] The head pose of the wearable device 105 can be generated by the companion device 110 based on peripheral data from the image peripheral 805-1 and / or the IMU peripheral 805-2. For example, the head pose of the wearable device 105 can be generated by the companion device 110 based on neural network data 840. For example, the head pose of the wearable device 105 can be generated by the companion device 110 based on VPS data 860. For example, the head pose of the wearable device 105 can be generated by the companion device 110 based on IMU data 850. For example, the head pose of the wearable device 105 can be generated by the companion device 110 based on neural network data 840, VPS data 860, and / or IMU data 850. The generated head pose should be substantially the same if the process is performed by the wearable device 105. Thus, resources of the wearable device 105 are saved. Furthermore, due to the split calculation system and the mirrored peripheral data of the image peripheral 805-1 and / or IMU peripheral 805-2, the head pose can be generated within the maximum completion time.
[0067] Example 1. Figure 9 is a block diagram of a method for operating a split computing system, comprising a wearable device and a companion device communicatively coupled to the wearable device, according to an exemplary embodiment. As shown in Figure 9, in step S905, the wearable device is communicatively coupled to the companion device. The coupling can be triggered by either the wearable device or the companion device, or in response to a user command from a user of the wearable device or the companion device. The wearable device can be “communicatively coupled” to the companion device if it is capable of transmitting and / or receiving at least partially one or more commands and / or data to the companion device, for example, via one or more wired and / or wireless communication links. In some embodiments, a two-way handshake can be used in which both the client and the host indicate which functions each supports. In step S910, the wearable device mirrors the data acquired from the peripheral device as peripheral data on the companion device, the mirroring comprising the wearable device acquiring the peripheral data from the peripheral device and the wearable device communicating the peripheral data to the companion device. Here, the term “peripheral device” can be used to refer to an internal or external device of the wearable device that is directly connected to the wearable device, such as an input / output device of the wearable device, such as an inertial measurement unit (IMU). Here, the term “mirroring” can be used to refer to a real-time operation of copying the peripheral data to the companion device as an exact copy. In step S915, the companion device receives the peripheral data and processes the peripheral data into processed data.The mirrored peripheral data may relate to multiple tasks, each (or group of tasks) having a maximum completion time. Here, the multiple tasks or a portion of the multiple tasks can be executed by the companion device when the peripheral data is mirrored to the companion device. The results of the completed tasks can then be returned to the wearable device. In step S920, the companion device transmits the processed data to the wearable device. In step S925, the wearable device receives the processed data and uses the processed data to complete a computing process. Here, the computing process can be started before or when the peripheral data is transmitted to the user, for example, when the wearable device is coupled with the companion device.
[0068] Example 2. The method according to Example 1, further comprising the wearable device mirroring data acquired from a peripheral device of the companion device as companion device peripheral data on the wearable device, wherein the wearable device receives the companion device peripheral data from the companion device.
[0069] Example 3. The method according to Example 1, wherein the peripheral data may be inertial measurement unit (IMU) data, the computing process may be a head pose operation, and the completion of the computing process by the wearable device may include using the results based on the head pose operation.
[0070] Example 4. The method according to Example 1, wherein the peripheral data may be image data, the computing process may be a head pose operation, and the completion of the computing process by the wearable device may include using the results based on the head pose operation.
[0071] Example 5. The method according to Example 1, wherein the peripheral data may be image data, the computing process may be an eye-tracking operation, and the completion of the computing process by the wearable device may include using the results based on the eye-tracking operation.
[0072] Example 6. The method according to Example 1, wherein the wearable device may include a first socket, and the companion device may include a second socket communicatively coupled to the first socket, and mirroring the data associated with a peripheral device may include communicating the peripheral data between the first socket and the second socket.
[0073] Example 7. The method according to Example 1, wherein the wearable device is smart glasses.
[0074] Example 8. The method according to Example 1, wherein the companion device may be at least one of another wearable device, mobile device, smartphone, tablet, server, and device including a processor and operating system.
[0075] Example 9. Figure 10 is a block diagram of a method for operating a split computing architecture according to an exemplary embodiment. The system may include a wearable device which includes a device client, a hardware application layer, an operating system abstraction layer, and at least one peripheral device driver. The system may include a companion device which includes a runtime environment associated with the wearable device. As shown in Figure 10, in step S1005, the data associated with the peripheral device is mirrored on the companion device as peripheral data. In step S1010, the wearable device detects the peripheral data. In step S1015, the wearable device communicates the peripheral data to the companion device. In step S1020, the companion device receives the peripheral device. In step S1025, the companion device generates a result associated with the completion of a computing process by the companion device, and the computing process is configured to use the peripheral data. In step S1030, the wearable device receives the result associated with the completion of the computing process. In step S1035, and based on the result associated with the completion of the computing process, the wearable device completes the computing process.
[0076] Example 10. The method according to Example 9, wherein the wearable device may be smart glasses.
[0077] Example 11. The method according to Example 9, wherein the companion device may be at least one of another wearable device, mobile device, smartphone, tablet, server, and device including a processor and operating system.
[0078] Example 12. The method according to Example 9, wherein the runtime environment may be a virtual runtime environment operating in the background of the companion device, and a mirror of the data associated with the peripheral device may be included in the virtual runtime environment.
[0079] Example 13. The method according to Example 9, wherein the peripheral data may be inertial measurement unit (IMU) data, the computing process may be a head pose operation, and the completion of the computing process by the wearable device may include using the results based on the head pose operation.
[0080] Example 14. The method according to Example 9, wherein the peripheral data may be image data, the computing process may be a head pose operation, and the completion of the computing process by the wearable device may include using the results based on the head pose operation.
[0081] Example 15. The method according to Example 9, wherein the peripheral data may be image data, the computing process may be an eye-tracking operation, and the completion of the computing process by the wearable device may include using the results based on the eye-tracking operation.
[0082] Example 16. The method according to Example 9, wherein the wearable device may include a first socket, and the companion device may include a second socket communicatively coupled to the first socket, and mirroring the data associated with a peripheral device may include communicating the peripheral data between the first socket and the second socket.
[0083] Example 17. Figure 11 is a block diagram of a method for operating a companion according to an exemplary embodiment. As shown in Figure 11, in step S1105, a wearable device is communicatively coupled to a companion device. In step S1110, the companion device mirrors data associated with the peripheral devices of the wearable device as peripheral data. In step S1115, the companion device receives the peripheral data from the wearable device. In step S1120, the companion device generates a result associated with the completion of a computing process by the companion device, and the computing process is configured to use the peripheral data. In step S1125, the companion device communicates the result associated with the completion of the computing process to the wearable device.
[0084] Example 18. The method according to Example 17, wherein the wearable device may be smart glasses.
[0085] Example 19. The method according to Example 17, wherein the companion device may be at least one of another wearable device, mobile device, smartphone, tablet, server, and device including a processor and operating system.
[0086] Example 20. The method according to Example 17, further comprising the companion device mirroring data acquired from a peripheral device of the companion device as companion device peripheral data on the wearable device, wherein the companion device communicates the companion device peripheral data to the companion device.
[0087] Example 21. The method according to Example 17, wherein the peripheral data may be inertial measurement unit (IMU) data, the computing process may be a head pose operation, and the completion of the computing process by the wearable device may include using the results based on the head pose operation.
[0088] Example 22. The method according to Example 17, wherein the peripheral data may be image data, the computing process may be a head pose operation, and the completion of the computing process by the wearable device may include using the results based on the head pose operation.
[0089] Example 23. The method according to Example 17, wherein the peripheral data may be image data, the computing process may be an eye-tracking operation, and the completion of the computing process by the wearable device may include using the results based on the eye-tracking operation.
[0090] Example 24. The method according to Example 17, wherein the wearable device may include a first socket, and the companion device may include a second socket communicatively coupled to the first socket, and mirroring the data associated with a peripheral device may include communicating the peripheral data between the first socket and the second socket.
[0091] Example 25. The method according to Example 17, wherein the companion device may include a virtual runtime environment, and the mirror associated with the peripheral device may include the virtual runtime environment.
[0092] Example 26. The method may include any combination of one or more of Examples 1 to 25.
[0093] Example 27. A non-temporary computer-readable storage medium, the non-temporary computer-readable storage medium comprising instructions stored in the non-temporary computer-readable storage medium, wherein, when executed by at least one processor, the instructions are configured to cause a computing system to perform the method described in any of Examples 1 to 26.
[0094] Example 28. An apparatus comprising means for carrying out the method described in any of Examples 1 to 26.
[0095] Example 29. An apparatus comprising at least one processor and at least one memory containing computer program code, wherein the at least one memory and the computer program code are configured to cause the apparatus to perform at least one of the methods described in any of Examples 1 to 26 using the at least one processor.
[0096] An exemplary embodiment may include a non-temporary computer-readable storage medium containing instructions, which, when executed by at least one processor, cause a computing system to perform the method described in any of the above-described methods. An exemplary embodiment may include a device that includes means for performing any of the above-described methods. An exemplary embodiment may include a device that includes at least one processor and at least one memory containing computer program code, wherein the at least one memory and the computer program code are configured to cause at least one processor to perform at least one of the above-described methods.
[0097] Various embodiments of the systems and technologies described herein may be implemented in digital electronic circuits, integrated circuits, specially designed ASICs (application-specific integrated circuits), computer hardware, firmware, software, and / or combinations thereof. These various embodiments may include implementations in one or more computer programs executable and / or interpretable on a programmable system comprising at least one programmable processor, at least one input device, and at least one output device, which may be specialized or general-purpose, coupled to receive data and instructions from and transmit data and instructions to a storage system.
[0098] These computer programs (also known as programs, software, software applications, or code) include machine instructions for a programmable processor and may be implemented in high-level procedural and / or object-oriented programming languages and / or assembly / machine languages. As used herein, the terms “machine-readable medium” and “computer-readable medium” refer to any computer program product, apparatus and / or device (e.g., magnetic disks, optical disks, memory, programmable logic circuits (PLDs)) used to provide machine instructions and / or data to a programmable processor that includes a machine-readable medium that receives machine instructions as machine-readable signals. The term “machine-readable signals” refers to any signals used to provide machine instructions and / or data to a programmable processor.
[0099] To provide user interaction, the systems and technologies described herein can be implemented on a computer having a display device (LED (light-emitting diode), OLED (organic LED), or LCD (liquid crystal display) monitor / screen) for displaying information to the user, as well as a keyboard and pointing device (e.g., mouse or trackball) by which the user can provide input to the computer. Other types of devices can also be used to provide user interaction; for example, the feedback provided to the user may be any form of sensory feedback (e.g., visual feedback, auditory feedback, or haptic feedback), and input from the user may be received in any form, including acoustic, spoken language, or haptic input.
[0100] The systems and technologies described herein can be implemented in a computing system that includes backend components (e.g., as a data server), middleware components (e.g., an application server), or frontend components (e.g., a client computer having a graphical user interface or web browser through which a user can interact with the implementation of the systems and technologies described herein), or in a combination of such backend, middleware, or frontend components. The components of the system can be interconnected by digital data communications of any form or medium (e.g., communication networks). Examples of communication networks include local area networks ("LANs"), wide area networks ("WANs"), and the Internet.
[0101] A computing system can include clients and servers. Clients and servers are generally far apart from each other and typically interact through a communication network. The client-server relationship arises from computer programs that run on each computer and have a client-server relationship with each other.
[0102] Several embodiments have been described. Nevertheless, it is understood that various modifications can be made without departing from the spirit and scope of this specification.
[0103] Furthermore, the logic flow shown in the figure does not require a specific sequence, i.e., a sequential order, to achieve the desired result. Additionally, other steps may be added to the described flow, or steps may be removed from the described flow, and other components may be added to the described system, or other components may be removed from the described system. Therefore, other embodiments are within the scope of the following claims.
[0104] While specific features of the embodiments described herein have been illustrated, numerous modifications, substitutions, alterations, and equivalents will be conceivable to those skilled in the art. It should be understood that the appended claims are intended to encompass all such modifications and alterations that fall within the scope of the embodiments. They are presented only as examples and not as limitations, and it should be understood that various modifications in form and detail are possible. Any part of the apparatus and / or method described herein may be combined in any combination, except for mutually exclusive combinations. The embodiments described herein may include various combinations and / or partial combinations of the functions, components, and / or features of the different embodiments described.
[0105] The exemplary embodiments may include various modifications and alternative forms, which are shown as examples in the drawings and described in detail herein. However, it should be understood that the exemplary embodiments are not intended to limit the embodiments to any particular form disclosed, but rather should include all modifications, equivalents, and alternative forms that fall within the scope of the claims. Similar numbers refer to similar components throughout the description of the figures.
[0106] Some of the exemplary embodiments described above are explained as processes or methods shown as flowcharts. While flowcharts describe operations as sequential, many operations may occur in parallel, together, or simultaneously. The order of operations may also be changed. A process may terminate when its operations are completed, but it may have additional steps not shown in the diagram. A process can correspond to a method, function, procedure, subroutine, subprogram, etc.
[0107] Some of these are illustrated by flowcharts. The methods described above can be implemented by hardware, software, firmware, middleware, microcode, hardware description languages, or any combination thereof. When implemented in software, firmware, middleware, or microcode, the program code or code segment for performing the required task may be stored in a machine-readable or computer-readable medium such as a storage medium. A processor(s) may perform the required task.
[0108] The specific structural and functional details disclosed herein are provided solely for illustrative purposes to illustrate exemplary embodiments. However, exemplary embodiments can be embodied in many alternative forms and should not be construed as being limited only to the embodiments described herein.
[0109] The terms, first, second, etc., may be used herein to describe various elements, but it should be understood that these elements should not be limited by these terms. These terms are used solely to distinguish one element from another. For example, without departing from the scope of the exemplary embodiments, a first element may be referred to as a second element, and similarly, a second element may be referred to as a first element. As used herein, the terms, and / or include any combination of one or more of the associated items described herein.
[0110] When it is mentioned that an element is connected to or joined to another element, it should be understood that the element may be directly connected to or joined to the other element, or there may be an intermediary element. In contrast, when it is mentioned that an element is directly connected to or joined to another element, there is no intermediary element. Other words used to describe the relationship between elements should be interpreted similarly (e.g., between vs. directly between, adjacent vs. directly adjacent, etc.).
[0111] The terminology used herein is for the purpose of describing specific embodiments and is not intended to limit exemplary embodiments. Where used herein, the singular forms a, an, and the are also intended to include the plural forms unless the context otherwise explicitly indicates. It should be further understood that the terms comprises, comprising, includes, and / or including, when used herein, specify the presence of the described feature, integer, step, operation, element, and / or component, but do not exclude the presence or addition of one or more other features, components, steps, operations, elements, components, and / or groups thereof.
[0112] Furthermore, please note that in some alternative embodiments, the functions / actions shown may occur in a different order than that shown in the diagrams. For example, two diagrams shown consecutively may actually be executed simultaneously, or they may be executed in reverse order depending on the functions / actions involved.
[0113] Unless otherwise defined, all terms used herein (including technical and scientific terms) have the same meaning as those generally understood by those skilled in the art to which the exemplary embodiments belong. For example, terms such as those defined in commonly used dictionaries should be interpreted as having the same meaning as their meanings in the context of the relevant art, and should not be interpreted in an idealized or overly formal sense unless expressly defined herein.
[0114] The exemplary embodiments described above and the corresponding embodiments for carrying out the inventions are presented with respect to software, or to algorithms and symbolic representations of operations on data bits in computer memory. These descriptions and representations are intended to effectively convey to those skilled in the art the essence of their research. Where the term is used herein and in general usage, an algorithm is considered to be a self-consistent sequence of steps leading to a desired result. A step is one which requires the physical manipulation of a physical quantity. Usually, but not always, these quantities take the form of optical, electrical, or magnetic signals that are stored, transferred, combined, compared, and otherwise operable. For reasons of general use, it has sometimes proven convenient to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, etc.
[0115] In the exemplary embodiments described above, references to symbolic representations of actions and operations (e.g., in the form of flowcharts) that may be implemented as program modules or functional processes include routines, programs, objects, components, data structures, etc., that perform specific tasks or implement specific abstract data types, which may be described and / or implemented using existing hardware in existing structural elements. Such existing hardware may include one or more central processing units (CPUs), digital signal processors (DSPs), application-specific integrated circuits, field-programmable gate array (FPGA) computers, etc.
[0116] However, it should be recognized that all these terms and similar terms should be associated with the appropriate physical quantities and are merely labels for convenience applied to those quantities. Unless otherwise specified or as is evident from the description, terms such as decisions to process, compute, calculate, or display refer to the actions and processes of a computer system or similar electronic computing device, which manipulates data represented as physical quantities, electronic quantities, in the computer system's registers and memory and converts them into other data similarly represented as physical quantities in computer system memory or registers or other such information storage devices, transmission devices, or display devices.
[0117] It should also be noted that the software implementations of exemplary embodiments are typically encoded on some form of non-temporary program storage medium or implemented via some type of transmission medium. The program storage medium may be magnetic (e.g., floppy disk or hard drive) or optical (e.g., compact disk read-only memory, i.e., CD-ROM), and may be read-only or random-access. Similarly, the transmission medium may be twisted wire pairs, coaxial cables, optical fibers, or any other suitable transmission medium known in the art. The exemplary embodiments are not limited to these aspects of any given embodiment.
[0118] Finally, while the attached claims describe specific combinations of features described herein, it should be noted that the scope of this disclosure is not limited to the specific combinations claimed below, but rather extends to encompass any combination of features of the embodiments disclosed herein, regardless of whether the specific combination is explicitly enumerated in the attached claims at this point.
Claims
1. It is a method, Connecting a wearable device to a companion device in a communicative manner, The wearable device includes mirroring data acquired from peripheral devices of the wearable device as peripheral data on the companion device, and the mirroring is performed by: The wearable device acquires the peripheral data from the peripheral device, The wearable device communicates the surrounding data to the companion device, The method further includes, The companion device receives the peripheral data and processes the peripheral data into processed data. The companion device transmits the processed data to the wearable device, The wearable device receives the processed data and uses the processed data to complete the computing process. A method that includes [a certain feature].
2. The method according to claim 1, further comprising the wearable device mirroring data acquired from a peripheral device of the companion device as companion device peripheral data on the wearable device, wherein the wearable device receives the companion device peripheral data from the companion device.
3. The aforementioned peripheral data is inertial measurement unit (IMU) data. The computing process described above is a head pose operation, Completing the computing process by the wearable device includes using the results of the head pose operation. The method according to claim 1 or claim 2.
4. The aforementioned peripheral data is image data. The computing process described above is a head pose operation, Completing the computing process by the wearable device includes using the results of the head pose operation. The method according to claim 1 or claim 2.
5. The aforementioned peripheral data is image data. The computing process described above is an eye-tracking operation, Completing the computing process by the wearable device includes using the results of the eye-tracking operation. The method according to claim 1 or claim 2.
6. The wearable device includes a first socket, The companion device includes a second socket that is communicatively coupled to the first socket. Mirroring the data associated with a peripheral device includes communicating the peripheral data between the first socket and the second socket. The method according to claim 1 or claim 2.
7. The method according to claim 1 or 2, wherein the wearable device is smart glasses.
8. The method according to claim 1 or 2, wherein the companion device is at least one of another wearable device, mobile device, smartphone, tablet, server, and device including a processor and operating system.
9. It is a system, Wearable devices and, Companion devices and Equipped with, The wearable device is Device client and Hardware abstraction layer, The abstraction layer of the operating system, At least one driver for each of at least one peripheral device, Includes, The companion device includes a runtime environment associated with the wearable device. The aforementioned system, The data associated with the aforementioned at least one peripheral device is configured to be mirrored on the companion device as peripheral data, and mirroring is performed by The wearable device acquires the peripheral data from the peripheral device, The wearable device communicates the surrounding data to the companion device, The system includes, The companion device receives the peripheral data and processes the peripheral data into processed data. The companion device transmits the processed data to the wearable device. The wearable device receives the processed data and uses the processed data to complete the computing process. It is configured in such a way. system.
10. The system according to claim 9, wherein the wearable device is smart glasses.
11. The system according to claim 9 or 10, wherein the companion device is at least one of another wearable device, mobile device, smartphone, tablet, server, and device including a processor and operating system.
12. The system according to claim 9 or 10, wherein the wearable device mirrors data acquired from a peripheral device of the companion device as companion device peripheral data on the wearable device, and the wearable device receives the companion device peripheral data from the companion device.
13. The runtime environment is a virtual runtime environment that operates as a background process on the companion device. The mirror of the data associated with the aforementioned peripheral device is included in the virtual runtime environment. The system according to claim 9 or claim 10.
14. The aforementioned peripheral data is inertial measurement unit (IMU) data. The computing process described above is a head pose operation, Completing the computing process by the wearable device includes using the results generated based on the head pose operation. The system according to claim 9 or claim 10.
15. The aforementioned peripheral data is image data. The computing process described above is a head pose operation, Completing the computing process by the wearable device includes using the results generated based on the head pose operation. The system according to claim 9 or claim 10.
16. The aforementioned peripheral data is image data. The computing process described above is an eye-tracking operation, Completing the computing process by the wearable device includes using the results generated based on the eye-tracking operation. The system according to claim 9 or claim 10.
17. The wearable device includes a first socket, The companion device includes a second socket that is communicatively coupled to the first socket. Mirroring the data associated with a peripheral device includes communicating the peripheral data between the first socket and the second socket. The system according to claim 9 or claim 10.
18. It is a method, Connecting a wearable device to a companion device in a communicative manner, The companion device mirrors the data associated with the wearable device's peripheral devices as peripheral data, The companion device receives the surrounding data from the wearable device, The companion device generates results associated with the completion of a computing process by the companion device, the computing process is configured to use the peripheral data, and the method further comprises: The companion device communicates the results associated with the completion of the computing process to the wearable device. A method that includes [a certain feature].
19. The method according to claim 18, wherein the wearable device is smart glasses.
20. The method according to claim 18 or 19, wherein the companion device is at least one of another wearable device, mobile device, smartphone, tablet, server, and device including a processor and operating system.
21. The method according to claim 18 or 19, further comprising the companion device mirroring data acquired from a peripheral device of the companion device as companion device peripheral data on the wearable device, wherein the companion device communicates the companion device peripheral data to the companion device.
22. The aforementioned peripheral data is inertial measurement unit (IMU) data. The computing process described above is a head pose operation, Completing the computing process by the wearable device includes using the results based on the head pose operation. The method according to claim 18 or claim 19.
23. The aforementioned peripheral data is image data. The computing process described above is a head pose operation, Completing the computing process by the wearable device includes using the results based on the head pose operation. The method according to claim 18 or claim 19.
24. The aforementioned peripheral data is image data. The computing process described above is an eye-tracking operation, Completing the computing process by the wearable device includes using the results based on the eye-tracking operation. The method according to claim 18 or claim 19.
25. The wearable device includes a first socket, The companion device includes a second socket that is communicatively coupled to the first socket. Mirroring the data associated with a peripheral device includes communicating the peripheral data between the first socket and the second socket. The method according to claim 18 or claim 19.
26. The companion device includes a virtual runtime environment, The mirror of the data associated with the aforementioned peripheral device is included in the virtual runtime environment. The method according to claim 18 or claim 19.
27. A computer program comprising instructions, the instructions being configured to cause the computing system to perform the method according to claim 1 or claim 18 when executed by at least one processor of the computing system.
28. An apparatus comprising means for carrying out the method according to claim 1 or claim 18.
29. It is a device, At least one processor, At least one memory containing computer program code, Equipped with, The computer program code is configured, when executed by the at least one processor, to cause the device to perform at least the method according to claim 1 or claim 18. Device.
Citation Information
Patent Citations
Mechanism for saving resources of wearable devices
JP2017504107A
Eye Tracking Calibration Technique
JP2020522795A