In-vehicle distributed computing environment

The in-vehicle distributed computing environment facilitates the modular deployment of synthetic sensors across ECUs, addressing integration challenges by managing resource sharing and certification, thus enhancing data sharing and computational efficiency in vehicle systems.

JP7673228B2Active Publication Date: 2025-05-08AMAZON TECH INC
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
JP2023559084
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2021-03-31
Filing Date
2022-03-30
Publication Date
2025-05-08
Estimated Expiration
2042-03-30

AI Technical Summary

Technical Problem

Existing vehicle systems face challenges in efficiently deploying and integrating synthetic sensors due to varying communication interfaces, computing capacity, and certification requirements across different electronic control units (ECUs), leading to siloed data and computing resources, which complicates the sharing of sensor data and algorithm updates.

Method used

An in-vehicle distributed computing environment is implemented, allowing synthetic sensors to be deployed modularly across multiple ECUs, utilizing a platform, hardware, and vehicle abstraction layers to manage resource sharing and data flow, while adhering to certification standards, and enabling seamless integration and deployment of synthetic sensors through a unified orchestration environment.

Benefits of technology

This approach enables efficient deployment and integration of synthetic sensors, overcoming siloed computing and data limitations, allowing for horizontal data sharing and enhanced computational resource utilization within vehicles, while ensuring compliance with safety and certification standards.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007673228000001
    Figure 0007673228000001
  • Figure 0007673228000002
    Figure 0007673228000002
  • Figure 0007673228000003
    Figure 0007673228000003
Patent Text Reader

Abstract

A system including one or more computers implements a composite sensor service, which is configured to deploy a composite sensor on an on-board computing device that implements an on-board distributed computing environment. The composite sensor may be monolithically located on a single computing device (e.g., an ECU) in the vehicle, or may be modularly located on multiple computing devices (e.g., multiple ECUs) of the vehicle, each of which has resources or inputs required by the composite sensor. The modular components of the composite sensor may be executed in a runtime environment of the on-board distributed computing environment, such that the modular components function as an integrated composite sensor even when located on different computing devices (e.g., different ECUs) of the vehicle.
Need to check novelty before this filing date? Find Prior Art

Description

[Background technology]

[0001] Modern vehicles, such as cars, trucks, motorcycles, etc., are often manufactured with electronic sensors and include computer systems (e.g., electronic control units (ECUs)) programmed with control algorithms that take inputs from such electronic sensors and determine various control actions to be taken on the vehicle or systems implemented therein. To ensure a high level of safety, such sensors and control algorithms are rigorously tested and certified to meet various performance levels, such as Automotive Safety Integrity Levels (ASIL levels). For example, depending on the criticality of the sensor or algorithm, a higher or lower certification level may be required.

[0002] Vehicles often contain multiple ECUs: for example, in some vehicles, the radio may be part of the entertainment operating system domain implemented using a first ECU, while sensors for seat belts and airbags may require a high ASIL certification level and be included in the safety operating system domain implemented using a second ECU.

[0003] Also, different ECUs included in a vehicle may have different capabilities or capacities compared to other ECUs in the vehicle. For example, some ECUs may include more and / or more powerful processors than other ECUs. Similarly, some ECUs may have access to different sensor inputs than other ECUs. [Brief description of the drawings]

[0004] [Figure 1] 1 illustrates a synthetic sensor service, according to some embodiments, that receives instructions for deploying synthetic sensors from clients of the synthetic sensor service and remotely deploys the synthetic sensors to vehicles. [Diagram 2]1 shows a more detailed diagram of a synthetic sensor package that may be deployed from a synthetic sensor service to an in-vehicle distributed computing environment in accordance with some embodiments, the synthetic sensor package including code logic and mappings within the synthetic sensor package envelope, as well as annotations for the synthetic sensor outside the envelope. [Diagram 3] FIG. 2 is a block diagram illustrating components of an in-vehicle distributed computing environment framework according to some embodiments. [Figure 4A] FIG. 1 is a block diagram illustrating modular components that may make up a complete composite sensor, according to some embodiments. [Figure 4B] FIG. 1 is a block diagram illustrating a computing stack of an example electronic control unit (ECU) implementing a limited synthetic sensor orchestration environment and connected to an in-vehicle distributed computing environment, according to some embodiments. [Figure 4C] FIG. 1 is a block diagram illustrating a computing stack of an example electronic control unit (ECU) implementing a complete synthetic sensor orchestration environment and connected to an in-vehicle distributed computing environment, according to some embodiments. [Figure 5A] FIG. 1 is a block diagram illustrating electronic control units (ECUs) connected via an in-vehicle distributed computing environment, according to some embodiments, in which an orchestration component of the in-vehicle distributed computing environment determines placement locations of synthetic sensors deployed in the in-vehicle distributed computing environment. [Figure 5B] FIG. 13 is a block diagram illustrating a first composite sensor deployed as a monolithic composite sensor at a first deployment location within an in-vehicle distributed computing environment, and a second composite sensor deployed as two modular components at two different deployment locations within the in-vehicle distributed computing environment, according to some embodiments. [Figure 5C]FIG. 1 is a block diagram illustrating a composite sensor deployed using two logic modules and one input module, according to some embodiments, where the two logic modules and one input module execute in a runtime environment of an in-vehicle distributed computing environment. [Figure 5D] FIG. 1 is a block diagram illustrating a composite sensor deployed using two input modules and one logic module, according to some embodiments, where the two input modules and one logic module execute in a runtime environment of an in-vehicle distributed computing environment. [Figure 5E] FIG. 2 is a block diagram illustrating a monitoring component of an in-vehicle distributed computing environment, which reports ECU capabilities and current state to an orchestration component of the in-vehicle distributed computing environment, according to some embodiments. [Figure 6] 1 illustrates a composite sensor service configured to deploy a common composite sensor package to various types of vehicles, according to some embodiments. [Figure 7] 1 illustrates an exemplary provider network that includes a synthetic sensor service as well as other cloud services offered by the provider network, according to some embodiments. [Figure 8] 1 illustrates an example of a client console for a synthetic sensor service, according to some embodiments. [Figure 9] 1 illustrates a virtual domain control unit (virtual DCU) and a virtual electronic control unit (virtual ECU) that execute code associated with a vehicle, according to some embodiments. [Figure 10] 1 illustrates an example of one-way trip latency between a physical component of a vehicle, such as a sensor, and a virtual DCU / ECU implemented in a different location relative to the vehicle, according to some embodiments. [Figure 11] 1 illustrates a flowchart of the operation of a synthetic sensor service, according to some embodiments. [Figure 12]1 illustrates a flowchart of the operation of an in-vehicle distributed computing environment in accordance with some embodiments. [Figure 13] 1 illustrates a flowchart of a response to a failed ECU executed in an in-vehicle distributed computing environment according to some embodiments. [Figure 14] 1 illustrates a flowchart for reshuffling physical sensors and / or modules of physical sensors in an in-vehicle distributed computing environment, according to some embodiments. [Figure 15] FIG. 1 is a block diagram illustrating an example computer system that may implement some or all of the techniques described herein, according to some embodiments. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0005] Although the embodiments are described herein by way of example in several embodiments and illustrative drawings, those skilled in the art will recognize that the embodiments are not limited to the described embodiments or drawings. The drawings and detailed description thereof are not intended to limit the embodiments to the particular disclosed forms, but on the contrary, the intention is to be understood to cover all modifications, equivalents, and alternatives that are within the spirit and scope defined by the appended claims. The headings used herein are for organizational purposes only and are not meant to be used to limit the scope of the description and claims. As used throughout this application, the term "may" is used in an permissive sense (i.e., meaning having the potential to), rather than a required sense (i.e., meaning necessary). Similarly, the terms "include," "including," and "includes" mean including, but not limited to.

[0006] Systems and methods described herein include techniques for implementing a synthetic sensor service and an in-vehicle distributed computing environment for running synthetic sensors in a vehicle. For example, an automobile manufacturer, an automobile parts manufacturer, or another third party may develop a new application that uses a new type of synthetic sensor and may deploy such a new type of application and / or synthetic sensor in a vehicle already sold to a consumer. The deployment of the synthetic sensor may be accomplished remotely through a network connection between the synthetic sensor service and the vehicle, and a set of the vehicle's in-vehicle computing devices (e.g., electronic control units (ECUs)) implement an in-vehicle distributed computing environment that may include multiple full or limited synthetic sensor orchestration environments, which further perform configuration operations that allow required input data to flow from existing physical sensors, ECUs, or other synthetic sensors in the vehicle to the new synthetic sensor (or a modular component thereof). The synthetic sensor orchestration environment may also perform configuration operations that allow output data from the synthetic sensor to flow to the synthetic sensor's destination. The composite sensor may be deployed in the on-board distributed computing environment as a monolithic composite sensor deployed in a single composite sensor orchestration environment of a given ECU of the vehicle, or the composite sensor may be deployed modularly, where the composite sensor is split into modular components that execute in the runtime environment of the on-board distributed computing service. The modular components of the composite sensor may be deployed in different composite sensor orchestration environments of different ECUs that are all connected through the on-board distributed computing environment. In some situations, allowing the composite sensor to be deployed on multiple ECUs with modular composite sensor components connected through the runtime environment may provide a better deployment than if the composite sensor were deployed on a single ECU. For example, the composite sensor may require processing power and input requirements that are not available to any single ECU, but are partially available to each of the different ECUs.Therefore, modular deployment may enable the placement of a synthetic sensor in an ECU that meets its requirements.

[0007] Further, in some embodiments, in addition to or instead of using the synthetic sensor service to deploy synthetic sensors on a vehicle that are already available for use by the vehicle's driver, a client, such as an automobile manufacturer, can use the synthetic sensor service to deploy synthetic sensors on a vehicle during the vehicle's manufacturing process. For example, during part of the vehicle's manufacturing process, after an on-board computing system is installed and connected to the vehicle's communication bus, a synthetic sensor may be deployed into a synthetic sensor orchestration environment to perform quality assurance testing of the vehicle's electronic systems and / or to provide output data from the synthetic sensor for use in manufacturing and testing of the vehicle.

[0008] In some embodiments, the system includes a plurality of electronic control units (ECUs) installed or configured to be installed in a vehicle. The one or more ECUs have stored therein program instructions for implementing an on-board distributed computing environment. The program instructions, when executed on the one or more ECUs, cause a processor of at least one ECU to receive a composite sensor package for deployment on the vehicle, the composite sensor package including logic for the composite sensor and a mapping for the composite sensor. The program instructions further cause a processor of the at least one ECU to determine a placement location for the composite sensor based on respective availability of data inputs for the mapping of the composite sensor package and based on respective resource capacity of the respective ECUs to execute logic included in the composite sensor package. Furthermore, the program instructions cause a processor of the at least one ECU to place the composite sensor as two or more modular components located on two or more different ECUs of the respective ECUs, the two or more modular components collectively implementing the composite sensor within the on-board distributed computing environment.

[0009] For example, the two or more modular components may include a logic module disposed in a first ECU of the vehicle and an input module disposed in a second ECU of the vehicle, where the logic module implements logic included in the composite sensor package and the input module provides data input to the logic module according to a mapping associated with the composite sensor. The logic module and the input module execute in a runtime environment of the in-vehicle distributed computing environment. For example, a communication layer of the in-vehicle distributed computing environment may encode partial work results (such as input data received from the input module) and communicate those partial work results to other components executing in the runtime environment, such as a logic module implemented in the second ECU. In some embodiments, the first ECU in which the input module is disposed may have access to data inputs that are not available in the second ECU in which the logic module is disposed. Similarly, the first ECU may lack processing power, capacity, or priority available in the second ECU in which the logic module is disposed. Thus, by splitting the composite sensor into a logic module and an input module, deployment in multiple ECUs can be realized such that the composite sensor can access the required data inputs as well as the required computing power, capacity, or priority.

[0010] In some embodiments, the input module may be located in an ECU that implements a full or limited composite sensor orchestration environment. However, both the full and limited composite sensor orchestration environments may be included in an ECU that presents a vehicle service that includes a platform abstraction layer, a hardware abstraction layer, and a vehicle abstraction layer. Thus, the vehicle service of the full or limited composite sensor orchestration environment may not take into account specific dedicated configuration details such that a composite sensor (including either monolithic or modular components) can be located in such a full or limited composite sensor orchestration environment using a standard composite sensor package without having to custom code each composite sensor to meet specific vehicle requirements (e.g., format or encoding requirements dedicated to a specific vehicle manufacturer or vehicle model), to meet specific platform requirements (e.g., format or encoding requirements dedicated to a specific vehicle domain or bus), or to meet specific hardware requirements (e.g., hardware driver interface requirements, etc.). Instead, the vehicle service components of the full or limited composite sensor orchestration environment may handle these details through the platform abstraction layer, the hardware abstraction layer, and the vehicle abstraction layer. Additionally, the full or limited composite sensor orchestration environments implemented on different ECUs may be interconnected through an in-vehicle distributed computing environment such that limiting boundaries, such as hardware capacity or capability limitations of a particular ECU, or input limitations on what types of inputs each ECU can access, can be overcome by deploying the composite sensor in a modular manner to each ECU that meets the needs of the composite sensor, and the runtime environment of the in-vehicle distributed computing environment enables seamless work flow between the modules of the modularly deployed composite sensor.

[0011] Further, in some embodiments, the in-vehicle distributed computing environment may be connected to a virtual ECU, which appears as another ECU in the vehicle, but is actually implemented using remote hardware, such as an edge location or data center of a service provider network. For example, the virtual ECU may function as a virtual machine (e.g., a cloud compute resource) in the vehicle. In some embodiments, the vehicle's ECU may implement an interface to the virtual ECU. In some embodiments, a virtual domain control unit may be connected to the in-vehicle distributed computing network, and a virtual domain control unit (DCU) implements additional vehicle domains using remote hardware, such as an edge location or data center of a provider network. It should be noted that in some embodiments, the virtual ECU and virtual DCU may function as cloud computing resources available to be used for the placement of synthetic sensors, modularly deployed logic modules of synthetic sensors, or both.

[0012] In some embodiments, one or more non-transitory computer-readable storage media store program instructions that, when executed on or across one or more computing devices, cause the one or more computing devices to receive a composite sensor package including logic for the composite sensor and a mapping for the composite sensor. The program instructions also cause the one or more computing devices to determine a placement location for the composite sensor based on respective availability of data inputs for mapping the composite sensor at respective placement locations within the on-board distributed computing environment and respective resource capacity or capability of each placement location within the on-board distributed computing environment. The program instructions further cause the one or more computing devices to place the composite sensor as two or more modular components placed at two or more different placement locations of the placement locations within the on-board distributed computing environment, the two or more modular components collectively implementing the composite sensor within the on-board distributed computing environment.

[0013] In some embodiments, the method includes receiving a composite sensor package at an on-board distributed computing environment of the vehicle, the composite sensor package including logic for the composite sensor and a mapping for the composite sensor. The method further includes determining a placement location for the composite sensor based on respective availability of data inputs for the mapping of the composite sensor at respective placement locations within the on-board distributed computing environment and respective resource capacity of each placement location of the on-board distributed computing environment. Further, the method includes deploying the composite sensor as two or more modular components deployed at two or more different placement locations of the placement locations within the on-board distributed computing environment, the two or more modular components collectively implementing the composite sensor within the on-board distributed computing environment.

[0014] Vehicles are often manufactured with electronic sensors and computing devices that execute control algorithms that take sensor data from the electronic sensors as input to the control algorithms. However, the communication interfaces of the electronic sensors used in vehicles often vary by vehicle manufacturer and even between different models produced by the same vehicle manufacturer. Furthermore, the electronic sensors and associated control algorithms are often implemented as separate systems that serve a specific purpose in the vehicle, but are not configured to share sensor data with other systems in the vehicle. For example, an entertainment system in a vehicle may be implemented with electronic sensors such as volume control, but may not be configured to share sensor data with other systems in the vehicle. In some cases, this is done because separate systems in a vehicle have different certification requirements, such that the separate systems are kept separate and certified separately based on separate hardware requirements and separate control algorithm requirements.

[0015] Additionally, vehicles are often manufactured with fixed algorithms and rules for sharing sensor data, making it burdensome and / or time-consuming to change the fixed algorithms or rules for sharing sensor data. For example, the algorithms and rules for sharing data are often determined during the design phase of the vehicle and cannot be changed after the vehicle is manufactured, or changing the fixed algorithms or rules for sharing sensor data may require physically replacing parts, such as computing devices.

[0016] Similarly, vehicles are often manufactured with separate ECUs, each with its own computing capacity and often dedicated to a particular purpose. The ECUs may be enabled to communicate with each other, for example, via a CAN bus. The computing capacity and capabilities of the ECUs are effectively siloed. For example, if an application running on a first ECU requires more or faster computing than is available on the first ECU, the application cannot utilize the spare computing capacity of other ECUs in the vehicle. Similarly, if an application needs to run on a given ECU, it may be limited to the data inputs available on the given ECU, or may not be able to access data inputs at the same sampling rate on the second ECU as those available on the first ECU. Thus, not only may the computing capacity be siloed on different ECUs, but the availability of data inputs may also be siloed. However, these silo boundaries can be overcome by implementing an in-vehicle distributed computing environment that allows synthetic sensors to be placed on different ECUs and connected by execution in a shared runtime environment.

[0017] As another example, the synthetic sensor service can provide one or more synthetic sensor packages to a vehicle during a manufacturing process for the vehicle after the vehicle is installed with one or more computing devices that store program instructions for implementing the synthetic sensor orchestration environment. The one or more synthetic sensors can be configured to generate outputs that are used to test the vehicle during the manufacturing process. For example, the synthetic sensors can test other components of the vehicle to determine that the components are properly installed and configured on the vehicle.

[0018] Further, in some embodiments, the synthetic sensor service and / or the in-vehicle distributed computing environment can provide a uniform deployment mechanism for synthetic sensors that are deployed in vehicles with different interfaces. For example, the synthetic sensor orchestration environments of different types of vehicles may include interfaces that allow or disallow the flow of sensor data from physical sensors of the different types of vehicles, but may be configured to receive a common synthetic sensor package deployed from the synthetic sensor service. For example, a first vehicle manufacturer and a second vehicle manufacturer may use different types of seat weight sensors with different communication interfaces. However, the synthetic sensor orchestration environments in each of the different types of vehicles may be configured to receive the common synthetic sensor package and locally determine the placement of the synthetic sensor and the configuration operations that need to be done to allow data from existing sensors to flow to the new synthetic sensor. Thus, a third-party developer can develop a single version of a synthetic sensor and use the synthetic sensor service to deploy the new synthetic sensor to the synthetic sensor orchestration environment in multiple different types of vehicles with different sensor communication interfaces, with the placement being determined locally within the respective synthetic sensor orchestration environment by an orchestration component of the vehicle's in-vehicle distributed computing environment.

[0019] Additionally, in some embodiments, a synthetic sensor package deployed from a synthetic sensor service to a synthetic sensor orchestration environment in a vehicle may include one or more annotations outside of the synthetic sensor package envelope that envelop the control logic and mapping of the new synthetic sensor. Annotations such as these may be used by an orchestration component of the in-vehicle distributed computing environment to determine the placement of the new synthetic sensor. Additionally, the orchestration component may use the annotations to further determine the effect that the placement of the new synthetic sensor in a particular system domain has on other synthetic sensors. For example, a newly deployed synthetic sensor may provide an output that is listed as an optional input in an annotation of another synthetic sensor, and the presence of the optional input may enable the other synthetic sensor to be upgraded to a higher certification level or to otherwise provide a more reliable output.

[0020] For example, the annotations can be included in the synthetic sensor package as metadata external to the new synthetic sensor's code itself (e.g., logic elements and mappings), such that an orchestration component of the in-vehicle distributed computing environment can read the annotations included in the synthetic sensor package's metadata and determine a placement decision for the new synthetic sensor without having to parse the new synthetic sensor's code (e.g., logic elements and mappings) contained within the envelope to determine the placement decision.

[0021] In some embodiments, the synthetic sensor may include code that uses sensor data from existing sensors to determine a new synthetic sensor output. Also, in some embodiments, the synthetic sensor may include one or more machine learning models that use sensor data from existing sensors to determine a new synthetic sensor output. For example, the machine learning models may be logic elements of the synthetic sensor, where physical sensor inputs or other inputs are mapped to the machine learning models, and the outputs of the machine learning models are used by the synthetic sensor to determine the output of the synthetic sensor.

[0022] In some embodiments, an OEM, an OEM part manufacturer, and / or a third-party developer may develop new applications for vehicles that use new types of synthetic sensors. In these and other embodiments, a client may purchase new applications from an application store, and the application store may provide a proposal to the vehicle OEM to instruct the synthetic sensor service to deploy one or more synthetic sensor packages to the client's vehicle to implement the purchased new application. In some embodiments, the synthetic sensor services and respective synthetic sensor orchestration environments in different vehicles may provide a consistent perspective for controlling sensor data to be used in updated code after the vehicle is manufactured and / or after a consumer begins using it. For example, the synthetic sensor orchestration environment may enable sensor data to be shared horizontally within a vehicle, rather than being limited to multiple separate vertical control domains. Additionally, the in-vehicle distributed computing environment may enable computational capacity, capabilities, priorities, etc. to be shared horizontally within a vehicle, rather than being limited to multiple separate vertical control domains.

[0023] For example, an OEM, an OEM part manufacturer, or another third party may develop a new synthetic sensor using the synthetic sensor service's console. The developer of the synthetic sensor (e.g., an OEM, an OEM part manufacturer, or a third party) may select sensor data to use as input for the synthetic sensor from a list of sensor data types available from existing sensors. The developer may also select logic elements, such as algorithms (e.g., rules) or models (e.g., machine learning models), to receive the selected input. The developer may further determine a mapping between the inputs, logic elements (e.g., rules and / or models) to the output of the new synthetic sensor. In some embodiments, the mapping may be represented as a JSON object or XML code, and a synthetic sensor orchestration environment in a vehicle where a package for the new synthetic sensor is deployed may parse the JSON object or XML code to determine the relationships between the inputs, logic elements (e.g., rules and / or models), and outputs. The synthetic sensor orchestration environment may then cause one or more configuration operations to be performed to implement the logic elements (e.g., rules and / or models) mapped to the code logic of the synthetic sensor package. The composite sensor orchestration environment may further perform one or more additional configuration operations to enable sensor data to flow to the components of the composite sensor according to mappings included in the code logic of the composite sensor package. In some embodiments, the logic elements and mappings may be included in the envelope environment, and one or more annotations stored as metadata in the composite sensor package (outside the envelope) may indicate characteristics of the composite sensor, such as required inputs, optional inputs, outputs, qualification levels, composite sensor dependencies, failure modes, etc.

[0024] Additionally, in some embodiments, an OEM, OEM part manufacturer, or another third party can use the synthetic sensor service's console to define the processing capacity, capability, or priority of a given synthetic sensor. For example, a synthetic sensor service customer (e.g., an OEM, OEM part manufacturer, or another third party) can specify that a synthetic sensor be provided with access to a graphics processing unit (GPU), a general-purpose graphics processing unit (GGPU), a particular type of central processing unit (CPU), be allocated at least a minimum amount of processing resources, and / or have a specified priority over location resources compared to other applications running at the location (e.g., ECU).

[0025] In some embodiments, an OEM, OEM part manufacturer, or another third party can use a service interface that includes the console or a service interface that is separate from the synthetic sensor design console to instruct the synthetic sensor service to deploy one or more synthetic sensors to a particular vehicle or class of vehicles that are eligible to receive the synthetic sensor. For example, an OEM, OEM part manufacturer, or another third party may require a consumer to purchase an upgrade package to gain access to a new type of feature that is enabled using a new type of synthetic sensor.

[0026] In some embodiments, synthetic sensors may be developed and controlled by an OEM and / or OEM part manufacturer to ensure that synthetic sensors deployed in vehicles manufactured by the OEM or OEM part manufacturer meet certain quality and / or certification requirements. In other embodiments, other third parties may be enabled to develop and deploy new types of synthetic sensors in vehicles manufactured by another party, such as an OEM or multiple different OEMs.

[0027] In some embodiments, various domains or operating systems included in a vehicle may include an infotainment domain / OS, a cockpit or control domain / OS, a communications domain / OS, a safety systems domain / OS, a vehicle server domain / OS, a telematics communications unit domain / OS, an advanced driver assistance systems domain / OS, a cloud domain / OS, an edge processing domain / OS (which may be partially implemented in cellular communication towers, etc.), and / or a gateway domain / OS. While a vehicle may include a common communications bus, different domains may be separate branches off the bus, or the data flow on the bus may not be accessible to all of the domains.

[0028] In some embodiments, the synthetic sensor orchestration environment can provide output from the synthetic sensor to another vehicle system outside the synthetic sensor orchestration environment. In some embodiments, the other vehicle system can perform one or more control actions based on the output received from the synthetic sensor. For example, if the synthetic sensor is a synthetic sensor that determines if a passenger is seated in the front seat, the output of the synthetic sensor may be provided to a vehicle system outside the synthetic sensor orchestration environment, such as a front seat adjuster controller, which automatically moves the front seats forward to provide more leg room for rear seat passengers when no one is seated in the front seats.

[0029] In some embodiments, the synthetic sensor orchestration environment can provide output from the synthetic sensor to a remote system external to the vehicle. For example, parts of an infotainment system for a vehicle may be implemented remotely using cloud-based resources, and the output of the synthetic sensor may be provided to a cloud provider external to the vehicle. As an example, an output of "Is there a child sitting in the vehicle?" may be provided by the synthetic sensor to a remote server that customizes media content provided to the vehicle, and different customization of the media content may be performed based on whether a child is sitting in the vehicle.

[0030] FIG. 1 illustrates a synthetic sensor service, according to some embodiments, that receives instructions to deploy synthetic sensors from clients of the synthetic sensor service and remotely deploys the synthetic sensors to vehicles that each include an on-board synthetic sensor orchestration environment.

[0031] In some embodiments, a synthetic sensor service for a vehicle, such as synthetic sensor service 102, is configured to receive instructions to define a new synthetic sensor from a client, such as clients 120a-120n, over a network, such as network 140. In some embodiments, clients 120a-120n may include a vehicle original equipment manufacturer (e.g., a vehicle OEM), a vehicle part original equipment manufacturer (e.g., a part OEM), or a third party, such as an application developer.

[0032] In some embodiments, the composite sensor service 102 can generate a composite sensor package 146 based on instructions received from any one of the clients 120a-120n and deploy the composite sensor package to a composite sensor orchestration environment 140 in one or more vehicles, such as vehicles 124, 148, 150, via the network 122. For example, the network 122 can be a wireless network, such as a cellular, satellite, or other network, that enables data communication between the composite sensor service 102 and an on-board computing system 152 that implements the composite sensor orchestration environment 140.

[0033] In some embodiments, a synthetic sensor service, such as the synthetic sensor service 102, may include a code logic depository 104, a physical sensor list 106, a service interface 108, a mapping and annotation generator 110, an application interface 112, and a vehicle communication interface 114.

[0034] In some embodiments, a service interface of the synthetic sensor service, such as service interface 108, can implement a service console as shown in FIG. 6, an application programmatic interface configured to receive synthetic sensor instructions from clients 120a-120n, a command line interface, a graphical user interface, or other suitable interface that allows a client to select and / or design new synthetic sensors to be deployed to a vehicle that includes the synthetic sensor orchestration environment. Note that in some embodiments, a vehicle, such as vehicle 124, can be manufactured to include the synthetic sensor orchestration environment 140 at the time of manufacture, where the synthetic sensor orchestration environment 140 allows new synthetic sensors to be deployed to the vehicle 124 after manufacture and after use by an owner or driver of the vehicle 124.

[0035] In some embodiments, the console implemented by the service interface 108 may provide the client 120 with available sensors included in the vehicle that may be used to design the new composite sensor. For example, the physical sensor list 106 may store an updated list of available sensors included in various types of vehicles that subscribe to the composite sensor service 102. The console implemented by the service interface 108 may also provide the client with available rules, models, etc. that may be used to design the composite sensor. For example, the code logic depository 104 may store available rules, models, etc. logic elements that may be used to define the code logic of the new composite sensor. Additionally, in some embodiments, the client may submit client-generated rules, models, etc. to be used in the new composite sensor. In some embodiments, the service interface 108 may provide a "drag-and-drop" graphical user interface (GUI) where the client drags and drops logic elements, such as rule models, to be used in the new composite sensor, and further defines the data flow through the new composite sensor by connecting inputs to the logic elements and drawing lines connecting the logic elements to one or more outputs of the composite sensor. In some embodiments, a client may select from pre-defined logic elements to drag and drop to define a new composite sensor, or a client may provide client-defined logic elements to drag and drop and further connect with other code elements, inputs, outputs, etc. to define a new composite sensor.

[0036] In some embodiments, the mapping and annotations generator 110 can then generate a composite sensor package defined by the client via the service interface 108. In some embodiments, the client may specify the annotations to be included in the composite sensor package, or the mapping and annotations generator 110 may automatically determine the annotations based on the composite sensor definition received via the service interface 108.

[0037] In some embodiments, an application may request synthetic sensors to be deployed to enable the application to be implemented in the vehicle, and application interface 112 may receive such a request.

[0038] In some embodiments, the vehicle communication interface 114 may establish a network connection with the on-board computing device(s) 152 and transmit the composite sensor package 146 to the composite sensor orchestration environment 140 for deployment.

[0039] In some embodiments, a vehicle, such as any of vehicles 124, 148, 150, etc., may include one or more on-board computing devices 152 that implement one or more operating system domains, such as operating system domains 136-138. Additionally, on-board computing device 152 may implement on-board distributed computing environment 140 that spans one or more operating system domains, such as operating system domains 136 and 138. In some embodiments, each operating system domain may be implemented on a separate on-board computing device (e.g., ECU) or may be implemented on a common on-board computing device. Also, in some embodiments, on-board distributed computing environment 140 may be implemented on the same on-board computing device as one or more of the operating system domains or may be implemented on a separate on-board computing device that interfaces with other on-board computing devices that implement the respective operating system domains 136-138. Also, in some embodiments, the vehicle may include a communication bus 132 that connects on-board computing device 152 to physical sensors, such as physical sensors 126, 128, and 130. In some embodiments, one or more different types of interfaces 134 can connect the physical sensors to the communication bus 132. Also, in some embodiments, the synthetic sensor in-vehicle distributed computing environment 140 can implement one or more synthetic sensors, such as synthetic sensors 142 and 144. In some embodiments, the synthetic sensors may be implemented in a specific operating system domain or may be enabled to communicate with other parts of the vehicle via a communication bus, such as the communication bus 132.Further, the synthetic sensors 142, 144, etc. may be implemented in the in-vehicle distributed computing environment 140 as modularly arranged synthetic sensors, such as including one or more input modules and one or more logic modules arranged on different ECUs in different operating systems of the operating system domains 136-138.

[0040] FIG. 2 shows a more detailed diagram of a synthetic sensor package that may be deployed from a synthetic sensor service to an in-vehicle distributed computing environment in accordance with some embodiments, the synthetic sensor package including code logic and mappings within the synthetic sensor package envelope, as well as annotations for the synthetic sensor outside the envelope.

[0041] In some embodiments, a composite sensor package, such as composite sensor package 146 shown in FIG. 1, can include a format similar to that described in FIG.

[0042] The synthetic sensor package 202 includes an envelope 204 that envelopes code that defines logic and mappings 206. Outside of the envelope 204, the synthetic sensor package 202 also includes annotations 208. In some embodiments, the annotations can include required inputs for the synthetic sensor, optional inputs for the synthetic sensor, processing requirements for the synthetic sensor, priority requirements for the synthetic sensor with respect to ECU resources, qualification level(s) for the synthetic sensor, a failure contingency plan for the synthetic sensor, a dependency chain for the synthetic sensor, and the like. In some embodiments, the failure contingency plan can dictate alternative inputs to be used by the synthetic sensor if certain required or optional inputs are not available. As another example, the failure contingency plan can dictate that modular components of the synthetic sensor be replicated / regenerated and placed on a backup ECU in response to a failure on the ECU where the modular components were originally placed. The qualification level and / or failure contingency plan can also dictate different qualification levels attributed to the synthetic sensor based on the number of required and / or optional inputs available. Also, the certification level of a synthetic sensor may depend on the domain in which it is implemented. For example, hardware used in the safety domain may be more robust than hardware used in the entertainment domain. Thus, to achieve a higher level of certification, it may be necessary to implement the synthetic sensor in a domain that contains more robust hardware that meets the requirements of a given certification level.

[0043] In some embodiments, logic elements such as rules A, B, C, and D and models A and B may be selected from the code logic depository 104 as illustrated in FIG. 1. Also, in some embodiments, one or more of rules A, B, C, or D or models A or B may be provided by the client 120. The mapping 204 may define the request and optional inputs, outputs, and data flows between the rules A, B, C, and D and models A and B. In some embodiments, the client may draw the lines of the mapping 204 using the service interface 108 to define a composite sensor type.

[0044] In some embodiments, the annotation 208 may further indicate that the composite sensor output is an input to another type of composite sensor and / or may indicate that an output from another type of composite sensor is a required or optional input to a given composite sensor. In some embodiments, the annotation may indicate a particular operating system domain in which the composite sensor is deployed. For example, achieving a particular certification level may require that the composite sensor be deployed in an operating system domain with hardware or processes that meet the requirements of the particular certification level. Additionally, the annotation may indicate that the logic modules of the modularly deployed composite sensor are deployed in an operating system domain dedicated to achieving the particular certification level, and that the input modules are deployed in another dedicated operating system domain that has the inputs required for the composite sensor. As yet another example, the annotation may include an indication that modular deployment is possible for the deployed composite sensor, and if modular deployment is not possible, the orchestration environment selects monolithic deployment. Also, in other embodiments, modular deployment may be enabled by default, and the annotation of the composite sensor package may indicate that monolithic deployment is required. Also, as further described in FIG. 8, in some embodiments, a customer (e.g., an OEM, a third party component supplier, etc.) requesting / designing a composite sensor package can specify a deployment strategy (e.g., monolithic vs. modular). The customer can also specify placement requirements for the logic modules of a modularly deployed composite sensor. In these and other embodiments, the logic module requirements can be indicated in the annotation. Similarly, the customer can specify input redundancy that may limit placement of input modules, and such requirements can also be indicated in the annotation.

[0045] Annotations such as annotation 208 may also indicate that a given synthetic sensor can be upgraded to a higher certification level when one or more optional inputs are available. In some embodiments, the synthetic sensor orchestration service may scan annotations of already implemented synthetic sensors when a new synthetic sensor is added to determine whether the new synthetic sensor is an optional input to one or more of the already implemented synthetic sensors. The synthetic sensor orchestration environment may also automatically change the placement of one or more synthetic sensors (e.g., reshuffle the synthetic sensors) such that a given one of the synthetic sensors can be upgraded to a higher certification level by utilizing the output of the newly added synthetic sensor as an input to one or more already implemented synthetic sensors. In some embodiments, upgrading the certification level of a given synthetic sensor may further enable other synthetic sensors to be upgraded by receiving input (output from the upgraded synthetic sensor) that complies with the higher certification level.

[0046] FIG. 3 is a block diagram illustrating components of an in-vehicle distributed computing environment framework according to some embodiments.

[0047] In some embodiments, an on-board distributed computing environment, such as the on-board distributed computing environment 140 shown in FIG. 1, may include an orchestration component 302 that determines the placement of the composite sensor and modules of the composite sensor, a runtime component 304 that the modules of the composite sensor execute, and a monitoring component 306 that provides an interface to collect status and capability information from computing devices of the on-board distributed computing environment, such as ECUs. Additionally, the on-board distributed computing environment 140 includes a communication layer 308 that provides protocols and encodings for transmitting communications between the components of the on-board distributed computing environment 140. The on-board distributed computing environment 140 also includes operations 310, which may be tasks of jobs performed by different modular components of the modularly arranged composite sensor executing in the runtime environment provided by the runtime component 304.

[0048] In some embodiments, the runtime component 302 is responsible for functions such as switching between execution environments, facilitating the execution of work 310, transmitting partial results between modular components, and aggregating incoming partial results.

[0049] In some embodiments, the monitoring component 306 is responsible for reporting ECU capacities, capabilities, priorities, etc. to the orchestration component 302 .

[0050] In some embodiments, the communication layer 308 enables a communication protocol to connect the ECU to the virtual orchestration component 302 and enables work 310 (including partial results) to be communicated between modular components of the composite sensor.

[0051] The orchestration component 302 is implemented on one of the ECUs of the in-vehicle distributed computing environment, but does not care about which ECU it is located on. For example, the orchestration component 302 can place an incoming synthetic sensor on the same ECU hosting the orchestration component 302 or on another ECU of the in-vehicle distributed computing environment. Furthermore, the orchestration component can place a synthetic sensor based on annotations indicated for the synthetic sensor package and based on status information provided by the monitoring component 306. The orchestration component 302 maintains a global view of the state of the ECUs of the in-vehicle distributed computing environment 140 and can assign work to each ECU based on this global view and the respective requirements of the work.

[0052] In some embodiments, the operation 310 is a stateless algorithm that must be executed on a given ECU connected to the in-vehicle distributed computing environment 140 .

[0053] In some embodiments, the in-vehicle distributed computing environment 140 provides a framework that defines an interface for ECUs to participate in the framework and obtain agreements from the ECUs to send health data (e.g., capacity information, capability information, status information, etc.) via the monitoring component 306. In some embodiments, the communication layer 308 may be on the vehicle's CAN bus, Flex-Ray bus, or other suitable bus, such as an Ethernet bus. In some embodiments, the bus may maintain a diagnostic index, so that the monitoring component 306 does not necessarily need to report the diagnostic information to the orchestration component 302, but instead ensures that the orchestration component 302 has access to the diagnostic index, as may be maintained by another entity, such as a bus.

[0054] FIG. 4A is a block diagram illustrating modular components that may make up a complete composite sensor, according to some embodiments.

[0055] As discussed herein, a composite sensor may be monolithically deployed as a complete composite sensor, as shown for composite sensor 402, or may be deployed as multiple modular components, such as input module 404 and logic module 406.

[0056] FIG. 4B is a block diagram illustrating a computing stack of an example electronic control unit (ECU) implementing a limited synthetic sensor orchestration environment and connected to an in-vehicle distributed computing environment, according to some embodiments.

[0057] As an example of a limited synthetic sensor orchestration environment 410, the ECU 408 may include a vehicle service 414 that provides a platform abstraction layer 422, a hardware abstraction layer 420, and a vehicle abstraction layer 418, as well as an interface layer 416. The vehicle service 414 may provide an abstraction layer such that the details of the operating system 424 and data drivers 426 of the ECU 408 are not considered in the interface layer 416 that interfaces with the in-vehicle distributed computing environment 412. For example, work 430 passed to the in-vehicle distributed computing environment 412 via the interface layer 416 and directed to the logic module 428 may follow the communication protocol of the communication layer 308 of the in-vehicle distributed computing environment 412. In this way, another ECU receiving the work may interpret the work without needing any specialized knowledge regarding the encoding protocol used by the operating system 424 or the data drivers 426, etc. For example, a synthetic sensor / synthetic sensor module can access raw sensor data via an application programmatic interface (API) provided by vehicle services 414 that can access any synthetic sensor (e.g., a synthetic sensor does not need to be specially coded to communicate with the API).

[0058] As an example, a synthetic sensor that wants to access GPS data may be written to simply call an API for GPS data, and the synthetic sensor can be coded in a way that works regardless of the underlying details that may vary between vehicles or vehicle operating systems. Vehicle services 414 allows the synthetic sensor code to be portable across different vehicle platforms, makes, models, etc.

[0059] FIG. 4C is a block diagram illustrating a computing stack of an example electronic control unit (ECU) implementing a complete synthetic sensor orchestration environment and connected to an in-vehicle distributed computing environment, according to some embodiments.

[0060] The complete composite sensor orchestration environment 452 includes a vehicle service 464 that may include an abstraction layer the same as or similar to the vehicle service 414 described in FIG. 4B, which does not consider the details regarding the operating system 466 and data drivers 468 of the ECU 450. However, the complete composite sensor orchestration environment 452 also includes a composite sensor service 456 with a connection to the in-vehicle distributed computing environment 462. Note that the in-vehicle communication environment 462, the in-vehicle communication environment 414 may be the same as the in-vehicle communication environment 140 shown in FIG. 1. For example, the work 430 may be sent from the ECU 408 to the composite sensor service 456 via the in-vehicle distributed computing environment 412, 464 (and vice versa). Additionally, work from other input modules 472 may be sent to the ECU 450 via the in-vehicle distributed computing environment 462, and outgoing work may be sent from the ECU 450 to the logic module 470 of the other ECU via the in-vehicle distributed computing environment 462.

[0061] In some embodiments, the composite sensor service 456 may further include a composite sensor logic layer 460 that executes logic work components of the composite sensor located on the ECU 450 or logic work components from input modules located on other ECUs, where the logic work is executed on the ECU 450 using data from the input modules of the other ECUs, which execute in a runtime environment of the in-vehicle distributed computing environment 462. Additionally, the communication layer 458 may provide an interface to applications that interact with a given logic component of the composite sensor in the composite sensor logic layer 460.

[0062] FIG. 5A is a block diagram showing electronic control units (ECUs) connected via an in-vehicle distributed computing environment, in accordance with some embodiments, where an orchestration component of the in-vehicle distributed computing environment determines placement locations for synthetic sensors deployed in the in-vehicle distributed computing environment.

[0063] In some embodiments, the composite sensor packages 146A and 146B are received in-vehicle distributed computing environment 152 via an orchestration component 524, which determines the placement decisions for the associated composite sensors. For example, composite sensor "A" 518 is monolithically placed in the composite sensor orchestration environment 518 of the ECU 502. In contrast, composite sensor "C" may be modularly placed as a logic module 520 placed in the composite sensor orchestration environment 514 of the ECU 506 and an input module 522 placed in the limited composite sensor orchestration environment 516 of the ECU 508. In some embodiments, the orchestration component 524 determines the placement based on annotations associated with the composite sensor packages 146A and / or 146B, availability of inputs at the respective placement locations (e.g., ECUs 502, 504, 508, etc.), resources available at the placement locations (e.g., ECUs 502, 504, 508, etc.), such as CPU resources, general purpose GPU resources (GGPU), hardware, e.g., driver assistance system / autonomous driving hardware, cockpit hardware, etc., network connectivity, bus availability, etc. For example, the ADAS / AD ECU 502 may have more computational capacity than the gateway ECU 508, but the gateway ECU 508 may have more access to sensors, such as sensors 1-N. For example, in some embodiments, sensors 1-N may include cameras, tire pressure sensors, backup sensors, seat belt sensors, windshield wiper sensors, etc. Other inputs available to the gateway ECU 508 may include satellite communication interfaces, V2X, LTE / 5G, Wi-Fi, etc.

[0064] 14, placements within the in-vehicle distributed computing environment 512 may be reshuffled in response to dynamic reassessment of conditions (existing load, resource availability, etc.). Additionally, an administrator may dictate constraints on placement, and reshuffling may move the placement to satisfy the administrator-dictated constraints.

[0065] FIG. 5B is a block diagram illustrating a first composite sensor deployed as a monolithic composite sensor at a first deployment location within an in-vehicle distributed computing environment, and a second composite sensor deployed as two modular components at two different deployment locations within the in-vehicle distributed computing environment, in accordance with some embodiments.

[0066] As an example of modular deployment, when a composite sensor “C” is deployed, the input module 522 and logic module 520 can execute in the runtime environment 526 and share operations 528 .

[0067] FIG. 5C is a block diagram illustrating a composite sensor deployed using two logic modules and one input module, according to some embodiments, where the two logic modules and one input module execute in a runtime environment of an in-vehicle distributed computing environment.

[0068] In some embodiments, the logic portion of the composite sensor may be distributed across multiple logic modules. For example, in FIG. 5C, the composite sensor "Y" logic module 530 is located in ECU 502, the composite sensor "Y" logic module 532 is located in ECU 506, and the composite sensor "Y" input module 534 is located in ECU 508.

[0069] In some embodiments where logic modules are processing large amounts of data, multiple instances of the same logic may be implemented on multiple logic modules, each processing a portion of the data. As one example, the results of the processing may then be aggregated by yet another logic module. As another example, a first logic module may act as a primary logic module and delegate tasks to a secondary logic module that also executes in a runtime environment with the first logic module.

[0070] FIG. 5D is a block diagram illustrating a composite sensor deployed using two input modules and one logic module, according to some embodiments, where the two input modules and one logic module execute in a runtime environment of an in-vehicle distributed computing environment.

[0071] As yet another example, in some embodiments, a composite sensor may be modularly deployed across multiple input modules. For example, a composite sensor "M" may be deployed with input module 540 located in ECU 502, input module 544 located in ECU 508, and logic module 542 located in ECU 506.

[0072] FIG. 5E is a block diagram illustrating a monitoring component of an in-vehicle distributed computing environment, which reports ECU capabilities and current state to an orchestration component of the in-vehicle distributed computing environment, according to some embodiments.

[0073] As shown in FIG. 5E, the monitoring component 550 of the in-vehicle distributed computing environment 512 can collect and provide health information to the orchestration component 524.

[0074] FIG. 6 illustrates a composite sensor service configured to deploy a common composite sensor package to various types of vehicles, each implementing an in-vehicle composite sensor orchestration environment, according to some embodiments.

[0075] In some embodiments, input interfaces to the composite sensor orchestration environment may be standardized such that the composite sensor orchestration environment can receive a common composite sensor package from a composite sensor service while also interfacing with different communication interfaces of electronic sensors included in different types of vehicles. For example, the composite sensor service 102 can deploy a common composite sensor package 608 to each of multiple different types of vehicles, such as a car 602, a truck 604, and a van 606, which may be manufactured by different vehicle manufacturers and may include electrical sensors manufactured by different parts manufacturers.

[0076] FIG. 7 illustrates an exemplary provider network that includes a synthetic sensor service as well as other cloud services offered by the provider network, according to some embodiments.

[0077] In some embodiments, a provider network, such as provider network 702, includes networking devices 704, computing devices 706, and data storage devices 708 that implement cloud services 710. In some embodiments, a provider network can implement multiple cloud services in addition to the synthetic sensor service. For example, provider network 702 implements cloud services 710 that include IoT software update services 712, compute services 714, data storage services 716, machine learning services 718, workflow services 720, and other services 722. Cloud services 710 also include synthetic sensor services 102.

[0078] In some embodiments, an IoT software update service, such as IoT software update service 712, can facilitate software updates on devices connected to the IoT software update service, such as vehicles 124, 148, and 150 shown in FIG. 1, or vehicles 602, 604, and 606 shown in FIG. 6. In some embodiments, the IoT software update service can further update firmware on the connected devices and can utilize encrypted communications to perform the updates. In some embodiments, the IoT software update service can also include an identity authentication protocol to prevent unauthorized entities from modifying software on connected devices, such as vehicles, and can encrypt communications to connected devices to prevent modifications to the software updates.

[0079] In some embodiments, a compute service, such as compute service 714, may include computing devices that implement virtual compute machines, which may be used to analyze collected vehicle usage information and / or which may be used to implement synthetic sensor services.

[0080] In some embodiments, a data storage service, such as data storage services 716, may include a data storage device that implements virtualized data storage, such as a virtual data storage volume or virtual storage container for object-based storage. In some embodiments, a data storage service, such as data storage services 716, may be used to store collected vehicle usage information for a client. Also, in some embodiments, a data storage service, such as data storage services 716, may be used to implement components of a synthetic sensor service. For example, in some embodiments, the code logic depository 104 and the physical synthetic sensor list 106 may be implemented using the virtual storage resources of the data storage services 716.

[0081] In some embodiments, the machine learning service may execute one or more machine learning algorithms to determine relationships to be used in a synthetic sensor, to optimize a workflow service, or to optimize another service. For example, in some embodiments, a machine learning service such as machine learning service 718 may be used to optimize software for a synthetic sensor and may utilize vehicle usage information collected from a synthetic sensor orchestration environment, such as synthetic sensor orchestration environment 140, to perform such machine learning or generate machine learning inference outputs.

[0082] In some embodiments, a workflow service, such as workflow service 720, can execute a workflow based on input data and a stored or developed workflow. For example, in some embodiments, a workflow service, such as workflow service 720, can determine an action to take based on collected vehicle usage information. As an example, the workflow service may determine the need to change or replace a filter, a hose, or a fluid based on applying the collected vehicle usage information to one or more stored or developed workflows. In some embodiments, a machine learning service, such as machine learning service 718, may be used to develop or improve the workflows executed by workflow service 720.

[0083] In some embodiments, cloud services 710 may include various other cloud services, such as other services 722.

[0084] FIG. 8 illustrates an example of a client console for a synthetic sensor service, according to some embodiments.

[0085] In FIG. 8, the “Sensor Access” tab is selected, which shows existing physical sensors in a 2009, 2010, or 2011 model “OEM A” vehicle with a particular operating system platform and trim level. Also, as shown in FIG. 8, some sensor data from some sensors may be available to first party applications (e.g., OEM manufacturer applications), sensor data from other sensors may be available to second party applications (e.g., OEM part manufacturer applications), and sensor data from another set of sensors may be available to third parties, such as application developers who are not first party OEMs or second party OEM part manufacturers, in an automotive open systems architecture (e.g., Auto SAR). For example, the third party applications may be from an OEM’s developer ecosystem or may be applications from an existing application store developer ecosystem. Also, although not shown in FIG. 8, the System Access tab may be selected to see which systems (e.g., safety systems domain, entertainment domain, in-vehicle control domain, etc.) can be accessed by first party, second party, third party, and / or Auto SAR applications. Additionally, the "Compute Unit Control" tab may be selected to determine whether first party, second party, third party and / or Auto SAR applications can interact with computer controllers in their respective domains. Using an interface such as that shown in FIG. 8, input sensors can be selected and dragged and dropped into a composite sensor definition such as that shown in FIG.

[0086] 8 may also enable a customer to specify one or more processor requirements, for example, a monolithically deployed composite sensor or a modularly deployed composite sensor logic module, etc. For example, a customer may specify deployment on an ECU (or virtual ECU) with a particular type of processor, such as a GPU, a general-purpose GPU, a multi-core CPU, etc.

[0087] In some embodiments, the user interface shown in FIG. 8 may also allow a customer to specify other composite sensor placement requirements, such as enabling automatic reshuffling (further described in FIG. 14), enabling or limiting module deployment, or other customer-specified placement rules.

[0088] FIG. 9 illustrates a virtual domain control unit (virtual DCU) and a virtual electronic control unit (virtual ECU) according to some embodiments, which execute code associated with a vehicle in a local virtual DCU / ECU orchestration environment of the vehicle, and also execute code associated with the vehicle in a remote virtual DCU / ECU orchestration environment away from the vehicle.

[0089] Service provider network 902 implements virtual domain control unit (DCU) services 904 and service provider network services, such as service provider network services 920 and service provider network services 928. In some embodiments, service provider network 902 may include one or more data centers within one or more regions of the service provider network, each of which includes computing devices, data storage devices, networking devices, and / or other devices that implement service provider network 902. For example, service provider network services 920 include / are implemented using data center computing devices 922 and data center storage devices 924. In a similar manner, service provider network services 928 include / are implemented using data center computing devices 930 and data center storage devices 932. In some embodiments, data center computing devices and data center storage devices may include rack mounted computing devices, such as servers mounted within a data hall of a data center.

[0090] The virtual domain control unit service 904 may be implemented using resources of other services of the service provider network 902, for example using computing resources of a computing service of the service provider network, and using data storage resources of a storage service of the service provider network 902, such as the services of the service provider network services 920 or 928.

[0091] In some embodiments, the virtual domain control unit services 904 include a service interface 906, a vehicle communication interface 908, and a remote virtual DCU / ECU orchestration environment 910. Note that in some embodiments, the virtual domain control services 904 can be used to deploy code packages to virtual DCUs, virtual ECUs, or both. Also, in some embodiments, the virtual domain control unit services 904 can be used by customers of the virtual DCU services 904 to reserve, allocate, deallocate, and manage virtual DCUs, virtual ECUs, or both.

[0092] In some embodiments, a service interface of a virtual DCU / ECU service, such as service interface 906, may implement a service console, an application programmatic interface that may be configured to receive vehicle code package / virtual DCU package / virtual ECU package instructions from a client through a command line interface, a graphical user interface, or other suitable interface that allows the client to select and / or design new vehicle code packages / virtual DCU packages / virtual ECU packages to be deployed to a vehicle that includes a virtual DCU / ECU orchestration environment. It should be noted that in some embodiments, a vehicle, such as vehicle 124, may be manufactured with virtual DCU / ECU connectivity in in-vehicle distributed computing environment 140 at the time of manufacture, whereby the virtual DCU / ECU connectivity enables new vehicle code packages / virtual DCU packages / virtual ECU packages to be deployed to vehicle 124 after manufacture and use by an owner or operator of vehicle 124.

[0093] In some embodiments, the vehicle code package (such as a modularly arranged synthetic sensor logic module) may be located in a remote virtual DCU / ECU configured to communicate with the vehicle. For example, the vehicle code package may be located in a virtual ECU 912 or virtual DCU 914 included in a service provider network domain and implemented in the virtual DCU / ECU remote orchestration environment 910. As another example, the vehicle code package may be located in a virtual DCU 948 or virtual ECU 950 included in a wireless network edge location 938 that also includes a wireless communication device 940 that establishes a wireless connection 958 with the vehicle 124. It should be noted that while the wireless connection 958 is directly between the wireless edge location 938 and the vehicle 124, the connection 956 to the data center hosting the computing device implementing the virtual DCU / ECU remote orchestration environment 910 may include an intermediate networking device / hop through the network 936. For example, in some embodiments, the service provider edge computing device 942 and the service provider edge storage device 944 may be co-located at a wireless edge location that includes the wireless communication device 940. As a further example, the wireless communication device 940 may be a wireless antenna implementing a 5G wireless network, and the service provider edge computing device 942 and the service provider edge storage device 944 may be physically located in the same or adjacent facility as the wireless antenna. Additionally, the service provider edge computing device 942 and the service provider edge storage device 944 may implement a virtual DCU / ECU edge orchestration environment 946.

[0094] In some embodiments, outputs from one or more first virtual DCUs or virtual ECUs can be inputs to other virtual DCUs or virtual ECUs in the same or different locations. In this manner, a network of virtual DCUs / ECUs can be formed such that tasks requiring low latency are executed locally on virtual DCUs / ECUs in the vehicle or wireless network edge locations, while other tasks that are less sensitive to latency can be executed using virtual DCUs / ECUs in remote data centers, such as virtual ECU 912 and / or virtual DCU 914. Also, in some embodiments, the virtual DCUs / ECUs can outsource tasks or jobs to other services in the service provider network 902. For example, V-DCU task / job 926 is outsourced by virtual DCU 914 to service provider network service 920. Also, V-ECU task / job 934 is delegated to service provider network service 928. For example, in some embodiments, a virtual DCU 948 or a virtual ECU 950 at a wireless network edge location may delegate a V-ECU task / job 934 to a service provider network service 928.

[0095] In some embodiments, the vehicle code package remote execution environment may implement / use a standardized coding paradigm such that developers of vehicle code packages that execute via virtual DCU / ECUs can use a common coding paradigm to develop vehicle code packages that are deployed to vehicles produced by different manufacturers and / or that are located in different virtual DCU / ECU orchestration environments in different locations (e.g., local, edge, remote, etc.).

[0096] FIG. 10 illustrates an example of one-way trip latency between a physical component of a vehicle, such as a sensor, and a virtual DCU / ECU implemented in a different location relative to the vehicle, according to some embodiments.

[0097] As discussed above, in some embodiments, the placement of the vehicle code package / virtual DCU package / virtual ECU package may be selected based on the latency requirements of the vehicle code. For example, some types of code may require low latency between vehicle components. For example, an application implemented using vehicle code that detects obstacles in a road may require low latency between sensors and output devices. However, as another example, an application that adjusts the position of a passenger's seat as the passenger enters the vehicle may be able to tolerate higher latency. As yet another example, an application, such as providing song recommendations, may not be as latency sensitive as other applications. In these different examples, the vehicle code packages of the applications may indicate latency requirements, and the vehicle code packages containing the code to implement these applications may be placed on virtual DCUs / ECUs in different locations that provide different levels of latency and / or different capacities, e.g., different computing capacity, different storage, capacity, different access to other provider network services, etc.

[0098] As shown in FIG. 10, in some embodiments, one-way latency from the sensor to the virtual DCU / ECU at an edge wireless network location may be in the range of 10 milliseconds.

[0099] In some embodiments, the remote virtual DCU / ECU orchestration environment can have one-way latency in the range of 150 milliseconds, which may be satisfactory for song recommendations, as an example of an application with high storage or compute requirements but low sensitivity to latency.

[0100] FIG. 11 illustrates a flowchart of the operation of a synthetic sensor service, according to some embodiments.

[0101] At 1102, the synthetic sensor service provides an interface to vehicle manufacturers, component manufacturers, or other third parties. The interface may enable clients of the synthetic sensor service to design new types of synthetic sensors. The interface may also be used to deploy a particular type of synthetic sensor, such as one designed by a client, to a particular vehicle. In some embodiments, the interface may provide an API to an application store to automatically deploy a synthetic sensor package to a particular vehicle in response to an application being purchased for a particular vehicle that uses the synthetic sensor.

[0102] At 1104, the synthetic sensor service receives, via the interface, a selection of one or more synthetic sensors (or a mapping to create a synthetic sensor) to be deployed in the vehicle's synthetic sensory orchestration environment.

[0103] At 1106, the synthetic sensor service generates one or more synthetic sensor packages for the selected (or created) one or more synthetic sensors for deployment in the vehicle's synthetic sensor orchestration environment, the one or more synthetic sensor packages formatted with code logic and mappings in the enveloped format and with one or more annotations for the synthetic sensors outside the envelope.

[0104] At 1108, the synthetic sensor service provides one or more synthetic sensor packages for deployment to the vehicle for deployment during the manufacturing process of the vehicle. In some embodiments, the one or more synthetic sensors associated with the one or more synthetic sensor packages can assist in the manufacturing process and / or testing of the vehicle during manufacturing. In some embodiments, the one or more synthetic sensor packages can be deployed during the manufacturing process after the vehicle is powered (e.g., a battery is installed), an on-board computer is installed on the vehicle, and a wire harness is attached to the on-board computer. In some embodiments, the one or more sensors associated with the one or more synthetic sensor packages can run a quality assurance model to check the quality of the installed physical sensors and computing system. In some embodiments, once the vehicle passes the quality assurance tests, the synthetic sensors may be released from the synthetic sensor orchestration environment.

[0105] At 1110, the synthetic sensor service provides one or more synthetic sensor packages for deployment to the vehicle via a network connection to the vehicle, where the one or more sensor packages are provided to add synthetic sensors or other features to the vehicle after the vehicle is made available for use by the vehicle operator (e.g., after the vehicle has already been sold to a consumer).

[0106] In some embodiments, the synthetic sensor service may perform both 1108 and 1110 for a vehicle, or only one but not the other.

[0107] FIG. 12 illustrates a flowchart of the operation of an in-vehicle distributed computing environment according to some embodiments.

[0108] At 1202, an on-board computing device of the vehicle implements an on-board distributed computing environment configured to receive the synthetic sensor package via a network connection to the vehicle and to implement new synthetic sensors during manufacture of the vehicle or after use of the vehicle by an owner or operator of the vehicle.

[0109] At 1204, the in-vehicle distributed computing environment establishes a communication channel between the vehicle's existing physical sensors and / or ECUs and the in-vehicle distributed computing environment via the vehicle's on-board bus.

[0110] At 1206, the in-vehicle distributed computing environment receives one or more synthetic sensor packages at the vehicle via a network connection to a synthetic sensor service or via a local production network at the manufacturing site, the synthetic sensor packages including code logic and mappings in an enveloped format and one or more annotations for the synthetic sensors outside the envelope.

[0111] At 1208 / 1210, the in-vehicle distributed computing environment determines whether a given composite sensor should be deployed in the in-vehicle distributed computing environment as a single composite sensor or as two or more modular components based on one or more annotations of the composite sensor package, the respective availability of data inputs at the different deployment locations, and the respective processor capacities and / or capabilities at the different deployment locations.

[0112] At 1212, if a monolith placement is determined, the in-vehicle distributed computing environment places the composite sensor in a single placement location with the required data input and processing power, capacity, priority, etc.

[0113] At 1214, if a modular deployment is determined, the in-vehicle distributed computing environment deploys the composite sensor as multiple modular components in a deployment of multiple deployment locations having the required data input and processing power, capacity, priority, etc.

[0114] At 1216, the in-vehicle distributed computing environment executes the modular components in a runtime environment of the in-vehicle distributed computing environment that provides a communication layer to encode data communicated between the modular components.

[0115] FIG. 13 illustrates a flowchart of a response to a failed ECU executed in an in-vehicle distributed computing environment according to some embodiments.

[0116] At 1302, the in-vehicle distributed computing environment detects a fault in an electronic control unit (ECU) of the vehicle.

[0117] At 1304, the in-vehicle distributed computing environment generates or replicates a synthetic sensor module / synthetic sensor to implement the tasks previously performed on the failed ECU.

[0118] At 1306, the in-vehicle distributed computing environment implements the generated or replicated synthetic sensor module / synthetic sensor on the non-faulty ECU to perform the tasks previously performed on the faulty ECU.

[0119] At 1308, the in-vehicle distributed computing environment provides uninterrupted operation of the vehicle for at least a threshold time or distance until the failed ECU can be evaluated / replaced.

[0120] FIG. 14 illustrates a flowchart for reshuffling physical sensors and / or modules of physical sensors in an in-vehicle distributed computing environment, according to some embodiments.

[0121] At 1402, the orchestration component of the in-vehicle distributed computing framework detects whether additional physical sensors have been added to one or more placement locations (e.g., ECUs) in the vehicle or whether additional placement locations (e.g., additional ECUs) have been added to the vehicle.

[0122] At 1404, the orchestration component of the in-vehicle distributed computing framework detects whether communication from an existing physical sensor is lost at one or more deployment locations (e.g., ECU).

[0123] At 1406, the orchestration component of the in-vehicle distributed computing framework detects changes in load at one or more deployment locations (e.g., ECUs), resources available to logic modules, etc.

[0124] At 1408, the orchestration component of the in-vehicle distributed computing framework determines whether one or more changes in the certification level have been made to the synthetic sensors implemented in the synthetic sensor orchestration environment or in association with physical sensors that share sensor data with the synthetic sensor orchestration environment.

[0125] At 1410, the orchestration component of the in-vehicle distributed computing framework determines opportunities to optimize the use of the vehicle's compute resources. For example, when a reliable network connection is available, logic modules may be shuffled to virtual ECUs to extend the life of the ECUs onboard the vehicle. As an example, when the vehicle is charging at a location with reliable network connectivity, certain operations such as battery or inverter control that need to remain active during the charging process may be relocated to virtual ECUs. This may significantly reduce the active operating time of ECUs in the vehicle by shifting overnight charging times to virtual ECUs.

[0126] At 1412, the orchestration component of the in-vehicle distributed computing framework determines whether the number or significance of the changes made at 1402, 1404, 1406, 1408, or 1410 exceed one or more thresholds that trigger execution of a reshuffle operation. In a reshuffle operation, the orchestration component of the in-vehicle distributed computing framework may reevaluate placement of already implemented composite sensors or composite sensor modules (e.g., input modules or logic modules) to determine whether placing one or more of the already implemented composite sensors / modules in a different placement location would improve system performance, increase the qualification level of the composite sensors, or otherwise perform better. If the one or more thresholds are not exceeded at 1412, the orchestration component of the in-vehicle distributed computing framework continues to monitor for additional changes.

[0127] If one or more thresholds at 1412, 1414 through 1418 are exceeded, the orchestration component of the in-vehicle distributed computing framework determines the effect of relocating one or more already deployed synthetic sensors / modules to a different deployment location. For example, the synthetic sensor to be relocated may provide optional inputs to the relocated synthetic sensor or to synthetic sensors in domains in which the synthetic sensor is already deployed. Additional optional inputs such as these may enable at least some of the synthetic sensors to be upgraded to a higher certification level.

[0128] At 1420, the orchestration component of the in-vehicle distributed computing framework selects a placement for each of the composite sensors / modules to be rearranged as part of the reshuffle based on the determined effects.

[0129] Example of a Computer System Any of a variety of computer systems may be configured to implement processes associated with the synthetic sensor service, the synthetic sensor orchestration environment, the in-vehicle distributed computing environment, the ECU, the provider network implementing the synthetic sensor service, the operating system in the vehicle or device, or any other component of the above figures. For example, FIG. 15 is a block diagram illustrating an example computer system that implements some or all of the techniques described herein, according to some embodiments. In various embodiments, the synthetic sensor service, the synthetic sensor orchestration environment, the provider network implementing the synthetic sensor service and other cloud services, the operating system in the vehicle or device, or any other component of the above figures, FIGS. 1-14, may each include one or more computer systems 1400 as shown in FIG. 15.

[0130] In the illustrated embodiment, computer system 1500 includes one or more processors 1510 connected to a system memory 1520 via an input / output (I / O) interface 1530. Computer system 1500 further includes a network interface 1540 connected to I / O interface 1530. In some embodiments, computer system 1500 may be exemplary of a server implementing enterprise logic or downloadable applications, although in other embodiments a server may include more, fewer, or different elements than computer system 1500.

[0131] In various embodiments, the computing device 1500 may be a uniprocessor system including one processor, or a multiprocessor system including several processors 1510A-1510N (e.g., two, four, eight, or another suitable number). The processors 1510A-1510N may include any suitable processor capable of executing instructions. For example, in various embodiments, the processors 1510A-1510N may be processors implementing any of a variety of instruction set architectures (ISAs), such as the x86, PowerPC, SPARC, or MIPS ISAs, or any other suitable ISA. In some embodiments, the processors 1510A-1510N may include special purpose processors, such as graphics processing units (GPUs), application specific integrated circuits (ASICs), and the like. In a multiprocessor system, each of the processors 1510A-1510N may typically, but not necessarily, implement the same ISA.

[0132] The system memory 1520 may be configured to store program instructions and data accessible by the processor(s) 1510A-1510N. In various embodiments, the system memory 1520 may be implemented using any suitable memory technology, such as static random access memory (SRAM), synchronous dynamic RAM (SDRAM), non-volatile / flash memory, or any other type of memory. In the illustrated embodiment, the program instructions and data implementing one or more desired functions, such as the methods, techniques, and data described above, are shown stored in the system memory 1520 as code (i.e., program instructions) 1525 and data 1526.

[0133] In one embodiment, I / O interface 1530 may be configured to coordinate I / O traffic between processors 1510A-1510N, system memory 1520, and any peripheral devices in the device, including network interface 1540 or other peripheral interfaces. In some embodiments, I / O interface 1530 may perform any necessary protocol conversions, timing conversions, or other data conversions to convert data signals from one component (e.g., system memory 1520) into a format suitable for use by another component (e.g., processor 1510). In some embodiments, I / O interface 1530 may include support for devices attached via various types of peripheral buses, such as, for example, variations of the Peripheral Component Interconnect (PCI) bus standard or the Universal Serial Bus (USB) standard. In some embodiments, I / O interface 1530 may include support for devices attached via an automotive CAN bus, or the like. In some embodiments, the functionality of I / O interface 1530 may be split into two or more separate components, such as, for example, a northbridge and a southbridge. Also, in some embodiments, some or all of the functionality of I / O interface 1530, such as the interface to system memory 1520, may be incorporated directly into processors 1510A-1510N.

[0134] Network interface 1540 may be configured to allow data to be exchanged between computing device 1500 and other devices 1560 attached to one or more networks 1550. In various embodiments, network interface 1540 may support communications over any suitable wired or wireless general data network, such as, for example, an Ethernet network, a cellular network, a Bluetooth network, a Wi-Fi network, an ultra-wideband network type, etc. Additionally, network interface 1540 may support communications over a telecommunications / telephony network, such as an analog voice network or a digital fiber communications network, over a storage area network, such as a Fibre Channel SAN, or over any other suitable type of network and / or protocol.

[0135] In some embodiments, the system memory 1520 may be an embodiment of a computer-readable (i.e., computer-accessible) medium configured to store program instructions and data as described above for implementing the corresponding method, system, and apparatus embodiments. However, in other embodiments, the program instructions and / or data may be received, transmitted, or stored on different types of computer-readable media. Generally speaking, the computer-readable medium may include a non-transitory storage medium or memory medium, such as a magnetic or optical medium, e.g., a disk or DVD / CD, coupled to the computing device 1500 via the I / O interface 1530. The one or more non-transitory computer-readable storage media may also include any volatile or non-volatile medium, such as RAM (e.g., SDRAM, DDR SDRAM, RDRAM, SRAM, etc.), ROM, etc., that may be included in some embodiments of the computing device 1500 as the system memory 1520 or another type of memory. Additionally, the computer-readable medium may include a transmission medium or a signal, such as an electrical signal, an electromagnetic signal, or a digital signal, transmitted over a communication medium, such as a network and / or a wireless link, such as may be implemented via the network interface 1540. Some or all of the computing devices as shown in FIG. 15 may be used in various embodiments to implement the described functionality, e.g., software components executing on various different devices and servers may cooperate to provide the functionality. In some embodiments, some of the described functionality may be implemented using storage devices, network devices, or various types of computer systems. The term "computing device" as used herein refers to at least all of these types of devices, but is not limited to these types of devices.

[0136] Embodiments of the present disclosure can be described in light of the following provisions.

[0137] Clause 1. A system including a plurality of electronic control units (ECUs) installed or configured to be installed in a vehicle, one or more of the ECUs stores program instructions for implementing an in-vehicle distributed computing environment; The in-vehicle distributed computing environment includes: configured to receive a synthetic sensor package for deployment on the vehicle, the synthetic sensor package including synthetic sensor logic and a mapping of the synthetic sensor; The position of the composite sensor is Respective availability of data inputs for the mapping of the synthetic sensor package at each of the ECUs; and a resource capacity of each of said respective ones of said ECUs to execute the logic included in said composite sensor package; and configured to determine based on The system is configured to deploy the composite sensor as two or more modular components located on two or more different ECUs, the respective ECUs, the two or more modular components collectively implementing the composite sensor within the in-vehicle distributed computing environment.

[0138] Clause 2. The two or more modular components of the composite sensor include: a logic module disposed in a first ECU of the two or more ECUs; and an input module disposed in a second ECU of the two or more ECUs; Including, 2. The system of claim 1, wherein the logic module and the input module execute in a runtime environment of the in-vehicle distributed computing environment.

[0139] Clause 3. The input module comprises: Platform Abstraction Layer, Hardware Abstraction Layer, or Vehicle Abstraction Layer, receiving information from one or more data sources of the second ECU via providing the information from the data source of the second ECU to the logic module of the first ECU via a communication layer of the in-vehicle distributed computing environment; 3. The system of claim 2, configured to:

[0140] Clause 4. The in-vehicle distributed computing environment further comprises: configured to receive another composite sensor package for deployment within the vehicle, the other composite sensor package including logic for and a mapping for the other composite sensor; The position of the other composite sensor is the availability of data inputs for the mapping of the other synthetic sensor packages at each of the ECUs; and a resource capacity of each of the ECUs for executing the logic of the other composite sensor package; and configured to determine based on The system of any one of clauses 1 to 3, configured to place the other synthetic sensor at a determined placement location on a single ECU of the ECU.

[0141] Clause 5. The in-vehicle distributed computing environment comprises: an orchestration component configured to determine a synthetic sensor placement based on a current capacity or capability of the ECUs and based on an availability of data inputs at each of the ECUs; a runtime environment in which one or more synthetic sensor modular components execute; a monitoring component configured to implement a standardized interface to collect capacity or capability information from the ECU; a communications layer configured to format communications according to one or more protocols of the in-vehicle distributed computing environment; 5. The system of any of clauses 1 to 4, comprising:

[0142] Clause 6. One or more non-transitory computer-readable media storing program instructions, The program instructions, when executed on or among one or more processors, cause the one or more processors to implement an in-vehicle distributed computing environment; The in-vehicle distributed computing environment includes: configured to receive a composite sensor package for deployment on a vehicle, the composite sensor package including composite sensor logic and a mapping for the composite sensor; The position of the composite sensor is Respective availability of data inputs for the mapping of the synthetic sensor packages at respective deployment locations within the in-vehicle distributed computing environment; and the resource capacity or capability of each of said respective deployment locations within said in-vehicle distributed computing environment; and configured to determine based on the one or more non-transitory computer-readable media configured to deploy the composite sensor as two or more modular components deployed at two or more different ones of the deployment locations within the in-vehicle distributed computing environment, the two or more modular components collectively implementing the composite sensor within the in-vehicle distributed computing environment.

[0143] Clause 7. The in-vehicle distributed computing environment further comprises: configured to receive another synthetic sensor package for deployment within the vehicle, the other synthetic sensor package including logic and mapping; configured to determine whether the other composite sensor should be deployed in a single location as an unsplit composite sensor or in two or more different deployment locations as two or more modular components of the other composite sensor; Based on the above decision, deploying the other synthetic sensor as the unsplit synthetic sensor at the single deployment location within the in-vehicle distributed computing environment; or deploying the other synthetic sensor as the two or more modular components located at the two or more different deployment locations within the in-vehicle distributed computing environment; 6. One or more non-transitory computer-readable media as described in clause 5, configured to:

[0144] Clause 8. One or more non-transitory computer-readable media according to clause 6 or clause 7, wherein the respective deployment locations within the in-vehicle distributed computing environment include different respective electronic control units (ECUs) within the vehicle.

[0145] Article 9. The different ECU is different types of processors included in said different ECUs; or a different number of processors included in each of the different ECUs; 9. One or more non-transitory computer-readable media as described in clause 8 having different respective resource capacities or capabilities based at least in part on

[0146] Clause 10. The different ECUs having the different types of processors, Central Processing Unit (CPU), A graphics processing unit (GPU), or General purpose graphics processing unit (GPGPU), one or more non-transitory computer-readable media as described in clause 9, including different ones of:

[0147] Clause 11. Each of said different ECUs: the vehicle domain in which each of said ECUs is located; or Sensor data provided to each of the ECUs from a sensor connected to the ECU; 11. One or more non-transitory computer-readable media as described in any of clauses 8 to 10, having different respective availability of data input based at least in part on

[0148] Clause 12. The two or more modular components of the composite sensor include at least one logic module; and At least one input module, Including, The at least one input module receives information from one or more data sources at the location of the input module, Platform Abstraction Layer, Hardware Abstraction Layer, or Vehicle Abstraction Layer, configured to receive via One or more non-transitory computer-readable media described in any of clauses 6 to 11, configured to provide the information from the data source at the location of the at least one input module to a logic module at a different location via a communication layer of the in-vehicle distributed computing environment.

[0149] Clause 13. The two or more modular components of the composite sensor further include an additional input module disposed at a third location; the at least one input module is disposed in a second position; One or more non-transitory computer-readable media as described in clause 12, wherein the at least one input module and the additional input module provide information from data sources at the second location and the third location to the logic module located at the first location.

[0150] Clause 14. The at least one logic module comprises: a first portion disposed at a location including an electronic control unit (ECU) having a first type of processor; and a second portion located at a different location including a different electronic control unit (ECU) having a second type of processor; Including, One or more non-transitory computer-readable media as described in clause 12, wherein the first and second portions of the at least one logic module and the at least one input module execute in a runtime environment of the in-vehicle distributed computing environment.

[0151] Article 15. The in-vehicle distributed computing environment comprises: Multiple vehicles manufactured by multiple different manufacturers, Multiple vehicle components produced by different manufacturers, or a plurality of vehicles manufactured by a plurality of different vehicle manufacturers, each of the vehicles including a plurality of vehicle components manufactured by a different manufacturer; 15. The one or more non-transitory computer-readable media of any of clauses 6 to 14, configured to provide a uniform deployment environment for a synthetic sensor for deployment in a

[0152] Article 16. The in-vehicle distributed computing environment comprises: A first runtime environment, and A second runtime environment, Including, The one or more non-transitory computer-readable media of any of clauses 6 to 15, wherein the second runtime environment is configured to comply with one or more safety standards such that a synthetic sensor deployed in the second runtime environment satisfies the safety standards.

[0153] Clause 17. The available placement locations for the composite sensor include: 17. The one or more non-transitory computer-readable media of any of clauses 6 to 16, further comprising deployment in a virtual electronic control unit (vECU) implemented in hardware external to the vehicle and connected to the vehicle via a network connection.

[0154] Clause 18. The in-vehicle distributed computing environment is further configured to, in response to a failure of an electronic control unit (ECU) in the vehicle, implement a synthetic sensor in another non-faulty ECU in the vehicle; 18. The one or more non-transitory computer-readable media of any of clauses 6 to 17, wherein the implemented synthetic sensor includes a logic module that performs a task previously performed by the failed ECU.

[0155] Clause 19. The one or more non-transitory computer-readable media of clause 18, wherein the synthetic sensor performing a task previously performed by the failed ECU prevents interruption to operation of the vehicle for at least a threshold time or distance.

[0156] Clause 20. The one or more non-transitory computer-readable media of any of clauses 6 to 19, wherein the in-vehicle distributed computing environment is further configured to automatically relocate the composite sensor or the two or more modular components of the composite sensor to another deployment location in response to a change in the in-vehicle distributed computing environment.

[0157] Clause 21. The change in the in-vehicle distributed computing environment comprises: Add another synthetic sensor, a change in the availability of existing or additional inputs to the synthetic sensor; a change in the qualification level of said composite sensor; or changes in resource availability at said deployment location or at alternative deployment locations;

[0026] 20. One or more non-transitory computer-readable media as set forth in claim 20, including one or more of the following:

[0158] Clause 22. Receiving a composite sensor package in an on-board distributed computing environment of a vehicle, the composite sensor package including a composite sensor logic and a mapping of the composite sensor; The position of the composite sensor is Respective availability of data inputs for the mapping of the synthetic sensors at respective deployment locations within the in-vehicle distributed computing environment; and a resource capacity of each of said respective deployment locations of said in-vehicle distributed computing environment; and deploying the composite sensor as two or more modular components deployed at two or more different ones of the deployment locations within the in-vehicle distributed computing environment, the two or more modular components collectively implementing the composite sensor within the in-vehicle distributed computing environment; A method comprising:

[0159] The various methods illustrated in the figures and described herein represent exemplary embodiments of the methods. The methods may be implemented manually in software, hardware, or a combination thereof. Any method order may be changed, and various elements may be added, rearranged, combined, omitted, modified, etc. For example, in one embodiment, the method may be implemented by a computer system including a processor executing program instructions stored in a computer-readable storage medium coupled to the processor. The program instructions may be configured to implement the functions described herein (e.g., functions of data transfer tools, various services, databases, devices and / or other communication devices, etc.).

[0160] Various modifications and variations may be made, as would be apparent to one skilled in the art having the benefit of this disclosure. All such modifications and variations are intended to be included, and therefore the above description should be considered in an illustrative rather than a limiting sense.

[0161] Various embodiments may further include receiving, transmitting, or storing instructions and / or data executed in accordance with the foregoing description of computer-accessible media. Generally, computer-accessible media may include storage media or memory media, such as magnetic or optical media, e.g., disks or DVDs / CD-ROMs, volatile or non-volatile media, such as RAM (e.g., SDRAM, DDR, RDRAM, SRAM, etc.), ROM, etc., and transmission media or signals, such as electrical, electromagnetic, or digital signals conveyed over a communication medium, such as a network and / or a wireless link.

Claims

1. A system including a plurality of electronic control units (ECUs) installed or configured to be installed in a vehicle, One or more of the ECUs store program instructions for implementing an in-vehicle distributed computing environment; The in-vehicle distributed computing environment includes: configured to receive a synthetic sensor package for deployment on the vehicle, the synthetic sensor package including synthetic sensor logic and a mapping of the synthetic sensor; The position of the composite sensor is data inputs available to each of said ECUs and required for mapping said composite sensor; and a resource capacity of each of said ECUs to execute the logic included in the composite sensor package; and configured to determine based on The system is configured to deploy the composite sensor as two or more modular components located on two or more different ECUs of the respective ECUs, the two or more modular components collectively implementing the composite sensor within the in-vehicle distributed computing environment.

2. The two or more modular components of the composite sensor include: a logic module disposed in a first ECU among the two or more ECUs; and an input module disposed in a second ECU of the two or more ECUs; Including, The system of claim 1 , wherein the logic module and the input module execute in a runtime environment of the in-vehicle distributed computing environment.

3. The input module includes: information from one or more data sources of the second ECU; Platform Abstraction Layer, Hardware Abstraction Layer, or Vehicle Abstraction Layer, Received via providing the information from the data source of the second ECU to the logic module of the first ECU via a communication layer of the in-vehicle distributed computing environment; The system of claim 2 , configured to:

4. The in-vehicle distributed computing environment includes: an orchestration component configured to determine a synthetic sensor placement based on a current capacity or capability of the ECUs and based on data inputs available at each of the ECUs; a runtime environment in which one or more synthetic sensor modular components execute; a monitoring component configured to implement a standardized interface to collect capacity or capability information from the ECU; a communications layer configured to format communications according to one or more protocols of the in-vehicle distributed computing environment; The system according to claim 1 , comprising:

5. One or more non-transitory computer-readable media storing program instructions, The program instructions, when executed on or among one or more processors, cause the one or more processors to implement an in-vehicle distributed computing environment; The in-vehicle distributed computing environment includes: configured to receive a composite sensor package for deployment on a vehicle, the composite sensor package including composite sensor logic and a mapping for the composite sensor; The position of the composite sensor is Data inputs available at each location in the in-vehicle distributed computing environment and required for mapping the synthetic sensor; and the resource capacity or capability of each of said respective deployment locations within said in-vehicle distributed computing environment; and configured to determine based on The one or more non-transitory computer-readable media are configured to deploy the composite sensor as two or more modular components deployed at two or more different ones of the deployment locations within the in-vehicle distributed computing environment, the two or more modular components collectively implementing the composite sensor within the in-vehicle distributed computing environment.

6. The in-vehicle distributed computing environment further comprises: configured to receive another synthetic sensor package for deployment within the vehicle, the other synthetic sensor package including logic and mapping; configured to determine whether the other composite sensor should be deployed in a single location as an unsplit composite sensor or in two or more different deployment locations as two or more modular components of the other composite sensor; Based on the above decision, placing the other synthetic sensor as the unsplit synthetic sensor at the single location within the in-vehicle distributed computing environment; or deploying the other synthetic sensor as the two or more modular components located at the two or more different deployment locations within the in-vehicle distributed computing environment; The one or more non-transitory computer-readable media of claim 5 .

7. 7. The one or more non-transitory computer-readable media of claim 5 or claim 6, wherein the respective deployment locations within the in-vehicle distributed computing environment include different respective electronic control units (ECUs) within the vehicle.

8. Each of the different ECUs is the vehicle domain in which the respective ECU is located; or sensor data provided to each of the ECUs from a sensor connected to the ECU; 10. The one or more non-transitory computer readable media of claim 7, having different respective available data inputs based at least in part on:

9. The two or more modular components of the composite sensor include: at least one logic module; and At least one input module; Including, The at least one input module receives information from one or more data sources at the location of the input module, Platform Abstraction Layer, Hardware Abstraction Layer, or Vehicle Abstraction Layer, configured to receive via 9. The one or more non-transitory computer-readable media of claim 5, configured to provide the information from the data source at the location of the at least one input module to a logic module at a different location via a communication layer of the in-vehicle distributed computing environment.

10. the two or more modular components of the composite sensor further include an additional input module disposed at a third location; the at least one input module is disposed in a second position; 10. The one or more non-transitory computer-readable media of claim 9, wherein the at least one input module and the additional input module provide information from data sources at the second location and the third location to the logic module located at the first location.

11. The at least one logic module comprises: a first portion disposed at a location including an electronic control unit (ECU) having a first type of processor; and a second portion located at a different location including a different electronic control unit (ECU) having a second type of processor; Including, 10. The one or more non-transitory computer-readable media of claim 9, wherein the first and second portions of the at least one logic module and the at least one input module execute in a runtime environment of the in-vehicle distributed computing environment.

12. The in-vehicle distributed computing environment includes: Multiple vehicles manufactured by multiple different manufacturers, Multiple vehicle components produced by different manufacturers, or a plurality of vehicles manufactured by a plurality of different vehicle manufacturers, each of the vehicles including a plurality of vehicle components manufactured by a different manufacturer; 12. The one or more non-transitory computer-readable media of claim 5, configured to provide a uniform deployment environment for a synthetic sensor for deployment at a

13. The in-vehicle distributed computing environment includes: A first runtime environment, and A second runtime environment, Including, 13. The one or more non-transitory computer-readable media of claim 5, wherein the second runtime environment is configured to comply with one or more safety standards such that a synthetic sensor disposed in the second runtime environment satisfies the safety standards.

14. 14. The one or more non-transitory computer-readable media of claim 5, wherein the available placement locations for the synthetic sensor further include placement in a virtual electronic control unit (vECU) implemented in hardware external to the vehicle and connected to the vehicle via a network connection.

15. The in-vehicle distributed computing environment includes:

15. The one or more non-transitory computer-readable media of claim 5, further configured to automatically relocate the composite sensor or the two or more modular components of the composite sensor to another deployment location in response to a change in the in-vehicle distributed computing environment.

Citation Information

Patent Citations

  • Mapping method and device for virtualized wireless sensor network, and storage medium

    CN110933728A

  • Elastic Computing for In-Vehicle Computing Systems

    JP2022526178A