The present description generally relates to the use of equipment in worksite operations. More specifically, the present description relates to controlling and protecting the equipment from colliding with itself.
There is a wide variety of different types of equipment such as forestry equipment, construction equipment, among others. These types of equipment are often operated by an operator and have sensors that generate information during an operation.
Further, many different types of equipment can be equipped to use a variety of attachments. For example, excavators have many options for attachments. Some of these include buckets, grapples, augers, trench diggers, etc.
The discussion above is merely provided for general background information and is not intended to be used as an aid in determining the scope of the claimed subject matter. SUMMARY
A work machine identifies a commanded trajectory of a point-of-interest on a movable element. An analysis system determines whether a protected part of the work machine is along the trajectory of the point-of-interest and, if so, identifies an actuator that moves the point-of-interest along the commanded trajectory. A control signal is generated to selectively control the identified actuator to avoid contact between the point-of-interest and the protected part of the work machine.
Example 1 is a method of controlling a work machine, comprising:
Example 2 is the method of any or all previous examples wherein identifying an actuator comprises:
Example 3 is the method of any or all previous examples wherein identifying an actuator comprises:
Example 4 is the method of any or all previous examples wherein identifying the actuator comprises:
Example 5 is the method of any or all previous examples wherein selectively limiting movement of the identified actuator comprises:
Example 6 is the method of any or all previous examples and further comprising:
Example 7 is the method of any or all previous examples wherein accessing a set of vertices comprises:
Example 8 is the method of any or all previous examples wherein accessing the set of vertices comprises:
Example 9 is the method of any or all previous examples wherein determining that the trajectory-of-action intersects with the geometric construct comprises:
Example 10 is the method of any or all previous examples and further comprising:
Example 11 is the method of any or all previous examples wherein selectively limiting movement of the identified actuator comprises:
Example 12 is the method of any or all previous examples wherein selectively limiting movement of the identified actuator to inhibit contact between the movable element and the protected portion of the work machine comprises:
Example 13 is a work machine, comprising:
Example 14 is the work machine of any or all previous examples wherein the actuator identification system is configured to identify a subset of actuators, that drive movement of the movable element along the trajectory-of-action, that can be limited to avoid contact between the point-of-interest and the protected portion of the work machine.
Example 15 is the work machine of any or all previous examples wherein the actuator identification system is configured to identify, as the subset of actuators, a plurality of actuators driving movement of the point-of-interest along the trajectory-of-action and wherein the selective limit identification processor is configured to identify a generate a plurality of limitation signals corresponding to the identified plurality of actuators.
Example 16 is the work machine of any or all previous examples wherein the actuator controller is configured to selectively limiting movement of the identified plurality of actuators to inhibit contact between the movable element and the protected portion of the work machine.
Example 17 is the work machine of any or all previous examples and further comprising:
Example 18 is the work machine of any or all previous examples wherein the input command processing system comprises:
Example 19 is a collision avoidance system, comprising:
Example 20 is the collision avoidance system of any or all previous examples wherein the work machine has a plurality of actuators that are configured to drive movement of the movable element and wherein the actuator identifier is configured to identify a subset of the plurality of actuators that can be limited to avoid contact between the movable element and the protected portion of the work machine.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter. The claimed subject matter is not limited to implementations that solve any or all disadvantages noted in the background.
Many types of machinery are becoming more modular, meaning that they are able to perform a variety of different functions by replacing a controllable attachment. For example, excavators traditionally have a bucket as an attachment. However, today there are many different kinds of buckets and many different attachments that can replace the bucket, such as a grapple, an auger, a compaction wheel, a backfill blade, a concrete crusher, a slope packer, a trench digger, etc. While this modularity increases the functionality of a work machine, it can provide some challenges when switching between attachments of different sizes. For instance, an excavator may be designed with one bucket in mind, such that any motion of the excavator attachment will not inflict self-harm (e.g., the attachment will not make contact with another part of the excavator and damage it). However, when an attachment of a different size is used on the excavator, movement of the attachment to a certain position can inflict self-harm, (e.g., the attachment can contact and harm a portion of the excavator that is to be protected from contact). Further, some excavators can even inflict self-harm with a stock attachment that they were designed to work with. Therefore, some current systems detect when a movable element on the work machine is going to contact another portion of the machine and stops machine operation to avoid the contact. However, these types of systems often stop all machine movement or at least stop all movement of the movable element, in order to avoid the contact.
The present description thus proceeds with respect to a system that identifies the specific actuator(s) that is (are) moving the movable element toward the protected area of the machine and selectively limits movement of only the identified actuator(s) to avoid the contact.
Each movable element is driven by one or more corresponding actuators (such as hydraulic cylinders, or other actuators). Tracks 103 are mounted to a lower frame of machine 102 and are driven by an engine or motors to guide and propel work machine 102 about a worksite 100. In other examples, tracks 103 can be replaced by wheels or other ground engaging elements.
Operator compartment 101 is coupled to the house 104 where internal components of work machine 102 are housed. Some of these internal components include an engine, transmission, hydraulic pumps, generators, etc. House 104 is supported by an upper frame and rotatably coupled relative to the lower frame of machine 102. House 104 is driven by an actuator to rotate about house axis 114 in the direction indicated by arrows 115.
Boom 106 is also rotatably coupled to the upper frame that supports house 104. Boom 106 rotates about boom axis 116 in the direction indicated by arrow 117. Stick or arm 108 is rotatably coupled to boom 106. Stick or arm 108 rotates about axis 118 in the direction indicated by arrow 119. Attachment 110 is shown as a bucket which is rotatably coupled to stick or arm 108. Attachment 110 rotates about attachment axis 120, in the direction indicated by arrow 121. As shown in
In an example operation, an operator in operator compartment 102 can raise boom 106 by controlling an actuator to rotate boom 106 counterclockwise about axis 116. The operator can control actuators to rotate arm 108 clockwise about axis 118 and to rotate attachment 110 clockwise about axis 120. Moving these components in the way described may bring attachment 110 or boom 106 into contact with, and potentially damage, blade 123, or one of the tracks 103, or operator compartment 101, or another part of work machine 102. A system described in greater detail below can limit movement of the movable elements to inhibit one part of machine 102 from contacting a protected portion of work machine 102 (e.g., to inhibit mobile machine 102 from harming itself).
Sensor 302 is illustratively coupled to the linkage between boom 106 the upper frame which supports house 104 to measure the position of boom 106 relative to house 104. For instance, sensor 302 can be a potentiometer or an angle encoder or another sensor that measures the angle of rotation of boom 106 about axis 116. Sensor 303 is illustratively coupled to the linkage between boom 106 and arm 108. Sensor 303 illustratively measures the position of arm 108 relative to boom 106. Sensor 304 is coupled to the linkage between arm 108 and attachment 110. Sensor 304 generates a signal indicative of the position of attachment 110 relative to arm 108. Similarly, sensor 305 is coupled to the linkage between blade 123 and the lower frame of machine 102 to measure the position of blade 123 relative to the lower frame 102.
In addition to, or instead of sensors 301-305, machine 102 can have sensors 306-310 which may be inertial measurement units (IMUs) that track inertia, acceleration, and rotation of the movable elements to which they are mounted. Then, using kinematic information (for example), the position or movement of the movable elements can be mathematically calculated if the IMU is placed in a known position on the movable element. In addition, or instead, machine 102 can also have sensors 311-314. Sensors 311-314 may be linear displacement transducers (LDTs), such as magnetic resistive transducers, Hall Effect sensors, etc., that are coupled to corresponding hydraulic actuators that drive movement of the different moveable elements. For example, sensor 311 is coupled to actuator 146 that actuates movement of blade 123 relative to the lower frame of machine 102. Sensor 311 generates a signal indicative of the extent to which cylinder 146 is extended and is thus indicative of the position of blade 123 relative to the lower frame of machine 102. Sensor 312 can similarly detect the extent to which cylinder 140 is extended. Sensor 313 can detect the extent to which cylinder 142 is extended, and sensor 314 can detect the extent to which cylinder 144 is extended. Based upon these detected measurements, and based on other kinematic information, the location of the movable elements driven by the corresponding actuators can be identified as well.
Similarly,
The present discussion proceeds with respect to a work machine 102 in which a collision avoidance system is used to limit the control of machine 102 so that a collision between a point-of-interest on the digging equipment on machine 102 (or another movable element of machine 102) and the blade 123 (or any other protected portion of work machine 102) is avoided. The actuators that are moving the point-of-interest toward a collision are identified and those actuators are selectively limited to avoid the collision.
Data store 216 can store dimensions 240, attachment information 242 (which may be an index of different attachments and their corresponding dimension and degree of freedom information), other kinematic information 244 which can be used to calculate the position of different moveable elements and points of interest on machine 102, and any of a wide variety of other information 246. Controllable subsystems 222 can include propulsion subsystem 248 which provides propulsion to machine 102, and a plurality of actuators 250 which can include the rotary actuator that drives rotary movement of house 104 relative to lower frame of machine 102, the various actuators 140, 142, 144, and 146 which drive movement of the movable elements on machine 102, and any of a wide variety of other actuators. Controllable subsystems 222 can include moveable elements 252 such as tracks 103, house 104, boom 106, stick or arm 108, bucket or other attachment 110, blade 123, and any of a variety of other movable elements 254. Controllable subsystems 222 can include other subsystems 256 as well. Control system 220 includes propulsion system controller 258, actuator controller 260, and other items 262.
An operator can control and interact with machine 102 through user interface mechanisms 212. User interface mechanisms 212 can include a variety of different mechanisms including displays, touch screens, levers, pedals, steering wheel, joysticks, etc. Actuation of user interface mechanisms 212 can activate control system 220 to generate a control signal to control controllable subsystems 222. For instance, moving a lever or a joystick may cause actuator controller 260 to send a control signal to actuators 250 to rotate house 104 relative to the lower frame of machine 102, to raise or lower boom 108 and/or stick or arm 108, to manipulate bucket or other attachment 110, to raise or lower blade 123, etc. An operator input can also cause actuator controller 260 to generate a control signal to control propulsion system 248 to move and steer machine 102.
Communication system 214 illustratively facilitates communication of the items of work machine 102 with one another, and may also facilitate communication with other machines or other systems over a network. The network may be a wide area network, a local area network, a near field communication network, a Wi-Fi or Bluetooth network, a cellular communication network, or any of a wide variety of other networks or combinations of networks. Therefore, communication system 214 may be a controller area network (CAN) bus and bus controller, and other communication system functionality to communicate over other networks.
Collision avoidance system 224 may receive inputs from the various sensors 218 and obtain information from data store 216 and then generate an action signal to control the operation of machine 102 to avoid collisions between the movable elements of work machine 102 and protected areas or portions of work machine 102, to generate an alert message for an operator, etc. Thus, trigger detector 264 detects when collision avoidance system 224 is to operate to avoid such collisions. The trigger detector may detect various trigger criteria, such as an operator input engaging collision avoidance system 224, inputs indicating that the digging equipment is about to collide with a protected portion of work machine 102, or other trigger criteria.
Once triggered, geometric construct identification system 265 obtains a set of vertices or other points defining a geometric construct representing one or more different protected areas on work machine 102. For instance, the set of vertices can be obtained from a solid model of machine 102 or downloaded from a remote server (such as a web site for the manufacturer of machine 102, etc.). The vertices allow geometric construct identification system 265 to generate a basic shape corresponding to each protected area of machine 102 as well as the movable elements of machine 102.
For example, trigonometry, kinematics, geometry, and one or more sensor signals and dimension information or attachment information 242 or other kinematic information 244 can be used to determine the position of a movable element and also to generate the bounding box or other geometric construct that encompasses or corresponds to the movable element and/or the protected portions of work machine 102. The dimensions 240 may be received as operator inputs or retrieved from another data store. For instance, the dimension information 240, attachment information 242, and other kinematic information 244 can be previously entered by an operator, preloaded by a machine manufacturer, or retrieved from a remote source.
Point-of-interest location system 270 in position identification system 263 then identifies a point-of-interest on a movable element of machine 102. Geometric construct position detector 266 identifies the positions of each of the protected areas or portions of machine 102 and the position of the point-of-interest. The positions of those elements can be identified in a coordinate system corresponding to machine 102, or in a global coordinate system, or in another way.
Once an input command is received, input command processor 274 processes that command to see whether execution of the command will result in a collision between any of the identified points of interest and any of the protected portions of machine 102. For instance, trajectory analysis system 280 uses trajectory-of-action identification system 282 to identify a trajectory along which the point-of-interest on the movable element will be moved if the input command is executed. Geometric construct presence detector 284 analyses points along the trajectory-of-action to determine whether a surface of any of the protected portions of machine 102 (the geometric constructs) lies in the same direction as the movement of the point-of-interest along the trajectory-of-action. If so, intersection detection processor 286 identifies where along the trajectory-of-interest the point-of-interest will intersect with the protected portion of machine 102 (the geometric construct).
Actuator control processor 300 then uses actuator identification processor 302 to identify which particular actuators 250 are responsible for moving the point-of-interest along the trajectory-of-action. Distance/approach speed processor 304 identifies how far away the point-of-interest is from the protected portion of machine 102 and the speed at which the point-of-interest is and will be approaching the protected portion of machine 102. Selective limit identification processor 306 then identifies a limit that is to be placed on the identified actuators 250, given the distance and approach speed of the point-of-interest, in order to avoid a collision (or contact) between the point-of-interest and the protected portion of machine 102 (the geometric construct) that lies along the trajectory-of-action.
Control signal generator 276 then generates control signals to selectively impose the limit on the identified actuators 250. By only imposing the limit on the actuators driving movement of the point-of-interest toward the collision, all other actuators remain fully functional.
Trajectory analysis system 280 can track the trajectory of the movable element relative to the protected portions of machine 102 through space, given the input from sensors 218 and given the data from data store 216, as well as the inputs from detectors 266 and 268 and systems 266 and 270. Intersection detection processor 286 can be an artificial neural network, a deep learning system, a machine learning system, or another system that takes, as inputs, the positions of the geometric constructs and points of interest as well as the commanded input, and generates an output indicative of whether the commanded input will result in a collision or will result in the point-of-interest coming within a threshold distance of a protected portion of machine 102.
In one example, where the commanded input would result in such a collision, then limit controller 290 generates an output to modify the commanded input so that actuator controller 262 is controlled to limit movement of only the identified actuator 250 to stop the point-of-interest short of the collision. Alert generator 292 can generate a control signal to control user interface mechanisms 212 to output an alert for the operator. The alert may indicate that the commanded input will result in a collision or will result in the point-of-interest coming within a threshold distance of a protected portion of machine 102. Communication system controller 294 can control communication system 214 to communicate the results of the information generated by collision avoidance system 224 to another machine, or to an external system. For instance, assume that the operator of machine 102 is an automated system. Assume further that the automated system is generating a high volume of command inputs which would result in the point-of-interest colliding with a protected portion of machine 102. In that case, this information may be useful in modifying the automated operator to avoid such operator inputs in the future or to otherwise control machine 102 in a more satisfactory way. Similarly, where alert generator 292 generates an operator alert, but the operator continues with the commanded input, resulting in a collision, this information may be useful as well.
At some point, trigger detector 264 detects a trigger that triggers collision avoidance system 224, as indicated by block 358 in the flow diagram of
When collision avoidance system 224 is enabled, geometric construct identification system 264 obtains a set of vertices or other points defining one or more geometric constructs representing one or more different protected areas of machine 102. Obtaining vertices or other points defining such constructs is indicated by block 360 in the flow diagram of
The vertices or other points or information that are used to generate the geometric constructs can be obtained from a variety of different sources. For instance, those points or vertices can be obtained from dimensions 240, attachment information 242, or other kinematic information 244. The vertices or points can be obtained from a solid model of work machine 202, as indicated by block 262 and/or downloaded from a remote server, as indicated by block 364. The set of vertices or points can be obtained for all of the moveable components 366 as well as for specific attachments 368 and other protected areas or surfaces 370.
When the geometric constructs are generated, geometric construct position detector 266 then locates each of the geometric constructs in a coordinate system local to machine 102, as indicated by block 372. For instance, the signals from sensors 218 can be used to identify the position of the one or more points on machine 102 and then, using trigonometry, kinematic, and/or dimensional information, the positions of the geometric constructs can be calculated. In another example, a plurality of different sensors are placed at different locations on machine 102 so the locations of the different geometric constructs in the coordinate system local to machine 102 can be obtained more quickly or with less processing overhead. The geometric constructs and relative location information and/or other information can also be stored for later retrieval and use in avoiding collisions.
Point-of-interest selector 268 then selects a point-of-interest on a movable element. For instance, the point-of-interest may be the tip of the bucket, such as a point on the edge 374 of the geometric construct representing bucket 110 in
As one example, each of the sensors may generate a sensor signal indicative of the location of a corresponding piece of equipment on machine 102. Where each of the sensors provide a sensor signal indicating how far a corresponding actuator is extended, then by knowing the length of extension of each of the actuators and the geometry or dimensions of the corresponding piece of equipment, the location of the periphery of that piece of equipment can be known. For instance, by knowing the dimensions of bucket 110 and where the cylinder 144 attaches to bucket 110, then by knowing how far cylinder 144 is extended and where it attaches to arm 108, the position of the edge 374 of bucket 110 can be identified.
Input command processor 274 then receives an input command, such as through user interface mechanism 212, commanding movement of one of the movable elements of machine 102 (such as the boom 106, arm 108, attachment 110, house 104, etc.). The movable element that has been commanded to move illustratively has a point-of-interest on it. The input command will thus command that point-of-interest on the movable element to move along a trajectory-of-action. Receiving an input command to move a point-of-interest along a trajectory-of-action is indicated by block 378 in the flow diagram of
Trajectory analysis system 280 then analyses the trajectory-of-action to see whether a geometric construct is present at any point along the trajectory-of-action, as indicated by block 380 in the flow diagram of
Geometric construct presence detector 284 then tests at various points along the identified trajectory to determine whether a surface of a protected portion or protected area (a surface of a geometric construct) of machine is present at that point on the trajectory, as indicated by block 384. Intersection detection processor 286 then detects whether an intersection (or collision) between the point-of-interest and the geometric construct will occur, based upon the presence of the geometric construct along the trajectory-of-action, as indicated by block 386. The trajectory-of-action can be analyzed in other ways as well, as indicated by block 388. Trajectory analysis system 280 generates an output indicative of whether, and where, the collision will occur.
If a collision is indicated by trajectory analysis system 280, as determined at block 390 in the flow diagram of
Distance/approach speed processor 304 then calculates the distance that the point-of-interest will need to travel along the trajectory-of-action and the speed at which the point-of-interest will approach the geometric construct. Calculating the distance and approach speed is indicated by block 394 in the flow diagram of
Selective limit identification processor 306 then identifies the limits for the identified machine actuator(s) 250 that need to be selectively placed on those actuators to avoid contact between the point-of-interest and the geometric construct. Identifying such limits is indicated by block 396 in the flow diagram
The limits are provided to control signal generator 276 where selective limit controller 290 selectively applies the limits only to the identified machine actuator(s) 250. Selectively applying the limits is indicated by block 402 in the flow diagram of
As one example, assume that the command input that is being received is to raise boom 106 so that actuator 140 is being controlled to extend. In addition, assume that the input command is to extend actuator 142 as well as actuator 144. This may cause the point-of-interest (the edge of bucket 110) to move into contact with one of the tracks 103. The present system may identify that actuators 142 and 144 are the actuators that, if not limited, are actually going to cause the edge of bucket 110 to contact the protected portion of machine 102. Therefore, the present system may allow actuator 140 to continue to raise boom 106, but may impose limits on one or more of actuators 142 and 144 so that the edge of bucket 110 does not come into contact with the track 103 (or other protected portion of machine 102). In this way, the limits are selectively applied to only the actuators which are actually going to cause the contact, instead of applying limits to all actuators involved in the commanded movement of bucket 110.
This is just one example of how limits can be selectively applied to only identified actuators (which may be a subset of all of the actuators that are causing movement of the point-of-interest). Similarly, different limits may be applied to different actuators. One actuator may be severely limited or stopped while another actuator may be speed limited or limited in terms of position or both, but not stopped altogether, while still other actuators are not limited at all. Imposing the limit on the identified actuators without imposing the limits on other actuators is indicated by block 404 in the flow diagram of
Alert generator 292 can also generate one or more alerts as indicated by block 406 and provide those alerts through user interface mechanisms 212 to the operator. Control signal generator 276 can generate other control signals (such as to communicate the limits and other information to other machines or other systems as indicated by block 408 in the flow diagram of
Returning to block 390 in
It can thus be seen that the present description proceeds with respect to a system that generates geometric constructs for different protected portions of machine 102 and locates those constructs in a coordinate system. The present system also identifies points of interest on movable elements which may come into contact with protected portions of machine 102. When an input command is received, a trajectory-of-action is identified and the system determines whether the trajectory-of-action intersects with a geometric construct corresponding to a protected portion of machine 102. If so, the specific actuators that are moving the point-of-interest along the trajectory-of-action are identified and limits are selectively placed on only those actuators to avoid the point-of-interest on machine 102 from contacting the protected portion of machine 102, without limiting actuation of other actuators.
The present discussion has mentioned processors and servers. In one example, the processors and servers include computer processors with associated memory and timing circuitry, not separately shown. The processors and servers are functional parts of the systems or devices to which they belong and are activated by, and facilitate the functionality of the other components or items in those systems.
Also, a number of user interface (UI) displays have been discussed. The UI displays can take a wide variety of different forms and can have a wide variety of different user actuatable input mechanisms disposed thereon. For instance, the user actuatable input mechanisms can be text boxes, check boxes, icons, links, drop-down menus, search boxes, etc. The mechanisms can also be actuated in a wide variety of different ways. For instance, the mechanisms can be actuated using a point and click device (such as a track ball or mouse). The mechanisms can be actuated using hardware buttons, switches, a joystick or keyboard, thumb switches or thumb pads, etc. The mechanisms can also be actuated using a virtual keyboard or other virtual actuators. In addition, where the screen on which the mechanisms are displayed is a touch sensitive screen, the mechanisms can be actuated using touch gestures. Also, where the device that displays them has speech recognition components, the mechanisms can be actuated using speech commands.
A number of data stores have also been discussed. It will be noted the data stores can each be broken into multiple data stores. All can be local to the systems accessing them, all can be remote, or some can be local while others are remote. All of these configurations are contemplated herein.
Also, the figures show a number of blocks with functionality ascribed to each block. It will be noted that fewer blocks can be used so the functionality is performed by fewer components. Also, more blocks can be used with the functionality distributed among more components.
It will be noted that the above discussion has described a variety of different systems, components, controllers, sensors, detectors, and/or logic. It will be appreciated that such systems, components, controllers, sensors, detectors, and/or logic can be comprised of hardware items (such as processors and associated memory, or other processing components, some of which are described below) that perform the functions associated with those systems, components, controllers, sensors, detectors, and/or logic. In addition, the systems, components, controllers, sensors, detectors, and/or logic can be comprised of software that is loaded into a memory and is subsequently executed by a processor or server, or other computing component, as described below. The systems, components, controllers, sensors, detectors, and/or logic can also be comprised of different combinations of hardware, software, firmware, etc., some examples of which are described below. These are only some examples of different structures that can be used to form the systems, components, controllers, sensors, detectors, and/or logic described above. Other structures can be used as well.
In the example shown in
It will also be noted that the elements of previous FIGS., or portions of them, can be disposed on a wide variety of different devices. Some of those devices include servers, desktop computers, laptop computers, tablet computers, or other mobile devices, such as palm top computers, cell phones, smart phones, multimedia players, personal digital assistants, etc.
Computer 810 typically includes a variety of computer readable media. Computer readable media can be any available media that can be accessed by computer 810 and includes both volatile and nonvolatile media, removable and non-removable media. By way of example, and not limitation, computer readable media may comprise computer storage media and communication media. Computer storage media is different from, and does not include, a modulated data signal or carrier wave. Computer storage media includes hardware storage media including both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by computer 810. Communication media may embody computer readable instructions, data structures, program modules or other data in a transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal.
The system memory 830 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 831 and random access memory (RAM) 832. A basic input/output system 833 (BIOS), containing the basic routines that help to transfer information between elements within computer 810, such as during start-up, is typically stored in ROM 831. RAM 832 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 820. By way of example, and not limitation,
The computer 810 may also include other removable/non-removable volatile/nonvolatile computer storage media. By way of example only,
Alternatively, or in addition, the functionality described herein can be performed, at least in part, by one or more hardware logic components. For example, and without limitation, illustrative types of hardware logic components that can be used include Field-programmable Gate Arrays (FPGAs), Application-specific Integrated Circuits (e.g., ASICs), Application-specific Standard Products (e.g., ASSPs), System-on-a-chip systems (SOCs), Complex Programmable Logic Devices (CPLDs), etc.
The drives and their associated computer storage media discussed above and illustrated in
A user may enter commands and information into the computer 810 through input devices such as a keyboard 862, a microphone 863, and a pointing device 861, such as a mouse, trackball or touch pad. Other input devices (not shown) may include a joystick, game pad, satellite dish, scanner, or the like. These and other input devices are often connected to the processing unit 820 through a user input interface 860 that is coupled to the system bus, but may be connected by other interface and bus structures. A visual display 891 or other type of display device is also connected to the system bus 821 via an interface, such as a video interface 890. In addition to the monitor, computers may also include other peripheral output devices such as speakers 897 and printer 896, which may be connected through an output peripheral interface 895.
The computer 810 is operated in a networked environment using logical connections (such as a controller area network—CAN, local area network—LAN, or wide area network WAN) to one or more remote computers, such as a remote computer 880.
When used in a LAN networking environment, the computer 810 is connected to the LAN 871 through a network interface or adapter 870. When used in a WAN networking environment, the computer 810 typically includes a modem 872 or other means for establishing communications over the WAN 873, such as the Internet. In a networked environment, program modules may be stored in a remote memory storage device.
It should also be noted that the different examples described herein can be combined in different ways. That is, parts of one or more examples can be combined with parts of one or more other examples. All of this is contemplated herein.
Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.