HK40007123A - System and method for compressing high fidelity motion data for transmission over a limited bandwidth network - Google Patents
System and method for compressing high fidelity motion data for transmission over a limited bandwidth network Download PDFInfo
- Publication number
- HK40007123A HK40007123A HK19130598.6A HK19130598A HK40007123A HK 40007123 A HK40007123 A HK 40007123A HK 19130598 A HK19130598 A HK 19130598A HK 40007123 A HK40007123 A HK 40007123A
- Authority
- HK
- Hong Kong
- Prior art keywords
- motion data
- high fidelity
- data
- fidelity motion
- transmitting
- Prior art date
Links
Description
Copyright notice
This application includes material that may be subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent disclosure, as it appears in the patent and trademark office file or records, but otherwise reserves all copyright rights whatsoever.
Cross Reference to Related Applications
This application claims priority to U.S. patent application No. 15/287,544, filed on 6/10/2016, which is hereby incorporated by reference in its entirety.
Background
Embodiments described in this disclosure relate to the field of activity tracking or location-based tracking, and in particular to optimizing bandwidth utilization in the field.
As the use of wearable devices (e.g., smartwatches, location trackers, etc.) increases, a large amount of data is now being collected by the wearable devices in real-time. Many of these devices require the transmission of collected data to a server for processing, analysis, and visual presentation of the raw collected data.
While the collection and analysis of real-time data (e.g., accelerometer data) provides significant benefits to users of wearable devices (e.g., the ability to monitor movement, track progress, and achieve goals), such benefits contribute to the cost of the user. In particular, many existing systems require all or substantially all of the captured data to be transmitted from the wearable device to the server-based processing system in order to provide accurate and comprehensive visualization. For certain types of data (e.g., mobile data), this may be a large amount of data. For example, if a wearable device collects 1 kilobytes of data per second, the wearable device may theoretically transmit approximately 3 megabytes per hour. Furthermore, if the wearable device transmits this data over a radio network (e.g., a cellular network), the user may need to incur a large fee to transmit (or send) such data.
These problems are magnified for systems used with non-human entities. For example, while a human may be able to manually control data transmission, or may be stationary for a long period of time, wearable devices on non-human entities (e.g., pets) are not subject to such intervention. For example, a wearable tracking device present on a pet may continuously transmit data at any time without interruption in order to accurately monitor the activity of the pet.
Accordingly, there is a need in the art to overcome the above-mentioned deficiencies in wearable device technology. In particular, there is a need in the art to reduce the amount of data transmitted over an overly costly network (e.g., a cellular network) while maintaining the usefulness of the reduced data.
Disclosure of Invention
To overcome the above-described deficiencies, the present disclosure proposes systems, methods and apparatus for compressing high fidelity motion data for transmission over limited bandwidth or high cost networks (e.g., cellular networks).
In one embodiment, the present disclosure describes a method for compressing and transmitting motion data. The method includes receiving high fidelity motion data from a motion sensing device, the high fidelity motion data comprising a plurality of motion data samples; transmitting high fidelity motion data to a server if a high fidelity transmission event occurs; compressing the high fidelity motion data, wherein compressing the high fidelity motion data comprises identifying a subset of the motion data samples and generating a value representing the activity summary based on the subset of the motion data samples; and transmitting the compressed high-fidelity motion data to a server.
In one embodiment, the present disclosure describes an apparatus for compressing and transmitting motion data. The apparatus includes a processor and a non-transitory memory having stored therein computer-executable instructions that are executed by the processor. Computer executable instructions cause the apparatus to receive high fidelity motion data from a motion sensing device, the high fidelity motion data comprising a plurality of motion data samples; transmitting high fidelity motion data to a server if a high fidelity transmission event occurs; compressing the high fidelity motion data, wherein compressing the high fidelity motion data comprises identifying a subset of the motion data samples and generating a value representing the activity summary based on the subset of the motion data samples; and transmitting the compressed high-fidelity motion data to a server.
In one embodiment, the present disclosure describes a system for compressing and transmitting motion data. The system includes a tracking device connected to a network and configured to receive high fidelity motion data from a motion sensing device, the high fidelity motion data comprising a plurality of motion data samples; determining whether a high fidelity transmission event has occurred; transmitting high fidelity motion data to a server if a high fidelity transmission event occurs; compressing the high fidelity motion data if the high fidelity transmission event has not occurred, wherein compressing the high fidelity motion data comprises identifying a subset of the motion data samples and generating a value representing the activity summary based on the subset of the motion data samples; and transmitting the compressed high-fidelity motion data to a server. The system also includes a server connected to the network and configured to receive the high fidelity motion data and the low fidelity motion data from the tracking device; generating one or more visual representations based on the received high fidelity motion data and low fidelity motion data; and transmit the one or more visual representations to the mobile device.
Drawings
The foregoing and other objects, features and advantages of the disclosure will be apparent from the following description of embodiments as illustrated in the accompanying drawings in which reference characters refer to the same parts throughout the various views. The drawings are not necessarily to scale, emphasis instead being placed upon illustrating the principles of the disclosure:
FIG. 1 is a network diagram illustrating a system for transmitting compressed motion data according to some embodiments of the present disclosure;
FIG. 2 is a physical diagram illustrating a tracking device for transmitting compressed motion data according to some embodiments of the present disclosure;
FIG. 3 is a logic block diagram illustrating a tracking device for transmitting compressed motion data in accordance with some embodiments of the present disclosure;
FIG. 4A is a flow diagram illustrating a method for compressing and storing motion data according to some embodiments of the present disclosure;
FIG. 4B is a flow diagram illustrating a method for transmitting stored athletic data according to some embodiments of the present disclosure;
FIG. 5 is a flow diagram illustrating a method for compressing motion data according to some embodiments of the present disclosure;
FIG. 6 is a flow diagram illustrating a method for detecting high fidelity transmission events according to some embodiments of the present disclosure; and
FIG. 7 is an illustration of a user interface for displaying activity data according to some embodiments of the present disclosure.
Detailed Description
The present disclosure now will be described more fully hereinafter with reference to the accompanying drawings, which form a part hereof, and which show, by way of illustration, certain exemplary embodiments. However, the subject matter may be embodied in various different forms and, thus, it is intended that the covered or claimed subject matter be construed as not being limited to any example embodiment described herein; the exemplary embodiments are provided for illustration only. Also, it is intended to present a reasonably broad range of claimed or encompassed subject matter. For example, the subject matter may be embodied as a method, apparatus, component, or system, among others. Thus, an embodiment may take the form of, for example, hardware, software, firmware, or any combination thereof (other than software per se). The following detailed description is, therefore, not to be taken in a limiting sense.
Throughout the specification and claims, terms may have meanings suggested or implied by the context in which they are expressly stated. As such, the phrase "in one embodiment" as used herein does not necessarily refer to the same embodiment, and the phrase "in another embodiment" as used herein does not necessarily refer to a different embodiment. For example, it is intended that the claimed subject matter encompass combinations of example embodiments in whole or in part.
In general, terms may be understood at least in part from the context of usage. For example, as used herein, terms such as "and," "or" and/or "may include a variety of meanings that may depend at least in part on the context in which the terms are used. In general, "or" if used in connection with a listing (e.g., A, B or C) is intended to mean A, B and C for inclusive and A, B or C for exclusive use herein. In addition, the term "one or more" as used herein may be used, at least in part, to describe any feature, structure, or characteristic in the singular or may be used to describe a combination of features, structures, or characteristics in the plural, depending, at least in part, on the context. Similarly, terms such as "a," "an," or "the" may be understood to convey a singular use or to convey a plural use, depending at least in part on the context. In addition, the term "based on" may be understood as not necessarily intended to convey an exclusive set of factors, and may instead allow for the presence of other factors that are not necessarily expressly described, again depending at least in part on the context.
The present disclosure is described below with reference to block diagrams and operational illustrations of methods and apparatus. It will be understood that each block of the block diagrams or operational illustrations, and combinations of blocks in the block diagrams or operational illustrations, can be implemented by means of analog or digital hardware and computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer to alter its functionality as described in detail herein, and may be provided to a special purpose computer, ASIC, or other programmable data processing apparatus, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, implement the functions/acts specified in the block diagrams or operational block or blocks. In some alternative implementations, the functions/acts noted in the blocks may occur out of the order noted in the operational illustrations. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality/acts involved.
These computer program instructions may be provided to a processor of a general purpose computer to change the functionality of the computer for special purposes; may be provided to a special purpose computer; an ASIC; or other programmable digital data processing apparatus, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, perform the functions/acts specified in the block diagrams or operational block or blocks, thereby transforming the functions thereof according to the embodiments herein.
For purposes of this disclosure, a computer-readable medium (or computer-readable storage medium/media) stores computer data, which may include computer program code (or computer-executable instructions) in machine-readable form that is executed by a computer. By way of example, and not limitation, computer-readable media may comprise computer-readable storage media for tangibly or fixedly storing data, or communication media for temporarily interpreting signals containing code. As used herein, computer-readable storage media refers to physical or tangible storage (as opposed to signals) and includes, but is not limited to, volatile and nonvolatile, removable and non-removable media implemented in any method or technology for tangible storage of information, such as computer-readable instructions, data structures, program modules or other data. Computer-readable storage media includes, but is not limited to, RAM, ROM, EPROM, EEPROM, flash memory or other solid state memory technology, CD-ROM, DVD, or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other physical or material medium which can be used to tangibly store the desired information or data or instructions and which can be accessed by a computer or processor.
For the purposes of this disclosure, the term "server" should be understood to refer to a service point that provides processing, databases, and communication facilities. By way of example and not limitation, the term "server" may refer to a single physical processor with associated communication and data storage and database facilities, or it may refer to a network or cluster complex of processors and associated network and storage devices, as well as operating software and one or more database systems and application software that support the services provided by the server. Servers may vary widely in configuration or capability, but in general a server may include one or more central processing units and memory. The Server may also include one or more mass storage devices, one or more power supplies, one or more wired or wireless network interfaces, one or more input/output interfaces, or one or more operating systems, such as Windows Server, Mac OS X, Unix, Linux, FreeBSD, etc.
For purposes of this disclosure, "network" should be understood to refer to a network over which devices may be coupled such that communications may be exchanged, such as between a server and a client device or other type of device, including for example, between wireless devices coupled by a wireless network. The network may also include mass storage, such as Network Attached Storage (NAS), a Storage Area Network (SAN), or other forms of computer or machine readable media. The network may include the internet, one or more Local Area Networks (LANs), one or more Wide Area Networks (WANs), wired type connections, wireless type connections, cellular, or any combination thereof. Similarly, subnets that may employ different architectures or that may be compatible or compatible with different protocols may interoperate within a larger network. For example, various types of devices may be used to provide interoperable capabilities for different architectures or protocols. As one illustrative example, a router may provide links between LANs that are otherwise separate and independent.
The communication links or channels may include, for example, analog telephone lines, such as twisted pair lines, coaxial cables, all-digital or fractional-digital lines including T1, T2, T3, or T4 type lines, Integrated Services Digital Networks (ISDN), Digital Subscriber Lines (DSL), wireless links including satellite links, or other communication links or channels, such as may be known to those skilled in the art. Further, the computing device or other related electronic devices may be remotely coupled to the network, such as by wired or wireless lines or links.
For purposes of this disclosure, "wireless network" should be understood as coupling the client device with the network. The wireless network may employ an independent peer-to-peer (ad-hoc) network, a mesh network, a wireless lan (wlan) network, a cellular network, or the like. Wireless networks may also include systems of terminals, gateways, routers, etc. coupled by radio links, etc. that may move freely, randomly, or organize themselves arbitrarily, such that the network topology may change from time to time or even rapidly.
The wireless network may also employ a variety of network access technologies including Wi-Fi, Long Term Evolution (LTE), WLAN, Wireless Router (WR) network, or 2, 3, or 4 generation (2G, 3G, or 4G) cellular technologies, among others. Network access technologies may enable wide area coverage of devices, such as client devices with different mobility.
For example, the network may enable RF or wireless type communications via one or more network access technologies such as Global System for Mobile communications (GSM), Universal Mobile Telecommunications System (UMTS), General Packet Radio Service (GPRS), Enhanced Data GSM Environment (EDGE), 3GPP Long Term Evolution (LTE), LTE advanced, Wideband Code Division Multiple Access (WCDMA), Bluetooth, 802.11b/g/n, and so forth. A wireless network may include virtually any type of wireless communication mechanism by which signals may be communicated between devices, such as between client devices or computing devices, between or within a network, and the like.
A computing device may be capable of sending or receiving signals, such as via a wired or wireless network, or of processing or storing signals, such as stored in memory as physical memory states, and thus may operate as a server. Thus, a device capable of operating as a server may include, for example, a dedicated rack-mounted server, a desktop computer, a laptop computer, a set-top box, an integrated device combining various features (such as two or more of the features of the aforementioned devices), and so forth. The server may vary widely in configuration or function, but in general the server may include one or more central processing units and memory. The Server may also include one or more mass storage devices, one or more power supplies, one or more wired or wireless network interfaces, one or more input/output interfaces, or one or more operating systems, such as Windows Server, Mac OS X, Unix, Linux, FreeBSD, etc.
Fig. 1 is a network diagram illustrating a system for transmitting compressed motion data according to some embodiments of the present disclosure. As shown in FIG. 1, the system 100 includes a tracking device 102, a mobile device 104, a server 106, and a network 108.
As shown in fig. 1, the tracking device 102 may include a computing device designed to be worn or otherwise carried by a user or other entity (e.g., an animal). In one embodiment, the tracking device 102 may include the hardware shown in FIG. 2. The tracking device 102 may be configured to collect data generated by various hardware components present within the tracking device 102, such as an accelerometer, gyroscope, or other device capable of recording motion data regarding the movement or activity of the tracking device 102.
As discussed in more detail herein, the tracking device 102 may also include processing logic (e.g., a CPU) capable of receiving and processing motion data. In some embodiments, the tracking device 102 may be specifically configured to receive the motion data and pre-process the motion data prior to transmission. In addition to recording and processing the athletic data, the tracking device 102 may also be configured to transmit data including the athletic data to other devices via the network 108. Particular embodiments of processing and transmitting motion data are described more fully with respect to fig. 4-6.
Although illustrated as a single network, the network 108 may include multiple networks that facilitate communication between devices. In one embodiment, the network 108 may comprise a wireless fidelity ("Wi-Fi") network defined by the IEEE 802.11 standard or equivalent. In this embodiment, the network 108 may enable the transmission of motion data from the tracking device 102 to the server 106. Additionally, the network 108 may facilitate data transfer between the tracking device 102 and the mobile device 104. In an alternative embodiment, the network 108 may comprise a mobile network, such as a cellular network. In this embodiment, data may be transferred between the illustrated devices in a manner similar to embodiments in which the network 108 is a Wi-Fi network. It is worth noting, however, that if the network 108 comprises a mobile network, data transmission may be limited or interfered with, which may reduce the bandwidth of the network. Finally, in one embodiment, the network 108 may include a bluetooth network. In this embodiment, the tracking device 102 and the mobile device 104 may be capable of transmitting data between them. However, the server 106 may not be able to communicate with the tracking device 102 and the mobile device 104. Although described separately, the network 108 may include multiple networks. For example, the network 108 may include a Bluetooth network, a Wi-Fi network, and a mobile network that facilitate the transfer of data between the tracking device 102 and the mobile device 104.
The system 100 may also include a mobile device 104. In one embodiment, mobile device 104 may comprise a mobile phone or tablet device. In alternative embodiments, the system 100 may also include a laptop computer, desktop computer, or other personal computing device to perform some of the functions described with respect to the mobile device 104. As previously described, the mobile device 104 may communicate with the tracking device 102 via a Wi-Fi network or a Bluetooth network. In these embodiments, the mobile device 104 may receive motion data from the tracking device 102, as described in more detail herein. Additionally, the tracking device 102 may receive data from the mobile device 104. In one embodiment, the tracking device 102 may receive data regarding the proximity of the mobile device 104 to the tracking device 102 or data regarding a user identification associated with the mobile device 104.
The mobile device 104 (or non-mobile device) may also communicate with the server 106 to receive data from the server 106. For example, the server 106 may include one or more application servers that provide networking applications or Application Programming Interfaces (APIs). In one embodiment, the mobile device 104 may be equipped with an application that communicates with the server 106 via an API to retrieve and present data within the application. In one embodiment, the server 106 may provide a visual representation of the motion data received from the tracking device 102. For example, the visualization data may include a graphic, chart, or other representation of data received from the tracking device 102. An example of a mobile application receiving data from server 106 is shown in fig. 7.
Fig. 2 is a physical diagram illustrating a tracking device for transmitting compressed motion data according to some embodiments of the present disclosure. The device 200 includes a CPU 202, memory 204, non-volatile memory 206, accelerometer 208, GPS receiver 210, cellular transceiver 212, bluetooth transceiver 216, and wireless transceiver 214.
As discussed with respect to fig. 1, device 200 may comprise a computing device designed to be worn or otherwise carried by a user or entity, such as an animal. Device 200 includes accelerometer 208 and GPS receiver 210, which monitor device 200 to identify its location (via GPS transceiver 210) and its acceleration (via accelerometer 208). Although shown as a single component, accelerometer 208 and GPS transceiver 210 may alternatively each include multiple components that provide similar functionality.
Accelerometer 208 generates movement data, as described in more detail herein, and transmits the movement data to other components via CPU 202. In one embodiment, accelerometer 208 may transmit the movement data to CPU 202 for processing, as described in more detail with respect to fig. 4-6. Alternatively to or in combination with the above, accelerometer 208 may transmit the movement data to memory 204 via CPU 202 for short-term storage. In one embodiment, memory 204 may comprise a random access memory device or similar volatile storage device. Alternatively to or in combination with the above, the accelerometer 208 may transmit the movement data directly to the non-volatile memory 206. In this embodiment, the CPU 202 may access the motion data directly from the memory 204. In some embodiments, the non-volatile memory 206 may comprise a solid-state memory device (e.g., a "flash" memory device) or a conventional memory device (e.g., a hard disk). Similarly, the GPS receiver 210 may transmit location data (e.g., latitude, longitude, etc.) to the CPU 202, the memory 204 (via the CPU 202), or the non-volatile storage 206 (via the CPU 202) in a similar manner. In some embodiments, the CPU 202 may comprise a field programmable gate array or a custom application specific integrated circuit.
As shown in fig. 2, the device 200 includes a plurality of network interfaces including a cellular transceiver 212, a wireless transceiver 214, and a bluetooth transceiver 216. As discussed in connection with fig. 1, cellular transceiver 212 enables device 200 to transmit motion data generated by accelerometer 208 and processed by CPU 202 to a server via a mobile or radio network. As discussed more fully with respect to fig. 6, data transmission using the cellular transceiver 212, the wireless transceiver 214, and the bluetooth transceiver 216 may be controlled by the CPU 202 based on detected network conditions. Additionally, the CPU 202 may determine the format and content of data transmitted using the cellular transceiver 212, the wireless transceiver 214, and the bluetooth transceiver 216 based on the detected network conditions.
Fig. 3 is a logic block diagram illustrating a tracking device for transmitting compressed motion data according to some embodiments of the present disclosure. As shown in fig. 3, device 300 includes a GPS receiver 302, an accelerometer 304, a compression unit 306, a memory 308, a CPU310, and a network interface 312.
In the illustrated embodiment, accelerometer 304 records motion data associated with device 300 at a predetermined frequency (e.g., 50 Hz). The motion data may include a large number of data points that represent motion of the device 300 along various axes (e.g., x, y, and z axes), and may also represent acceleration of the device relative to the axes.
Accelerometer 304 may transmit the motion data to compression unit 306 and memory 308. In some embodiments, accelerometer 304 may actively transmit or push data to compression unit 306 and memory 308. Alternatively, accelerometer 304 may transmit data only to compression unit 306 and memory 308 in response to a request for accelerometer data (e.g., a request from CPU 310).
The data transmitted between accelerometer 304 and memory 308 may include unmodified (e.g., "raw" or "high fidelity") motion data. For example, device 300 may be configured such that all motion data generated by accelerometer 304 is automatically stored in memory 308. The memory 308 may include a combination of volatile and non-volatile storage devices, as described in more detail in connection with FIG. 2. Alternatively, or in combination with the above, CPU310 may monitor the storage capacity of memory 308 and allow movement data to be transferred from accelerometer 304 to memory 308 only when memory 308 contains excess capacity. Alternatively, CPU310 may actively manage the excess capacity of memory 308 to ensure availability of the excess capacity. For example, CPU310 may actively "purge" data stored in memory 308 when a high bandwidth network connection is detected. In this manner, the CPU310 may operate the memory 308 as a cache between periods when a high bandwidth connection is available. In an alternative embodiment, accelerometer 304 and GPS receiver 302 may communicate directly with CPU310, rather than through memory 308. In this embodiment, data from accelerometer 304 and GPS receiver 302 may be transmitted directly to CPU310, processed by CPU310, and stored in memory 308 (e.g., stored in a flash memory area).
In addition to the above, accelerometer 304 may be configured to transmit motion data to compression unit 306. The compression unit 306 may, in turn, compress the received motion data to generate compressed (or "low fidelity") motion data. The compression unit 306 then stores the low fidelity motion data in the memory 308. The compression of motion data is described more fully in connection with fig. 4 and 5, and the discussion of the compression of motion data is incorporated herein in its entirety. In one embodiment, compression unit 306 may be implemented within CPU 310. For example, compression unit 306 may include software modules that are executed by CPU 310. In this embodiment, the accelerometer data generated by accelerometer 304 may be transmitted directly to CPU310, where compression unit 306 executing on CPU310 may compress the accelerometer data as discussed herein.
In alternative embodiments, device 300 may store only one of high fidelity or low fidelity data, rather than both. For example, the device 300 may be configured to only store high fidelity motion data when connected to a low bandwidth network, in order to preserve the high fidelity motion data while "streaming" the low fidelity motion data over the network via the network interface 312. Similarly, if connected to a high bandwidth network, the device 300 may simply transmit high fidelity motion data over the network via the network interface 312 without storing the high fidelity motion data.
The CPU310 is capable of controlling access to the memory 308, retrieving data from the memory 308, and transmitting data to the networked devices via the network interface 312. In addition, CPU310 is responsible for monitoring the bandwidth conditions of the network and dynamically selecting whether to send high or low fidelity motion data in response to network bandwidth constraints. In addition, the CPU310 is responsible for identifying triggering conditions or events that can allow transmission of high fidelity motion data over low bandwidth networks. In one embodiment, CPU310 may monitor data received from GPS receiver 302 to identify whether device 300 has left a geofenced area. In response, CPU310 may retrieve the locally stored high fidelity motion data and begin transmitting the high fidelity motion data over a low bandwidth network (e.g., a cellular network). Identifying a trigger condition or event is described more fully in connection with FIG. 6, the discussion of identifying a trigger condition or event being incorporated herein in its entirety.
For example, where device 300 is implemented as a tracking device on an animal collar, a user may design a geofence corresponding to a property boundary of the user's property or a subset thereof. Alternatively, the geofence may be automatically generated based on monitoring the strength of the Wi-Fi network at a predetermined location (e.g., the user's home). While within the geo-fenced area, device 300 can transmit high fidelity motion data over the wireless interface because the wireless network provides high speed broadband access without additional service cost (as compared to cellular networks). However, at some point, an animal equipped with device 300 may leave the geofenced area. In one embodiment, CPU310 may identify such a departure by monitoring the latitude and longitude of the device received from GPS receiver 302 and comparing the coordinates to the geo-fence coordinates. Alternatively, CPU310 may identify the departure by detecting the loss of a Wi-Fi signal. In response, CPU310 may stop transmitting data using the Wi-Fi interface and may begin transmitting data over the cellular interface. In addition, CPU310 may only transmit low fidelity motion data over a cellular interface and may limit the frequency at which such transmissions are made. In this manner, CPU310 limits the amount of data transferred, thereby limiting the cost incurred by device 300. Finally, CPU310 can then detect that the device has re-entered the geo-fenced area. As with detecting departure, CPU310 may detect reentry by detecting the presence of a known Wi-Fi network or by analyzing GPS coordinates of the device. In response to the re-entry, the CPU310 may revert to transmitting high fidelity motion data over a wireless or bluetooth network.
Although shown in the alternative, in one embodiment, device 300 may also be configured to transmit high fidelity and low fidelity motion data when connected to a high bandwidth network. In this embodiment, the transmission of high fidelity and low fidelity motion data may allow the server-side processing routine to improve the compression techniques used by the compression unit 306.
Fig. 4A is a flow diagram illustrating a method for compressing and storing motion data according to some embodiments of the present disclosure.
In step 402, the method 400a receives accelerometer data. In one embodiment, the accelerometer data comprises a multi-dimensional set of data points generated by the accelerometer device at a predetermined frequency. For example, the accelerometer data may include three-dimensional data corresponding to movement of a device housing the accelerometer device. That is, the accelerometer data may include data points on the x-axis, y-axis, and z-axis. In particular, for each axis, the accelerometer data may indicate acceleration of the device along each axis as a floating point value. In some embodiments, the accelerometer data may also include gyroscope data that measures rotation about each of the axes. As previously described, accelerometer data may be generated by one or more accelerometers and transmitted to a processor or other device via a data bus. In one embodiment, the method 400a may receive accelerometer data at predetermined intervals based on the frequency of the accelerometer (e.g., the accelerometer may be polled by a CPU or other device). Alternatively, the method 400a may receive accelerometer data as a stream of data points (or "fire hose").
In step 404, the method 400a compresses the high fidelity motion data. In one embodiment, compressing the high fidelity movement data may include analyzing a set of individual movement data points and converting the set of individual points to a single value (or data structure) representing the summary of the activity represented by the set of individual points. For example, if the motion data received in step 402 was sampled over a one minute period and contained three thousand data points (e.g., at 50Hz) in three directions (e.g., x, y, and z) for a total of 9,000 data points, the method 400a may compress these 9,000 data points into a single value representing the activity summary over the period. For example, if all 9,000 data points exhibit little or no change, the method 400a may compress the data points by indicating a zero (0) activity level, which may include a number (e.g., 0) and/or other values (e.g., textual representations such as "still"), which significantly compresses the raw data. Conversely, if 9,000 data points indicate acceleration along the x-axis or the y-axis, the method 400a may compress the data points into an integral representation of velocity. For example, the change in speed may be graded on a scale of 1 to 10 representing activity level, and/or the change in speed may include a brief description (e.g., "running," "walking," or "jumping" for z-axis changes). The compression performed in step 404 will be described more fully with respect to fig. 5 and will not be repeated here for the sake of clarity.
After compressing the high fidelity motion data in step 406, the method 400a stores the compressed data. As previously described, storing the compressed data may include storing the compressed data in volatile memory and/or non-volatile memory. In one embodiment, the method 400a may store the compressed data in a non-volatile memory upon detecting that there is no network access. Alternatively, the method 400a may forgo storing low fidelity data upon detecting network access.
In step 408, the method 400a optionally stores high fidelity data. The high fidelity motion data may include raw accelerometer data along multiple axes. In an alternative embodiment, the high fidelity motion may include compressed accelerometer data, wherein the raw accelerometer data is compressed using an undistorted or substantially undistorted compression algorithm. In one embodiment, the method 400a stores all of the data received in step 402 in memory or non-volatile memory. In an alternative embodiment, the method 400a may only store high fidelity motion data in memory and may forego long term storage. For example, if it is detected that a high bandwidth network connection is available (e.g., Wi-Fi), the method 400a may skip the storage of high fidelity motion data. Alternatively, the method 400a may also store high fidelity motion data only if it is determined that sufficient capacity exists for each high fidelity motion data point. In an alternative embodiment, the method 400a may clean the received data prior to storage. For example, the method 400a may filter outlier data points or perform other cleanup operations on the received data.
Fig. 4B is a flow diagram illustrating a method for transmitting stored athletic data according to some embodiments of the present disclosure.
In step 410, the method 400b retrieves motion data. In one embodiment, the method 400b may retrieve motion data generated according to the process shown in FIG. 4A. In one embodiment, the retrieval of high fidelity motion data may be based on streaming or batch processing. For example, the method 400b may save high fidelity motion data in a buffer pool until a predetermined amount of data has been saved in the buffer pool prior to transmission. In one embodiment, method 400b may be performed in parallel with method 400 a. Alternatively, the method 400b may be performed serially with the method 400 a.
In step 412, the method 400b detects whether a high bandwidth network is available. In one embodiment, step 412 may comprise receiving an indication to connect a device implementing method 400B shown in fig. 4B to a high bandwidth network (e.g., Wi-Fi). That is, step 412 may include querying the status of the wireless network adapter to determine whether the adapter is connected to a wireless or Bluetooth network.
In step 414, if the method 400b determines that a high bandwidth network is available, the method 400b may transmit high fidelity motion data to the server device, for example.
As indicated above, if the method 400b determines that the current network is a limited network (i.e., a network that provides limited bandwidth and/or a high cost per unit of transmission), then step 412 prevents transmission of high fidelity motion data (and thus prevents transmission of large volumes of motion data). However, in some cases, the method 400b may continue to transmit high fidelity motion data despite being connected to a low bandwidth network. Specifically, in step 416, the method 400b determines whether a trigger condition has occurred. In the illustrated embodiment, the triggering condition is an event or interrupt that forces the method 400b to transmit high fidelity motion data over a low bandwidth network. For example, the user may explicitly request the method 400b to transmit high fidelity motion data over a low bandwidth network. Alternatively or in combination with the foregoing, the preset timer may automatically transmit any stored high fidelity motion data over the low bandwidth network after the timer expires (to prevent storage overflow). Additional trigger conditions will be discussed more fully with respect to fig. 6 and will not be repeated here for the sake of clarity.
If a trigger condition occurs, the method 400b transmits high fidelity motion data, as previously discussed with respect to step 414. Alternatively, if the method 400b fails to detect the occurrence of the trigger condition in step 416, the method 400b transmits the compressed data in step 418.
In step 418, the method 400b transmits the compressed data. In one embodiment, transmitting the compressed data may include transmitting the compressed data (e.g., a numerical value) according to a predetermined interval (e.g., once per minute). As previously described, the method 400b may only transmit compressed data when connected to a low bandwidth network. In an alternative embodiment, method 400b may additionally transmit data when connected to a high bandwidth network in order to improve step 404 of fig. 4A as previously described.
Fig. 5 is a flow diagram illustrating a method for compressing motion data according to some embodiments of the present disclosure.
In step 502, the method 500 receives accelerometer data. In the illustrated embodiment, the method 500 may receive a set of data points corresponding to a predetermined interval. For example, method 500 may be invoked once per minute. In one embodiment, method 500 receives accelerometer data from a storage device, such as a memory or a non-volatile storage device, as previously described.
In step 504, the method 500 selects the axis identified in the accelerometer data. As previously described, the accelerometer data may include acceleration data for multiple axes (e.g., x-axis, y-axis, and z-axis) over a given time interval (e.g., one minute).
In step 506, the method 500 calculates a rate of change of data associated with the selected axis. Since the data for a given axis includes a time series of acceleration data points, the method 500 may calculate the rate of change by determining the slope and/or amplitude of the data points. As one example, the method 500 may determine that the acceleration is zero for all data points along a given axis, and thus may calculate a zero rate of change indicating that the velocity is constant. As a second example, the method 500 may determine that the acceleration is a constant value for all data points along a given axis, and thus may indicate a rate of change equal to the average acceleration. As a third example, the method 500 may integrate the received data points to calculate a velocity and record the velocity as a rate of change. It is worthy to note that the foregoing examples are not intended to be exhaustive, and that other techniques may exist to convert the list of acceleration data points to values representing device movement.
After calculating the rate of change in step 506, the method 500 determines if there are any remaining axes in step 508, and calculates the rate of change for each remaining axis. In one embodiment, method 500 may simply determine movement based on the rate of change of the other axis and ignore the remaining axes. That is, the method 500 may ignore the y-axis and the z-axis when determining movement along the x-axis.
In step 510, the method calculates an activity summary based on the calculated rate of change. For example, the method 500 may combine the rates of change into a total rate of change across all axes. Alternatively, the method 500 may average the rate of change on each axis to determine an average rate of change across all axes. Additionally, the method 500 may normalize the calculated rate of change to obtain an activity summary defined within a predetermined range. For example, the method 500 may normalize the rate of change and classify the rate of change according to a scale of 0 to 10 (e.g., 0 for no movement and 10 for strong movement).
In step 512, the method 500 may optionally classify the activity. In one embodiment, the method 500 may determine that movement along one axis represents a type of activity, while movement along other axes represents other activities. For example, the method 500 may determine that small movements in the x-axis and y-axis, in combination with substantial movement in the z-axis, may represent "jumping" activity. Alternatively, or in conjunction with the foregoing, the method 500 may assign text labels to the activities (e.g., "run," "walk," etc.) and combine the text labels with the calculated summary of the activity.
As shown in the above description of fig. 5, method 500 allows for significant compression of motion data while retaining operational information about the motion data. As previously mentioned, accelerometer data may produce a large amount of data when the data is collected for a given minute. For example, if a data point on a given axis is represented by a four byte floating point value, a single sample includes at least twelve bytes of information. Captured at 50Hz, this will produce 600 bytes of information per second, which is equivalent to about 36 kilobytes per minute, 2 megabytes per hour, 52 megabytes per day, and 1.5 gigabytes per month. Even by reducing the sampling period of the raw motion data to once per minute, high fidelity motion data of approximately 1 megabyte per day is produced. In contrast, many cellular data plans offered with wearable devices have significantly lower data limits, typically as low as 500 kilobytes of data transfer per month.
By implementing the compression technique shown in fig. 5, significant compression can be achieved and data can be transmitted over the cellular network without incurring excessive costs. For example, if a compressed data packet includes an activity summary value that transmits a single four bytes per minute, the monthly data transmission will be reduced by many orders of magnitude to about 173 kilobytes. Even increasing the compressed data size to 10 kilobytes per minute (e.g., to account for additional information) results in a monthly transfer volume of approximately 432 kilobytes.
However, it is worth noting that transmitting only compressed data necessarily results in a loss of bandwidth separation. Accordingly, embodiments disclosed herein describe techniques for intelligently switching between the transmission of low fidelity data and high fidelity data, as described in more detail in connection with fig. 6.
Fig. 6 is a flow diagram illustrating a method for detecting high fidelity transmission events according to some embodiments of the present disclosure.
In step 602, the method 600 starts a timer and in step 604, high fidelity motion data is stored. In the illustrated embodiment, the stored high fidelity motion data includes the raw data received from the accelerometer, as previously described. Although shown as sequential steps, steps 602 and 604 may be explicitly performed simultaneously in different processes, and communication of timer expiration may be performed in parallel.
In steps 606 through 614, the method 600 determines in step 616 whether there are any conditions that require transmission of high fidelity motion data. As previously described, when the method 600 determines that no condition exists (at step 614), then the method 600 may continue to store high fidelity motion data. At the same time, compressed data corresponding to the stored motion data may be transmitted as described in more detail in connection with fig. 4 and 5. As will be discussed, each trigger or condition in steps 606 through 614 may cause the method 600 to transmit high fidelity data. Additionally, the occurrence of a trigger or satisfaction of a condition may additionally trigger additional actions not shown in fig. 6 but previously discussed. For example, in addition to transmitting data in step 616, the method 600 may also clear the storage of high fidelity motion data in order to manage storage capacity. Alternatively or in combination with the foregoing, the method 600 may additionally transmit compressed data and high fidelity motion data in step 616.
In step 606, the method 600 determines whether a high bandwidth network is available. If so, the method 600 will transmit the stored high fidelity motion data in step 616, and if not, the method 600 continues to step 608. In one embodiment, determining whether a high bandwidth network is available may include monitoring the status of the wireless transceiver to determine whether the transceiver is connected to a known (or public) wireless network. In an alternative embodiment, determining whether a high bandwidth network is available may include determining whether a bluetooth connection between the tracking device and the mobile device is available.
In step 608, the method 600 determines whether a system reset event has been triggered. If so, the method 600 will transmit the stored high fidelity motion data in step 616, and if not, the method 600 continues to step 610. In one embodiment, a system reset may include restarting the device implementing method 600. For example, the method 600 may detect that the operating system of the device implementing the method 600 is incompletely restarted, and may automatically attempt to transmit high fidelity motion data. In this example, the method 600 may transmit high fidelity motion data in anticipation of possible device damage or data loss. In some embodiments, a system reset event may include an event indicating that the device may subsequently reboot (e.g., due to an update or unexpected reboot). In these embodiments, the method 600 may transmit high fidelity motion data to prevent data loss or corruption, or to increase storage capacity for updates.
In step 610, the method 600 determines whether the geofence has been breached. If so, the method 600 transmits the stored high fidelity motion data in step 616, and if not, the method 600 continues to step 612. As previously described, in some embodiments, the method 600 may determine that the device implementing the method 600 has breached the geofence by detecting loss of a Wi-Fi signal or using GPS location. In these embodiments, a breach of the geofence may indicate an emergency situation (e.g., an animal outlier) that requires higher fidelity athletic data in order to monitor the location and movement of the device implementing method 600. Thus, the method 600 may allow high fidelity motion data transmission when a device breaches a geofence, and may subsequently disable high fidelity motion data transmission when re-entering the geofenced area.
In step 612, the method 600 determines whether the user has requested manual upload of high fidelity motion data. If so, the method 600 transmits the stored high fidelity motion data in step 616, and if not, the method 600 continues to step 614. The user may actively request transmission of high fidelity motion data, as shown in step 612. For example, the remote user may wish to view higher fidelity data regarding pet movement, and thus may request transmission of high fidelity athletic data despite the increased cost of transmitting the high fidelity athletic data over the radio network.
In step 614, the method 600 determines whether the timer has expired. If so, the method 600 transmits the stored high fidelity motion data in step 616, and if not, the method 600 continues to store the high fidelity motion data in step 604. If the aforementioned triggers or conditions are not met, the method 600 may automatically transmit high fidelity motion data when a predetermined amount of time has elapsed. In one embodiment, rather than monitoring storage capacity, method 600 may allocate a known amount of storage space for high fidelity motion data. By allocating a fixed amount of memory (e.g., in a separate flash memory device), method 600 may be able to calculate the maximum amount of cellular transmission time and may set a timer accordingly to clear the local memory.
It is noted that the above-described triggers and conditions 606 to 614 may be used in combination or separately, and in different combinations, according to actual needs. In addition, further triggers and conditions may be utilized depending on the environment, technology, or user needs. Thus, the triggers or conditions described above are not meant to limit the scope of the triggers and conditions used by method 600, but rather are used as examples of the triggers and conditions used by method 600.
FIG. 7 is an illustration of a user interface for displaying activity data according to some embodiments of the present disclosure.
Screen 702 shows a user interface displaying a time series view of the activity of a pet equipped with a tracking device, which in various embodiments discloses and implements the foregoing methods. As shown in screen 702, an active graphical timeline 702a is presented that presents an amount of movement throughout the day. As described above, the timeline 702a may be generated based on compressed data received by a server. In particular, the activity value summary may represent the y-axis and time the x-axis in the timeline 702 a. As previously described, the timeline 702a may be further refined with high fidelity motion data.
The screen 702 additionally shows detailed events 702b and 702 c. Specifically, event 702b shows a "walk" event, while 702c shows a "play" event. As previously described, the compressed data transmitted to the server may indicate an activity classification derived from the high fidelity motion data. For example, a walking event 702b may be so classified as moving continuously at a moderate rate. In contrast, play event 702c may be so classified due to high acceleration followed by a short period of inactivity. In contrast, in embodiments where the tracking device only transmits an activity value summary, events 702b and 702c may only be determined when high fidelity motion data is received. In this embodiment, events 702b and 702c may include only timestamps and durations, and the event type may be omitted until high fidelity motion data is received.
For purposes of this disclosure, a module is a software, hardware, or firmware (or combination thereof) system, process, or function, or component thereof (with or without human interaction or enhancement) that performs or facilitates a process, feature, and/or function described herein. The module may include sub-modules. Software components of the modules may be stored on computer-readable media for execution by the processor. The modules may be integral to, or loaded and executed by, one or more servers. One or more modules may be grouped into engines or applications.
For purposes of this disclosure, the terms "user," "subscriber," "consumer," or "customer" should be understood to refer to a user of one or more applications described herein and/or a consumer of data provided by a data provider. By way of example and not limitation, the term "user" or "subscriber" may refer to a person receiving data provided by a data or service provider over the internet in a browser session, or may refer to an automated software application that receives data and stores or processes the data.
Those skilled in the art will recognize that the methods and systems of the present disclosure may be implemented in many ways and, thus, are not limited by the foregoing exemplary embodiments and examples. In other words, functional elements that are implemented as single or multiple components (in various combinations of hardware and software or firmware and various functions) may be distributed among software applications at either the client-level or the server-level, or both. In this regard, any number of the features of the different embodiments described herein may be combined into a single or multiple embodiments, and alternate embodiments having fewer than or more than all of the features described herein are possible.
The functionality may also be distributed, in whole or in part, among multiple components, in manners now known or to become known. Thus, the functions, features, interfaces, and preferences described herein may be implemented with a wide variety of software/hardware/firmware combinations. Moreover, the scope of the present disclosure encompasses conventionally known manners for carrying out the described features and functions and interfaces, as well as those variations and modifications that may be made to the hardware or software or firmware components described herein, as will now and in the future be understood by those skilled in the art.
Furthermore, embodiments of the methods presented and described as flow diagrams in this disclosure are provided by way of example in order to provide a more complete understanding of the technology. The disclosed methods are not limited to the operations and logic flows presented herein. Alternative embodiments are contemplated in which the order of various operations is changed, and in which sub-operations described as part of larger operations are performed independently.
While various embodiments have been described for purposes of this disclosure, these embodiments should not be construed to limit the teachings of this disclosure to those embodiments. Various changes and modifications may be made to the elements and operations described above to achieve results that remain within the scope of the systems and methods described in this disclosure.
Claims (20)
1. A method for compressing and transmitting motion data, the method comprising:
receiving high-fidelity motion data from a motion sensing device, the high-fidelity motion data comprising a plurality of motion data samples;
transmitting the high fidelity motion data to a server;
compressing the high fidelity motion data, wherein compressing the high fidelity motion data comprises identifying a subset of the motion data samples and generating a value representing the activity summary based on the subset of the motion data samples; and
and transmitting the compressed high-fidelity motion data to a server.
2. The method of claim 1, wherein receiving high fidelity motion data from a motion sensing device comprises receiving high fidelity motion data from one or more accelerometers.
3. The method of claim 2, wherein the high fidelity motion data comprises acceleration data collected for at least one axis.
4. The method of claim 1, wherein receiving high fidelity motion data from a motion sensing device comprises receiving high fidelity motion data according to a predetermined interval.
5. The method of claim 1, wherein transmitting high fidelity motion data to a server comprises transmitting high fidelity motion data to the server after determining that a Wi-Fi or bluetooth network is available.
6. The method of claim 1, wherein transmitting high fidelity motion data to the server comprises transmitting the high fidelity motion data to the server after determining that a trigger condition has been met, the trigger condition selected from the group consisting of a system reset, a geo-fence breach, a manual push, or a timer expiration.
7. The method of claim 1, wherein compressing high fidelity motion data comprises:
identifying a subset of high fidelity motion data, wherein the high fidelity motion data contains a plurality of data points for a plurality of axes;
selecting one or more axes of a plurality of axes;
calculating a rate of change of the selected axis; and
an activity summary is calculated based on the calculated rate of change for the selected axis.
8. The method of claim 1, further comprising generating a plurality of activity visualizations based on the compressed high fidelity motion data.
9. The method of claim 8, further comprising updating the plurality of activity visualizations after transmitting high fidelity motion data corresponding to the compressed high fidelity motion data.
10. An apparatus for compressing and transmitting motion data, the apparatus comprising:
a processor; and
a non-transitory memory storing computer-executable instructions that, when executed by the processor, cause the apparatus to:
receiving high-fidelity motion data from a motion sensing device, the high-fidelity motion data comprising a plurality of motion data samples;
transmitting the high fidelity motion data to a server;
compressing the high fidelity motion data, wherein compressing the high fidelity motion data comprises identifying a subset of the motion data samples and generating a value representing the activity summary based on the subset of the motion data samples; and
and transmitting the compressed high-fidelity motion data to a server.
11. The apparatus of claim 10, wherein receiving high fidelity motion data from the motion sensing device comprises receiving high fidelity motion data from one or more accelerometers.
12. The apparatus of claim 11, wherein the high fidelity motion data comprises acceleration data collected for at least one axis.
13. The apparatus of claim 10, wherein receiving high fidelity motion data from the motion sensing device comprises receiving high fidelity motion data according to a predetermined interval.
14. The apparatus of claim 10, wherein transmitting high fidelity motion data to the server comprises transmitting high fidelity motion data to the server after determining that a Wi-Fi or bluetooth network is available.
15. The apparatus of claim 10, wherein transmitting high fidelity motion data to the server comprises transmitting the high fidelity motion data to the server after determining that a trigger condition has been met, the trigger condition selected from the group consisting of a system reset, a geo-fence breach, a manual push, or a timer expiration.
16. The apparatus of claim 10, wherein compressing high fidelity motion data comprises:
identifying a subset of high fidelity motion data, wherein the high fidelity motion data contains a plurality of data points for a plurality of axes;
selecting one or more axes of a plurality of axes;
calculating a rate of change for the selected axis; and
an activity summary is calculated based on the calculated rate of change for the selected axis.
17. The apparatus of claim 10, wherein the non-transitory memory further has stored therein computer-executable instructions that, when executed by the processor, cause the apparatus to generate a plurality of activity visualizations based on the compressed high fidelity motion data.
18. The apparatus of claim 17, wherein the non-transitory memory further has stored therein computer-executable instructions that, when executed by the processor, cause the apparatus to update the plurality of activity visualizations after transmitting high-fidelity motion data corresponding to the compressed high-fidelity motion data.
19. A system for compressing and transmitting motion data, the system comprising:
a tracking device connected to a network, configured to:
receiving high-fidelity motion data from a motion sensing device, the high-fidelity motion data comprising a plurality of motion data samples;
transmitting the high fidelity motion data to a server;
compressing the high fidelity motion data, wherein compressing the high fidelity motion data comprises identifying a subset of the motion data samples and generating a value representing the activity summary based on the subset of the motion data samples; and
transmitting the compressed high-fidelity motion data to a server;
a server connected to a network, configured to:
receiving high fidelity and low fidelity motion data from a tracking device;
generating one or more visualizations based on the received high and low fidelity motion data; and
the one or more visualizations are transmitted to the mobile device.
20. The system of claim 19, wherein compressing high fidelity motion data comprises:
identifying a subset of high fidelity motion data, wherein the high fidelity motion data contains a plurality of data points for a plurality of axes;
selecting one or more axes of a plurality of axes;
calculating a rate of change for the selected axis; and
an activity summary is calculated based on the calculated rate of change for the selected axis.
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US15/287,544 | 2016-10-06 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| HK40007123A true HK40007123A (en) | 2020-05-29 |
| HK40007123B HK40007123B (en) | 2023-09-29 |
Family
ID=
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN109642803B (en) | Systems and methods for compressing high fidelity motion data for transmission over limited bandwidth networks | |
| US12323801B2 (en) | Public wireless network performance management system with mobile device data collection agents | |
| US10057150B2 (en) | Managing communication congestion for internet of things devices | |
| US20170187625A1 (en) | Managing communication congestion for internet of things devices | |
| WO2017112365A1 (en) | Managing communication congestion for internet of things devices | |
| KR102469441B1 (en) | A method and an apparatus for monitoring global failure of virtual gateway cluster | |
| CN105376335A (en) | Method and device for collection data uploading | |
| CN105516321A (en) | Data acquisition method and device | |
| CN106576056B (en) | System and method for varying frequency of retrieval of monitoring data | |
| HK40007123A (en) | System and method for compressing high fidelity motion data for transmission over a limited bandwidth network | |
| HK40007123B (en) | System and method for compressing high fidelity motion data for transmission over a limited bandwidth network | |
| CN118158612A (en) | Target perception method, device, computer equipment and storage medium | |
| CN117194046A (en) | Processing method and data processing system of RocketMQ performance data | |
| US10516594B2 (en) | Systems and methods for changing the frequency of monitoring data | |
| US20250317534A1 (en) | Storage management for a video surveillance system | |
| CN118827328B (en) | Method, apparatus, medium, and program product for monitoring a node | |
| Hero et al. | Developing IoT Platform With Software As A Service (SaaS) Model For Image Storage System | |
| CN120378324A (en) | Real-time statistical method of retransmission rate, and processing method and equipment of live broadcast data |