The present disclosure is directed to providing reliable positioning data for autonomous or semi-autonomous vehicles, and, more particularly, to providing reliable positioning data by monitoring global navigation satellite system (GNSS) data.
In some approaches, to enable autonomous or semi-autonomous driving, positioning data (e.g., position, velocity, and altitude data) is provided by a GNSS system (e.g., GPS, BDS, Galileo, GLONASS, etc.) fused with an inertial measurement unit (IMU) and/or other sensor data. For example, GNSS data may be fused with IMU data to provide a vehicle state estimate (VSE) in a loosely, tightly, or deeply coupled fashion. However, if GNSS data is corrupted by interference (e.g., by multi-path interference by nearby buildings) or by a hardware failure, the determined positioning information may not be suitable to enable autonomous or semi-autonomous driving (e.g., Society of Automotive Engineers (SAE) level two and above). Consequently, what is needed are techniques for providing reliable positioning information under a variety of environmental conditions and hardware failure situations.
In accordance with the present disclosure, systems and methods are provided using two separate dead reckoning modules that receive periodic resets from a GNSS+IMU fused output (e.g., a positioning solution) or internal navigation system (INS)-aided GNSS output. Although a GNSS+IMU fused output is discussed, it should be understood that GNSS data may be fused with data from other sensors (e.g., wheel speed sensors, steering angle sensors, etc.). By staggering these resets and by comparing the GNSS+IMU fused output (e.g., VSE sensor fusion) to the output (e.g., positioning solution) of each of the two dead reckoning modules (e.g., which may rely on all of the sensors without GNSS), a GNSS data error may be detected, regardless of when it occurs with respect to the periodic resets.
The method includes determining, using a satellite positioning module, satellite positioning data; periodically resetting a first dead reckoning module, at a first interval, based on the satellite positioning data; and periodically resetting a second dead reckoning module, at a second interval offset from the first interval, based on the satellite positioning data. The method further includes comparing the satellite positioning data to first dead reckoning positioning data of the first dead reckoning module and to second dead reckoning positioning data of the second dead reckoning module, and selecting the satellite positioning data, the first dead reckoning positioning data, or the second dead reckoning positioning data as a vehicle position based on the comparison.
In some embodiments, determining the satellite positioning data may include fusing data from a GNSS module with data from at least one of an IMU, a wheel speed sensor, and a steering angle sensor to determine the satellite positioning data.
In some embodiments, after resetting the first dead reckoning module, the first dead reckoning positioning data may not be based on the GNSS module. In some embodiments, after resetting the second dead reckoning module, the second dead reckoning positioning data may not be based on the GNSS module.
In some embodiments, periods of the first interval and the second interval may be equal, and the second interval may be offset from the first interval by half the period of the first interval.
In some embodiments, comparing the satellite positioning data to the first dead reckoning positioning data of the first dead reckoning module and to the second dead reckoning positioning data of the second dead reckoning module may include determining whether a first difference between the satellite positioning data and the first dead reckoning positioning data or a second difference between the satellite positioning data and the second dead reckoning module exceeds a threshold. In response to determining that neither the first difference or the second difference exceeds the threshold, the satellite positioning data may be selected as the vehicle position. In response to determining that the first difference exceeds the threshold and the second difference does not exceed the threshold, the first dead reckoning positioning data may be selected as the vehicle position. In response to determining that the second difference exceeds the threshold and the first difference does not exceed the threshold, the second dead reckoning positioning data may be as the vehicle position. In response to determining that both of the first difference and the second difference exceed the threshold, the most recently reset data among the first dead reckoning positioning data and the second dead reckoning positioning data may be selected as the vehicle position.
In some embodiments, periodically resetting the first dead reckoning module, at the first interval, based on the satellite positioning data may include resetting the first dead reckoning module to a current value of the satellite positioning data at the time of reset. In some embodiments, periodically resetting the second dead reckoning module, at the second interval, based on the satellite positioning data may include resetting the second dead reckoning module to a current value of the satellite positioning data at the time of reset.
In some embodiments, the method may further include determining second positioning data, based on the selected one of the satellite positioning data, the first dead reckoning positioning data, and the second dead reckoning positioning data; comparing the second positioning data to the selected one of the satellite positioning data, the first dead reckoning positioning data, and the second dead reckoning positioning data to determine if a failure condition exists; and in response to determining that the failure condition exists, selecting the second positioning data as the vehicle position.
In some embodiments, the satellite positioning data, the first dead reckoning position data, and the second dead reckoning positioning data may be determined by a first electronic control unit (ECU), and the second positioning data may be determined by a second ECU different than the first ECU.
A system is provided. The system includes a memory storing instructions and processing circuitry. The processing circuitry is configured to execute the instructions stored in the memory to determine, using a satellite positioning module, satellite positioning data, periodically reset a first dead reckoning module, at a first interval, based on the satellite positioning data, and periodically reset a second dead reckoning module, at a second interval offset from the first interval, based on the satellite positioning data. The processing circuitry is further configured to execute the instructions to compare the satellite positioning data to first dead reckoning positioning data of the first dead reckoning module and to second dead reckoning positioning data of the second dead reckoning module, and select the satellite positioning data, the first dead reckoning positioning data, or the second dead reckoning positioning data as a vehicle position based on the comparison.
In some embodiments, the processing circuitry may be configured to determine, using the satellite positioning module, the satellite positioning data by fusing data from a GNSS module with data from at least one of an IMU, a wheel speed sensor, and a steering angle sensor to determine the satellite positioning data.
In some embodiments, after the first dead reckoning module is reset, the first dead reckoning positioning data may not be based on the GNSS module, and after the second dead reckoning module is reset, the second dead reckoning positioning data may not be based on the GNSS module.
In some embodiments, periods of the first interval and the second interval may be equal, and the second interval may be offset from the first interval by half the period of the first interval.
In some embodiments, the processing circuitry may be configured to compare the satellite positioning data to the first dead reckoning positioning data of the first dead reckoning module and to the second dead reckoning positioning data of the second dead reckoning module by determining whether a first difference between the satellite positioning data and the first dead reckoning positioning data or a second difference between the satellite positioning data and the second dead reckoning module exceeds a threshold, in response to determining that neither of the first difference and the second difference exceed the threshold, selecting the satellite positioning data as the vehicle position, in response to determining that the first difference exceeds the threshold and the second difference does not exceed the threshold, selecting the first dead reckoning positioning data as the vehicle position, in response to determining that the second difference exceeds the threshold and the first difference does not exceed the threshold, selecting the second dead reckoning positioning data as the vehicle position, and in response to determining that both of the first difference and the second difference exceed the threshold, selecting the most recently reset data among the first dead reckoning positioning data and the second dead reckoning positioning data as the vehicle position.
In some embodiments, the processing circuitry may be configured to periodically reset the first dead reckoning module, at the first interval, based on the satellite positioning data by resetting the first dead reckoning module to a current value of the satellite positioning data at the time of reset, and periodically reset the second dead reckoning module, at the second interval, based on the satellite positioning data by resetting the second dead reckoning module to a current value of the satellite positioning data at the time of reset.
In some embodiments, the processing circuitry may be further configured to determine second positioning data, based on the selected one of the satellite positioning data, the first dead reckoning positioning data, and the second dead reckoning positioning data, compare the second positioning data to the selected one of the satellite positioning data, the first dead reckoning positioning data, and the second dead reckoning positioning data to determine if a failure condition exists, and in response to determining that the failure condition exists, select the second positioning data as the vehicle position.
In some embodiments, the satellite positioning data, the first dead reckoning position data, and the second dead reckoning positioning data may be determined by a first ECU, and the second positioning data may be determined by a second ECU different than the first ECU.
A non-transitory computer-readable medium having non-transitory computer-readable instructions encoded thereon is provided. The instructions, when executed by processing circuitry, cause the processing circuitry to determine, using a satellite positioning module, satellite positioning data, periodically reset a first dead reckoning module, at a first interval, based on the satellite positioning data, and periodically reset a second dead reckoning module, at a second interval offset from the first interval, based on the satellite positioning data, compare the satellite positioning data to first dead reckoning positioning data of the first dead reckoning module and to second dead reckoning positioning data of the second dead reckoning module, and select the satellite positioning data, the first dead reckoning positioning data, or the second dead reckoning positioning data as a position of the vehicle based on the comparison.
In some embodiments, execution of the instructions to determine, using the satellite positioning module, the satellite positioning data may further cause the processing circuitry to fuse data from a GNSS module with data from at least one of an IMU, a wheel speed sensor, and a steering angle sensor to determine the satellite positioning data.
In some embodiments, after the first dead reckoning module is reset, the first dead reckoning positioning data may not be based on the GNSS module, and after the second dead reckoning module is reset, the second dead reckoning positioning data is not based on the GNSS module.
In some embodiments, execution of the instructions to compare the satellite positioning data to the first dead reckoning positioning data of the first dead reckoning module and to the second dead reckoning positioning data of the second dead reckoning module may further cause the processing circuitry to determine whether a first difference between the satellite positioning data and the first dead reckoning positioning data or a second difference between the satellite positioning data and the second dead reckoning module exceeds a threshold, in response to determining that neither of the first difference and the second difference exceed the threshold, select the satellite positioning data as the vehicle position, in response to determining that the first difference exceeds the threshold and the second difference does not exceed the threshold, select the first dead reckoning positioning data as the vehicle position, in response to determining that the second difference exceeds the threshold and the first difference does not exceed the threshold, select the second dead reckoning positioning data as the vehicle position, and in response to determining that both of the first difference and the second difference exceed the threshold, select the most recently reset data among the first dead reckoning positioning data and the second dead reckoning positioning data as the vehicle position.
The above and other objects and advantages of the disclosure will be apparent upon consideration of the following detailed description, taken in conjunction with the accompanying drawings, in which like reference characters refer to like parts throughout, and in which:
Vehicle 101 may comprise processing circuitry 102, which may comprise processor 104 and memory 106. Processor 104 may comprise a hardware processor, a software processor (e.g., a processor emulated using a virtual machine), or any combination thereof. In some embodiments, processor 104 and memory 106 in combination may be referred to as processing circuitry 102 of vehicle 101. In some embodiments, processor 104 alone may be referred to as processing circuitry 102 of vehicle 101. Memory 106 may comprise hardware elements for non-transitory storage of commands or instructions, that, when executed by processor 104, cause processor 104 to operate vehicle 101 in accordance with embodiments described above and below. Processing circuitry 102 may be communicatively connected to components of vehicle 101 via one or more wires, or via wireless connection. In some embodiments, vehicle 101 may comprise any of a variety of suitable systems used for controlling and operating a vehicle. For example, vehicle 101 may include vehicle state estimator module 108 for determining positioning information, autonomous driving module 110 for autonomously or semi-autonomously operating vehicle 101, sensor interface 112 connected to a plurality of vehicle sensors (e.g., including IMU(s) 116, speed sensor(s) 118 and steering angle sensor(s) 120), and input/output interface 114 connected to display 120. Although only a single IMU 116, speed sensor 116, and steering angle sensor 120 are shown, it should be understood that vehicle 101 may include a plurality of each of these sensors (e.g., redundant sensors), as explained in greater detail with reference to
As described in further detail below, vehicle state estimator module 108 may determine the positioning data of vehicle 101 and detect and compensate for errors in GNSS data. The determined positioning data may be provided to autonomous driving module 110 to enable autonomous or semi-autonomous driving of vehicle 101.
It should be appreciated that
As shown, ECU-1201 includes satellite positioning module 202 and verification module 204. Satellite positioning module 202 may be in communication with multiple satellites through an antenna (e.g., antenna 206). As shown, satellite positioning module 202 may include GNSS radio frequency (RF) front-end application-specific integrated circuit (ASIC) 208, GNSS measurement engine ASIC 210, and GNSS positioning engine 212 for determining GNSS positioning. Fusion engine vehicle state estimator module 214 may fuse other sensor data from IMU-1216, first wheel speed data 218a (e.g., from a first speed sensor 118), and first steering angle data 220a (e.g., from a first steering angle sensor 120) to provide a VSE (“VSE” in
As shown, verification module 204 may include two separate dead reckoning modules (e.g., first dead reckoning module 222 and second dead reckoning module 224) that receive periodic resets from GNSS+IMU fused output (e.g., “VSE” in
In some embodiments, vehicle state estimator module 200 may further include a second verification module implemented by a separate ECU (ECU-2203). The second verification module may include a dead reckoning module (e.g., ECU-2 dead reckoning module 228) that is periodically reset with the output of the first verification module (verification module 204). Based on this periodically reset position, ECU-2 dead reckoning module 228 may determine a vehicle position based on IMU-2230 and second wheel odometry data (e.g., second wheel speed data 218b and second steering angle data 220b). In some embodiments, the second wheel odometry data may be provided sensors different than the sensors used to provide the first wheel odometry data discussed above. For example, second wheel speed data 218b may be provided from a second speed sensor 118 and second steering angle data 220b may be provided from a second steering angle sensor 120. Put another way, each ECU (e.g., ECU-1 and ECU-2) may have a dedicated set of sensors (e.g., redundant sensors). ECU-2 localization integrity monitor and selector module 232 may compare VSE′ (i.e., the output of ECU-1 localization integrity monitor and selector module 226) with the output of ECU-2 dead reckoning module 228 to determine if an error in ECU-1201 has occurred (e.g., hardware failure, loss of power, etc.). In such a situation, as explained in further detail in
As explained above, the outputs (e.g., positioning solutions) of satellite positioning module 202 (“the fused VSE”) and first and second dead reckoning modules 222, 224 (“DR1” and “DR2” in
In some embodiments, the positioning solution output by verification module 204 (“VSE”′ in
At 502, vehicle state estimator module 200 determines, using a satellite positioning module, satellite positioning data. For example, the vehicle state estimator module 200 fuses GNSS data (e.g., determined by GNSS positioning engine 212 of
At 504, vehicle state estimator module 200 periodically resets a first dead reckoning module (e.g., first dead reckoning module 222 of
At 506, vehicle state estimator module 200 periodically resets a second dead reckoning module (e.g., second dead reckoning module 222 of
At 508, vehicle state estimator module 200 compares the satellite positioning data to first dead reckoning positioning data of the first dead reckoning unit and to second dead reckoning positioning data of the second dead reckoning unit. For example, as shown in
At 510, vehicle state estimator module 200 selects the satellite positioning data, the first dead reckoning positioning data, or the second dead reckoning positioning data as a vehicle position based on the comparison. For example, as shown in
At 512, vehicle state estimator module 200 determines if a failure condition exists. For example, ECU-2203 of
At 514, in response to determining that a failure condition exists (“Yes” at 512), vehicle state estimator module 200 replaces the selected vehicle position (VSE′) with second positioning data (e.g., determined by ECU-2 dead reckoning module 228). For example, vehicle state estimator module 200 may replace the selected vehicle position with data output from a dead reckoning module initialed with the selected vehicle position.
The processes discussed above are intended to be illustrative and not limiting. One skilled in the art would appreciate that the steps of the processes discussed herein may be omitted, modified, combined and/or rearranged, and any additional steps may be performed without departing from the scope of the invention. For example, steps 512 and 514 may be omitted. More generally, the above disclosure is meant to be exemplary and not limiting. Only the claims that follow are meant to set bounds as to what the present invention includes. Furthermore, it should be noted that the features and limitations described in any one embodiment may be applied to any other embodiment herein, and flowcharts or examples relating to one embodiment may be combined with any other embodiment in a suitable manner, done in different orders, or done in parallel. In addition, the systems and methods described herein may be performed in real-time. It should also be noted that the systems and/or methods described above may be applied to, or used in accordance with, other systems and/or methods.
This application claims priority to U.S. Provisional Patent Application No. 63/405,236, filed on Sep. 9, 2022, the entire contents of which is hereby expressly incorporated by reference herein in its entirety.
Number | Date | Country | |
---|---|---|---|
63405236 | Sep 2022 | US |