Patent Description:
In some cases, such computing devices may be configured to communicate with other devices (e.g., over the public Internet via IEEE <NUM> standards (WIFI), over telecommunications channels, or using short range communications techniques such as BLUETOOTH®). By communicating with other devices, such computing devices may provide instructions, commands, or data to the other devices. For example, a mobile phone may communicate a user command to another device. In some traditional applications, though, such techniques of communication between the mobile phone and other computing devices may be slow, cumbersome, computationally inefficient, or prone to errors.

<CIT> discloses a directional operation method applied to an operation implementation device. The method comprises the following steps: obtaining an operation pointing to a target operation device; determining an operation direction, and determining a target operation device matched with the operation direction; and performing an operation on the determined target operation device. The target operation device is determined through the operation with the direction so as to implement the operation on the target operation device.

This disclosure relates to devices for gesture detection that incorporate ultra-wideband (UWB) transceivers. Example embodiments described herein may include a computing device (e.g., a mobile phone) that can be used to control another device (e.g., a television, a speaker, one or more components of an automobile, etc.). The computing device may include a UWB transceiver that can communicate with a UWB transceiver of the controlled device. Based on this communication, the orientation and/or position of the computing device relative to the controlled device can be determined over time. Then, based on this determined orientation and/or position, the computing device may determine if a gesture has been traced out by the computing device (e.g., a swipe, a shake, a rotation, etc.). If a gesture has been traced out by the computing device, the computing device may transmit a command to the controlled device (e.g., to change a channel, to adjust a volume, to unlock a door or a trunk, etc.). This command may be transmitted from the computing device to the controlled device over a UWB channel or using another communication medium (e.g., BLUETOOTH®).

In one aspect, a device as recited in claim <NUM> is provided.

In another aspect, a method as recited in claim <NUM> is provided.

Also disclosed, but not claimed as such, is a system that includes a means-for transmitting, by a first ultra-wideband (UWB) transceiver of a device, a first UWB signal. The system also includes a means-for receiving, by the first UWB transceiver, a second UWB signal. The second UWB signal was transmitted by a second UWB transceiver. The second UWB transceiver corresponds to a first controlled device. The second UWB signal is indicative of an orientation and a position of the first UWB transceiver relative to the second UWB transceiver. Additionally, the system includes a means-for receiving, by a processor of the device executing instructions stored in a memory of the device, the second UWB signal from the first UWB transceiver. Further, the system includes a means-for determining, by the processor executing the instructions stored in the memory of the device based on the second UWB signal, changes in the orientation or the position of the first UWB transceiver relative to the second UWB transceiver. In addition, the system includes a means-for identifying, by the processor executing the instructions stored in the memory of the device, based on the determined changes in the orientation or the position of the first UWB transceiver relative to the second UWB transceiver, one or more gestures traced out by the device. Still further, the system includes a means-for transmitting, by the first UWB transceiver, a command UWB signal to the second UWB transceiver based on the one or more identified gestures. The command UWB signal provides an instruction to the first controlled device.

These as well as other aspects, advantages, and alternatives will become apparent to those of ordinary skill in the art by reading the following detailed description, with reference, where appropriate, to the accompanying drawings.

Example methods and systems are contemplated herein. Any example embodiment or feature described herein is not necessarily to be construed as preferred or advantageous over other embodiments or features. The example embodiments described herein are not meant to be limiting. It will be readily understood that certain aspects of the disclosed systems and methods can be arranged and combined in a wide variety of different configurations, all of which are contemplated herein.

Furthermore, the particular arrangements shown in the figures should not be viewed as limiting. It should be understood that other embodiments might include more or less of each element shown in a given figure. Further, some of the illustrated elements may be combined or omitted. Yet further, an example embodiment may include elements that are not illustrated in the figures.

Described herein are techniques that can be used by a computing device (e.g., a mobile phone, a tablet, a smartwatch, a smart wristband, etc.) to transmit one or more commands to a device that is to be controlled by the computing device. For example, the controlled device may be a television, a speaker, one or more components of an automobile, a smart home hub, a smart light fixture, a camera, a microphone, a smart appliance, a smart lock, etc. The commands transmitted by the computing device to the controlled device may be based on one or more gestures identified by the computing device. Such identified gestures may have been traced out by the computing device (e.g., by a user of the computing device moving the computing device according to a predefined pattern through the air). In some embodiments, the commands may include instructions to modify a volume of the controlled device, power on/off the controlled device, change a channel/station of the controlled device, lock/unlock the controlled device, and/or modify settings of the controlled device (e.g., brightness, contrast, equalization, etc.).

Identifying the gestures by the computing device involves communication between the computing device and the controlled device. Such communication may be initiated by a selection of a specific application, by engaging a specific button within an application on the computing device using a user interface (e.g., a user selecting a gesture-enable button on a streaming service application on a mobile phone), or by enabling a particular feature in a settings menu of the computing device. As described herein, the computing device includes a first UWB transceiver. The first UWB transceiver communicates with a second UWB transceiver of the controlled device. Communicating with the second UWB transceiver includes the first UWB transceiver transmitting a first UWB signal to the second transceiver. Upon receiving the first UWB signal, the controlled device (e.g., a controller of the second UWB transceiver or a processor connected to the second UWB transceiver) may determine an orientation of the first UWB transceiver relative to the second UWB transceiver. Additionally or alternatively, upon receiving the first UWB signal, the controlled device (e.g., a controller of the second UWB transceiver or a processor connected to the second UWB transceiver) may determine a distance (i.e., a range) separating the first UWB transceiver from the second UWB transceiver.

Upon the controlled device determining the orientation and/or the position of the first UWB transceiver relative to the second UWB transceiver, the orientation and/or the position of the first UWB transceiver relative to the second UWB transceiver may then be communicated back to the computing device. For example, the second UWB transceiver may transmit a second UWB signal to the first UWB transceiver, where the second UWB signal contains information indicative of an orientation and a position of the first UWB transceiver relative to the second UWB transceiver. In alternative embodiments, the second UWB transceiver of the controlled device may instead respond to receiving the first UWB signal with a second UWB signal that includes raw data (e.g., data regarding arrival times of the first UWB signal at different antennas within the second UWB transceiver), rather than processed data. This raw data may then be processed by the computing device (e.g., by a controller of the first UWB transceiver or a processor of the computing device) to determine the orientation and/or position of the first UWB transceiver relative to the second UWB transceiver. As such, the raw data contained in the second UWB signal may nonetheless still be indicative of an orientation and a position of the first UWB transceiver relative to the second UWB transceiver.

The computing device transmits a series of UWB signals and receives a corresponding series of UWB signals indicative of the position and orientation of the first UWB transceiver relative to the second UWB transceiver. Each of the transmitted and/or received UWB signals may include an associated timestamp, for example. Using the series of received UWB signals, the computing device (e.g., a processor executing instructions stored in a memory of the computing device) determines changes in the orientation or the position of the first UWB transceiver relative to the second UWB transceiver over time (e.g., based on the timestamps). Based on these determined changes, the computing device identifies one or more gestures traced out by the first UWB transceiver (and, similarly, by the computing device itself). For example, the computing device may trace out a swipe gesture in the air and, correspondingly, the series of transmitted and received UWB signals may indicate a change in position and orientation of the first UWB transceiver relative to the second UWB transceiver that represents the swipe gesture. The one or more gestures are identified by the computing device (e.g., by a processor of the computing device) based on the received UWB signals by comparing the time-evolution of the orientation, the time-evolution of position, or the time-evolution of both orientation and position (or even the raw set of received UWB signals, themselves) to a set of predefined gestures stored within a repository in a memory of the computing device. The predefined gestures may be based on sample gestures previously performed on the computing device by a user (e.g., the user presently using the computing device or by a different user), sample gestures previously performed on a similar computing device by a user (e.g., the user presently using the computing device or a different user), or a machine-learned model that was trained using labelled training data corresponding to UWB signals and/or video footage of users tracing out gestures.

Each gesture may have a corresponding desired action for the controlled device. For example, if the controlled device is a television, a swipe up may correspond to a volume increase, a swipe down may correspond to a volume decrease, a shake may correspond to a toggle in a mute setting, a swipe to the right may correspond to a decrease in channel, a swipe to the left may correspond to a increase in channel, a rotation clockwise (e.g., from the perspective of a user) may correspond to a power on, a rotation counterclockwise (e.g., from the perspective of a user) may correspond to a power off, a series of gestured numbers may correspond to a change in channel to a specific channel number, etc. Such corresponding desired actions may be stored within the repository of the predefined gestures in the memory of the computing device or within a related repository in the memory of the computing device that is mapped to the repository of gestures. The computing device may retrieve the corresponding desired action(s) based on the identified gesture.

Based upon the corresponding desired action(s), the computing device transmits command(s) to the controlled device to take desired action(s). For example, the computing device may transmit a command UWB signal from the first UWB transceiver to the second UWB transceiver that indicates to the controlled device to take the desired action(s). In some embodiments that are not claimed, the command may be transmitted from the computing device to the controlled device using communication channels other than UWB. For example, the computing device may transmit the desired action(s) to the controlled device using BLUETOOTH®, WIFI, infrared signals, etc..

In some embodiments, rather than the computing device transmitting one or more desired command(s) to the controlled device (e.g., using one or more command UWB signals), the computing device may instead transmit one or more identified gestures to the controlled device (e.g., using or more gesture UWB signals). Based on the one or more identified gestures, the controlled device, itself, may determine what action(s), if any, to take. For example, the controlled device may include a memory having a repository stored therein that translates received gestures into actions taken by the controlled device. If the controlled device is a speaker, for instance, the speaker may include a repository that indicates that swipe gestures (e.g., rotations of the computing device about a yaw axis) correspond to a desired change in channel, while rotation gestures (e.g., rotations of the computing device about a roll axis) correspond to a desired change in volume. This may reduce the amount of commands corresponding to gestures that are stored in the memory of the computing device, for example.

As described herein, UWB signals may be communicated (e.g., using UWB transceivers) between a computing device and a controlled device to determine orientation and/or position of the computing device relative to the controlled device and, ultimately, to identify whether one or more gestures have been traced out by the first UWB transceiver / the computing device. Using UWB communication rather than alternatives (e.g., light-detection and ranging (lidar) monitoring, radar monitoring, pure accelerometers, etc.) may improve the accuracy with which gestures are identified by the computing device (e.g., fewer false positive gestures compared to radar techniques resulting from body motion or environmental motion), may improve the precision with which motions of the computing device can be monitored (e.g., improved precision compared to BLUETOOTH® Low Energy (BLE) techniques due to the high bandwidth of the UWB signals), and/or may reduce the energy required by the computing device to determine gestures and/or the energy required by the computing device and the controlled device to communicate gestures / commands based on those gestures (e.g., relative to other communication protocols that consume more power). UWB-based gesture detection can be used for ranges up to <NUM> meters within a line of sight. Additionally, UWB-based gesture detection can work through obstructions, such as walls (i.e., does not require line of sight). For these reasons, UWB-based gesture detection represents improvements on alternative gesture-recognition techniques.

In some embodiments, in addition to using transmitted UWB signals, gestures may be identified by the computing device using other techniques. For example, in some embodiments, the computing device may include an accelerometer. Data gathered from the accelerometer may supplement data received based on the UWB signal communication with the controlled device. In some embodiments, the computing device (e.g., a processor of the computing device) may use both accelerometer data and data indicative of an orientation and position of the first UWB transceiver relative to the second UWB transceiver contained within received UWB signals to determine an orientation and/or position of the computing device relative to the controlled device.

The following description and accompanying drawings will elucidate features of various example embodiments. The embodiments provided are by way of example, and are not intended to be limiting. As such, the dimensions of the drawings are not necessarily to scale.

<FIG> illustrates an example computing device <NUM>. Computing device <NUM> is shown in the form factor of a mobile phone. However, computing device <NUM> may be alternatively implemented as a desktop computer, a laptop computer, a tablet, a wearable computing device (e.g., a watch or a wristband), or a remote control, among other possibilities. Computing device <NUM> may include various elements, such as body <NUM>, display <NUM>, buttons <NUM> and <NUM>, a first UWB transceiver <NUM>, and a first BLUETOOTH® (e.g., BLE) transceiver <NUM>. Computing device <NUM> may further include one or more cameras, such as front-facing camera <NUM> and rear-facing camera <NUM>.

Front-facing camera <NUM> may be positioned on a side of body <NUM> typically facing a user while in operation (e.g., on the same side as display <NUM>). Rear-facing camera <NUM> may be positioned on a side of body <NUM> opposite front-facing camera <NUM>. Referring to the cameras as front and rear facing is arbitrary, and computing device <NUM> may include multiple cameras positioned on various sides of body <NUM>.

Display <NUM> could represent a cathode ray tube (CRT) display, a light emitting diode (LED) display, a liquid crystal (LCD) display, a plasma display, an organic light emitting diode (OLED) display, or any other type of display known in the art. In some examples, display <NUM> may serve as a viewfinder for front-facing camera <NUM> and/or rear-facing camera <NUM>. Display <NUM> may also support touchscreen functions that allow for interaction with aspects of computing device <NUM>.

The first UWB transceiver <NUM> may be usable by the computing device <NUM> to communicate with one or more other devices (e.g., based on one or more processes performed by a processor of the computing device <NUM>). In some embodiments, the first UWB transceiver <NUM> may be internal to the computing device <NUM> (e.g., not visible from the exterior of the computing device <NUM> illustrated in <FIG>). The first UWB transceiver <NUM> may include one or more antennas configured to radiate electromagnetic waves. In some embodiments, the electromagnetic waves radiated by the first UWB transceiver <NUM> may be within the radio portion of the electromagnetic spectrum. Further, the electromagnetic waves radiated by the first UWB transceiver <NUM> may have a relatively large bandwidth (e.g., between <NUM> and <NUM>). In some embodiments, the bandwidth of the electromagnetic waves radiated by the first UWB transceiver <NUM> may meet the definition of UWB provided by the Federal Communications Commission (FCC) (e.g., the bandwidth exceeds the lesser of <NUM> or <NUM>% of the arithmetic center frequency). Alternatively, in some embodiments, the bandwidth of the electromagnetic waves radiated by the first UWB transceiver <NUM> may be less than <NUM> and less than <NUM>% of the arithmetic center frequency (i.e., the electromagnetic waves transmitted by the first UWB transceiver <NUM> may not exactly meet the FCC's definition of UWB). The first UWB transceiver <NUM> may allow for communication with other UWB transceivers at close range and use only small amounts of energy to do so. As such, communicating using the first UWB transceiver <NUM> may conserve battery life for the computing device <NUM> relative to communicating using other techniques.

In addition to transmitting and receiving data to other devices, the first UWB transceiver <NUM> may be used to determine an orientation and a position of the first UWB transceiver <NUM> relative to other UWB transceivers with which it communicates, as described herein. Such orientation and position information may be used by the computing device <NUM> to identify a gesture traced out by the first UWB transceiver <NUM> and/or the computing device <NUM>. Such identified gestures may be used to provide instructions to the computing device <NUM> and/or may be used by the computing device <NUM> to determine commands or other communications to transmit to other devices (e.g., using the first UWB transceiver <NUM> or another communication technique).

The first BLE transceiver <NUM> may be used by the computing device <NUM> to communicate with other BLUETOOTH®-enabled devices over BLUETOOTH® frequencies (e.g., between <NUM> and <NUM>) at relatively short distances (e.g., up to <NUM>). Such BLUETOOTH® communication may occur according to the IEEE <NUM>. <NUM> standard, for example. In some embodiments, the first BLE transceiver <NUM> may be internal to the computing device <NUM> (e.g., not visible from the exterior of the computing device <NUM> illustrated in <FIG>). In some embodiments, the first BLE transceiver <NUM> may be used to broadcast a discovery signal in order to discover other BLUETOOTH®-enabled devices in a vicinity of the computing device <NUM>. Other BLUETOOTH®-enabled devices may respond to the discovery signal (e.g., transmit a response signal that includes identification information or information about a communication protocol) to establish a connection with the computing device <NUM> such that the computing device <NUM>. While the first BLE transceiver <NUM> is described herein as a BLUETOOTH® Low Energy transceiver, it is understood that other types of BLUETOOTH® transceivers or other short-range communications modules could be used instead of or in addition to a BLUETOOTH® Low Energy transceiver.

While not illustrated in <FIG>, it is understood that the computing device <NUM> may also include an inertial measurement unit (IMU). The IMU may be internal to the computing device <NUM> (e.g., not visible from the exterior of the computing device <NUM> illustrated in <FIG>). The IMU may be configured to determine an orientation and/or direction of motion of the computing device <NUM> (e.g., relative to a gravitational field of the Earth) and provide information relative to the orientation and/or direction of motion of the computing device <NUM> to a processor of the computing device <NUM>. In order to determine the orientation and/or direction of motion of the computing device <NUM>, the IMU may include one or more accelerometers, one or more gyroscopes, and/or one or more magnetometers. Such devices may convert physical forces (e.g., gravity or other outside forces applied to the computing device <NUM>, such as by a user) into electric signals, for example, that can be interpreted by a processor of the computing device <NUM>. A processor of the computing device may use the electric signals from the IMU over time to determine absolute position and/or angular orientation of the computing device <NUM> (e.g., using dead reckoning). As described herein, in some embodiments, determinations made by the IMU about the angular orientation and/or position of the computing device <NUM> may be used in addition to communications between the first UWB transceiver <NUM> and other UWB transceivers to determine an angular orientation and/or position of the computing device <NUM> over time.

Computing device <NUM> may also include an ambient light sensor that may continuously or from time to time determine the ambient brightness of an environment in which computing device <NUM> is present. In some implementations, the ambient light sensor can be used to adjust the display brightness of display <NUM>. Additionally, the ambient light sensor may be used to determine an exposure length of one or more of cameras <NUM> or <NUM>, or to help in this determination.

<FIG> is a simplified block diagram showing some of the components of an example computing system <NUM>. By way of example and without limitation, computing system <NUM> may be a cellular mobile telephone (e.g., a smartphone), a computer (such as a desktop, notebook, tablet, or handheld computer), a home automation component, a digital video recorder (DVR), a digital television, a remote control, a wearable computing device (e.g., a smartwatch or a smart wristband), a gaming console, a robotic device, a vehicle, or some other type of device. Computing system <NUM> may represent, for example, aspects of computing device <NUM>. As shown in <FIG>, computing system <NUM> may include communication interface <NUM>, user interface <NUM>, processor <NUM>, and data storage <NUM>, all of which may be communicatively linked together by a system bus, network, or other connection mechanism <NUM>.

Communication interface <NUM> may allow computing system <NUM> to communicate, using analog or digital modulation, with other devices, access networks, and/or transport networks. Thus, communication interface <NUM> may facilitate circuit-switched and/or packet-switched communication, such as plain old telephone service (POTS) communication and/or Internet protocol (IP) or other packetized communication. For instance, communication interface <NUM> may include a chipset and antenna arranged for wireless communication with a radio access network or an access point. Also, communication interface <NUM> may take the form of or include a wireline interface, such as an Ethernet, Universal Serial Bus (USB), or High-Definition Multimedia Interface (HDMI) port. Communication interface <NUM> may also take the form of or include a wireless interface, such as a WIFI, BLUETOOTH®, global positioning system (GPS), or wide-area wireless interface (e.g., WiMAX, 3GPP Long-Term Evolution (LTE), and/or 3GPP <NUM>). However, other forms of physical layer interfaces and other types of standard or proprietary communication protocols may be used over communication interface <NUM>. Furthermore, communication interface <NUM> may include multiple physical communication interfaces (e.g., a WIFI interface; a BLUETOOTH® interface, such as the first BLE transceiver <NUM> shown and described with reference to <FIG>; and a wide-area wireless interface). In some embodiments, the communication interface <NUM> may include the first UWB transceiver <NUM> shown and described with reference to <FIG>.

User interface <NUM> may function to allow computing system <NUM> to interact with a human or non-human user, such as to receive input from a user and to provide output to the user. Thus, user interface <NUM> may include input components such as a keypad, keyboard, touch-sensitive panel, computer mouse, trackball, joystick, microphone, and so on. User interface <NUM> may also include one or more output components such as a display screen which, for example, may be combined with a touch-sensitive panel. The display screen may be based on CRT, LCD, and/or LED technologies, or other technologies now known or later developed. User interface <NUM> may also be configured to generate audible output(s), via a speaker, speaker jack, audio output port, audio output device, earphones, and/or other similar devices. User interface <NUM> may also be configured to receive and/or capture audible utterance(s), noise(s), and/or signal(s) by way of a microphone and/or other similar devices.

In some examples, user interface <NUM> may include a display that serves as a viewfinder for still camera and/or video camera functions supported by computing system <NUM>. Additionally, user interface <NUM> may include one or more buttons, switches, knobs, and/or dials that facilitate the configuration and focusing of a camera function and the capturing of images. It may be possible that some or all of these buttons, switches, knobs, and/or dials are implemented by way of a touch-sensitive panel.

Processor <NUM> may include one or more general purpose processors (e.g., microprocessors) and/or one or more special-purpose processors (e.g., digital signal processors (DSPs), graphics processing units (GPUs), floating point units (FPUs), network processors, or application-specific integrated circuits (ASICs)). In some instances, special-purpose processors may be capable of image processing and/or execution of machine-learning models, among other possibilities. Data storage <NUM> may include one or more volatile and/or non-volatile memories, such as magnetic, optical, flash, or organic storage, and may be integrated, in whole or in part, with processor <NUM>. Data storage <NUM> may include removable and/or non-removable components.

Processor <NUM> may be capable of executing program instructions <NUM> (e.g., compiled or non-compiled program logic and/or machine code) stored in data storage <NUM> to carry out the various functions described herein. Therefore, data storage <NUM> may include a non-transitory computer-readable medium, having stored thereon program instructions that, upon execution by computing system <NUM>, cause computing system <NUM> to carry out any of the methods, processes, or operations disclosed in this specification and/or the accompanying drawings. The execution of program instructions <NUM> by processor <NUM> may result in processor <NUM> using data <NUM>.

By way of example, program instructions <NUM> may include an operating system <NUM> (e.g., an operating system kernel, device driver(s), and/or other modules) and one or more application programs <NUM> (e.g., camera functions, address book, email, web browsing, social networking, audio-to-text functions, text translation functions, and/or gaming applications) installed on computing system <NUM>. Similarly, data <NUM> may include operating system data <NUM> and application data <NUM>. Operating system data <NUM> may be accessible primarily to operating system <NUM>, and application data <NUM> may be accessible primarily to one or more of application programs <NUM>. Application data <NUM> may be arranged in a file system that is visible to or hidden from a user of computing system <NUM>.

Application programs <NUM> may communicate with operating system <NUM> through one or more application programming interfaces (APIs). These APIs may facilitate, for instance, application programs <NUM> reading and/or writing application data <NUM>, transmitting or receiving information via communication interface <NUM>, receiving and/or displaying information on user interface <NUM>, and so on.

In some cases, application programs <NUM> may be referred to as "apps" for short. Additionally, application programs <NUM> may be downloadable to computing system <NUM> through one or more online application stores or application markets. However, application programs can also be installed on computing system <NUM> in other ways, such as via a web browser or through a physical interface (e.g., a USB port) on computing system <NUM>.

<FIG> is an illustration of a system <NUM>, according to example embodiments. The system <NUM> includes computing device <NUM> as shown and described with reference to <FIG> and a controlled device <NUM>. As illustrated in <FIG>, the computing device <NUM> may be a mobile phone. It is understood, however, that other embodiments of the computing device <NUM> are also possible and contemplated herein (e.g., a watch, a wristband, a tablet, a remote control, etc.). Similarly, as illustrated in <FIG>, the controlled device <NUM> may be a television. Likewise, though, it is understood that other embodiments of the controlled device <NUM> are also possible and contemplated herein (e.g., a speaker, a thermostat, a smart-home hub, a desktop computer, a tablet, a kitchen appliance, a washer, a dryer, etc.).

As illustrated, the computing device <NUM> may include a first UWB transceiver <NUM> and a first BLE transceiver <NUM>. Similarly, the controlled device <NUM> may include a second UWB transceiver <NUM> and a second BLE transceiver <NUM>. The first UWB transceiver <NUM> may be configured to transmit and receive UWB signals using one or more antennas. Such UWB signals may correspond to electromagnetic waves in the radio spectrum (e.g., between <NUM> and <NUM>) having a relatively broad bandwidth (e.g., between <NUM> and <NUM>). Similarly, the first BLE transceiver <NUM> may be configured to transmit and receive BLUETOOTH® signals. Such BLUETOOTH® signals may correspond to ultra high frequency (UHF) radio waves having frequencies between <NUM> and <NUM> (e.g., and a lower bandwidth than the UWB signals communicated by the first UWB transceiver <NUM> and the second UWB transceiver <NUM>).

In some embodiments, the first UWB transceiver <NUM> may be configured similarly or identically to the second UWB transceiver <NUM>. For example both the first UWB transceiver <NUM> and the second UWB transceiver <NUM> may be capable of transmitting and receiving UWB signals. Additionally, the first UWB transceiver <NUM> and the second UWB transceiver <NUM> may transmit UWB signals that have the same bandwidth. Further, the first UWB transceiver <NUM> and the second UWB transceiver <NUM> may both include the same number of antennas. In other embodiments, though, the first UWB transceiver <NUM> and the second UWB transceiver <NUM> may be different in one or more ways (e.g., different numbers of antennas, as shown and described with reference to <FIG>). Similarly, the first BLE transceiver <NUM> and the second BLE transceiver <NUM> may be configured similarly or identically to one another. For example, the first BLE transceiver <NUM> and the second BLE transceiver <NUM> may both be configured to both transmit and receive BLUETOOTH® signals. In some embodiments, though, the first BLE transceiver <NUM> and the second BLE transceiver <NUM> may have different components and/or capabilities. For example, the range of the first BLE transceiver <NUM> may be longer than the second BLE transceiver <NUM> or the first BLE transceiver <NUM> may be capable of broadcasting BLUETOOTH® discovery signals, while the second BLE transceiver <NUM> is only capable of responding to discovery signals.

As described above, the first BLE transceiver <NUM> may be configured to transmit a BLUETOOTH® discovery signal. The BLUETOOTH® discovery signal may be used by the computing device <NUM> to discover other BLUETOOTH®-enabled devices in the vicinity of the computing device <NUM>. One or more nearby BLUETOOTH®-enabled devices, such as the controlled device <NUM> using the second BLE transceiver <NUM>, may respond to a BLUETOOTH® discovery signal transmitted by the first BLE transceiver <NUM> to indicate the ability to connect (e.g., to connect for BLUETOOTH® communication or other communication). For example, in the system <NUM> in <FIG>, the first BLE transceiver <NUM> may transmit a BLUETOOTH® discovery signal that is received by the second BLE transceiver <NUM>. In response to the BLUETOOTH® discovery signal, the second BLE transceiver <NUM> may transmit a response signal to the first BLE transceiver <NUM> to indicate to the computing device that the controlled device <NUM> is available to be controlled. Thereafter, the first UWB transceiver <NUM> and the second UWB transceiver <NUM> may communicate with one another to determine an orientation and/or position of the first UWB transceiver <NUM> relative to the second UWB transceiver <NUM>. This communication protocol is shown and described with reference to <FIG>.

While BLUETOOTH® communication using the first BLE transceiver <NUM> and the second BLE transceiver <NUM> may enable efficient discovery (i.e., lower power consumption discovery) of nearby devices to be controlled, it is understood that such a discovery process is not required. In some embodiments, the first UWB transceiver <NUM> may begin transmitting UWB signals to the controlled device <NUM> without first initiating contact using BLUETOOTH (i.e., lower power consumption) signals. As such, in some embodiments, the computing device <NUM> may not include the first BLE transceiver <NUM> and/or the controlled device <NUM> may not include the second BLE transceiver <NUM>.

Regardless how the communication between the computing device <NUM> and the controlled device <NUM> is initiated, the first UWB transceiver <NUM> may communicate with the second UWB transceiver <NUM> to determine an orientation and/or position of the first UWB transceiver <NUM> relative to the second UWB transceiver <NUM>. For example, the first UWB transceiver <NUM> may transmit a first UWB signal to the second UWB transceiver <NUM>. Then, in response, the second UWB transceiver <NUM> may respond with a second UWB signal. The second UWB signal may be indicative of the orientation and/or position of the first UWB transceiver <NUM> relative to the second UWB transceiver <NUM>.

For example, the second UWB signal may have an associated transmission timestamp (e.g., an indication of when the second UWB transceiver <NUM> transmitted the second UWB signal), which can be compared to a reception timestamp (e.g., an indication of when the first UWB transceiver <NUM> received the second UWB signal) to determine transit time. In some examples, the transmission timestamp and/or the reception timestamp may be accurate to within <NUM> ns or less due to the bandwidth (e.g., between <NUM> and <NUM>) used to communicate the second UWB signal. Using the speed of light along with the transit time (i.e., reception timestamp minus transmission timestamp), the distance between the first UWB transceiver <NUM> and the second UWB transceiver <NUM> can be determined (e.g., to an accuracy of between <NUM> and <NUM>). In other embodiments, the controlled device <NUM> (e.g., a processor of the controlled device <NUM>) may instead compare a transmission timestamp to a reception timestamp of a first UWB signal (e.g., a signal sent by the first UWB transceiver <NUM> and received by the second UWB transceiver <NUM>), rather than the second UWB signal sent by the second UWB transceiver <NUM> and received by the first UWB transceiver <NUM>. In this way, the controlled device <NUM> may determine a separation (i.e., range) between the computing device <NUM> and the controlled device <NUM>. This separation may then be transmitted (e.g., as a range value encoded as a series of bits) by the second UWB transceiver <NUM> to the first UWB transceiver <NUM>.

The second UWB signal may also be usable to determine an orientation of the first UWB transceiver <NUM> relative to the second UWB transceiver <NUM> (e.g., to within an accuracy of <NUM>°). For example, if the first UWB transceiver includes two antennas (e.g., separated by half of the center wavelength of the second UWB signal or less), the difference in arrival time between when a first antenna receives the second UWB signal and when a second antenna receives the second UWB signal, along with a predetermined separation between the antennas (e.g., based on manufacturing specifications of the first UWB transceiver <NUM>) and the speed of light, can be used to trigonometrically determine the angular position (e.g., in azimuth and/or elevation) of the second UWB transceiver <NUM> relative to the two antennas of the first UWB transceiver <NUM>. Additionally, the second UWB transceiver <NUM> may transmit an additional UWB signal (e.g., from an additional antenna of the second UWB transceiver <NUM>). In the case where the second UWB transceiver <NUM> transmits multiple response UWB signals from multiple antennas at different locations the response signals can be used to determine the orientation of the first UWB transceiver <NUM> relative to the second UWB transceiver <NUM> in multiple angular directions (e.g., in both azimuthal and elevation directions). Such a determination of the orientation of the first UWB transceiver <NUM> may be based on the speed of light, the predetermined separation between the antennas of the first UWB transceiver <NUM>, and/or the predetermined separation between the antennas of the second UWB transceiver <NUM> from which the different response UWB signals are transmitted.

In some embodiments, a processor (e.g., the processor <NUM> shown and described with reference to <FIG>) of the computing device <NUM> may analyze the second UWB signal received by the first UWB transceiver <NUM> to determine the orientation and/or position of the first UWB transceiver <NUM> relative to the second UWB transceiver <NUM>. Alternatively, a controller associated with the first UWB transceiver may analyze the second UWB signal to determine the orientation and/or position of the first UWB transceiver <NUM> relative to the second UWB transceiver <NUM> and then transmit (e.g., over a system bus, such as the connection mechanism <NUM> shown and described with reference to <FIG>) the orientation and/or position of the first UWB transceiver <NUM> to a processor (e.g., the processor <NUM> shown and described with reference to <FIG>) of the computing device <NUM>. Regardless of how the orientation and/or position of the first UWB transceiver <NUM> relative to the second UWB transceiver <NUM> is determined, the orientation and/or position of the first UWB transceiver <NUM> may be stored within a memory of the computing device <NUM> (e.g., with an associated timestamp).

In some embodiments, upon receiving or determining the orientation and/or position of the first UWB transceiver <NUM> relative to the second UWB transceiver <NUM>, a processor of the computing device <NUM> may perform one or more geometric transformations to determine a position of the entire computing device <NUM> relative to the second UWB transceiver <NUM> and/or relative to the entire controlled device <NUM>. Such transformation(s) may be based on one or more three-dimensional models of the computing device <NUM> and/or controlled device <NUM> stored within a memory of the computing device <NUM>.

Upon the computing device <NUM> (e.g., a processor of the computing device) determining an orientation and/or position of the first UWB transceiver <NUM> relative to the second UWB transceiver <NUM> (and/or upon determining an orientation and/or position of the computing device <NUM>, as a whole, relative to the controlled device <NUM>), the orientation and/or position information may be stored within a repository in a memory of the computing device <NUM> with an associated timestamp. For example, an entry in the repository may include a global timestamp (e.g., in ms), a range (e.g., in meters) between the first UWB transceiver <NUM> and the second UWB transceiver <NUM>, an azimuthal angle (e.g., in degrees) between the first UWB transceiver <NUM> and the second UWB transceiver <NUM>, and an elevation angle (e.g., in degrees) between the first UWB transceiver <NUM> and the second UWB transceiver <NUM>.

By analyzing a series of entries with associated timestamps, the computing device <NUM> (e.g., a processor of the computing device <NUM>) may be able to identify one or more gestures (e.g., a swipe, a rotation, etc.) traced out by the first UWB transceiver <NUM> / computing device <NUM> (e.g., by a user tracing out such gestures with the computing device <NUM> in-hand). For example, the processor of the computing device <NUM> may determine changes in orientation and/or position of the first UWB transceiver <NUM> relative to the second UWB transceiver <NUM> over time (e.g., based on the entries within the repository in the memory of the computing device <NUM>). In some embodiments, prior to attempting to identify one or more gestures, the computing device <NUM> may receive an input (e.g., a user input) that indicates that gestures are to be identified / changes in orientation and/or position of the first UWB transceiver <NUM> are to be determined. Such an input may be a setting selected (e.g., a global setting of the computing device <NUM> or a setting within an application executed by the computing device <NUM>).

The determined changes in orientation and/or position may correspond to one or more gestures. Identifying which, if any, gestures correspond to the series of entries may include the computing device <NUM> (e.g., a processor of the computing device <NUM>) analyzing the determined changes in the orientation or the position of the first UWB transceiver <NUM> relative to the second UWB transceiver <NUM> using a machine-learned model that was trained using labelled training data corresponding to a plurality of predefined gestures. Additionally or alternatively, identifying which, if any, gestures correspond to the series of entries may include the computing device <NUM> (e.g., a processor of the computing device <NUM>) comparing the determined changes in the orientation or the position of the first UWB transceiver114 relative to the second UWB transceiver <NUM> to orientation and position data of one or more stored gestures that correspond to gestures previously traced out by a user of the device (e.g., as a calibration). For example, the computing device <NUM> may prompt a user to perform a calibration swipe gesture and, while the user is performing the calibration swipe gesture with the computing device <NUM>, UWB signals may be transmitted between the first UWB transceiver <NUM> and another UWB transceiver. Based on these UWB signals, the orientation and position of the computing device <NUM> during the calibration swipe gesture may be stored within a memory of the computing device <NUM> for later access (e.g., by a processor when attempting to identify one or more gestures).

In order to have sufficient temporal resolution to perform identification of gestures, the process of the first UWB transceiver <NUM> transmitting a first UWB signal and the second UWB transceiver <NUM> responding with a second UWB signal may be performed periodically at a predefined time interval (e.g., every <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, etc.). The predefined time interval may be set by an application executed by the computing device <NUM>, based on the type of controlled device <NUM> with which the computing device <NUM> is communicating, set by a user, or based on information received by the computing device <NUM> from the second UWB transceiver <NUM> or the second BLE transceiver <NUM>, in various embodiments. Further, the orientation and/or position of the first UWB transceiver <NUM> and/or the computing device <NUM> based on the received second UWB signals may be stored in a repository of the memory of the computing device <NUM> with timestamps corresponding to the predefined time interval (e.g., a first orientation and first position of the first UWB transceiver <NUM> is stored at t<NUM> = <NUM>, a second orientation and second position of the first UWB transceiver <NUM> is stored at t<NUM> = <NUM>, a third orientation and third position of the first UWB transceiver <NUM> is stored at t<NUM> = <NUM>, etc.). Additionally, in some embodiments, there may be a deletion threshold, after which a determined orientation and/or position and associated timestamp are removed from the repository in the memory of the computing device <NUM>. For example, once an entry is more than <NUM> seconds old, that entry may be deleted from the repository in the memory of the computing device <NUM> to free up space for additional entries. It is understood that <NUM> seconds is provided solely as an example and that other deletion thresholds are possible and contemplated herein (e.g., <NUM> seconds, <NUM> seconds, <NUM> seconds, <NUM> seconds, <NUM> seconds, <NUM> seconds, <NUM> seconds, <NUM> seconds, <NUM> seconds, <NUM> seconds, <NUM> seconds, <NUM> seconds, <NUM> seconds, <NUM> seconds, <NUM> seconds, <NUM> seconds, <NUM> seconds, <NUM> seconds, etc.).

In addition to using UWB signals communicated between the first UWB transceiver <NUM> and the second UWB transceiver <NUM> to identify one or more gestures, a computing device <NUM> (e.g., a processor of the computing device <NUM>) may use data provided by one or more IMUs of the computing device <NUM> (e.g., one or more accelerometers of the computing device <NUM>) configured to measure changes in orientation of the computing device <NUM>. The data provided by the one or more IMUs may augment the received UWB signals and be used in conjunction with the received UWB signals when determining an orientation of the computing device <NUM> relative to the controlled device <NUM> and, thereby, when identifying which, if any, gestures have been traced out by the computing device <NUM>.

However a gesture is identified (e.g., solely based on one or more received second UWB signals or based on a combination of one or more received second UWB signals and data from one or more IMUs), once a gesture has been identified, the computing device <NUM> may transmit one or more commands to the controlled device <NUM>. The command(s) may provide the controlled device <NUM> with one or more instructions (e.g., instructions to change a channel, to adjust a volume, to power on/off, etc.). The command(s) provided by the computing device <NUM> may be based on the one or more identified gestures. For example, a swipe gesture may correspond to a channel change command, while a rotation gesture may correspond to a volume up or volume down command (e.g., a clockwise rotation is volume up, while a counterclockwise rotation is volume down). Additionally or alternatively, the command(s) provided by the computing device <NUM> may be based on the type of controlled device <NUM> being communicated with. A swipe gesture may correspond to one type of command for a television (e.g., a change in channel) and a different type of command for a speaker (e.g., an equalization setting).

The command(s) may be communicated from the computing device <NUM> to the controlled device <NUM> in multiple ways. For example, the computing device <NUM> may transmit, from the first UWB transceiver <NUM>, one or more command UWB signals to the second UWB transceiver <NUM>. Additionally or alternatively, the first BLE transceiver <NUM> may transmit one or more command BLE signals to the second BLE transceiver <NUM>. Other techniques for communicating commands are also possible and contemplated herein (e.g., communication over a WIFI network, communication using cellular communication protocols, communication over the public Internet, infrared optical communications, etc.).

In some embodiments, rather than the computing device <NUM> identifying one or more gestures traced out by the first UWB transceiver <NUM>, the controlled device <NUM> may identify such gestures. For example, the second UWB transceiver <NUM> may receive UWB signals transmitted by the first UWB transceiver <NUM>. Such UWB signals may have associated transmission timestamps (e.g., communicated as bits incorporated within the UWB signals). Upon the second UWB transceiver <NUM> receiving the UWB signals (e.g., at multiple antennas), a data entry may be stored within a memory associated with the controlled device <NUM> (e.g., an on-board memory or an associated server memory, such as a cloud memory). The data entry may include the transmission timestamp, as well as one or more reception timestamps (e.g., one reception timestamp for each antenna of the second UWB transceiver <NUM>). After receiving and storing a series of data entries, a processor of the controlled device <NUM> may analyze the series of data entries to identify one or more gestures traced out by the computing device <NUM>.

The processor of the controlled device <NUM> identifying the one or more gestures may include the processor of the controlled device <NUM> analyzing the timestamps of the data entries to determine changes in the orientation and/or position of the first UWB transceiver <NUM> relative to the second UWB transceiver <NUM> over time. The processor of the controlled device <NUM> may then compare the time-evolution of the position and/or orientation of the first UWB transceiver <NUM> relative to the second UWB transceiver <NUM> to predefined gestures stored within a memory associated with the controlled device <NUM> to identify one or more gestures traced out by the first UWB transceiver <NUM> / the computing device <NUM>. Such predefined gestures may correspond to previous gestures identified as being traced out by the computing device <NUM>, to previous gestures identified as being traced out by computing devices other than the computing device <NUM>, to user-defined gestures, or to default gestures.

As described herein, a multitude of different gestures may be identified by the computing device <NUM> and/or the controlled device <NUM> (e.g., a directional swipe, an omnidirectional swipe, a shake, a rotation, a traced-out letter, a traced-out number, a traced-out shape, etc.). <FIG> provide illustrations of four sample gestures that may be performed using the computing device <NUM> and identified by the computing device <NUM> and/or the controlled device <NUM>. <FIG> may represent a vertical shake (e.g., moving the computing device <NUM> back-and-forth in the y-direction, as illustrated). <FIG> may represent a horizontal shake (e.g., moving the computing device <NUM> back-and-forth in the x-direction, as illustrated). <FIG> may represent a swipe (e.g., a horizontal swipe corresponding to rotating the computing device <NUM> about a yaw axis, such as the z-axis, as illustrated). <FIG> may represent a rotation (e.g., a rotation of the computing device <NUM> about a roll axis, such as the y-axis, as illustrated). It is understood that <FIG> are provided solely as examples and that other gestures are also possible and contemplated herein.

<FIG> is a communication flow diagram of a communication protocol <NUM>, according to example embodiments. As illustrated in <FIG>, the communication protocol <NUM> may be performed based on communications between a computing device (e.g., the computing device <NUM> shown and described with reference to <FIG> and <FIG>) and a controlled device (e.g., the controlled device <NUM> shown and described with reference to <FIG>). In particular, the communication protocol <NUM> may include communications between a first UWB transceiver <NUM> of the computing device <NUM>, a first BLE transceiver <NUM> of the computing device <NUM>, a second UWB transceiver <NUM> of the controlled device <NUM>, and a second BLE transceiver <NUM> of the controlled device <NUM>. Further, the communication protocol <NUM> illustrated in <FIG> may be performed to identify one or more gestures performed by the computing device <NUM> and to transmit one or more commands to the controlled device <NUM>.

At step <NUM>, the communication protocol <NUM> may include the first BLE transceiver <NUM> of the computing device <NUM> broadcasting a BLE discovery signal. In some embodiments, broadcasting the BLE discovery signal may correspond to the first BLE transceiver <NUM> transmitting a first BLE signal to the second BLE transceiver <NUM> of the controlled device <NUM>.

At step <NUM>, the communication protocol <NUM> may include the second BLE transceiver <NUM> of the controlled device <NUM> responding to the BLE discovery signal. In some embodiments, the second BLE transceiver <NUM> may receive the broadcasted BLE discovery signal and then, based on the BLE discovery signal, transmit a second BLE signal to the first BLE transceiver <NUM> in response. The second BLE signal may be usable to discover the controlled device <NUM> (e.g., may provide information to the computing device <NUM> regarding communication with the second UWB transceiver <NUM>).

At step <NUM>, the communication protocol <NUM> may include the computing device <NUM> powering on the first UWB transceiver <NUM>. The first UWB transceiver <NUM> may be powered on by the computing device <NUM>, for example, in response to the computing device <NUM> determining that the controlled device <NUM> is available to be controlled based on the second BLE signal transmitted by the second BLE transceiver <NUM>.

At step <NUM>, the communication protocol <NUM> may include the first UWB transceiver <NUM> of the computing device <NUM> transmitting a first UWB signal to the second UWB transceiver <NUM> of the controlled device <NUM>.

At step <NUM>, the communication protocol <NUM> may include the second UWB transceiver <NUM> of the controlled device <NUM> transmitting a second UWB signal to the first UWB transceiver <NUM> of the computing device <NUM>. The second UWB signal may be used to determine the orientation and/or position of the first UWB transceiver <NUM> relative to the second UWB transceiver <NUM>.

At step <NUM>, the communication protocol <NUM> may include the computing device <NUM> (e.g., a processor of the computing device <NUM> or a controller of the first UWB transceiver <NUM>) determining an orientation and/or position of the first UWB transceiver <NUM> relative to the second UWB transceiver <NUM> based on the received second UWB signal transmitted at step <NUM>.

At step <NUM>, the communication protocol <NUM> may include the computing device <NUM> (e.g., a processor of the computing device <NUM>) identifying a gesture based, at least in part, on the determined orientation and position of the first UWB transceiver <NUM> relative to the second UWB transceiver <NUM>. The gesture may also be identified based on previous determined orientations and/or positions of the first UWB transceiver <NUM> relative to the second UWB transceiver <NUM> (e.g., based on changes of the orientation and position of the first UWB transceiver <NUM> relative to the second UWB transceiver <NUM> determined over time), as described herein.

At step <NUM>, the communication protocol <NUM> may include the first UWB transceiver <NUM> of the computing device <NUM> transmitting a command UWB signal to the second UWB transceiver <NUM> of the controlled device <NUM>. The command UWB signal may be based on the gesture identified at step <NUM> of the communication protocol <NUM>.

<FIG> is an illustration of a system <NUM>, according to example embodiments. Like the system <NUM> illustrated in <FIG>, the system <NUM> in <FIG> may include a computing device (e.g., the computing device <NUM> shown and described with reference to <FIG>) and a controlled device <NUM>. However, unlike the system <NUM> of <FIG>, the system <NUM> of <FIG> may also include an additional controlled device <NUM>. The additional controlled device <NUM> may include a third UWB transceiver <NUM>. Though not illustrated in <FIG>, in some embodiments, the additional controlled device <NUM> may include a third BLE transceiver. The third UWB transceiver <NUM> may be the same as the first UWB transceiver <NUM> and/or the second UWB transceiver <NUM>, in some embodiments. Additionally or alternatively, the third UWB transceiver <NUM> may be different than the first UWB transceiver <NUM> and/or the second UWB transceiver <NUM> (e.g., may operate with a different bandwidth, different power, or have a different number of antennas). The additional controlled device <NUM> illustrated in <FIG> is a speaker (e.g., a smart speaker). It is understood that other additional controlled devices are possible and contemplated herein. In some embodiments, the additional controlled device <NUM> may be connected to the controlled device <NUM> (e.g., to play sound corresponding to what is displayed on the television). Alternatively, operation of the additional controlled device <NUM> may be unrelated / unconnected to the controlled device <NUM>.

In the system <NUM>, UWB signals can be transmitted between the first UWB transceiver <NUM> and the second UWB transceiver <NUM> to determine one or more gestures traced out by the first UWB transceiver <NUM> and/or the computing device <NUM>. Similarly, UWB signals can be transmitted between the first UWB transceiver <NUM> and the third UWB transceiver <NUM> to determine one or more gestures traced out by the first UWB transceiver <NUM> and/or the computing device <NUM>. However, because the controlled device <NUM> and the additional controlled device <NUM> are in proximity to one another, it may be difficult to determine whether a gesture performed by the computing device <NUM> was intended to provide a command to the controlled device <NUM> or to the additional controlled device <NUM>. Hence, when a gesture is identified by the computing device <NUM>, a disambiguation technique may be employed to determine for which of the controlled devices <NUM>, <NUM> a gesture was intended. Multiple disambiguation techniques are possible and contemplated herein.

In some embodiments, only certain types of gestures will correspond to certain types of controlled devices. For example, a swipe gesture may only be usable to provide commands to a television while a rotation gesture may only be usable to provide commands to a speaker. In the situation where a gesture is identified that could provide a command to different types of controlled devices present (e.g., a shake gesture corresponds to a command for a television and a command for a speaker) and/or when two instances of the same type of controlled device are present (e.g., two televisions are present close to one another), additional or alternative disambiguation techniques may be employed.

<FIG> provides an additional or alternative disambiguation technique that could be used. As illustrated, a pop-up window <NUM> (e.g., within an application being executed by the computing device <NUM>) may provide selection options to a user on the display <NUM>. For example, a first option <NUM> corresponding to the controlled device <NUM> (e.g., in the system <NUM> of <FIG>, this corresponds to a "television") and a second option <NUM> corresponding to the additional controlled device <NUM> (e.g., in the system <NUM> of <FIG>, this corresponds to a "speaker"). As illustrated, the options <NUM>, <NUM> may be represented in the pop-up window <NUM> as buttons. A button may be engaged (e.g., by a user interacting with a touchscreen) to provide an input to select for which of the controlled devices <NUM>, <NUM> a previous and/or future gesture is intended. Based on the selection of the first option <NUM> or the second option <NUM>, a gesture may be identified in a certain way based on the type of controlled device (e.g., a gesture approximately a swipe would otherwise have been identified, but since swipes do not apply to the type of controlled device selected, the computing device <NUM> reinterprets the swipe as a different type of gesture), a command associated with an identified gesture may be determined based on the type of controlled device, and/or a command UWB signal may be transmitted based on the type of controlled device (e.g., the command UWB signal may include a certain encryption such that only the intended recipient controlled device can interpret the command UWB signal).

In alternative embodiments, the selection among two or more controlled devices may be performed in other ways (e.g., other than selecting buttons on a pop-up window). For example, a setting in an application may be set, an email may be transmitted by the user, a text message may be transmitted by the user, etc..

In still other embodiments, disambiguation may be performed in other ways. For example, a memory of the computing device <NUM> may contain a list of priorities relating to possible controlled devices that could be communicated with by the computing device <NUM>. In such embodiments, when two controlled devices <NUM>, <NUM> are in proximity to one another, and a gesture is identified that could correspond to a command to be issued to either of the two controlled devices <NUM>, <NUM>, the computing device may disambiguate which device the gesture is intended for by determining which of the controlled devices <NUM>, <NUM> has a higher priority. The computing device <NUM> may then determine a command based on the gesture based on the controlled device <NUM>, <NUM> with the higher priority and transmit a command UWB signal to the controlled device <NUM>, <NUM> with the higher priority based on the determined command. In some embodiments, a controlled device priority list may be set by a user of the computing device <NUM>. Alternatively, the controlled device priority list may be based on device type (e.g., all televisions take priority over all speakers, which take priority over all thermostats, etc.).

As described above, the first UWB transceiver <NUM> and the second UWB transceiver <NUM> may be the same as one another or different from one another. As also described above, one of the differences that may exist between the devices is the number and/or position of the antennas within the respective transceivers. Illustrated in <FIG> are different antenna arrangements for the first UWB transceiver <NUM> and the second UWB transceiver <NUM>. The first UWB transceiver <NUM> in <FIG> may be configured to communicate with the second UWB transceiver <NUM> in <FIG>, the first UWB transceiver <NUM> in <FIG> may be configured to communicate with the second UWB transceiver <NUM> in <FIG>, and the first UWB transceiver <NUM> in <FIG> may be configured to communicate with the second UWB transceiver <NUM> in <FIG>. It is understood that <FIG> are provided solely as an example and that other antenna arrangements are also possible and contemplated here. Further, in order to get orientation information based on the UWB signals, at least one of the two UWB transceivers <NUM>, <NUM> may be equipped with two or more antennas.

<FIG> illustrates an antenna arrangement for the first UWB transceiver <NUM> that includes three antennas. <FIG> illustrates an antenna arrangement for the second UWB transceiver <NUM> that includes a single antenna. In some embodiments, the three antennas of the first UWB transceiver <NUM> may be used to triangulate position and/or orientation of the first UWB transceiver <NUM> relative to the second UWB transceiver <NUM> based on a single UWB signal transmitted by the second UWB transceiver <NUM>.

<FIG> illustrates an antenna arrangement for the first UWB transceiver <NUM> that includes two pairs of antennas: a first pair of antennas usable to determine the orientation of the first UWB transceiver <NUM> relative to the second UWB transceiver <NUM> in azimuth and a second pair of antennas usable to determine the orientation of the first UWB transceiver <NUM> relative to the second UWB transceiver <NUM> in elevation. <FIG> illustrates an antenna arrangement for the second UWB transceiver <NUM> that includes a single antenna.

<FIG> illustrates an antenna arrangement for the first UWB transceiver <NUM> that includes a single antenna. <FIG> illustrates an antenna arrangement for the second UWB transceiver <NUM> that includes three antennas. In some embodiments, the three antennas of the second UWB transceiver <NUM> may be used to triangulate position and/or orientation of the first UWB transceiver <NUM> relative to the second UWB transceiver <NUM> based on a single UWB signal transmitted by the first UWB transceiver <NUM>.

As described above, in some systems (e.g., the system <NUM> shown and described with reference to <FIG>) there may be multiple controlled devices in proximity to one another. Additionally or alternatively, there could be a single controlled device that includes multiple UWB transceivers. For example, <FIG> illustrates a system <NUM> that includes a computing device (e.g., the computing device <NUM> shown and described with reference to <FIG>) and a controlled device <NUM>. As illustrated, the computing device <NUM> may include the first UWB transceiver <NUM> and the first BLE transceiver <NUM>. Also as illustrated, the controlled device <NUM> may include a second UWB transceiver <NUM> and a third UWB transceiver <NUM>. Because of the size of the controlled device <NUM>, two UWB transceivers <NUM>, <NUM> may be included such that two UWB transceivers <NUM>, <NUM> are disposed at different locations of the controlled device <NUM> and such that different portions of the controlled device <NUM> can be controlled by the computing device <NUM>. For example, the first UWB transceiver <NUM> may transmit and receive UWB signals from both the second UWB transceiver <NUM> and the third UWB transceiver <NUM> to determine an orientation and/or position of the first UWB transceiver <NUM> relative to the second UWB transceiver <NUM> and the third UWB transceiver <NUM>, respectively. Such communications to determine the orientation and/or position of the first UWB transceiver <NUM> relative to the second UWB transceiver <NUM> and the third UWB transceiver <NUM> may be performed similarly to the techniques described above with reference to <FIG>, for example.

Also as described above, the computing device <NUM> (e.g., a processor of the computing device) may identify one or more gestures traced out by the computing device <NUM>. Then, based on the one or more gestures, the first UWB transceiver <NUM> may transmit a command UWB signal to either the second UWB transceiver <NUM> or the third UWB transceiver <NUM>. In some embodiments, transmitting a command UWB signal to one of the UWB transceivers <NUM>, <NUM> may correspond to using a modulation scheme or other encoding scheme that is unique to the given UWB transceiver that the first UWB transceiver <NUM> is attempting to communicate with. Additionally or alternatively, transmitting a command UWB signal to one of the UWB transceivers <NUM>, <NUM> may correspond to including a code or password in the command UWB signal that is unique to the given UWB transceiver that the first UWB transceiver <NUM> is attempting to communicate with.

Upon identifying the one or more gestures, the computing device <NUM> (e.g., a processor of the computing device <NUM>) may determine whether to transmit a command UWB signal to the second UWB transceiver <NUM> or the third UWB transceiver <NUM> based on the distance between the first UWB transceiver <NUM> and the second UWB transceiver <NUM>, based on the distance between the first UWB transceiver <NUM> and the third UWB transceiver <NUM>, based on the orientation of the first UWB transceiver <NUM> relative to the second UWB transceiver <NUM>, based on the orientation of the first UWB transceiver <NUM> relative to the third UWB transceiver <NUM>, or based on the gesture performed (e.g., swipe, shake, rotation, etc.). In some embodiments, the position of the first UWB transceiver <NUM> relative to the second UWB transceiver <NUM> may be compared to the position of the first UWB transceiver <NUM> relative to the third UWB transceiver <NUM> to determine whether the first UWB transceiver <NUM> is closer to the second UWB transceiver <NUM> or the third UWB transceiver <NUM>. Similarly, in some embodiments, the orientation of the first UWB transceiver <NUM> relative to the second UWB transceiver <NUM> may be compared to the orientation of the first UWB transceiver <NUM> relative to the third UWB transceiver <NUM> to determine whether the first UWB transceiver <NUM> is pointed towards the second UWB transceiver <NUM> or the third UWB transceiver <NUM>.

As an example, if the computing device <NUM> is closer to the second UWB transceiver <NUM> than the third UWB transceiver <NUM> (e.g., closer to the car door than to the rear bumper of the car using the system <NUM> illustrated in <FIG>) and/or if the orientation of the computing device <NUM> / first UWB transceiver <NUM> is such that the computing device is pointed toward the second UWB transceiver <NUM> rather than the third UWB transceiver <NUM> when performing the gesture (e.g., the computing device <NUM> is pointed at the car door rather than the rear bumper of the car, using the system <NUM> illustrated in <FIG>, when performing the gesture), the first UWB transceiver <NUM> may transmit the command UWB signal to the second UWB transceiver <NUM> rather than the third UWB transceiver <NUM>. The command UWB signal may indicate to the controlled device <NUM> to unlock a car door (e.g., as opposed to opening a trunk of the car). Additionally, disambiguation techniques (e.g., the disambiguation techniques shown and described with reference to <FIG>) may be employed by the computing device <NUM> in order to determine to which UWB transceiver to transmit a command UWB signal if it is unclear whether a gesture traced out by the computing device <NUM> is intended for the second UWB transceiver <NUM> or the third UWB transceiver <NUM>.

As indicated above, the command may equally be transmitted to the controlled device <NUM> over the other communication channels (e.g., WIFI, the public Internet, etc.). For example, based on the identified gesture, the computing device <NUM> may transmit an instruction to the controlled device <NUM> to unlock a car door over BLUETOOTH® (e.g., in embodiments where the controlled device <NUM> includes a BLE transceiver). Further, while a car is used as an example controlled device <NUM> in the system <NUM> of <FIG>, it is understood that other types of controlled devices with multiple UWB transceivers are possible and are contemplated herein. Controlled devices may include multiple UWB transceivers when the controlled device is large (e.g., have a length dimension longer than the effective communication distance of UWB signals) or when the controlled device has different functionalities at different positions of the controlled device (e.g., a car door that can lock/unlock or roll down a window and a car trunk that can lock/unlock or open).

<FIG> is a flowchart diagram of a method <NUM>, according to example embodiments. In some embodiments, the method <NUM> may be performed by the computing device <NUM> shown and described with reference to <FIG>.

At block <NUM>, the method <NUM> may include transmitting, by a first ultra-wideband (UWB) transceiver of a device, a first UWB signal.

At block <NUM>, the method <NUM> may include receiving, by the first UWB transceiver, a second UWB signal, wherein the second UWB signal was transmitted by a second UWB transceiver, wherein the second UWB transceiver corresponds to a first controlled device, and wherein the second UWB signal is indicative of an orientation and a position of the first UWB transceiver relative to the second UWB transceiver.

At block <NUM>, the method <NUM> may include receiving, by a processor of the device executing instructions stored in a memory of the device, the second UWB signal from the first UWB transceiver.

At block <NUM>, the method <NUM> may include determining, by the processor executing the instructions stored in the memory of the device based on the second UWB signal, changes in the orientation or the position of the first UWB transceiver relative to the second UWB transceiver.

At block <NUM>, the method <NUM> may include identifying, by the processor executing the instructions stored in the memory of the device, based on the determined changes in the orientation or the position of the first UWB transceiver relative to the second UWB transceiver, one or more gestures traced out by the device.

At block <NUM>, the method <NUM> may include transmitting, by the first UWB transceiver, a command UWB signal to the second UWB transceiver based on the one or more identified gestures, wherein the command UWB signal provides an instruction to the first controlled device.

In some embodiments, the method <NUM> may also include transmitting, by a first BLE transceiver of the device, a first BLE signal. In addition, the method <NUM> may include receiving, by the first BLE transceiver, a second BLE signal, wherein the second BLE signal was transmitted by a second BLE transceiver, wherein the second BLE transceiver corresponds to the first controlled device, and wherein the second BLE signal is usable to discover the first controlled device. Further, the method <NUM> may include receiving, by the processor executing the instructions stored in the memory of the device, the second BLE signal from the first BLE transceiver. Additionally, the method <NUM> may include causing, by the processor executing the instructions stored in the memory of the device based on the received second BLE signal, the first UWB transceiver of the device to transmit the first UWB signal.

The present disclosure is not to be limited in terms of the particular embodiments described in this application, which are intended as illustrations of various aspects. Many modifications and variations can be made, as will be apparent to those skilled in the art. Functionally equivalent methods and apparatuses, in addition to those enumerated herein, will be apparent to those skilled in the art from the foregoing descriptions.

The above detailed description describes various features and functions of the disclosed systems, devices, and methods with reference to the accompanying figures. In the figures, similar symbols typically identify similar components, unless context dictates otherwise. The example embodiments described herein and in the figures are not meant to be limiting. Other embodiments can be utilized, and other changes can be made, without departing from the scope of the claims. It will be readily understood that the aspects of the present disclosure, as generally described herein, and illustrated in the figures, can be arranged, substituted, combined, separated, and designed in a wide variety of different configurations, all of which are explicitly contemplated herein.

With respect to any or all of the message flow diagrams, scenarios, and flow charts in the figures and as discussed herein, each step, block, operation, and/or communication can represent a processing of information and/or a transmission of information in accordance with example embodiments. Alternative embodiments are included within the scope of these example embodiments. In these alternative embodiments, for example, operations described as steps, blocks, transmissions, communications, requests, responses, and/or messages can be executed out of order from that shown or discussed, including substantially concurrently or in reverse order, depending on the functionality involved. Further, more or fewer blocks and/or operations can be used with any of the message flow diagrams, scenarios, and flow charts discussed herein, and these message flow diagrams, scenarios, and flow charts can be combined with one another, in part or in whole.

A step, block, or operation that represents a processing of information can correspond to circuitry that can be configured to perform the specific logical functions of a herein-described method or technique. Alternatively or additionally, a step or block that represents a processing of information can correspond to a module, a segment, or a portion of program code (including related data). The program code can include one or more instructions executable by a processor for implementing specific logical operations or actions in the method or technique. The program code and/or related data can be stored on any type of computer-readable medium such as a storage device including RAM, a disk drive, a solid state drive, or another storage medium.

Moreover, a step, block, or operation that represents one or more information transmissions can correspond to information transmissions between software and/or hardware modules in the same physical device. However, other information transmissions can be between software modules and/or hardware modules in different physical devices.

Claim 1:
A device (<NUM>) comprising:
a first ultra-wideband, UWB, transceiver (<NUM>) configured to transmit and receive UWB signals to communicate with a second UWB transceiver (<NUM>), wherein the UWB signals are indicative of an orientation and a position of the first UWB transceiver relative to the second UWB transceiver, and wherein the second UWB transceiver corresponds to a first controlled device (<NUM>);
a memory (<NUM>), wherein the memory comprises instructions; and
a processor (<NUM>) communicatively coupled to the first UWB transceiver and the memory, characterized in that the processor is configured to execute the instructions to:
determine changes in the orientation or the position of the first UWB transceiver relative to the second UWB transceiver over time based on the UWB signals;
identify, based on the determined changes in the orientation or the position of the first UWB transceiver relative to the second UWB transceiver, one or more gestures traced out by the device; and
cause the first UWB transceiver to transmit either a) a command UWB signal to the second UWB transceiver corresponding to the one or more identified gestures, wherein the command UWB signal provides an instruction to the first controlled device, or b) the one or more identified gestures to the first controlled device using one or more gesture UWB signals.