Embodiments relate generally to sensor cleaning, and, more specifically, to techniques for acousto-vibratory sensor cleaning.
The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.
Modern vehicles have optical sensor systems, such as cameras and LIDAR sensors, that require cleaning for optimal performance. For automated driving, sensors need to be cleaned automatically with no human intervention. However, existing cleaning solutions use cleaning components such as dedicated mechanical wipers or brushes, pressurized fluid and/or pressurized gases. Combinations of fluid-based and mechanical systems are common, however full automation and new sensor modalities such as LIDAR have posed new challenging requirements. Nevertheless, various methods have been developed to avoid damaging the various types of sensors. These approaches include, but are not limited to, fluid-based solutions using tens to hundreds of milliliters of cleaning fluid to globally spray the sensor surface, gas-based systems that use pressurized air to steer a strong jet of gas toward a particular surface location to remove surface contaminants, mechanical systems that use brushes or wipers to clean dirt and other obscurants from a sensor window, or a combination of the three. Challenges related to resource efficiency and sensor availability are driving factors for the development of new sensor cleaning solutions.
The present invention is illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings and in which like reference numerals refer to similar elements and in which:
In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be apparent, however, that the present invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to avoid unnecessarily obscuring the present invention.
Embodiments are described herein according to the following outline:
Techniques as described herein can be used to implement acousto-vibratory sensor cleaning. A vehicle includes a vehicle computing system that further includes an acousto-vibratory cleaning system. A mounted sensor, such as a camera or LIDAR sensor, includes sonic actuators and a mounted sensor vibration system. The acousto-vibratory cleaning system includes a sonic actuator controller, fluid dispenser system, and a mounted sensor vibration system for the purpose of implementing acousto-vibratory sensor cleaning. As used herein, vehicular data refers to a mix of real-time, or time sensitive data and non-time sensitive data that is generated from one or more computing systems at a vehicle. Vehicle applications operating on a vehicle operating system may generate vehicle data attributes. Example data attributes may include, but are not necessarily limited to only, any of: time-sensitive data, non-time sensitive data, geolocation data, mechanical vehicular data, operational vehicular data, other metadata related to vehicles, etc. Example data parsing methods include but are not necessarily limited to clustering methods, temporal data filtering, geographic location tags, etc. On-board vehicle sensors may be used in the detection of obscurants on the sensors.
A mounted sensor may be configured on a vehicle such that airflow is redirected to avoid turbulent air flows on the mounted sensor. An aerodynamic design is chosen to create an air curtain passively. Using one or more airflow modifiers, such as a physical airflow deflector below the mounted sensor or a molded concave bumper below the mounted sensor to redirect airflow and obscurant sources away from the mounted sensor.
Using a combination of acoustic forces generated by multiple sonic actuators, a fluid droplet may be levitated against the surface of a sensor window. By modulating the amplitude, frequency and phase of the soundwaves in a defined manner, acoustic levitation of the fluid droplet at the fluid outlet can be achieved. Once the fluid droplet is captured by the acoustic forces into acoustic levitation, a series of acoustic forces may be applied to the fluid droplet to steer the fluid droplet towards a region identified to be obscured. The obscurant, such as dirt or debris, may occupy a portion or all of the region identified by the sensor. Once the fluid droplet reaches the region being obscured, or the cleaning position, a vibration system at the mounted sensor is activated to incrementally clean the surface of the sensor window.
The sensor window is brought into oscillating vibratory motion once the droplet reaches the cleaning position. Using a fluid droplet on a vibrating sensor window surface, the droplet becomes a micro-mechanical cleaning device. Using a hydrophobic surface coating, the contact angle of the cleaning solution on the optical surface is optimized. The amplitude and frequency of this vibration is optimized based on the fluid properties, such as droplet resonance modes, interaction between the fluid and the optical surface, as well as the interaction between the acoustic transducers and the droplet. The droplet will vibrate on the sensor surface, effectively capturing obscurants from the sensor window. Once the droplet has been “used” or “contaminated,” meaning that the obscurant has been cleared by the droplet, the contaminated droplet is guided away from the sensor surface into drainage ports or canals, outside the field of view of the sensor. The used droplet is guided away through the acoustic forces being applied onto the used droplet.
Resource consumption in prior approaches is substantial, resulting in requirements for large water reservoirs, need for compressors and gas tanks in the vehicle, and a significant power consumption. The acousto-vibratory sensor cleaning requires few resources in comparison. This approach requires only microliters of fluid compared with tens or even hundreds of milliliters of water as seen in prior solutions. The main resource used is electrical power to drive the vibration of the sensor window and the acoustic transducer modules around the optical window.
This approach enables acousto-vibratory sensor cleaning as described herein to efficiently remove obscurants from sensor surfaces without unnecessary obstruction of the sensor. Additionally, optionally or alternatively, this approach automation of sensor cleaning that does not require human intervention. Furthermore, prior solutions of vibrating surfaces to actuate the process of self-cleaning has been limited to horizontally configured sensors, such as solar panels, having inclinations of no more than 15 degrees. Here, the vibrating surface of a sensor is combined with acoustic levitation to support self-cleaning of a sensor situated vertically, thus enabling automated cleaning of self-driving vehicles.
Approaches, techniques, and mechanisms are disclosed for sensor cleaning systems. According to one embodiment, a region of a sensor window is identified to be blocked by an obscurant. The location of the region is determined using the sensor associated with the sensor window. An acousto-vibratory cleaning system receives the location of the region and produces a fluid droplet to be dispensed at a specified point on a two-dimensional plane of the surface of the sensor window. Sonic actuators are activated to capture the fluid droplet in acoustic levitation. A series of acoustic forces guide the fluid droplet to the region being obscured based on the received location. Once an indication that the fluid droplet has reached the region is received, vibration of the sensor window is activated to incrementally clear the obscurant by guiding the droplet along the obscurant. Based on an indication that the region has been cleaned by the droplet, the acousto-vibratory cleaning system generates additional acoustic forces to guide the contaminated fluid droplet to a closest drainage canal.
In other aspects, the invention encompasses computer apparatuses and computer-readable media configured to carry out the foregoing techniques.
System 300 comprises a vehicle computing system 302 that operates with one or more vehicle applications 308 on a vehicle operating system 304 to enable acousto-vibratory sensor cleaning. Example applications that may interact with data on the vehicle computing system 302 may include, but are not limited to only, any of: data analysis, data transformation, latency-critical diagnostics, vehicle monitoring, malfunction, pattern detection, dynamic event-based data source configuration, complex time and/or location-based vehicle data anonymization, on-demand provisioning of data processing stacks, dynamic workload provisioning, different cluster sizing, data infrastructure efficiency improvements, etc.
Sensors 306 include optical sensors, such as cameras and LIDAR sensors, that require a clean optical sensor window for optimal performance. One or more vehicle applications 308 may interact with the sensors 306 and the acousto-vibratory cleaning system 314 to automatically clear obscurants from the surface of a sensor window.
Returning to
In the second panel illustrated in
In the third panel illustrated in
Returning to
At least three acoustic transducers, or sonic actuators 202, are arranged to capture the droplet 208 and guide it to the obscured part of the sensor surface. Soundwaves are modulated to a specified frequency, amplitude, and phase in order to capture the droplet 208 in acoustic levitation.
The surface of the mounted sensor 102 can be designed with specific properties (e.g., having a predefined frictional coefficient). The window surface is treated with a surface coating using biomimetic techniques to create surface properties replicating the micro-/nanomorphologies from a lotus plant leaf. Lotus plants have superhydrophobic surfaces. Water drops that fall onto them bead up and roll off. Biomimetic techniques enable a surface coating to be applied to the surface of the mounted sensor 102 such that the hydrophobic properties of the lotus leaf are replicated. These surfaces can maintain a high contact angle of more than 150 degrees, low sliding angles of less than 10 degrees and low contact angle hysteresis of less than 10 degrees. The contact angle of the surface is a common measure to quantify adhesiveness of fluids. Additionally, the sensor window 220 is heated by active heating elements for deployment of the system 200 in cold weather.
The amplitude and frequency of this vibration is optimized based on the fluid properties, specifically droplet resonance modes, interaction between the fluid and the optical surfaces, as well as interaction between the acoustic transducers, or sonic actuators 202, and the droplet 208. By vibrating the droplet 208 along the obscurant 212, the droplet 208 becomes a contaminated droplet 218 by picking up the obscurant 212 incrementally. The directionality of cleaning may be achieved by varying the amplitude and frequency of the vibrating sensor window 220. As shown in
System 200 illustrates only one of many possible arrangements of components configured to provide the functionality described herein. Other arrangements may include fewer, additional, or different components, and the division of work between the components may vary depending on the arrangement. For instance, multiple fluid outlets 204 may be installed at the top of the sensor window 220 such that one or more droplets 208 are employed to implement the techniques as described herein. Additionally, a fluid dispenser system 320 may use various types of fluids based on the weather surrounding the vehicle 130. In some operational scenarios, computing devices other than a vehicle computing system as described herein may be used to initiate the acousto-vibratory cleaning system 314, such as a computing system outside of the vehicle 130 connected to the vehicle 130 through the vehicle cloud connectivity system 312. In such an embodiment, the detection of the obscurant may be determined by the computing system outside of the vehicle 130, as an example.
In an embodiment, some or all techniques and/or methods described below may be implemented using one or more computer programs, other software elements, and/or digital logic in any of a general-purpose computer or a special-purpose computer, while performing data retrieval, transformation, and storage operations that involve interacting with and transforming the physical state of memory of the computer.
Detection of an obscurant on the surface of an optical sensor 102 may be performed by one or more vehicle applications 308, as illustrated in
In one embodiment, pattern recognition techniques may be used to determine a location of the obscurant on the two-dimensional planar surface of the sensor window 220 of a mounted sensor 102. Pattern recognition techniques may involve artificial intelligence, machine learning, neural networks, and other heuristic analysis for obscurant detection. A computing system other than the vehicle operating system 302 may be used to receive and process sensor data using pattern recognition techniques, in an embodiment, using the vehicle cloud connectivity system 312. The vehicle cloud connectivity system 312 enables the vehicle computing system 302 to connect to one or more networks to receive and transmit data to external systems. Once the location of the region being obscured is detected, the location may be stored in the application data store 326 for use by the acousto-vibratory cleaning system 314 and/or one or more vehicle applications 308.
Though only one layer of computing nodes is illustrated in system 300, the vehicle computing system 302 supports as many layers of computing nodes as needed. Thus, the system 300 may scale without limit to support additional processing needs.
An indication of a location of the region blocked by the obscurant is sent to the acousto-vibratory cleaning system 314. The acousto-vibratory cleaning system 314 generates a fluid droplet 404 to begin the cleaning process. The fluid dispenser system 320 of the acousto-vibratory cleaning system 314 generates the fluid droplet using a mechanical system of pumps, in an embodiment. The fluid droplet comprises microliters of fluid, in an embodiment.
An indication that a fluid droplet has been generated 404 is sent to the sonic actuator controller 314. In response, an initial plurality of acoustic forces is generated to capture the fluid droplet at a fluid outlet 406. As described above, the initial plurality of acoustic forces is modulated by frequency, amplitude, and phase based on the defined volume of the fluid droplet and the positioning of the sonic actuators 202 in relation to the fluid outlet 204. A set of values for the frequency, amplitude, and phase of the initial plurality of acoustic forces may be predetermined based on the defined volume of the fluid droplet and distance of the fluid droplet from the set of sonic actuators. This initial plurality of acoustic forces generates acoustic levitation, such that the fluid droplet is suspended in air just after being released by the fluid outlet.
An indication of the successful capture, or acoustic levitation, of the fluid droplet by the initial plurality of acoustic forces generated 406 by the sonic actuator controller 318 is sent to the acousto-vibratory cleaning system 314. Next, a first series of acoustic forces is determined to guide the fluid droplet from the fluid outlet to the region blocked by the obscurant 408. Because the surface of the optical sensor has been coated with a biomimetic coating that mimics the hydrophobic properties of a lotus leaf, the fluid droplet may roll along the surface of the sensor window with no friction or loss of fluid volume. Additionally, the first series of acoustic forces may be determined 408 based on the sonic actuators operating as a phased array antenna. Thus, the series of acoustic forces may be computed by the acousto-vibratory cleaning system 314 to guide the fluid droplet to cleaning position at the region blocked by the obscurant, in an embodiment. In another embodiment, the computations involved in determining the first series of acoustic forces may be determined by a separate process, such as a vehicle application 308 or an external computing system connected to the vehicle 130 via the vehicle cloud connectivity system 312. The first series of acoustic forces may be stored as computational data in the application data store 326 for retrieval by the acousto-vibratory cleaning system 314.
The sonic actuator controller 318 then executes the first series of acoustic forces to guide the fluid droplet from the fluid outlet to the region blocked by the obscurant 410. Because the sonic actuator controller 318 comprises one or more computing components, the fluid droplet may be effectively and efficiently steered to the cleaning position very quickly, such as in a matter of seconds. However, the cleaning process may take longer based on the sensor vibration incrementally clearing the obscurant, in an embodiment.
An indication that the fluid droplet has reached the cleaning position, or the region blocked by the obscurant, is sent to the acousto-vibratory cleaning system 314. The acousto-vibratory cleaning system 314 initiates the mounted sensor vibration system 322 to move the fluid droplet along the obscurant to clean the mounted sensor 412. This initiation includes the location data associated with the region blocked by the obscurant such that the mounted sensor vibration system 322 may vary the oscillation of the sensor window to move the fluid droplet along the obscurant, thus cleaning the mounted sensor. The mounted sensor vibration system 322 receives the instruction from the acousto-vibratory cleaning system 314 and executes vibration of the mounted sensor 414. As described above, the vibration is brought about by magnetic coils in the sensor casing, where the sensor window oscillates as a vibrating membrane. Alternatively, one or more sonic, or acoustic, transducers can be installed within the sensor casing to execute the vibration. The amplitude and frequency of the vibration is dependent on the resonance modes of the fluid droplet, the interaction between the fluid and the surface, as well as the interaction between the acoustic transducers and the droplet. The droplet will vibrate on the sensor surface, effectively capturing obscurants from the sensor window.
As further illustrated in
The acousto-vibratory cleaning system 314 determines a second series of acoustic forces to guide a contaminated fluid droplet from the region previously blocked by the obscurant to a closest drainage canal 420. Similar to step 408 above, the second series of acoustic forces may be determined by a separate process, such as a vehicle application 308 or external computing system connected to the vehicle 130, in an embodiment. Alternatively, the second series of acoustic forces may be computed based on the initially detected region and a predetermined path of the fluid droplet along the obscurant. Based on the now contaminated fluid droplet completing that predetermined path, the second series of acoustic forces may be predetermined and computed using the set of sonic actuators as a phased array antenna. The second series of acoustic forces is then executed by the sonic actuator controller 318 to guide the contaminated fluid droplet from the region previously blocked by the obscurant to the closest drainage canal 422. Upon completion, an indication that the second series of acoustic forces has been executed is sent to the acousto-vibratory cleaning system 314.
In an embodiment, multiple droplets may be used for sensor cleaning. For example, multiple fluid outlets may be used to generate multiple droplets at the top of the sensor window. As another example, one fluid outlet may generate multiple droplets based on the effectiveness of each droplet in removing the obscurant. Different configurations of sonic actuators 202 may be used to implement multiple droplet sensor cleaning.
Block 502 comprises receiving an indication of a region of a sensor window (e.g., 220 of
Block 504 comprises determining a location of the region using a sensor associated with the sensor window. In an embodiment, the sensor associated with the sensor window determines the location in real-time. In another embodiment, the sensor associated with the sensor window generates data that is processed asynchronously by a separate process. In a further embodiment, the location of the region has been determined and is retrieved from an application data store. In a further embodiment, a separate sensor is used to determine the location of the region on the sensor window that includes the obscurant.
Block 506 comprises sending the location of the region blocked by the obscurant to an acousto-vibratory cleaning system. In an embodiment, the location of the region may be retrieved by the acousto-vibratory cleaning system from an application data store. In another embodiment, the location of the region may be sent in real-time by the sensor associated with the sensor window.
Block 508 comprises receiving an indication that a fluid droplet released by the acousto-vibratory cleaning system has reached the location of the region. The indication that the fluid droplet has reached the location of the region may be generated by the sensor associated with the sensor window. In another embodiment, the indication that the fluid droplet has reached the location of the region may be generated by the sonic actuator controller of the acousto-vibratory cleaning system based on a computation of the path traveled by the fluid droplet and the phased array antenna comprising the at least three sonic actuators fully completing the path.
Block 510 comprises activating vibration at the sensor window based on the location of the region to guide the fluid droplet along the obscurant. The vibration is activated by the mounted sensor vibration system which includes magnetic coils embedded in the sensor casing that can be activated to vibrate the flexible sensor window, in an embodiment. The vibration, in another embodiment, is activated by the mounted sensor vibration system that includes one or more acoustic transducers in the sensor casing. The vibration is modulated on frequency and amplitude based on the fluid properties, specifically resonance modes of the fluid droplet, the interaction of the surface of the sensor window and the fluid, as well as the effect of the acoustic transducers on the fluid droplet.
Block 512 comprises receiving an indication of the region being clear of the obscurant. This indication may be generated by the sensor associated with the previously obscured sensor window in real-time, in an embodiment. The indication of the region being clear may also be generated by a separate process, using an application or external computing system, that analyzes the data generated from the sensor associated with the sensor window.
Block 514 comprises causing the acousto-vibratory cleaning system to guide the fluid droplet to a drainage canal. The acousto-vibratory cleaning system may guide the fluid droplet to the closest drainage canal, in an embodiment, using the acoustic levitation techniques described above with the at least three acoustic forces emitted from the at least three sonic actuators. Additionally, the acousto-vibratory cleaning system may use a precomputed path to the closest drainage canal based on the location of the region initially provided.
In an embodiment, a computing device is configured to perform any of the foregoing methods. In an embodiment, an apparatus comprises a processor and is configured to perform any of the foregoing methods. In an embodiment, a non-transitory computer readable storage medium, storing software instructions, which when executed by one or more processors cause performance of any of the foregoing methods.
In an embodiment, a computing device comprising one or more processors and one or more storage media storing a set of instructions which, when executed by the one or more processors, cause performance of any of the foregoing methods.
Other examples of these and other embodiments are found throughout this disclosure. Note that, although separate embodiments are discussed herein, any combination of embodiments and/or partial embodiments discussed herein may be combined to form further embodiments.
According to one embodiment, the techniques described herein are implemented by one or more special-purpose computing devices. The special-purpose computing devices may be desktop computer systems, portable computer systems, handheld devices, smartphones, media devices, gaming consoles, networking devices, or any other device that incorporates hard-wired and/or program logic to implement the techniques. The special-purpose computing devices may be hard-wired to perform the techniques, or may include digital electronic devices such as one or more application-specific integrated circuits (ASICs) or field programmable gate arrays (FPGAs) that are persistently programmed to perform the techniques, or may include one or more general purpose hardware processors programmed to perform the techniques pursuant to program instructions in firmware, memory, other storage, or a combination. Such special-purpose computing devices may also combine custom hard-wired logic, ASICs, or FPGAs with custom programming to accomplish the techniques.
Computer system 600 includes one or more busses 602 or other communication mechanism for communicating information, and one or more hardware processors 604 coupled with busses 602 for processing information. Hardware processors 604 may be, for example, a general purpose microprocessor. Busses 602 may include various internal and/or external components, including, without limitation, internal processor or memory busses, a Serial ATA bus, a PCI Express bus, a Universal Serial Bus, a HyperTransport bus, an Infiniband bus, and/or any other suitable wired or wireless communication channel.
Computer system 600 also includes a main memory 606, such as a random access memory (RAM) or other dynamic or volatile storage device, coupled to bus 602 for storing information and instructions to be executed by processor 604. Main memory 606 also may be used for storing temporary variables or other intermediate information during execution of instructions to be executed by processor 604. Such instructions, when stored in non-transitory storage media accessible to processor 604, render computer system 600 into a special-purpose machine that is customized to perform the operations specified in the instructions.
Computer system 600 further includes one or more read only memories (ROM) 608 or other static storage devices coupled to bus 602 for storing static information and instructions for processor 604. One or more storage devices 610, such as a solid-state drive (SSD), magnetic disk, optical disk, or other suitable non-volatile storage device, is provided and coupled to bus 602 for storing information and instructions.
Computer system 600 may be coupled via bus 602 to one or more displays 612 for presenting information to a computer user. For instance, computer system 600 may be connected via an High-Definition Multimedia Interface (HDMI) cable or other suitable cabling to a Liquid Crystal Display (LCD) monitor, and/or via a wireless connection such as peer-to-peer Wi-Fi Direct connection to a Light-Emitting Diode (LED) television. Other examples of suitable types of displays 612 may include, without limitation, plasma display devices, projectors, cathode ray tube (CRT) monitors, electronic paper, virtual reality headsets, braille terminal, and/or any other suitable device for outputting information to a computer user. In an embodiment, any suitable type of output device, such as, for instance, an audio speaker or printer, may be utilized instead of a display 612.
In an embodiment, output to display 612 may be accelerated by one or more graphics processing unit (GPUs) in computer system 600. A GPU may be, for example, a highly parallelized, multi-core floating point processing unit highly optimized to perform computing operations related to the display of graphics data, 3D data, and/or multimedia. In addition to computing image and/or video data directly for output to display 612, a GPU may also be used to render imagery or other video data off-screen, and read that data back into a program for off-screen image processing with very high performance. Various other computing tasks may be off-loaded from the processor 604 to the GPU.
One or more input devices 614 are coupled to bus 602 for communicating information and command selections to processor 604. One example of an input device 614 is a keyboard, including alphanumeric and other keys. Another type of user input device 614 is cursor control 616, such as a mouse, a trackball, or cursor direction keys for communicating direction information and command selections to processor 604 and for controlling cursor movement on display 612. This input device typically has two degrees of freedom in two axes, a first axis (e.g., x) and a second axis (e.g., y), that allows the device to specify positions in a plane. Yet other examples of suitable input devices 614 include a touch-screen panel affixed to a display 612, cameras, microphones, accelerometers, motion detectors, and/or other sensors. In an embodiment, a network-based input device 614 may be utilized. In such an embodiment, user input and/or other information or commands may be relayed via routers and/or switches on a Local Area Network (LAN) or other suitable shared network, or via a peer-to-peer network, from the input device 614 to a network link 620 on the computer system 600.
A computer system 600 may implement techniques described herein using customized hard-wired logic, one or more ASICs or FPGAs, firmware and/or program logic which in combination with the computer system causes or programs computer system 600 to be a special-purpose machine. According to one embodiment, the techniques herein are performed by computer system 600 in response to processor 604 executing one or more sequences of one or more instructions contained in main memory 606. Such instructions may be read into main memory 606 from another storage medium, such as storage device 610. Execution of the sequences of instructions contained in main memory 606 causes processor 604 to perform the process steps described herein. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions.
The term “storage media” as used herein refers to any non-transitory media that store data and/or instructions that cause a machine to operate in a specific fashion. Such storage media may comprise non-volatile media and/or volatile media. Non-volatile media includes, for example, optical or magnetic disks, such as storage device 610. Volatile media includes dynamic memory, such as main memory 606. Common forms of storage media include, for example, a floppy disk, a flexible disk, hard disk, solid state drive, magnetic tape, or any other magnetic data storage medium, a CD-ROM, any other optical data storage medium, any physical medium with patterns of holes, a RAM, a PROM, and EPROM, a FLASH-EPROM, NVRAM, any other memory chip or cartridge.
Storage media is distinct from but may be used in conjunction with transmission media. Transmission media participates in transferring information between storage media. For example, transmission media includes coaxial cables, copper wire and fiber optics, including the wires that comprise bus 602. Transmission media can also take the form of acoustic or light waves, such as those generated during radio-wave and infra-red data communications.
Various forms of media may be involved in carrying one or more sequences of one or more instructions to processor 604 for execution. For example, the instructions may initially be carried on a magnetic disk or solid state drive of a remote computer. The remote computer can load the instructions into its dynamic memory and use a modem to send the instructions over a network, such as a cable network or cellular network, as modulated signals. A modem local to computer system 600 can receive the data on the network and demodulate the signal to decode the transmitted instructions. Appropriate circuitry can then place the data on bus 602. Bus 602 carries the data to main memory 605, from which processor 604 retrieves and executes the instructions. The instructions received by main memory 606 may optionally be stored on storage device 610 either before or after execution by processor 604.
A computer system 600 may also include, in an embodiment, one or more communication interfaces 618 coupled to bus 602. A communication interface 618 provides a data communication coupling, typically two-way, to a network link 620 that is connected to a local network 622. For example, a communication interface 618 may be an integrated services digital network (ISDN) card, cable modem, satellite modem, or a modem to provide a data communication connection to a corresponding type of telephone line. As another example, the one or more communication interfaces 618 may include a local area network (LAN) card to provide a data communication connection to a compatible LAN. As yet another example, the one or more communication interfaces 618 may include a wireless network interface controller, such as a 802.11-based controller, Bluetooth controller, Long Term Evolution (LTE) modem, and/or other types of wireless interfaces. In any such implementation, communication interface 618 sends and receives electrical, electromagnetic, or optical signals that carry digital data streams representing various types of information.
Network link 620 typically provides data communication through one or more networks to other data devices. For example, network link 620 may provide a connection through local network 622 to a host computer 624 or to data equipment operated by a Service Provider 626. Service Provider 626, which may for example be an Internet Service Provider (ISP), in turn provides data communication services through a wide area network, such as the world wide packet data communication network now commonly referred to as the “Internet” 628. Local network 622 and Internet 628 both use electrical, electromagnetic or optical signals that carry digital data streams. The signals through the various networks and the signals on network link 620 and through communication interface 618, which carry the digital data to and from computer system 600, are example forms of transmission media.
In an embodiment, computer system 600 can send messages and receive data, including program code and/or other types of instructions, through the network(s), network link 620, and communication interface 618. In the Internet example, a server 630 might transmit a requested code for an application program through Internet 628, ISP 626, local network 622 and communication interface 618. The received code may be executed by processor 604 as it is received, and/or stored in storage device 610, or other non-volatile storage for later execution. As another example, information received via a network link 620 may be interpreted and/or processed by a software component of the computer system 600, such as a web browser, application, or server, which in turn issues instructions based thereon to a processor 604, possibly via an operating system and/or other intermediate layers of software components.
In an embodiment, some or all of the systems described herein may be or comprise server computer systems, including one or more computer systems 600 that collectively implement various components of the system as a set of server-side processes. The server computer systems may include web server, application server, database server, and/or other conventional server components that certain above-described components utilize to provide the described functionality. The server computer systems may receive network-based communications comprising input data from any of a variety of sources, including without limitation user-operated client computing devices such as desktop computers, tablets, or smartphones, remote sensing devices, and/or other server computer systems.
In an embodiment, certain server components may be implemented in full or in part using “cloud″-based components that are coupled to the systems by one or more networks, such as the Internet. The cloud-based components may expose interfaces by which they provide processing, storage, software, and/or other resources to other components of the systems. In an embodiment, the cloud-based components may be implemented by third-party entities, on behalf of another entity for whom the components are deployed. In other embodiments, however, the described systems may be implemented entirely by computer systems owned and operated by a single entity.
In an embodiment, an apparatus comprises a processor and is configured to perform any of the foregoing methods. In an embodiment, a non-transitory computer readable storage medium, storing software instructions, which when executed by one or more processors cause performance of any of the foregoing methods.
As used herein, the terms “first,” “second,” “certain,” and “particular” are used as naming conventions to distinguish queries, plans, representations, steps, objects, devices, or other items from each other, so that these items may be referenced after they have been introduced. Unless otherwise specified herein, the use of these terms does not imply an ordering, timing, or any other characteristic of the referenced items.
In the drawings, the various components are depicted as being communicatively coupled to various other components by arrows. These arrows illustrate only certain examples of information flows between the components. Neither the direction of the arrows nor the lack of arrow lines between certain components should be interpreted as indicating the existence or absence of communication between the certain components themselves. Indeed, each component may feature a suitable communication interface by which the component may become communicatively coupled to other components as needed to accomplish any of the functions described herein.
In the foregoing specification, embodiments of the invention have been described with reference to numerous specific details that may vary from implementation to implementation. Thus, the sole and exclusive indicator of what is the invention, and is intended by the applicants to be the invention, is the set of claims that issue from this application, in the specific form in which such claims issue, including any subsequent correction. In this regard, although specific claim dependencies are set out in the claims of this application, it is to be noted that the features of the dependent claims of this application may be combined as appropriate with the features of other dependent claims and with the features of the independent claims of this application, and not merely according to the specific dependencies recited in the set of claims. Moreover, although separate embodiments are discussed herein, any combination of embodiments and/or partial embodiments discussed herein may be combined to form further embodiments.
Any definitions expressly set forth herein for terms contained in such claims shall govern the meaning of such terms as used in the claims. Hence, no limitation, element, property, feature, advantage or attribute that is not expressly recited in a claim should limit the scope of such claim in any way. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.