Patent Publication Number: US-2022236729-A1

Title: Self-maintaining autonomous vehicle procedure

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     This application is a continuation-in-part of U.S. application Ser. No. 17/155,921, filed Jan. 22, 2021, entitled “SELF-MAINTAINING AUTONOMOUS VEHICLE PROCEDURE,” which is a continuation of and claims priority benefit to U.S. application Ser. No. 16/410,911, filed May 13, 2019, entitled “SELF-MAINTAINING AUTONOMOUS VEHICLE PROCEDURE,” all of which are entirely incorporated by reference herein. 
    
    
     BACKGROUND 
     1. Technical Field 
     The subject matter of this disclosure relates in general to the field of rideshare vehicles, and more particularly, to systems and methods for self-monitoring, prediction, and maintenance of an autonomous rideshare vehicle, and their applications in fleet operation. 
     2. Introduction 
     Autonomous vehicles (AVs) are vehicles having computers and control systems that perform driving and navigation tasks that are conventionally performed by a human driver. As AV technologies continue to advance, they will be increasingly used to improve transportation efficiency and safety. As such, AVs will need to perform many of the functions that are conventionally performed by human drivers, such as performing navigation and routing tasks necessary to provide a safe and efficient transportation. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The above-recited and other advantages and features of the present technology will become apparent by reference to specific implementations illustrated in the appended drawings. A person of ordinary skill in the art will understand that these drawings only show some examples of the present technology and would not limit the scope of the present technology to these examples. Furthermore, the skilled artisan will appreciate the principles of the present technology as described and explained with additional specificity and detail through the use of the accompanying drawings in which: 
         FIG. 1  illustrates an example schematic diagram of an autonomous vehicle and network environment, in accordance with some embodiments; 
         FIG. 2  illustrates an example schematic diagram of an autonomous vehicle and network environment that enables self-maintenance of an autonomous vehicle, in accordance with some embodiments; 
         FIG. 3A  illustrates a flowchart representation of the self-maintenance of an autonomous vehicle, in accordance with some embodiments; 
         FIG. 3B  illustrates a flowchart representation of criticality determinations for detected issues, in accordance with some embodiments; 
         FIG. 4  illustrates a block diagram of an example system for predicting AV component failures and ordering replacement parts, in accordance with some embodiments; 
         FIG. 5  illustrates a flowchart of an example process for determining whether to generate an order request for replacement parts of an AV component, in accordance with some embodiments; 
         FIG. 6  illustrates an example of a machine-learning network that can be implemented to estimate the durability of various AV components, in accordance with some embodiments; 
         FIG. 7  shows an example of a system for implementing certain aspects of the present technology. 
     
    
    
     DETAILED DESCRIPTION 
     Various examples of the present technology are discussed in detail below. While specific implementations are discussed, it should be understood that this is done for illustration purposes only. A person skilled in the relevant art will recognize that other components and configurations may be used without parting from the spirit and scope of the present technology. In some instances, well-known structures and devices are shown in block diagram form in order to facilitate describing one or more aspects. Further, it is to be understood that functionality that is described as being carried out by certain system components may be performed by more or fewer components than shown. 
     As described herein, one aspect of the present technology is the gathering and use of data available from various sources to improve quality and experience. The present disclosure contemplates that in some instances, this gathered data may include personal information. The present disclosure contemplates that the entities involved with such personal information respect and value privacy policies and practices. 
     An exemplary autonomous vehicle includes a plurality of sensor systems, such as, but not limited to, a camera sensor system, a Light Detection and Ranging (LiDAR) sensor system, a radar sensor system, amongst others, where the autonomous vehicle operates based upon sensor signals output by the sensor systems. Specifically, the sensor signals are provided to an internal computing system in communication with the plurality of sensor systems, where a processor executes instructions based upon the sensor signals to control a mechanical system of the autonomous vehicle, such as a vehicle propulsion system, a braking system, or a steering system, etc. 
     Currently, a human operator needs to monitor a fleet and drive an autonomous vehicle into a shop when it is deemed as needing repair. This requires checking quantitative and qualitative values against a range of acceptable values. Once repair is deemed necessary, the human operator must direct the autonomous vehicle to a garage. This can be a time consuming and error-prone process, especially as a fleet increases significantly in size or area of operation, since it relies on human intervention. 
     Additionally, in service of conventional AV systems, the human operator typically needs to identify faulty components, and order replacement parts necessary to complete repairs. Such approaches can be labor intensive and time consuming, and do not take into consideration the state of currently functioning components that are likely to break or malfunction in the near future. 
     The disclosed technology addresses the need in the art for self-monitoring, prediction, and maintenance capabilities of an autonomous vehicle, as well as fleet level operation optimization. Currently, human intervention is needed to constantly monitor a fleet of vehicles. When someone monitoring it deems it needs repair, they need to then direct another service to drive the vehicle into a garage. This means that human intervention is needed to check quantitative and qualitative values against, say, a range of acceptable values, and human intervention is then needed again to get the vehicle to the garage for service. This requires constant attention and introduces opportunity for error or the escalation of vehicle issues, since only major issues may be flagged by human operators as needing service or repair. 
     To solve the above issues, systems and methods are disclosed for enabling an autonomous vehicle to automatically and dynamically monitor, predict, and maintain itself, which removes the need for human monitoring and intervention. The autonomous vehicle can, for example, analyze diagnostic data captured by one or more of its sensors. Based on the analysis of the diagnostic data, the autonomous vehicle can determine the remaining service life of its hardware components and/or the AV as a whole, and/or if it needs, or will need, preventative or maintenance actions, and, based on that determination, send the analysis of the diagnostic data to a routing service. The autonomous vehicle can then implement the preventative actions or receive instruction from the routing service to dynamically route the autonomous vehicle in accordance with a maintenance action. 
     In some aspects, the disclosed technology also provides solutions for predicting a life cycle (or lifespan) of AV components and/or AV systems. Such predictions can include predictions regarding usable life before a component failure, the impact of component failures on different components and/or systems. In instances where an impending component failure is predicted, requests for replacement parts can be automatically generated, for example, to ensure that replacement parts are available at the time of vehicle maintenance. By proactively generating part orders based on component life/duty cycle estimates, aspects of the disclosed technology help to improve maintenance workflow efficiencies, thereby increasing AV up-time. 
     In another embodiment, the disclosed technology also provides solutions for preventing an impending failure or extending a life cycle (or lifespan) of AV components and/or AV systems. For example, based on the analysis of the monitoring data, if an AV component is determined to be aging/degrading at a higher-than-normal rate due to high temperature, the operation mode of the component can be dynamically adjusted to reduce its operating stress and extend its remaining usable life, by, for example, reducing its duty cycle, or improving local environment cooling. 
       FIG. 1  illustrates environment  100  that includes an autonomous vehicle  102  in communication with a remote computing system  150 . In some embodiments, the autonomous vehicle  102  can navigate about roadways without a human driver based upon sensor signals output by sensor systems  104 - 106  of the autonomous vehicle  102 . The autonomous vehicle  102  includes a plurality of sensor systems  104 - 106  (a first sensor system  104  through an Nth sensor system  106 ). The sensor systems  104 - 106  are of different types and are arranged about the autonomous vehicle  102 . For example, the first sensor system  104  may be a camera sensor system and the Nth sensor system  106  may be a lidar sensor system. Other exemplary sensor systems include radar sensor systems, global positioning system (GPS) sensor systems, inertial measurement units (IMU), infrared sensor systems, laser sensor systems, sonar sensor systems, and the like. 
     The autonomous vehicle  102  further includes several mechanical systems that are used to effectuate appropriate motion of the autonomous vehicle  102 . For instance, the mechanical systems can include but are not limited to, a vehicle propulsion system  130 , a braking system  132 , and a steering system  134 . The vehicle propulsion system  130  may include an electric motor, an internal combustion engine, or both. The braking system  132  can include an engine brake, brake pads, actuators, and/or any other suitable componentry that is configured to assist in decelerating the autonomous vehicle  102 . The steering system  134  includes suitable componentry that is configured to control the direction of movement of the autonomous vehicle  102  during navigation. 
     The autonomous vehicle  102  further includes a safety system  136  that can include various lights and signal indicators, parking brake, airbags, etc. The autonomous vehicle  102  further includes a cabin system  138  that can include cabin temperature control systems, in-cabin entertainment systems, etc. 
     The autonomous vehicle  102  additionally comprises an autonomous vehicle (AV) internal computing system  110  that is in communication with the sensor systems  104 - 106  and the systems  130 ,  132 ,  134 ,  136 , and  138 . The AV internal computing system  110  includes at least one processor and at least one memory having computer-executable instructions that are executed by the processor. The computer-executable instructions can make up one or more services responsible for controlling the autonomous vehicle  102 , communicating with remote computing system  150 , receiving inputs from passengers or human co-pilots, logging metrics regarding data collected by sensor systems  104 - 106  and human co-pilots, etc. 
     The AV internal computing system  110  can include an analysis service  122  that is configured to analyze diagnostic data from AV components and predict the health and remaining usable lifetime of AV components. The analysis service (or health analysis service)  122  may receive diagnostic data, such as temperature, humidity, vibration, operating voltage of AV components and use a model to determine the health status and remaining life of the AV components. In some aspects, the model can be analytical, empirical, and/or a machine-learning model, or a combination of the above. Based on the result of the health analysis, the health analysis service  122  may also prescribe a preventative action for the AV. For example, if an AV component is aging/degrading faster than normal due to overheating, the health analysis service  122 , upon analyzing the component and vehicle temperature data, may perform preventative actions. For example, the health analysis service may generate an action (or action request) that includes instructions to reduce an operating duty cycle or increase cooling fan speed to slow down the aging of the component. 
     The AV internal computing system  110  can also include a control service  112  that is configured to control operation of the vehicle propulsion system  130 , the braking system  132 , the steering system  134 , the safety system  136 , and the cabin system  138 . The control service  112  receives sensor signals from the sensor systems  104 - 106  as well as communicating with other services of the AV internal computing system  110  to effectuate operation of the autonomous vehicle  102 . In some embodiments, control service  112  may carry out operations in concert with one or more other systems of autonomous vehicle  102 . 
     The AV internal computing system  110  can also include a constraint service  114  to facilitate safe propulsion of the autonomous vehicle  102 . The constraint service  114  includes instructions for activating a constraint based on a rule-based restriction upon operation of the autonomous vehicle  102 . For example, the constraint may be a restriction upon navigation that is activated in accordance with protocols configured to avoid occupying the same space as other objects, abide by traffic laws, circumvent avoidance areas, etc. In some embodiments, the constraint service can be part of the control service  112 . 
     The AV internal computing system  110  can also include a communication service  116 . The communication service  116  can include both software and hardware elements for transmitting and receiving signals from/to the remote computing system  150 . The communication service  116  is configured to transmit information wirelessly over a network, for example, through an antenna array that provides personal cellular (long-term evolution (LTE), 3G, 5G, etc.) communication. 
     In some embodiments, one or more services of the AV internal computing system  110  are configured to send and receive communications to remote computing system  150  for such reasons as reporting data for training and evaluating machine learning algorithms, requesting assistance from remote computing system  150  or a human operator via remote computing system  150 , software service updates, ridesharing pickup and drop off instructions, etc. 
     The AV internal computing system  110  can also include a latency service  118 . The latency service  118  can utilize timestamps on communications to and from the remote computing system  150  to determine if a communication has been received from the remote computing system  150  in time to be useful. For example, when a service of the AV internal computing system  110  requests feedback from remote computing system  150  on a time-sensitive process, the latency service  118  can determine if a response was timely received from remote computing system  150  as information can quickly become too stale to be actionable. When the latency service  118  determines that a response has not been received within a threshold, the latency service  118  can enable other systems of autonomous vehicle  102  or a passenger to make necessary decisions or to provide the needed feedback. 
     The AV internal computing system  110  can also include a user interface service  120  that can communicate with cabin system  138  in order to provide information or receive information to a human co-pilot or human passenger. In some embodiments, a human co-pilot or human passenger may be required to evaluate and override a constraint from constraint service  114 , or the human co-pilot or human passenger may wish to provide an instruction to the autonomous vehicle  102  regarding destinations, requested routes, or other requested operations. 
     As described above, the remote computing system  150  is configured to send/receive a signal from the autonomous vehicle  102  regarding reporting data for training and evaluating machine learning algorithms, requesting assistance from remote computing system  150  or a human operator via the remote computing system  150 , software service updates, rideshare pickup and drop off instructions, etc. 
     The remote computing system  150  includes an analysis service  152  that is configured to receive data from autonomous vehicle  102  and analyze the data to train or evaluate machine learning algorithms for operating the autonomous vehicle  102 . The analysis service  152  can also perform analysis pertaining to data associated with one or more errors or constraints reported by autonomous vehicle  102 . 
     The remote computing system  150  can also include a user interface service  154  configured to present metrics, video, pictures, sounds reported from the autonomous vehicle  102  to an operator of remote computing system  150 . User interface service  154  can further receive input instructions from an operator that can be sent to the autonomous vehicle  102 . 
     The remote computing system  150  can also include an instruction service  156  for sending instructions regarding the operation of the autonomous vehicle  102 . For example, in response to an output of the analysis service  152  or user interface service  154 , instructions service  156  can prepare instructions to one or more services of the autonomous vehicle  102  or a co-pilot or passenger of the autonomous vehicle  102 . 
     The remote computing system  150  can also include a rideshare service  158  configured to interact with ridesharing applications  170  operating on (potential) passenger computing devices. The rideshare service  158  can receive requests to be picked up or dropped off from passenger ridesharing application  170  and can dispatch autonomous vehicle  102  for the trip. The rideshare service  158  can also act as an intermediary between the ridesharing application  170  and the autonomous vehicle  102  wherein a passenger might provide instructions to the autonomous vehicle  102  to go around an obstacle, change routes, honk the horn, etc. 
       FIG. 2  illustrates an example schematic diagram of an autonomous vehicle and network environment that enables self-maintenance of an autonomous vehicle, in accordance with some embodiments. System  200  can maintain a fleet of vehicles that are fully autonomous without human intervention and/or monitoring. Conventionally, the current system of maintaining a vehicle needs human intervention—the vehicle runs diagnostics, and if there&#39;s an issue flagged by someone monitoring the diagnostics, they would have to contact an employee at a maintenance facility, such as a shop, to see if the shop could work on the vehicle. This introduces human error and inefficiencies that could affect a fleet of autonomous vehicles that may need maintenance over time. System  200  leverages an increased diagnostic capability of an autonomous vehicle  202 , such as an autonomous vehicle  202  within fleet  226 , to remove the need for human intervention and/or monitoring. The diagnostic capabilities can be integrated into a dispatching algorithm that can dynamically and/or automatically send autonomous vehicles to needed facilities based on the severity of the issue(s). The diagnostic capabilities can apply to preventative maintenance (e.g., knowing that autonomous vehicle  202  need an oil change in 50 miles and, based on that, sending it to the nearest shop before the 50 miles is reached), and/or can apply to diagnosing more critical issues (e.g., one of the lidar sensors is broken or malfunctioning and needs to be sent to a shop immediately to fix or replace the lidar sensor). 
     Autonomous vehicle  202  can dynamically self-maintain itself by analyzing diagnostic data captured by one or more sensors  204  of the autonomous vehicle  202 . Autonomous vehicle  202  can include a plurality of sensors  204  within multiple sensor systems including, but not limited to, a camera sensor system, a lidar sensor system, a radar sensor system, amongst others. The plurality of sensor systems can work independently or interoperably with each other in order to navigate and/or capture environmental and operational conditions. Sensors  204 , for example, can detect or capture diagnostic data that will enable the autonomous vehicle  202  to monitor itself. 
     Each sensor  204  can store the diagnostic data within data store  208  on the autonomous vehicle  202 . Internal analysis service  210  of autonomous vehicle  202  can, in some embodiments, generate one or more models  214  that describe the behavior, operation, or context of the autonomous vehicle  202  based on the diagnostic data within data store  208 . For example, internal analysis service  210  can determine, based on models  214 , the yaw, acceleration, orientation, location, and surroundings (e.g., buildings, people, obstacles, light levels, temperature, sounds, etc.) of autonomous vehicle  202 . Internal analysis service  210  of autonomous vehicle  202  can, in another embodiment, generate one or more models  214  that describe the health status of the AV sensors  204  and/or the autonomous vehicle  202  based on the diagnostic data within data store  208 . For example, internal analysis service  210  may predict, based on models  214 , the remaining usable life of various AV components, such as cameras, radars, and/or lidars. 
     Based on the analysis of the diagnostic data detecting an operational issue, autonomous vehicle  202  can determine that it needs maintenance. Diagnostics service  206 , for example, can diagnose issues within the diagnostic data and make determinations about whether autonomous vehicle  202  needs maintenance and how critical the issue is. Diagnostics service  206 , for example, can detect an operational issue by applying models  214  to the diagnostic data. For example, diagnostics service  206  can check against software versions, valid calibration values, etc. For instance, if autonomous vehicle&#39;s  202  yaw is beyond an acceptable value or value range, then diagnostics service  206  can compare the diagnostics data against models  214  to diagnose a specific issue. In some embodiments, most of the analysis of the diagnostics data is done on autonomous vehicle  202  (via diagnostics service  206 ) so as to provide immediate response to issues (or response despite a loss of connection to a remote network). In other embodiments, the analysis of the diagnostics data can be done on a back end, remote server. 
     Based on the determination of the specific issue, the analysis of the diagnostic data can be sent to a backend, remote network, such as network  232 , which can route autonomous vehicle  202  via routing service  224  in accordance with the determination. For example, routing service  224  can send issues to maintenance service  222  to determine an appropriate response, such as routing autonomous vehicle  202  to a specific shop, notifying and setting up maintenance, picking up a stranded passenger, etc. 
     In some embodiments, diagnostics service  206  can additionally receive input from passengers within autonomous vehicle  202  providing feedback. For example, user interface service  230  can receive input from a passenger at a computer interface, such as a pad within autonomous vehicle  202  or through a ridesharing application  234  on the passenger&#39;s mobile device. The passenger can indicate at the user interface service  230  that there is an issue with the operation of autonomous vehicle  202 , like a quick stop, a jerky turn, etc. In some instances, the passenger can assume manual control of autonomous vehicle through user interface service  230 , which can communicate with control service  212  to operate autonomous vehicle  202  accordingly. 
     In some embodiments, models  214  can be continuously supplemented and updated by diagnostics data collected by the entire fleet  226 . The diagnostics data can be transmitted to network  232  that can remotely compile and average the received diagnostics data from all vehicles within fleet  226  to generate models  214  remotely. For example, analysis service  216  can analyze the diagnostics data from fleet  226  to generate detailed, accurate models  214  that can then be applied to models  214  on autonomous vehicle  202  on its next update or connection to network  232 . As a result, models  214  can be continuously trained as each autonomous vehicle  202  within fleet  226  operates over time. In some embodiments, models  214  on network  232  can be supplemented by passenger input through rideshare service  228  in communication with ridesharing application  234 . 
     The determination that autonomous vehicle  202  needs maintenance based on the analysis of the diagnostic data from the entire fleet  226  can enable the detection of subtle or emerging operational issues with the autonomous vehicle  202 . For example, for each sensor  204  that may be recording an issue, the diagnostic data from that sensor  204  can be compared against successful trips of other cars with that sensor (or unsuccessful trips). This can enable models  214  to constantly learn and improve criticality levels and other insights, such as what is the perfect level of charge, the perfect state of components of autonomous vehicle  202  for the best mileage or passenger experience, etc. 
     Diagnostics service  206  can also classify issues flagged by models  214  into different criticality levels. For example, a criticality level of an operational issue with the autonomous vehicle can be determined based on models  214  (and in some embodiments, based on models  214  continuously updated based on diagnostic data from the fleet  226 ). For example, an operational issue with autonomous vehicle  202  can be classified at a high criticality level based on diagnostics data being within or above a range of values that suggest that autonomous vehicle  202  is in immediate danger of failure or malfunction. Based on the operational issue being within the high criticality level, autonomous vehicle  202  can receive instruction from routing service  224  to bring the autonomous vehicle to a stop. 
     Additionally, at network  232 , additional details can be stored and analyzed that would not be considered normally urgent or critical to autonomous vehicle&#39;s  202  operation (that would take up more processing time than desired if done locally). For example, autonomous vehicle  202  can report small maintenance issues like low tire pressure, low oil levels, and other persistent issues that can in the long run lead to urgent issues. The granular details within diagnostic data can be pulled out of data store  208  and/or internal analysis service  210  and stored/analyzed on the back end (such as via analysis service  216  on network  232  and used to modify/update models  214 ). Network  232  can determine how critical the granular details are for dispatch. For example, low tire pressure can be flagged based on the value of certain diagnostic data analysis service  216  receives. Routing service  224  can continue the current trip, and doesn&#39;t need to cancel the ride with a passenger. But if analysis service  216  determines it&#39;s serious enough, once the trip is finished, routing service  224  can be sent to control service  212  to route autonomous vehicle  202  to the next facility to fix the tire pressure. 
     In some embodiments, once the analysis of the diagnostic data is sent to routing service  224  based on the determination that autonomous vehicle  202  needs maintenance, autonomous vehicle  202  can receive instruction from routing service  224  to dynamically route autonomous vehicle  202  in accordance with a maintenance action specified by maintenance service  222 . For example, maintenance service  222  can communicate with one or more maintenance facilities  218  to dynamically and automatically schedule maintenance for autonomous vehicle  202 . Maintenance service  222  can also communicate with backup service  220  to send a backup vehicle to pick up a stranded passenger (e.g., for autonomous vehicles  202  that are experiencing urgent, dangerous issues). 
     For example, maintenance service  222  can take into consideration the current load at maintenance facilities  218 . The total number of charging ports, for example, can be known for a given facility, as well as how many are actually available vs. used. 
     Maintenance service  222  can also take into consideration different maintenance facilities  218  having specific specialties, specific technicians, and/or specific parts. Some maintenance facilities  218  can be appropriate for maintenance, for example, while others are best for charging the autonomous vehicle  202 . As a result, when autonomous vehicle  202  needs to automatically route itself to a maintenance facility  218 , the maintenance facility  218  can be selected based on parameters such as directing the autonomous vehicle  202  to a shop that has the proper technicians with the proper parts to service the specific need of the autonomous vehicle  202 . For example, certain maintenance facilities  218  can have technicians that specialize in lidar sensor systems. Other maintenance facilities  218  can have technicians that specialize in camera sensor systems, radar sensor systems, global positioning system (GPS) sensor systems, inertial measurement units (IMU), infrared sensor systems, laser sensor systems, sonar sensor systems, and/or the like. Still other maintenance facilities  218  can have technicians that specialize in more general vehicle systems, such as the autonomous vehicle&#39;s  202  propulsion system, braking system, steering system, safety system, cabin system (e.g., temperature control, lighting, etc.). Moreover, even within maintenance facilities  218  for charging autonomous vehicle  202 , certain maintenance facilities  218  can have a certain number of charging stations that may have cars already plugged into them (e.g., a limited number of open charging stations that can service autonomous vehicle  202 ). In that case, that maintenance facility  218  may be passed for consideration in favor of another with availability. 
     In some embodiments, maintenance service  222  can weight certain actions depending on multiple priorities. For example, while some maintenance facilities  218  may be the best suited for a specific maintenance action, the maintenance facility  218  may be at capacity and cannot take autonomous vehicle  202 —therefore, maintenance service  222  can communicate with routing service  224  to route autonomous vehicle  202  to another maintenance facility with availability that does not specialize in the specific maintenance action or is farther away from autonomous vehicle&#39;s  202  current position. 
     In some embodiments, autonomous vehicle  202  may be queued based on its priority level. Its priority level may be related to the issue&#39;s criticality level. For example, the queue may populate the top of its queue with the autonomous vehicles of fleet  226  that are suffering from high criticality issues and therefore need to go to a maintenance facility  218  straight away. Autonomous vehicles of fleet  226  with low criticality issues may be pushed further down the queue so that they are dispatched to a maintenance facility  218  when there is extra availability. 
       FIG. 3A  illustrates a flowchart representation of the self-maintenance of an autonomous vehicle, in accordance with some embodiments. Method  300  can begin upon startup of the autonomous vehicle (step  302 ). In some embodiments, startup can trigger a diagnostics check (step  304 ), which can check systems within the autonomous vehicles for any issues before the autonomous vehicle picks up a passenger or starts to operate on the road. Additionally and/or alternatively, in some embodiments, the diagnostics check (step  304 ) can be run on a continuous or periodic basis in order to monitor how the autonomous vehicle is operating over time. The diagnostics check can determine if there are any issues detected (step  306 ). If there are no issues detected, then the diagnostics check can be run at a subsequent time to check for issues again. 
     In some embodiments, the diagnostics check can raise a heartbeat event periodically (e.g., every 30 seconds) or continuously to check if a system is still alive (e.g., functioning properly). The systems being checked can respond to the heartbeat event, and can be logged as response events within a log. The response events can include diagnostics data for analysis of any issues being experienced by the corresponding system. 
     In some embodiments, upon startup, the diagnostics check can discover that a particular firmware version is out of date. For example, if the network has updated to a new version of firmware for the lidar system, a response event from the diagnostics check can detect that the older version is being used and the lidar system on the autonomous vehicle needs to be updated (and the update can be initiated once a link with the network is established). Or the response event from the diagnostics check can determine that version 1.5 of the firmware for the lidar system is broken, so either a patch or update needs to take place to fix the issue. The diagnostics check can contain a requirement list of needed sensors, versions, autonomous vehicle components, etc. Therefore, the diagnostics check can determine if the autonomous vehicle has a healthy lidar system, healthy radar system, etc. by monitoring and comparing diagnostics data to the requirement list. 
     In some embodiments the diagnostics checks may be done at different layers. At a first layer, for example, if the diagnostics check runs a certain group of checks against all hardware pieces, and those checks fail, the autonomous vehicle is not allowed or enabled to boot up. Once those checks pass, which can determine that all the basics of driving the autonomous vehicle has been satisfied, a secondary layer can check all the components of the autonomous vehicle in operation. The secondary layer may periodically or continuously transmit diagnostics information and data to the back end (e.g., the network) and confirm that all systems are running as desired (or a system is experiencing one or more issues). In some embodiments, if the first layer of the diagnostic check fails, then the system can flag the availability of the vehicle, providing information about whether the autonomous vehicle is unavailable for rideshare at all, or whether it&#39;s available for rideshare but in need of maintenance soon. 
     In some embodiments, the system can determine the criticality of any detected issues (step  308 ). For example, diagnostics data can be received from sensors on the autonomous vehicle during a diagnostics check, which can include information on how the sensors or components of the autonomous vehicle are operating. Models applied to the diagnostics data can analyze the diagnostics data in order to determine what issues the autonomous vehicle is experiencing (or is going to experience) (e.g., the issues can be predictive or purely diagnostic). 
     If the analysis of the diagnostics data determines that an issue is within a high criticality level (step  310 ), then the autonomous vehicle can come to a safe stop (step  312 ). For example, the diagnostics data can have values above or below a threshold value that indicates a critical and/or imminently urgent issue. If there are passengers within the autonomous vehicle, the system can call the nearest available backup service to pick them up (step  314 ). In some embodiments, the system can communicate to the passenger (via a pad within the autonomous vehicle, a notification within the rideshare application, etc.) that they are being provided alternative transportation. The system can call a tow truck to retrieve the autonomous vehicle and bring it to a maintenance facility (e.g., the nearest maintenance facility that has availability for the autonomous vehicle) that can service the autonomous vehicle (step  316 ). A work order can be created in the maintenance system with pre-populated instructions and diagnostics information (step  318 ). The autonomous vehicle can then be removed from rideshare availability (step  320 ). 
     For example, a work order can include pre-populated instructions customized to different maintenance facilities that have specific specialties, specific technicians, and/or specific parts. For example, some maintenance facilities can be appropriate for maintenance, while others are best for charging the autonomous vehicle. When the autonomous vehicle needs to automatically route itself to a maintenance facility, the maintenance facility can be selected and the system can pre-populate instructions within a work order for the maintenance facility based on certain parameters. These parameters can direct the autonomous vehicle to a shop that has the proper technicians with the proper parts to service the specific need of the autonomous vehicle. For example, a work order can be meant for a maintenance facility with technicians that specialize in lidar sensor systems, and can pre-populate instructions related to repairing the autonomous vehicle&#39;s lidar system. Other maintenance facilities  218  can have technicians that specialize in camera sensor systems, radar sensor systems, global positioning system (GPS) sensor systems, inertial measurement units (IMU), infrared sensor systems, laser sensor systems, sonar sensor systems, and/or the like, and so the work order can be pre-populated with instructions for repairing the autonomous vehicle&#39;s corresponding system. Still other maintenance facilities can have technicians that specialize in more general vehicle systems, such as the autonomous vehicle&#39;s propulsion system, braking system, steering system, safety system, cabin system (e.g., temperature control, lighting, etc.); the work order can correspondingly be pre-populated with instructions for repairing the autonomous vehicle&#39;s specific system that needs repair. Some maintenance facilities are used for charging the autonomous vehicle, and can have a certain number of charging stations that may have cars already plugged into them (e.g., a limited number of open charging stations that can service autonomous vehicle). In that case, a work order can be generated for a maintenance facility with availability by pre-populating the work order with instructions to charge the autonomous vehicle. Diagnostics information related to the issue for repair may be included as well. 
     If the analysis of the diagnostics data determines that an issue is within a medium criticality level (step  322 ), then the autonomous vehicle can finish its current operations before being dispatched to an appropriate maintenance facility. A medium criticality level can be determined when the diagnostics data has values within a range that indicates that a problem, while not critical or imminently urgent, is an issue that should be fixed within a certain period of time. For example, since there are multiple cameras in the autonomous vehicle, when one camera goes out, the autonomous vehicle can still operate safely until the camera is fixed. In this case, the autonomous vehicle can complete the drop-off of any passengers (step  324 ), and before the certain period of time has passed, dispatch the autonomous vehicle to autonomously drive to a maintenance facility (e.g., the nearest maintenance facility that has availability for the autonomous vehicle) that can service the issue detected by the autonomous vehicle (step  326 ). This can be done through a work order created by pre-populating instructions and/or including diagnostics information, similar to that discussed above. The autonomous vehicle can then be removed from rideshare availability (step  320 ). 
     If the analysis of the diagnostics data determines that an issue is within a low criticality level (step  328 ), then a work order can be scheduled for the future with pre-populated instructions and diagnostics information (e.g., the work order can be scheduled for a time when there is availability and the autonomous vehicle is not booked with a passenger) (step  330 ). This can be done through a work order created by pre-populating instructions and/or including diagnostics information, similar to that discussed above. At the scheduled work order time, the autonomous vehicle can be dispatched to autonomously drive to a maintenance facility (e.g., the nearest maintenance facility that has availability for the autonomous vehicle) that can service the issue detected by the autonomous vehicle (step  332 ). A low criticality level can be determined when the diagnostics data has values below a threshold that indicates that a problem is not critical or imminently urgent. 
     In some embodiments, the autonomous vehicle can recalibrate its sensors. For example, a camera may not be properly detecting or seeing the world. This can indicate that it isn&#39;t properly calibrated. Depending on how far the current calibration values deviate from the expected range, a criticality of the calibration issue may be determined by the system. The autonomous vehicle may then be dispatched to drive to the closest place to recalibrate its sensors. In some embodiments, the autonomous vehicle may be routed to a checked billboard on a highway that enables the sensors within the autonomous vehicle to recalibrate. 
       FIG. 3B  illustrates a flowchart representation of criticality determinations for detected issues, in accordance with some embodiments. The autonomous vehicle can start diagnostics (step  350 ), such as through a continuous or periodic diagnostics check through a diagnostics service that can detect one or more issues experienced by or anticipated by the autonomous vehicle. If the diagnostics service determines that there are any issues with starting and moving the physical components of the autonomous vehicle (step  352 ), then the criticality level is classified as high (step  354 ). If the diagnostics service determines that sensor calibration values exceed an acceptable range determined by the server in the back end (e.g., remote network) (step  356 ), then the criticality level is also classified as high (step  354 ). 
     However, if the diagnostics service does not detect the above, but does detect that there are non-critical warnings produced by hardware within the autonomous vehicle (step  358 ), then the criticality level is classified as medium (step  360 ). 
     If not, and the diagnostics service or remote back-end server indicates that the autonomous vehicle is due for preventative maintenance (step  362 ), then the criticality level is classified as low (step  364 ). In some embodiments, the need for preventive maintenance can be based on driving history, sensor data, and/or overall fleet performance and analysis. If no issues are detected (step  366 ), then the diagnostics may either end or be deferred for a subsequent time. 
       FIG. 4  illustrates a block diagram of an example system  400  for predicting AV component failures, and facilitating replacement part order generation. System  400  includes AV  402  from which diagnostic data can be received. As discussed above, diagnostic data can include data collected from (or about) any number of various parts, components, and/or systems of AV  402 . By way of example, diagnostic data can include data received from (or about) the functioning of various AV sensors, including but not limited to various camera, lidar, radar and/or sonar sensors. In other examples, diagnostic data may include information regarding software and/or firmware modules, such as versioning information for firmware associated with one or more AV sensors. Diagnostic data received from AV  402  can be stored to a storage device (e.g., a database)  404  that is configured to collect and retain structured diagnostic data from various AVs. Although the example illustrated with respect to  FIG. 4  shows diagnostic data stored with respect to a single AV (e.g., AV  402 ), it is understood that storage device  404  can be configured to receive and store diagnostic data from any number of AVs, such as any number of vehicles in an AV fleet. 
     Diagnostic data stored in storage device  404  can be processed to perform life/duty cycle estimates for the corresponding device/component ( 406 ). For example, diagnostic data associated with a lidar sensor can be used to estimate the remaining life of the lidar sensor and/or remaining duty cycles associated with sensor operation. In some aspects, diagnostic data can be used to update or adjust a previous estimate (durability estimate), of the component (e.g., lidar) lifespan. Life cycle estimates may be used to approximate an amount of time remaining before the corresponding component will need maintenance or replacement. For example, diagnostic data can be used to update an estimated lifespan of a component (e.g., a sensor), such as by reducing an estimated lifespan (e.g., from months to minutes) in response to a detected adverse event represented in the diagnostic data, such as the hitting of a pot hole. Life cycle estimates may be based on the type of work to be performed on the associated component. For example, life cycle estimates may include estimated durations until service/maintenance may be needed, and/or may include estimated durations until the component/s need to be replaced. 
     In some aspects, received diagnostic data may be used to formulate or update confidence estimates for data received from (or about) specific components. For example, the receipt of diagnostic data may be used to adjust weights that correspond with a confidence in data received from a specific sensor. 
     In some aspects, diagnostic data may be used for planning vehicle operations, such as a vehicle pullover within a period of time less than the expected lifetime (thus avoiding further component degradation), shutting down a component, such as a sensor, e.g., in cases in which it may be determined that an impending malfunction may affect other components, such as by shorting the main power, which may affect coupled sensors and/or other components. Additionally, diagnostic data may be used to drive decisions about whether to continue operation of a specific component, for example by factoring in the potential of increased damage to the component that may result from continued use. 
     Depending on the desired implementation, life/duty-cycle estimates for a given part (or system), can be made using models (or estimation models) configured to make lifecycle estimates based on the received diagnostic data. By way of example, the estimation models may be (or may include) machine-learning models that have been trained to make life cycle predictions based on diagnostic data. In other aspects, the models may include physics-based models, for example, that are configured to estimate the remaining life cycle of a given component based on empirical data accumulated for similar components that have been deployed in similar use contexts. 
     In some approaches, the estimated life cycle can be used to trigger a workflow process for adjusting and/or performing maintenance on the corresponding component or system ( 408 ). For example, life cycle estimates can be used to proactively generate an action (or action request) that includes information and/or instructions to facilitate maintenance on the component or system. For example, the action may include one or more work orders to acquire replacement parts for a given component. In some aspects, the action can include instructions to modify or otherwise alter an operating state of one or more AV components and/or systems. By way of example, if an AV component is beginning to fail, for example, due to overheating, the action may include instructions to reduce a duty cycle of the component e.g., to reduce the amount of heat generated by operation of the component. 
     In some implementations, the generated action may be configured to facilitate a course of action that takes into consideration component dependencies. For example, the impact of a failed component on other components/systems (e.g., associated components) may be used to identify/select additional/different components needed to complete necessary maintenance. By way of example, diagnostic data may be received for a rotary actuator used to scan a lidar sensor. Based on the diagnostic data, it may be predicted that the rotary actuator is likely to fail at a future time. If actuator malfunction is determined/predicted to negatively impact the associated lidar sensor, then additional components may be automatically ordered to service the lidar sensor. 
     In other aspects, component dependencies may be used to inform modifications to associated components e.g., to alleviate or avoid malfunction or failure of a problematic component. For example, if a component is overheating, the generated action may be configured to modify an associated component, such as an associated cooling fan (e.g., by increasing the fan speed) to mitigate the overheating. 
     It is understood that the system  400  illustrated in  FIG. 4  may be implemented entirely or partially on the AV, e.g., AV  402 . By way of example, the collection and analysis of diagnostic data may be performed by one or more compute nodes on the AV. Alternatively, various components of system  400  may be implemented by one or more systems that are remote, or distinct from AV  402 . For example, the collection, storage and/or analysis of diagnostic data may be performed by one or more remote computing systems or servers, such as those that may be connected to AV  402  via a network infrastructure, such as a private computing network, a public computing network, or a network of networks, e.g., the Internet. 
       FIG. 5  illustrates a flowchart of an example process  500  for determining whether to generate an order request for replacement parts of an AV component. Process  500  begins with step  502  in which diagnostic data (e.g., first diagnostic data) is received, wherein the received diagnostic data corresponds with an AV component or system. As discussed above, the diagnostic data may correspond with operations of one or more AV systems or components, such as one or more AV sensors. 
     At step  504 , the process  500  includes steps for determining an estimated life cycle of the AV component, e.g., based on diagnostic data received at step  502 . As discussed above, life cycle determinations can be made using one or more models that are configured (or trained) to predict component/system lifespan. By way of example, prediction models used to estimate component failure timelines may include empirically-based models, e.g., that are based on actuarial data for similar components, and/or for components deployed in a similar context. In other approaches, prediction models may include the use of machine-learning models, e.g., that have been trained based on ground-truth training data, e.g., that correlates diagnostic data with component failure events. In some implementations, the model used to determine/estimate the life cycle of a given component/system may depend on a variety of factors, including but not limited to: component/system type, firmware and/or software versioning information, deployment context, and/or component/system dependencies, etc. 
     At step  506 , the process  500  includes determining whether to generate an ACTION request for one or more replacement parts of the AV component, e.g., based on the life cycle estimated at step  504 . As discussed above, the action request may include instructions for modifying operation of one or more AV components or systems. Additionally, the action request may include information describing work orders for needed replacement parts, and/or for different/additional parts, e.g., based on component dependencies. 
     In some aspects, the decision to generate an order for replacement parts can be based on pre-determined thresholds relating to the estimated timespan of component failure. For example, orders requests may be generated if the estimated lifecycle of a given component is expected to be less than or equal to a predetermined time duration, such as two-weeks, or one-month, etc. Depending on the desired implementation, such thresholds may be component/system specific, and/or may be determined based on historic statistical data for various other components, e.g., for similar component used on various other fleet vehicles, or for components deployed to similar use cases. 
     In some aspects, subsequently received diagnostic data can be used to update/revise life cycle estimates for a given component and/or system. For example, subsequent (second) diagnostic data received for the component may be processed to determine if the previously determined life cycle estimate (step  504 ), is still accurate or should be revised. 
       FIG. 6  is an illustrative example of a deep learning neural network  600  that can be implemented to predict or estimate the durability (lifetime) of a given component based on associated diagnostic data. An input layer  620  includes input data. In one illustrative example, the input layer  620  can be configured to receive diagnostic data associated with a given AV component, such as a camera or LiDAR sensor. The neural network  600  includes multiple hidden layers  622   a ,  622   b , through  622   n . The hidden layers  622   a ,  622   b , through  622   n  include “n” number of hidden layers, where “n” is an integer greater than or equal to one. The number of hidden layers can be made to include as many layers as needed for the given application. The neural network  600  further includes an output layer  621  that provides an output resulting from the processing performed by the hidden layers  622   a ,  622   b , through  622   n.    
     The neural network  600  is a multi-layer neural network of interconnected nodes. Each node can represent a piece of information. Information associated with the nodes is shared among the different layers and each layer retains information as information is processed. In some cases, the neural network  600  can include a feed-forward network, in which case there are no feedback connections where outputs of the network are fed back into itself. In some cases, the neural network  600  can include a recurrent neural network, which can have loops that allow information to be carried across nodes while reading in input. 
     Information can be exchanged between nodes through node-to-node interconnections between the various layers. Nodes of the input layer  620  can activate a set of nodes in the first hidden layer  622   a . For example, as shown, each of the input nodes of the input layer  620  is connected to each of the nodes of the first hidden layer  622   a . The nodes of the first hidden layer  622   a  can transform the information of each input node by applying activation functions to the input node information. The information derived from the transformation can then be passed to and can activate the nodes of the next hidden layer  622   b , which can perform their own designated functions. Example functions include convolutional, up-sampling, data transformation, and/or any other suitable functions. The output of the hidden layer  622   b  can then activate nodes of the next hidden layer, and so on. The output of the last hidden layer  622   n  can activate one or more nodes of the output layer  621 , at which an output is provided. In some cases, while nodes (e.g., node  626 ) in the neural network  600  are shown as having multiple output lines, a node can have a single output and all lines shown as being output from a node represent the same output value. 
     In some cases, each node or interconnection between nodes can have a weight that is a set of parameters derived from the training of the neural network  600 . Once the neural network  600  is trained, it can be referred to as a trained neural network, which can be used to classify one or more activities. For example, an interconnection between nodes can represent a piece of information learned about the interconnected nodes. The interconnection can have a tunable numeric weight that can be tuned (e.g., based on a training dataset), allowing the neural network  600  to be adaptive to inputs and able to learn as more and more data is processed. 
     The neural network  600  is pre-trained to process the features from the data in the input layer  620  using the different hidden layers  622   a ,  622   b , through  622   n  in order to provide the output through the output layer  621 . In some cases, the neural network  600  can adjust the weights of the nodes using a training process called backpropagation. As noted above, a backpropagation process can include a forward pass, a loss function, a backward pass, and a weight update. The forward pass, loss function, backward pass, and parameter update is performed for one training iteration. The process can be repeated for a certain number of iterations for each set of training data until the neural network  600  is trained well enough so that the weights of the layers are accurately tuned. 
     A loss function can be used to analyze error in the output. Any suitable loss function definition can be used, such as a Cross-Entropy loss. Another example of a loss function includes the mean squared error (MSE), defined as E_total=Σ(½(target−output) 2 ). The loss can be set to be equal to the value of E_total. The goal of training is to minimize the amount of loss so that the predicted output is the same as the training label. The neural network  600  can perform a backward pass by determining which inputs (weights) most contributed to the loss of the network, and can adjust the weights so that the loss decreases and is eventually minimized. A derivative of the loss with respect to the weights (denoted as dL/dW, where W are the weights at a particular layer) can be computed to determine the weights that contributed most to the loss of the network. After the derivative is computed, a weight update can be performed by updating all the weights of the filters. For example, the weights can be updated so that they change in the opposite direction of the gradient. The weight update can be denoted as w=w_i−η dL/dW, where w denotes a weight, wi denotes the initial weight, and η denotes a learning rate. The learning rate can be set to any suitable value, with a high learning rate including larger weight updates and a lower value indicating smaller weight updates. 
     The neural network  600  can include any suitable deep network. One example includes a convolutional neural network (CNN), which includes an input layer and an output layer, with multiple hidden layers between the input and out layers. The hidden layers of a CNN include a series of convolutional, nonlinear, pooling (for downsampling), and fully connected layers. The neural network  600  can include any other deep network other than a CNN, such as an autoencoder, a deep belief nets (DBNs), a Recurrent Neural Networks (RNNs), among others. 
     As understood by those of skill in the art, machine-learning based classification techniques can vary depending on the desired implementation. For example, machine-learning classification schemes can utilize one or more of the following, alone or in combination: hidden Markov models; recurrent neural networks; convolutional neural networks (CNNs); deep learning; Bayesian symbolic methods; general adversarial networks (GANs); support vector machines; image registration methods; applicable rule-based system. Where regression algorithms are used, they may include including but are not limited to: a Stochastic Gradient Descent Regressor, and/or a Passive Aggressive Regressor, etc. 
     Machine learning classification models can also be based on clustering algorithms (e.g., a Mini-batch K-means clustering algorithm), a recommendation algorithm (e.g., a Miniwise Hashing algorithm, or Euclidean Locality-Sensitive Hashing (LSH) algorithm), and/or an anomaly detection algorithm, such as a Local outlier factor. Additionally, machine-learning models can employ a dimensionality reduction approach, such as, one or more of: a Mini-batch Dictionary Learning algorithm, an Incremental Principal Component Analysis (PCA) algorithm, a Latent Dirichlet Allocation algorithm, and/or a Mini-batch K-means algorithm, etc. 
       FIG. 7  shows an example of computing system  700 , which can be for example any computing device making up internal computing system  110 , remote computing system  150 , (potential) passenger device executing rideshare app  170 , or any component thereof in which the components of the system are in communication with each other using connection  705 . Connection  705  can be a physical connection via a bus, or a direct connection into processor  710 , such as in a chipset architecture. Connection  705  can also be a virtual connection, networked connection, or logical connection. 
     In some embodiments, computing system  700  is a distributed system in which the functions described in this disclosure can be distributed within a datacenter, multiple data centers, a peer network, etc. In some embodiments, one or more of the described system components represents many such components each performing some or all of the function for which the component is described. In some embodiments, the components can be physical or virtual devices. 
     Example system  700  includes at least one processing unit (CPU or processor)  710  and connection  705  that couples various system components including system memory  715 , such as read-only memory (ROM)  720  and random-access memory (RAM)  725  to processor  710 . Computing system  700  can include a cache of high-speed memory  712  connected directly with, in close proximity to, or integrated as part of processor  710 . 
     Processor  710  can include any general-purpose processor and a hardware service or software service, such as services  732 ,  734 , and  736  stored in storage device  730 , configured to control processor  710  as well as a special-purpose processor where software instructions are incorporated into the actual processor design. Processor  710  may essentially be a completely self-contained computing system, containing multiple cores or processors, a bus, memory controller, cache, etc. A multi-core processor may be symmetric or asymmetric. 
     To enable user interaction, computing system  700  includes an input device  745 , which can represent any number of input mechanisms, such as a microphone for speech, a touch-sensitive screen for gesture or graphical input, keyboard, mouse, motion input, speech, etc. Computing system  700  can also include output device  735 , which can be one or more of a number of output mechanisms known to those of skill in the art. In some instances, multimodal systems can enable a user to provide multiple types of input/output to communicate with computing system  700 . Computing system  700  can include communications interface  740 , which can generally govern and manage the user input and system output. There is no restriction on operating on any particular hardware arrangement, and therefore the basic features here may easily be substituted for improved hardware or firmware arrangements as they are developed. 
     Storage device  730  can be a non-volatile memory device and can be a hard disk or other types of computer readable media which can store data that are accessible by a computer, such as magnetic cassettes, flash memory cards, solid state memory devices, digital versatile disks, cartridges, random access memories (RAMs), read-only memory (ROM), and/or some combination of these devices. 
     The storage device  730  can include software services, servers, services, etc., that when the code that defines such software is executed by the processor  710 , it causes the system to perform a function. In some embodiments, a hardware service that performs a particular function can include the software component stored in a computer-readable medium in connection with the necessary hardware components, such as processor  710 , connection  705 , output device  735 , etc., to carry out the function. 
     For clarity of explanation, in some instances, the present technology may be presented as including individual functional blocks including functional blocks comprising devices, device components, steps or routines in a method embodied in software, or combinations of hardware and software. 
     Any of the steps, operations, functions, or processes described herein may be performed or implemented by a combination of hardware and software services or services, alone or in combination with other devices. In some embodiments, a service can be software that resides in memory of a client device and/or one or more servers of a content management system and perform one or more functions when a processor executes the software associated with the service. In some embodiments, a service is a program or a collection of programs that carry out a specific function. In some embodiments, a service can be considered a server. The memory can be a non-transitory computer-readable medium. 
     In some embodiments, the computer-readable storage devices, mediums, and memories can include a cable or wireless signal containing a bit stream and the like. However, when mentioned, non-transitory computer-readable storage media expressly exclude media such as energy, carrier signals, electromagnetic waves, and signals per se. 
     Methods according to the above-described examples can be implemented using computer-executable instructions that are stored or otherwise available from computer-readable media. Such instructions can comprise, for example, instructions and data which cause or otherwise configure a general-purpose computer, special purpose computer, or special purpose processing device to perform a certain function or group of functions. Portions of computer resources used can be accessible over a network. The executable computer instructions may be, for example, binaries, intermediate format instructions such as assembly language, firmware, or source code. Examples of computer-readable media that may be used to store instructions, information used, and/or information created during methods according to described examples include magnetic or optical disks, solid-state memory devices, flash memory, USB devices provided with non-volatile memory, networked storage devices, and so on. 
     Devices implementing methods according to these disclosures can comprise hardware, firmware and/or software, and can take any of a variety of form factors. Typical examples of such form factors include servers, laptops, smartphones, small form factor personal computers, personal digital assistants, and so on. The functionality described herein also can be embodied in peripherals or add-in cards. Such functionality can also be implemented on a circuit board among different chips or different processes executing in a single device, by way of further example. 
     The instructions, media for conveying such instructions, computing resources for executing them, and other structures for supporting such computing resources are means for providing the functions described in these disclosures. 
     Although a variety of examples and other information was used to explain aspects within the scope of the appended claims, no limitation of the claims should be implied based on particular features or arrangements in such examples, as one of ordinary skill would be able to use these examples to derive a wide variety of implementations. Further and although some subject matter may have been described in language specific to examples of structural features and/or method steps, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to these described features or acts. For example, such functionality can be distributed differently or performed in components other than those identified herein. Rather, the described features and steps are disclosed as examples of components of systems and methods within the scope of the appended claims.