# Patent

## Title
Satellite search method

## Abstract

A method for searching satellites in a cold start state. The method of the present invention, a first satellite, which is predetermined or randomly selected, is searched. Then, a second satellite to be searched is selected according to the searching result (hit or missed) for the first satellite and respective interrelationships between the first satellite and the other satellites. In practice, an initial weight factor table is provided. Depending on the searching result, the initial weight factor table is updated according to the interrelationships between the satellites during searching. By using the method of the present invention, the time-to-first-fix (TTFF) can be reduced to a shorter period of time so as to provide a rapid cold start satellite positioning.

## Background
TECHNICAL FIELD OF THE INVENTION
The present application relates to satellite communication, more particularly, to satellite search method, which is especially advantageous to a cold start satellite searching and capable of improving time-to-first-fix (TTFF).
BACKGROUND OF THE INVENTION
Satellite positioning has been widely used in various applications. In satellite communication systems such as Global Navigation Satellite System (GNSS), a cold start state means that no information such as the receiver position, observation time, satellite orbit information (e.g. almanac or ephemeris) are available. Accordingly, the identification (ID) of a visible satellite is of course unknown. In addition to the satellite ID, the Doppler frequency due to the satellite motion with respect to the user is unknown. If a Code Division Multiple Access (CDMA) signaling is used in the system, Global Positioning System (GPS) for example, the code phase of the Pseudo Random Noise (PRN) code used by a satellite is also required to track that satellite. As mentioned, the characteristic of a satellite signal can be determined by the following variables: satellite ID, Doppler frequency and PRN code phase.
At least four satellites are required to fix a three dimensional position. The required time-to-first-fix (TTFF) depends on how fast the four visible satellites can be found. For example, there may be as many as twelve GPS satellites that are visibly observed from the surface of the earth. Conventionally, all of the possible satellites are searched sequentially in order to find the visible satellites. Moreover, the Doppler frequency and PRN code phase of each satellite are also unknown. Therefore, it takes a lot of time to try all the possible values to determine a satellite's existence.
In general, a receiver searches for a visible satellite by using correlation analysis which considers satellite ID (e.g. satellites of the system GPS, Galileo, WAAS, EGNOS, MSAS etc.), code phase, and Doppler frequency. In addition, serial and parallel searches might be used. For example, four different satellites can be searched at the same time if there are four available channels. To search a satellite, all the possible code phases and Doppler frequencies thereof should be scanned.
A numerical example will be described hereinafter. Assuming that a visible GPS satellite list is {5, 9, 14, 15, 18, 21, 22, 26, 29, 30} for a receiver, which can use one physical channel and ten channels to search and track satellites, respectively. Scanning time, Ts, is defined as the time required to scan the whole range of possible Doppler frequencies and code phases. If a candidate satellite is not visible, a correlator misses it after searching time Ts. On the other hand, the correlator hits a visible satellite after searching time 1⁄2 Ts on average. Further, it is assumed that the data demodulation bit error rate is zero. Therefore, it takes 750 sec to receive almanac after the hit of the first satellite. After the hit of one satellite, it takes 27.6 sec on average to receive its ephemeris. The scanning time, Ts, can be computed for a receiver that tracks GPS L1 C/A code signal, which has 1023 chips per code period. If the code resolution of code correlation in acquisition process is 1⁄2 chip, the code phase uncertainty range size is 2046. In general, a combination of coherent and incoherent integration is used in the receiver to increase the acquisition sensitivity. Therefore, the correlation period (denoted by ΔT) for one particular pair of Doppler frequency and code phase candidates is the coherent time (denoted by Tc) multiplied by the incoherent count (denoted by Ti). Moreover, the Doppler frequency resolution, dF, is set to be 1/Tc in general. Finally, the whole Doppler range is denoted by ΔF. Based on the above assumptions, the scanning time Ts can be computed as follows.




  
    
      
        
          
            
              
                T
                s
              
              =
              
                2046
                ×
                
                  
                    Δ
                    ⁢
                    
                      
                    
                    ⁢
                    F
                  
                  dF
                
                ×
                Δ
                ⁢
                
                  
                
                ⁢
                T
              
            
          
        
        
          
            
              =
              
                2046
                ×
                
                  
                    Δ
                    ⁢
                    
                      
                    
                    ⁢
                    F
                  
                  
                    1
                    /
                    
                      T
                      c
                    
                  
                
                ×
                
                  (
                  
                    
                      T
                      i
                    
                    ×
                    
                      T
                      C
                    
                  
                  )
                
              
            
          
        
        
          
            
              =
              
                2046
                ×
                Δ
                ⁢
                
                  
                
                ⁢
                F
                ×
                
                  T
                  i
                
                ×
                
                  T
                  C
                  2
                
              
            
          
        
      
    
    
      
        (
        1
        )
      
    
  




If the receivers uses Tc of 1 ms to perform coherent integration and no incoherent integration is used, i.e., Ti equals one, then the required scanning time Ts is 20.46 seconds to scan the Doppler range size equal to 10 kHz. Four satellites must be found to make the first position fix. Assuming that the satellite search order is 1, 2, . . . ,32 for a sequential search of GPS satellites, then satellites 5, 9, 14 and 15 in the visible satellite list should be hit in order. Table 1 shows the results of sequential search.








TABLE 1





Hit results of sequential search































SV ID
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16


Epoch (Ts)
1
2
3
4
4.5
5.5
6.5
7.5
8
9
10
11
12
12.5
13
14


Hit
0
0
0
0
1
0
0
0
2
0
0
0
0
3
4
0


SV ID
17
18
19
20
21
22
23
24
25
26
27
28
29
30


Epoch (Ts)
15
15.5
16.5
17.5
18
18.5
19.5
20.5
21.5
22
23
24
24.5
25


Hit
0
5
0
0
6
7
0
0
0
8
0
0
9
10









The visibilities of+ the respective satellites can be obtained from observation statistics results at various time sampling points for a fixed position. FIG. 3 shows an example of observation time sampling points at a certain position. For instances, at observation time sampling point “8” of the diagram, the visible satellites are SV5, 9, 14, 15, 18, 21, 22, 26, 29 and 30.
As can be seen from Table 1, the sequential searching scheme takes 4.5 Ts (=110.07 sec) to achieve the first hit (Satellite 5 is hit), and about 13 Ts+27.6=345.58 sec to achieve the first fix (Satellites 5, 9, 14 and 15 are hit and 27.6 sec are required to collect the ephemeris of satellite 15.) To find all satellites on the visible satellite list, 25 Ts (611.5 sec) is required. These periods of hit time are undesirably long. Accordingly, there is a need for a solution to reduce the time required to find the visible satellites.
SUMMARY OF THE INVENTION
An objective of the present invention is to provide a method for searching satellites in a cold start state. By using the method of the present invention, the time-to-first-fix (TTFF) can be reduced to a shorter period of time required to provide rapid cold start satellite positioning.
In accordance with the present invention, a first satellite, predetermined or randomly selected, is searched. Then, a second satellite to be searched is selected according to the searching results, hit or miss, of the first satellite and respective interrelationships between the first satellite and the other satellites. In practice, an initial weight factor table is provided. When one of the satellites is searched, the weight factor table is updated according to the searching result by utilizing the interrelationships between the satellites. The next satellite to be searched is selected according to the updated weight factor table.



BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a flow chart showing an embodiment of a cold start satellite search method in accordance with the present invention.
FIG. 2 shows an example of conditional visibility table used in the present invention; and
FIG. 3 shows an example of satellite visibility observation results at time sampling points for a fixed position.



DETAILED DESCRIPTION OF THE INVENTION
Details of the present invention will be described as follows.
In accordance with the present invention, a cold start satellite searching is started with searching for a predetermined or randomly selected first satellite from a list of candidate satellites including all or a predetermined part of the available satellites. An initial weight factor table is previously prepared. The initial weight factors are then updated whenever a satellite is searched. The weight factors are used to determine which satellite has the highest probability that it is visible. For example, if the candidate satellite list includes satellites SV1, SV2, . . . , SV32, and the searched satellite is satellite SV1, then the updated weight factors of satellites SV2 to SV32 are used to choose the next satellite to search. The weight factors can be updated according to any desired interrelationships between two satellites. In the present embodiment, the weight factors are updated according to conditional visibilities, that is, the conditional probabilities that a satellite is visible if a specific satellite is visible. An example of the conditional visibilities for satellite SV1 is shown in Table 2. The rest can be deduced in the same way. Details concerning this matter will be further described later.







TABLE 2





Conditional visibilities for SV 1































SVi 
1
14
25
20
11
16
22
3
30
19
23
15
6
5
24
18


Vi|1
1
0.59
0.56
0.17
0.06
0.05
0.04
0.04
0
−0.04
−0.05
−0.16
−0.17
−0.19
−0.25
−0.33


SVi
9
21
13
4
7
2
28
27
8
10
26
29
12
17
31
32


Vi|1
−0.34
−0.36
−0.47
−0.51
−0.53
−0.64
−0.65
−0.68
−0.90
−0.92
−0.94
−1
−1
−1
−1
−1









If there are 32 possible satellites in the sky, we define a random variable for each satellite to indicate whether it is visible or not, that is




  
    
      
        
          X
          i
        
        =
        
          {
          
            
              
                
                  
                    
                      
                        1
                        ,
                        
                          
                            SV
                            i
                          
                          ⁢
                          
                            
                          
                          ⁢
                          is
                          ⁢
                          
                            
                          
                          ⁢
                          
                            visible
                            .
                          
                        
                      
                    
                  
                  
                    
                      
                        0
                        ,
                        
                          
                        
                        ⁢
                        
                          otherwise
                          .
                        
                      
                    
                  
                
                ⁢
                for
                ⁢
                
                  
                
                ⁢
                i
              
              =
              1
            
            ,
            2
            ,
            K
            ,
            32
          
        
      
    
    
      
        (
        2
        )
      
    
  




The random variable Xi depends on the receiver position, observation time and the satellite position. If an almanac is known in advance, we can compute Xi(r,t) for each possible receiver position, r, and observation time, t. For example, we can divide 24 hours into 96 time points (i.e. one point per 15 min), and divides the global surface into 1808 points as is done in WAAS IGP grid point definition. Then Xi is computed for all the 96*1808 possible combinations of the receiver position and observation time. Finally, the ensemble average of Xi for i=1, 2, . . . ,32 can be obtained as follows





  
    
      
        
          E
          ⁡
          
            [
            
              X
              i
            
            ]
          
        
        =
        
          
            ∑
            
              j
              =
              1
            
            1808
          
          ⁢
          
            
          
          ⁢
          
            
              ∑
              
                k
                =
                1
              
              96
            
            ⁢
            
              
            
            ⁢
            
              
                X
                i
              
              ⁡
              
                (
                
                  
                    r
                    j
                  
                  ,
                  
                    t
                    k
                  
                
                )
              
            
          
        
      
    
    
      
        (
        3
        )
      
    
  




It is noted that the ensemble average, E[Xi], can be interpreted as the probability that satellite SVi is visible, that is, E[Xi] equals 1*Pr[SVi is visible] according to Eq. (2).

If a satellite is visible at a position and time point, we can also determine which satellites are also visible under such a situation. Therefore, we can define the following conditional random variable for i,j=1, 2, . . . ,32




  
    
      
        
          X
          
            j
            |
            i
          
        
        =
        
          {
          
            
              
                
                  1
                  ,
                
              
              
                
                  
                  ⁢
                  
                    
                      SV
                      j
                    
                    ⁢
                    
                      
                    
                    ⁢
                    is
                    ⁢
                    
                      
                    
                    ⁢
                    available
                    ⁢
                    
                      
                    
                    ⁢
                    if
                    ⁢
                    
                      
                    
                    ⁢
                    
                      SV
                      i
                    
                    ⁢
                    
                      
                    
                    ⁢
                    is
                    ⁢
                    
                      
                    
                    ⁢
                    
                      visible
                      .
                    
                  
                
              
            
            
              
                0.
              
              
                
                  
                  ⁢
                  
                    otherwise
                    .
                  
                
              
            
          
        
      
    
    
      
        (
        4
        )
      
    
  




The mean of Xj|i can be used as the interrelationship between two satellites because E[Xj|i] equals Pr[SVj is visible if SVi is visible.]. We can compute the ensemble average of Xj|i in the same manner as E[Xi].

In this case, the visibility of a satellite, SVi, is defined as the mean of Xi, that is,

Vi=E[Xi]  (5)

When a satellite is visible, the conditional visibilities of the other satellites with respect to this satellite depend on the probability that they are also visible. According to the present invention, the most visible satellite should be searched first and the most invisible satellite should be searched last or even not be searched when a satellite is determined to be visible or not. In addition, It can be more certain which satellite is visible after more satellite are searched.

The conditional visibility Vj|i of satellite SVj assuming that SVi is visible is determined based on the mean of Xj|i as follows

Vj|i=2×E└Xj|i┘−1   (6)

where we normalize the value so that the highest interrelationship (dependency) is indicated by the value “1” and the lowest interrelationship (dependency) is indicated by the value “−1”.

An example of the conditional visibilities with respect to SV1 is shown in Table 2. In this example, it is assumed that satellites SV12, 17, 31 and 32 are not broadcast, and therefore the conditional visibilities thereof with any satellite are always −1. These four satellites SV12, 17, 31 and 32 will not be further discussed in this example. It can be seen that satellite SV1 excludes satellite SV29. Satellites SV14 and 25 are highly correlated with satellite SV1, while satellites SV 8, 10 and 26 are highly uncorrelated with SV1.
In one embodiment, initial weight factors Wi for i=1, 2, . . . ,32 in the weight factor table are all set to be 0. Whenever a satellite, SVi for example, is searched and determined to be visible or not, the weight factors Wj for j=1, 2, . . . , i−1, i+1, . . . ,32 are updated based on the respective conditional visibilities Vj|i.
In the case that 32 satellites are in the candidate satellite list, conditional visibilities of a 32×32 matrix can be stored. That is, the conditional visibilities of all of the satellites with respect to each satellite are stored. However, in practice, it is not necessary to store the conditional visibilities Vj|i of all the satellites with respect to a specific satellite. It is preferred that only the conditional visibilities of the most highly correlated two and the most highly uncorrelated two satellites with respect to a specific satellite are stored. For example, for satellite SV1, only the conditional visibilities of satellites S14, 25, 26, 29 are stored. Accordingly, all of the conditional visibilities will be stored as a 32×4 matrix. The size of the matrix can be changed from 32×1 to 32×32 as desired in this case.
In the embodiment, the first satellite to be searched is predetermined as satellite SV1. However, it can be any one of the possible satellites. The first satellite to be searched can also be selected randomly. After the first satellite is searched, the initial weight factor table is updated according to the searching result of this satellite, SV1 in this embodiment. If the satellite SV1 is hit, the weight factors of the other satellites SV2 to SV32 are increased according to their conditional visibilities with respect to SV1. That is, Wj=Wj+Vj|i for j=2, 3, . . . ,32. On the other hand, the weight factors are decreased if the satellite SV1 is missed. That is, Wj=Wj−Vj|i for j=2, 3, . . . ,32. Then, a second satellite to be searched is selected according to the updated weight factor table. For example, a satellite with the highest weight factor is selected to search. The sequent satellites to be searched are selected similarly.
The method of the embodiment in accordance with the present invention is now further described in conjunction with FIG. 1.
In accordance with the present invention, the satellite searching method is started with a cold start state (step S100). In step S110, a candidate satellite list, CandList, is initialized as {1, 2, . . . , 32} to search GPS satellites, for example. In step S120, the weight factor table is initialized. The weight factors of all the satellites are set to be 0, i.e. Wi=0 for i=1, 2, . . . , 32. In general, there are several physical channels in a receiver, which can search and track satellites. In one embodiment, we check and control each physical channel in a round robin way with the first channel assigned in step S130. In step S140, it is to determine if the current channel is idle, i.e., it is not searching or tracking a satellite. If the current channel is idle, it is determined whether the almanac and position/time fix information are available or not in step S150. If the information is available, the process is switched to warm start state (Step S160) and determine the satellite candidate according to the available information. Otherwise, the process will enter the method in accordance of the present invention. In step S200, it chooses and removes a satellite ID from CandList, which has the highest weight factor. In one embodiment, we use round-robin scheduling to search satellite. That is, all the satellites are searched only once in one round. Therefore, we check the list CandList in step S210. The list Candlist consists of the remaining satellites to search in the current round. If it is empty, the current round ends and the next round starts to search the un-acquired satellites. Therefore, we reassign satellite candidates in step S220. In step S230, the current idle channel is assigned to search the chosen satellite candidate. In step S240, the next physical channel is chosen. In step S150, if the current channel is not idle, it means that it is searching a satellite. Then we check the search result of the satellite, miss or hit, in Step S170 and S175, respectively. If the channel does not finish its searching, we will enter step S240 and choose the next channel. After a channel finishes its search for a satellite, the searching result whether the satellite is hit or missed will be issued. If the satellite is missed, we decrease the weight factors of the other satellites by amounts determined by the conditional visibilities in step S180. In another embodiment, the weight factors of all the satellites including the searched one are updated. Then the current channel can be used to search the next satellite and the process enters step S200 to choose another satellite to search. It is noted that the weight factors are updated in step S180 so that we can choose a satellite which has the highest weight factor or is equivalently most probable to be observed from CandList.
If the process finds that the current channel hits a satellite in step S190, the process will increase the weight factors of the satellites according to their conditional visibilities with respect to the hit one. In one embodiment, the weight factor of the hit satellite per se is not updated. In another embodiment, the weight factor of the hit satellite is also updated. The current channel will be used to tracking the hit satellite and so the process goes to step S240 directly to process the next channel.
The benefit of the method in accordance with the present invention will be illustrated by using the same numerical example as mentioned in the background. All the assumptions are the same. A conditional visibilities table to be used in this example is shown in FIG. 2. Assuming that the visible satellites are SV5, 9, 14, 15, 18, 21, 22, 26, 29 and 30. Satellites SV 12, 17, 31 and 32 are not broadcast and not considered accordingly. If the searching is started from satellite SV1 in step S200, the searching result should be “missed”. It is noted that satellite SV1 is removed from the candidate satellite list after being searched. The initial weight factors of all the satellites (0 is this example) will be subtracted with the respective conditional visibilities of SV2 to SV32 with respect to SV1 (see Table 2) in step S180. It can be checked that the updated weight factor of satellite SV29 will be the highest, that is, “1”. Accordingly, satellite SV29 will be selected as the next one to be searched in step S200. The searching result of satellite SV29 should be “hit” since SV29 is visible. Then the weight factors of other satellites will be added with the conditional visibilities of those satellites with respect to satellite SV29 in step S190. Once again, a satellite with the highest weight factor is selected to search in step S200. It is satellite SV26 in this example. Similarly, satellites SV 10, 8, 18, 9, 22, 15, 21, 5, 30, 6, and 14 are searched in this listed sequence, as shown in Table 3.







TABLE 3





A searching sequence determined according to the method of


the present invention.





























SV
1
29
26
10
8
18
9
22
15
21
5
30
6
14


Epoch(Ts)
1
1.5
2
3
4
4.5
5
5.5
6
6.5
7
7.5
8.5
9


Hit
0
1
1
0
0
1
1
1
1
1
1
1
0
1





(In Hit row, “0” indicates “miss”, “1” indicates “hit”)






Similar to the sequential search example described in the background, the scanning time Ts is required for each satellite to search the whole Doppler and code phase uncertainty range. If a candidate satellite is not visible, a correlator misses it after searching time Ts. If a candidate satellite is visible, the correlator hits it after mean searching time 1⁄2 Ts. Further, it is assumed that the data demodulation bit error rate is zero. It takes 750 sec to receive almanac after the first hit, while 27.6 sec (mean) to receive ephemeris after the hit of one satellite. As can be seen from Table 3, the time to the first hit (i.e. satellite SV29 is hit) is 1.5 Ts (=30.69 sec). The time to the first fix (i.e. the first four satellites SV29, 26, 18, 9 are hit) is about 5 Ts+27.6=129.9 sec. In addition, the time to find all the visible satellites is 9 Ts (=184.14 sec). Compared to the conventional sequential satellite searching described previously, the satellite searching method in accordance with the present invention only takes about one-third of time.
As can be understood from the above descriptions and example, the time required to achieve the first hit, first fix and to find all the visible satellites can be significantly reduced by using the method in accordance with the present invention, especially in the cold start situation.
While the preferred embodiments of the present invention have been illustrated and described in detail, various modifications and alterations can be made by persons skilled in this art. The embodiment of the present invention is therefore described in an illustrative but not restrictive sense. It is intended that the present invention should not be limited to the particular forms as illustrated, and that all modifications and alterations which maintain the spirit and realm of the present invention are within the scope as defined in the appended claims.

## Claims

1. A method for searching a plurality of satellites in a Global Navigation Satellite System (GNSS), said method comprising steps of:
providing a list of candidate satellites including satellites to be searched, each satellite in the list having a weight factor;
searching for a first satellite from the list of candidate satellites;
updating the weight factors of the respective satellites of the list in a first manner when the result of said searching step indicates that said first satellite is hit, and updating the weight factors of the respective satellites of the list in a second manner when the result of said searching step indicates that said first satellite is missed, based on interrelationships between said first satellite and the respective satellites;
selecting a second satellite to be searched from the list of candidate satellites as a new first satellite according to the updated weight factors.

2. The method of claim 1, further comprising repeating the last three steps until a predetermined number of satellites have been found.

3. The method of claim 1, wherein the weight factors for the satellites are updated according to interrelated conditional visibilities between the respective satellites.

4. The method of claim 3, wherein for each satellite, the interrelated conditional visibilities include the interrelated conditional visibilities of all the other satellites with respect to the satellite.

5. The method of claim 3, wherein for each satellite, the interrelated conditional visibilities include the interrelated conditional visibilities of a predetermined number of satellites having higher dependencies with respect to the satellite.

6. The method of claim 3, wherein for each satellite, the conditional visibilities include the interrelated conditional visibility of a satellite having the highest dependency with respect to the satellite.

7. The method of claim 3, wherein the interrelated conditional visibilities include the interrelated conditional visibilities of all of the satellites with respect to each satellite.

8. The method of claim 1, wherein the weight factors for the satellites in the list are initially set as desired.

9. The method of claim 1, wherein the weight factors are stored in a weight factor table.

10. The method of claim 1, wherein the first satellite is removed from the list after said first satellite has been searched.

11. The method of claim 10, wherein the first satellite is re-included into the list after the list becomes empty if said first satellite is not hit in the searching step.

12. The method of claim 1, wherein in the updating step, the weight factors of the respective satellites are increased by the interrelationships of the respective satellites with respect to the first satellite when the result of said searching step indicates that said first satellite is hit, or decreased by the interrelationship of the respective satellites with respect to the first satellite when the result of said searching step indicates that said first satellite is missed.

13. The method of claim 1, wherein the weight factor of the searched satellite per se is not updated in the updating step.

14. The method of claim 1, wherein the weight factor of the searched satellite is also updated in the updating step.