The present disclosure relates generally to vehicle collision or obstacle avoidance systems. More particularly, the present disclosure relates to collision or obstacle avoidance systems for autonomous and remote controlled aircraft.
Collision or obstacle (used herein interchangeably) avoidance between vehicles and other vehicles and/or obstacles is a paramount safety goal for both passenger and non-passenger vehicles alike. The technology of collision/obstacle avoidance is a rapidly evolving field. Both the automotive and aviation industries have enormous incentives to develop technologies that detect obstacles and avoid colliding with them (generally known in the aviation industry as Detect and Avoid, aka DAA)—to improve the safety of transportation. In the area of aviation, there are numerous companies developing component technologies of DAA. Government institutions (NASA, FAA, DoD, EUROCAE) have been funding the development of these technologies as well. In the last few years, standards bodies, such as the Radio Technical Commission for Aeronautics (RTCA), American Society for Testing and Materials (ASTM), International Civil Aviation Organization, and the Joint Authorities for Rulemaking on Unmanned Systems (JARUS), have begun to work to define DAA.
Most of the systems developed and standardized thus far were written and developed for aircraft with pilots onboard the aircraft, not for autonomous or remotely piloted aircraft (e.g., a remotely piloted drone). Furthermore, the systems were designed to avoid collisions with other aircraft, but fail to consider the surrounding environment. The current systems do not address ground obstacles, prohibited airspaces, weather, or dense population centers. Without taking into consideration these additional points of context, currently available systems inadequately provide collision avoidance for autonomous and remotely controlled aircraft.
It would therefore be desirable to have a system and method that takes into account at least some of the issues discussed above, as well as other possible issues.
Example implementations of the present disclosure are directed to a method and system for collision avoidance for an aircraft traversing a flight path. The method and system described herein provides an architecture to address the full gamut of complexity that arises when dealing with possible conflicts during aircraft flight. The collision avoidance method and system disclosed herein first receives multiple streams of potential conflict information that not only considers direct obstacles on the flight path of the aircraft, but also considers contextual obstacles that are within a perimeter of the flight path. Once the possible objects are considered, a plurality of alternate flight paths are calculated and the alternate flight path with the lowest priority of collision with a possible obstacle is selected and the aircraft traversing the flight path deviates from the original flight path to the alternate flight path to avoid the collision(s).
The present disclosure thus includes, without limitation, the following example implementations.
Some example implementations of the present disclosure provide a collision avoidance method for an aircraft traversing a flight path, the method using one or more processors in communication with a memory having executable instructions stored therein, the method comprising: receiving obstacle tracking data for one or more potential obstacles for the aircraft along or proximate to the flight path, the obstacle tracking data further including data related to one or more contextual obstacles proximate to the flight path; determining, based on the obstacle tracking data as received, a predicted miss distance between the aircraft and each of the one or more potential obstacles along the flight path; determining a plurality of alternate flight path options, each of the plurality of alternate flight path options including a corresponding alternate flight path that deviates from the flight path; assigning at least two of the alternate flight path options a corresponding safety parameter value, the safety parameter value based on at least the predicted miss distance between the aircraft and at least one of the one or more potential obstacles; selecting an alternate flight path from among the plurality of alternate flight path options, the selected alternate flight path selected based at least on the selected alternate flight path having a lowest safety parameter value, the selected alternate flight path for the aircraft avoiding the one or more potential obstacles and at least one of the one or more contextual obstacles proximate to the flight path; and automatically transmitting the selected alternate flight path to a pilot or guidance system of the aircraft.
In some example implementations of the method of any preceding example implementation, or any combination thereof, the method further comprises automatically maneuvering the aircraft with the guidance system to follow the selected alternate flight path; or maneuvering the aircraft by the pilot to follow the selected alternate flight path.
In some example implementations of the method of any preceding example implementation, or any combination thereof, the safety parameter value is further based on a hierarchical list of safety priorities, wherein assigning at least two of the alternate flight path options a corresponding safety parameter value includes assigning each of the alternate flight path options a lower safety parameter value for the alternate flight path option achieving a greater number of safety priorities, and wherein selecting the alternate flight path from among the plurality of alternate flight path options includes selecting the alternate flight path option that achieves the greatest number of safety priorities.
In some example implementations of the method of any preceding example implementation, or any combination thereof, the method further comprises determining a succession of one or more additional alternate flight paths based on the obstacle tracking data as received or additional obstacle tracking data, including additional contextual obstacle tracking data, that is received after the alternate flight path is determined, and the method further comprises: automatically maneuvering the aircraft with the guidance system to follow the succession of one or more additional alternate flight paths; or maneuvering the aircraft by the pilot to follow the succession of one or more additional alternate flight paths.
In some example implementations of the method of any preceding example implementation, or any combination thereof, the method further comprises determining, based on the obstacle tracking data as received, a predicted miss distance between the aircraft and each of the one or more contextual obstacles proximate to the flight path, wherein the safety parameter value is further based on the predicted miss distance between the aircraft and at least one of the one or more contextual obstacles proximate the flight path, and wherein determining the predicted miss distance comprises determining a trajectory of relative motion between the aircraft and each of the one or more potential obstacles, and a trajectory of the aircraft in relation to the one or more contextual obstacles.
In some example implementations of the method of any preceding example implementation, or any combination thereof, determining the alternate flight path comprises determining the alternate flight path in response to the predicted miss distance between the aircraft and at least one of the one or more potential obstacles being equal to or less than a predetermined threshold; and determining the plurality of alternate flight path options comprises determining the plurality of alternate flight path options in response to the predicted miss distance between the aircraft and at least one of the one or more contextual obstacles being equal to or less than a predetermined threshold.
In some example implementations of the method of any preceding example implementation, or any combination thereof, receiving obstacle tracking data for the one or more contextual obstacles comprises receiving obstacle tracking data associated with ground-based obstacles, air traffic obstacles, or atmospheric-related obstacles, along or proximate to the flight path.
In some example implementations of the method of any preceding example implementation, or any combination thereof, receiving obstacle tracking data associated with ground-based obstacles comprises receiving obstacle tracking data including terrain underlying or proximate to the flight path, objects extending above-ground, population centers underlying the flight path, population density underlying or proximate to the flight path, geographic features underlying or proximate to the flight path, or airspaces along or proximate to the flight path.
In some example implementations of the method of any preceding example implementation, or any combination thereof, receiving obstacle tracking data associated with atmospheric-related obstacles comprises receiving obstacle tracking data including weather or atmospheric conditions along or proximate to the flight path; and receiving obstacle tracking data associated with air traffic obstacles comprises receiving obstacle tracking data including any airborne objects within or predicted to enter the flight path or disposed proximate to the flight path.
In some example implementations of the method of any preceding example implementation, or any combination thereof, receiving the obstacle tracking data comprises receiving the obstacle tracking data from one or more data stores in communication with the aircraft or from one or more sensors associated with or in communication with the aircraft.
Some other example implementations of the present disclosure provide a collision avoidance system for an aircraft traversing a flight path, the collision avoidance system comprising: a processor and a non-transitory computer readable medium comprising executable instructions that when executed by the processor, causes the collision avoidance system to be configured to: receive obstacle tracking data for one or more potential obstacles for the aircraft along or proximate to the flight path, the obstacle tracking data further including data related to one or more contextual obstacles proximate to the flight path; determine, based on the obstacle tracking data as received, a predicted miss distance between the aircraft and each of the one or more potential obstacles along the flight path; determine a plurality of alternate flight path options, each of the plurality of alternate flight path options including a corresponding alternate flight path that deviates from the flight path; assign at least two of the alternate flight path options a corresponding safety parameter value, the safety parameter value based on at least the predicted miss distance between the aircraft and at least one of the one or more potential obstacles; select an alternate flight path from among the plurality of alternate flight path options, the selected alternate flight path selected based at least on the selected alternate flight path having a lowest safety parameter value, the selected alternate flight path for the aircraft avoiding the one or more potential obstacles and at least one of the one or more contextual obstacles proximate to the flight path; and automatically transmit the selected alternate flight path to a pilot or guidance system of the aircraft.
In some example implementations of the collision avoidance system of any preceding example implementation, or any combination thereof, the collision avoidance system is further configured to automatically maneuver the aircraft with the guidance system to follow the selected alternate flight path.
In some example implementations of the collision avoidance system of any preceding example implementation, or any combination thereof, the safety parameter value is further based on a hierarchical list of safety priorities, wherein the collision avoidance system being configured to assign at least two of the alternate flight path options a corresponding safety parameter value includes the collision avoidance system being configured to assign each of the alternate flight path options a lower safety parameter value for the alternate flight path option achieving a greater number of safety priorities, and wherein the collision avoidance system being configured to select the alternate flight path from among the plurality of alternate flight path options includes the collision avoidance system being configured to select the alternate flight path option that achieves the greatest number of safety priorities.
In some example implementations of the collision avoidance system of any preceding example implementation, or any combination thereof, the collision avoidance system is further configured to determine a succession of one or more additional alternate flight paths based on the obstacle tracking data as received or additional obstacle tracking data, including additional contextual obstacle tracking data, that is received after the alternate flight path is determined, and the collision avoidance system is further configured to automatically maneuver the aircraft with the guidance system to follow the succession of one or more additional alternate flight paths.
In some example implementations of the collision avoidance system of any preceding example implementation, or any combination thereof, the collision avoidance system is further configured to determine, based on the obstacle tracking data as received, a predicted miss distance between the aircraft and each of the one or more contextual obstacles proximate to the flight path, wherein the safety parameter value is further based on the predicted miss distance between the aircraft and at least one of the one or more contextual obstacles proximate the flight path, and wherein the collision avoidance system being configured to determine the predicted miss distance comprises the collision avoidance system being configured to determine a trajectory of relative motion between the aircraft and each of the one or more potential obstacles, and a trajectory of the aircraft in relation to the one or more contextual obstacles.
In some example implementations of the collision avoidance system of any preceding example implementation, or any combination thereof, the collision avoidance system being configured to determine the alternate flight path comprises the collision avoidance system being configured to determine the alternate flight path in response to the predicted miss distance between the aircraft and at least one of the one or more potential obstacles being equal to or less than a predetermined threshold; and wherein the collision avoidance system being configured to determine the plurality of alternate flight path options comprises the collision avoidance system being configured to determine the plurality of alternate flight path options in response to the predicted miss distance between the aircraft and at least one of the one or more contextual obstacles being equal to or less than a predetermined threshold.
In some example implementations of the collision avoidance system of any preceding example implementation, or any combination thereof, the collision avoidance system being configured to receive obstacle tracking data for the one or more contextual obstacles comprises the collision avoidance system being configured to receive obstacle tracking data associated with ground-based obstacles, air traffic obstacles, or atmospheric-related obstacles, along or proximate to the flight path.
In some example implementations of the collision avoidance system of any preceding example implementation, or any combination thereof, the collision avoidance system being configured to receive obstacle tracking data associated with ground-based obstacles comprises the collision avoidance system being configured to receive obstacle tracking data including terrain underlying or proximate to the flight path, objects extending above-ground, population centers underlying the flight path, population density underlying or proximate to the flight path, geographic features underlying or proximate to the flight path, or airspaces along or proximate to the flight path.
In some example implementations of the collision avoidance system of any preceding example implementation, or any combination thereof, the collision avoidance system being configured to receive obstacle tracking data associated with atmospheric-related obstacles comprises the collision avoidance system being configured to receive obstacle tracking data including weather or atmospheric conditions along or proximate to the flight path; and the collision avoidance system being configured to receive obstacle tracking data associated with air traffic obstacles comprises the collision avoidance system being configured to receive obstacle tracking data including any airborne objects within or predicted to enter the flight path or disposed proximate to the flight path.
In some example implementations of the collision avoidance system of any preceding example implementation, or any combination thereof, the collision avoidance system being configured to receive the obstacle tracking data comprises the collision avoidance system being configured to receive the obstacle tracking data from one or more data stores in communication with the aircraft or from one or more sensors associated with or in communication with the aircraft.
These and other features, aspects, and advantages of the present disclosure will be apparent from a reading of the following detailed description together with the accompanying drawings, which are briefly described below. The present disclosure includes any combination of two, three, four or more features or elements set forth in this disclosure, regardless of whether such features or elements are expressly combined or otherwise recited in a specific example implementation described herein. This disclosure is intended to be read holistically such that any separable features or elements of the disclosure, in any of its aspects and example implementations, should be viewed as combinable, unless the context of the disclosure clearly dictates otherwise.
It will therefore be appreciated that this Brief Summary is provided merely for purposes of summarizing some example implementations so as to provide a basic understanding of some aspects of the disclosure. Accordingly, it will be appreciated that the above described example implementations are merely examples and should not be construed to narrow the scope or spirit of the disclosure in any way. Other example implementations, aspects and advantages will become apparent from the following detailed description taken in conjunction with the accompanying drawings which illustrate, by way of example, the principles of some described example implementations.
Having thus described the disclosure in general terms, reference will now be made to the accompanying drawings, which are not necessarily drawn to scale, and wherein:
Some examples of the present disclosure will now be described more fully hereinafter with reference to the accompanying drawings, in which some, but not all aspects of the disclosure are shown. Indeed, various examples of the disclosure are embodied in many different forms and should not be construed as limited to the examples set forth herein; rather, these examples are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the disclosure to those skilled in the art. For example, unless otherwise indicated, reference to something as being a first, second or the like should not be construed to imply a particular order. Also, something described as being above something else (unless otherwise indicated) are instead below, and vice versa; and similarly, something described as being to the left of something else are instead to the right, and vice versa. Like reference numerals refer to like elements throughout.
Example implementations of the present disclosure relate generally to aircraft and robotic aircraft and, in particular, to one or more of the design, construction, operation or use of robotic aircraft. As used herein, a robotic aircraft is a machine designed and configurable to execute maneuvers in its environment. In some example implementations, the robotic aircraft is manned or unmanned. In some example implementations, the robotic aircraft is fully human-controlled, or the robotic aircraft is semi-autonomous or fully-autonomous in which at least some of the maneuvers are executed independent of or with minimal human intervention. In some examples, the robotic aircraft is operable in various modes with various amounts of human control.
The present disclosure is also relevant in the context of non-aerial robotic or autonomous vehicles (e.g., ground, or water vehicles). Examples of suitable robotic aerial and non-aerial vehicles include aerobots, androids, automatons, autonomous vehicles, explosive ordnance disposal robots, hexapods, industrial robots, insect robots, microbots, nanobots, military robots, mobile robots, rovers, service robots, surgical robots, walking robots, and the like. Other examples include a variety of unmanned vehicles, including unmanned ground vehicles (UGVs), unmanned aerial vehicles (UAVs), unmanned surface vehicles (USVs), unmanned underwater vehicles (UUVs), unmanned spacecraft and the like. These include autonomous cars, planes, trains, industrial vehicles, fulfillment center robots, supply-chain robots, robotic vehicles, mine sweepers, and the like.
To determine the alternate flight paths, the collision avoidance system is configured to receive obstacle tracking data for the flying obstacle 206 and determine, from the obstacle tracking data, a predicted miss distance between the aircraft 204 and the flying obstacle. Methods for receiving the obstacle tracking data are described hereinbelow in the description of
In some example implementations, the thresholds for the predicted miss distances are different for different types of obstacles. For example, an acceptable miss distance for a mountain is different than a drone. Additionally the acceptable miss difference is smaller during takeoff and/or landing. Some other example thresholds for the predicted miss distance includes various standards and regulations, including the following. RTCA DO-365 defines the acceptable miss distance for well clear between two large aircraft in routine flight of 4000 feet laterally or 450 feet vertically. RTCA DO-365 defines the acceptable miss distance for well clear between two large aircraft in during approach/landing/takeoff of 1500 feet laterally or 450 feet vertically. The FAA defines the acceptable miss distance for a near midair collision of 500 feet laterally or 100 feet vertically. ASTM F3442M-20 defines the acceptable miss distance for well clear between a small UAS and a manned aircraft of 2000 feet laterally or 250 feet vertically. 14 CFR 91.119 defines an acceptable miss distance for terrain and fixed wing aircraft over a congested area of 1,000 feet above the highest obstacle within a horizontal radius of 2,000 feet of the aircraft. 14 CFR 91.119 defines an acceptable miss distance for terrain and fixed wing aircraft over a non-congested area of 500 feet above the surface.
In some implementations, the collision avoidance system 300 includes a processor and a non-transitory computer readable medium 301 comprising executable instructions. At the conflict monitoring and detection block 302, the collision avoidance system 300 is configured to receive obstacle tracking data for one or more potential obstacles, such as the flying obstacle 206 or ground obstacle 210 from
Receiving obstacle tracking data on ground-based obstacles, such as ground obstacle 210 shown in
In some implementations, the conflict monitoring and detection block 302 of the collision avoidance system 300 is configured to receive the obstacle tracking data from one or more data stores, such as location information datastore 310, in communication with the aircraft 204 or from one or more sensors, such as sensors 322, associated with or in communication with the aircraft. The data store includes data on potential static obstacles such as terrain obstacles (e.g., mountains, hills, or structures), ground obstacles (e.g., trees or buildings), and other potential and contextual obstacles that are not moving such as population centers and restricted areas (e.g., no-fly-zones, airports, restricted air space, etc.). The sensors include radar sensors, video cameras, motion detectors, or any other suitable sensor that detects moving or stationary obstacles. The sensors also include weather radar to collect weather data. Alternatively, weather data is received from ground station 326 or any other suitable information source. Data collected by the one or more sensors is received by the conflict monitoring and detection block at flying obstacle tracking block 304, ground obstacle tracking block 306, and weather obstacle tracking block 308, and monitored by the conflict monitoring and detection block. As described herein, in some example implementations, the one or more sensors are located onboard the aircraft 204. In some other implementations, some or all of the sensors are onboard other vehicles, on the ground, or onboard a satellite.
At the conflict monitoring and detection block 302, the collision avoidance system 300 is configured to determine, based on the obstacle tracking data as received, a predicted miss distance between the aircraft 204 and each of the one or more potential obstacles along the flight path, such as first flight path 202 in
Once the predicted miss distance is determined at the conflict monitoring and detection block 302, the collision avoidance system 300 is configured to determine, at the conflict resolutions generator 312, a plurality of alternate flight path options, such as first detour 209A and second detour 209B illustrated in
In some implementations, the alternative flight path is further assigned the safety parameter based on the predicted miss distance of the alternate flight path being greater than the predetermined threshold, but also minimizing path deviation. For example an alternate flight path that goes beyond a predetermined deviation threshold will start having a higher and higher safety parameter because the alternate flight path becomes less useful when it deviates too far from the original flight path. Example predetermined deviation thresholds include 1000 feet, 2000 feet, one mile, or five miles, laterally.
At the conflict resolution analysis and decision block 314, the collision avoidance system 300 is configured to select an alternate flight path, such as first detour 209A or second detour 209B in
In some implementations, the collision avoidance system 300 is further configured to automatically transmit, or OUTPUT, the selected alternate flight path to a pilot or guidance system, such as guidance system 324 illustrated in
In some implementations, the safety parameter value assigned to an alternate flight path, such as first detour 209A illustrated in
In some implementations, the collision avoidance system 300 is further configured to determine a succession of one or more additional alternate flight paths based on the obstacle tracking data as received or additional obstacle tracking data, including additional contextual obstacle tracking data, that is received after the alternate flight path is determined, and the collision avoidance system is further configured to automatically maneuver the aircraft 204 with the guidance system 324 to follow the succession of one or more additional alternate flight paths. For example, consider the fifth flight scenario 200E illustrated in
In some implementations, the collision avoidance system 300 is further configured to determine, based on the obstacle tracking data as received, a predicted miss distance between the aircraft 204 and each of the one or more contextual obstacles, such as contextual obstacle 211 shown in
As described herein, the collision avoidance system 300 is configured to determine a probability that the aircraft 204 will collide with one or more potential obstacles and one or more contextual obstacles. In some implementations, the collision avoidance system is configured to determine the alternate flight path in response to the predicted miss distance between the aircraft and at least one of the one or more potential obstacles being equal to or less than a predetermined threshold. For example, if the conflict monitoring and detection block 302 determines that the predicted miss distance between the aircraft and the one or more potential obstacles is below the example and regulatory acceptable minimum distances described herein, the collision avoidance system is configured to determine the alternate flight path to avoid the one or more potential obstacles and the guidance system is configured to automatically maneuver the aircraft along the alternate flight path to avoid the collision.
Additionally, the collision avoidance system 300 is configured to determine the plurality of alternate flight path options in response to the predicted miss distance between the aircraft and at least one of the one or more contextual obstacles being equal to or less than a predetermined threshold. For example, if the conflict monitoring and detection block 302 determines that the predicted miss distance is less than the example and regulatory acceptable minimum distances described herein, the collision avoidance system is configured to determine the alternate flight path to avoid both the one or more potential obstacles and the one or more contextual obstacles and the guidance system is configured to automatically maneuver the aircraft along the alternate flight path to avoid the collision.
The seventh flight scenario 200G illustrates such an alternate flight path. If the aircraft 204 were to continue on the first flight path 202, the collision avoidance system would likely predict that the miss distance between the aircraft and the ground obstacle 210 would be close to, if not equal to, zero. The collision avoidance system will determine an alternate flight path going off to the right of the first flight path and detect the contextual obstacle 211. If the predicted miss distance is below the predetermined threshold, the alternate flight path, e.g., detour 209 shown, will need to go out further to the right of the contextual obstacle to avoid the collision. That is, the collision avoidance system is configured to determine alternate flight paths that have a predicted miss distance between the aircraft and the one or more potential obstacles (e.g., ground obstacle 210 or flying obstacle 206) of more than a predetermined threshold (e.g., the example and regulatory acceptable minimum distances described herein) and a predicted miss distance between the aircraft and one or more contextual obstacles (e.g., contextual obstacle 211) of more than the predetermined threshold (e.g., the example and regulatory acceptable minimum distances described herein).
It should be noted that the one or more contextual obstacles, do not have to be static. For example, the one or more contextual obstacles include one or more flying contextual obstacles that are flying parallel to the first flight path 202, but are far enough away from the first flight path such that it would not collide with the aircraft 204 if it remained along the first flight path.
As shown at block 406, the method 400 further includes determining a plurality of alternate flight path options, each of the plurality of alternate flight path options including a corresponding alternate flight path that deviates from the flight path. As shown at block 408, the method further includes assigning at least two of the alternate flight path options a corresponding safety parameter value, the safety parameter value based on at least the predicted miss distance between the aircraft and at least one of the one or more potential obstacles.
As shown at block 410, the method 400 further includes selecting an alternate flight path from among the plurality of alternate flight path options, the selected alternate flight path selected based at least on the selected alternate flight path having a lowest safety parameter value, the selected alternate flight path for the aircraft avoiding the one or more potential obstacles and at least one of the one or more contextual obstacles proximate to the flight path. As shown at block 412, the method further includes automatically transmitting the selected alternate flight path to a pilot or guidance system of the aircraft.
According to example implementations of the present disclosure, the collision avoidance system 300 is implemented by various means. Means for implementing the collision avoidance system includes hardware, alone or under direction of one or more computer programs from a computer-readable storage medium. In some examples, one or more apparatuses are configured to function as or otherwise implement the collision avoidance system shown and described herein. In examples involving more than one collision avoidance systems, the respective collision avoidance systems are connected to or otherwise in communication with one another in a number of different manners, such as directly or indirectly via a wired or wireless network or the like.
The processing circuitry 502 is composed of one or more processors alone or in combination with one or more memories. The processing circuitry is generally any piece of computer hardware that is capable of processing information such as, for example, data, computer programs and/or other suitable electronic information. The processing circuitry is composed of a collection of electronic circuits some of which is packaged as an integrated circuit or multiple interconnected integrated circuits (an integrated circuit at times more commonly referred to as a “chip”). The processing circuitry is configured to execute computer programs, which are stored onboard the processing circuitry or otherwise stored in the memory 504 (of the same or another apparatus).
The processing circuitry 502 includes a number of processors, a multi-core processor or some other type of processor, depending on the particular implementation. Further, the processing circuitry is implemented using a number of heterogeneous processor systems in which a main processor is present with one or more secondary processors on a single chip. As another illustrative example, the processing circuitry is a symmetric multi-processor system containing multiple processors of the same type. In yet another example, the processing circuitry is embodied as or otherwise include one or more ASICs, FPGAs or the like. Thus, although the processing circuitry is capable of executing a computer program to perform one or more functions, the processing circuitry of various examples is capable of performing one or more functions without the aid of a computer program. In either instance, the processing circuitry is appropriately programmed to perform functions or operations according to example implementations of the present disclosure.
The memory 504 is generally any piece of computer hardware that is capable of storing information such as, for example, data, computer programs (e.g., computer-readable program code 506) and/or other suitable information either on a temporary basis and/or a permanent basis. The memory includes volatile and/or non-volatile memory, and is fixed or removable. Examples of suitable memory include random access memory (RAM), read-only memory (ROM), a hard drive, a flash memory, a thumb drive, a removable computer diskette, an optical disk, a magnetic tape or some combination of the above. Optical disks include compact disk-read only memory (CD-ROM), compact disk-read/write (CD-R/W), DVD or the like. In various instances, the memory is referred to as a computer-readable storage medium. The computer-readable storage medium is a non-transitory device capable of storing information, and is distinguishable from computer-readable transmission media such as electronic transitory signals capable of carrying information from one location to another. Computer-readable medium as described herein generally refer to a computer-readable storage medium or computer-readable transmission medium.
In addition to the memory 504, the processing circuitry 502 is also connected to one or more interfaces for displaying, transmitting and/or receiving information. The interfaces include a communications interface 508 (e.g., communications unit) and/or one or more user interfaces. The communications interface is configured to transmit and/or receive information, such as to and/or from other apparatus(es), network(s) or the like. The communications interface is configured to transmit and/or receive information by physical (wired) and/or wireless communications links. Examples of suitable communication interfaces include a network interface controller (NIC), wireless NIC (WNIC) or the like.
The user interfaces include a display 510 and/or one or more user input interfaces 512 (e.g., input/output unit). The display is configured to present or otherwise display information to a user, suitable examples of which include a liquid crystal display (LCD), light-emitting diode display (LED), plasma display panel (PDP) or the like. The user input interfaces are wired or wireless, and are configured to receive information from a user into the apparatus, such as for processing, storage and/or display. Suitable examples of user input interfaces include a microphone, image or video capture device, keyboard or keypad, joystick, touch-sensitive surface (separate from or integrated into a touchscreen), biometric sensor or the like. The user interfaces further include one or more interfaces for communicating with peripherals such as printers, scanners or the like.
As indicated above, program code instructions are stored in memory and executed by processing circuitry that is thereby programmed, to implement functions of the systems, subsystems, tools and their respective elements described herein. As will be appreciated, any suitable program code instructions are loaded onto a computer or other programmable apparatus from a computer-readable storage medium to produce a particular machine, such that the particular machine becomes a means for implementing the functions specified herein. These program code instructions are also stored in a computer-readable storage medium that direct a computer, a processing circuitry or other programmable apparatus to function in a particular manner to thereby generate a particular machine or particular article of manufacture. The instructions stored in the computer-readable storage medium produce an article of manufacture, where the article of manufacture becomes a means for implementing functions described herein. The program code instructions are retrieved from a computer-readable storage medium and loaded into a computer, processing circuitry or other programmable apparatus to configure the computer, processing circuitry or other programmable apparatus to execute operations to be performed on or by the computer, processing circuitry or other programmable apparatus.
Retrieval, loading and execution of the program code instructions are performed sequentially such that one instruction is retrieved, loaded and executed at a time. In some example implementations, retrieval, loading and/or execution are performed in parallel such that multiple instructions are retrieved, loaded, and/or executed together. Execution of the program code instructions produce a computer-implemented process such that the instructions executed by the computer, processing circuitry or other programmable apparatus provide operations for implementing functions described herein.
Execution of instructions by a processing circuitry, or storage of instructions in a computer-readable storage medium, supports combinations of operations for performing the specified functions. In this manner, the apparatus 500 includes the processing circuitry 502 and the computer-readable storage medium or memory 504 coupled to the processing circuitry, where the processing circuitry is configured to execute computer-readable program code 506 stored in the memory. It will also be understood that one or more functions, and combinations of functions, are implemented by special purpose hardware-based computer systems and/or processing circuitry which perform the specified functions, or combinations of special purpose hardware and program code instructions.
Many modifications and other implementations of the inventions set forth herein will come to mind to one skilled in the art to which these disclosed implementations pertain having the benefit of the teachings presented in the foregoing descriptions and the associated drawings. Therefore, it is to be understood that implementations of the invention are not to be limited to the specific implementations disclosed and that modifications and other implementations are intended to be included within the scope of the invention. Moreover, although the foregoing descriptions and the associated drawings describe example implementations in the context of certain example combinations of elements and/or functions, it should be appreciated that different combinations of elements and/or functions are provided by alternative implementations without departing from the scope of the disclosure. In this regard, for example, different combinations of elements and/or functions than those explicitly described above are also contemplated within the scope of the disclosure. Although specific terms are employed herein, they are used in a generic and descriptive sense only and not for purposes of limitation.
It should be understood that although the terms first, second, etc. are be used herein to describe various steps or calculations, these steps or calculations should not be limited by these terms. These terms are only used to distinguish one operation or calculation from another. For example, a first calculation is termed a second calculation, and, similarly, a second step is termed a first step, without departing from the scope of this disclosure. As used herein, the term “and/or” and the “/” symbol includes any and all combinations of one or more of the associated listed items.
As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises”, “comprising”, “includes”, and/or “including”, when used herein, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof. Therefore, the terminology used herein is for the purpose of describing particular implementations only and is not intended to be limiting.