Patent Description:
Navigation systems mounted on vehicles use inertial sensors (rate gyros and accelerometers) in combination with sensors such as global navigation satellite system (GNSS), magnetometers, altimeters (and possibly other sensors such as radars, cameras, lidars, start trackers, etc) and at least one fast processor to estimate the three-dimensional (3D) position, 3D velocity, and 3D angular orientation or attitude, or vehicle kinematic states, of the vehicle. Navigation systems use filters to fuse the sensor measurements to estimate the vehicle kinematic states. The sensors contribute measurements that can be fused together by the navigation filter to estimate the various vehicle kinematic states. The vehicle attitude (pitch angle and roll angle) can be estimated by the filter and the processor using the angular velocity measured by the rate gyros, the acceleration measured by the accelerometers, and, depending on the vehicle trajectory, the GNSS sensors. The vehicle heading angle can be estimated by the filter and the processor using the angular velocity measured by rate gyros, the local magnetic field measured by the magnetometers, and, depending on the vehicle the trajectory, the vehicle track angle by the GNSS pseudo-range or velocity measurements.

A key requirement for a navigation system is the availability (accuracy, integrity, and continuity) of heading. Heading may be determined by integrating the gyro measurements and bounding the integrated gyro measurements using either a magnetometer or track angle computed from the GNSS pseudorange or velocity measurements. Magnetometer computed heading, however, has two limitations. First, the magnetometer has to be calibrated and magnetic disturbances from the Earth's crust, solar flares, and onboard vehicle sources can cause heading errors that exceed heading requirements. The heading computed using magnetometers mounted on vehicles with rapidly changing local magnetic fields is often inaccurate because the calibration can't keep up with the changing magnetic field. Second, the Earth's magnetic field requires sufficient horizontal resolution to determine heading and the direction of the Earth's magnetic field close to the magnetic poles is nearly vertical. As a result, magnetic heading is unavailable for any flights close to the magnetic poles since GNSS heading computed from pseudorange or velocity measurements requires vehicle maneuvers that don't typically occur during flights. In summary, long duration flights over the poles result in situations where the above described system can't satisfy heading requirements because the heading angle is computed from the vertical rate gyro and it is subject to drift.

Another approach to determine heading is to use the GNSS carrier phase measurements from two or more onboard GNSS antennas that are separated by a known distance called a baseline. GNSS carrier phase heading is computed using the relative distance from the antennas to the GNSS satellites. Using carrier phase measurements, the relative distance from the antennas to the GNSS satellites is the sum of whole integer frequency cycles plus partial integer frequency cycles. GPS carrier phase heading requires the computation of at least one difference between carrier phase measurements and the computation of the whole integer frequency cycles in these differential carrier phase measurements and it is referred to as integer ambiguity resolution. The advantages of GNSS carrier phase heading are that heading is globally available including close to the magnetic poles, during straight trajectory flights, and environments with rapidly changing magnetic fields. For use in navigation systems, the integrity of the integer ambiguity resolution algorithms must be assured. The limitations of GNSS carrier phase heading are that the integer ambiguities must be resolved in the presence of carrier phase noise and multipath noise while the vehicle is on the ground (stationary or moving) or in the air (hovering or moving).

GNSS 3D Attitude Determination using integer ambiguity resolution of carrier phase measurements can be a powerful solution for determining 3D vehicle attitude and, in particular, heading. While the ambiguity resolution problem has been studied extensively, methods to assure the integrity of the solution necessary for commercial aviation applications on the ground and in the air in the presence of carrier phase noise and multipath noise are currently immature at best. Indeed, the integrity of the integer ambiguity resolution algorithms pose the biggest challenge when using GPS carrier phase heading in high-integrity navigation applications. <CIT> relates to systems and methods for vehicle altitude determination. <CIT> relates to a method and system for providing integrity for hybrid altitude and true heading. <CIT> relates to a means for validating an initial determination of integer ambiguity using altitude information from an integrated GPS/IMU apparatus.

The following summary is made by way of example and not by way of limitation. It is merely provided to aid the reader in understanding some of the aspects of the subject matter described. Embodiments provide a receiver based integer ambiguity monitoring system that operates in the presence of carrier phase noise and GNSS multipath noise using GNSS pseudorange and carrier phase measurements. The system detects and excludes faulty GNSS satellite signals and it identifies an optimal set of GNSS satellite signals that should be used to determine heading.

In one embodiment, as defined in independent claim <NUM>, a multiple faulty global navigation satellite signal detecting system is provided. The system includes at least one pair of spaced antennas, said pair of antennas being separated by a baseline, at least one aiding source and processor. The at least one pair of spaced antennas are configured to receive satellite signals from a plurality of satellites. The at least one aiding source is used to generate aiding source position estimate signals and heading rate signals. The processor is in communication with each antenna and the at least one aiding source. The processor is configured to, determine an estimate of a fractional difference in a carrier phase and standard deviation for each satellite signal received by the spaced antennas to generate single-difference signals with noise levels, determine a unit vector in a direction of an associated satellite in north-east-down (NED) coordinates from the received satellite signals and an aiding source position estimate signal from the at least one aiding source, determine difference signals by at least selecting a list of good single-difference signals with noise levels from a previous epoch to use in a current epoch, determine signal blocks, the signal blocks being a collection of subsets of the determined difference signals and a covariance matrix for the difference signals, determine which difference signals are bad by, determining an integer ambiguity vector for the signals in each signal block to generate a phase difference vector, determining estimated NED coordinates for a baseline vector and an associated heading solution from the phase difference vector, comparing at least one of, a determined heading solution with a predicted heading solution based on previous solutions and heading rate signals, a geometry of the determined NED coordinates with satellite coordinates and an estimated baseline length with a known baseline length, and generate a union of good signals from all the good blocks and a complementary set of bad signals based on the comparison.

In another example embodiment, as defined in independent claim <NUM>, a method of detecting multiple faulty global navigation satellite signals is provided. The method includes determining an estimate of a fractional difference in a carrier phase and standard deviation for each satellite signal received by spaced antennas, said spaced antennas being separated by a baseline, to generate single-difference signals with noise levels; determining a unit vector in a direction of an associated satellite in north-east-down (NED) coordinates from the received satellite signals and an aiding source position estimate signal from at least one aiding source; determining difference signals by at least selecting a list of good single-difference signals with noise levels to use in a current epoch; determining signals blocks, the signal blocks being a collection of subsets of the determined difference signals and a covariance matrix for the difference signals, determining which difference signals are bad by, determining an integer ambiguity vector for the signals in each signal block to generate a phase difference vector, determining estimated NED coordinates for a baseline vector and an associated heading solution from the phase difference vector, comparing at least one of, a determined heading solution with a predicted heading solution based on previous solutions, a geometry of the determined NED coordinates with satellite coordinates, and an estimated baseline length with a known baseline length, and generating a union of good signals from all the good blocks and a complementary set of bad signals based on the comparing.

In an example, not being part of the present invention, there is provided a method of detecting multiple faulty global navigation satellite signals is provided. The method includes determining an estimate of a fractional difference in carrier phase and standard deviation between each satellite signal from each satellite of a plurality of satellites received at a pair of spaced antennas; determining a unit vector from each satellite in north-east-down (NED) coordinates associated with each satellite signal; determining NED coordinates of a baseline length between the pair of spaced antennas using a pitch and roll vector from an inertial navigation system; determining a covariance matrix for one of single-difference and double-difference data using the determined estimate of a fractional difference in carrier phase and standard deviation and a select reference signal; building blocks of one of single-difference and double difference data and covariance matrices; determining integer ambiguity estimate baseline vectors for each signal block using one of the single-difference and double difference data and covariance matrices, the determined unit vector from each satellite in NED coordinates associated with each satellite signal and the determined NED coordinates of a baseline length between the pair of spaced antennas using a pitch and roll vector; determining an estimate of heading and residual metrics based on the determined integer ambiguity estimate baseline vectors; identifying at least one of bad signals and good signals using the determined estimate of heading and residual metrics, an identification of signals contained in the building blocks of the one of signal difference and double difference data and stored data; and using only good signals in determining navigation information.

Embodiments can be more easily understood and further advantages and uses thereof will be more readily apparent, when considered in view of the detailed description and the following figures in which:.

In accordance with common practice, the various described features are not drawn to scale but are drawn to emphasize specific features relevant to the subject matter described. Reference characters denote like elements throughout Figures and text.

In the following detailed description, reference is made to the accompanying drawings, which form a part hereof, and in which is shown by way of illustration specific embodiments in which the inventions may be practiced. These embodiments are described in sufficient detail to enable those skilled in the art to practice the embodiments, and it is to be understood that other embodiments may be utilized and that changes may be made without departing from the scope of the present invention as defined by the claims. The following detailed description is, therefore, not to be taken in a limiting sense, and the scope of the present invention is defined only by the claims.

Embodiments provide a receiver based integer ambiguity monitoring system that operates in the presence of carrier phase noise and GNSS multipath noise using GNSS pseudorange and carrier phase measurements. The system detects and excludes faulty GNSS satellite signals and it identifies an optimal set of GNSS satellite signals that should be used to determine heading. Further, embodiments use both carrier phase and pseudorange measurements to detect and exclude any number of faulty GNSS satellite signals to improve and compute the integrity of the resolved integer ambiguities and, as a result, GNSS carrier phase heading. The maximum number of faulty signals that can be identified is a function of the number of GNSS satellite signals that are available at each measurement time epoch.

Currently, GNSS receivers use receiver autonomous integrity monitoring (RAIM) to perform fault detection and exclusion of one faulty GNSS satellite signal to determine position. The RAIM algorithm detects faults by performing consistency checks, in the form of statistical tests, on the pseudorange measurements of at least <NUM> in view GNSS satellites. The RAIM algorithm detects and excludes faults by performing consistency checks, in the form of statistical tests, on the pseudorange measurements of at least <NUM> in view GNSS satellites. RAIM implementations are not unique. However, at its core, RAIM uses <NUM> or <NUM> in-view GNSS satellites to estimate the GNSS position solution. For the remaining in-view GNSS satellites, RAIM computes a pseudorange measurement residual. This residual is compared to a threshold value based on the probability of false alarm to assure the integrity of the measurements.

The limitations of the RAIM algorithms are that they are a function of the GNSS satellite geometry and the number of in view GNSS satellites, and it determines the availability of GNSS position using pseudorange measurements. The receiver based integer ambiguity monitoring embodiments described herein assures the integrity of the GPS heading computed from the integer ambiguity resolution algorithms using pseudorange measurements and carrier phase measurements. For a specified integer m (<NUM>, <NUM>, etc.) the approach uses mathematical combinatorics to group the single or double-differenced signals into specific subsets (called blocks) having two properties.

In an embodiment, a test performed on each subset that reliably determines if one or more signal in that subset is bad. If m or fewer signals are bad, the union of signals in good subsets is exactly the set of good single or double-differenced signals. This construction works for any single or double-difference integer ambiguity approach and it is applicable even when only <NUM> GNSS antennas are available (single baseline case). The test to show a subset contains a bad signal uses measurements from previous epochs as well as an estimate of baseline length and a test for geometric consistency with the satellite geometry.

Moreover, the high-integrity integer ambiguity resolution embodiments described herein provide navigation products with heading estimates that satisfy heading requirements that can't be satisfied by magnetic heading or GNSS based heading computed from GNSS pseudorange/velocity measurements.

Referring to <FIG>, an illustration of a multiple faulty global navigation satellite signal detecting system <NUM> in an example embodiment is illustrated. This example embodiment includes a vehicle <NUM> with a plurality of antennas <NUM>-<NUM> through <NUM>-n designed to detect satellite signals from a plurality of satellites <NUM>-<NUM> through <NUM>-n. The antennas <NUM>-<NUM> through <NUM>-n are spaced a select distance <NUM> (baseline length) from each other. Within the vehicle <NUM> is at least one receiver <NUM>-<NUM> through <NUM>-n designed to receive the satellite signals detected by the spaced antennas <NUM>-<NUM> through <NUM>-n. The receivers <NUM>-<NUM> through <NUM>-n are in communication with a processor <NUM> (or controller). Further included in the vehicle <NUM> are sensors <NUM>-<NUM> through <NUM>-n (aiding sources) that are in communication with the processor <NUM>. Examples of sensors (generally designated as <NUM>) include, but are not limited to gyroscopes, magnetometers, inertial navigation systems, etc. The sensors <NUM> provide sensor data to the processor <NUM>. Further illustrated in <FIG> is a memory <NUM> that is also in communication with the processor <NUM>. The memory <NUM>, in an embodiment, stores operation instructions that are implemented by the processor <NUM>. The memory <NUM> may also store sensor and receiver data. Further illustrated in the vehicle is an input/output <NUM> and a clock <NUM>. The input/output <NUM> provides a communication path to and from the processor <NUM>. For example, the input <NUM> may provide a communication path for instructions that are stored in memory <NUM> and the output <NUM> may provide a communication path to display determined 3D attitude solutions or a vehicle control system that controls at least in part guidance of the vehicle <NUM> based on the attitude solutions. Clock signals from the clock <NUM> are used by the processer for timing purposes and, as discussed below, to index time epoch information in the memory <NUM>.

In general, the processor <NUM> may include any one or more processors, microprocessors, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field program gate array (FPGA), or equivalent discrete or integrated logic circuitry. In some example embodiments, processor <NUM> may include multiple components, such as any combination of one or more microprocessors, one or more controllers, one or more DSPs, one or more ASICs, one or more FPGAs, as well as other discrete or integrated logic circuitry. The functions attributed to the processor herein may be embodied as software, firmware, hardware or any combination thereof. The processor <NUM> may be part of a system controller or a component controller. The memory <NUM>, as discussed above, may include computer-readable operating instructions that, when executed by the processor <NUM> provides functions of the multiple faulty global navigation satellite system signal detecting system. The computer readable instructions may be encoded within the memory <NUM>. Memory <NUM> is an appropriate non-transitory storage medium or media including any volatile, nonvolatile, magnetic, optical, or electrical media, such as, but not limited to, a random access memory (RAM), read-only memory (ROM), non-volatile RAM (NVRAM), electrically-erasable programmable ROM (EEPROM), flash memory, or any other storage medium.

<FIG> provide example block diagrams (or flow diagrams), <NUM>, <NUM>, <NUM>, <NUM>, and <NUM>. The block diagrams <NUM>, <NUM>, <NUM>, <NUM>, and <NUM> are presented as a block or series of blocks that are implemented by the processor <NUM> of the multiple faulty global navigation satellite signal detecting system <NUM>. Blocks in the block diagrams <NUM>, <NUM>, and <NUM> are presented in sequential order. The sequence, however, may be different in different embodiments. Hence embodiments are not limited to the sequential order illustrated in <FIG>.

<FIG> is a formation gathering and processing block diagram <NUM> that illustrates how information from satellite signals <NUM>-<NUM> and <NUM>-<NUM> (received at a pair of vehicle mounted GNSS antennas <NUM>-<NUM> and <NUM>-<NUM>), information from an aiding source <NUM> signal <NUM> such as a vehicle mounted inertial navigation system (INS) and other stored information is used to produce inputs needed to determine vehicle heading information using data from a single satellite having index i in an example embodiment. In this example, there are N satellites <NUM> for i = <NUM>,. ,N being monitored by the two GNSS receivers <NUM>-<NUM> and <NUM>-<NUM>.

Two of the three outputs from block diagram <NUM>, outputs <NUM> and <NUM>, depend on the index i = <NUM>,. ,N that identifies the different satellites <NUM> being monitored at each epoch (i.e. sample time). The corresponding computations in processes142 and <NUM> for i = <NUM>,. ,N are independent for each index i, and can be performed in parallel if desired. The remaining output <NUM> is the same for all i, and only needs to be computed once per time epoch.

The overall process <NUM> in block diagram <NUM> has two front-end sources of data, the satellite signals <NUM>-<NUM> and <NUM>-<NUM> from respective satellite receivers <NUM>-<NUM> and <NUM>-<NUM> and an aiding source signal <NUM>, such as INS signal from an INS system generally designated as <NUM> of the vehicle <NUM>. The processor <NUM> receives satellite data signals from the two GNSS receivers <NUM>-<NUM> and <NUM>-<NUM> via antennas <NUM>-<NUM> and <NUM>-<NUM> respectively. Further in an embodiment, vehicle-body coordinates of the antenna baseline <NUM> are stored in memory <NUM> for use by the processor.

At block (<NUM>), fractional portions of carrier phases of the signal from a single satellite (indexed by i = <NUM>,. ,N) to the two antennas and receiver estimates of the noise levels in those phase estimates are determined based on the received satellite signals <NUM>-<NUM> and <NUM>-<NUM>. At block (<NUM>) an input from the output of block (<NUM>) is used to determine the single difference output <NUM>i. The output <NUM>i consists of an estimate of the fractional difference in carrier phase from satellite i together with a standard deviation for the error of that estimate.

A position of the satellite i, the satellite signal currently being processed, is determined at block (<NUM>) using earth-centered-earth-fixed (ECEF) coordinates. This information along with an estimated position of the vehicle from the INS system <NUM> data in local north-east-down (NED) coordinates is input into block (<NUM>). At block (<NUM>) the satellite ECEF coordinates are converted to NED coordinates and a unit vector in the direction of the satellite from the vehicle in NED coordinates is determined. That unit vector is output <NUM>i as illustrated in <FIG>.

At block (<NUM>), the antenna baseline vector in body coordinates in block (<NUM>) and vehicle pitch and roll angle estimates from the vehicle INS <NUM> from block (<NUM>) are used to determine a set of reference coordinates of the baseline vector in NED coordinates. The reference coordinates are, by definition, the coordinates of the baseline vector of the antenna pair under the assumption that the direction of that vector in NED coordinates is North. Output <NUM> of block (<NUM>) is that set of reference coordinates.

<FIG> is a double difference block diagram <NUM> of a double-difference embodiment illustrating that the single-difference data (differences in fractional carrier phase and pseudorange between the two antennas for each satellite) is converted into double-difference data in an embodiment. Also, a covariance matrix for double-difference errors is computed. Then the N-<NUM> double-difference values, with covariances, are grouped into b blocks of subsets (called signal blocks) for further analysis.

In <FIG>, all of the outputs <NUM>i for i = <NUM>,. ,N, of block (<NUM>) of the block diagram <NUM> are combined as inputs to block (<NUM>) of block diagram <NUM>. At block (<NUM>) double-difference data is determined from inputs <NUM>i for i = <NUM>,. Input <NUM> to block (<NUM>), in this example, provides information about good and bad satellite signals that is used to determine the reference satellite used in the double-difference computations. The outputs of block diagram <NUM> are the b signal blocks (subsets of double difference data) <NUM>j for j = <NUM>,. ,b along with the output <NUM> that describes how the b signal blocks are defined.

At each epoch, block (<NUM>) in the double difference block diagram <NUM>, starts with a list of good and bad satellite signals from the previous epoch (via input <NUM>). Also, via inputs <NUM>i for i = <NUM>,. ,N, block (<NUM>) receives the single-difference signals and noise levels from block (<NUM>) of block diagram <NUM>. Block (<NUM>) selects the list of good single-difference signals to use in the current epoch. One of these good signals becomes the reference single-difference signal that is subtracted from all the other single-difference signals to produce the double difference signals <NUM>i for i = <NUM>,. Also in the outputs <NUM>i are the components of the covariance matrix for the N-<NUM> double-differenced signals.

Block (<NUM>) of block diagram <NUM> uses the input double-difference signals <NUM>i and associated covariance matrix and produces a collection of b subsets (called signal blocks) of those signals along with the associated covariance matrix for each signal block. The output signal blocks and associated covariance matrices are <NUM>j for j = <NUM>,. The other output <NUM> from process <NUM> identifies which signals are contained in each of the signal blocks. This information will be used at block (<NUM>), described below, when it decides which signals monitored in the current epoch are good and which are bad.

<FIG> illustrates a single-difference block diagram <NUM> showing that the single-difference data (differences in fractional carrier phase and pseudorange between the two antennas for each satellite) is collected in an embodiment. Also, a covariance matrix for single-difference errors is computed. Then the N single-difference values, with covariances, are grouped into b blocks of subsets (called signal blocks) for further analysis.

All of the outputs <NUM>i for i = <NUM>,. ,N, of block (<NUM>) of block diagram <NUM>, discussed above, are combined as inputs to block (<NUM>) in this single difference embodiment. Input <NUM> provides information about good and bad satellite signals that is used to determine which of these input signals will be used to make signal blocks (subsets). The outputs of block diagram <NUM> are the b signal blocks (subsets of single-difference data) <NUM>j for j = <NUM>,. ,b along with the output <NUM> that describes how the b signal blocks are defined.

At each epoch, block (<NUM>) of block diagram <NUM> starts with a list of good and bad satellite signals from the previous epoch (via input <NUM>). Also, via inputs <NUM>i for i = <NUM>,. ,N, block (<NUM>) receives the single-difference signals and noise levels from block <NUM>. Block (<NUM>) then selects the list of good single-difference signals to use in the current epoch.

As discussed, block (<NUM>) uses the input single-difference signals <NUM>i for i = <NUM>,. ,N and associated covariance matrix and produces a collection of b subsets (called signal blocks) of those signals along with the associated covariance matrix for each signal block. The output signal blocks and associated covariance matrices are <NUM>j for j = <NUM>,. The other output <NUM> from block (<NUM>) identifies which signals are contained in each of the signal blocks. This information will be used by block <NUM>, discussed below, when it decides which signals monitored in the current epoch are good and which are bad.

<FIG> is an epoch information block diagram <NUM> showing how single or double-difference values and covariances for signal-block j are processed to compute an integer ambiguity vector, baseline, heading, and residual metrics in an example embodiment. There are b signal blocks indexed by j = <NUM>,. Block diagram <NUM> illustrates how the outputs from the b signal blocks and information sent from block (<NUM>) (indicating which signals are contained in the signal blocks for each j = <NUM>,. ,b) are combined and compared to determine for which indices i = <NUM>,. ,N the signals are good or bad.

At block (<NUM>), information from previous epochs that is indexed via clock signal (input <NUM>) from clock <NUM> of the multiple faulty global navigation satellite signal detecting system <NUM> is stored in memory <NUM>. At each epoch, block (<NUM>) provides old metadata to block (<NUM>) (indexed by j = <NUM>,. ,b) via 320j. Further block (<NUM>) stores new metadata computed in block (<NUM>) via 330j. The process of block (<NUM>) may be applied independently for each different signal block indexed by j = <NUM>,. ,b, at each epoch. The data repository of the epoch information stored at block (<NUM>) includes prior headings, prior integer ambiguity vectors, and prior covariance matrices. Further as illustrated in <FIG>, a then current output <NUM> of the epoch information stored at block (<NUM>) is provided.

At block (<NUM>) of block (<NUM>), the single or double-differenced signal data and covariance matrix for signal block j, along with the satellite-geometry data for satellites i = <NUM>,. , N from output <NUM>i as well as the navigation data input <NUM> of block (<NUM>) and (<NUM>) of block diagram <NUM> is used to compute an integer-ambiguity vector for signal block j by one or more of the various available methods known to those skilled in the art. At block (<NUM>), an estimate of the baseline vector in NED coordinates as well as least-squares error components associated with the estimate are then computed. These results are then passed as inputs to block (<NUM>), where an estimate of aircraft heading and various residual metrics obtained for signal block j are computed and output via <NUM>j.

The outputs <NUM>j for j = <NUM>,. ,b of block diagram <NUM> are combined and compared at each epoch in block (<NUM>) in the bad and good signal block diagram <NUM> of <FIG> to determine which signals indexed by i = <NUM>,. ,N are good and which are bad. The output <NUM> computed at each epoch clearly depends on the composition of the signal blocks, so <NUM> from block (<NUM>) of block diagram <NUM> is required. The output <NUM> of block (<NUM>) will also depend on stored metadata from previous epochs. That metadata is provided by the input <NUM> from block (<NUM>) of block diagram <NUM>.

The determination of which signals (single or double differences) are bad is a two-step process in an example embodiment. First, for each index j = <NUM>,. , b we find the integer ambiguity vector for the signals in block j. This produces a phase single or double-difference vector, from which we compute estimated NED coordinates for the baseline vector and an associated heading solution. Signal block j is bad based on failing at least one of three tests. The first test is a heading comparison: if the heading solution computed using block j is significantly different from a prediction of heading based on previous solutions given in the metadata <NUM>, then signal block j is bad. The second test is a satellite geometry comparison: if the satellite geometry computed from the block j vector solution is inconsistent with the actual satellite geometry, then signal block j is bad. The third test is a baseline test: if the estimated baseline length computed using block j has too large an error when compared to the known baseline, then signal block j is bad. Signal block j is called good if all these errors are within user-selected bounds. Second, by taking the union of signals in all the good blocks we find the set of good signals. The signals in the complementary set, the union of signals in all the bad blocks are bad.

The signal blocks may be constructed so that if there are m or fewer signals that are bad (for specified m is greater than one), then the union of signals in good blocks is exactly the set of good signals. This property of blocks is called the complementary separability (CS) property. For example, for a case where m = <NUM>, signal blocks with the CS property may be constructed when there are fewer than <NUM> available satellite signals described in the following manner, using the mathematical language of balanced incomplete block designs (BIBDs). For an even number of satellite signals, the signal blocks are obtained by constructing a BIBD associated with a residualized Hadamard designs for values of t = <NUM>,<NUM>,<NUM>. When there is an odd number of satellite signals, the signal blocks may be obtained by constructing the complementary BIBD associated with the residuals of complements of Hadamard designs for t = <NUM>,<NUM>,<NUM>,. These BIBDs have the CS property. The limitation of <NUM> satellites is a consequence of the fact that, at this time, no Hadamard matrix of size <NUM> is known to exist though these matrices are known to exist for all smaller sizes. For the case m = <NUM>, the signal blocks can be constructed when there are fewer than <NUM> available satellite signals in the following manner. Given v satellites, we start by finding the integer t such that v = 3t - c for c = <NUM>, <NUM> or <NUM>. For values of t from <NUM> to <NUM> we can construct BIBDs having v=3t, b = number of blocks = <NUM>(3t-<NUM>), k = number of satellites per block = t, each satellite is contained in exactly r = 3t -<NUM> blocks, and every pair of satellites is contained in exactly t-<NUM> blocks. Those BIBDs have the desired complementary separability (CS) property (so the union of all good blocks is the set of good satellites). Furthermore, by removing c = <NUM> or <NUM> satellites from that BIBD, we are left with pairwise balanced designs for 3t-<NUM> or 3t-<NUM> satellites that also have the CS property. These pairwise balanced designs form the collection of blocks we need for v=3t-<NUM> or v=3t-<NUM> satellite cases, t = <NUM> to <NUM>. For the case of <NUM> GPS satellites in orbit, these explicit solutions allow implementation for the cases m = <NUM> and <NUM>. Generalizations of the example methods outlined above can be used for constructions of signal blocks to handle the cases of more available satellites and larger values of m.

Claim 1:
A multiple faulty global navigation satellite signal detecting system (<NUM>), the system (<NUM>) comprising:
at least one pair of spaced antennas (<NUM>), said pair of antennas (<NUM>) being separated by a baseline, configured to receive satellite signals from a plurality of satellites (<NUM>);
at least one aiding source (<NUM>) to generate aiding source position estimate signals and heading rate signals;
a processor (<NUM>) in communication with each antenna and the at least one aiding source (<NUM>), the processor (<NUM>) configured to,
determine an estimate of a fractional difference in a carrier phase and standard deviation for each satellite signal received by the spaced antennas to generate single-difference signals with noise levels,
determine a unit vector in a direction of an associated satellite in north-east-down (NED) coordinates from the received satellite signals and an aiding source position estimate signal from the at least one aiding source,
determine difference signals by at least selecting a list of good single-difference signals with noise levels from a previous epoch to use in a current epoch,
determine signals blocks, the signal blocks being a collection of subsets of the determined difference signals and a covariance matrix for the difference signals,
determine which difference signals are bad by,
determining an integer ambiguity vector for the signals in each signal block to generate a phase difference vector,
determining estimated NED coordinates for a baseline vector and an associated heading solution from the phase difference vector,
comparing at least one of,
a determined heading solution with a predicted heading solution based on previous solutions and heading rate signals,
a geometry of the determined NED coordinates with satellite coordinates, and
an estimated baseline length with a known baseline length, and
generate a union of good signals from all the good blocks and a complementary set of bad signals based on the comparison.