Patent Publication Number: US-9846241-B2

Title: Navigation system and method using RTK with data received from a mobile base station

Description:
RELATED APPLICATIONS 
     This application is a continuation-in-part of U.S. patent application Ser. No. 13/115,851, filed May 25, 2011, which claims priority to U.S. Provisional Patent Application No. 61/369,596, filed Jul. 30, 2010, “System and Method for Moving-Base RTK Measurements,” which are hereby incorporated by reference in their entirety. 
    
    
     TECHNICAL DATA FIELD 
     The disclosed embodiments relate generally to satellite communications. More particularly, the disclosed embodiments relate to moving-base real-time kinematic (RTK) measurement. 
     BACKGROUND 
     Conventional real-time kinematic (RTK) techniques used in many navigation applications such as land and hydrographic surveys are based on the use of carrier phase measurement signals received from a number of satellites. The conventional RTK technique used for navigating a moving object receiver (e.g., a ship, a car, etc.) requires a stationary base receiver (often called the base station) to periodically broadcast its satellite data to the moving object receiver. The moving object receiver compares its own phase measurements with the ones received from the base station, and uses that information plus the position of the base station to determine the position of the moving object receiver. Communications between the base station and the rover receiver can take place via radio communication using allocated frequencies, typically in the UHF band. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a block diagram illustrating moving-base RTK system, according to some embodiments; 
         FIG. 2A  is a block diagram illustrating a moving object system of the moving-base RTK system of  FIG. 1 , according to some embodiments; 
         FIG. 2B  is a block diagram illustrating a moving base (mobile base station) system of the moving-base RTK system of  FIG. 1 , according to some embodiments; 
         FIG. 3  is a timing diagram illustrating timing of position signals as transmitted from the moving base and received and processed at the moving object, according to some embodiments; 
         FIG. 4  is block diagram illustrating a data structure of a message database that stores messages communicated in the moving-base RTK system, according to some embodiments; 
         FIGS. 5A-5C  are block diagrams illustrating data structures for data received from a moving base, an optional moving base position database, and an optional moving object position database, according to some embodiments; 
         FIG. 6  is block diagram illustrating a data structure of a relative position database, according to some embodiments; and 
         FIGS. 7A-7C  are flowcharts of a method for moving-base RTK measurement, according to some embodiments. 
     
    
    
     SUMMARY 
     Some embodiments provide a system, computer readable storage medium storing instructions, or a computer-implemented method for navigating a moving object according to signals from satellites. A moving object (also referred to herein as a “rover”) receives satellite navigation signals from a number of satellites and generates satellite navigation data for the moving object from the received satellite navigation signals. The moving object also receives mobile base data from a moving base (also referred to herein as a mobile base station). The received mobile base data includes satellite measurement data of the mobile base stations. At the moving object a relative position (e.g., a relative position vector that connects a position of the moving base to a position of moving object) of the moving object relative to the mobile base station is determined, based on the received mobile base data and the received satellite navigation data. In some embodiments, the moving object reports information corresponding to the relative position and/or a current position of the moving object by sending a signal to a home system. 
     In some embodiments, both the mobile base data received from the moving base and the satellite navigation data for the moving object include data for a first specific time (e.g., an epoch) prior to the current time. As described in more detail below, the relative position is then determined by generating an RTK value for the relative position for the first specific time, using the moving base data received from the mobile base and the satellite navigation data for the moving object for the first specific time. 
     The moving-base RTK method and system described herein can be used in a wide range of applications, such as maintaining a fixed distance between two vehicles (e.g., a moving object such as a rover and a moving base such as a truck) or other mobile systems, maintaining a fixed relative position (e.g., a position difference vector in two-dimensions or three-dimensions) between two vehicles or other systems, or maintaining a fixed velocity difference between two vehicles or other systems. 
     In some embodiments, the satellite navigation data for the moving object includes code measurements and carrier phase measurements for the plurality of satellites, and the system includes a first receiver and a first transmitter. Furthermore, satellite navigation data generated by the system for the moving object includes code measurements (e.g., pseudoranges) and carrier phase measurements for the plurality of satellites. In accordance with the satellite navigation data for the moving object and the received mobile base data, the system performs a real-time kinematic (RTK) computation process to resolve carrier phase ambiguities and determine a relative position of the moving object relative to the mobile base station. The system furthermore sends, via a transmitter of the moving object, a signal reporting information corresponding to the relative position. 
     DESCRIPTION OF EMBODIMENTS 
       FIG. 1  is a block diagram illustrating moving-base RTK system  100 , according to some embodiments. Moving-base RTK system  100  enables a moving object  110  (e.g., a rover such as a boat, a robot, a haul, etc.) to determine, at any point of time, its current relative position with respect to a moving base  120  (e.g., a ship, a command vehicle, a truck, etc.), instead of a stationary base that conventional RTK navigation systems use. Moving base  120  is sometimes called a mobile base, mobile base station, or mobile reference receiver. Moving object  110  and mobile base station  120  are both equipped with satellite receivers, including satellite antennas  130  and  140 , respectively, to receive satellite navigation signals from at least four satellites  115 . The satellite navigation signals received by mobile base station  120  and moving object  110  are typically global navigation satellite system (GNSS) signals, such as Global Positioning System (GPS) signals at the 1575.42 MHz L 1  signal frequency and the 1227.6 MHz L 2  signal frequency. In some embodiments, moving object  110  and mobile base station  120  are also both equipped with communication interfaces, such as communication interfaces that include a radio transmitter and receiver, for transmitting data from mobile base station  120  to moving objection  110 , and for moving object  110  to communicate with external systems (e.g., for transmitting position information, such as relative position information concerning the relative position of moving objection  110  with respect to mobile base station  120 ). In some embodiments, moving base  120  includes a communication interface (e.g.,  208 ,  FIG. 2A ) that includes a transmitter or transceiver for communicating with a computer system via a wired communication medium or local area network. 
     Moving base  120  measures the received satellite navigation signals at the specific times and communicates those measurements (e.g., code measurements or code measurement-based pseudoranges to each of the satellites, and carrier phase measurements) at certain specific times (e.g., times, t 0  to t k , shown in  FIG. 3 ) to moving object  110 , using communication channel  150  (e.g., a wireless communication channel, or more specifically a radio communication channel such as a UHF radio). Optionally, moving base  120  determines its position at predefined times (e.g., the same times that the satellite signal measurements are sent, or other times) using the satellite navigation signals received from satellites  115  and communicates its position at those times to moving object  110 , using the communication channel  150 . However, in many embodiments, communication of the moving base position by moving base  120  to moving object  110  is not necessary. 
     Moving object  110  determines its relative position with respect to moving base  120 , based on (A) satellite navigation signals received by moving object  110  from satellites  115  and (B) the satellite signal measurement data received from moving base  120 . The relative position determined by moving object  110  is represented by a differential position value, such as a relative position vector. In the following discussion, and throughout this document, the term “relative position vector” means the “relative position vector between moving object  110  and moving base  120 , or vice versa.” It is noted that the relative position vector between moving object  110  and moving base  120  is the same as the relative position vector between moving base  120  and moving object  110 , multiplied by minus one. Thus, both relative position vectors convey the same information so long as the starting point and ending point (i.e., which end of the vector at is moving base  120  and which end is at moving object  11 ) are known. 
     In some embodiments, moving object  110  is configured to generate a relative position vector for any specified time by 1) determining a relative position vector between moving object  110  and moving base  120  at predefined times or intervals (e.g., at one second intervals), herein called epoch boundary times; and 2) combining the relative position vector at a last epoch boundary time prior to the specified time with the change in position at moving object  110  and the change in position (or the estimated change in position, as explained below) at moving base  120  between the specified time and the prior epoch boundary time. This process, sometimes herein called time synchronized RTK, generates an accurate (e.g., within a few centimeters) relative position vector between moving object  110  and moving base  120  at any specified time that is between epoch boundary times (e.g., the current time, or an earlier time after the last epoch boundary time). In some implementations, a system such as moving object  110  is configured to generate updated relative position vectors at a rate that is greater than or equal to 10 Hz (e.g., an updated relative position vector is generated every 100 milliseconds when the update rate is 10 Hz, 40 milliseconds when the update rate is 25 Hz, or every 20 milliseconds when the update rate is 50 Hz). 
     In some embodiments, moving object  110  reports a relative position vector and/or a current position of moving object  110  to home system  160 . Home system  160  may be a server or a client system (e.g., a desktop, a laptop, a cell phone, a tablet, a personal digital assistant (PDA), etc.). In some embodiments, the home system is located in moving object  110  or moving base  120 . Home system  160  is optionally linked to a network such as the Internet. Optionally, home system  160  is configured to control movement of moving object  110  (e.g., by controlling steering and/or propulsion systems  112  of moving object  110 ), or to control movement of moving base  120  (e.g., by controlling steering and/or propulsion systems  122  of moving base  120 ) so as maintain a predefined distance or relative position vector between moving base  120  and moving object  110 . 
       FIG. 2A  is a block diagram illustrating a moving object system  200 , corresponding to moving object  110  in the moving-base RTK system  100  of  FIG. 1 , according to some embodiments. Moving object system  200  typically includes one or more processors (CPU&#39;s)  202  for executing programs or instructions; satellite receiver  204  for receiving satellite navigation signals; one or more communication interfaces  206 ,  208 ; memory  210 ; and one or more communication buses  205  for interconnecting these components. Moving object system  200  optionally includes a user interface  209  comprising a display device and one or more input devices (e.g., one or more of a keyboard, mouse, touch screen, keypad, etc.). The one or more communication buses  205  may include circuitry (sometimes called a chipset) that interconnects and controls communications between system components. 
     Communication interface  206  (e.g., a receiver or transceiver) is used by moving object system  200  to receive communications from moving base  120 . Communication interface  208  (e.g., a transmitter or transceiver, such as a radio transmitter or transceiver, or a wired communication transmitter or transceiver) is used by moving object system  200  to send signals from moving object  110  to the home system  160 , reporting information corresponding to the relative position vector with respect to moving base  120  and/or a current position of moving object  110 . In some embodiments, communication interfaces  206  and  208  are a single transceiver, while in other embodiments they are separate transceivers or separate communication interfaces. 
     Memory  210  includes high-speed random access memory, such as DRAM, SRAM, DDR RAM or other random access solid state memory devices; and may include non-volatile memory, such as one or more magnetic disk storage devices, optical disk storage devices, flash memory devices, or other non-volatile solid state storage devices. Memory  210  optionally includes one or more storage devices remotely located from the CPU(s)  202 . Memory  210 , or alternately the non-volatile memory device(s) within memory  210 , comprises a computer readable storage medium. In some embodiments, memory  210  or the computer readable storage medium of memory  210  stores the following programs, modules and data structures, or a subset thereof:
         An operating system  212  that includes procedures for handling various basic system services and for performing hardware dependent tasks.   A database  214  of data received from moving base  120  (as described in more detail below with respect to  FIG. 5A ).   Message services applications  216  that operate in conjunction with communication interface  206  (e.g., a receiver or transceiver) to handle communications between moving base  120  and moving object system  200 , and communication interface  208  (e.g., a transmitter or transceiver) to handle communications between moving object system  200  and home system  160 . In some embodiments, the message services applications  216  include drivers, which when executed by the one or more processors  202 , enable various hardware modules in communication interface  206  to receive messages from moving base  120  and in communication interface  208  to send messages to home system  160 .   An optional moving base positions database  218  that stores data associated with positions (e.g., three-dimensional positions) of moving base  120  at a number of specific times, as will be discussed below with respect to  FIG. 5B . Database  218  is for applications in which the absolute position of moving base  120  is determined by moving object system  200 , or absolute position information is provided by moving base  120 .   An optional moving object positions database  220  that stores data associated with the positions (e.g., three-dimensional positions) of moving object  110  at a number of specific times, as will be discussed below with respect to  FIG. 5C . Database  220  is for applications in which the absolute position of moving object  110  is determined by moving object  110  (moving object system  200 ).   A relative position vector database  222  that stores data associated with relative position vectors of moving object  110  with respect to moving base  120  at a number of specific times, as will be discussed below with respect to  FIG. 6 .   One or more determining modules  230  (sometimes called navigation modules) that when executed by the CPU  202  determine a relative position vector of moving object  110  relative to moving base  120 , based on moving base data received from moving base  120  via communications receiver  206  and satellite navigation data received from the satellites  115  by satellite receiver  204  (receiver  130 ,  FIG. 1 ).       

     In some implementations, determining modules  230  include an RTK module  232 , a delta module  233 , a forward projection module  234  and a speed smoothing module  236 , as described below. 
     RTK module  232  determines the relative position vector at specific times (herein called epoch boundary times) using moving base data (i.e., satellite measurement data for moving base  120  at each specific time, as received from moving base  120  at times later than the specific times) and satellite signal measurements made at moving object system  200  (at moving object  110 ) at each specific time. The computation of the relative position vector at each specific time is performed in accordance with well known real-time-kinematics (RTK) methodologies. 
     Delta module  233  determines changes in position of moving object  110  (or moving object system  200 ) between epoch boundary times. In some embodiments, delta module  233  uses a technique known as L 1  phase navigation to convert changes in phase measurements of the L 1  signal into position changes of moving object  110 . 
     Measurement module  231  processes the received satellite navigation signals to determine satellite navigation data for moving object  110  at a sequence of times, including epoch boundary times and times between the epoch boundary times. This processing involves measuring or determining measurements of the received satellite navigation signals. For example, the measurements may include, for each satellite from which navigation signals are received, a pseudorange between the moving object and the satellite, and L 1  and L 2  phase measurements. RTK module  232  uses the moving base data and the moving object satellite navigation data for a specific time (e.g., an epoch boundary time) to generate an RTK value, which is the relative position vector for that specific time. 
     Optionally, in applications in which an absolute position of moving object  110  is needed, RTK module  232  determines the position (i.e., absolute position) of moving base  120  at the one or more specific times using the moving base data. Alternatively, the determining module(s)  230  receives data from moving base  120  indicating the position of moving base  120  at the one or more specific times. In these alternative implementations, moving base  120  processes the satellite navigation signals received by its satellite receiver  140  ( FIG. 1 ) to generate absolute position values of moving base for the one or more specific times. The accuracy of the absolute position values generated by moving base  120  may be improved through the use of any of a variety of navigation assistance technologies, such wide area differential GPS or RTK (e.g., using a fixed base station  170 ,  FIG. 1 ). 
     Speed smoothing module  236  determines a smoothed velocity of moving base  120 , using two or more position-change updates of moving base  120 , as discussed below in more detail with respect to  FIG. 7 . 
     Forward projection module  234  determines a projected current relative position vector for the current time using a known change in position of moving base  120  since a specific time in the past (e.g., an epoch boundary time), or alternatively a computed change in position of moving base computed using the velocity of moving base  120  (e.g., the smoothed velocity of moving base  120 , determined by module  236 ), a known change in position of moving object  110  since the same specific time in the past, and the relative position vector for that same specific time, to determine a projected current relative position vector for the current time. See equation 1 below and the related discussion. 
     Operating system  212  and each of the above identified modules and applications correspond to a set of instructions for performing a function described above. The set of instructions can be executed by the one or more processors  202  of moving base system  200 . The above identified modules, applications or programs (i.e., sets of instructions) need not be implemented as separate software programs, procedures or modules, and thus various subsets of these modules may be combined or otherwise re-arranged in various embodiments. In some embodiments, memory  210  stores a subset of the modules and data structures identified above. Furthermore, memory  210  optionally stores additional modules and data structures not described above. 
       FIG. 2A  is intended more as functional description of the various features which may be present in a moving object system  200  than as a structural schematic of the embodiments described herein. In practice, and as recognized by those of ordinary skill in the art, items shown separately could be combined and some items could be separated. For example, some items shown separately in  FIG. 2A  could be combined into a single module or component, and single items could be implemented using two or more modules or components. The actual number of modules and components, and how features are allocated among them will vary from one implementation to another. 
       FIG. 2B  is a block diagram illustrating a mobile base station (moving base) system  250 , corresponding to mobile base station  120  in the moving-base RTK system  100  of  FIG. 1 , according to some embodiments. Mobile base station system  250  typically includes one or more processors (CPU&#39;s)  252  for executing programs or instructions; satellite receiver  254  for receiving satellite navigation signals; one or more communication interfaces  256 ,  258 ; memory  260 ; and one or more communication buses  255  for interconnecting these components. Mobile base station system  250  optionally includes a user interface  259  comprising a display device and one or more input devices (e.g., one or more of a keyboard, mouse, touch screen, keypad, etc.). The one or more communication buses  255  may include circuitry (sometimes called a chipset) that interconnects and controls communications between system components. 
     Communication interface  256  (e.g., a transmitter or transceiver) is used by mobile base station system  250  to transmit data to moving object  110 . Communication interface  258  (e.g., a receiver or transceiver, such as a radio receiver or transceiver, or a wired communication receiver or transceiver), if provided, is used by mobile base station system  250  to exchange information with home system  160 , for example receiving satellite navigation information from a fixed position base station  170  and/or sending information corresponding to the position of mobile base station  250  as determined by mobile base station system  250 . In some embodiments, communication interfaces  256  and  258  are a single transceiver, while in other embodiments they are separate transceivers or separate communication interfaces. 
     Memory  260  includes high-speed random access memory, such as DRAM, SRAM, DDR RAM or other random access solid state memory devices; and may include non-volatile memory, such as one or more magnetic disk storage devices, optical disk storage devices, flash memory devices, or other non-volatile solid state storage devices. Memory  260  optionally includes one or more storage devices remotely located from the CPU(s)  252 . Memory  260 , or alternately the non-volatile memory device(s) within memory  260 , comprises a computer readable storage medium. In some embodiments, memory  260  or the computer readable storage medium of memory  260  stores the following programs, modules and data structures, or a subset thereof:
         An operating system  262  that includes procedures for handling various basic system services and for performing hardware dependent tasks.   An optional database  264  of data transmitted by mobile base station  110  to moving base  120  (as described in more detail below with respect to  FIG. 5A ).   Message services applications  266  that operate in conjunction with communication interface  256  (e.g., a transmitter or transceiver) to handle communications between mobile base station system  250  and moving object  110  (moving object system  200 ), and communication interface  258  (e.g., a receiver or transceiver) to handle communications between mobile base station system  250  and home system  160 . In some embodiments, the message services applications  266  include drivers, which when executed by the one or more processors  252 , enable various hardware modules in communication interface  256  to transmit messages from mobile base station  120  to moving objection  110  and in communication interface  258  to receive messages from home system  160 .   An optional moving base positions database  268  that stores data associated with positions (e.g., three-dimensional positions) of mobile base station  120  at a number of specific times, as will be discussed below with respect to  FIG. 5B .   One or more navigation modules  280  that when executed by the CPU  252  determine a position of mobile base station  120 , based on satellite navigation signals received by satellite receiver  254  (receiver  140 ,  FIG. 1 ).       

     In some implementations, navigation modules  280  include an RTK module  282  for determining the position of mobile base station  120  using information received from a fixed position base station  170  ( FIG. 1 ) and RTK navigation methodologies. 
     Measurement module  281  processes satellite navigation signals received by mobile base station  120  to determine satellite navigation data for mobile base station  120  at a sequence of times, including epoch boundary times and times between the epoch boundary times. This processing involves measuring or determining measurements of the received satellite navigation signals. For example, the measurements may include a code measurement (e.g., a pseudorange) and L 1  and L 2  phase measurements for each satellite from which navigation signals are received. 
     Operating system  262  and each of the above identified modules of mobile base station system  250  and applications correspond to a set of instructions for performing a function described above. The set of instructions can be executed by the one or more processors  252  of mobile base station system  250 . The above identified modules, applications or programs (i.e., sets of instructions) need not be implemented as separate software programs, procedures or modules, and thus various subsets of these modules may be combined or otherwise re-arranged in various embodiments. In some embodiments, memory  260  stores a subset of the modules and data structures identified above. Furthermore, memory  260  optionally stores additional modules and data structures not described above. 
       FIG. 2B  is intended more as functional description of the various features which may be present in a mobile base station system  250  than as a structural schematic of the embodiments described herein. In practice, and as recognized by those of ordinary skill in the art, items shown separately could be combined and some items could be separated. For example, some items shown separately in  FIG. 2B  could be combined into a single module or component, and single items could be implemented using two or more modules or components. The actual number of modules and components, and how features are allocated among them will vary from one implementation to another. 
       FIG. 3  is a time diagram illustrating timing of signals (moving base data) as transmitted from moving base  120  ( FIG. 1 ) and received and processed at moving object  110  ( FIG. 1 ), according to some embodiments. The top time scale  310  indicates epoch times t 0 , t 1  . . . t k , (each or which is, or closely corresponds to an epoch boundary time) at which moving base  120  transmits data (moving object data, including satellite measurement data) to moving object  110 . For example, at time t 0  data is transmitted from moving base  120  to moving object  110 . The data transmitted at time t 0  includes satellite measurement data, which will be used by moving objection  110 , in conjunction with satellite signal measurements made at moving object  110 , to generate a relative position vector that represents the position of moving object  110  relative to moving base  120  at t 0 . Another set of satellite measurement data is transmitted by moving base  120  to moving object  110  at time t 1 . In some embodiments, the epoch times t 0 , t 1  . . . t k , occur at one second intervals. 
     Data transmitted by moving base  120  arrives at moving object  110  at time t r , (see time scale  320 ) which is sufficiently later than time t 0  that the transmission delay, and subsequent processing, must be taken into account in order to generate an accurate relative position vector. Stated another way, because the moving base  120  is moving, and data transmission is not instantaneous, using RTK to determine the relative position vector requires synchronizing the satellite measurement data for moving base  120  and moving object  110 , and determining a current relative position vector for the current time requires projecting changes in position of the moving base  120  to the current time. These techniques for managing the timing delays while performing RTK computations is herein called time-synchronized RTK. 
     RTK module  232  of moving object system  200  determines an RTK value (also referred to as “an RTK solution”), which is the relative position vector between moving object  110  and moving base  120  for each epoch boundary time t 0 , t 1  . . . t k . Determining the RTK solution at moving object  110  uses both the delayed moving base data and measurements determined from the satellite navigation signals received at moving object  110 . Using this information, RTK module  232  determines an accurate relative position vector or an accurate position (e.g., accurate to within 5 cm, or 2 cm, or 1 cm, in various embodiments) of moving object  110  for each of the epoch boundary times. 
     The received time (t r ) associated with the data received from moving base  120  is indicated on the time scale  320 . As noted above, the time delay between t 0  and t r  is due to data transmission between moving base  120  and moving object  110 . As a result, the time synchronized RTK process for time t 0  starts at t r . However, due to computational delay, the RTK solution may not be ready until a later time t p . In other words, the RTK solution obtained at time t p  actually corresponds to time t 0 . The satellite navigation data for moving object  110  used in determining the RTK solution for time t 0  must correspond to the time t 0  and not t p  or t r , and thus the satellite navigation data for time t 0  is buffered or stored in a local database until RTK module  232  is ready to use it. Other data transmitted from moving base  120  to moving object  110  (e.g., update data transmitted between epoch boundary times) experiences similar transmission delays, and the processing delays for each type of data will typically depend on the way in which that data is processed. 
     Update times t 01 , t 02  . . . t 0n  (e.g., at predetermined time intervals shorter than one second, such as 100 msec intervals corresponding to 10 Hz, 20 msec intervals corresponding to 50 Hz or 40 msec intervals corresponding to 25 Hz) shown on the time scale  310 , correspond to times after the first epoch boundary time t 0  (and similarly after other epoch boundary times such as t 1  and t k ). In some embodiments, moving base  120  transmits a position update at each update time. In one example, the update information transmitted by moving base  120  for each update time indicates changes in position and time, Δx, Δy, Δz, and Δt, since the immediately preceding epoch boundary time. As explained above, the update information takes a finite amount of time to be received and processed by moving object system  200 . Moving object system  200  processes the update information to determine the velocity of moving base  120 . 
     In some embodiments, moving object  110  determines an updated relative position vector (i.e., at current time t 0K ) based on the RTK solution for the last epoch boundary time, such as time t 0  (or t 1  . . . t k ). In some embodiments, moving object  110  determines the current relative position vector (e.g., at any of the update times t 01 , t 02  . . . or t 0N ) by combining the RTK solution for the first specific time t 0  with relative position changes from both moving base  120  and moving object  110 , as represented by Equation 1 below:
 
RPV( t   0K )=RPV( t   0 )+Δpos MO −Δpos MB    (Eq. 1)
 
where, RPV(t 0K ) and RPV(t 0 ) represent the relative position vectors at a current time t 0K  and the earlier epoch boundary time t 0 , respectively. The relative position changes Δpos MO  and Δpos MB  respectively correspond to position change of moving object  110  and moving base  120  between times t 0  and t 0K . The change in position of moving object  110  can be determined “directly” (e.g., using L 1  successive delta phase navigation) from measurements of changes in the received satellite navigation signals, or it can be calculated (in which case it is a projected change in position) using well-known methods, based on the velocity of moving object  110  and a travel time of Δt=t 0k −t 0 . Further, the velocity of moving object  110  can be determined from changes in position of moving object  110 . Due to transmission delay, the current position of moving base  120  cannot be determined directly. Thus, the change in position of moving base  120 , Δpos MB , between times t 0  and t 0k  is calculated from two parts. The first part is the change of the moving base between the time t 0  and t 0i , which is can be is determined “directly” using successive delta phase measurements at the moving base and is then transmitted to the moving object via radio communication. The second part determines a projected change in position of the object base using well-known methods, based on velocity of moving base  120  and a travel time of Δt=t 0k −t oi . See equation 8 below and the related discussion. The velocity of moving base  120  is determined from changes in position of moving base  120 ; this is discussed in more detail below.
 
       FIG. 4  is block diagram illustrating a data structure of a message  400  received by moving object  110  from moving base  120 , according to some embodiments. The message  400  is one of a sequence of messages  400 - 1 ,  400 - 2 , et seq., transmitted by moving base  120 . Each received message  400  includes a number of data fields. An exemplary data record structure for a message  400  includes the following data fields:
         A STX data field  410  that signifies start of a message and is limited to a certain number of bytes (e.g., 8 bytes);   A preamble 1 data field  412  that includes a first preamble;   A preamble 2 data field  414  that includes a second preamble;   A command ID data field  416  that provides a command identification number. Examples of command ID&#39;s include an ID identifying a message containing satellite navigation data for one or more satellites, and ID identifying a message containing position update data;   A message length data field  418  that indicates the length of the message data field  420 ;   A message data field  420  that stores the body of the message and may include various data (e.g., subfields holding specific types of values) depending on the information being communicated;   A Checksum data field  422  that includes a checksum that can be used to detect errors in the communicated message; and   An ETX data field  424  that signifies the end of the message.       

     In some implementations, when the message  400  is a message containing satellite navigation data for one satellite (e.g., sent at the beginning of an epoch), message data field  420  includes the mobile base  120  identification number (or, more generally, data identifying the mobile base), the satellite PRN number (or, more generally, data identifying the satellite) for which measurement data is being provided in the message, the time associated with the measured satellite signals (e.g., the GPS timestamp value), satellite signal resolution or quality information, a pseudorange from mobile base  120  to the satellite, and carrier phase measurements for one or more satellite signals (e.g., the L 1  and L 2  signals from a GPS satellite). 
     In some implementations, when the message  400  is a position update message (e.g., an update message sent at one of the update times t 01 , t 02  . . . t 0n ), message data field  420  includes the mobile base  120  identification number, the time of the update, the delta time for the update (e.g., the amount of time between the update time and the immediate preceding epoch boundary time), delta values for X, Y and Z components of the mobile base&#39;s coordinates, number of satellites used by mobile base  120  to generate the position update data, and variance-covariance values for the X, Y and Z delta values. 
       FIG. 5A  depicts a data structure for a database  214  of data received from moving base  120 , also sometimes called the mobile base station. The database includes data  550  received from moving base  120  for each epoch (e.g., one second intervals). In some embodiments, mobile base station system  250  stores a similar database, moving base transmitted data database  264 , having the same or similar data as database  214 . The number of epochs for which data  550  is retained by moving object system  200  may depend on the amount of memory available, the needs of applications that use this information, and so on. Data  550  for a respective epoch include initial measurement data  552  and a sequence of position updates  554 . The initial measurement data  552 , sent by moving base  120  at the beginning of the epoch, includes measurement data  560  for each of a plurality of satellites. In some embodiments, the measurement data  560  for any one of the satellites includes a satellite identifier  561 , a timestamp  562  (e.g., a GPS timestamp indicating the start time of the epoch), one or more signal resolution values to indicate the quality of the satellite signal received at moving base  120 , a pseudorange  564  from moving base  120  to the satellite (sometimes called a code measurement), and L 1  and L 2  phase measurements  565 ,  566 . In other embodiments, some of these fields may be omitted or combined, and additional fields may be included. For example, a single timestamp  562  may be provided for all the satellite measurements. In another example, in some embodiments the initial measurement data  552  for each epoch includes a mobile base station position  568  (e.g., latitude and longitude, or latitude, longitude and altitude), expressed with respect to a particular coordinate system, for the mobile base station. The received mobile base station position  568 , when included, is a position determined by the mobile base station, using any suitable methodology. However, in some embodiments, the mobile base station position at the beginning of each epoch is determined by moving object system  200  ( FIG. 2A ), based on satellite measurement data received for mobile base station  120 , as received from the mobile base station  120 , and in those embodiments the initial measurement data  552  does not include (or alternatively, need not include) a value representing the mobile base station position at the beginning of the epoch. 
     In some embodiments, position update data  554  for a single position update sent by mobile base  120  includes a change in position  574  of the mobile base station since a prior position of or position update for the mobile base  120  (e.g., a change in position relative to the mobile base station position determined, sent or reported for the beginning of the current epoch); a timestamp and/or delta time value (indicating an amount of time since the most recent epoch boundary time)  572 , indicating the time corresponding to the position update values  574 ; and optionally includes satellite information  576  (e.g., indicating the number of satellites on which the position update is based), and variance-covariance information. In some embodiments, the change in position  574  is reported as a three dimensional change in position, such as (Δx, Δy, Δz) or a change in latitude, longitude and altitude. 
       FIG. 5B  is block diagram illustrating a data structure of an optional moving base positions database  218 , and  FIG. 5C  is a block diagram illustrating a data structure of a moving object position database  220 , according to some embodiments. As mentioned above, in implementations in which an absolute position of the moving object  110  is needed, moving object  110  ( FIG. 1 ) optionally receives position information from moving base  120  ( FIG. 1 ) for each of the epoch boundary times t 0 , t 1  . . . t k , in addition to the satellite navigation data sent by moving base  120 . In some embodiments, moving object system  200  stores the received position information in data records  500 - 1  to  500 -K of the moving base positions database  218 . Optionally, as discussed above with reference to  FIG. 2B , mobile base station system  250  stores the same or similar data in a moving base positions database  268 . The position information stored in a respective data record (e.g., data record  500 - 2 ) of moving base positions database  218  includes data field  510  storing an initial position P MB  of moving base  120  and N position change data fields  512 - 1  to  512 -N storing position changes (ΔP MB ) 01 , (ΔP MB ) 02  . . . (ΔP MB ) 0N  of moving base  120  for update times t 01 , t 02  . . . t 0n , respectively. 
     In each position data record  500 , the initial position P MB    510  is the position of the moving base moving base  120  at the beginning of the epoch (i.e., at a epoch boundary time) (e.g., t 1  in  FIG. 3 ). The initial position P MB  can be derived from the satellite navigation signals received at moving base  120  and communicated to moving object  110  via the communication channel  150  ( FIG. 1 ). Alternatively, the initial position P MB  can be derived at moving object  110  from the satellite navigation data (e.g., code measurements (or code measurement-based pseudoranges) and carrier phase measurements for each satellite of a set of satellites) sent by moving base  120  to moving object  110  via the communication channel  150 . 
     The position changes (e.g., (ΔP MB ) 11 , (ΔP MB ) 12  . . . (ΔP MB ) 1N ) represent changes of the position of moving base  120  corresponding to update times (e.g., update times t 11 , t 12  . . . t 1N , shown in  FIG. 3 ) after a specific epoch boundary time (e.g., t 1 ). In some embodiments, the position changes ((ΔP MB ) 11 , (ΔP MB ) 12  . . . (ΔP MB ) 1N ) are derived, using well-known methods, at moving base  120  from the received satellite navigation signals, and then communicated to moving object  110  via channel  150  ( FIG. 1 ). In addition, when a position update message is not received by moving object system  200  (e.g., due to noise or other problems), moving object system may optionally “fill in” the missing position update  512  using the velocity of moving base  120 , as derived from previously received position information for moving base  120  (e.g., an initial position  510  and one or more of the received position updates  512 ), and the last known position of moving base  120 . 
     Moving object positions database  220  shown in  FIG. 5C  stores similar information as moving base positions database  218 , described above with respect to  FIG. 5B . The positions of moving object  110  stored in data records  520 - 1  to  520 -K correspond to the absolute position of moving object  110  during successive epochs. Each data record (e.g., data record  520 - 2 ) includes initial position data field  514  storing an initial position P MO  of moving object  110  at the beginning of an epoch, and N position change data fields  516 - 1  to  516 -N storing position changes ((ΔP MO ) 11 , (ΔP MO ) 12  . . . (ΔP MO ) 1N ) of moving object  110 . In some embodiments, the initial position P MO  of moving object  110  is an RTK value computed by RTK module  232  of moving object system  200 , using the initial position P MB  of moving base  120  received from the moving base moving base  120  (or derived at moving object  110  based on satellite navigation data of moving base  120  received from moving base  120 ). 
     The moving object position changes ((ΔP MO ) 11 , (ΔP MO ) 12  . . . (ΔP MO ) 1N ) represent changes of the position of moving object  110  corresponding to update times (e.g., update times t 11 , t 12  . . . t 1N , shown in  FIG. 3 ) after an epoch boundary time (e.g., t 1 ). In some embodiments, these position changes are computed by moving object system  200  ( FIG. 2A ) by applying well-known methods to the received satellite navigation signals. 
     In some embodiments, forward projection module  234  combines the position of moving base  120  at an epoch boundary time (e.g., t 1 ), the relative position vector RPV(t 1 ) for the epoch boundary time, and a change in position of moving object  110  to determine a position of the moving object  110  at a current time (e.g., an update time t 1K ), as represented by Equation 2 below:
 
 P   MO ( t   1K )= P   MB ( t   1 )+RPV( t   1 )+(Δ P   MO ) 1K    (Eq. 2)
 
where, P MO (t 1k ) represents position of moving object  110  at update time t 1K , P MB (t 1 ) represents the position of moving base  120  at an epoch boundary time t 1 , RPV(t 1 ) indicates the relative position vector at the epoch boundary time t 1 , and (ΔP MO ) 1K  is the change in position of moving object  110  between the epoch boundary time t 1  and the update time t 1K .
 
       FIG. 6  is block diagram illustrating a data structure of a relative position vector database  222 , in moving object system  200 , according to some embodiments. The relative positions (e.g., differential position values, such as relative position vectors) stored by moving object system  200  in data records  600 - 1  to  600 -K of the database  222  correspond to successive epochs. In some embodiments, each of these data records  600  includes an initial data field  610  and N update data fields  612 - 1  to  612 -N as shown in  FIG. 6 . The initial data field  610  stores an initial relative position, shown in  FIG. 6  as a relative position vector RPV(t 1 ), determined for the epoch boundary time at the beginning of a respective epoch (e.g., epoch boundary time t 1 , at the beginning of epoch  2 ). In some embodiments, the initial relative position vector RPV(t 1 ) is determined by determination module  230  ( FIG. 2A ) using the satellite navigation data received from moving base  120  for the epoch boundary time t 1  and measurements of the satellite navigation signals received by moving object  110  at the same epoch boundary time t 1 . The relative position vector represents the difference in positions of the moving object and moving base, as represented by Equation 3:
 
RPV( t   1 )= P   MO ( t   1 )− P   MB ( t   1 )   (Eq. 3)
 
where, P MO (t 1 ) is the position of moving object  110  at time t 1 , and P MB (t 1 ) is the position of moving base  120  at time t 1 . Data fields  612 - 1  to  612 -N store update values for the relative position vector corresponding to update times t 11 , t 12  . . . t 1N  after the epoch boundary time t 1 . In some embodiments, relative position vector RPV(t 11 ) for update time t 11  is determined by moving object system  200  in accordance with Equation 4:
 
RPV( t   11 )=RPV( t   1 )+Δpos MO −Δpos MB    (Eq. 4)
 
where, RPV(t 1 ) is the initial relative position vector at the epoch boundary time t 1 , and Δpos MO  and Δpos MB  are the respective changes in positions of moving object  110  and moving base  120  between the epoch boundary time t 1  and a respective update time t 11 .
 
       FIGS. 7A-7C  depict a flowchart of a method  700  for generating relative position vectors (also called baseline vectors), for a sequence of times, representing the relative position of a moving object  110  relative to a moving base, in accordance with some embodiments. Method  700  may be implemented by moving object system  200 , under the control of instructions stored in memory  210  ( FIG. 2A ) that are executed by one or more processors ( 202 ,  FIG. 2A ) of moving object system  200 . Each of the operations shown in  FIGS. 7A-7C  corresponds to computer readable instructions stored in a computer readable storage medium of memory  210  in moving object system  200 . The computer readable instructions are in source code, assembly language code, object code, or other instruction format that is interpreted and/or executable by the one or more processors of moving object system  200 . 
     Moving object system  200  ( FIG. 2A ) receives ( 710 ), via the satellite receiver  204  ( FIG. 2A ), satellite navigation signals from satellites  115  ( FIG. 1 ). The satellite navigation signals are measured, or processed to produce measurements, to produce satellite navigation data for moving object  110  ( 712 ). In one example, the satellite navigation data for moving object  110  includes, for each satellite from which satellite navigation signals are received, a pseudorange measurement and phase measurements for one or more satellite signals, such as the GPS L and L 2  signals. For example, the satellite navigation data for moving object  110  corresponds to an epoch boundary time ( 714 ) (e.g., any of times t 0 , t 1  . . . t k  shown in  FIG. 3 ). 
     Subsequently ( 720 ), moving object  110  receives, via communication channel  150  and communications receiver  206  ( FIG. 2A ), moving base data from moving base  120  ( FIG. 1 ). The received moving base data correspond to an epoch boundary time (e.g., any of times t 0 , t 1  . . . t k  shown in  FIG. 3 ) prior to the current time ( 722 ). 
     The moving base data includes satellite measurement data of moving base  120  ( 724 ). The satellite measurement data is generated by moving base  120  from the satellite navigation signals is receives from a number of satellites  115  ( 724 ). Examples of the specific information included the satellite measure data received from moving base  120  are described above with reference to  FIGS. 4 and 5A . 
     In some embodiments, moving object  110  receives from moving base  120  a number of successive position change updates of moving base  120  ( 726 ). The successive position change updates correspond to a number of update times (e.g., update times t 11 , t 12  . . . t 1N  after the epoch boundary time t 1 ) after the last epoch boundary time (e.g., t 1 ) for which satellite measurement data has been received from moving base  120 . Moving object  110  receives the successive position change updates via communications channel  150  and communications receiver  206  ( 728 ), and stores them in the moving base received data database  214 , as described above with respect to  FIG. 5A . 
     Optionally, an absolute position (as opposed to a relative position) of moving base  120  is determined by determining module  230  of moving object system  200  ( FIG. 2A ), using the satellite navigation data received from moving base  120  by moving object system  200  ( 730 ). For example, the position of moving base  120  is determined for an epoch boundary time (e.g., t 0  or t 1 ). Alternatively, moving base  120  determines its position relative to a fixed base using RTK at the epoch boundary time and transmits the determined positions to moving object system  200  via communication channel  150  ( 732 ), and moving object system  200  receives ( 742 ) from moving base  120  the positions of moving base  120  at the epoch boundary times. In  FIG. 5A , the reported positions are represented as mobile base station positions  568  (i.e., one such reported position for each epoch). The position of moving base  120  is determined relative to the fixed base in implementations that require highly accurate measurements of the position of moving base  120  and/or moving object  110 . In yet other implementations, a position of moving base  120  is determined at moving base  120  using the best positioning solution available at the moving base. For example, the best available positioning solution may be selected by the moving base from a set of two or more solutions selected from the group consisting of: a standalone solution, a Wide Area Augmentation System solution, a global differential positioning solution, and a real-time-kinematics (RTK) solution. 
     Determining module  230  of moving object system  200  determines a relative position (e.g. a relative position or relative position vector) of moving object  110  relative to moving base  120  ( 740 ). Determining module  230  uses the satellite navigation data received from moving base  120  and satellite navigation data received from the satellites  115  to determine the relative position vector. 
     In some embodiments, RTK module  232  determines ( 744 ) the relative position vector by generating an RTK value for the relative position vector (i.e., sometimes called the RTK solution) for an epoch boundary time (e.g., time t 0  shown in  FIG. 3 ). RTK module  232  uses the moving base satellite navigation data for the epoch boundary time t 0  received with delay at time t r  ( FIG. 3 ) and the satellite navigation data corresponding to the epoch boundary time t 0  to determine the RTK solution. In some embodiments, while determining the relative position vector, RTK module  232  compares its own phase measurements of satellite navigation signals received at moving object  110  with the moving base satellite navigation data received from moving base  120 . 
     In some embodiments, determining ( 744 ) the relative position of the moving object relative to the mobile base station includes, in accordance with the satellite navigation data for the moving object and the received mobile base data, performing a real-time kinematic (RTK) computation process to resolve carrier phase ambiguities and determine a relative position of the moving object relative to the mobile base station. For example, the RTK computation process may generate differential carrier-phase measurements (sometimes called double difference measurements) based on the satellite measurement data of the mobile base station received from the mobile base station and the satellite measurement data for the moving object, and then resolve whole-cycle ambiguities in the differential carrier-phase measurements. In some embodiments, the whole-cycle ambiguities in the differential carrier-phase measurements are resolved using well known techniques, although the use of new techniques for resolving such ambiguities would still be consistent with the overall methodology described here. PCT published application WO 2008150389 and US Patent Publication 2008150390 are hereby incorporated by reference in their entireties, and in particular for their teachings concerning ambiguity resolution in RTK navigation systems. Once the whole-cycle ambiguities in the differential carrier-phase measurements are resolved, ambiguities in the carrier phase measurements for the mobile object  110  are resolved, once again using well known techniques, and from there the position of the moving object is determined and then the relative position of the moving object, relative to the mobile base station, is determined using the determined position of the moving object and the previously obtained or determined position of the mobile base station. US Patent Publication 20050248485 is hereby incorporated by reference in its entirety, and in particular for its teachings concerning determining the relative position of a moving object/rover with respect to a mobile base station in RTK navigation systems. 
     Optionally, determining module  230  (at moving object  110 ) determines the position P MO (t 0 ) of moving object  110  for an epoch boundary time (e.g., t 0 ), based on the position P MB (t 0 ) of moving base  120  for the epoch boundary time and the value of the relative position vector RPV(t 0 ) at the same epoch boundary time ( 748 ), as represented by Equation 5:
 
 P   MO ( t   0 )= P   MB ( t   0 )+RPV( t   0 )   (Eq. 5)
 
     In some embodiments, determining module  230  determines the position P MO (t 01 ) of moving object  110  at the current time t 0k ( 750 ), based on the position P MB (t 0 ) of moving base  120  at the preceding epoch boundary time t 0 , the relative position vector for the preceding epoch boundary time t 0  and the change in position of moving object  110 , as represented by Equation 6:
 
 P   MO ( t   01 )= P   MB ( t   0 )+RPV( t   0 )+ΔP MO ( t   01   −t   0 )   (Eq. 6)
 
where RPV(t 0 ) represents the relative position vector for the epoch boundary time t 0  and ΔP MO (t 01 −t 0 ) represents the change in position of moving object  110  between the current time and the epoch boundary time.
 
     As explained above, in some embodiments the mobile base data received from the mobile base station includes, at a first sequence of times (e.g. epoch boundary times), position data indicating a position of the mobile base station at the first sequence of times and the satellite measurement data of the mobile base station for the first sequence of times. Furthermore, in some such embodiments, method  700  includes, for the first sequence of times, performing the RTK computation process to determine the relative position of the moving object relative to the mobile base station at the first sequence of times, and determining a position of the moving object at each time in the first sequence of times based on the position of the mobile base station at the first sequence of times and the determined relative position of the moving object relative to the mobile base station at the first sequence of times. 
     As explained above with reference to  FIG. 5A , in some embodiments the mobile base data received from the mobile base station includes, at a first sequence of times corresponding to epoch boundaries, position data indicating a position of the mobile base station, and at second sequences of times corresponding to update times between the epoch boundaries, position update information indicating a change in position of the mobile base station since a last epoch boundary. In some such embodiments, performing the real-time kinematic (RTK) computation process includes determining a position of the moving object at times corresponding to both the first sequence of times and the second sequences of times. 
     In some embodiments, if the moving object system  200  fails to receive satellite navigation signals for any particular time at which it needs to measure those signals, for example due to the moving object system  200  moving near or under an obstruction, moving object system  200  “bridges” over the data missing period. Moving object system  200  accomplishes this by extrapolating the moving object system&#39;s position, or change in position. In particular, moving object system  200  computes a velocity V MO  of moving object system  200 , for example by using computations analogous to the computations described below for determining a velocity of moving base  120 . Then a change in position ΔP MO  of moving object system  200  for the data missing period is computed by multiplying the determined velocity V MO  by the length of the data missing period Δt. 
     In some embodiments ( 752 ), determining module  230  determines the relative position vector RPV(t 0k ) for the current time t 0k  based on the relative position vector RPV(t 0 ) for the epoch boundary time t 0 , the change in position ΔP MO (t 0k −t 0 ) of moving object  110 , and a projected change in the position ΔP MB (t 0k −t 0 ) of moving base  120 , which is determined based on the velocity of the moving base moving base  120 , as represented by Equations 7 and 8:
 
RPV( t   0k )=RPV( t   0 )+Δ P   MB ( t   0k   −t   0 )−Δ P   MO ( t   0k   −t   0 )   (Eq. 7)
 
where ΔP MB (t 0k −t 0 ) is partially projected using the velocity of moving base  120  because current moving base  120  delta position is not available at moving object  110  due to communication delays. For example, if time t 0i  is the last time for which a position update has been received from moving base  120 , ΔP MB (t 0k −t 0 ) may be computed as follows:
 
ΔP MB ( t   0k   −t   0 )=Δ P   MB ( t   0i   −t   0 )+ V   MB ·( t   0k   −t   0i )   (Eq. 8)
 
where (t 0k −t 0i ) is the elapsed time between the current time and the last update time for which a moving base update has been received by the moving object, and V MB  is the velocity of moving base  120 . Stated more generally, when the moving object has received one or more updates from the moving base since the last epoch boundary time, the computation of the relative position vector for the current time takes into account (A) the change in position of the moving base from a first specific time (the last epoch boundary time) to a second specific time (the last time for which an update is received from the moving base), and (B) a projected change in position of the moving base from the second specific time to the current time. The change in position ΔP MO (t 0k −t 0 ) of moving object  110  is determined by moving object system  200  from changes in the satellite navigation signals received by satellite receiver  204  of moving object system  200 .
 
     In some embodiments, a position-propagation calculated value is determined for the relative position vector at an epoch boundary time (e.g., time t 1 , or more generally t J ) when a predefined criterion is satisfied ( 756 ). As discussed below, the predefined criterion corresponds a computation whose result indicates low confidence in the RTK solution. RPV PP , the position-propagated value for the relative position vector for an epoch boundary time (e.g., t J ) is determined by using RPV(t 0 ), the relative position vector for a prior specific time (e.g., t 0 ), ΔP MO , the change in position of moving object  110 , and ΔP MB , the change in position of the moving base moving base  120 , in the time interval (e.g., one second) between the current epoch boundary time (e.g., t J ) and the prior epoch boundary time (e.g., t 0 ), as represented by Equation 9:
 
RPV PP =RPV( t   0 )+Δ P   MB   −ΔP   MO    (Eq. 9)
 
     Furthermore, when the predefined criterion is met, the determining module  230  determines the relative position vector for epoch boundary time t J  by combining the RTK value for the relative position vector with the position-propagation calculated value for the relative position vector (i.e., RPV PP ), as represented by Equation 10:
 
RPV=RPV RTK   +R   RTK ·( R   RTK   +R   PP ) −1 ·(RPV PP −RPV RTK )   (Eq. 10)
 
where R RTK  and R PP  represent the variance-covariance matrices for the RTK solution (i.e., RPV RTK ) and the position-propagated value (i.e., RPV PP ), respectively. In some embodiments, when the predetermined criteria is not met, the relative position vector for an epoch boundary time is defined by the RTK solution (i.e., RPV RTK ). Equation 10 represents a weighted sum of the RTK value and the position-propagation calculated value for the relative position vector. In this weighted sum, the factor R RTK ·(R RTK +R PP ) −1  in Equation 10 is the weight assigned to the position-propagation calculated value for the relative position vector and 1−R RTK ·(R RTK +R PP ) −1  is the weight assigned to the RTK value for the relative position vector.
 
     In some embodiments, the predefined criterion is based on attributes of the variance-covariance matrices for the RTK solution and the position-propagated value ( 758 ). For instance, the criterion may be considered met, when the sum of the diagonal elements in the R RTK  matrix is larger than the sum of the diagonal elements in the R PP  matrix. 
     In some embodiments, the determining module  230  can determine RPV(t 1 ), an updated relative position vector for an update time at an epoch boundary time (e.g., t 1 ) based on one or more position-change updates, such as ΔP MB (t 0j ) received from moving base  120  (e.g., at an update time t 0J  of update times t 01 , t 02  . . . t 0N  shown in  FIG. 3 ) and a position change ΔP MO  of moving object  110  between the preceding epoch boundary time and the update time t 0J , as represented by Equation 11:
 
RPV( t   1 )=RPV( t   0J )−Δ P   MB   +ΔP   MO    (Eq. 11)
 
where, RPV(t 0J ) is the relative position vector determined for the update time t 0J  (based on ΔP MB (t 0j ) and the change in position of moving base  120  between update time t 0J  and the preceding epoch boundary time t 0 ), ΔP MO  is the change in position of moving object  110  between time t 1  and the update time t 0J , and ΔP MB  is defined in terms of ΔP MB (t 0j ), as represented by Equation 12:
 
Δ P   MB =(Δ P   MB ( t   0j ))·( t   1   −t   0J )/( t   0J   −t   0 )   (Eq. 12)
 
     In some embodiments, the determining module  230  determines the velocity of moving base  120  based on two or more position changes of moving base  120  received from moving base  120  ( 762 ), as represented by Equation 13:
 
 V   MB =(Δ P   MB ( t   J   −t   0 )−Δ P   MB ( t   J-1   −t   0 ))/( t   J   −t   J-1 )   (Eq. 13)
 
where, ΔP MB (t J −t 0 ) and ΔP MB (t J-1 −t 0 ) are the respective position changes of moving base  120  received at moving object  110  for update times t J  and t J-1  relative to an epoch boundary time t 0 . In some embodiments, the update times t J  and t J-1  are two of the specific times after the epoch boundary time t 0 .
 
     Since the velocity of moving base  120  used, for example, in Equation 8 may be quite noisy, in some embodiments speed smoothing module  236  ( FIG. 2A ) determines a smoothed velocity of moving base  120  ( 764 ), based on historic information (e.g., two or more position changes of moving base  120 ), as represented by Equation 14: 
                       V   MB   S     ⁡     (     t   J     )       =         1   c     ⁢       V   MB     ⁡     (     t   J     )         +         c   -   1     c     ⁢       V   MB   S     ⁡     (     t     J   -   1       )                   (     Eq   .           ⁢   14     )               
where V MB   S (t J ) is the smoothed velocity of moving base  120  for time t J , V MB   S (t J-1 ) is the smoothed velocity of moving base  120  for a previous time t J-1 , V MB (t J ) is the unsmoothed velocity (e.g., determined using Equation 13) of moving base  120  for time t J , and c is a smoothing constant. Smoothing constant c is typically between 2 and 10, and more generally it is between 2 and 50. In some embodiments, the value of the smoothing constant c depends on the observed dynamics of the moving base velocity changes and can be any number larger than one.
 
     In some embodiments, the determining module  230  determines P MB (t 01 ), the projected position of moving base  120  at the current time t 01  based on P MB (t 0 ), the position of moving base  120  at the epoch boundary specific time t 0  and the velocity V MB , of moving base  120  (as determined in accordance with equation 13 or 14) ( 766 ), as represented by Equation 15:
 
 P   MB ( t   01 )= P   MB ( t   0 )+ V   MB ·( t   01   −t   0 )   (Eq. 15)
 
where (t 01 −t 0 ) is the elapsed time between the current time and the epoch boundary time.
 
     Moving object system  200  ( FIG. 2A ) transmits a signal (e.g., using communication interface  208 ) to home system  160  ( FIG. 1 ) to report information corresponding to the relative position vector and/or the position of moving object  110  to the home system  160 . 
     The foregoing description, for purpose of explanation, has been described with reference to specific embodiments. However, the illustrative discussions above are not intended to be exhaustive or to limit the invention to the precise forms disclosed. Many modifications and variations are possible in view of the above teachings. The embodiments were chosen and described in order to best explain the principles of the invention and its practical applications, to thereby enable others skilled in the art to best utilize the invention and various embodiments with various modifications as are suited to the particular use contemplated.