Vehicle redundant processing resource usage

Systems, methods, and non-transitory computer readable media may be configured to facilitate usage of vehicle redundant processing resource. A primary processing resource may be dedicated to navigation control of a vehicle. A redundant processing resource may be provided for performing one or more tasks of the navigation control of the vehicle based on a failure of the primary processing resource. One or more available portions of the redundant processing resource may be used for performing one or more tasks of non-navigation control of the vehicle.

FIELD OF THE INVENTION

This disclosure relates to approaches for using redundant processing resource of a vehicle.

BACKGROUND

Vehicles may have non-time critical tasks and/or non-safety critical tasks that need to be performed. Performing these tasks may require processing resource.

SUMMARY

Various embodiments of the present disclosure may include systems, methods, and non-transitory computer readable media configured to facilitate usage of vehicle redundant processing resource. A primary processing resource may be dedicated to navigation control of a vehicle. A redundant processing resource may be provided for performing one or more tasks of the navigation control of the vehicle based on a failure of the primary processing resource. One or more available portions of the redundant processing resource may be used for performing one or more tasks of non-navigation control of the vehicle.

In some embodiments, the primary processing resource may be provided by first hardware and the redundant processing resource may be provided by second hardware. The first hardware may be separate from the second hardware.

In some embodiments, the primary processing resource and the redundant processing resource may be provided by same hardware.

In some embodiments, a portion of the redundant processing resource may be used to detect the failure of the primary processing resource.

In some embodiments, the task(s) of the navigation control of the vehicle may have higher priority than the task(s) of the non-navigation control of the vehicle for usage of the redundant processing resource.

In some embodiments, the task(s) of the navigation control of the vehicle may include one or more of vehicle direction control, vehicle speed control, vehicle route control, vehicle navigation, vehicle emergency stop, and/or vehicle vision analysis.

In some embodiments, the task(s) of the non-navigation control of the vehicle may include one or more non-time critical tasks and/or one or more non-safety critical tasks. For example, the task(s) of the non-navigation control of the vehicle may include one or more of passenger status detection, cabin-cleanliness detection, in-vehicle vision analysis, in-vehicle entertainment provision, and/or in-vehicle communication provision.

In some embodiments, usage of the available portion(s) of the redundant processing resource to perform the task(s) of the non-navigation control of the vehicle may enable status check of the redundant processing resource.

DETAILED DESCRIPTION

In various implementations, a primary processing resource may be dedicated to navigation control of a vehicle, and a redundant processing resource may be provided for performing one or more tasks of the navigation control of the vehicle based on a failure of the primary processing resource. The redundant processing resource may be used as a backup to perform task(s) of the navigation control if and when the primary processing resource fails. One or more available portions of the redundant processing resource may be used for performing one or more tasks of non-navigation control of the vehicle. That is, portion(s) of the redundant processing resource that are not being used to perform task(s) of the navigation control may be used to perform task(s) of non-navigation control of the vehicle. Such usage of the redundant processing resource may enable the vehicle to perform task(s) of non-navigation control without having resources dedicated to the non-navigation control.

The primary processing resource and the redundant processing resource may be provided by same hardware (e.g., controller) or different hardware. The primary processing resource may be provided by first hardware (e.g., first controller) and the redundant processing resource may be provided by second hardware (e.g., second controller), with the first hardware being separate from the second hardware. The primary processing resource and the redundant processing resource may be provided by same hardware (e.g., within a single controller).

A portion of the redundant processing resource may be used to detect the failure of the primary processing resource. For example, a portion of the redundant processing resource may be used to monitor the primary processing resource and determine if and/or when the primary processing resource fails.

The task(s) of the navigation control of the vehicle may have higher priority than the task(s) of the non-navigation control of the vehicle for usage of the redundant processing resource. When a task of the navigation control of the vehicle and a task of the non-navigation control of the vehicle is queued for processing by the redundant processing resource, the redundant processing resource may perform the task of the navigation control of the vehicle before performing the task of the non-navigation control of the vehicle.

The task(s) of the navigation control of the vehicle may include one or more time critical tasks and/or one or more safety critical tasks for the vehicle. For example, the task(s) of the navigation control of the vehicle may include one or more of vehicle direction control, vehicle speed control, vehicle route control, vehicle navigation, vehicle emergency stop, vehicle vision analysis, and/or other time critical/safety critical tasks.

The task(s) of the non-navigation control of the vehicle may include one or more non-time critical tasks and/or one or more non-safety critical tasks. The task(s) of the non-navigation control of the vehicle may be performed for convenience of the persons (e.g., driver, passenger) in the vehicle. For example, the task(s) of the non-navigation control of the vehicle may include one or more of passenger status detection, cabin-cleanliness detection, in-vehicle vision analysis, in-vehicle entertainment provision, in-vehicle communication provision, and/or other non-time critical/non-safety critical tasks.

Usage of the available portion(s) of the redundant processing resource to perform the task(s) of the non-navigation control of the vehicle may enable status check of the redundant processing resource. For example, a portion of the redundant processing resource that is not being used to perform a task of the navigation control of the vehicle may be assigned to perform a task of the non-navigation control of the vehicle. If the task of the non-navigation control of the vehicle is not performed, the portion of the redundant processing resource and/or the redundant processing resource may be faulty.

.The approaches disclosed herein provides for performance of task(s) of non-navigation control of a vehicle through a redundant processing resource for navigation control of a vehicle. Given the importance of properly executing task(s) of navigation control of a vehicle, it is desirable to include within the vehicle a redundant processing resource for the navigation control of the vehicle. Rather than including within the vehicle separate processing resource dedicated to performing task(s) of non-navigation control, the redundant processing resource for the navigation control of the vehicle may be used to perform task(s) of non-navigation control when the redundant processing resource is not performing task(s) of navigation control. Additionally, usage of the redundant processing resource to perform task(s) of non-navigation control may be used to confirm that the redundant processing resource is working.

FIG.1illustrates an example environment100for facilitating usage of vehicle redundant processing resource, in accordance with various embodiments. The example environment100may include a computing system102. The computing system102may include one or more processors and memory. The processor(s) may be configured to perform various operations by interpreting machine-readable instructions stored in the memory. The environment100may also include one or more datastores that are accessible to the computing system102(e.g., stored in the memory of the computing system102, coupled to the computing system, accessible via one or more network(s)). In some embodiments, the datastore(s) may include various databases, application functionalities, application/data packages, and/or other data that are available for download, installation, and/or execution.

In various embodiments, the computing system102may include a primary processing resource112, a redundant processing resource114, and/or other components. While the computing system102is shown inFIG.1as a single entity, this is merely for ease of reference and is not meant to be limiting. One or more components/functionalities of the computing system102described herein may be implemented, in whole or in part, within a single computing device or within multiple computing devices. One or more portions of the computing system102may be implemented within a vehicle (e.g., autonomous vehicle). A vehicle may refer to a thing used to transport one or more persons and/or one or more things. Examples of vehicle may include an autonomous vehicle, a non-autonomous vehicle, a taxi, a ride-share vehicle, a vehicle owned by an organization, a personally owned vehicle, and/or other vehicles.

A processing resource (the primary processing resource112, the redundant processing resource114) may refer to a resource that performs one or more computing functions and/or that is used to perform one or more computing functions. A processing resource may refer to a supply of processing power available to the computing system102. The computing system102may use one or more processing resources to perform one or more tasks, such as one or more tasks of navigation control or one or more tasks of non-navigation control. A processing resource may include one or more hardware that performs computation, such as one or more of a processor, a digital processor, an analog processor, a logic circuitry, a digital circuit, a central processing unit, a graphics processing unit, a microcontroller, an analog circuit, a state machine, and/or other mechanisms for electronically processing information. A processing resource may include one or more hardware that facilitates computation, such as connection between hardware components, memory (temporary memory, permanent memory), power supply, and/or other components.

The primary processing resource112and the redundant processing resource114may be provided by same hardware or different hardware. For example, the primary processing resource112and the redundant processing resource114may be provided by the same hardware (e.g., within a single controller). As another example, the processing resource112may be provided by one hardware (e.g., a controller) and the redundant processing resource114may be provided by another hardware (e.g., another controller), with the two hardware being separate. Separation of hardware providing the primary processing resource112and the redundant processing resource114may enable more robust and/or reliable operation by the computing device102. For instance, if the primary processing resource112and the redundant processing resource114are provided by the same hardware, a fault (e.g., error in operation, damage to hardware) in the portion(s) of the hardware for the primary processing resource112may negatively affect the portion(s) of the hardware for the redundant processing resource114, and vice versa. If the primary processing resource112and the redundant processing resource114are provided by different hardware, a fault in one hardware may not affect the other hardware.

The primary processing resource112and the redundant processing resource114may be provided by hardware of the same type or hardware of different types. For example, the primary processing resource112may be provided by hardware with hardware-based logic while the redundant processing resource114may be provided by hardware with software-based logic. The capacity of hardware providing the primary processing resource112and the redundant processing resource114may be the same or different. For example, the primary processing resource112and the redundant processing resource114may be provided by two equal/same controller, or the controller providing the primary processing resource112may have greater capacity (e.g., processing speed, power, memory) than the controller providing the redundant processing resource114.

In various embodiments, the primary processing resource112may refer to a processing resource that is dedicated to navigation control of a vehicle. Navigation control of a vehicle may refer to control of movement of the vehicle. Navigation control of a vehicle may include control of translational movement (e.g., forward movement, backward movement, lateral movement, vertical movement) and/or control of angular movement (e.g., rotation, tilt, turn) of the vehicle. Navigation control of a vehicle may include control of speed and/or acceleration of the vehicle. Navigation control of a vehicle may include control of a route and/or a planned path for the vehicle to take from one location to another location. Navigation control of a vehicle may include other types of control for the vehicle to facilitate movement of the vehicle.

Navigation control of a vehicle may include one or more tasks. Navigation control of a vehicle may be facilitated and/or effectuated through performance of one or more tasks. A task may refer to a piece of work to be done. For example, a task of navigation control of a vehicle may refer to a piece of work to be done to facilitate navigation control of the vehicle. For instance, a task of navigation control of a vehicle may include one or more functions and/or operations to be performed to facilitate/effectuate control of (e.g., determining values of, initiating action of, changing action in progress of, planning action of) translational movement, angular movement, speed, acceleration, route, planned path, and/or other movement of the vehicle.

One or more tasks of navigation control of a vehicle may include one or more time critical tasks and/or one or more safety critical tasks for the vehicle. A time-critical task may refer to a task for a vehicle for which timeliness or speed is a crucial factor. A safety critical task may refer to a task for a vehicle for which performance is crucial to safe operation of the vehicle, such as a task performed to maintain the safety of person(s) inside the vehicle and/or to avoid accidents due to vehicle movement and/or lack of vehicle movement. For example, one or more tasks of the navigation control of the vehicle may include one or more of vehicle direction control (e.g., controlling direction in which the vehicle moves), vehicle speed control (e.g., controlling speed and/or acceleration of the vehicle), vehicle route control (e.g., determining, monitoring, and/or changing route to be taken by the vehicle), vehicle navigation (e.g., the vehicle following a route/planned path and/or monitoring the vehicle's movement along a route/planned path), vehicle emergency stop (e.g., stopping the vehicle in an emergency, bringing the vehicle to a safe stop in an emergency), vehicle vision analysis (e.g., controlling one or more image capture devices capturing one or more images/videos of the environment of the vehicle, analyzing image(s)/video(s) of the environment for object detection, perception control/analysis for vehicle navigation), and/or other time critical/safety critical tasks.

The primary processing resource112being dedicated to navigation control of a vehicle may include the primary processing resource112being reserved to perform one or more tasks of navigation control of the vehicle. The primary processing resource112may be provided in and/or by the computing system102to perform one or more tasks of navigation control of the vehicle. That is, when one or more tasks of navigation control of the vehicle needs to be performed, the computing system102may use the primary processing resource112/one or more portions of the primary processing resource112to perform the task(s).

In various embodiments, the redundant processing resource114may refer to a processing resource that operates as backup for the primary processing resource112. The redundant processing resource114operating as backup for the primary processing resource112may include the redundant processing resource114being used to perform one or more tasks of navigation control for a vehicle based on the failure of the primary processing resource112. That is, the redundant processing resource114may be used as a backup to perform task(s) of the navigation control if and/or when the primary processing resource112fails. That is, if and/or when the primary processing resource112is unable to perform task(s) of navigation control of a vehicle, the computing system102may use the redundant processing resource114/one or more portions of the redundant processing resource114to perform the task(s).

Failure of the primary processing resource112may include the primary processing resource112being unable to perform one or more tasks of navigation control of a vehicle. Failure of the primary processing resource112may include the primary processing resource112being unavailable to perform one or more tasks of navigation control of a vehicle. Failure of the primary processing resource112may include the primary processing resource112failing to perform according to an accepted level/standard of operation. Failure of the primary processing resource112may include defect and/or improper use of one or more hardware of the primary processing resource112. For example, failure of the primary processing resource112may include the primary processing resource112returning error condition(s) and/or the hardware of the primary processing resource112being damaged. Other failure of the primary processing resource112are contemplated.

One or more available portions of the redundant processing resource114may be used for performing one or more tasks of non-navigation control of the vehicle. The redundant processing resource114may be provided in and/or by the computing system102to perform one or more tasks of non-navigation control of the vehicle. That is, when a task of non-navigation control of the vehicle needs to be performed, the computing system102may use the redundant processing resource114/one or more available portions of the redundant processing resource114to perform the task. An available portion of the redundant processing resource114may refer to a portion of the redundant processing resource114that is not being used (e.g., not currently being used, have not been assigned to be used) to perform one or more tasks of navigation control of the vehicle. In other words, when one or more tasks of non-navigation control of the vehicle needs to be performed, the computing system102may use the portion(s) of the redundant processing resource114that are not being used to perform task(s) of the navigation control to perform task(s) of non-navigation control of the vehicle.

Such usage of the redundant processing resource114may enable the computing system102to perform task(s) of non-navigation control without having resources dedicated to non-navigation control. That is, rather than having one or more processing resources dedicated to non-navigation control of the vehicle, the redundant processing resource114may be used for non-navigation control of the vehicle when the redundant processing resource114is not being used for navigation control of the vehicle. When the primary processing resource112is functioning properly, the redundant processing resource114may not need to be used for navigation control of the vehicle. In such situations, the computing system102may not be utilizing the redundant processing resource114. Rather than including separate processing resource(s) in the computing system102for non-navigation control of the vehicle, the unutilized portion(s) of the redundant processing resource114may be used for non-navigation control of the vehicle. Thus, existing processing resource in the computing system102may be used for both navigation control (as backup) and non-navigation control of the vehicle.

Non-navigation control of a vehicle may refer to control of non-movement aspects of the vehicle. Non-navigation control of a vehicle may include control of features of the vehicle that do not impact movement of the vehicle. Non-navigation control of a vehicle may include control of features of the vehicle that are provided for convenience of one or more persons in the vehicle, rather than features of the vehicle that are provided for navigation control of the vehicle.

Non-navigation control of a vehicle may include one or more tasks. Non-navigation control of a vehicle may be facilitated and/or effectuated through performance of one or more tasks. For example, a task of non-navigation control of a vehicle may refer to a piece of work to be done to facilitate non-navigation control of the vehicle. For instance, a task of non-navigation control of a vehicle may include one or more functions and/or operations to be performed to facilitate/effectuate control of (e.g., determining values of, initiating action of, changing action in progress of, planning action of) feature(s) of the vehicle that do not impact movement of the vehicle and/or provided for convenience of person(s) in the vehicle.

One or more tasks of non-navigation control of a vehicle may include one or more non-time critical tasks and/or one or more non-safety critical tasks for the vehicle. A non-time-critical task may refer to a task for a vehicle for which timeliness or speed is not a crucial factor. A non-safety critical task may refer to a task for a vehicle for which performance is not crucial to safe operation of the vehicle, such as a task performed for convenience of the person(s) (e.g., driver, passenger) in the vehicle. For example, one or more tasks of the non-navigation control of the vehicle may include one or more of passenger status detection (e.g., detecting whether a passenger has entered or exited the vehicle, detecting whether a passenger is seated, detecting whether a passenger is using a seat belt), cabin-cleanliness detection (e.g., detecting whether the cabin of the vehicle is clean, detecting trash left by a passenger, detecting whether one or more objects have been left in the vehicle by a person), in-vehicle vision analysis (e.g., controlling one or more image capture devices capturing one or more images/videos of the interior of the vehicle, analyzing image(s)/video(s) of the interior of the vehicle, performing in-cabin monitoring, checking status of multiple persons in the vehicle, monitoring interaction of multiple persons in the vehicle), in-vehicle entertainment provision (e.g., providing audible and/or visual entertainment for person(s) in the vehicle), in-vehicle communication provision (e.g., enabling communication between a remote person and a person inside the vehicle), and/or other non-time critical/non-safety critical tasks.

The priority of navigation control of a vehicle may be higher than the priority of non-navigation control of the vehicle for the usage of the redundant processing resource114. Higher priority of the navigation control of the vehicle may result in the redundant processing resource114performing task(s) of navigation control of the vehicle over task(s) of non-navigation control of the vehicle. That is, the task(s) of navigation control of the vehicle may have higher priority than the task(s) of non-navigation control of the vehicle for usage of the redundant processing resource114such that when a task of navigation control of the vehicle and a task of non-navigation control of the vehicle is queued for processing by the redundant processing resource114, the redundant processing resource114performs the task of navigation control of the vehicle before performing the task of non-navigation control of the vehicle. If the redundant processing resource114does not have available resource to perform a task of navigation control of the vehicle, one or more tasks of non-navigation control of the vehicle being performed by the redundant processing resource114may be paused and/or terminated to free up resources to perform the task of navigation control of the vehicle. The redundant processing resource114/one or more portions of the redundant processing resource114may be utilized to perform task(s) of non-navigation control of the vehicle until the redundant processing resource114/one or more portions of the redundant processing resource114is needed to perform task(s) of navigation control of the vehicle (e.g., due to failure of the primary processing resource112).

One or more portions of the redundant processing resource114may be used to detect the failure of the primary processing resource112. That is, rather than having separate processing resource dedicating to monitoring the primary processing resource112for failure, one or more portions of the redundant processing resource114may be used to detect the failure of the primary processing resource112. For example, a portion of the redundant processing resource114may be used to monitor the primary processing resource112(e.g., hardware monitor, monitoring for flags indicating error/damage in the primary processing resource112) and determine if and/or when the primary processing resource fails112.

The usage of the available portion(s) of the redundant processing resource114to perform the task(s) of the non-navigation control of the vehicle may enable status check (checking status of operation/health) of the redundant processing resource114. If the redundant processing resource114is not used until it is needed to perform task(s) of navigation control of the vehicle, the computing system102may not be aware of any problems with the redundant processing resource114. That is, if the redundant processing resource114is not being used by the computing system102, then the computing system102may only discover a problem (e.g., error, damage) with the redundant processing resource114when the redundant processing resource114fails to perform task(s) of navigation control of the vehicle. That is, if there is a problem with the redundant processing resource114, the computing system102may not discover the problem until the primary processing resource112fails, the redundant processing resource114is needed for navigation control of the vehicle, and the redundant processing resource114fails to respond properly. In such a case, the vehicle may not have enough processing resource to safely perform navigation control of the vehicle.

While a processing resource dedicated to monitoring the redundant processing resource114for faults may be provided, such provision of resource increases the costs of the computing system102. Rather than providing a separate processing resource to monitor the redundant processing resource114, the usage of the redundant processing resource114to perform task(s) of the non-navigation control of the vehicle may be used to check the status of the redundant processing resource114. For example, a portion of the redundant processing resource114that is not being used to perform a task of navigation control of the vehicle may be assigned to perform a task of non-navigation control of the vehicle. If the task of non-navigation control of the vehicle is not performed by the portion of the redundant processing resource114, the portion of the redundant processing resource114and/or the redundant processing resource114may be determined to be faulty.

FIG.2illustrates an example environment200in which vehicle redundant processing resource is utilized, in accordance with various embodiments. The environment200may include a vehicle202and a person204. The vehicle202may include a primary processing resource dedicated to navigation control of the vehicle202. The vehicle may include a redundant processing resource for performing one or more tasks of navigation control of the vehicle202based on a failure of the primary processing resource. One or more available portions of the redundant processing resource may be used by the vehicle202for performing one or more tasks of non-navigation control of the vehicle202.

For example, the vehicle may travel along a path210. The path210may include points212,214,216,218,220,222. The person202may enter206the vehicle202at the point212. For instance, the person204may be a passenger and the vehicle202may be an autonomous vehicle in which the person204is taking a trip. During a portion of the ride, the primary processing resource of the vehicle202may be functioning properly, and the redundant processing resource of the vehicle202may be used to perform task(s) of non-navigation control of the vehicle202. For example, the primary processing resource of the vehicle202may be used to move the vehicle202from the point212to the point214(e.g., lane change), from the point214to the point216(e.g., arriving and stopping at a left turn), and from the point216to the point218(e.g., making the left turn). From the point212to the point218, the redundant processing resource of the vehicle may be used to perform tasks such as passenger status detection, cabin-cleanliness detection, in-vehicle vision analysis, in-vehicle entertainment provision, and/or in-vehicle communication provision.

At the point218, a failure of the primary processing resource of the vehicle202may be detected. Based on the failure of the primary processing resource of the vehicle202, the redundant processing resource of the vehicle202may be used to perform one or more tasks of navigation control of the vehicle202. Performance of task(s) of non-navigation control of the vehicle202by the redundant processing resource of the vehicle202may be reduced, terminated, and/or paused. For instance, one or more of passenger status detection, cabin-cleanliness detection, in-vehicle vision analysis, in-vehicle entertainment provision, and/or in-vehicle communication provision may be terminated and/or paused and the redundant processing resource of the vehicle202may be used to move the vehicle202from the point218to the point220(e.g., continuing movement initiated by the primary processing resource), and from the point220to the point222(e.g., lane change and emergency/safe stop). At the point218, the vehicle may be brought to a safe stop.

In some embodiments, the redundant processing resource of the vehicle202may be used to complete the ride for the passenger and/or to bring the vehicle202to a particular destination (e.g., home base/terminal, service provider/technician to address the fault in the primary processing resource), rather than stopping the vehicle202at the point222.

In some embodiments, the extent to which performance of task(s) of non-navigation control of the vehicle202by the redundant processing resource of the vehicle202are reduced, terminated, and/or paused may depend on the amount of processing resource needed to perform task(s) of navigation control of the vehicle202. In some embodiments, the performance of task(s) of non-navigation control of the vehicle202by the redundant processing resource of the vehicle202may be completed terminated and/or paused based on the redundant processing resource of the vehicle202being needed to perform task(s) of navigation control of the vehicle202.

At the point222, with the vehicle202stopped, the amount of the redundant processing resource of the vehicle202needed to perform task(s) of navigation control of the vehicle202may be reduced or eliminated. At the point222, the redundant processing resource of the vehicle202may be used to perform task(s) of non-navigation control of the vehicle202. For example, the redundant processing resource of the vehicle202may be used to perform one or more of passenger status detection (e.g., detecting that the passenger has exited204the vehicle202), in-vehicle entertainment provision (e.g., providing entertainment to person(s) in the vehicle202while waiting for assistance), and/or or in-vehicle communication provision (e.g., enabling communication between person(s) in the vehicle202and one or more remote person(s)).

FIG.3illustrates examples of navigation control300and non-navigation control350of a vehicle, in accordance with various embodiments. The navigation control300of the vehicle may refer to control of movement of the vehicle. The navigation control300of the vehicle may include one or more tasks. The task(s) of the navigation control300of the vehicle may include one or more time critical tasks and/or one or more safety critical tasks for the vehicle. For example, the task(s) of the navigation control300of the vehicle may include one or more of vehicle direction control302(e.g., controlling direction in which the vehicle moves), vehicle speed control304, vehicle route control306(e.g., determining, monitoring, and/or changing route to be taken by the vehicle), vehicle navigation308(e.g., the vehicle following a route/planned path and/or monitoring the vehicle's movement along a route/planned path), vehicle emergency stop310(e.g., stopping the vehicle in an emergency, bringing the vehicle to a safe stop in an emergency), vehicle vision analysis312(e.g., controlling one or more image capture devices capturing one or more images/videos of the environment of the vehicle, analyzing image(s)/video(s) of the environment for object detection, perception control/analysis for vehicle navigation), and/or other time critical/safety critical tasks.

The non-navigation control350of a vehicle may refer to control of non-movement aspects of the vehicle. The non-navigation control350of a vehicle may include one or more tasks. The task(s) of the non-navigation control350of the vehicle may include one or more non-time critical tasks and/or one or more non-safety critical tasks. For example, the task(s) of the non-navigation control350of the vehicle may include one or more of passenger status detection352(e.g., detecting whether a passenger has entered or exited the vehicle, detecting whether a passenger is seated, detecting whether a passenger is using a seat belt), cabin-cleanliness detection354(e.g., detecting whether the cabin of the vehicle is clean, detecting trash left by a passenger, detecting whether one or more objects have been left in the vehicle by a person), in-vehicle vision analysis356(e.g., controlling one or more image capture devices capturing one or more images/videos of the interior of the vehicle, analyzing image(s)/video(s) of the interior of the vehicle, performing in-cabin monitoring, checking status of multiple persons in the vehicle, monitoring interaction of multiple persons in the vehicle), in-vehicle entertainment provision358(e.g., providing audible and/or visual entertainment for person(s) in the vehicle), in-vehicle communication provision360(e.g., enabling communication between a remote person and a person inside the vehicle), and/or other non-time critical/non-safety critical tasks.

FIG.4illustrates a flowchart of an example method400, according to various embodiments of the present disclosure. The method400may be implemented in various environments including, for example, the environment100ofFIG.1. The operations of method400presented below are intended to be illustrative. Depending on the implementation, the example method400may include additional, fewer, or alternative steps performed in various orders or in parallel. The example method400may be implemented in various computing systems or devices including one or more processors.

At block402, a primary processing resource dedicated to navigation control of a vehicle may be used to perform one or more tasks of the navigation control of the vehicle. At block404, a redundant processing resource may be used to perform at least one task of the navigation control of the vehicle based on a failure of the primary processing resource. At block406, one or more available portions of the redundant processing resource may be used to perform one or more tasks of non-navigation control of the vehicle.

Hardware Implementation

FIG.5is a block diagram that illustrates a computer system500upon which any of the embodiments described herein may be implemented. The computer system500includes a bus502or other communication mechanism for communicating information, one or more hardware processors504coupled with bus502for processing information. Hardware processor(s)504may be, for example, one or more general purpose microprocessors.

The computer system500further includes a read only memory (ROM)508or other static storage device coupled to bus502for storing static information and instructions for processor504. A storage device510, such as a magnetic disk, optical disk, or USB thumb drive (Flash drive), etc., is provided and coupled to bus502for storing information and instructions.

The computer system500also includes a communication interface518coupled to bus502. Communication interface518provides a two-way data communication coupling to one or more network links that are connected to one or more local networks. For example, communication interface518may be an integrated services digital network (ISDN) card, cable modem, satellite modem, or a modem to provide a data communication connection to a corresponding type of telephone line. As another example, communication interface518may be a local area network (LAN) card to provide a data communication connection to a compatible LAN (or WAN component to communicated with a WAN). Wireless links may also be implemented. In any such implementation, communication interface518sends and receives electrical, electromagnetic or optical signals that carry digital data streams representing various types of information.

The computer system500can send messages and receive data, including program code, through the network(s), network link and communication interface518. In the Internet example, a server might transmit a requested code for an application program through the Internet, the ISP, the local network and the communication interface518.

Engines, Components, and Logic

In some embodiments, a hardware engine may be implemented mechanically, electronically, or any suitable combination thereof. For example, a hardware engine may include dedicated circuitry or logic that is permanently configured to perform certain operations. For example, a hardware engine may be a special-purpose processor, such as a Field-Programmable Gate Array (FPGA) or an Application Specific Integrated Circuit (ASIC). A hardware engine may also include programmable logic or circuitry that is temporarily configured by software to perform certain operations. For example, a hardware engine may include software executed by a general-purpose processor or other programmable processor. Once configured by such software, hardware engines become specific machines (or specific components of a machine) uniquely tailored to perform the configured functions and are no longer general-purpose processors. It will be appreciated that the decision to implement a hardware engine mechanically, in dedicated and permanently configured circuitry, or in temporarily configured circuitry (e.g., configured by software) may be driven by cost and time considerations.

Accordingly, the phrase “hardware engine” should be understood to encompass a tangible entity, be that an entity that is physically constructed, permanently configured (e.g., hardwired), or temporarily configured (e.g., programmed) to operate in a certain manner or to perform certain operations described herein. As used herein, “hardware-implemented engine” refers to a hardware engine. Considering embodiments in which hardware engines are temporarily configured (e.g., programmed), each of the hardware engines need not be configured or instantiated at any one instance in time. For example, where a hardware engine comprises a general-purpose processor configured by software to become a special-purpose processor, the general-purpose processor may be configured as respectively different special-purpose processors (e.g., comprising different hardware engines) at different times. Software accordingly configures a particular processor or processors, for example, to constitute a particular hardware engine at one instance of time and to constitute a different hardware engine at a different instance of time.

The various operations of example methods described herein may be performed, at least partially, by one or more processors that are temporarily configured (e.g., by software) or permanently configured to perform the relevant operations. Whether temporarily or permanently configured, such processors may constitute processor-implemented engines that operate to perform one or more operations or functions described herein. As used herein, “processor-implemented engine” refers to a hardware engine implemented using one or more processors.

Language

It will be appreciated that an “engine,” “system,” “data store,” and/or “database” may comprise software, hardware, firmware, and/or circuitry. In one example, one or more software programs comprising instructions capable of being executable by a processor may perform one or more of the functions of the engines, data stores, databases, or systems described herein. In another example, circuitry may perform the same or similar functions. Alternative embodiments may comprise more, less, or functionally equivalent engines, systems, data stores, or databases, and still be within the scope of present embodiments. For example, the functionality of the various systems, engines, data stores, and/or databases may be combined or divided differently.