The present disclosure is generally related to collision avoidance systems. More particularly, the present disclosure is related to automated detection and avoidance systems for avoiding vehicle collisions.
The use of autonomous aircraft is becoming more prevalent. However, if mitigation systems are not provided, those aircraft will come into contact with other flying objects in the air with greater prevalence too. Collision avoidance systems help prevent mid-air collisions and improve safety and efficiency of autonomous aircraft. There are commercially available systems having user interfaces that monitor traffic and provide a visual view of traffic and related tracks. However, none of the available systems provide specific resolutions for resolving the potential mid-air conflict. For example, commercially available systems do not provide specific heading and direction information for avoiding the collision.
Additionally, existing systems output traffic alert resolution advisories meant to be interpreted by a human pilot and not an autonomous 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 system and method for detecting and avoiding a conflict along a current route of a vehicle (e.g., an aircraft). In some implementations, the system accesses or determines trajectories of the aircraft and a plurality of nearby moving objects, the trajectories being determined forward in time from respective current positions of the aircraft and the plurality of nearby moving objects. Next, the system performs a comparison of the trajectories, and, from that comparison, predicts one or more conflicts between the aircraft and corresponding ones of the nearby moving objects. The system then determines the most-imminent conflict from the one or more conflicts and selects a maneuver to avoid the most-imminent conflict. This process is updated and performed continuously based on the potential conflicts detected. The system includes a user interface, where a specific resolution to the conflict is displayed. The specific resolution includes a direction in which to turn the aircraft and the magnitude of heading change (e.g., “LEFT” 15 degrees). In some alternative implementations, the specific resolution is transmitted to a guidance system of the aircraft where the resolution is automatically executed by the guidance system.
The subject matter provided herein provides a method and system for fully autonomous implementation of a system to prevent loss of well-clear and near mid-air collisions. The present disclosure thus includes, without limitation, the following example implementations.
Some example implementations provide a system for detecting and avoiding conflict along a current route of a vehicle, the system comprising: a memory configured to store computer-readable program code; and processing circuitry configured to access the memory, and execute the computer-readable program code to cause the system to at least: access or determine trajectories of the vehicle and a plurality of nearby moving objects, the trajectories being determined forward in time from respective current positions of the vehicle and the plurality of nearby moving objects; predict, from a comparison of the trajectories, one or more conflicts between the vehicle and corresponding ones of the nearby moving objects; determine a most-imminent conflict from the one or more conflicts based on a set of predefined prioritization rules; select a maneuver to avoid the most-imminent conflict, including: determine, based on the most-imminent conflict, a set of maneuvers, each of the maneuvers in the set comprising a maneuver direction and magnitude of heading change, calculated to maneuver the vehicle away from the current route to thereby avoid the most-imminent conflict; and evaluate the set of maneuvers and select the maneuver to avoid the conflict; and output the selected maneuver on a user interface for use in controlling the vehicle.
In some example implementations of the system of any preceding example implementation, or any combination thereof, the system is further caused to transmit the selected maneuver, including the maneuver direction and the magnitude of heading change, to a guidance system of the vehicle, wherein the guidance system is configured to maneuver the vehicle according to the selected maneuver direction and magnitude of heading change.
In some example implementations of the system of any preceding example implementation, or any combination thereof, the system is further caused to: display a first trajectory of the vehicle on a visual flight rules (VFR) map or terrain map on the user interface, including a current position of the vehicle and the first trajectory pointing from the current position of the vehicle to a future position of the vehicle based on the selected maneuver direction and magnitude of heading change; and display a current position of each of the plurality of nearby moving objects relative to the current position of the vehicle.
In some example implementations of the system of any preceding example implementation, or any combination thereof, the user interface is configured to toggle between the VFR map and the terrain map with the first trajectory displayed thereon.
In some example implementations of the system of any preceding example implementation, or any combination thereof, the system is further configured to display an indicia on the user interface to indicate a status of the vehicle along an updated route, the status including a location of the vehicle along the updated route.
In some example implementations of the system of any preceding example implementation, or any combination thereof, the set of predefined prioritization rules comprises, in ranked order from first to last, the system configured to: determine that a physically closest nearby moving object is the most-imminent conflict if the vehicle is in a near mid-air collision (NMAC) state; determine that a nearby moving object predicted to cause the vehicle to enter a NMAC state is the most-imminent conflict if the vehicle is in a loss of well-clear (LOWC) state; determine that the physically closest nearby moving object is the most-imminent conflict if the vehicle is currently in a LOWC state, but no NMAC state is predicted; or determine that a nearby moving object that is predicted to cause the vehicle to enter an LOWC state earlier than any other nearby moving object is the most-imminent conflict if the vehicle is not currently in an NMAC or LOWC state.
In some example implementations of the system of any preceding example implementation, or any combination thereof, the system caused to evaluate the set of maneuvers includes the system configured to: sort the set of maneuvers by maneuver direction and increasing magnitude of heading change; and select, from the sorted set of maneuvers, a corresponding maneuver including: a maneuver direction that complies with predefined right-of-way rules; and a magnitude of heading change for the vehicle, as the selected maneuver to avoid the conflict.
In some example implementations of the system of any preceding example implementation, or any combination thereof, the system configured to select the corresponding maneuver comprises the system further configured to: select, from the sorted set of maneuvers, a first maneuver direction and magnitude of heading change in the set of maneuvers that does not result in an LOWC state being predicted for the vehicle if the vehicle maneuvers in the selected maneuver direction and magnitude of heading change; select, from the sorted set of maneuvers, the corresponding maneuver with a maneuver direction and magnitude of heading change that maximizes a distance at which the vehicle will remain a first threshold distance away from all of the nearby moving objects if no maneuver direction and corresponding magnitude of heading change will avoid the vehicle entering an LOWC state; or select, from the sorted set of maneuvers, the corresponding maneuver with a maneuver direction and the magnitude of heading change that leads fastest to a state where no conflict between the vehicle and the nearby moving objects is predicted if more than one of the set of maneuvers creates corresponding distances, at which the vehicle will remain away from all of the nearby moving objects, within a second threshold distance of each other.
In some example implementations of the system of any preceding example implementation, or any combination thereof, the set of maneuvers comprises an ordered list of maneuver directions and magnitudes of heading change, wherein the maneuver direction is either left or right and the ordered list is ordered such that all maneuvers with a left maneuver direction are given priority in the ordered list, along with corresponding magnitudes of heading change, over the maneuvers with a right maneuver direction.
In some example implementations of the system of any preceding example implementation, or any combination thereof, the system is provided a preferred maneuver direction; wherein the system is configured to select a maneuver with the preferred maneuver direction unless no maneuver in the set that has the preferred maneuver direction will prevent a loss of well-clear.
Some other example implementations of the present disclosure provide a method for detecting and avoiding conflict along a current route of a vehicle, the method comprising: storing computer-readable program code in a memory and executing the computer-readable program code by processing circuitry configured to access the memory, wherein upon execution of the computer-readable program code, the processing circuitry is configured to perform the steps comprising: accessing or determining trajectories of the vehicle and a plurality of nearby moving objects, the trajectories being determined forward in time from respective current positions of the vehicle and the plurality of nearby moving objects; predicting, from a comparison of the trajectories, one or more conflicts between the vehicle and corresponding ones of the nearby moving objects; determining a most-imminent conflict from the one or more conflicts based on a set of predefined prioritization rules; selecting a maneuver to avoid the most-imminent conflict, including: determining, based on the most-imminent conflict, a set of maneuvers, each of the maneuvers in the set comprising a maneuver direction and magnitude of heading change, calculated to maneuver the vehicle away from the current route to thereby avoid the most-imminent conflict; and evaluating the set of maneuvers and selecting the maneuver to avoid the conflict; and outputting the selected maneuver on a user interface for use in controlling the vehicle.
In some example implementations of the method of any preceding example implementation, or any combination thereof, the method further comprises: transmitting the selected maneuver, including the maneuver direction and the magnitude of heading change, to a guidance system of the vehicle; and using the guidance system to maneuver the vehicle according to the selected maneuver direction and magnitude of heading change.
In some example implementations of the method of any preceding example implementation, or any combination thereof, the method further comprises: displaying a first trajectory of the vehicle on a visual flight rules (VFR) map or terrain map on the user interface, including a current position of the vehicle and the first trajectory pointing from the current position of the vehicle to a future position of the vehicle based on the selected maneuver direction and magnitude of heading change; and displaying a current position of each of the plurality of nearby moving objects relative to the current position of the vehicle.
In some example implementations of the method of any preceding example implementation, or any combination thereof, the user interface is configured to toggle between the VFR map and the terrain map with the first trajectory displayed thereon.
In some example implementations of the method of any preceding example implementation, or any combination thereof, the method further comprises displaying an indicia on the user interface to indicate a status of the vehicle along an updated route, the status including a location of the vehicle along the updated route.
In some example implementations of the method of any preceding example implementation, or any combination thereof, the set of predefined prioritization rules comprises, in ranked order from first to last, the processing circuitry: determining that a physically closest nearby moving object is the most-imminent conflict if the vehicle is in a near mid-air collision (NMAC) state; determining that a nearby moving object predicted to cause the vehicle to enter a NMAC state is the most-imminent conflict if the vehicle is in a loss of well-clear (LOWC) state; determining that the physically closest nearby moving object is the most-imminent conflict if the vehicle is currently in a LOWC state, but no NMAC state is predicted; or determining that a nearby moving object that is predicted to cause the vehicle to enter an LOWC state earlier than any other nearby moving object is the most-imminent conflict if the vehicle is not currently in an NMAC or LOWC state.
In some example implementations of the method of any preceding example implementation, or any combination thereof, wherein evaluating the set of maneuvers includes the processing circuitry: sorting the set of maneuvers by maneuver direction and increasing magnitude of heading change; and selecting, from the sorted set of maneuvers, a corresponding maneuver including: a maneuver direction that complies with predefined right-of-way rules; and a magnitude of heading change for the vehicle, as the selected maneuver to avoid the conflict.
In some example implementations of the method of any preceding example implementation, or any combination thereof, wherein selecting the corresponding maneuver includes the processing circuitry: selecting, from the sorted set of maneuvers, a first maneuver direction and magnitude of heading change in the set of maneuvers that does not result in an LOWC state being predicted for the vehicle if the vehicle maneuvers in the selected maneuver direction and magnitude of heading change; selecting, from the sorted set of maneuvers, the corresponding maneuver with a maneuver direction and magnitude of heading change that maximizes a distance at which the vehicle will remain a first threshold distance away from all of the nearby moving objects if no maneuver direction and corresponding magnitude of heading change will avoid the vehicle entering an LOWC state; or selecting, from the sorted set of maneuvers, the corresponding maneuver with a maneuver direction and the magnitude of heading change that leads fastest to a state where no conflict between the vehicle and the nearby moving objects is predicted if more than one of the set of maneuvers creates corresponding distances, at which the vehicle will remain away from all of the nearby moving objects, within a second threshold distance of each other.
In some example implementations of the method of any preceding example implementation, or any combination thereof, wherein the set of maneuvers comprises an ordered list of maneuver directions and magnitudes of heading change, wherein the maneuver direction is either left or right and the ordered list is ordered such that all maneuvers with a left maneuver direction are given priority in the ordered list, along with corresponding magnitudes of heading change, over the maneuvers with a right maneuver direction.
In some example implementations of the method of any preceding example implementation, or any combination thereof, the method further comprises: receiving a preferred maneuver direction; selecting a maneuver with the preferred maneuver direction unless no maneuver in the set that has the preferred maneuver direction will prevent a loss of well-clear.
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) is instead below, and vice versa; and similarly, something described as being to the left of something else is 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, aerial vehicles, and/or 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, 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.
In some example implementations, upon execution of the computer-readable program code, the system 300 is configured to access or determine trajectories of the aircraft (e.g., by accessing or determining the ownship path from a guidance system 320 of the aircraft) and a plurality of nearby moving objects (e.g., from the sensors 305), the trajectories being determined forward in time from respective current positions of the aircraft and the plurality of nearby moving objects. That is, the system determines the future trajectories of the flying objects (e.g., based on analyzing the current track of the flying objects from the nearby object tracking data 304 received from the sensors) and itself to determine if a future conflict will occur. To that end, the conflict monitoring and prediction block 302 is configured to predict, from a comparison of the trajectories, one or more conflicts between the aircraft and corresponding ones of the nearby moving objects.
As described above, the system 300 includes a most-imminent conflict determination block 306, at which the system is configured to determine a most-imminent conflict from the one or more conflicts based on a set of predefined prioritization rules. In some implementations, the set of predefined prioritization rules comprises, in ranked order from first to last, the system configured to: determine that a physically closest nearby moving object is the most-imminent conflict if the aircraft is in a near mid-air collision (NMAC) state; determine that a nearby moving object predicted to cause the aircraft to enter a NMAC state is the most-imminent conflict if the aircraft is in a loss of well-clear (LOWC) state; determine that the physically closest nearby moving object is the most-imminent conflict if the aircraft is currently in a LOWC state, but no NMAC state is predicted; or determine that a nearby moving object that is predicted to cause the aircraft to enter an LOWC state earlier than any other nearby moving object is the most-imminent conflict if the aircraft is not currently in an NMAC or LOWC state. An NMAC is defined as an incident associated with the operation of an aircraft in which a possibility of collision occurs as a result of proximity of less than 500 feet to another aircraft, or a report is received from a pilot or a flight crewmember stating that a collision hazard existed between two or more aircraft.
Well-clear refers to a state in which a pilot considers the situation of the aircraft to be safe in relation to the surrounding traffic. Well-clear and NMAC each have different meanings in different contexts. For example, RTCA standard DO-365B defines well-clear as: 1) 2200 feet horizontal and 450 feet vertical for non-cooperative air traffic (i.e., other aircraft with no transponder); and 2) 4000 feet plus a 35 second “modified tau” value, 450 feet vertical for cooperative aircraft. As another example, RTCA standard DO-365B defines NMAC as 500 feet horizontal and 100 feet vertical. In yet another example, ASTM standard F3442/F3442M-20 (for small UAS) specifies that 1) well-clear is 2000 feet horizontal and 250 feet vertical; and 2) NMAC is 500 feet horizontal and 100 feet vertical.
Once the most-imminent conflict determination block 306 determines the most-imminent conflict, the conflict resolution analysis and maneuver selection block 308 of the system 300 is configured to determine, based on the most-imminent conflict, a set of maneuvers, each of the maneuvers in the set comprising a maneuver direction and magnitude of heading change, calculated to maneuver the aircraft away from the current route to thereby avoid the most-imminent conflict. For example, the set of maneuvers includes a list or table of maneuvers with a maneuver direction (e.g., “LEFT” or “RIGHT”) and a corresponding magnitude of heading change (e.g., 1, 2, 3, . . . 90 degrees). The system is further configured to evaluate the set of maneuvers and select the maneuver to avoid the most-imminent conflict. Once the maneuver has been selected, the system is configured to output the maneuver, including the maneuver direction and corresponding magnitude of heading change, on a user interface 310 for use in controlling the aircraft. Controlling the aircraft using the output on the user interface is described in further detail below with respect to
In some example implementations, the system 300 is configured to evaluate the set of maneuvers, including the system configured to sort the set of maneuvers by maneuver direction and increasing magnitude of heading change. Following the sorting, the set of maneuvers comprises an ordered list of maneuver directions and magnitudes of heading change, wherein the maneuver direction is either “LEFT” or “RIGHT” and the ordered list is ordered such that all maneuvers with a “LEFT” maneuver direction are given priority, (e.g., listed first) along with corresponding magnitudes of heading change, over the maneuvers with a “RIGHT” maneuver direction. That is, the system sorts the set of maneuvers where all the “LEFT” maneuver direction entries are listed before all the “RIGHT maneuver direction entries (or vice versa) and then within the “LEFT” maneuver direction entries, each of the “LEFT” maneuver direction entries are ordered such that the corresponding magnitudes of heading change are listed in ascending order. The same goes for the “RIGHT” maneuver direction entries. Table 1 below provides an example with a few entries to illustrate this concept.
The system 300 is configured to select, from the sorted set of maneuvers, a corresponding maneuver including: a maneuver direction that complies with predefined right-of-way rules (e.g., such as the right-of-way rules defined by the Federal Aviation Administration [FAA] or other rules setting body for aviation); and a magnitude of heading change for the aircraft, as the selected maneuver to avoid the conflict. The right-of-way rules defined by the FAA determine a preferred direction (left or right) depending on the situation presented.
In some example implementations, the system 300 being configured to select the corresponding maneuver comprises the system further configured to: select, from the sorted set of maneuvers, a first maneuver direction and magnitude of heading change in the set of maneuvers that does not result in an LOWC state being predicted for the aircraft if the aircraft maneuvers in the selected maneuver direction and magnitude of heading change. Alternatively, the system is further configured to select, from the sorted set of maneuvers, the corresponding maneuver with a maneuver direction and magnitude of heading change that maximizes a distance at which the aircraft will remain a first threshold distance away from all of the nearby moving objects if no maneuver direction and corresponding magnitude of heading change will avoid the aircraft entering an LOWC state. As a further alternative, the system is further configured to select, from the sorted set of maneuvers, the corresponding maneuver with a maneuver direction and the magnitude of heading change that leads fastest to a state where no conflict between the aircraft and the nearby moving objects is predicted if more than one of the set of maneuvers creates corresponding distances, at which the aircraft will remain away from all of the nearby moving objects, within a second threshold distance of each other.
In some example implementations, the conflict resolution analysis and maneuver selection block 308 of the system 300 is configured to select a maneuver with a maneuver direction in the preferred direction (e.g., left or right, based on the right-of-way rules discussed above, or based on a received preferred direction) unless no maneuver in the set having the preferred maneuver direction will prevent a loss of well-clear. In some examples, by default, the maneuver selection block will select a maneuver with a left maneuver, however, if a left maneuver will not produce a return to well clear or otherwise resolve the conflict, a maneuver having a “RIGHT” maneuver direction will be selected.
As described above, in some implementations, the aircraft is fully autonomous (i.e., the maneuver is executed by the guidance system 320), partially autonomous (e.g., some aspects of the maneuver are executed by the guidance system and other parts are executed by a human operator), or fully controlled by a human (i.e., the ground station 332 comprises a joy stick or other user interface allowing a pilot on the ground to execute the maneuver manually).
Once the system 300 determines the maneuver with respect to flying object 1 312 and flying object 2 314 according to the description above, it displays an arrow and instruction 316 indicating the maneuver direction (e.g., “RIGHT” in the example illustrated in
The system 300 described above is configured to continuously perform the functions described herein as real-time flying object tracking is received and processed by the system. For example, once a maneuver is selected and the aircraft changes direction according to the maneuver, the process for receiving the flying object tracking data, analyzing the data, detecting conflicts, and determining maneuvers will begin again.
As shown in fourth block 408, the method 400 incudes determining a most-imminent conflict from the one or more conflicts based on a set of predefined prioritization rules. As shown in fifth block 410, the method includes selecting a maneuver to avoid the most-imminent conflict. As shown in sixth block 412, the method includes selecting the maneuver to avoid the most-imminent conflict including determining, based on the most-imminent conflict, a set of maneuvers, each of the maneuvers in the set comprising a maneuver direction and magnitude of heading change, calculated to maneuver the vehicle away from the current route to thereby avoid the most-imminent conflict; and as shown in seventh block 414 evaluating the set of maneuvers and selecting the maneuver to avoid the conflict. As shown eighth block 416, the method further includes outputting the selected maneuver on a user interface for use in controlling the vehicle.
According to example implementations of the present disclosure, the system 300 for detecting and avoiding conflict along a current route of an aircraft is implemented by various means. Means for implementing the 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 system shown and described herein. In examples involving more than one apparatus, the respective apparatuses 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 be 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 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.