MIDDLEWARE SUPPORT FOR FAULT-TOLERANT EXECUTION IN AN ADAPTIVE PLATFORM FOR A VEHICLE
20200133267 ยท 2020-04-30
Assignee
Inventors
Cpc classification
B60W50/14
PERFORMING OPERATIONS; TRANSPORTING
H04L67/125
ELECTRICITY
H04W4/44
ELECTRICITY
G08G1/096725
PHYSICS
H04L67/567
ELECTRICITY
H04L67/1095
ELECTRICITY
G08G1/096741
PHYSICS
G08G1/096775
PHYSICS
B60W50/029
PERFORMING OPERATIONS; TRANSPORTING
B60W2050/0292
PERFORMING OPERATIONS; TRANSPORTING
International classification
G05D1/00
PHYSICS
B60W50/14
PERFORMING OPERATIONS; TRANSPORTING
B60W50/029
PERFORMING OPERATIONS; TRANSPORTING
Abstract
A method for controlling a vehicle includes: establishing, by a vehicle controller, a connection between a client and a plurality of servers, the plurality of servers includes a primary server and at least one replica server, the at least one replica server is a replica of the primary server; making, by the vehicle controller, a data request about a given service to the plurality of servers; in response to the data request, receiving reply data from the plurality of servers to the data request via a middleware; fusing, by the middleware, the reply data from the plurality of servers to generate a resulting data; receiving, by the vehicle controller, the resulting data; and controlling, by the client, the vehicle based on the resulting data.
Claims
1. A method, comprising: establishing, by a vehicle controller of a vehicle, a connection between at least one client and a plurality of servers, the plurality of servers includes a primary server and at least one replica server, the at least one replica server is a replica of the primary server; making, by the vehicle controller, a data request about a given service to the plurality of servers; in response to the data request, receiving reply data from the plurality of servers to the data request via a middleware; fusing, by the vehicle controller, the reply data from the plurality of servers to generate a resulting data via the middleware; receiving, by the vehicle controller, the resulting data; and controlling, by the vehicle controller, the vehicle based on the resulting data.
2. The method of claim 1, further comprising generating, by the vehicle controller, a plurality of notifications by the plurality of servers in response to establishing the connection between the at least one client and the plurality of servers.
3. The method of claim 2, further comprising filtering, by the vehicle controller, duplicate notifications from the plurality of notifications generated by the plurality of servers to generate a filtered notification via the middleware.
4. The method of claim 3, further comprising receiving, by the vehicle controller, the filtered notification.
5. The method of claim 4, further comprising registering, by the vehicle controller, a same service of a plurality of services with the middleware.
6. The method of claim 5, further comprising maintaining, by the middleware, a list of instances for the same service of the plurality of services.
7. The method of claim 6, further comprising providing, by the vehicle controller, a fusion strategy to the plurality of servers.
8. The method of claim 7, further comprising providing, by the vehicle controller, a filter strategy to the plurality of servers.
9. The method of claim 8, further comprising activating, by the vehicle controller, an alarm in response to receiving the filtered notification from the middleware.
10. A system, comprising: a vehicle including a vehicle body and a vehicle controller attached to the vehicle body, wherein the vehicle controller is programmed with a middleware to establish a connection between at least one client and a plurality of servers, the plurality of servers includes a primary server and at least one replica server; wherein the vehicle controller is programmed to: establish communication between at least one client and the plurality of servers; make a data request about a service to the plurality of servers; in response to the data request, receive reply data from the plurality of servers through the middleware; fuse, by the middleware, the reply data from the plurality of servers to generate a resulting data; and controlling, by the vehicle controller, the vehicle based on the resulting data.
11. The system of claim 10, wherein each of the plurality of servers generates a plurality of notifications in response to establishing the connection between the at least one client and the plurality of servers.
12. The system of claim 11, wherein the middleware filters duplicate notifications from the plurality of notifications generated by the plurality of servers to generate a filtered notification.
13. The system of claim 12, wherein the vehicle controller is programmed to receive the filtered notification.
14. The system of claim 13, wherein each of the plurality of servers registers a same service of a plurality of services with the middleware.
15. The system of claim 14, wherein the middleware maintains a list of instances for the same service of the plurality of services.
16. The system of claim 15, wherein the vehicle controller is programmed to provide a fusion strategy to the plurality of servers.
17. The system of claim 16, wherein the vehicle controller is programmed to provide a filter strategy to the plurality of servers.
18. The system of claim 17, wherein the vehicle controller is programmed to activate an alarm in response to receiving the filtered notification from the middleware.
19. A system, comprising: a vehicle including a vehicle body and a vehicle controller attached to the vehicle body, wherein the vehicle controller is programmed with a middleware to establish a connection between at least one client and a plurality of servers; wherein the vehicle controller is programmed to: establish the connection between the at least one client and a plurality of servers; make a data request about a service to the plurality of servers; in response to the data request, receive reply data from the plurality of servers via the middleware; fuse, by the middleware, the reply data from the plurality of servers to generate a resulting data; receive the resulting data; control the vehicle based on the resulting data; wherein each of the plurality of servers generates a plurality of notifications in response to establishing the connection between the at least one client and the plurality of servers; wherein the middleware filters duplicate notifications from the plurality of notifications generated by the plurality of servers to generate a filtered notification; wherein the vehicle controller is programmed to receive the filtered notification; wherein each of the plurality of servers registers a same service of a plurality of services with the middleware; wherein the middleware maintains a list of instances for the same service of the plurality of services; wherein the vehicle controller is programmed to provide a fusion strategy to the plurality of servers; wherein the vehicle controller is programmed to provide a filter strategy to the plurality of servers; and wherein the vehicle controller is programmed to activate an alarm in response to receiving the filtered notification from the middleware.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0013]
[0014]
[0015]
[0016]
DETAILED DESCRIPTION
[0017] This disclosure is susceptible of embodiment in many different forms. Representative embodiments of the disclosure are shown in the drawings and will herein be described in detail with the understanding that these representative examples are provided as an exemplification of the disclosed principles, not limitations of the broad aspects of the disclosure. To that extent, elements and limitations that are described, for example, in the Abstract, Introduction, Summary, and Detailed Description sections, but not explicitly set forth in the claims, should not be incorporated into the claims, singly or collectively, by implication, inference or otherwise.
[0018] For purposes of the present detailed description, unless specifically disclaimed: the singular includes the plural and vice versa; the words and and or shall be both conjunctive and disjunctive; the words any and all shall both mean any and all; and the words including, containing, comprising, having, and the like, shall each mean including without limitation. Moreover, words of approximation, such as about, almost, substantially, approximately, and the like, may be used herein in the sense of at, near, or nearly at, or within 0-5% of, or within acceptable manufacturing tolerances, or any logical combination thereof, for example. Lastly, directional adjectives and adverbs, such as fore, aft, inboard, outboard, starboard, port, vertical, horizontal, upward, downward, front, back, left, right, etc., may be with respect to a motor vehicle, such as a forward driving direction of a motor vehicle when the vehicle is operatively oriented on a normal driving surface.
[0019] Referring now to the drawings, wherein like reference numbers refer to like features throughout the several views,
[0020] The representative vehicle 10 of
[0021] Communicatively coupled to the telematics unit 14 is a network connection interface 34, suitable examples of which include twisted pair/fiber optic Ethernet switch, internal/external parallel/serial communication bus, a local area network (LAN) interface, a controller area network (CAN), a media-oriented system transfer (MOST), a local interconnection network (LIN) interface, and the like. Other appropriate communication interfaces may include those that conform with ISO, SAE, and IEEE standards and specifications. The network connection interface 34 enables the vehicle hardware 16 to send and receive signals with each other and with various systems and subsystems both within or resident to the vehicle body 12 and outside or remote from the vehicle body 12. This allows the vehicle 10 to perform various vehicle functions, such as controlling vehicle steering, governing operation of the vehicle's transmission, controlling engine throttle, engaging/disengaging the brake system, and other automated driving functions. For instance, telematics unit 14 receives and/or transmits data to/from an ADAS electronic control unit (ECU) 52, an engine control module (ECM) 54, a powertrain control module (PCM) 56, sensor interface module(s) 58, a brake system control module (BSCM) 60, and assorted other vehicle ECUs, such as a transmission control module (TCM), a climate control module (CCM), etc.
[0022] With continuing reference to
[0023] The vehicle controller 36 receives sensor data from one or more sensing devices that use, for example, photo detection, radar, laser, ultrasonic, optical, infrared, or other suitable technology for executing an automated driving operation. In accord with the illustrated example, the vehicle 10 may be equipped with one or more digital cameras 62, one or more range sensors 64, one or more vehicle speed sensors 66, one or more vehicle dynamics sensors 68, and a requisite filtering, classification, fusion and analysis hardware and software for processing raw sensor data. A digital camera 62 may use a charge coupled device (CCD) sensor or other suitable optical sensor to generate images indicating a field-of-view of the vehicle 10, and may be configured for continuous image generation, e.g., at least about 35 images generated per second. By way of comparison, range sensor 64 may emit and detect reflected radio, electromagnetic, or light-based waves (e.g., radar, EM inductive, Light Detection and Ranging (LIDAR), etc.) to detect, for example, presence, geometric dimensions, and/or proximity of an object. Vehicle speed sensor 66 may take on various forms, including wheel speed sensors that measure wheel speeds, which are then used to determine real-time vehicle speed. In addition, the vehicle dynamics sensor 68 may be in the nature of a single-axis or a triple-axis accelerometer, an angular rate sensor, an inclinometer, etc., for detecting longitudinal and lateral acceleration, yaw, roll, and/or pitch rates, or other dynamics related parameter. Using data from the sensing devices 62, 64, 66, 68, the vehicle controller 36 identifies objects within a detectable range of the vehicle 10, and determines attributes of the target object, such as size, relative position, angle of approach, relative speed, etc.
[0024] With reference to
[0025] The plurality of servers 74 includes a primary server 76 and at least one replica server 78. The primary server 76 may be running on a physical computing device including a processor to process requests from and deliver data to the client 70 over the communications network 34 and/or 24. Thus, the primary server 76 is in communication with the client 70 (which may run on the vehicle controller 36) through the communications network 34 and/or 24. The replica server 78 is a replica of the primary server 76 and may be running on a physical computing device including a processor to process requests from and deliver data to the client 70 over the communications network 24. Alternatively or additionally, the replica server 78 may be running on a virtual machine. As used herein, the term replica server means a server that includes the same software (e.g., applications and services) and data as the primary server 76 to provide fault-tolerance to the system 72. In the present disclosure, the term fault-tolerance means a property that enables the system 72 to continue operating properly in the event of the failure of some (or one or more faults within) of its components. For example, because of the replica server 78, the system 72 is capable of continuous operation even if the primary server 76 fails. While
[0026] With reference to
[0027]
[0028] At block 106, the client 70 requests the connection to a service from the middleware layer 84. Next, the method proceeds to block 108. At block 108, the middleware layer 84 establishes a connection between the client 70 and the plurality of servers 74. Then, the method 100 proceeds to block 110. At block 110, the client 70 makes a data request about a given service to the plurality of servers using a remote procedure call (RPC). This data request includes the field/get set data on a given service. Then, the method 100 proceeds to block 112. At block 112, the middleware layer 84 sends the data request from the client 70 to all of the plurality of servers 74 (including the primary server 76 and the replica server(s) 78) in response to the data request from the client 70. Then, the method 100 proceeds to block 114. At block 114, the plurality of servers 74 reply with reply data to the data request from the client 70 (sent through the middleware layer 84). Next, the method 100 proceeds to block 116. At block 116, the middleware layer 84 fuses all of the reply data from the plurality of servers 74 to generate a resulting data. This resulting data is then sent to the client 70. Also at block 116, the vehicle controller 36 controls the vehicle 10 based on the resulting data.
[0029] After block 108, the method 100 also proceeds to block 118. At block 118, the plurality of servers 74 produce notifications (including field notify data and events data). Then, the method 100 proceeds to block 120. At block 120, the middleware layer 84 filters the duplicate notifications produced by the plurality of servers 74 to generate a filtered notification. The filter function of the middleware layer 84 may be based on timestamps and sequence numbers of the data (i.e., the filter strategy). Also at block 120, the client 70 receives the filtered notification. Also at block 120, the client 79 activates an alarm (through the video display device 18 and/or the audio speakers 30) in response to receiving the filtered notification from the middleware layer 84.
[0030] While the best modes for carrying out the teachings have been described in detail, those familiar with the art to which this disclosure relates will recognize various alternative designs and embodiments for practicing the teachings within the scope of the appended claims. The system 74 illustratively disclosed herein may be suitably practiced in the absence of any element which is not specifically disclosed herein. Furthermore, the embodiments shown in the drawings or the characteristics of various embodiments mentioned in the present description are not necessarily to be understood as embodiments independent of each other. Rather, it is possible that each of the characteristics described in one of the examples of an embodiment can be combined with one or a plurality of other desired characteristics from other embodiments, resulting in other embodiments not described in words or by reference to the drawings.