Timestamping Asynchronous Sensor Measurements
By generating timestamp synchronous asynchronous sensor measurements at the GNSS receiver, the GNSS and INS data synchronization problem is solved, improving the accuracy and reliability of the navigation system, and simplifying system complexity and cost.
Patent Information
- Application Number
- CN202011494374.5
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2019-12-19
- Filing Date
- 2020-12-17
- Publication Date
- 2025-07-18
- Estimated Expiration
- 2040-12-17
AI Technical Summary
In the prior art, data synchronization problems between Global Navigation Satellite Systems (GNSS) and Inertial Navigation Systems (INS) lead to error accumulation and navigation system output differences, and improved methods are needed to synchronize GNSS and INS data for easy filter combination and processing.
By receiving sensor measurement data and signal pulses at the GNSS receiver, a time stamp is generated to synchronize the asynchronous sensor measurements, the signal pulses are used to represent the time of the sensor measurements, and a time stamp is generated in the time domain of the GNSS receiver, synchronization of the sensor measurements and GNSS data is achieved.
The synchronization of GNSS and INS data is realized, which reduces error accumulation, improves the accuracy and reliability of the navigation system, and simplifies system complexity and cost.
Smart Images

Figure CN113009541B_ABST
Abstract
Description
Technical Field
[0001] The present invention relates to the field of Global Navigation Satellite System (GNSS) receivers. More specifically, the present invention relates to timestamping sensor measurements for use in a GNSS receiver. Background Art
[0002] Combining the navigation information provided by one type of navigation system with the navigation information provided by another different type of navigation system can provide significant advantages compared to standalone navigation systems. These include improved accuracy and reliability, and thus an increased level of navigation safety for many applications.
[0003] GNSS is a satellite navigation system that utilizes signals transmitted from a constellation of satellites orbiting the Earth. The user interface of this navigation system includes a GNSS receiver, which is configured to receive satellite signals and process them to determine the user's position, velocity, and precise time (PVT). Typically, a GNSS receiver achieves this by processing the received satellite signals to generate code and carrier phase measurements, which are forwarded to a filter to derive a navigation solution. GNSS has proven to be highly accurate. However, since GNSS signals are electromagnetic signals, they can be blocked or degraded by objects such as mountains, tall buildings, and thick foliage, as well as due to interference. Therefore, standalone GNSS cannot always provide continuous and reliable navigation information.
[0004] Another type of navigation system that is widely used is an Inertial Navigation System (INS). INS uses sensors to detect acceleration and rotation rate information, which is used to estimate relative position and velocity over time using dead reckoning. The sensors can be included in an Inertial Measurement Unit (IMU). The IMU uses integrated inertial sensors (e.g., accelerometers and gyroscopes) to measure linear and angular motion. Although INS can provide continuous information about position and velocity without interruption, its drawback is that errors tend to accumulate over time, resulting in the position and velocity estimates deviating from their correct values.
[0005] Combining GNSS and INS not only provides an efficient way to limit the errors of INS, but also allows the possibility of determining position and velocity during periods when GNSS signals are interrupted. Another advantage of combining GNSS and INS is that the time required to initially acquire position and velocity can be significantly reduced.
[0006] There are various ways to combine and process the independent measurement data from GNSS and INS. Most methods use a Kalman filter or a Least Squares (LSQ) filter implemented by a processor to perform sensor fusion, i.e., the fusion of measurements from a GNSS receiver and measurements from an IMU. However, for successful sensor fusion, the measurements need to essentially correspond to the same time point.
[0007] When a sensor fusion filter compares the outputs of two different navigation systems (i.e., GNSS and INS), it is important to ensure that those outputs correspond to the same validity time (i.e., the time at which the measurements are made). Otherwise, differences in the navigation system outputs due to the time lag between them will be wrongly attributed by the filter to the state of the filter, thus corrupting the estimation of those filter states.
[0008] Existing methods for the problem of synchronizing measurements from two independent navigation systems rely on using some kind of timing reference signal output by the GNSS receiver and feeding that signal to the IMU. For example, in addition to position and velocity, many GNSS receivers also provide a one pulse per second (1PPS) signal synchronized to GNSS time at their output. The GNSS receiver calculates and updates pseudorange, pseudorange rate, carrier phase, carrier range, etc. at the leading edge of this 1PPS signal. This reference signal can be fed to the IMU and subsequently used to timestamp the IMU data or synchronize the IMU data to GNSS time. However, these methods require that the IMU be synchronizable to an external signal or at least require the introduction of additional components (e.g., an integrated processor) from which the IMU measurement output can be synchronized to the 1PPS or stable frequency reference from the GNSS receiver. In either case, an additional connection to the IMU is required, which increases complexity and cost.
[0009] Accordingly, there is a need for an improved method to synchronize GNSS and INS data so that they can be combined and processed by a filter. SUMMARY OF THE INVENTION
[0010] The present invention provides a navigation receiver, a navigation system, and a method for timestamping asynchronous sensor measurements. According to an embodiment, a method for timestamping one or more asynchronous sensor measurements in a global navigation satellite system receiver is provided. Sensor measurement data is received at a first port. A signal pulse is received at a second port. The signal pulse represents the measurement time of the received sensor measurement data according to a first time domain. Based on the received signal pulse, a timestamp according to a second time domain is generated. The generated timestamp is associated with the received sensor measurement data in the second time domain.
[0011] According to another embodiment, a global navigation satellite system receiver is configured to timestamp one or more asynchronous sensor measurements. The receiver has a first port configured to receive sensor measurement data from at least one sensor. The receiver further has a second port configured to receive a signal pulse. The signal pulse represents the measurement time of the received sensor measurement data according to a first time domain. The circuitry of the receiver is configured to generate a timestamp according to a second time domain based on the received signal pulse. The processor of the receiver is configured to associate the generated timestamp in the second time domain with the received sensor measurement data.
[0012] According to another embodiment, a global navigation satellite system receiver is configured to timestamp one or more asynchronous sensor measurements. The receiver has a first port configured to receive sensor measurement data from at least one sensor. The receiver has a second port configured to receive a signal pulse. The signal pulse represents the measurement time of the received sensor measurement data according to a first time domain. The processor of the receiver is configured to generate a timestamp according to a second time domain based on the received signal pulse and associate the generated timestamp in the second time domain with the received sensor measurement data. BRIEF DESCRIPTION OF THE DRAWINGS
[0013] The present invention is described with reference to its specific exemplary embodiments and accordingly to the accompanying drawings, in which:
[0014] Figure 1 FIG. shows a schematic block diagram of a navigation receiver for timestamping asynchronous sensor measurement data according to an embodiment of the present invention;
[0015] Figure 2 FIG. shows a schematic block diagram of a navigation system for timestamping asynchronous sensor measurement data according to an embodiment of the present invention;
[0016] Figure 3 FIG. shows a timing diagram for timestamping asynchronous measurement data according to an embodiment of the present invention;
[0017] Figure 4 FIG. shows a schematic block diagram of a navigation receiver with an interrupt and timer system for timestamping asynchronous measurement data according to an embodiment of the present invention;
[0018] Figure 5 FIG. shows a schematic block diagram of a navigation receiver for timestamping asynchronous measurement data using an application specific integrated circuit according to an embodiment of the present invention;
[0019] Figure 6 FIG. shows a flowchart of a method for timestamping asynchronous sensor measurement data in a global navigation satellite system receiver according to an embodiment of the present invention. Detailed Implementation Modes
[0020] Reference will now be made in detail to exemplary embodiments, examples of which are illustrated in the accompanying drawings. The following description refers to the accompanying drawings, where like reference numerals in different drawings denote the same or similar elements unless otherwise specified. The implementations set forth in the following disclosure are consistent with aspects related to the present invention as set forth in the appended claims.
[0021] The present invention provides a global navigation satellite system (GNSS) receiver, a navigation system, and a method for timestamping asynchronous sensor measurements or sensor measurement data. Since sensors can operate independently of the GNSS navigation receiver and are in many cases external to the GNSS receiver, sensor measurements are not necessarily generated according to the time base of the GNSS receiver, i.e., they are asynchronous. Different from existing methods, the present invention solves the data synchronization problem between GNSS and other navigation data sources (such as inertial navigation systems (INS)) by implementing synchronization at the GNSS navigation receiver.
[0022] Sensor measurements (or more specifically, sensor measurement data) can be obtained from one or more sensors. For example, one or more sensors can be part of a sensor system, such as an inertial measurement unit (IMU) of an inertial navigation system (INS). Other examples of inertial sensors that can be used in combination with the present invention include angular rate sensors, gyroscopes, or accelerometers. The methods described below are equally applicable to measurements or measurement data originating from other types of sensors (such as wheel counters or odometers and speedometers). Sensor measurements are initially in the time domain of the sensor that generates the measurement (e.g., the time domain of an IMU, a wheel counter, an odometer, etc.). According to aspects of the present invention, sensor measurements are synchronized in time with measurements from GNSS satellite signals by receiving an electrical timing signal from the sensor at the GNSS receiver. This timing signal can be generated by the sensor and contains signal pulses indicating that new sensor measurement data is available. These pulses in the electrical timing signal are used to timestamp the sensor measurements in the time domain of the GNSS receiver (i.e., local receiver time). The GNSS receiver achieves this by generating a timestamp in its time base using the signal pulses in the timing signal to assign to the received sensor measurements. Thereafter, the sensor measurements and GNSS navigation signals can be fused together, for example, using a Kalman filter or a least squares (LSQ) filter implemented by a processor according to known sensor fusion methods.
[0023] The sensor can obtain sensor measurements or measurement data independently and autonomously with respect to the GNSS navigation receiver. For example, the sensor or the sensor system itself can control the time at which the measurement is made. Alternatively, the sensor or system can be prompted to make the measurement by some other external device or source. In either case, there is no need for the electrical timing signal generated by the GNSS receiver to prompt the sensor or sensor system to provide measurement information. This is because, for example, the GNSS navigation receiver is informed by the sensor or another source that new sensor measurement data is available. The GNSS navigation receiver is also informed of the time at which the measurement was made.
[0024] More specifically, some sensor systems (e.g., commercially available IMUs) provide a signal that indicates when new data from measurements made by the sensors at the IMU output is ready. Measurements made by the on-board accelerometer and gyroscope are fed to the IMU output. The new measurement data can be stored in a register in the IMU, and a separate "data ready" signal can be output at a pin provided by the IMU. For example, the BMI160 IMU available from Bosch Sensortec GmbH provides several low-latency data-driven interrupts at pins on the IMU in addition to physical-type interrupts. One such interrupt is the "data ready" interrupt that is triggered each time a new data sample from the on-board accelerometer and gyroscope is available.
[0025] The inventors of the present invention have recognized that such a "data ready" signal can be used to timestamp asynchronous sensor measurements directly at the GNSS receiver without the need to feed a synchronization signal (e.g., 1PPS or some other reference signal) routed from the GNSS receiver to the sensor or sensor component (e.g., IMU).
[0026] The sensor measurements can be in the native format of the sensor or sensor system that generated the measurements. However, some GNSS receivers may require the sensor measurement data to be in a predetermined format to facilitate processing by the GNSS receiver. According to an embodiment of the present invention, a pre-processor can be provided that is configured to convert the native format of the sensor measurement data into a predetermined data message format that is compatible with the GNSS receiver. For example, the message can be formatted according to a proprietary protocol supported by the GNSS receiver (e.g., the UBX-ESF message format supported by u-blox's GNSS receivers). In addition to the payload, the formatted message can include a synchronization character in the message preamble, a message identification (ID) string, a length byte indicating the length of the payload, and one or more check sums that appear at the end of the message for error correction. Those skilled in the art will recognize that such a formatted message can be constructed in different ways.
[0027] Figure 1Schematic block diagram of a GNSS navigation receiver 100 for timestamping asynchronous sensor measurement data according to an embodiment of the present invention is shown. The navigation receiver 100 includes a processor 102 configured to perform the processing functions described herein.
[0028] As Figure 1 shown, the GNSS receiver 100 includes a port 104 configured to receive a timing signal 106. For example, the timing signal 106 (e.g., the above-mentioned "data ready" signal) can be generated by a sensor or a sensor system (e.g., an IMU). The navigation receiver 100 further includes a port 108 configured to receive sensor measurement data 110 from a sensor or a sensor system. Thus, the GNSS receiver 100 has at least two inputs including port 104 and port 108. The port 104 is configured to receive an indication (e.g., a pulse or a signal level transition in the signal 106) indicating that new sensor measurement data is available. This also indicates the time of measurement according to the time domain of one or more sensors. The port 108 is configured to receive the sensor measurement data 110. For example, the port 104 for receiving the timing signal 106 can be connected to a single pin of the integrated circuit of the receiver 100. Alternatively, the port 104 can include a differential signal input port. For example, the port 108 for receiving the sensor measurement 110 can be in the form of a serial port interface (SPI), an RS232 serial port, or a USB port.
[0029] The processor 102 uses the signal pulses (or more specifically, signal level transitions) appearing on the electrical timing signal 106 received by the receiver 100 to timestamp the input asynchronous sensor measurements or measurement data. The processor 102 will know the relationship between the frequency and phase of the clock signal used internally by the processor 102 and the GNSS time. This is because the receiver 100 can also use the processor 102 to process GNSS satellite signals and derive the position, velocity, and GNSS time. Thus, the timing signal pulses can be detected by the processor 102 and converted into a timestamp of the absolute time or GNSS time corresponding to the sensor measurement data. Alternatively, the timing signal pulses can be detected by the processor 102, so a timestamp is generated in the time domain corresponding to the local time of the GNSS receiver (i.e., local receiver time). Since the relationship between the local receiver time and the GNSS time will be known, the timestamp of the GNSS time can be derived later during sensor fusion.
[0030] As described in more detail below, the processor 102 of the receiver 100 associates the timestamp generated from the signal pulses received at the port 104 with the corresponding sensor measurement data received at the port 108. For example, the generated timestamp and the corresponding measurement can be stored in a memory (not shown) at the receiver 100 in association with each other.
[0031] Figure 2 Schematic block diagram of a navigation system 200 for timestamping asynchronous sensor measurement data according to another embodiment of the present invention is shown. As Figure 2 shown, the system may include one or more sensors 112, which may generate a timing signal 106 and measurement data 110, also as Figure 1 shown. Generating a timestamp for sensor measurement data received by the navigation system 200 is performed in a similar manner as described above in connection with Figure 1 . Figure 2 One or more of the sensors 112 may include an angular rate sensor, a gyroscope, an accelerometer, a wheel counter or odometer, and / or a speedometer. For example, the sensor 112 may include a sensor system such as an IMU, or the sensor 112 may be integrated within an IMU. One or more sensors 112 may be external to the GNSS receiver 100, or alternatively may be integrated into the GNSS module that includes the receiver 100.
[0032] Figure 2 An optional preprocessor 114 is also shown in. One or more sensors 112 may generate sensor measurement data 110 in a format native to the sensor 112. The preprocessor 114 is configured to format the sensor measurement data to generate formatted sensor measurement data 116 that is compatible with the receiver 100. For example, the formatted sensor measurement data 116 generated by the preprocessor 110 may conform to a predetermined data message format that the receiver 100 is configured to receive. Since the timestamp is associated with each such message after it is received by the receiver 100, the message itself does not need to contain timing information representing any measurement time of the sensor measurement data 110. The formatted sensor measurement data 116 is transmitted to the receiver 100 via port 108.
[0033] Over time, a large number of pairs of timestamps and associated sensor measurements may be stored in the memory. This stored information may be retrieved from the memory and used, for example, to combine inertial measurements with GNSS satellite signals of the same validity time by performing sensor fusion to generate resulting navigation information. The resulting navigation information 120 (e.g., one or more of global position, velocity, and GNSS time, collectively referred to as "PVT") may be available at the output of the receiver 100.
[0034] As Figure 2 shown, the navigation receiver 100 is configured to receive GNSS satellite signals from GNSS satellites via antenna 118. The receiver 100 is also configured to process the received GNSS satellite signals to generate a navigation solution 120. The navigation solution generated by the receiver 100 may include the calculated position and velocity of the receiver 100 and the determination of precise GNSS time.
[0035] The processor 102 can execute these processing functions. More specifically, the receiver 100 receives satellite signals from one or more GNSS constellations and processes these signals to provide GNSS measurements such as pseudorange, carrier phase, pseudorange rate, etc. to the navigation filter. For example, the processor 102 can implement a filter for determining a navigation solution based on GNSS measurements, such as a Kalman filter or a least squares (LSQ) filter.
[0036] Figure 3 A timing diagram for timestamping asynchronous measurement data according to an embodiment of the present invention is shown. Figure 3 The relationship between the timing signal 106 and the formatted data message 302 containing sensor measurement data is shown. More specifically, as Figure 3 shown, the timing signal 106 can include a normally low voltage level (e.g., logic "zero"), which transitions to a high voltage level (e.g., logic "one") when sensor measurement data is ready at one or more sensors 112 ( Figure 2 ), and then after a short period (i.e., the duration of the signal pulse), the timing signal 106 returns to the low voltage level. This is represented by the synchronization pulse 304 that appears in the timing signal 106 in Figure 3 . In an embodiment, the leading edge of each signal pulse 304 is consistent with the availability of sensor measurement data. Although Figure 3 the timing signal 106 is shown as normally including a low voltage level when no sensor measurement data 110 is available, those skilled in the art will quickly recognize that a high voltage level (e.g., logic "one") can equally be used for the timing signal 106, in which case, when new measurement data 110 is available at the sensor 112, the signal 106 transitions to a low voltage level (e.g., logic "zero"). In other words, a timing signal opposite to that shown in Figure 3 can alternatively be used.
[0037] Due to the processing time of the pre-processor 114 ( Figure 2 ), the formatted data message 302 will typically be available after a delay. Therefore, the signal pulse 304 (or its leading edge) of the timing signal 106 can indicate that new sensor measurement data is obtained a short time before the corresponding formatted data message 302 is available to the receiver 100. The receiver 100 uses the signal pulse 304 (e.g., the leading edge of the pulse) of the timing signal 106 to generate a timestamp and subsequent processing, because each pulse 304 indicates the time when one or more sensors 112 made the corresponding measurement.
[0038] In embodiments without a pre-processor 114, each signal pulse 304 may also arrive at the receiver 100 slightly earlier than the corresponding measurement data 110. Thus, in most cases, whether or not a pre-processor 114 is employed, each timing pulse 304 from the sensor 112 will arrive at the receiver 100 slightly earlier than the corresponding measurement data 110( Figure 1 ) or the formatted measurement data 116( Figure 2 ), such that the processor 102 associates (i.e., links) the most recently received signal pulse 304 with the next received sensor measurement data 110 or formatted measurement data 116. However, the present invention may also be configured to associate the received signal pulses 304 with sensor measurement data 110 or formatted sensor measurement data 116 received simultaneously. The present invention may also be configured to associate later received pulses 304 with earlier received sensor measurement data 110 or formatted measurement data 116.
[0039] As described herein and shown in Figure 2 , the timing signal 106 is generated by the sensor 112. However, it will be apparent that the timing signal 106 may be generated by another means. For example, the pre-processor 114 may generate the timing signal 106 provided to the receiver 100. The pre-processor 114 may accomplish this by generating a signal pulse each time new measurement data 110 is received from the sensor 112. Alternatively, some other circuit or device may generate the timing signal 106 by monitoring the measurement data 110 generated by the sensor 112 and generating a pulse each time new measurement data is available. Those skilled in the art will understand that the generation of the timing signal 106 and the signal pulses 304 contained therein may be accomplished in a variety of ways by a variety of means.
[0040] Multiple different embodiments of the GNSS receiver described herein may be implemented. Figure 4 An embodiment of a GNSS navigation receiver 100 according to the present invention is shown, which includes an interrupt and timing system of a processor 102 internal to the receiver 100 for timestamping asynchronous sensor measurements. This embodiment takes advantage of the interrupt and timestamp counter (TSC) present in many modern processors. Thus, this embodiment has the advantage of requiring minimal additional hardware beyond such a processor. Thus, in this embodiment, timestamping is implemented using a combination of software and off-the-shelf hardware.
[0041] As Figure 4As shown, the processor 102 includes an Arithmetic Logic Unit (ALU) 402, a controller 404, and a register bank 406 that includes a Timestamp Counter (TSC) 408. The TSC 408 is a register in which the counter value stored therein increments with each clock cycle of the processor 102. For example, the clock signal may be a 48 MHz clock signal generated by a clock 410 connected to the processor 102. Since this clock signal is used to increment the TSC 408 and thus indicates the time associated with the processor 102, the TSC 408 can thus provide the highest resolution timing information available to the processor 102. When a synchronization pulse 304 is received via the timing signal 106, the TSC 408 can be used to timestamp the sensor measurement data 110, 116 with the synchronization pulse 304. Also, since the processor 102 can be the same processor used to process GNSS satellite signals, the processor 102 will know the frequency and phase relationship between the clock signal and GNSS time. Thus, the processor 102 is capable of providing timestamps in the GNSS time base. If needed, for example, if the fusion processing requires the timestamp to be in a specific format different from the format generated by the TSC 408, the value from the TSC 408 can be converted to a timestamp.
[0042] As Figure 4 shown, the receiver 100 also includes one or more memory units 412, which are used by the processor 102 for the various functions described herein, including storing software, pairs of timestamps and corresponding measurements, and temporary values from various computations for performing sensor fusion. The register bank 406 can also be used to temporarily store the sensor measurement data 110, 116 received from one or more sensors and make the measurement data available to the processor 102 for storing the sensor measurement data with corresponding timestamps in the memory 412 and for performing sensor fusion.
[0043] According to Figure 4 the embodiment shown, the timing signal 106 can be applied to an interrupt input (e.g., a pin) of the processor 102 and then received by the processor controller 404 to trigger an interrupt. An interrupt is generated in response to a signal pulse 304 (or more specifically, its leading edge or falling edge) in the timing signal 106. The processor 102 then runs an appropriate interrupt service software routine (i.e., an "interrupt handler") according to a memory location vector accessed in response to the interrupt. If more than one interrupt is waiting to be processed, the interrupt handler prioritizes the interrupts and saves them in a queue.
[0044] The action on the interrupt input that triggers an interrupt on the processor controller 404 can be set using the interrupt mode of the specific interrupt that the controller 404 is monitoring. For example, the "RISING" interrupt mode activates the interrupt on the rising edge that appears at the interrupt pin. However, the interrupt mode can also be set to "FALLING", which activates the interrupt on the falling edge that appears at the pin. The interrupt mode can be selected according to the nature of the timing signal generated by the sensor.
[0045] The processor controller 404 is configured to run an interrupt service routine each time an interrupt condition is met. This software can be written in assembly code, C, C++, or a combination thereof. The interrupt service routine can include code that causes the counter value in the TSC 408 to be copied to a register in the register bank 406 or to the memory 412. This stored counter value can then be used as a timestamp for the corresponding asynchronous sensor measurement data 110 or 116 received at port 108 of the receiver 100. Alternatively, the stored counter value can be converted into a timestamp. The program can also cause the corresponding sensor measurement data 110 or 116 to be retrieved from the register bank 406 and the measurement to be stored in, for example, the memory 412 in association with the corresponding timestamp. The measurement data and the corresponding timestamp can thus be stored together in the memory 412 for later processing by an additional software program, which, for example, combines GNSS measurements with the sensor measurement data by performing sensor fusion. Such a software program can also be stored in the memory 412.
[0046] In another embodiment of the GNSS receiver, timestamping according to the present invention can be implemented using an application-specific integrated circuit (ASIC) that interfaces between the internal processor of the receiver and one or more sensors (e.g., IMU). Figure 5 An embodiment of a navigation receiver 100 according to an embodiment of the present invention is shown, which is configured to perform timestamping on asynchronous sensor measurement data using the ASIC 502.
[0047] As Figure 5 shown, the ASIC 502 and the processor 102 can be integrated into the GNSS receiver 100 together with the memory 412 and the clock 410. The ASIC 502 preferably includes dedicated inputs (which can be input / output (IO) pins configured to receive external signals such as the timing signal 106), one or more edge detection circuits (hereinafter, edge detectors 504A, 504B), a timer counter 506, and one or more counter registers 508A, 508B.
[0048] The dedicated inputs of the ASIC 502 can be implemented as general-purpose input / output (GPIO) pins and coupled to the inputs of one or more edge detectors 504A, 504B. This input is configured to receive the timing signal 106 from one or more sensors (e.g., IMU). In this case, port 104 can include the dedicated inputs of the ASIC 502. For example, each of the edge detectors 504A, 504B can be implemented using two latches arranged in a master-slave setup to provide a flip-flop circuit. Although Figure 5 not explicitly shown in Figure 5 , those skilled in the art will understand that the flip-flop circuit or latch can be clocked with a clock signal. Thus, in one embodiment, the edge detectors 504A, 504B can be clocked with a signal from the clock 410. In one embodiment, the edge detector 504A can be configured to detect the rising edge of the signal pulse 304 in the timing signal 106, while the edge detector 504B can be configured to detect the falling edge of the signal pulse 304 in the timing signal 106. Thus, the ASIC 502 is preferably compatible with sensors (e.g., inertial sensors and IMUs) that generate a data-ready pulse whose leading or falling edge corresponds substantially to the moment of availability of the measurement data. The output of the edge detector 504A is coupled to the counter register 508A, and the output of the edge detector 504B is coupled to the counter register 508B. The counter 506 can be substantially a register whose stored value increments on each cycle of the clock signal. The counter registers 508A, 508B can be used to store the current counter value from the timer counter 506, which can be used as a timestamp for the corresponding sensor measurement data received by the GNSS receiver 100. When a signal pulse 304 in the timing signal 106 is detected by one of the edge detectors 504A or 504B, the current counter value of the counter 506 is copied into one of the registers 508A or 508B. This copying can be triggered on the rising or falling edge of the signal pulse on the timing signal 106.
[0049] The counter 506 can be substantially a register whose stored value increments on each cycle of the clock signal. Although not necessarily, the clock signal used by the counter 506 is preferably the same clock signal used by the processor 102 in this embodiment, so it is a measure of the local time of the processor 102. As Figure 4As in the embodiments of, this may be a 48 MHz clock signal generated by clock 410. If the same processor is also used to process GNSS satellite signals, the relationship between GNSS time and the local time of the GNSS receiver will be known. If needed, for example, if the fusion processing requires the timestamp to be in a specific format different from the format generated by timer counter 506, the value from timer counter 506 can be converted to a timestamp. Counter 506 can be implemented in hardware, software, or a combination thereof. Each edge detector 504A and 504B is connected not only to counter 506 but also to the corresponding register. The connection to counter 506 triggers copying the value in counter 506, and the other connection tells ASIC 502 where the copy of the counter value should be stored (e.g., among registers 508A and 508B).
[0050] Similar to Figure 4 the embodiments of, Figure 5 processor 102 of may include a processor controller 404 configured to control the operation of receiver 100 by executing software programs and routines. Figure 5 Processor 102 may also include one or more memory units 412, which may be used by processor 102 for the various functions described herein, including storing software and temporary values from various calculations for combining GNSS measurements derived from satellite signals with sensor measurement data, for example, by performing sensor fusion as described herein. Figure 5 Processor 102 of may also include a register bank 406. Register bank 406 may be configured to receive sensor measurement data 110 or formatted sensor measurement data 116 from one or more sensors and make the measurement data available to controller 404.
[0051] When a new measurement arrives at GNSS receiver 100 via port 108, this may trigger processor 102 to collect the timestamp from ASIC 502. In this case, processor 102 may continuously monitor port 108 for new sensor measurement data. In the case where the sensor measurement is formatted (e.g., as a UBX-ESF message), the information contained in the formatted message may trigger a function call that causes processor 102 to save the measurement and the associated timestamp in memory 412. In this case, the IO task monitors the input buffer connected to port 108 and processes the data therein in sequence based on the input message content to trigger the appropriate message processing function.
[0052] Alternatively, depending on the configuration of interface port 108 (e.g., Universal Serial Bus (USB)), the fact that a message arrives at port 108 may trigger processor 102 to retrieve and process the message. In this case, the arrival of the message essentially acts as an interrupt to processor 102 to retrieve and process the measurement data from port 108. Another way to inform processor 102 when a new timestamp (and measurement) is ready to be retrieved is by implementing a software event triggered by one of edge detectors 504A or 504B. More specifically, each time an edge detector detects a signal pulse, this triggers a software event that informs processor 102 to retrieve the timestamp (and measurement).
[0053] Once processor 102 is notified of a new sensor measurement, controller 404 runs a software program that causes sensor measurement data 110, such as that contained in register bank 406, and the corresponding timestamp contained in counter register 508A or 508B to be retrieved. Each measurement and corresponding timestamp are preferably stored in association with each other (e.g., together at the same location in memory 412). Thus, the measurements and corresponding timestamps can be used for later processing by another software that performs sensor fusion.
[0054] Processor 102 needs to know which of registers 508A or 508B it should retrieve the current timestamp from. In one embodiment, processor 102 is informed thus because the formatted message received at port 108 and containing the sensor measurement may also include a specified field indicating whether the expected signal pulse is a rising edge or a falling edge. As Figure 5 shown, register 508A corresponds to the rising edge, while register 508B corresponds to the falling edge. In this way, processor 102 is informed which register contains the corresponding timestamp for the received measurement data. For example, if the specified field in formatted message 302 indicates that the expected signal pulse 304 has a falling edge corresponding to sensor measurement data 110, then processor 102 will be instructed to retrieve the timestamp from register 508B.
[0055] Although Figure 5 two registers 508A and 508B are shown, there may be more such registers. For example, there may be two pairs of edge detectors, with one pair of edge detectors 504A, 504B connected to a first pin (e.g., port 104), as Figure 5As shown. A second pair of edge detectors (not shown) may be connected to another input pin (e.g., a port not shown). The structures of port 104, edge detectors 504A, 504B, and registers 508A, 508B are substantially repetitive. Thus, for example, there may be a total of four such registers, each of which is triggered by a corresponding edge detector. In this case, the processor 102 can be informed as such because the formatted message received and containing the sensor measurement at port 108 may also include a designated field identifying the pin (e.g., port 104) at which the signal pulse arrives. This port identification, together with an indication of whether the expected signal pulse is a rising edge or a falling edge, can be used to identify a particular one of the registers that contains the corresponding timestamp for the received measurement data.
[0056] Alternatively, the timestamp may be selected from an appropriate one of the registers based on the register in which the value last changed. Thus, the processor 102 can monitor all the timestamp registers (e.g., Figure 5 508A, 508B in
[0057] ), and the selection of the register from which the timestamp should be retrieved is based on which register was last updated.
[0058] When the sensor measurement together with the associated timestamp is combined with GNSS measurements for fusion, the timestamp (i.e., the counter value) can be converted to a format compatible with the GNSS measurement timestamp. This conversion can be performed either before or after the timestamp is stored together with the sensor measurement. Figure 5(not shown)) is a clock. In this case, GNSS measurements are processed by the processor 102 according to its own clock signal. Therefore, first, the time domain of the sensor measurement data 110 is converted to the time domain of the ASIC 502 according to the timestamps generated by the counter 508. However, this timestamp then needs to be converted to a third time domain (i.e., the time domain of the processor 102 and the GNSS measurements). This can be achieved, for example, by a synchronization structure between the registers 508A, 508B and the processor 102 or by software running on the processor 102 (or a combination of both). Those skilled in the art will understand that this synchronization between two clocks (e.g., the clock 410 in the GNSS receiver 100 and CLK2 (not shown)) can be achieved in various ways by various means.
[0059] In Figure 4 and Figure 5 the illustrated embodiments, the processor 102 associates the generated timestamps with the received sensor measurement data, as described herein. The processor 102 may also perform GNSS fusion, where the timestamps and the associated sensor measurement data are fused with the GNSS measurement data. Alternatively, GNSS fusion may be performed by a different processor. In this case, the timestamp may need to be converted to the time domain of the additional processor. For example, the timestamp may be converted from the time domain of the processor 102 to the time domain of the additional processor.
[0060] In Figure 4 and Figure 5 the two illustrated embodiments, storing the timestamps in the memory may occur before or after the GNSS receiver receives the corresponding sensor measurement data. Regardless of the order in which they are stored in the memory, the timestamps and the corresponding measurement data are associated with each other. This can be achieved by storing both the timestamp and the corresponding measurement data at the same or adjacent memory locations in the memory or in some other way that maintains the logical connection between the timestamp and its corresponding measurement data. For example, the timestamps generated in the time domain of the receiver 100 may be embedded in the sensor measurement data 110, 116 and then stored in the memory 412.
[0061] Additionally in Figure 4 and Figure 5 the two illustrated embodiments, the association of the generated timestamps with the sensor measurement data 110, 116 may occur before the signal pulse 304 of the timing signal 106, after the signal pulse, or even simultaneously with the received sensor measurement data 100, 116 and the signal pulse.
[0062] For controlling Figure 4 and Figure 5The processor 102 may execute software for performing the functions described herein in available assembly code, C, C++, or any other suitable programming language or combination thereof.
[0063] Figure 6 FIG. 600 is a flow chart showing a method for timestamping one or more asynchronous sensor measurements in a global navigation satellite system receiver according to an embodiment of the present invention. The method 600 may be performed, for example, by Figures 1 to 2 and Figures 4 to 5 any of the embodiments shown. As Figure 6 shown, in step 602, sensor measurement data 110, 116 is received. The sensor measurement data may be received at a first port (e.g., port 108). In step 604, a signal pulse 304 is received. The signal pulse may be received via a timing signal 106 received at a second port (e.g., port 104). A pulse in the timing signal represents a measurement time according to a first time domain of the sensor measurement. The first time domain may be the time domain of one or more sensors (e.g., inertial sensors) or a sensor system (e.g., IMU) performing the measurement. The measurement time may be represented by a transition of a leading edge or a falling edge of the signal pulse. In step 606, a timestamp is generated based on the received signal pulse according to a second time domain. The second time domain may correspond to GNSS time. In step 608, the timestamp generated in the second time domain in step 606 is associated with the sensor measurement data received in step 602.
[0064] In another optional step, the timestamp generated in the second time domain may be stored in a memory in association with the corresponding sensor measurement data. Optionally, the sensor measurement data may be preprocessed to generate at least one formatted sensor measurement data message including the sensor measurement data.
[0065] The method may further include the steps of: receiving global navigation satellite signals, and calculating one or more of a position, a velocity, and a global navigation satellite system time using GNSS measurements derived from the satellite signals and sensor measurement data received at the GNSS receiver.
[0066] The foregoing detailed description of the invention has been presented for purposes of illustration and is not intended to be exhaustive or to limit the invention to the disclosed embodiments. Accordingly, the scope of the invention is defined by the appended claims.
Claims
1. A global navigation satellite system receiver (100) configured to timestamp one or more asynchronous sensor measurements, the receiver comprising: A first port (108) configured to receive sensor measurement data (110, 116) from at least one sensor (112); A second port (104) configured to receive a signal pulse (304), wherein the signal pulse (304) represents a measurement time of the received sensor measurement data (110, 116) in a first time domain; A circuit (502) configured to generate a timestamp in a second time domain based on the received signal pulse (304), wherein the second time domain corresponds to the local time of the receiver, and wherein the local time of the receiver has a known relationship with the global navigation satellite system time; and A processor (102) configured to associate the generated timestamp in the second time domain with the received sensor measurement data (110, 116).
2. The receiver according to claim 1, wherein, The processor is further configured to store the generated timestamp together with the associated sensor measurement data in a memory (412).
3. The receiver according to claim 1 or 2, wherein, The circuit includes an edge detector (504A, 504B) configured to detect at least one of a rising edge and a falling edge in the signal pulse (304).
4. The receiver according to claim 3, wherein, The circuit further includes a counter (506) and counter registers (508A, 508B), and the circuit is configured to store a counter value in the register (508A, 508B) when at least one of the rising edge and the falling edge is detected in the signal pulse (304), wherein the counter value represents the measurement time of the sensor measurement data (110, 116) in the second time domain.
5. The receiver according to claim 1 or 2, wherein, The processor is further configured to receive satellite signals from the global navigation satellite system and calculate one or more of a global position, a speed, and a global navigation satellite system time (120) based on the received satellite signals and the received sensor measurement data.
6. A navigation system (200) comprising the receiver according to claim 1 and a pre-processor (114) configured to receive the sensor measurement data (110) from the at least one sensor (112), and the pre-processor is configured to generate at least one formatted sensor measurement data message (302) containing the sensor measurement data (116).
7. A global navigation satellite system receiver configured to timestamp one or more asynchronous sensor measurements, the receiver comprising: A first port (108) configured to receive sensor measurement data (110, 116) from at least one sensor (112); A second port (104) configured to receive a signal pulse (304), wherein the signal pulse (304) represents a measurement time of the received sensor measurement data (110, 116) according to a first time domain; and A processor (102) configured to generate a timestamp according to a second time domain based on the received signal pulse (304) and associate the generated timestamp in the second time domain with the received sensor measurement data (110, 116), wherein the second time domain corresponds to the local time of the receiver, and wherein the local time of the receiver has a known relationship with the global navigation satellite system time.
8. The receiver according to claim 7, wherein, The processor is further configured to store the generated timestamp together with the associated sensor measurement data in a memory (412).
9. The receiver according to claim 7 or 8, wherein, The processor is further configured to generate an interrupt and execute an interrupt handler in response to receiving at least one of a rising edge and a falling edge in the signal pulse.
10. The receiver according to claim 9, wherein, The interrupt handler stores a counter value in the memory (412), and the counter value represents the measurement time of the sensor measurement data (110, 116) in the second time domain.
11. The receiver according to claim 7 or 8, wherein, The processor is further configured to receive a satellite signal from the global navigation satellite system and calculate one or more of a global position, a speed, and the global navigation satellite system time (120) based on the received satellite signal and the received sensor measurement data.
12. A navigation system (200) comprising the receiver according to claim 7 and a pre-processor (114) configured to receive the sensor measurement data (110) from the at least one sensor (112), and the pre-processor (114) is configured to generate at least one formatted sensor measurement data message (302) containing the sensor measurement data (116).
13. A method for timestamping one or more asynchronous sensor measurements in a global navigation satellite system receiver, the method comprising the steps of: Receiving sensor measurement data (602) from at least one sensor at a first port; Receiving a signal pulse at a second port, wherein the signal pulse represents a measurement time of the received sensor measurement data according to a first time domain (604); Generating a timestamp according to a second time domain based on the received signal pulse (606), wherein the second time domain corresponds to the local time of the receiver, and wherein the local time of the receiver has a known relationship with the global navigation satellite system time; and Associating the generated timestamp in the second time domain with the received sensor measurement data (608).
14. The method according to claim 13, the method further comprising: Storing the generated timestamp together with the associated sensor measurement data in a memory (412).
15. The method according to claim 13 or 14, further comprising: Detect at least one of a rising edge and a falling edge in the signal pulse using an edge detector and store a counter value in a register when at least one of the rising edge and the falling edge is detected in the signal pulse, where the counter value represents the measurement time of the sensor measurement data in the second time domain.
16. The method according to claim 13 or 14, the method further comprising: Generate an interrupt in response to receiving at least one of a rising edge and a falling edge in the signal pulse and execute an interrupt handler, where the interrupt handler stores a counter value in a memory, the counter value representing the measurement time of the sensor measurement data in the second time domain.
17. The method according to claim 13 or 14, further comprising: Receive satellite signals from the global navigation satellite system and calculate one or more of a global position, a speed, and a global navigation satellite system time (120) based on the satellite signals and the received sensor measurement data.
18. The method according to claim 13 or 14, further comprising: Preprocess the sensor measurement data to generate at least one formatted sensor measurement data message (302) containing the sensor measurement data (116).
Citation Information
Patent Citations
SDINS / GPS combined guidance system time synchronism and synchronous data extraction method
CN101105401A
Multi-sensor-unit time synchronization method and system
CN107659367A