Locating controllable devices using wearable devices
The method enhances wearable device control by using 3D mapping and object recognition to accurately determine the 6DoF position of controllable devices, addressing limitations in 2D positioning and device differentiation.
Patent Information
- Application Number
- JP2023528595
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Filing Date
- 2020-11-16
- Publication Date
- 2025-01-09
- Estimated Expiration
- 2040-11-16
AI Technical Summary
Wearable devices struggle to accurately determine the 3D location of controllable devices due to limitations in 2D positioning, and distinguishing between similar-looking devices is challenging, leading to inefficiencies in user interface control and information rendering.
A method using a wearable device to capture visual data, generate identification data, and match it with pre-stored 3D maps to accurately determine the 6DoF position of controllable devices, enabling precise rendering of user interface objects on the wearable device's display.
Enables accurate 3D positioning and control of controllable devices, improving user interface precision and efficiency by leveraging 3D mapping and object recognition technology.
Smart Images

Figure 0007611385000001 
Figure 0007611385000002 
Figure 0007611385000003
Abstract
Description
[Technical field]
[0001] Technical Field The present specification generally relates to obtaining the position of a controllable device using a wearable device. [Background technology]
[0002] background A wearable device can be used to control one or more controllable devices, such as a media streaming device, a home speaker, a smart light bulb, etc. In some examples, the wearable device can include a camera to capture visual data and image recognition software to process the image data to detect the device within the field of view of the camera of the wearable device to obtain a two-dimensional (2D) location of the device. However, the 2D location may not be sufficient to render UI controls on the display of the wearable device in close proximity to the device's location in 3D space so that a user can control the device with an interactive user interface (UI) or present additional information about the device to the user. Also, in some prior art, when a user has multiple similar-looking devices (e.g., two smart light bulbs that look the same), the wearable device may not be able to distinguish between the multiple devices in order to control the device intended by the user. Summary of the Invention [Means for solving the problem]
[0003] overview According to an aspect, a method of locating a controllable device using a wearable device includes receiving visual data from an image sensor on the wearable device, an object recognition module generating identification data based on the visual data, and using the identification data to identify a first three-dimensional (3D) map from a map database storing a plurality of 3D maps including a first 3D map and a second 3D map, the first 3D map being associated with the first controllable device and the second 3D map being associated with the second controllable device. The method includes obtaining a position of the first controllable device in a physical space based on the visual positioning data of the first 3D map, and rendering a user interface (UI) object on a display of the wearable device at a position within a threshold distance of the position of the first controllable device. In some examples, the UI object is rendered on the display at a position corresponding to the position of the first controllable device.
[0004] According to some aspects, the method may include one or more of the following features (or any combination thereof): The position includes a six degree of freedom position of the controllable device. The identification data may include at least one of a device name or a device type of the first controllable device. The identification data may include a space type of the physical space associated with the first controllable device. The identification data is stored in a map database in association with a first 3D map. The method may include comparing the visual data to the first 3D map. The method may include generating the first 3D map during a setup procedure associated with the first controllable device. The first 3D map may include a feature point map corresponding to a virtual cloud anchor configured to be shared with one or more other users. The UI object may include one or more controls that allow a user to control the first controllable device.
[0005] According to an aspect, a non-transitory computer-readable medium having executable instructions stored thereon, the executable instructions, when executed by at least one processor, are configured to cause the at least one processor to receive visual data from an image sensor on a wearable device, generate identification data based on the visual data by an object recognition module, and use the identification data to identify a first three-dimensional (3D) map from a map database storing a plurality of 3D maps including a first 3D map and a second 3D map, the first 3D map being associated with a first controllable device and the second 3D map being associated with a second controllable device, the executable instructions are further configured to obtain a position of the first controllable device in a physical space represented at least in part by the visual data based on visual positioning data of the first 3D map, and render a user interface (UI) object on a display of the wearable device at a position within a threshold distance of the position of the first controllable device, the UI object including one or more interactive controls for controlling the first controllable device. In some examples, the UI object is rendered on the display at a position that corresponds to the position of the first controllable device (eg, a 6DoF position).
[0006] According to some aspects, the non-transitory computer-readable medium may include one or more of the above / below features (or any combination thereof). The map database may be stored on a server computer. The executable instructions, when executed by the at least one processor, may be configured to cause the at least one processor to communicate with the server computer to access the map database. The map database may be stored on a wearable device or a computing device communicatively coupled to the wearable device. The executable instructions, when executed by the at least one processor, may be configured to cause the at least one processor to communicate with the wearable device or the computing system, respectively, to access the map database. The identification data may include at least one of a device name, a device type, or a spatial type associated with the first controllable device. The executable instructions may include instructions to cause the at least one processor to generate a first 3D map during a setup procedure associated with the first controllable device and generate a second 3D map during a setup procedure associated with the second controllable device. The first 3D map may include a feature point map corresponding to a virtual cloud anchor configured to be shared with one or more other users.
[0007] According to an aspect, a computing system for determining a position of a controllable device includes an image sensor configured to receive visual data, an object recognition module configured to generate identification data based on the visual data, and a locator configured to use the identification data to determine a first three-dimensional (3D) map from a map database storing a plurality of 3D maps including a first 3D map and a second 3D map, the first 3D map being associated with the first controllable device and the second 3D map being associated with the second controllable device, the locator configured to obtain a position of the first controllable device in a physical space based on the visual positioning data of the first 3D map, and the computing system further includes a user interface (UI) object renderer configured to render a UI object on a display of the wearable device at a position within a threshold position of the first controllable device. In some examples, the UI object is rendered on the display at a position corresponding to the position of the first controllable device.
[0008] According to some aspects, the computing system may include one or more of the above / below features (or any combination thereof). The computing system may include a wearable device and a computing device, where the computing device is communicatively coupled to the wearable device via a wireless connection. The computing system may include the wearable device, where the wearable device may include smart glasses. The map database may be stored in a memory device of the computing system. The map database may be stored in a memory device associated with the server computer. The computing system may include an antenna configured to transmit identification data to the server computer to identify the first 3D map in the server computer, where the antenna is configured to receive visual positioning data from the server computer.
[0009] The details of one or more implementations are set forth in the accompanying drawings and the description below. Other features will be apparent from the description and drawings, and from the claims. [Brief description of the drawings]
[0010] [Figure 1A] FIG. 1 illustrates a computing system for locating a controllable device using visual data captured by an image sensor and a three-dimensional (3D) map, according to an embodiment. [Figure 1B] FIG. 1 illustrates an embodiment of a user interface (UI) object rendered on a display of a computing device at a position corresponding to the position of a controllable device. [Figure 1C] FIG. 1 illustrates a map database that stores multiple 3D maps, according to an embodiment. [Figure 1D] FIG. 2 illustrates an example of identification data linked to a 3D map in a map database, according to an embodiment. [Figure 1E] FIG. 1 illustrates an example of a device detector that can identify a 3D map in a map database based on identification data, according to an embodiment. [Figure 1F] FIG. 1 illustrates a system for generating and storing a 3D map on a server computer according to an embodiment. [Figure 1G] FIG. 1 illustrates a computing system for generating and storing 3D maps according to an embodiment. [Figure 1H] FIG. 1 illustrates a computing system for generating and storing 3D maps according to another embodiment. [Diagram 2] FIG. 1 illustrates a computing system having a head-mounted display device and a computing device according to an embodiment. [Diagram 3] FIG. 1 illustrates an example of smart glasses according to an embodiment. [Figure 4A]FIG. 1 illustrates an example of a rendering of a UI object on a display of a wearable device according to an embodiment. [Figure 4B] FIG. 1 illustrates an example of a rendering of a UI object on a display of a wearable device according to an embodiment. [Figure 4C] FIG. 1 illustrates an example of a rendering of a UI object on a display of a wearable device according to an embodiment. [Figure 4D] FIG. 1 illustrates an example of a rendering of a UI object on a display of a wearable device according to an embodiment. [Diagram 5] FIG. 13 illustrates an example display having UI objects rendered in positions corresponding to the position of a controllable device. [Figure 6] FIG. 13 illustrates an example display having UI objects rendered in positions corresponding to the position of a controllable device. [Figure 7] FIG. 13 illustrates an example display having UI objects rendered in positions corresponding to the position of a controllable device. [Figure 8] FIG. 13 illustrates an example display having UI objects rendered in positions corresponding to the position of a controllable device. [Figure 9] 1 is a flowchart illustrating an example operation of a computing system according to an embodiment. [Figure 10] FIG. 2 illustrates an example of a computing device of the computing system discussed herein, according to an aspect. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0011] Detailed Description The present disclosure relates to a wearable device that captures visual data and identifies a pre-stored three-dimensional (3D) map (e.g., a 3D mesh, a 3D feature map, a virtual cloud anchor, etc.) from a map database based on the visual data, where the 3D map marks a location of a controllable device in a physical space at least partially represented by the visual data. The map database can store multiple 3D maps, each 3D map including visual positioning data for a separate controllable device. The map database can be stored locally or remotely on a server computer. Information from the 3D map is used to detect a six degree of freedom (DoF) position of the controllable device. The wearable device can then render a user interface (UI) object on a display of the wearable device at a location within a threshold distance of the location of the controllable device in the 3D space. In some examples, the UI object is rendered on the display at a location corresponding to the location of the controllable device (e.g., a 6DoF location). The UI object may provide the user with one or more controls for controlling the controllable device and / or additional information about the controllable device.
[0012] For example, during setup of the first controllable device, a computing device (e.g., a wearable device or another type of device such as a smartphone) may be used to mark the location of the first controllable device. The user may aim an image sensor of the computing device at the first controllable device and move the device to map the physical space from different viewing angles and positions to calculate feature points around the first controllable device.
[0013] In some examples, the feature points are sent to a server computer to generate a first 3D map, and the first 3D map is stored in a map database at the server computer. In some examples, the first 3D map is a feature point map. In some examples, the first 3D map is a virtual anchor that can be used to localize the captured scene for other users. The first 3D map is stored in association with identification data that includes information about the first controllable device. In some examples, the identification data includes a device type and / or a device name of the first controllable device. In some examples, the identification data includes a space type that identifies a type of space in which the first controllable device is located (e.g., living room, bedroom, kitchen). For example, the server computer analyzes the feature points to determine which type of physical space is associated with the first controllable device (e.g., a bed in the room of the first controllable device may indicate that the first controllable device is in a bedroom), and the first 3D map is stored in association with the space type. In some examples, the computing device may generate and store the first 3D map locally using feature points or generally any type of 3D scanning technology.
[0014] The same operations may be applied during the setup of another controllable device, for example during the setup of a second controllable device a second 3D map is generated that identifies the location of the second controllable device, the second 3D map is stored in association with identification data that allows the second controllable device to be identified.
[0015] After the setup procedure, the user may enter a physical space and capture visual data using the image sensor of the wearable device. In some examples, the wearable device includes an object recognition module that can determine the type of object included in the visual data. For example, if the first controllable device enters the field of view of the image sensor of the wearable device, the object recognition module may analyze the visual data to determine the type of device. In some examples, the object recognition may analyze the visual data to detect the type of space in which the user is located, for example, detection of a bed may indicate that the user is located in a bedroom. The object recognition module may generate identification data (e.g., device type, device name, space type, etc.) that identifies the first controllable device and / or the physical space. The identification data generated by the object recognition module may be used to identify an appropriate 3D map from a map database. For example, if the first controllable device is a home speaker, the map database stores the first 3D map in association with the type of controllable device, for example, a home speaker. Then, when the user enters a room with a home speaker and the object recognition module of the wearable device detects the home speaker, the first 3D map is identified because it is annotated with the same identification data. In some examples, the wearable device transmits the identification data (derived by the object recognizer) to a server computer to identify which 3D map is stored in the map database.
[0016] The visual data is then compared to the first 3D map to determine whether they match (e.g., involve the same physical space) to determine that the identified first 3D map at least partially corresponds to the physical space represented by the visual data captured by the image sensor. In some examples, the comparison is performed at a server computer, and if the comparison results in a match, the server computer returns a pose (e.g., position and orientation) of the first controllable device, which the wearable device uses to determine the position and orientation of the wearable device relative to the first controllable device. In some examples, the comparison is performed locally. In some examples, the pose may be referred to as a 6DoF position of the first controllable device. In some examples, the act of comparing the visual data to the 3D map may be referred to as resolving the 3D map.
[0017] In some examples, rather than using the object recognition module to detect the type of device captured by the visual data (and then using the type of device to quickly identify the 3D map), the visual data may be continuously or periodically compared to the stored 3D maps in the map database to determine which 3D map corresponds to the visual data captured by the image sensor. If there is a match, the wearable device may obtain the 6DoF position of the controllable device from the matching 3D map. However, in some examples, resolving the 3D map is computationally expensive, and processing power and / or time may increase relatively if the map database includes a relatively large number of 3D maps. Furthermore, the system must repeatedly (and / or continuously) compare the incoming video data with the 3D map, thereby reducing the efficiency of the system. However, by leveraging the information obtained by the object recognition module, efficiency can be improved (and processing power and / or time can be reduced) by resolving fewer 3D maps (e.g., those associated with the recognized device) for a relatively small number of frames (as opposed to continuously comparing the visual database with the 3D map).
[0018] 1A-1H illustrate a computing system 100 configured to detect a position 134 of one or more controllable devices 152 based on visual data 116 captured by a sensor system 112 on the computing system 100 and a 3D map 124 stored in a map database 105. The position 134 may be a 3D position of the controllable device 152, which is the location (and optionally, the orientation) of the controllable device 152 in a 3D physical space in which a user (and / or the computing system 100) is located. In some examples, the position 134 includes a 6DoF position 134a of the controllable device 152. Referring to FIG. 1B, the computing system 100 uses the position 134 to render a user interface (UI) object 140 on the display 108 at a location corresponding to and / or within a threshold distance of the controllable device 152 in the 3D space. In some examples, the computing system 100 uses the position 134 to render a UI object 140 on the display 108 in proximity to the position of the controllable device 152 in 3D space (e.g., from the user's perspective). In some examples, the UI object 140 is a virtual object rendered in physical space captured by the image sensor 114 of the computing system 100. In some examples, the UI object 140 is a visual indicator that highlights the position of the controllable device 152 in a room. In some examples, the UI object 140 provides one or more interactive controls for controlling the controllable device 152. In some examples, a user may move their hand in proximity to the UI object 140 (e.g., from the user's perspective) so that the user can interact with the UI object 140. In some examples, the UI object 140 provides additional information about the controllable device 152.
[0019] The computing system 100 may include one or more devices, at least one of which is a display device that can be worn on or in close proximity to a person's skin. In some examples, the computing system 100 is or includes a wearable device. The wearable device may include a head-mounted display (HMD) device, such as an optical head-mounted display (OHMD) device, a transparent heads-up display (HUD) device, an augmented reality (AR) device, or other devices such as goggles or headsets that have sensors, displays, and computing capabilities. In some examples, the wearable device includes smart glasses. Smart glasses are optical head-mounted display devices designed in the shape of glasses. For example, smart glasses are glasses that add information (e.g., project a display 108) along with what the wearer sees through the glasses. In some examples, when a user wearing smart glasses enters a bedroom with a smart speaker mounted on a dresser, the wearable device may render UI object 140 at a location (e.g., on the display) corresponding to and / or within a threshold distance of the smart speaker to enable the user to control the smart speaker and / or view additional information about the smart speaker.
[0020] In some examples, the computing system 100 includes a wearable device (e.g., smart glasses) and a computing device (e.g., a mobile computing device such as a smartphone, a tablet, a laptop, or another wearable device such as a smartwatch). The wearable device may be connected to the computing device via a wireless connection such as a short-range connection (e.g., a Bluetooth® connection or a near-field communication (NFC) connection) or an Internet connection (e.g., Wi-Fi® or a mobile network). In some examples, some of the components of the computing system 100 are included in the wearable device and some of the components of the computing system 100 are included in the computing device. In some examples, all of the components of the computing system 100 are included in the wearable device.
[0021] The computing system 100 includes one or more processors 104, which may be formed on a substrate configured to execute one or more machine-executable instructions or software, firmware, or a combination thereof. The processor 104 may be semiconductor-based, i.e., the processor may include semiconductor material capable of executing digital logic. The computing system 100 may also include one or more memory devices 106. The memory devices 106 may include any type of storage device that stores information in a format readable and / or executable by the processor(s) 104. The memory devices 106 may store applications and modules (e.g., device detector 126, locator 132, UI object renderer 136, object recognition module 118, virtual anchor application 170, etc.) that perform certain operations when executed by the processor(s) 104. In some examples, the applications and modules may be stored in an external storage device and loaded into the memory device 106.
[0022] The computing system 100 includes a display 108 that is projected into the user's field of view. The display 108 may include a liquid crystal display (LCD), a light-emitting diode (LED) display, an organic light-emitting display (OLED), an electro-phoretic display (EPD), or a micro-projection display employing LED light sources. In some examples, in the case of smart glasses, the display 108 may provide a transparent or translucent display so that a user wearing the glasses can see not only the image provided by the display 108, but also information located in the field of view of the smart glasses behind the projected image. In some examples, UI objects 140 are superimposed on the user's optical field of view of the physical space. The computing system 100 may include one or more antennas 110 to enable communication with other computing device(s). Although not shown in FIGS. 1A-1H, the computing system 100 may include a touch pad that allows a user to control the computing system 100 (e.g., to swipe through an interface displayed on the display 108).
[0023] The computing system 100 includes a sensor system 112. The sensor system 112 includes an image sensor 114. In some examples, the sensor system 112 includes multiple image sensors 114. In some examples, while a user is wearing the computing system 100 (or a portion of the computing system 100), the image sensor 114 captures visual data 116, which may include image data along with depth information. In some examples, the image sensor 114 is a red green blue (RGB) camera. In some examples, the image sensor 114 includes a pulsed laser sensor (e.g., a LiDAR sensor) or a depth camera. For example, the image sensor 114 may be a camera configured to detect and communicate information used to create the image represented by the visual data 116. The image sensor 114 is capable of taking photographs and recording videos. The sensor system 112 may include an inertial motion unit (IMU) 115 The IMU 115 may include a variety of different types of sensors, such as, for example, accelerometers, gyroscopes, magnetometers, and other such sensors. The sensor system 112 may include other types of sensors, such as light sensors, audio sensors, distance and / or proximity sensors, contact sensors such as capacitive sensors, timers, and / or other sensors and / or different combination(s) of sensors.
[0024] In some examples, the computing system 100 is configured to communicate with a server computer 160 via a network 150. The server computer 160 may be a computing device in the form of a number of different devices, such as, for example, a standard server, a group of such servers, or a rack server system. In some examples, the server computer 160 is a single system that shares components such as a processor and memory. The network 150 may include the Internet and / or other types of data networks, such as a local area network (LAN), a wide area network (WAN), a cellular network, a satellite network, or other types of data networks. The network 150 may also include any number of computing devices (e.g., computers, servers, routers, network switches, etc.) configured to receive and / or transmit data within the network 150.
[0025] The server computer 160 includes one or more processors 162, which may be formed on a substrate configured to execute one or more machine-executable instructions or software, firmware, or a combination thereof. The processor(s) 162 may be semiconductor-based, i.e., the processor may include semiconductor material capable of executing digital logic. The server computer 160 includes one or more memory devices 164. The memory device 164 may include a main memory that stores information in a format readable and / or executable by the processor 162.
[0026] In some examples, the server computer 160 is configured to execute the visual positioning data service 161. The visual positioning data service 161 may be an augmented reality (AR) collaboration service that allows users to create cloud anchors (e.g., 3D maps 124) for creating shareable multiplayer or collaborative AR experiences. For example, a user can add virtual objects to an AR scene, and then multiple users can simultaneously view and interact with these virtual objects from different positions in a shared physical space. For example, a user may create a local anchor (e.g., 3D map 124) in his or her environment. During hosting, the computing system 100 can upload data to generate the 3D map 124 in the visual positioning data service 161, which returns a unique identifier for the 3D map 124 and distributes the unique identifier to other users to participate in the same AR environment. As other users in the same environment point their device cameras at the area where the 3D map 124 (e.g., a virtual cloud anchor) is hosted, resolution requests cause the visual positioning data service 161 to periodically compare visual features from the scene with the created 3D map 124, which the computing system 100 uses to accurately determine the user's position and orientation relative to the 3D map 124.
[0027] The controllable devices 152 may include a wide variety of devices controllable by the computing system 100. As shown in FIG. 1A, the controllable devices 152 may include a first controllable device 152-1 and a second controllable device 152-2. In some examples, the controllable devices 152 are connected to the same network as the computing system 100 (e.g., the controllable devices 152 are connected to the same Wi-Fi network as the computing system 100). Although two controllable devices 152 are shown in FIG. 1A, the computing system 100 may be connected to any number of controllable devices 152. The controllable devices 152 may include lights, switches, outlets, thermostats, badge readers, fire or other environmental alarms, blinds, entertainment devices such as televisions, stereos, media players, and computing devices such as wireless network access points, printers, scanners, and copiers. In some situations, a building may have multiple controllable devices of the same type. For example, a building may have multiple home speakers or multiple video streaming devices. Additionally, a building may have multiple identical or nearly identical controllable devices (eg, light bulbs, home speakers, etc.).
[0028] A user may wish to use the computing system 100 to access, control, or otherwise communicate with the controllable devices 152. For example, the computing system 100 may provide access to, control, and / or communication with one or more controllable devices 152 (e.g., a first controllable device 152-1 and a second controllable device 152-2). To enable the computing system 100 to obtain precise locations of the controllable devices 152 so that UI object(s) 140 can be rendered on the display 108 to access, control, or otherwise communicate with the controllable devices 152, 3D maps 124 may be generated and stored in the map database 105, each 3D map 124 providing visual positioning data for a respective controllable device 152. In some examples, the map database 105 is stored in the memory device 164 at the server computer 160. In some examples, the map database 105 is stored in the memory device 106 at the computing system 100. In some examples, the map database 105 is stored on the wearable device. In some examples, the map database 105 is stored on a computing device that is wirelessly connected (locally) to the wearable device.
[0029] As shown in FIG. 1C, the map database 105 can store multiple 3D maps 124, each corresponding to a different controllable device 152. For example, a first 3D map 124-1 corresponds to a first controllable device 152-1, and a second 3D map 124-2 corresponds to a second controllable device 152-2. In some examples, the 3D map 124 is a 3D mesh. In some examples, the 3D map 124 is a 3D feature map. In some examples, the 3D map 124 is a virtual anchor or a virtual cloud anchor. In some examples, the 3D map 124 includes a coordinate space in which the physical space and visual information from the controllable devices 152 are positioned.
[0030] As shown in FIG. 1C, the 3D map 124 may be stored in association with identification data 120. The identification data 120 may include one or more characteristics related to the corresponding controllable device 152 and / or the space in which the controllable device 152 is located. In some examples, as shown in FIG. 1D, the identification data 120 includes a device name 121 of the controllable device 152. In some examples, the device name 121 is a name associated with the controllable device 152 (e.g., Nest thermostat, Google home mini, etc.). In some examples, the identification data 120 includes a device type 123 of the controllable device 152. In some examples, the device type 123 identifies a type of device, e.g., smart speaker, media streaming device, smart thermostat, etc. In some examples, the identification data 120 includes a space type 125 that identifies a type of space associated with the 3D map 124. For example, the space type 125 may specify a bedroom, a study, a living room, a kitchen, etc. As shown in FIG. 1C, the first 3D map 124-1 is associated with identification data 120-1 identifying a first controllable device 152-1, and the second 3D map 124-2 is associated with identification data 120-2 identifying a second controllable device 152-2.
[0031] In some examples, the 3D map 124 and the corresponding identification data 120 (or a portion thereof) are generated during a set-up procedure for a particular controllable device 152. In some examples, the 3D map 124 and the corresponding identification data 120 (or a portion thereof) may be generated at a later time in the set-up procedure for a particular controllable device 152. In some examples, the 3D map 124 and the corresponding identification data 120 are generated at the same time (or about the same time) as each other. In some examples, the identification data 120 is generated after the generation of the 3D map 124 and is linked to the corresponding 3D map 124.
[0032] In some examples, during setup of the first controllable device 152-1, the computing system 100 (which may be, for example, a wearable device or a mobile device such as a smartphone) may 1 The user may position the image sensor 114 on the computing system 100 at the center of interest (e.g., the first controllable device 152- 1 ), move the computing system 100 to map the environment from different viewing angles and positions, and 1 The computing system 100 may calculate feature points around the user's surroundings. The data collected by the computing system 100 is used to generate the feature points. The feature points may be points of interest that represent the user's environment. In some examples, each feature point approximates a fixed position and orientation in physical space, and the set of visual feature points may be updated over time as the user moves the device to map the physical space.
[0033] In some examples, the feature points are then sent to the visual positioning data service 161 in the server computer 160 to generate the first 3D map 124-1, which is stored in the map database 105 in the server computer 160. As described above, the first 3D map 124-1 is stored in association with identification data 120-1 (e.g., device name 121, device type 123, space type 125, etc.) that identifies the first controllable device 152-1. If the first controllable device 152-1 is a smart speaker, the identification data 120-1 may indicate that the first 3D map 124-1 is associated with a smart speaker, the name of the smart speaker, and / or the type of the smart speaker. In some examples, the visual positioning data service 161 in the server computer 160 analyzes the feature points to determine what type of physical space is associated with the first controllable device 152-1 (e.g., a bed in the room of the first controllable device 152-1 may indicate that the first controllable device 152-1 is in a bedroom), and the first 3D map 124-1 is stored in association with the space type 125. In some examples, instead of generating the first 3D map 124-1 in the server computer 160, the computing system 100 may store the first 3D map 124-1 (and corresponding identification data) in the memory device 106 using the feature points, or generally any type of 3D scanning technology. data 120-1) may be generated and stored in the map database 105.
[0034] The same operations may be applied during the setup of another controllable device 152. For example, during the setup of a second controllable device 152-2, a second 3D map 124-2 is generated that identifies the location of the second controllable device 152-2. The second 3D map 124-2 is stored in association with identification data 120-2 (e.g., device name 121, device type 123, space type 125, etc.) related to the second controllable device 152-2. If the second controllable device 152-2 is a smart thermostat, the identification data 120-2 may indicate that the second 3D map 124-2 is associated with a smart thermostat, the name of the smart thermostat, and / or the type of the smart thermostat. In some examples, the visual positioning data service 161 in the server computer 160 analyzes the feature points to determine what type of physical space is associated with the second controllable device 152-2 (e.g., a sofa in the room of the second controllable device 152-2 may indicate that the second controllable device 152-2 is in the living room), and the second 3D map 124-2 is stored in association with the space type 125. In some examples, the first controllable device 152-1 is located in the same space as the second controllable device 152-2. In some examples, the first controllable device 152-1 is located in a different space than the second controllable device 152-2.
[0035] After a setup procedure (e.g., during normal use of the computing system 100), a user may enter a physical space and capture visual data 116 using the image sensor 114. The computing system 100 includes a device detector 126 configured to detect a controllable device 152 and a position 134 of the controllable device 152 using the visual data 116 and the map database 105. The position 134 may include a 6DoF position 134a of the controllable device 152. In some examples, the 6DoF position 134 includes information describing translations and rotations, such as up and down movement (e.g., lift / bob), left and right movement (e.g., skid / rock), front and back movement (e.g., walk / push), left and right turning (e.g., yaw), front and back tilt (e.g., pitch), and / or left and right turning (e.g., roll).
[0036] The device detector 126 includes an object recognition module 118. The object recognition module 118 can include one or more image recognition algorithms, which may include one or more neural networks. In some examples, the object recognition module 118 is configured to identify the object by reading a barcode, a QR code, a label, and / or text when the image sensor 114 is aimed at the object. The object recognition module 118 is configured to identify the object in the visual data 116 and generate identification data 120 for the detected object. The identification data 120 generated by the object recognition module 118 is used to select or identify one of the 3D maps 124 in the map database 105 for resolving against the visual data 116. As discussed above, the identification data 120 may include a device name 121, a device type 123, a space type 125, and / or other characteristics of the controllable device 152 or a space that includes the controllable device 152.
[0037] For example, if a first controllable device 152-1 is captured by the visual data 116, the object recognition module 118 may generate the identification data 120 to include the device name 121 and / or device type 123 of the first controllable device 152-1. Similarly, if a second controllable device 152-2 is captured by the visual data 116, the object recognition module 118 may generate the identification data 120 to include the device name 121 and / or device type 123 of the second controllable device 152-2. In some examples, if a bed is captured by the visual data 116, the object recognition module 118 may generate the identification data 120 to include a space type 125 (e.g., bedroom). In some examples, if an oven is captured by the visual data 116, the object recognition module 118 may generate the identification data 120 to include a space type 125 (e.g., kitchen).
[0038] The device detector 126 includes a locator 132 that uses the identification data 120 to identify the 3D map 124 stored in the map database 105. As shown in FIG. 1E, if the identification data 120 is identification data 120-1, a first 3D map 124-1 of the multiple 3D maps 124 may be identified because the first 3D map 124-1 is associated with the identification data 120-1 and stored in the map database 105. In some examples, the identification data 120-1 may indicate a home speaker and the second identification data 120-2 may indicate a smart light bulb. If the identification data 120 received by the locator 132 indicates a home speaker, the first 3D map 124-1 may be identified.
[0039] The visual data 116 is then compared to the identified 3D map 124 to determine if there is a match. For example, to determine that the identified 3D map 124 corresponds at least in part to the physical space represented by the visual data 116 captured by the image sensor 114, the visual data 116 is compared to the 3D map 124 to determine if there is a match (e.g., whether they include the same physical space). For example, the visual feature points in the 3D map 124 can be used to compare and match other visual feature points (e.g., detected from the visual data 116) to determine if the physical space is the same as the physical space of the stored feature points and to calculate the location of the controllable device 152 within the physical space.
[0040] If there is a match, the locator 132 retrieves visual positioning data 141 for the 3D map 124. In some examples, the visual positioning data 141 includes the pose (e.g., position and orientation) of the controllable device 152. The locator 132 uses the visual positioning data 141 to calculate the position 134 of the controllable device 152-1 relative to the computing system 100. In some examples, the locator 132 uses the visual positioning data 141 and information from the IMU 115 to calculate the position 134 of the controllable device 152-1 relative to the computing system 100.
[0041] If the map database 105 is stored in the memory device 164 in the server computer 160, the device detector 126 may operate in conjunction with the antenna(s) 110 to communicate with the visual positioning data service 161 in the server computer 160. For example, the device detector 126 may transmit the identification data 120 and the visual data 116 to the visual positioning data service 161. The visual positioning data service 161 may identify an appropriate 3D map 124 from the map database 105 stored in the memory device 164 in the server computer 160 and compare the visual data 116 with the identified 3D map 124, and if the comparison results in a match, the visual positioning data service 161 may return the visual positioning data 141 of the 3D map 124 to the device detector 126.
[0042] If the map database 105 is stored in a memory device 106 in the computing system 100, in some examples, the device detector 126 may identify an appropriate 3D map 124 from the map database 105 stored in the memory device 106 in the computing system 100 and compare the visual data 116 to the identified 3D map 124, and if the comparison is a match, the locator 132 may obtain the visual positioning data 141 from the appropriate 3D map 124.
[0043] In some examples, the device detector 126 uses other signals besides the visual data 116 to aid in detecting the controllable device 152. For example, the device detector 126 may receive one or more wireless signals 130 and use the wireless signals 130 to distinguish between multiple similar-looking controllable devices 152. In some examples, the wireless signals 130 include short-range wireless signals such as Bluetooth signals and / or NFC signals (or ultrasonic signals). For example, when two similar-looking controllable devices 152 are in the user's area, the device detector 126 may receive a Bluetooth signal from the controllable device 152, and the strength of the Bluetooth signal may indicate which controllable device 152 the user intends to control.
[0044] The computing system 100 includes a UI object renderer 136 that uses the position 134 to render the UI object 140 on the display 108 at a location proximate to the position 134 of the controllable device 152 in 3D space. In some examples, the UI object 140 is a virtual object located in the physical space that the user views through the smart glasses. In some examples, the UI object 140 may be positioned at a location close to the position 134 of the controllable device 152 in the real world. In some examples, the UI object 140 is positioned on the display 108 at a location that is within a threshold distance of the position 134 of the controllable device 152 in 3D space. In other words, the distance between the position of the UI object 140 and the position 134 of the controllable device 152 may be less than a threshold level. In some examples, the UI object 140 is rendered on the display 108 at a location where the user would recognize that the information provided by the UI object 140 corresponds to the controllable device 152. In some examples, the UI object 140 is rendered on the display 108 at a location corresponding to the position 134 of the controllable device 152. In some examples, the position of the UI object 140 is determined or calculated using the position 134 of the controllable device 152 as a reference. In some examples, the UI object 140 provides one or more controls for controlling the controllable device 152. For example, the UI object 140 may provide one or more controls for launching an application on a media streaming player, changing the volume of a smart speaker, playing a song on the smart speaker, etc. In some examples, the UI object 140 provides additional information about the controllable device 152. For example, the UI object 140 may specify historical data about a smart thermostat.
[0045] 1F-1H show various examples of generating and storing a 3D map 124. FIG. 1F shows a first 3D map 124 for a first controllable device 152-1 in a server computer according to one embodiment.-1 FIG 1G illustrates the generation and storage of a first 3D map 124-1 for a first controllable device 152-1 in a computing system 100 according to one embodiment. FIG 1H illustrates the generation and storage of a first 3D map 124-1 for a first controllable device 152-1 in a computing system 100 according to another embodiment.
[0046] Referring to FIG. 1F, during setup of the first controllable device 152-1, the computing system 100 may be used to mark the location of the first controllable device 152-1. A user may aim the image sensor 114 of the sensor system 112 at the first controllable device 152-1 and move the computing system 100 to map the environment from different viewing angles and positions. In some examples, the computing system 100 includes a virtual anchor application 170 that receives data from the sensor system 112 and generates virtual anchor data 172. The virtual anchor data 172 may include visual data 174, device pose(s) 176, and anchor pose(s) 178. In some examples, the visual data 174 is an example of the visual data 116. The virtual anchor application 170 is configured to communicate with a visual positioning data service 161 in the server computer 160 (via one or more application programming interfaces (APIs)). The virtual anchor application 170 is configured to detect and track its position relative to the physical space, detect the size and location of different types of surfaces (e.g., horizontal, vertical, angled surfaces), and estimate the current lighting conditions of the environment. The virtual anchor application 170 is configured to transmit the virtual anchor data 172 to the visual positioning data service 161 (once the computing system 100 maps the environment). The visual positioning data service 161 includes a 3D map generator 165 configured to generate a first 3D map 124-1 based on the virtual anchor data 172. The 3D map generator 165 is configured to store the first 3D map 124-1 in the map database 105.
[0047] In some examples, the virtual anchor application 170 is configured to detect a set of visual features from the visual data 174 and track the movement of the set of visual features over time. The set of visual features are a number of points (e.g., points of interest) that represent the user's environment, and the set of visual features may be updated over time. In some examples, the set of visual features may be referred to as an anchor or a persistent set of visual features that represent physical objects in the physical world, and the set of visual features may be stored in the map database 105 for localizing the environment in a subsequent session or for another user.
[0048] Referring to FIG. 1G, during the setup of the first controllable device 152-1, similar to FIG. 1F, the computing system 100 is used to mark the location of the first controllable device 152-1. The user may aim the image sensor 114 of the sensor system 112 at the first controllable device 152-1 and move the computing system 100 to map the environment from different viewing angles and positions. The virtual anchor application 170 receives data from the sensor system 112 and generates virtual anchor data 172 including visual data 174, device pose(s) 176, and anchor pose(s) 178. In the example of FIG. 1G, the computing system 100 includes a 3D map generator 165 configured to generate the first 3D map 124-1 based on the virtual anchor data 172. The 3D map generator 165 is configured to store the first 3D map 124-1 in the map database 105 in the computing system 100.
[0049] 1H, during the setup of the first controllable device 152-1, similar to FIGS. 1F and 1G, the computing system 100 is used to mark the location of the first controllable device 152-1. In some examples, the computing system 100 includes a 3D scanning module 111 configured to scan the environment of the first controllable device 152-1 and create a first 3D map 124-1 that is stored in the map database 105 at the computing system 100.
[0050] FIG. 2 illustrates a computing system 200 according to another embodiment. The computing system 200 may include any of the features described with reference to the computing system 100 of FIGS. 1A-1H. In some examples, the computing system 200 includes a head-mounted display device 202. In some examples, the head-mounted display device 202 includes all of the components of the computing system 100 of FIGS. 1A-1H. For example, the head-mounted display device 202 may include the processor(s) 104, the memory device(s) 106, the display 108, the sensor system 112 (including the image sensor 114 and the IMU 115), the antenna(s), the device detector 126 (and subcomponents of the device detector 126), and the UI object renderer 136 of FIGS. 1A-1H. In some examples, the head-mounted display device 202 includes the map database 105. In some examples, the head-mounted display device 202 is configured to generate and store the 3D map 124 as described with reference to Figures 1F-1H (e.g., during a setup procedure), and the 3D map 124 can be stored locally on the head-mounted display device 202 or on a server computer (e.g., server computer 160 of Figures 1A-1H). In some examples, the virtual anchor application 170 of Figures 1F and 1G is included on the head-mounted display device 202. In some examples, the 3D scan module 111 is included on the head-mounted display device 202.
[0051] In some examples, computing system 200 includes head-mounted display device 202 and computing device 201. Computing device 201 may be connected to head-mounted display device 202 via wireless connection 275. In some examples, computing device 201 includes a mobile computing device such as a smartphone, tablet, laptop, or other wearable device. In some examples, wireless connection 275 is a short-range communication link such as a near field communication (NFC) connection or a Bluetooth connection. In some examples, wireless connection 275 is a network connection such as a local area network (LAN), a wide area network (WAN), a cellular network, a satellite network, or other type of data network. In some examples, wireless connection 275 may include any number of computing devices (e.g., computers, servers, routers, network switches, etc.) configured to receive and / or transmit data within the network.
[0052] In some examples, some of the components of the computing system 100 of FIGS. 1A-1H are included in the head mounted display device 202, and some of the components of the computing system 100 of FIGS. 1A-1H are included in the computing device 201. In some examples, the sensor system 112, the processor(s) 104, the memory device(s) 106, the antenna(s) 110, and the display 108 of FIGS. 1A-1H are included in the head mounted display device 202. In some examples, the UI object renderer 136 of FIGS. 1A-1H is included in the head mounted display device 202. In some examples, the UI object renderer 136 of FIGS. 1A-1H is included in the computing device 201. In some examples, the map database 105 of FIGS. 1A-1H is stored in the computing device 201. In some examples, the map database 105 of Figures 1A-1H is stored on a server computer (e.g., server computer 160 of Figures 1A-1H), and the computing device 201 and / or the head-mounted display device 202 are configured to communicate with the server computer 160 of Figures 1A-1H.
[0053] 1A-1H is included on the computing device 201. In some examples, visual data 116 captured by the sensor system 112 on the head mounted display device 202 may be transmitted to the computing device 201 via a wireless connection 275. The device detector 126 may detect a position 134 of the controllable device 152 and transmit the position 134 to the head mounted display device 202 via the wireless connection 275 for use by a UI object renderer 136 on the head mounted display device 202. In some examples, the UI object renderer 136 is included on the computing device 201 and transmits instructions for rendering UI objects 140 on the display 108 on the head mounted display device 202 via the wireless connection 275. In some examples, the object recognition module 118 of Figures 1A-1H is included in a head-mounted display device 202, the locator 132 is included in a computing device 201, and the head-mounted display device 202 transmits the identification data 120 to the locator 132 on the computing device 201.
[0054] In some examples, the computing device 201 is configured to generate and store the 3D map 124 as described with reference to Figures 1F-1H (e.g., during a setup procedure), and the 3D map 124 can be stored locally on the computing device 201 or on a server computer (e.g., server computer 160 of Figures 1A-1H). In some examples, the virtual anchor application 170 of Figures 1F and 1G is included on the computing device 201. In some examples, the virtual anchor application 170 of Figures 1F and 1G is included on the computing device 201 and the head-mounted display device 202. In some examples, the 3D scan module 111 is included on the computing device 201.
[0055] FIG. 3 illustrates an example of a head-mounted display device 302 according to an embodiment. The head-mounted display device 302 may be an example of the computing system 100 of FIGS. 1A-1H and / or the head-mounted display device 202 of FIG. 2. The head-mounted display device 302 includes smart glasses 396. The smart glasses 396 are glasses that add information (e.g., project a display 308) along with what the wearer sees through the glasses. In some examples, the display 308 is an in-lens microdisplay rather than projecting information. In some examples, the smart glasses 396 (e.g., eyeglasses, spectacles) are visual aids that include lenses 372 (e.g., glass or hard plastic lenses) attached to a frame 371 that is held in front of a person's eyes, typically utilizing a bridge 373 over the nose and legs 374 (e.g., temples or temple pieces) that rest on the ears. The smart glasses 396 include an electronics component 370 that includes the circuitry of the smart glasses 396. In some examples, the electronics component 370 includes a housing that contains the components of the computing system 100 of FIGS. 1A-1H and / or the components of the head-mounted display device 202 of FIG. 2. In some examples, the electronics component 370 includes a base 3 of the smart glasses 396. 74 One of the legs (or leg 3 74 (both in
[0056] 4A-4D show examples of a display 408 showing a UI object 440 located in proximity to a detected controllable device 452 (e.g., in a resulting visual impression). In some examples, the controllable device 452 includes a smart speaker. However, the controllable device 452 may include any type of controllable device discussed herein. In some examples, the information shown on the display 408 is visual information shown through the lenses of smart glasses. The UI object 440 may be considered a virtual object located in physical space as shown through the smart glasses.
[0057] With reference to FIG. 4A, the UI object 440 may be rendered as a visual indicator around the controllable device 452 indicating the location of the controllable device 452 in 3D space. With reference to FIG. 4B, the UI object 440 may be rendered in a position proximate (e.g., close) to the controllable device 452. In FIG. 4B, the UI object 440 includes visual indicators around the controllable device 452 and UI controls that allow the user to interact with the controllable device 452. In some examples, the user may interact with UI controls for controlling the controllable device 452, such as controls for playing music. With reference to FIG. 4C, the UI object 440 may include UI controls that allow the user to interact with the controllable device 452 and visual indicators that indicate the area where the user's hand (or fingers) is placed in relation to other visual information shown on the display 408. For example, the user may move their hand (or fingers) in the area of the UI object 440 to interact with the controllable device 452. The visual indicators of FIG. 4C are used to aid in determining the location / orientation of the user's body part in relation to the UI object 440. 、 4D, UI objects 440 may include a visual indicator that indicates an area where the user's hand (or fingers) is placed in relation to other visual information shown on display 408, and a number of UI controls that allow the user to control controllable device 452. In some examples, the UI controls may include actions such as playing music or searching the web.
[0058] FIG. 5 illustrates an example of a display 508 showing UI objects 540 located in proximity to a detected controllable device 552. In some examples, the controllable device 552 includes a smart television or a media streaming device. However, the controllable device 552 may include any type of controllable device discussed herein. In some examples, the information shown on the display 508 is visual information shown through the lenses of smart glasses. The UI objects 540 may be considered virtual objects located in a physical space as shown through the smart glasses. With reference to FIG. 5, the UI objects 540 include UI controls that allow a user to interact with the controllable device 552, such as opening an application, such as a media streaming application.
[0059] FIG. 6 illustrates an example of a display 608 showing UI objects 640 located in proximity (e.g., near) a detected controllable device 652. In some examples, the controllable device 652 includes a smart speaker. However, the controllable device 652 may include any type of controllable device discussed herein. In some examples, the information shown on the display 608 is visual information shown through the lenses of smart glasses. The UI objects 640 may be considered virtual objects located in a physical space as shown through the smart glasses. With reference to FIG. 6, the UI objects 640 include UI controls that allow a user to interact with the controllable device 652, such as controls for playing music.
[0060] FIG. 7 illustrates an example of a display 708 showing a UI object 740 located in proximity (e.g., near) a detected controllable device 752. In some examples, the controllable device 752 includes a smart thermostat. However, the controllable device 752 may include any type of controllable device discussed herein. In some examples, the information shown on the display 708 is visual information shown through the lenses of smart glasses. The UI object 740 may be considered a virtual object located in the physical space as shown through the smart glasses. With reference to FIG. 7, the UI object 740 provides additional information about the controllable device 752, such as historical data or other information about the controllable device 752.
[0061] FIG. 8 illustrates an example of a display 808 showing UI objects 840 located in proximity (e.g., near) a detected controllable device 852. In some examples, the controllable device 852 includes a smart speaker. However, the controllable device 852 may include any type of controllable device discussed herein. In some examples, the information shown on the display 808 is visual information shown through the lenses of smart glasses. The UI objects 840 may be considered virtual objects located in the physical space as shown through the smart glasses. With reference to FIG. 8, the UI objects 840 include UI controls for controlling the smart speaker and information about what is playing on the smart speaker.
[0062] Figure 9 shows a flowchart 900 illustrating an example operation of the computing system 100 of Figures 1A-1H. Although the flowchart 900 is described with reference to the computing system 100 of Figures 1A-1H, the flowchart 900 is applicable to any of the embodiments herein.
[0063] Operation 902 includes receiving visual data 116 from an image sensor 114 on a wearable device (e.g., computing system 100). Operation 904 includes using the visual data 116 to identify a first three-dimensional (3D) map 124-1 from a map database 105 that stores a plurality of 3D maps 124 including a first 3D map 124-1 and a second 3D map 124-2, the first 3D map 124-1 being associated with a first controllable device 152-1 and the second 3D map 124-2 being associated with a second controllable device 152-2. Operation 906 includes obtaining a position 134 (e.g., a 6DoF position 134a) of the first controllable device 152-1 in space relative to the wearable device based on the first 3D map 124-1. Operation 908 includes rendering a user interface (UI) object 140 on the display 108 of the wearable device at a location proximate to the location 134 of the first controllable device 152-1.
[0064] FIG. 10 illustrates an example of an exemplary computer device 1000 and an exemplary mobile computer device 1050 that may be used with the techniques described herein. The computing device 1000 includes a processor 1002, a memory 1004, a storage device 1006, a high-speed interface 1008 that connects to the memory 1004 and a high-speed expansion port 1010, and a low-speed interface 1012 that connects to a low-speed bus 1014 and the storage device 1006. Each of the components 1002, 1004, 1006, 1008, 1010, and 1012 are interconnected using various buses and may be mounted on a common motherboard or may be mounted in any suitable manner. The processor 1002 may process instructions for execution within the computing device 1000, including instructions stored in the memory 1004 or the storage device 1006, to display graphical information for a GUI on an external input / output device, such as a display 1016 coupled to the high-speed interface 1008. In other implementations, multiple processors and / or multiple buses may be used, along with multiple memories and multiple types of memory, as appropriate. Additionally, multiple computing devices 1000 may be connected, each providing a portion of the required operations (e.g., as a server bank, a group of blade servers, or a multiprocessor system).
[0065] The memory 1004 stores information within the computing device 1000. In one implementation, the memory 1004 is one or more volatile memory units. In another implementation, the memory 1004 is one or more non-volatile memory units. The memory 1004 may also be another form of computer-readable medium, such as a magnetic disk or optical disk.
[0066] The storage device 1006 can provide mass storage for the computing device 1000. In some implementations, the storage device 1006 can be or include a floppy disk device, a hard disk device, an optical disk device, or a tape device, such as a flash memory or other similar solid-state memory device, or an array of devices including devices in a storage area network or other configuration. The computer program product can be tangibly embodied in an information carrier. Also, the computer program product can include instructions that, when executed, perform one or more methods, such as those described above. The information carrier is a computer-readable or machine-readable medium, such as the memory 1004, the storage device 1006, or a memory on the processor 1002.
[0067] The high-speed controller 1008 manages the bandwidth-intensive operations of the computing device 1000, and the low-speed controller 1012 manages the less bandwidth-intensive operations. Such an allocation of functions is merely exemplary. In one implementation, the high-speed controller 1008 is coupled to the memory 1004, the display 1016 (e.g., via a graphics processor or accelerator), and a high-speed expansion port 1010 that can accept various expansion cards (not shown). In this implementation, the low-speed controller 1012 is coupled to the storage device 1006 and the low-speed expansion port 1014. The low-speed expansion port, which may include various communication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet), may be coupled to one or more input / output devices, such as a keyboard, pointing device, scanner, or a network device, such as a switch or router, for example, via a network adapter.
[0068] Computing device 1000 may be realized in many different forms, as shown in the figure. For example, it may be realized as a standard server 1020, or multiple times within a group of such servers. It may also be implemented as part of a rack server system 1024. It may also be implemented in a personal computer, such as a laptop computer 1022. Or, components from computing device 1000 may be combined with other components in a mobile device (not shown), such as device 1050. Each such device may include one or more of computing devices 1000, 1050, and the entire system may be made up of multiple computing devices 1000, 1050 in communication with each other.
[0069] The computing device 1050 includes components such as a processor 1052, a memory 1064, input / output devices such as a display 1054, a communication interface 1066, and a transceiver 1068. A storage device, such as a microdrive, may also be provided to provide additional storage to the device 1050. Each of the components 1050, 1052, 1064, 1054, 1066, and 1068 are interconnected using various buses, and some of the components may be implemented on a common motherboard or in other manners as appropriate.
[0070] The processor 1052 can execute instructions within the computing device 1050, including instructions stored in the memory 1064. The processor may be implemented as a chipset of chips including separate analog and digital processors. The processor may be provided for coordination of other components of the device 1050, such as, for example, control of a user interface, applications executed by the device 1050, and wireless communication by the device 1050.
[0071] The processor 1052 may communicate with a user via a control interface 1058 and a display interface 1056 coupled to a display 1054. The display 1054 may be, for example, a thin-film-transistor liquid crystal display (TFT LCD) or an organic light-emitting diode (OLED) display, or other suitable display technology. The display interface 1056 may include appropriate circuitry for driving the display 1054 to present graphical and other information to the user. The control interface 1058 may receive commands from the user and convert them for presentation to the processor 1052. Additionally, an external interface 1062 may communicate with the processor 1052 to enable short-range communication of the device 1050 with other devices. The external interface 1062 may provide, for example, wired communication in some implementations or wireless communication in other implementations, and multiple interfaces may be used.
[0072] The memory 1064 stores information within the computing device 1050. The memory 1064 may be implemented as one or more of one or more computer readable media, one or more volatile memory units, or one or more non-volatile memory units. An expansion memory 1074 may also be provided and connected to the device 1050 through an expansion interface 1072, which may include, for example, a Single In Line Memory Module (SIMM) card interface. Such expansion memory 1074 may provide extra storage space for the device 1050 or may store applications or other information for the device 1050. Specifically, the expansion memory 1074 may include instructions for performing or supplementing the processes described above, and may also include secure information. Thus, for example, the expansion memory 1074 may be provided as a security module for the device 1050 and may be programmed with instructions that enable secure use of the device 1050. Additionally, secure applications may be provided via a SIMM card, along with additional information, such as placing identifying information on the SIMM card in a manner that cannot be hacked.
[0073] The memory may include, for example, flash memory and / or NVRAM memory, as described below. In one implementation, the computer program product is tangibly embodied on an information carrier. The computer program product includes instructions that, when executed, perform one or more methods, such as those described above. The information carrier may be a computer-readable or machine-readable medium, such as memory 1064, expansion memory 1074, or memory on the processor 1052, and may be received, for example, via the transceiver 1068 or the external interface 1062.
[0074] The device 1050 may communicate wirelessly via a communication interface 1066, which may include digital signal processing circuitry as necessary. The communication interface 1066 may provide for communication in a variety of modes or protocols, such as GSM voice calls, SMS, EMS, or MMS messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000, or GPRS. Such communication may occur, for example, via a radio frequency transceiver 1068. Additionally, short-range communication may occur, such as using Bluetooth, Wi-Fi, or other such transceivers (not shown). Additionally, a Global Positioning System (GPS) receiver module 1070 provides additional navigation-related and location-related wireless data to the device 1050, which may be used as appropriate by applications executing on the device 1050.
[0075] Device 1050 may also communicate audibly using audio codec 1060, which may receive voice information from a user and convert it into usable digital information. Similarly, audio codec 1060 may generate audible sounds for the user, such as through a speaker in a handset of device 1050. Such sounds include sounds from a voice telephone call, may include recorded sounds (e.g., voice messages, music files, etc.), and may also include sounds generated by applications running on device 1050.
[0076] The computing device 1050 may be implemented in many different forms, as shown, for example as a mobile phone 1080, or as part of a smartphone 1082, personal digital assistant, or other similar mobile device.
[0077] Various implementations of the systems and techniques described herein may be realized in digital electronic circuitry, integrated circuits, specially designed application specific integrated circuits (ASICs), computer hardware, firmware, software, and / or combinations thereof. These various implementations may include implementations in one or more computer programs executable and / or interpretable on a programmable system including at least one programmable processor, which may be special purpose or general purpose, coupled to transmit and receive data and instructions from a storage system, at least one input device, and at least one output device. Additionally, the term "module" may include software and / or hardware.
[0078] These computer programs (also known as programs, software, software applications or codes) contain 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 Devices (PLDs)) used to provide machine instructions and / or data to a programmable processor, including machine-readable media that receive machine instructions as machine-readable signals. The term "machine-readable signal" refers to any signal used to provide machine instructions and / or data to a programmable processor.
[0079] To provide for user interaction, the systems and techniques described herein can be implemented on a computer having a display device (e.g., a cathode ray tube (CRT) or liquid crystal display (LCD) monitor) for displaying information to the user, and a keyboard and pointing device (e.g., a mouse or trackball) for enabling the user to provide input to the computer. Other types of devices can be used to provide for user interaction as well. For example, feedback provided to the user can be any form of sensory feedback (e.g., visual feedback, auditory feedback, or tactile feedback). Also, input from the user can be received in any form, including acoustic, speech, or tactile input.
[0080] The systems and techniques described herein may include back-end components (e.g., as a data server), or may include middleware components (e.g., an application server), or may include front-end components (e.g., a client computer having a graphical user interface or a web browser through which a user can interact with implementations of the systems and techniques described herein), or may be implemented in any combination of such back-end, middleware, or front-end components. The components of the system may be interconnected by any form or medium of digital data communication (e.g., a communications network). Examples of communications networks include a local area network ("LAN"), a wide area network ("WAN"), and the Internet.
[0081] A computing system may include clients and servers. Clients and servers are generally remote from each other and typically interact through a communication network. The client-server relationship arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
[0082] In some implementations, the computing device shown in FIG. 10 may include sensors that interface with a virtual reality (VR) headset 1090. For example, one or more sensors included in the computing device 1050 or other computing devices shown in FIG. 10 may provide input to the VR headset 1090 or generally provide input to the VR space. The sensors may include, but are not limited to, a touch screen, an accelerometer, a gyroscope, a pressure sensor, a biometric sensor, a temperature sensor, a humidity sensor, and an ambient light sensor. The computing device 1050 may use the sensors to determine an absolute position and / or a detected rotation of the computing device in the VR space that may then be used as input to the VR space. For example, the computing device 1050 may be incorporated into the VR space as a virtual object such as a controller, a laser pointer, a keyboard, a weapon, etc. Positioning of the computing device / virtual object by the user when incorporated into the VR space may allow the user to position the computing device to view the virtual object in a particular manner in the VR space. For example, if the virtual object represents a laser pointer, the user may manipulate the computing device as if it were an actual laser pointer. A user can move a computing device left and right, up and down, in a circular motion, etc., and use the device in a manner similar to using a laser pointer.
[0083] In some implementations, one or more input devices included in or connected to the computing device 1050 can be used as input to the VR space. The input devices can include, but are not limited to, a touch screen, a keyboard, one or more buttons, a trackpad, a touchpad, a pointing device, a mouse, a trackball, a joystick, a camera, a microphone, an earphone with input capabilities, a game controller, or other connectable input devices. When the computing device is integrated into the VR space, a user interacting with an input device included in the computing device 1050 can cause certain actions to occur in the VR space.
[0084] In some implementations, the touch screen of the computing device 1050 can be rendered as a touch pad in the VR space. A user can interact with the touch screen of the computing device 1050. The interaction is rendered, for example in the VR headset 1090, as movements on the rendered touch pad in the VR space. The rendered movements can control objects in the VR space.
[0085] In some implementations, one or more output devices included in the computing device 1050 can provide output and / or feedback to a user of the VR headset 1090 in the VR space. The output and feedback can be visual, tactile, or auditory. The output and / or feedback can include, but are not limited to, vibration, turning one or more lights or strobes on and off or blinking and / or flashing, sounding an alarm, chiming, playing a song, and playing an audio file. The output devices can include, but are not limited to, vibration motors, vibration coils, piezoelectric devices, electrostatic devices, light emitting diodes (LEDs), strobes, and speakers.
[0086] In some implementations, the computing device 1050 may appear as another object in the computer-generated 3D environment. A user's interaction with the computing device 1050 (e.g., rotating the touchscreen, shaking the touchscreen, touching the touchscreen, swiping a finger on the touchscreen) can be interpreted as an interaction with an object in the VR space. In the example of a laser pointer in the VR space, the computing device 1050 appears as a virtual laser pointer in the computer-generated 3D environment. As the user manipulates the computing device 1050, the user in the VR space sees the movement of the laser pointer. The user receives feedback from the interaction with the computing device 1050 in the VR space on the computing device 1050 or the VR headset 1090.
[0087] In some implementations, in addition to the computing device, one or more input devices (e.g., mouse, keyboard) can be rendered in the computer-generated 3D environment. The rendered input devices (e.g., rendered mouse, rendered keyboard) can be used as rendered in the VR space to control objects in the VR space.
[0088] Computing device 1000 is intended to represent various forms of digital computers, such as laptops, desktops, workstations, personal digital assistants, servers, blade servers, mainframes, and other suitable computers. Computing device 1050 is intended to represent various forms of mobile devices, such as personal digital assistants, mobile phones, smartphones, and other similar computing devices. The components described herein, their connections and relationships, and their functions are intended to be exemplary only and are not intended to limit the implementation of the invention(s) described and / or claimed herein.
[0089] Although several embodiments have been described, it will be understood that various modifications can be made without departing from the spirit and scope of the invention.
[0090] Also, the logic flows depicted in the figures do not require the particular order shown, or sequential order, to achieve desired results. Additionally, other steps may be provided or steps may be eliminated from the described flows, and other components may be added or removed to the described systems. Accordingly, other embodiments are within the scope of the following claims.
Claims
1. 1. A method for locating a controllable device using a wearable device, comprising: Receiving visual data from an image sensor on a wearable device; an object recognition module generating identification data based on the visual data; and using the identification data to identify a first three-dimensional (3D) map from a map database storing a plurality of 3D maps including a first 3D map and a second 3D map, the first 3D map being associated with a first controllable device and the second 3D map being associated with a second controllable device, the method further comprising: obtaining a position of the first controllable device in physical space based on visual positioning data of the first 3D map; and rendering a user interface (UI) object on a display of the wearable device at a position within a threshold distance of the position of the first controllable device.
2. The method of claim 1 , wherein the position comprises a six degree of freedom position of the controllable device.
3. The method of claim 1 or 2, wherein the identification data includes at least one of a device name or a device type of the first controllable device.
4. The method of any one of claims 1 to 3, wherein the identification data comprises a space type of the physical space associated with the first controllable device.
5. A method according to any preceding claim, wherein the identification data is stored in the map database in association with the first 3D map.
6. The method of any one of claims 1 to 5, further comprising comparing the visual data to the first 3D map.
7. The method of any one of claims 1 to 6, further comprising generating the first 3D map during a set-up procedure associated with the first controllable device.
8. The method of any one of claims 1 to 7, wherein the first 3D map includes a feature points map corresponding to virtual cloud anchors configured to be shared with one or more other users.
9. The method of any one of claims 1 to 8, wherein the UI objects include one or more controls that allow a user to control the first controllable device.
10. A program having instructions that, when executed by at least one processor, cause the at least one processor to: receiving visual data from an image sensor on the wearable device; generating, by an object recognition module, identification data based on the visual data; and configuring to use the identification data to identify a first three-dimensional (3D) map from a map database storing a plurality of 3D maps including a first 3D map and a second 3D map, the first 3D map being associated with a first controllable device and the second 3D map being associated with a second controllable device, the instructions further comprising: obtaining, based on the visual positioning data of the first 3D map, a position of the first controllable device in a physical space represented at least in part by the visual data; A program configured to cause a user interface (UI) object to be rendered on a display of the wearable device at a position within a threshold distance of the position of the first controllable device, the UI object including one or more interactive controls for controlling the first controllable device.
11. 11. The program of claim 10, wherein the map database is stored on a server computer, and the instructions, when executed by the at least one processor, are configured to cause the at least one processor to communicate with the server computer to access the map database.
12. 11. The program of claim 10, wherein the map database is stored on the wearable device or a computing device communicatively coupled to the wearable device, and the instructions, when executed by the at least one processor, are configured to cause the at least one processor to communicate with the wearable device or the computing device, respectively, and access the map database.
13. The program of any one of claims 10 to 12, wherein the UI object is configured to provide information about the first controllable device.
14. The method of claim 10, wherein the identification data includes at least one of a device name, a device type, or a space type associated with the first controllable device.
15. The instructions cause the at least one processor to: generating the first 3D map during a setup procedure associated with the first controllable device; A program according to any one of claims 10 to 14, comprising instructions for causing the second 3D map to be generated during a set-up procedure associated with the second controllable device.
16. 16. The method of claim 10, wherein the first 3D map includes a feature points map corresponding to virtual cloud anchors configured to be shared with one or more other users.
17. 1. A computing system for locating a controllable device, comprising: an image sensor configured to receive visual data; an object recognition module configured to generate identification data based on the visual data; a locator configured to identify a first three-dimensional (3D) map from a map database storing a plurality of 3D maps including a first 3D map and a second 3D map using the identification data, the first 3D map being associated with a first controllable device and the second 3D map being associated with a second controllable device, the locator configured to obtain a position of the first controllable device in a physical space based on visual positioning data of the first 3D map, and the computing The system further A computing system comprising: a user interface (UI) object renderer configured to render a UI object on a display of a wearable device at a position within a threshold distance of the position of the first controllable device.
18. The computing system of claim 17 , wherein the computing system comprises the wearable device and a computing device, the computing device communicatively coupled to the wearable device via a wireless connection.
19. 19. A computing system according to claim 17 or 18, wherein the map database is stored in a memory device of the computing system.
20. The map database is stored in a memory device associated with a server computer, and the computing system further comprises:
19. The computing system of claim 17 or 18, further comprising an antenna configured to transmit the identification data to the server computer to identify the first 3D map at the server computer, the antenna configured to receive the visual positioning data from the server computer.
21. The computing system of any one of claims 17 to 20, wherein the computing system comprises a wearable device, the wearable device comprising smart glasses.
22. A program for causing a processor to execute the method according to any one of claims 1 to 9.
Citation Information
Patent Citations
Communication control device, communication control method and program
JP2011164666A
Head-mounted display apparatus, control system, and control method of head-mounted display apparatus
JP2015213212A
Orientation and visualization of virtual objects
JP2016533565A
Information projection system, control device, and information projection method
JP2020098451A
Data set creation method, data set creation device, and data set creation program
JP2020135679A