Abstract:
Novel transmit-only geo-location techniques which can operate synergistically with existing or newly designed satellite or ground-based wireless communications networks using micro-miniature emergency geo-location beacons to provide personal security are described. A combination of physical measurement parameters (Doppler shifts and/or time intervals obtained from clock or signal correlation data) allows geo-location with a reduced number of satellite or wireless receive nodes, thus reducing the cost or increasing the coverage of the system as compared to current geo-location systems. In addition, several of these techniques allow geo-location to be performed on optical and infra-red radiation sources, which can enable tracking of any emitter by existing or newly designed surveillance satellites, including commercial and military aircraft, and hostile missiles or other optically active targets. Intermittent single burst coded signals radiated by the emitting source, which for personal security applications can be extremely small and easily carried in a concealed fashion, can be detected at one or more satellites or receive nodes and relayed to a central monitoring station, or operations center, where signals are processed and the location of the source is determined. Existing communications channels can be used to relay the location from the central monitoring station to appropriate rescue or interdiction personnel.

Description:
This application is a continuation-in-part of prior application Ser. No. 09/052,066 filed Apr. 6, 1998, now U.S. Pat. No. 6,028,551, which was a continuation-in-part of prior application Ser. No. 08/904,377 filed Aug. 1, 1997 and subsequently abandoned, which was a continuation of the original application Ser. No. 08/355,901 filed Dec. 13, 1994 and subsequently abandoned. 
    
    
     BACKGROUND 
     The radio frequency spectrum has been used in the past for emergency rescue operations, most notably in shipping and aircraft rescues. More recently, geo-location devices have been used to track endangered species. As mobile telephony has developed, the ability to signal for help in emergency situations has also developed. However, in all of the above cases, the geo-location systems either require two-way communications, require relatively long time intervals to acquire the data needed for geo-location, or lack continuous coverage capability. In addition, the emergency transmit/receive units required are relatively large and not convenient to “wear” or conceal, and the battery systems and modes of operation require frequent battery recharging. Also inhibiting continuous use for emergency situations are the problems associated with incapacitation, such as the dialing sequence of operations necessary on current mobile phone systems. 
     There are a number of geo-location techniques that have been described in the past that appear in this specification. Prior art in emergency rescue at sea and for tracking of endangered species includes a number of existing satellite and ground systems dating back to World War II. These include position determination systems used in navigation, such as LORAN (a form of triangulation), Direction Finding (DF), Transit (Doppler shifts) and GPS (another form of triangulation), as well as emergency beacon location systems such as SARSAT (Doppler shifts) and Argos (Doppler shifts). A brief description of these techniques and the weaknesses relative to the proposed invention is provided in this section, as prior art background. 
     One of the earliest techniques, direction-finding (DF), was developed during World War II and evolved into systems in use today, such as LORAN and associated techniques using time/phase/angular difference of arrival, to determine angular direction and errors. DF techniques are suitable for use with ground-based cellular receiver networks, such as the current mobile telephone grids, but will not provide sufficient accuracy when used in conjunction with global capability satellite networks that will soon be available. This is fundamentally due to the great distances the satellites are from the transmitters (typically &gt;700 km), and the impact created by this multiplicative factor that transforms the angular uncertainty of the measurement into a position error. However, DF may be used in conjunction with this invention for certain applications where rapid proximity to the transmitter is possible. 
     Another approach, developed over the last few decades, utilizes Doppler shifts in the frequency of received signals to determine the location of the transmitter. It is well known in physics text books that the shift in frequency depends on the factor (v/c) cos(θ), where the cosine term is the angle between the velocity vector of the satellite and the satellite-beacon line-of-site vector, and c is the speed of light. NASA has employed this technique for it&#39;s SARSAT program (search and rescue satellite). One of the drawbacks of that system is that it takes several satellite passes to determine location (it determines the zero-Doppler shift direction which provides a direction perpendicular to the satellite orbit), which means that accurate locations cannot be determined for the order of hours, the time it takes for multiple satellite passes. Newer approaches (such as the Orbcomm system, which will be fully operational in two years) can determine position to the order of a few hundred meters, but takes a complete pass (of the order of 10-15 minutes) of a single satellite to acquire sufficient data. In contrast, the proposed system will only need a simultaneous single data reception by a few visible satellites to determine location. This will minimize the energy required to provide a sufficient operational lifetime for the invention. 
     Time difference of arrival (TDOA) and time of arrival (TOA) techniques can be considered a subset of triangulation and direction-finding, but require a minimum of three simultaneous measurements to determine position unambiguously (by the intersection of the transit-time “circles” (TOA) or the intersection of hyperbolas from pairs of TDOA relative measurements). However, TDOA/TOA in combination with Doppler can reduce this constraint, provided that clock and/or relative times of arrival uncertainties can be reduced to provide the needed accuracy. This synergism can be used in the proposed invention to reduce the number of satellites that must receive the beacon signal. 
     The Global Positioning System (GPS), which was developed and launched by DoD and contractor Rockwell, depends on receiver units being able to lock-on to signals from three or more GPS satellites to calculate a position. As opposed to the system proposed herein, GPS transmitters are in space, and the receiver is carried by the user; thus it is a “receive-only” system. The position errors, depending on the code the receiver is authorized to receive, are extremely small (of the order of less than a meter for the military codes). However, the units are relatively expensive ($200-$500), and in certain instances may not be able to lock-on to these signals due to terrain blockages and satellite radiated power limitations. 
     Other geo-location techniques include use of the amplitudes of received signals to determine location (analogous to TOA) and inertial guidance. Amplitude techniques suffer from amplitude variations induced by weather, absorption and fading due to phase interference. Advances in inertial guidance systems and miniaturization of associated components designed to measure accelerations, made principally by the Department of Defense (DoD) funded programs, will enable accurate geo-location to be made. However the systems are currently extremely expensive ($20K-$80K for avionics-quality miniaturized gyros/accelerometers) and would require frequent reference updates (of the order of hours to days) depending on the accuracy errors tolerable. 
     The following references are provided as examples of prior art (all refer to systems that are at least twenty years old since conception and description in the open literature), and no claim to novelty is made for these techniques, individually, as they are described in the literature: 
     Transit—Johns Hopkins APL TECHNICAL DIGEST January-March 1981, Volume 2, Number 1. 
     LORAN—“LORAN Long Range Navigation”, J. A. Pierce, A. A. McKenzie and R. H. Woodward, McGraw-Hill Book Company, New York, 1948. 
     GPS—“Global Positioning System”, Vol #1 NAVIGATION, The Institute of Navigation, 815 Fifteenth Street, Suite 832, Washington, D.C. 20005, 1980: 
     “Principle of Operation of NAVSTAR and System Characteristics”, R. J. Milliken and C. J. Zoller 
     Argos—“Proceedings For The Eleventh Annual Gulf Of Mexico Information Transfer Meeting”, New Orleans, La., pg. 230-232, November 1990, U.S. Dept. of Interior Minerals and Management Service, Published October 1991, Contract #1435-0001-30499, MMS-91-0040, 524 pages. 
     SARSAT—“Ambiguity Resolution For Satellite Doppler Positioning System”, P. Argentiero and J. W. Marini,  IEEE Transactions On Aerospace And Electronics,  pg 439, May 1979. 
     DF—“Principles Of High-Resolution Radar”, August W. Rihaczek, Peninsula Publishing, P.O. Box 867, Los Altos, Calif. 94023,1985. 
     It should be noted that the geo-location determination in all of these systems is conceptually simple, relying on the intersection of solid geometry surfaces, a technique which can be found in many high school and college freshman-level text books. 
     The invention described herein is different in several respects from prior art described above. First, the geo-location techniques utilized are novel and different from those currently in use. All present systems, with the exception of single-pass Doppler, are “receive-only”, versus “transmit-only” for this invention. The device takes advantage of the new geo-location techniques through the use of micro-miniaturization and utilizes no power until activated by one of several sequences or methods, and thus requires little or no power until used, making miniature battery power sources feasible. Since it broadcasts infrequently when activated, the energy drain on batteries allows operation over sufficient periods of time to allow rescues to be made. Further, miniaturization is made possible by compact, omni-directional antenna designs, or easily configurable antenna placements, depending on the operational frequency of the unit. The principles used in these novel techniques have also been applied to the use of beacons which emit visible or infra-red (IR) radiation. 
     Finally, the use of microprocessor technologies allows the sequence of operations to be activated, allowing micro-miniaturization for concealment to be possible, as well as affordable. The use of this device with satellite constellations allows global coverage, if desirable. Other units can function with cellular or wireless networks for metropolitan area coverage. 
     SUMMARY OF THE INVENTION 
     The major components of the micro-miniature emergency geo-location beacon transmitter generated in accordance with the present invention consists of the following functional components and/or subsystems. A critical component is a miniaturized antenna system capable of providing a significant signal strength to satellite, cellular, or wireless radio receiver antennas that can be from 10 to 500 kilometers distant, depending upon the particular receiving system chosen. Several antenna configurations are possible, including multi-turn loops, center- or end-fed dipoles, or dielectric patch antennas. Each type of antenna has a somewhat different angular distribution of radiated power, which must be adjusted to optimize signal in the receiver direction (overhead for satellites and near-horizon for terrestrial receivers). The radiation patterns have been analyzed in textbooks (e.g., “Antenna Theory and Design,” by R. S. Elliott, Prentice-Hall, Inc., 1981) and by judicious selection of size and wavelength, the patterns can be selected for optimum use. For loop antennas with large wavelengths (compared to the antenna radius), the radiated power can be written as 
     
       
           P =( ka ) 2   ηI   2   J   1   2 ( ka  sin θ) n   2 /(2 r   2 ) 
       
     
     where η is the impedance of free space, n=# of turns and θ=0 points to the zenith. For a=2.5λ, this pattern is lobed, with a strong zenith radiation power. If the wavelength is small compared to the antenna radius, then the radiated power is 
     
       
           P =( ka ) 4   I   2 η(sin 2 θ)n 2 /(32 r   2 ) 
       
     
     and for a=0.05 (λ), this pattern has a null in the zenith direction and maximum strength in the horizontal direction (θ=+90 /−90). For a traveling wave loop (ka=1), the modes “reverse,” with a null in the horizon direction and a maximum in the vertical direction. For linear dipoles, the power can be written        P   =     2                 η                       I   2         (     4      π                 r     )     2            [         cos   2          (     π   2     )          cos                   θ   /     sin   2                     θ     ]                                
     for λ=4 L, and for large wavelengths (2 L&lt;&lt;λ) as        P   =         (   kL   )     2                         η                   I   2           (     4      π                   r   2       )                       sin   2                   θ                            
     In all cases, the radiation resistance R rad  can reveal the total radiated power by the formula          P     r                 ad       =         I   2     2                     R     r                 ad                                
     The electric field at a receiving antenna can be determined from the formula          E        (     v   /   m     )       =         1   r            P                   μ   o          c   /     (     2      π     )                         P     =     power                 in                 watts                              
     This allows the current that flows in the receiving antenna to be calculated. The absorbed power also traditionally can be determined from a reciprocity calculation which yields 
     
       
           P   abs   =P   rad   D D= directivity 
       
     
     A second key component is the communications processor. This unit provides a local oscillator to provide the carrier frequency for the communications system. Frequencies range from 100 MHz to 20 GHz, depending on the particular system (satellite, cellular, wireless, etc.). In addition, electronic circuitry is present to convert position or location (latitude, longitude) information (if available from GPS) into the proper carrier frequency modulation to encode the data. In addition, communications signal protocols are impressed on the carrier so that the receiving systems can open a phone link to the central monitoring unit. Identification codes also can appear in the carrier for phone link systems. For geo-location systems dependent on determining bearing to the beacon signal and/or Doppler information, only identification data needs to be encoded in the carrier. Also, included are amplifiers and impedance matchers for the antenna interface. This technology is well established; the unique feature in this invention is the micro-miniaturization to reduce the unit to the order of 1-2 centimeters in thickness. This can be accomplished via a full scale integrated circuitry concept, combining all key sub components on one board/chip. Since the unit will only broadcast intermittently, passive heat sinking can be utilized to reduce components to minimum size consistent with low duty cycle heating. 
     A third component of the device is a central processor unit (CPU) which controls the operation of the device. The major functions of the CPU include: device status (battery, test sequence, etc.), transfer of data to the communications processor, device activation (mechanical, voice code, timer, etc.), and control of the above device states. 
     Typical device status features include battery voltage and current capability (under load) testing at periodic intervals to ensure sufficient energy is available for beacon signals to exceed detection thresholds. In addition, proper operation of key sub components needs to be monitored. This can include presence of carrier signal at the local oscillator, modulation checks, and the presence of appropriate RF power at the antenna. To conserve power, test sequences would be activated manually prior to use. 
     The CPU will also transfer data from memory (identification codes and transmission protocols) to the communications processor. Data could include position information if GPS receivers are incorporated. The overall control of the device, via ROM programs resident in the CPU, allows the selection of key operating modes, test/status, and transmit. 
     There are several possible modes to activate the device. The simplest can be mechanical pressure (i.e., pushing a button), but care needs to be taken to prevent inadvertent activation by small children. This could include requiring multiple touches within a short time period for the beacon to turn on, which would greatly reduce the “false alarm” rate. Voice activation is another option, in case the holder of the device is bound and unable to reach the device with his hands. Again, a voice sequence that is not susceptible to accidental activation needs to be programmed into the device CPU. A third option is to have the device activate automatically after a fixed time intervat (that could be adjusted by the user). This would be the most reliable method, but would increase the likelihood of heavy beacon traffic in large population areas, and would also require more frequent recharging. Finally, the device could be activated by a transmitted signal to turn on the device for a single up-link broadcast. 
     Use of visible or IR beacons makes the implementation of the micro- miniaturization easier, since these radiation sources can be more compact, the radiation patterns are more easily tailored with gradient index lenses, as opposed to relatively large antennas for the radio-frequency spectrum, and the radiation can be easily modulated, in either amplitude or frequency, to encode the needed data and signal patterns. 
    
    
     DESCRIPTION OF THE DRAWINGS 
     FIG.  1 . is a diagram showing LEO communication satellites for receiving beacon signals and higher orbit global positioning satellites (GPS). 
     FIG.  2 . is a diagram showing terrestrial communications networks such as cellular telephone receiver modes or wireless radio data transmission system antennas. 
     FIG.  3 . shows several different beacon antenna configurations and radiation patterns. 
     FIG.  4 . shows a mechanical layout of a representative beacon design. 
     FIG.  5 . shows the logic flow for the CPU program controlling the activation of the communications control hardware and the associated events taking place in the communications processor. 
     FIG. 6 shows a composite illustration of prior art in geo-location for triangulation and Doppler techniques found in numerous textbooks and journal references. 
     FIG. 7 shows the basic geometry used in implementing a least squares solution for each of the novel geo-location algorithms described and listed in code form in the Appendix, and a notional emit signal protocol. 
     FIG. 8 contains basic error determination equations used in estimating geo-location errors for the Doppler technique, along with the estimated error magnitudes for an Iridium-like satellite constellation. 
     FIG. 9 illustrates the basic components of the geo-location technique which utilizes visible or IR radiation emitting beacons, and the basic time correlation measurement technique used for all timing signals. 
     FIG. 10 illustrates an application of the geo-location technique for use in autonomous docking of two spacecraft requiring multiple geo-location of reference points to provide both relative position and orientation. 
    
    
     DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS 
     The three major configurations or modes of operation for this micro-miniature emergency geo-location system are shown in FIGS. 1,  2 . The modes allowing global coverage are shown in FIG.  1 . The less complex mode utilizes a low earth orbit (LEO) satellite constellation, in which the signal emitted by the emergency beacon  2  is detected by several (&gt;2) satellites  4 , and the location of the beacon is determined from the Doppler shifts at the receiving satellites and the satellite positions (which are determined from on-board GPS receivers). 
     An optional configuration, which could reduce the number of LEO satellites, would utilize a constellation of GPS  6  satellites with a GPS receiver in the emergency beacon, which would then provide location information in the emitted beacon signal and, therefore, would only require one LEO receiving satellite to function. However, this mode requires a larger beacon unit to accommodate the GPS receiver unit. It also requires 30-60 seconds to determine a latitude/longitude data pair and good receipt of GPS signals from at least  3  GPS satellites. In high population areas, a third mode of operation is possible, which utilizes a network of local receivers or nodes  8 , as shown in FIG.  2 . 
     These nodes can be cellular telephone modes, or can be wireless antennas operating in a slightly different bandwidth. The cellular nodes are typically a few miles apart, whereas the wireless RF/radio links can receive signals up to 30 kilometers from the transmitting unit. Both systems rely on direction finding techniques to determine the location of the emergency beacon signal. 
     An operations center, or central ground monitoring station  3 , which is comprised of a satellite or network communications link, a monitoring and processing computer (for geo-location calculation, display of location on computer-stored GIS maps, and telephone lists of with user identification codes and emergency phone numbers), and a conventional modem/telephone link with automated dialing equipment to commercial telephone networks, is shown in FIGS. 1 and 2. The operations center is designed to receive information from all satellites  4 , or cellular nodes  8 , that pick up a signal from the emergency beacon  2 , and signals from all satellites or nodes that were able to receive the beacon signal are either down-linked directly or relayed via cross-link(s) to a satellite in position to down-link to the central monitoring station. Data received by this central ground station with the appropriate identification code is automatically collected by monitoring computer  5 , which then processes all data available, using Doppler, triangulation, or other techniques described herein (see Appendix with computer programs) or, if necessary, well known in the art, to provide a location for the emergency beacon. The location latitude/longitude are forwarded by the monitoring computer using a conventional telephone/modem system  7 , to pre-determined private security personnel or to the nearest local police via a pre-determined/stored message. 
     A system that utilizes visible or IR signals for geo-location is shown in FIG.  9 . Satellites with optical/IR detection telescopes  56 , or high flying surveillance aircraft with similar detection payloads  58  detect the emissions from missiles  54  or aircraft beacons  52 . The time of detection is recorded and the signals are relayed to the operations center or monitoring station  3  where the monitoring computer  5  processes the signals and calculates the location of the emitters. 
     The link budget margins for reception of the signal emitted by the beacon will determine the design of the beacon antenna and power supply. There are three antenna configurations that can be utilized, depending on the receiver network configurations shown in FIGS. 1,  2 . The three options shown in FIG. 3 are dipole, loop, and dielectric patch antennas. The dipole  10  will be more easily adapted to systems above a few GHz, since the half-wave size will be compatible with very small size (few centimeters). They can also be used at lower frequencies, or be sewn onto clothing. Below a few GHz, multi-turn loop antennas  12  can provide sufficient power at sizes small compared to wavelength. Patch antennas  14  provide a broader radiation pattern, but lower radiated power. An estimate of power levels at receivers can be made using a half-wave dipole, using the previously provided formulas. For a 1 GHz carrier, the power density for a 45 degree angle from zenith is          P        (     45      °     )       =         P     r                 a                 d       /       r   2          [           cos   2          (     cos                 45     )            (     π   /   2     )           sin   2                   45       ]         ≈         0.65                   P     r                 a                 d                        r   2                                
     For a slant path to an orbiting satellite of r=10 6  m, the power density per watt of radiated power will be 
     
       
           P =0.65 E -12  w/m   2   per watt   
       
     
     Assuming the receiver has radiation resistance R rad ≈(0.707) 73, then antenna voltages of 2.5×10 −6  v/m and currents of the order of 5×10 −8  amps would result per watt. For the 5 watt FCC limits, this would result in 0.25 microamps, which should be detectable by the satellite pre-amplifiers. Allowances must be made for obstructions and scattering/absorption, which will reduce received signal strengths. For local networks, such as cellular and RF/wireless receivers, the signal power has already been demonstrated to function adequately (since signals are about 10 3  times higher than the satellite case). A quarter wave monopole provides reduced attenuation. As is standard in the art, the particular antenna configuration selected will be impedance-matched to the carrier local oscillator, to ensure maximum transfer of oscillator power output to the antenna. 
     Battery technology will allow use of miniature Hg/Zn batteries, which approach energy densities of 50 watt-hr/lb, sufficient for intermittent operation over long (hours) periods of time, for weights of several ounces. They also have long storage life (&gt;4 years) when the device is not being used. 
     The central processor unit (CPU) and communications processor will utilize miniaturized versions of current cellular telephone technologies. However, since receive capability is not needed (unless command activated), the circuitry can be reduced in complexity, size, and power. When GPS accuracy is needed, an optional commercial GPS unit will be embedded, with simplifications based on elimination of display characteristics and potentially reduced numbers of satellite signals necessary for geo-location. 
     A mechanical layout of a representative beacon design is shown in FIG.  4 . The beacon can be placed in pockets, strapped to legs or wrists, or be Velcro-attached or sewn into clothing. The device can be disguised as a watch, if worn in an open/visible location. The batteries  16  power the CPU  18  and communications processor  20  (with local oscillator). The antenna  22  is shielded from the electronics by a metal ground plane  24  which enhances radiated power. A GPS unit  26  is optional. A test sequence button  28  allows the unit to be tested for readiness, and also serves to provide activation with multiple pushes. 
     The CPU  18  handles control of the device, voice processing for activation (if included), and data set-up for the communications processor (ID., phone protocol, and location data (optional, if applicable)). FIG. 5 contains a top-level flow diagram for the CPU functions that control the communications aspects of the beacon. The CPU provides the signal protocol, which requires an intermittent single burst coded signal pattern. This notional pattern, shown at the bottom of FIG. 7, consists of a sub-pattern consisting of a time period of pure carrier signal (for phase loop lock-in reception purposes), a period of modulated carrier with the detection protocol required by the communications satellite, another period of modulated carrier with the user identification code embedded, a period of pseudo-random pulse modulation (for correlation and transit time extraction), and a final period of pure carrier signal. This pattern is repeated n times in a burst (where n is determined by a high probability that one sub-pattern signal will fall into the acquisition gate of the satellite) to insure that the signal is received by the satellite and forwarded as a normal message. The pattern of n repetitions can be intermittently broadcast at predetermined intervals, or activated by either the user carrying the beacon or via an activation command transmitted to the beacon (in which case the emit burst can be synchronized with the satellite receive window). 
     A computer program logic flow to control the activation, operation and test for the emergency beacon is shown in FIG.  5 . The CPU is tied to the communications processor  20 , which in turn is connected to the antenna unit  22  via a multiplexor contained within the communications processor to control the receive mode (only used to detect the presence of an optional remote activation signal), or the transmit mode. The CPU also performs test functions when activated. 
     Geo-location Techniques 
     The novel geo-location techniques claimed in this invention can be segmented into two categories, which relate to the hardware implementation; radiofrequency (RF) and electro-optical (EO/IR). However, the mathematical techniques are almost identical. All of the techniques described below rely on implementation of least square methods, which can be found in many college-level mathematics textbook or mathematics handbooks. For GPS-type and other signal transit time systems (e.g., TOA and TDOA) which utilize a matrix solution approach, the least squares entity that is subsequently operated on by partial derivatives (this differentiated expression is then set to zero for a minimization solution) to extract the equation for the best fit geo-location parameters can be written as        T   =       ∑     i   =   1     4            [       (       D   i     _     )     -     ρ   i       ]     2                              
     where ρ i  represents the measured parameter (pseudo-range, transit time, etc.) and {overscore (D i +L )}={overscore (S i +L )}−{overscore (X i +L )} is the vector from the transmit location to the receiver satellite. The geometry is shown in FIG. 7 for both techniques. For Doppler techniques, the least square entity can be written as          ∑     i   =   1     4            [           (       D   i     _     )     ·     (       V     T   i       _     )       -   c     |     D   i     |     (       β                   f     m   i         -   1     )       ]     2                            
     where βf m     i    is the ratio of the measured frequency divided by the nominal transmit frequency, c is the speed of light, and V T  is the total velocity vector (satellite velocity plus the transmitter velocity due to the Earth rotation). Taking the partial derivatives of the above function with respect to the x, y and z coordinates yields the matrix equations for determining the best fit for the location of the transmitter. The matrix equations are shown coded in MathCad in the code listing section that follows. The above techniques do not require knowledge of the Earth terrain to determine a solution, provided that four measured independent parameters are available. This can be accomplished with as few as two satellites. 
     A more straight-forward approach can be used if the Earth terrain is known in the area of the transmit beacon. This approach utilizes a least square minimization of the difference between calculated and measured parameters (e.g., distance or time interval), determined over a grid which contains terrain altitude (above the Earth geoid) at each grid point. Due to Doppler effects from the rotating Earth, it should be possible to geo-locate with Doppler and TOA signals from one satellite. Alternatively, if accuracy can be relaxed, simple quadratic solid geometry equations (representing spheres, paraboloids and hyperboloids that can be generated from the measured parameters) can be used to solve for the transmit location with three independent parameters, as is frequently depicted in high school and college mathematics books showing how to solve for the intersection of simple quadratic surfaces. FIG. 6 illustrates the solid geometry approach as it relates to prior art references. The program for this grid-search minimization method is also shown in an Appendix below. 
     For geo-location determination of optical sources, the above techniques can be used after the basic parameter (time interval) is extracted from the measurement. In the case of non-cooperative sources (ones whose content cannot be programmed), a traditional radio-astronomy technique, called auto-correlation, is utilized to determine the time difference of signals detected at three or more satellites. A simple description of the technique is shown in the bottom of FIG.  9 . The correlation integral is equivalent to “sliding” the transmitted wave form over the received wave form in small steps and summing the product of the two. amplitudes. This sum peaks when the two sets of signals perfectly overlap the amount of time shift necessary gives the true time interval between transmission and reception of the signal. For the GPS/TDOA/TOA systems described above, the correlation integral can be done digitally (with a DSP signal processing chip) off-line at the monitoring center. The auto-correlation determines the time difference between signal arrivals to much greater accuracy than the clock sampling time intervals recorded with the signals by the satellite optical detectors. Most optical emissions, for example from a missile exhaust plume, are sufficiently random (i.e., the intensity as a function of time exhibits random fluctuations) so as to have an effectively infinite “repeat interval”, so that any time ambiguity from a pattern “alias” (such as the relatively short “C/A code” in a GPS system) should not occur. 
     Systems such as those described above can be used for cooperative high flying aircraft (e.g., for an FAA global passive tracking system), provided that the optical beacon has a sufficiently long pulse repetition interval. Detection can done with standard solid state detector focal plane arrays (FPAs) using visible or IR semiconductor materials (e.g., silicon compounds for visible, HgCdTe for IR). Sufficient number of pixels are necessary (e.g., &gt;1024×1024) to resolve closely spaced transmitting sources, which should be feasible for LEO satellites. The detailed design principles for such a detection system have been described by this inventor in U.S. Pat. No. 5,604,595, and thus will not be repeated in this specification. Since the geo-location calculation does not depend on precise direction measurements, the detection telescope alignment is not critical, which should lower satellite costs. In addition, narrow-band sources and detectors can be utilized, so that background signals from the ground or atmospheric phenomenon can be effectively suppressed. A notional system is shown in FIG.  9 . 
     It should be noted that the very precise geo-location achievable with current GPS and DGPS systems will not likely be necessary for emergency rescue applications. Geo-location errors no less than of the order of 100 meters are required. Thus tolerances on components may be relaxed to achieve micro-miniaturization, and satellite overlap coverage constraints may also be relaxed, allowing for less costly space systems. Precise error calculations have been programmed for the various techniques described, including errors from atmospheric effects, satellite state vector errors and instrument errors such as frequency and clock precision, and appear in a commercially available program (“GLM”, copyright May 1998). Initial error calculations for a Doppler system using an Iridium-like satellite constellation are shown in FIG.  8 . 
     It should be noted that for use of both the RF or visible/IR spectrum implementation of this invention, an alternate embodiment consistent with the principles of operation described herein and which can reduce the size and complexity of the beacon transmitter unit carried by a user, can operate as follows. For an RF system, the local oscillator or radiation source contained in the beacon unit can be removed, and the device can operate as an amplifier and re-transmission device, or transponder, which receives a signal from an off-user beacon unit at a distant location. This would allow a system at a central location(s) to provide the appropriate user ID encoded in the requisite pseudo-random signal to automatically trigger a geo-location determination, as opposed to in effect sending a request for geo-location, which then has to be processed by the beacon unit, and a beacon signal generated. This signal could be provided by one or more of the communications receiving nodes, which have to be capable of communications with the beacon in the preferred embodiment (to activate and/or receive a geo-location signal). In addition, the beacon unit no longer has to have the power and signal processing capability to generate a geo-location signal; it just has to amplify a received signal (if it has the correct ID) and re-transmit it, thus reducing power, weight and size constraints on a device which for some important applications, requires small, stealthy beacon units. 
     For a visible/IR system, the optical signal does not have to originate with the object to be located (e.g., missile plume or aircraft beacon). An alternate embodiment could consist of an optical source (e.g., a laser with telescope or “optical antenna”) which illuminates the object to be geo-located with the requisite pseudo-random optical signal, which is then reflected off of the object and in effect operates as a transponder (without amplification however). This embodiment could function for non-cooperative targets when no appropriate pseudo-random emissions are available for geo-location. The reflection off the object to be located can be from the natural reflectivity of the object surface, or for cooperative targets, can be enhanced by using retro-reflectors. Such a system can be applied to autonomous docking systems to resupply/repair satellites on orbit. For example, the satellites would have multiple retro-reflectors (each with slightly different frequencies “notches” to prevent ambiguity in the source of the received signals) at known locations relative to the docking mechanism, and the docking vehicle would have multiple laser transmitter(s) and receivers at known locations. With three or four sources and retro-reflectors the relative position and orientations of the two spacecraft could be determined and used to control thrusters to accomplish autonomous docking. 
     Another alternative embodiment of the invention can be utilized for geo-location in dense urban environments, in which beacon signal multi-pathing effects (e.g., reflections off of building surfaces) can lead to larger than desired geo-location errors). This technique would utilize an initial geo-location using the preferred embodiment, followed by a refined geo-location process utilizing the grid minimization technique shown in the Computer Code Appendix, which would include calculation and correction of multi-pathing effects. The topology of the buildings could be obtained from a computer file based on building blueprints, or created by photogrammetry of satellite or aerial images of the urban region. 
     Listing of Geo-location Computer Programs Appendix 
     MELS Geoloca Program 
     Case #1: Satellites With Doppler And Triangula (TOA) 
     Date: Sep. 28, 1996 
     Summary: This program is a prototype for the general satellite case and calculates position location from Doppler and TOA data from only one satellite. The read-in topography file is not yet implemented. 
     Program constants:        RadiusEarth   :=   6378             AltGrid     1   ,   1       :=   0.100           latitude   :=   38.8           longitude   :=     -   77.0             omegaEarth   :=     7.29              ·     10     -   5                 timesec   :=   0           timemin   :=   0           timehour   :=   0           time   :=       timehour   ·   3600     +     timemin   ·   60     +   timesec             SatPosVect   :=     (         0           0           7028         )             SatVelVect   :=     (         0           7.2           0         )             c   :=     2.997930              ·     10   5               freq   :=     240.50              ·     10   6               vorb   :=       |   SatVelVect   |              deltafreq     :=   4804.885115             toadif   :=     19420.602              ·     10     -   6                 xvec   :=     (         1           0           0         )             yvec   :=     (         0           1           0         )             zvec   :=     (         0           0           1         )             rho   :=     RadiusEarth   +     AltGrid     1   ,   1                 phi   :=         longitude   ·     π   180       +       time   ·   omegaEarth                     time   ·   omegaEarth         =   0             theta   :=             (     90.000   -   latitude     )     90.000     ·     π   2                     phi     =     -   1.343903524               RotMat   :=     (           rho   ·     sin        (   theta   )       ·     cos        (   phi   )             0       0           0         rho   ·     sin        (   theta   )       ·     sin        (   phi   )             0           0       0         rho   ·     cos        (   theta   )               )             X   :=     RotMat   ·   xvec             Y   :=     RotMat   ·   yvec             Z   :=     RotMat   ·   zvec               X   0     =     1.118163188   ·     10   3                 Y   1     =       -   4.843296871     ·     10   3                 Z   2     =     3.996541769   ·     10   3                           distrav   :=     c   ·   toadif                 costhDop   :=     [       (     deltafreq   freq     )     ·     c   vorb                     electden   :=     1   ·     10   6                   plasmaf   :=     8.98   ·     10   3     ·     electden                   plasmaf   =     8.98   ·     10   6                   costhinc   :=     π   100                   edenvect   :=     [           0.2   ·     10   6                 1.5   ·     10   6                 1.3   ·     10   6                 0.6   ·     10   6                 0.4   ·     10   6                 0.2   ·     10   6                 0.1   ·     10   6                 0.05   ·     10   6                 0.03   ·     10   6                 0.02   ·     10   6             ]             dh   :=     100   ·     10   3                           indexref   :=       1   -       (     plasmaf   freq     )     2                 TEC   :=       (     ∑   edenvect     )     ·       dh   ·     10   6         cos        (   costhinc   )                       indexref   =   0.999302661           TEC   =     4.402172206              ·     10   17                   freq2   :=   2.4           tiondelay   :=       40.3     c   ·     10   3     ·     freq   2         ·   TEC                 freq1   :=     freq     10   9               tiondelay   =     1.023105511              ·     10     -   6                     toadif2   :=     19400              ·     10     -   6                 tatmdelay   :=       (     1     |       1   c     -     1.003   c       |     ·   8         )       -   1                   kslope   :=       [     |       (       1     freq2   2       -     1     freq1   2         )       (     toadif2   -   toadif     )       |     ]       -   1               tatmdelay   =     8.005523811              ·     10     -   8                       kslope   =     1.203712159              ·     10     -   6                 delta0   :=       kslope   2     ·       |       1     freq   2       +     1     freq2   2         |       toadif   +   toadif2                 delta0   =     2.69158378              ·     10     -   6                 grpvel   :=     c     [     indexref   +       1   indexref     ·       (     plasmaf   freq     )     2         ]               grpvel   =     2.995839426              ·     10   5               GeoVect   :=     (           X   0               Y   1               Z   2           )             DifVec   :=     GeoVect   -   SatPosVect             cosang   :=       GeoVect   ·     DifVec     (     |   GeoVect   |     ·     |   DifVec   |         )                       Ionosphere                 angle             ang1   :=     acos        (   cosang   )               ang   :=       180   -         180   π     ·   ang1                   toaest       :=       |   DifVec   |     c               ang   =       109.822404269                 toaest     =   0.019420602             cosang2   :=       DifVec   ·     SatVelVect     (     |   DifVec   |     ·     |   SatVelVect   |         )                       Doppler                 angle               ang2   :=           acos        (   cosang2   )       ·     180   π                     ang2     =       146.291602191                 cosang2     =     -   0.8318729                              iondepth   :=   400           delta0p   :=         [         (     iondepth     cos        (     ang   ·     π   180       )         )       -   1         (       1   c     -     1   grpvel       )                  ]                    -   1                 delta0p   =     2.745681785              ·     10     -   6                                             
     This section calculates the differences between measured and actual values for the TOA and Doppler angle parameters: the sum of the two differences is calculated for each point on the earth surface grid, and the minimum sum determines the location coordinates. An altitude profile file must be input for the general area around the estimated location. 
     latstart:=38.75 
     longstart:=−77.15 
     initheta:=90−latstart 
     initphi:=longstat 
     deltaphi:=0.01 
     delta:=−0.01 
     oldmin:=10 9    
     thetasol:=0 
     phisol:=0        coscalc   :=       (     deltafreq   freq     )     ·     c   vorb                              
     coscalc=0.83187279 
     cosDop:=coscalc 
     cosDop=0.83187279 
     Dopang:=acos(cosDo)·180/π 
     Dopage=33.708397799 
     vorb=7.2 
     velmag:={square root over (SatVelVecta·SatVelVect)} 
     valmag=7.2 
     alt:=AltGrid 1.1    
     Start of loops 
     i:=0.10 
     j:=0.35 
     thetagrid i,j :=((−i)·deltatheta+inittheta)·180/π 
     phigrid i,j :=((j)·deltaphi+initphi)·180/π+time·omegaEarth 
     xg i,j :=RadiusEarth·sin(thetagrid i,j )·cos(phigrid i,j ) 
     yg i,j :=RadiusEarth·sin(thetagrid i,j )·sin(phigrid i,j ) 
     zg i,j :=radiusEarth·cos(thetagrid i,j ) 
     Take into account the velocity of the Earth&#39;s rotation          losx     i   ,   j       :=         SatPosVect   0     -       xg     i   ,   j                       losy     i   ,   j           :=         SatPosVect   1     -       yg     i   ,   j                       losz     i   ,   j           :=       SatPosVect   2     -     zg     i   ,   j                       omegx     i   ,   j       :=         yg     i   ,   j                       omegy     i   ,   j         :=     xg     i   ,   j                   omegv     i   ,   j       :=       (     RadiusEarth   +   alt     )     ·   omegaEarth   ·       (         omegx   ij     ·     losx     i   ,   j         +       omegy     i   ,   j       ·     losy     i   ,   j           )               (     losx     i   ,   j       )     2     +       (     losy     i   ,   j       )     2     +       (     losz     i   ,   j       )     2         ·           (     omegx     i   ,   j       )     2     +       (     omegy     i   ,   j       )     2                         satvel     i   ,   j       :=           SatVelVect   0     ·     losx     i   ,   j         +       SatVelVect   1     ·     losy     i   ,   j         +       SatVelVect   2     ·     losz     i   ,   j                   (     losx     i   ,   j       )     2     +       (     losy     i   ,   j       )     2     +       (     losz     i   ,   j       )     2                                  
     
       
         vrel i,j :=satvel i,j +omegv i,j   
       
     
     
       
         
           
             
               
                 cosDop 
                 
                   i 
                   , 
                   j 
                 
               
               := 
               
                 
                   ( 
                   
                     deltafreq 
                     freq 
                   
                   ) 
                 
                 · 
                 
                   c 
                   
                     vrel 
                     
                       i 
                       , 
                       j 
                     
                   
                 
               
             
              
             
                 
             
           
         
         
           
             
               min1 
               
                 i 
                 , 
                 j 
               
             
             := 
             
               
                 
                   
                     
                       [ 
                       
                         
                           ( 
                           
                             SatPosVect 
                             0 
                           
                           ) 
                         
                         - 
                         
                           ( 
                           
                             
                               xg 
                               
                                 i 
                                 , 
                                 j 
                               
                             
                             + 
                             
                               alt 
                               · 
                               
                                 
                                   xg 
                                   
                                     i 
                                     , 
                                     j 
                                   
                                 
                                 RadiusEarth 
                               
                             
                           
                           ) 
                         
                       
                       ] 
                     
                     2 
                   
                   + 
                   
                       
                   
                    
                   
                     
                       [ 
                       
                         
                           ( 
                           
                             SatPosVect 
                             1 
                           
                           ) 
                         
                         - 
                         
                           ( 
                           
                             
                               yg 
                               
                                 i 
                                 , 
                                 j 
                               
                             
                             + 
                             
                               alt 
                               · 
                               
                                 
                                   yg 
                                   
                                     i 
                                     , 
                                     j 
                                   
                                 
                                 RadiusEarth 
                               
                             
                           
                           ) 
                         
                       
                       ] 
                     
                     2 
                   
                   + 
                   
                       
                   
                    
                   
                     
                       [ 
                       
                         
                           ( 
                           
                             SatPosVect 
                             2 
                           
                           ) 
                         
                         - 
                         
                           ( 
                           
                             
                               zg 
                               
                                 i 
                                 , 
                                 j 
                               
                             
                             + 
                             
                               alt 
                               · 
                               
                                 
                                   zg 
                                   
                                     i 
                                     , 
                                     j 
                                   
                                 
                                 RadiusEarth 
                               
                             
                           
                           ) 
                         
                       
                       ] 
                     
                     2 
                   
                 
               
               - 
               
                 c 
                  
                 
                     
                 
                  
                 toadif 
               
             
           
         
         
           
             
               
                 min2 
                 
                   i 
                   , 
                   j 
                 
               
               := 
               
                 
                   
                     
                       
                         
                           
                             [ 
                             
                               
                                 [ 
                                 
                                   
                                     ( 
                                     
                                       SatPosVect 
                                       0 
                                     
                                     ) 
                                   
                                   - 
                                   
                                     ( 
                                     
                                       
                                         xg 
                                         
                                           i 
                                           , 
                                           j 
                                         
                                       
                                       + 
                                       
                                         alt 
                                         · 
                                         
                                           
                                             xg 
                                             
                                               i 
                                               , 
                                               j 
                                             
                                           
                                           RadiusEarth 
                                         
                                       
                                     
                                     ) 
                                   
                                 
                                 ] 
                               
                               · 
                               
                                 SatVelVect 
                                 0 
                               
                             
                             ] 
                           
                           2 
                         
                         + 
                         
                             
                         
                          
                         
                           
                             [ 
                             
                               
                                 [ 
                                 
                                   
                                     ( 
                                     
                                       SatPosVect 
                                       1 
                                     
                                     ) 
                                   
                                   - 
                                   
                                     ( 
                                     
                                       
                                         yg 
                                         
                                           i 
                                           , 
                                           j 
                                         
                                       
                                       + 
                                       
                                         alt 
                                         · 
                                         
                                           
                                             yg 
                                             
                                               i 
                                               , 
                                               j 
                                             
                                           
                                           RadiusEarth 
                                         
                                       
                                     
                                     ) 
                                   
                                 
                                 ] 
                               
                               · 
                               
                                 SatVelVec 
                                 1 
                               
                             
                             ] 
                           
                           2 
                         
                         + 
                         
                             
                         
                          
                         
                           
                             [ 
                             
                               
                                 [ 
                                 
                                   
                                     ( 
                                     
                                       SatPosVect 
                                       2 
                                     
                                     ) 
                                   
                                   - 
                                   
                                     ( 
                                     
                                       
                                         zg 
                                         
                                           i 
                                           , 
                                           j 
                                         
                                       
                                       + 
                                       
                                         alt 
                                         · 
                                         
                                           
                                             zg 
                                             
                                               i 
                                               , 
                                               j 
                                             
                                           
                                           RadiusEarth 
                                         
                                       
                                     
                                     ) 
                                   
                                 
                                 ] 
                               
                               · 
                               
                                 SatVelVect 
                                 2 
                               
                             
                             ] 
                           
                           2 
                         
                       
                     
                     - 
                   
                    
                   
                       
                   
                    
                   
                       
                   
                   | 
                   
                       
                   
                    
                   
                     
                       min1 
                       
                         i 
                         , 
                         j 
                       
                     
                     + 
                     
                       c 
                        
                       
                           
                       
                        
                       toadif 
                     
                   
                   | 
                   
                     · 
                     
                       | 
                       
                         vrel 
                         
                           i 
                           , 
                           j 
                         
                       
                       | 
                       
                         · 
                         
                           | 
                           
                             cosDop 
                             
                               i 
                               , 
                               j 
                             
                           
                           | 
                           
                               
                           
                            
                           
                             mintot 
                             
                               i 
                               , 
                               j 
                             
                           
                         
                       
                     
                   
                 
                 := 
                 
                   
                     
                       
                         ( 
                         
                           min1 
                           
                             i 
                             , 
                             j 
                           
                         
                         ) 
                       
                       2 
                     
                   
                   + 
                   
                     
                       
                         ( 
                         
                           min2 
                           
                             i 
                             , 
                             j 
                           
                         
                         ) 
                       
                       2 
                     
                   
                 
               
             
              
             
                 
             
           
         
                 
         
             
         
      
     
     M i,j :=mintot i,j    
     Geo:=min(M) 
     Geo=7.281331364·10 −5    
     k:=0 . . . 10 
     l:=0 . . . 35 
     Valx k,l :=if(M k,l =Geo, k, 0) 
     mthval:=max(Valx) 
     Valy k,l :=if(M k,l =Geo, 1, 0) 
     mphval:=max(Valy) 
     mthval=5 
     mphval =15 
     min1 5,15 =−6.858075085·10 −5    
     min2 5,15 =−4.232562787·10 −6    
     M 5,15 =7.281331364·10 −5    
     geolat:=mthval·deltatheta+latstart 
     geolon:=mphval·deltaphi+longstart 
     geolat=38.8 
     geolon=−77 
     This program calulates geolocation from four satellites using the A Z measured Dopple shifts at the satellites and an initial estimate of the location. It is directly analogous to the GPS approach. This mod replaces measured values in a matrix with calculated values and is identical to the original DPS program (Aug. 31, 1997).        freq0   :=     240.50              ·     10   6               lat   :=   38.8           lon   :=     -   77.0             omegaEarth   :=       0.0                 oE     :=     7.29              ·     10     -   5                   timesec   :=   0           timemin   :=   0           timehour   :=   0           time   :=       timehour   ·   3600     +     timemin   ·   60     +   timesec                   SatPosVect1   :=     (         0           0           7028         )             SatPosVect2   :=     (         0.0           4969.5465           4969.5465         )             SatPosVect3   :=     (           0                 .0                 -   4969                   .5465                            4969                 .5465             )             SatPosVect4   :=     (         4969.5465           0.0           4969.5465         )                 SatVelVect1   :=     (         0           7.2           0         )             SatVelVect2   :=     (         0                        5.0911688               -   5.0911688           )             SatVelVect3   :=     (         0           5.0911688           5.0911688         )             SatVelVect4   :=     (                        5                 .0911688               0.0               -   5                   .0911688           )                   c   :=     2.997930              ·     10   5               RadiusEarth   :=   6378           alt   :=   0.1           xvec   :=     (         1           0           0         )             yvec   :=     (         0           1           0         )             zvec   :=     (               0           0                 1         )             rho   :=     RadiusEarth   +   alt             phi   :=         lon   ·     π   180       +       time   ·   omegaEarth                     time   ·   omegaEarth         =   0             theta   :=             (     90.000   -   lat     )     90.000     ·     π   2                     phi     =     -   1.344               RotMat   :=     (           rho   ·     sin        (   theta   )       ·     cos        (   phi   )             0       0           0         rho   ·     sin        (   theta   )       ·     sin        (   phi   )             0           0       0         rho   ·     cos        (   theta   )               )             X   :=     RotMat   ·   xvec             Y   :=     RotMat   ·   yvec             Z   :=     RotMat   ·   zvec             X   =     (           1.118163188              ·     10   3               0           0         )             Y   =     (         0               -   4.843296871                ·     10   3               0         )             Z   =     (         0           0             3.996541769              ·     10   3             )             XP   :=     (           X   0               Y   1               Z   2           )                   Ve   :=     XP   ×     zvec   ·     (   omegaEarth   )                              fm1   :=     2.40504804885              ·     10   8                     Vtl   :=     Ve   +   SatVelVect1                          fm2   :=     2.40503637992              ·     10   8                     Vt2   :=     Ve   +   SatVelVect2                          fm3   :=     2.405023247783              ·     10   8                     Vt3   :=     Ve   +   SatVelVect3                          fm4   :=     2.405018767603              ·     10   8                     Vt4   :=     Ve   +   SatVelVect4                          freqdelm1   :=       fm1   -   freq0     freq0                                            freqdelm2   :=       fm2   -   freq0     freq0                                            freqdelm3   :=       fm3   -   freq0     freq0                                            freqdelm4   :=       fm4   -   freq0     freq0                     D1   :=           (       SatPosVect1   0     -     XP   0       )     2     +       (       SatPosVect1   1     -     XP   1       )     2     +       (       SatPosVect1   2     -     XP   2       )     2                 D2   :=           (       SatPosVect2   0     -     XP   0       )     2     +       (       SatPosVect2   1     -     XP   1       )     2     +       (       SatPosVect2   2     -     XP   2       )     2                 D3   :=           (       SatPosVect3   0     -     XP   0       )     2     +       (       SatPosVect3   1     -     XP   1       )     2     +       (       SatPosVect3   2     -     XP   2       )     2                 D4   :=           (       SatPosVect4   0     -     XP   0       )     2     +       (       SatPosVect4   1     -     XP   1       )     2     +       (       SatPosVect4   2     -     XP   2       )     2                       D1v   :=     (             SatPosVect1   0     -     XP   0                   SatPosVect1   1     -     XP   1                   SatPosVect1   2     -     XP   2             )                             D2v   :=     (             SatPosVect2   0     -     XP   0                   SatPosVect2   1     -     XP   1                   SatPosVect2   2     -     XP   2             )                          cs1   :=                  D1v   ·   Vt1       |   Vt1   |     ·     |   D1v   |                         D3v   :=     (             SatPosVect3   0     -     XP   0                   SatPosVect3   1     -     XP   1                   SatPosVect3   2     -     XP   2             )                          cs2   :=                  D2v   ·   Vt2       |   Vt2   |     ·     |   D2v   |                                    D4v   :=     (             SatPosVect4   0     -     XP   0                   SatPosVect4   1     -     XP   1                   SatPosVect4   2     -     XP   2             )                          cs3   :=                  D3v   ·   Vt3       |   Vt3   |     ·     |   D3v   |                                                             cs4   :=                  D4v   ·   Vt4       |   Vt4   |     ·     |   D4v   |                             A   :=     (               Vt1   0     -     |   Vt1   |       ·   cs1     ·       D1v   0     D1                   Vt1   1     -     |   Vt1   |       ·   cs1     ·       D1v   1     D1                   Vt1   2     -     |   Vt1   |       ·   cs1     ·       D1v   2     D1               c   ·   D1   ·     (       |   Vt1   |       ·     cs1   c       +   1       freq0     )                     Vt2   0     -     |   Vt2   |       ·   cs2     ·       D2v   0     D2                   Vt2   1     -     |   Vt2   |       ·   cs2     ·       D2v   1     D2                   Vt2   2     -     |   Vt2   |       ·   cs2     ·       D2v   2     D2               c   ·   D2   ·     (       |   Vt2   |       ·     cs2   c       +   1       freq0     )                     Vt3   0     -     |   Vt3   |       ·   cs3     ·       D3v   0     D3                   Vt3   1     -     |   Vt3   |       ·   cs3     ·       D3v   1     D3                   Vt3   2     -     |   Vt3   |       ·   cs3     ·       D3v   2     D3               c   ·   D3   ·     (       |   Vt3   |       ·     cs3   c       +   1       freq0     )                     Vt4   0     -     |   Vt4   |       ·   cs4     ·       D4v   0     D4                   Vt4   1     -     |   Vt4   |       ·   cs4     ·       D4v   1     D4                   Vt4   2     -     |   Vt4   |       ·   cs4     ·       D4v   2     D4               c   ·   D4   ·     (       |   Vt4   |       ·     cs4   c       +   1       freq0     )             )                                GEOM   :=         (       A   T     ·   A     )       -   1       ·     A   T               A   =     [         1.15       2.218         -   3.119         7.258           0.511       0.607         -   5.536         12.371           2.178       5.337       3.196       1.854           3.653         -   1.809           -   5.455         7.808         ]                 L   :=     [             D1v   ·   Vt1     -     c   ·   D1   ·   freqdelm1                   D2v   ·   Vt2     -     c   ·   D2   ·   freqdelm2                   D3v   ·   Vt3     -     c   ·   D3   ·   freqdelm3                   D4v   ·   Vt4     -     c   ·   D4   ·   freqdelm4             ]             GEOM   =     [           -   0.051             -   0                   .138         0.118       0.239           0.614           -   0                   .28           -   0.074           -   0.111               -   0.774           0                 .399         0.283       0.019             -   0.374           0                 .279         0.125       0.004         ]                   DR   :=     GEOM   ·   L             L   =     [           8.305              ·     10     -   4                     -   5.465                ·     10     -   4                     -   1.141                ·     10     -   4                     -   1.745                ·     10     -   4               ]             DR   =     [             -   2.201                ·     10     -   5                   6.907              ·     10     -   4                     -   8.966                ·     10     -   4                     -   4.784                ·     10     -   4               ]                            
     This program calulates geolocation from two satellites using the measured transit times and Doppler shifts at the satellites and an initial estimate of the location. It is directly analogous to the GPS approach. This mod replaces measured values in a matrix with calculated values and is identical to the original DPS/TDOA program (Sep. 5, 1997).        freq0   :=     240.50              ·     10   6               lat   :=   38.9           lon   :=     -   77.0             omegaEarth   :=       0.0                 oE     :=     7.29              ·     10     -   5                   timesec   :=   0           timemin   :=   0           timehour   :=   0           time   :=       timehour   ·   3600     +     timemin   ·   60     +   timesec                   SatPosVect1   :=     (         0           0           7028         )             SatPosVect2   :=     (         0.0           4969.5465           4969.5465         )             SatPosVect3   :=     (           0                 .0                 -   4969                   .5465                            4969                 .5465             )             SatPosVect4   :=     (         4969.5465           0.0           4969.5465         )                 SatVelVect1   :=     (         0           7.2           0         )             SatVelVect2   :=     (         0                        5.0911688               -   5.0911688           )             SatVelVect3   :=     (         0           5.0911688           5.0911688         )             SatVelVect4   :=     (                        5                 .0911688               0.0               -   5                   .0911688           )                   c   :=     2.997930              ·     10   5               RadiusEarth   :=   6378           alt   :=   0.1           xvec   :=     (         1           0           0         )             yvec   :=     (         0           1           0         )             zvec   :=     (               0           0                 1         )             rho   :=     RadiusEarth   +   alt             phi   :=         lon   ·     π   180       +       time   ·   omegaEarth                     time   ·   omegaEarth         =   0             theta   :=             (     90.000   -   lat     )     90.000     ·     π   2                     phi     =     -   1.344               RotMat   :=     (           rho   ·     sin        (   theta   )       ·     cos        (   phi   )             0       0           0         rho   ·     sin        (   theta   )       ·     sin        (   phi   )             0           0       0         rho   ·     cos        (   theta   )               )             X   :=     RotMat   ·   xvec             Y   :=     RotMat   ·   yvec             Z   :=     RotMat   ·   zvec             X   =     (           1.116592389              ·     10   3               0           0         )             Y   =     (         0               -   4.836492993                ·     10   3               0         )             Z   =     (         0           0             4.005211178              ·     10   3             )             XP   :=     (           X   0               Y   1               Z   2           )                   Ve   :=     XP   ×     zvec   ·     (   omegaEarth   )                              fm1   :=     2.40504804885              ·     10   8                     Vtl   :=     Ve   +   SatVelVect1                          fm2   :=     2.40503637992              ·     10   8                     Vt2   :=     Ve   +   SatVelVect2                          fm3   :=     2.405023247783              ·     10   8                     Vt3   :=     Ve   +   SatVelVect3                          fm4   :=     2.405018767603              ·     10   8                     Vt4   :=     Ve   +   SatVelVect4                          freqdelm1   :=       fm1   -   freq0     freq0                                            freqdelm2   :=       fm2   -   freq0     freq0                                            freqdelm3   :=       fm3   -   freq0     freq0                                            freqdelm4   :=       fm4   -   freq0     freq0                     D1   :=           (       SatPosVect1   0     -     XP   0       )     2     +       (       SatPosVect1   1     -     XP   1       )     2     +       (       SatPosVect1   2     -     XP   2       )     2                 D2   :=           (       SatPosVect2   0     -     XP   0       )     2     +       (       SatPosVect2   1     -     XP   1       )     2     +       (       SatPosVect2   2     -     XP   2       )     2                 D3   :=           (       SatPosVect3   0     -     XP   0       )     2     +       (       SatPosVect3   1     -     XP   1       )     2     +       (       SatPosVect3   2     -     XP   2       )     2                 D4   :=           (       SatPosVect4   0     -     XP   0       )     2     +       (       SatPosVect4   1     -     XP   1       )     2     +       (       SatPosVect4   2     -     XP   2       )     2                       D1v   :=     (             SatPosVect1   0     -     XP   0                   SatPosVect1   1     -     XP   1                   SatPosVect1   2     -     XP   2             )                                         D2v   :=     (             SatPosVect2   0     -     XP   0                   SatPosVect2   1     -     XP   1                   SatPosVect2   2     -     XP   2             )                          cs1   :=                  D1v   ·   Vt1       |   Vt1   |     ·     |   D1v   |                     t1   :=   0.019420602               D3v   :=     (             SatPosVect3   0     -     XP   0                   SatPosVect3   1     -     XP   1                   SatPosVect3   2     -     XP   2             )                          cs2   :=                  D2v   ·   Vt2       |   Vt2   |     ·     |   D2v   |                                t2   :=   0.03310337               D4v   :=     (             SatPosVect4   0     -     XP   0                   SatPosVect4   1     -     XP   1                   SatPosVect4   2     -     XP   2             )                          cs3   :=                  D3v   ·   Vt3       |   Vt3   |     ·     |   D3v   |                                cs1   =   0.832                                        cs4   :=                  D4v   ·   Vt4       |   Vt4   |     ·     |   D4v   |                     cs2   =   0.63                   A   :=     (             D1v   0       |   D1v   |               D1v   1       |   D1v   |               D1v   2       |   D1v   |             1   ·     c     freq0   2                       D2v   0       |   D2v   |       -       D1v   0       |   D1v   |                   D2v   1       |   D2v   |       -       D1v   1       |   D1v   |                   D2v   2       |   D2v   |       -       D1v   2       |   D1v   |                 -   1     ·     c     freq0   2                       Vt1   0     -     |   Vt1   |       ·   cs1     ·       D1v   0     D1                   Vt1   1     -     |   Vt1   |       ·   cs1     ·       D1v   1     D1                   Vt1   2     -     |   Vt1   |       ·   cs1     ·       D1v   2     D1               c   ·   D1   ·     (       |   Vt1   |       ·     cs1   c       +   1       freq0     )                     Vt2   0     -     |   Vt2   |       ·   cs2     ·       D2v   0     D2                   Vt2   1     -     |   Vt2   |       ·   cs2     ·       D2v   1     D2                   Vt2   2     -     |   Vt2   |       ·   cs2     ·       D2v   2     D2               c   ·   D2   ·     (       |   Vt2   |       ·     cs2   c       +   1       freq0     )             )                          A   =     [             -   0.                   192         0.832                    0.52           5.                   183              ·     10     -   12                     0.                 08         0.157         -              0.423             -   5.                     183              ·     10     -   12                     1.                 151         2.214         -              3.116           7.                 245               0.                 511         0.602         -              5.533           12.                 361           ]             GEOM   :=         (       A   T     ·   A     )       -   1       ·     A   T               L   :=     [           |   D1v   |       -   t1     ·   c                 |   D2v   |     -     |   D1v   |       -     (     t2   -   t1     )       ·   c                       D1v   ·   Vt1     -     c   ·   D1   ·   freqdelm1                   D2v   ·   Vt2     -     c   ·   D2   ·   freqdelm2             ]             GEOM   =     [             -   1.                   771             -   1.                   895         0.952           -   0.                   558               0.                 813           1.                 026         0.088           -   0.                   051                 -   0.                   032             -   2.                   341         0.211           -   0.                   124               0.                 019             -   1.                   019         0.051         0.                 051           ]             DR   :=     GEOM   ·   L             L   =     [             -   10.                   474               2.                 723               13.                 749               44.                 649           ]             DR   =     [           1.                 573                 -   6.                   807                 -   8.                   666               1.                   231              ·     10     -   4                 ]                            
     This program calulates geolocation from four satellites using the time difference of arrival (TDOA) at the satellites and an initial estimate of the location. It is necessary to correct for atmospheric effects in the same manner as GPS. It assumes an “inaccurate” clock signal is transmitted by the beacon, which is corrected via the algorithm technique. It is directly analogous to the GPS approach (Sep. 1, 1997).        freq0   :=     240.50              ·     10   6               lat   :=   38.8           lon   :=     -   77.0             omegaEarth   :=       0.0                 oE     :=     7.29              ·     10     -   5                   timesec   :=   0           timemin   :=   0           timehour   :=   0           time   :=       timehour   ·   3600     +     timemin   ·   60     +   timesec                   SatPosVect1   :=     (         0           0           7028         )             SatPosVect2   :=     (         0.0           4969.5465           4969.5465         )             SatPosVect3   :=     (           0                 .0                 -   4969                   .5465                            4969                 .5465             )             SatPosVect4   :=     (         4969.5465           0.0           4969.5465         )                 SatVelVect1   :=     (         0           7.2           0         )             SatVelVect2   :=     (         0                        5.0911688               -   5.0911688           )             SatVelVect3   :=     (         0           5.0911688           5.0911688         )             SatVelVect4   :=     (                        5                 .0911688               0.0               -   5                   .0911688           )                   c   :=     2.997930              ·     10   5               RadiusEarth   :=   6378           alt   :=   0.1           xvec   :=     (         1           0           0         )             yvec   :=     (         0           1           0         )             zvec   :=     (               0           0                 1         )             rho   :=     RadiusEarth   +   alt             phi   :=         lon   ·     π   180       +       time   ·   omegaEarth                     time   ·   omegaEarth         =   0             theta   :=             (     90.000   -   lat     )     90.000     ·     π   2                     phi     =     -   1.344               RotMat   :=     (           rho   ·     sin        (   theta   )       ·     cos        (   phi   )             0       0           0         rho   ·     sin        (   theta   )       ·     sin        (   phi   )             0           0       0         rho   ·     cos        (   theta   )               )             X   :=     RotMat   ·   xvec             Y   :=     RotMat   ·   yvec             Z   :=     RotMat   ·   zvec             X   =     (           1.118163188              ·     10   3               0           0         )             Y   =     (         0               -   4.843296871                ·     10   3               0         )             Z   =     (         0           0             3.996541769              ·     10   3             )             XP   :=     (           X   0               Y   1               Z   2           )                   Ve   :=     XP   ×     zvec   ·     (   omegaEarth   )                              fm1   :=     2.40504804885              ·     10   8                     Vtl   :=     Ve   +   SatVelVect1                          fm2   :=     2.40503637992              ·     10   8                     Vt2   :=     Ve   +   SatVelVect2                          fm3   :=     2.405023247783              ·     10   8                     Vt3   :=     Ve   +   SatVelVect3                          fm4   :=     2.405018767603              ·     10   8                     Vt4   :=     Ve   +   SatVelVect4                          freqdelm1   :=       fm1   -   freq0     freq0                                            freqdelm2   :=       fm2   -   freq0     freq0                                            freqdelm3   :=       fm3   -   freq0     freq0                                            freqdelm4   :=       fm4   -   freq0     freq0                     D1   :=           (       SatPosVect1   0     -     XP   0       )     2     +       (       SatPosVect1   1     -     XP   1       )     2     +       (       SatPosVect1   2     -     XP   2       )     2                 D2   :=           (       SatPosVect2   0     -     XP   0       )     2     +       (       SatPosVect2   1     -     XP   1       )     2     +       (       SatPosVect2   2     -     XP   2       )     2                 D3   :=           (       SatPosVect3   0     -     XP   0       )     2     +       (       SatPosVect3   1     -     XP   1       )     2     +       (       SatPosVect3   2     -     XP   2       )     2                 D4   :=           (       SatPosVect4   0     -     XP   0       )     2     +       (       SatPosVect4   1     -     XP   1       )     2     +       (       SatPosVect4   2     -     XP   2       )     2                 D1v   :=     (             SatPosVect1   0     -     XP   0                   SatPosVect1   1     -     XP   1                   SatPosVect1   2     -     XP   2             )             D2v   :=     (             SatPosVect2   0     -     XP   0                   SatPosVect2   1     -     XP   1                   SatPosVect2   2     -     XP   2             )             D3v   :=     (             SatPosVect3   0     -     XP   0                   SatPosVect3   1     -     XP   1                   SatPosVect3   2     -     XP   2             )             D4v   :=     (             SatPosVect4   0     -     XP   0                   SatPosVect4   1     -     XP   1                   SatPosVect4   2     -     XP   2             )                   t11   :=       |   D1v   |     c             t22   :=       |   D2v   |     c             t33   :=       |   D3v   |     c             t44   :=       |   D4v   |     c                 t1   :=   0.019420602           t2   :=   0.033103370           t3   :=   0.004962104           t4   :=   0.020894343                   A   :=     (             D1v   0       |   D1v   |               D1v   1       |   D1v   |               D1v   2       |   D1v   |             1   ·   c                   D2v   0       |   D2v   |       -       D1v   0       |   D1v   |                   D2v   1       |   D2v   |       -       D1v   1       |   D1v   |                   D2v   2       |   D2v   |       -       D1v   2       |   D1v   |                 -   1     ·   c                   D3v   0       |   D3v   |       -       D1v   0       |   D1v   |                   D3v   1       |   D3v   |       -       D1v   1       |   D1v   |                   D3v   2       |   D3v   |       -       D1v   2       |   D1v   |                 -   1     ·   c                   D4v   0       |   D4v   |       -       D1v   0       |   D1v   |                   D4v   1       |   D4v   |       -       D1v   1       |   D1v   |                   D4v   2       |   D4v   |       -       D1v   2       |   D1v   |                 -   1     ·   c           )                          GEOM   :=         (       A   T     ·   A     )       -   1       ·     A   T               A   =     [             -   0.                   192           0.                 832                      0.521           2.                   998              ·     10   5                   0.                 079           0.                 157           -              0.423             -   2.                     998              ·     10   5                     -   0.                   56             -   0.                   917                      0.133             -   2.                     998              ·     10   5                   0.                 807             -   0.                   059           -              0.365             -   2.                     998              ·     10   5               ]               L   :=     [           |   D1v   |       -              c     ·   t1                 |   D2v   |     -     |   D1v   |       -     (     t2   -   t1     )       ·   c                     |   D3v   |     -     |   D1v              |       -     (     t3   -   t1     )       ·   c                     |   D4v   |     -     |   D1v              |       -     (     t4   -   t1     )       ·   c                 ]                          GEOM   =     [           0.                 112             -   0.                   998             -   0                   .15           1                 .26               0.                 849           0.                 998             -   0                   .15           0                          1.                 768             -   1.                   018           1                 .337           1                 .449                 -   2.                     019              ·     10     -   6                   -   1.                     642              ·     10     -   6                   -   2                     .003              ·     10     -   6                   -   1                     .708              ·     10     -   6                 ]             DR   :=     GEOM   ·   L             L   =     [             -   6.858                ·     10     -   5                     -   2.304                ·     10     -   5                   1.681              ·     10     -   4                     -   3.593                ·     10     -   5               ]             DR   =     [             -              5.515                ·     10     -   5                     -              1.064                ·     10     -   4                                7.497              ·     10     -   5                       -              9.911                ·     10     -   11               ]                            
     Angular Measurement And General Error Formulas Used In The GPS Technique As Shown In The Computer Code Appendix: 
     The following preface contains the triangulation formulas that allow the GPS least squares technique to be used with angular measurements (Doppler angle or zenith/nadir reference angles for direction of signal reception) to replace the pseudo-range measurements. The following formulas allow the calculation of the range parameter D from the angular parameter; at that point the techniques becomes identical to the GPS equations, also shown in the computer code appendix modified for each of the new techniques claimed. 
     In addition, the generalized technique for position error calculation is shown for an angular measurement case; the technique is identical to the normal GPS error calculation in which the range equation is the standard GPS equation (symbols defined in the Specification/FIG. # 7  ) 
     
       
         {overscore (D)}={overscore (S)}−{overscore (X)} 
       
     
     without converion to angle-explicit form as shown below. 
     1. Geometry expressed in triangle law form: 
     
       
         | {overscore (X)}|   2   ={overscore (S)}|   2   +|{overscore (D)}|   2 −2 |{overscore (S)}||{overscore (D)} | cos(θ z ) 
       
     
     Solving for D yields the following equation: 
     
       
           |{overscore (D)}|=|{overscore (S)} | cos(θ z )+{square root over (| {overscore (X)})}|   2   +|{overscore (S)}|   2  sin 2 (θ z ) 
       
     
     The measured value of D is replaced by the above calculated value of D using the measured angle. Then the standard GPS matrices are calculated. 
     2. The errors are calculated as follows using partial differentiation:               D   x       =           ∂   D       ∂     S   x                   S   x         +         ∂   D       ∂     X   x                   X   x         +         ∂   D       ∂     θ   z                   θ   z                                  
     Taking the partial derivatives of the formula for D above in 1 yields:                 X   x          [     1   -       X   x         |     X   _          |   2          +     |     S   _          |   2                     sin        (     θ   z     )                   ]         =                         S   x          [     1   -         S   x          cos        (     θ   z     )           |   S   |       -         S   x            sin   2          (     θ   z     )             |     X   _          |   2          +     |     S   _          |   2          sin        (     θ   z     )                   ]         +                                             θ   z          [     |   S   |       sin        (     θ   z     )       -         sin        (     θ   z     )            cos        (     θ   z     )             |     X   _          |   2          +     |     S   _          |   2          sin        (     θ   z     )                     ]                                  
     These errors are used with the standard GPS GDOP (geometrical dilution of precision) matrix errors to determine the total position location error. 
     The general error formula for the Doppler technique uses the above partial derivative definition with the Doppler formula shown in this computer Appendix to arrive at equations somewhat similar to those above.