Abstract:
A method for reconciling ground-level discrepancies between the displayed path of a moving body and a terrain model in a graphical simulation, including the steps of (1) examining the individual data points describing a recorded trip by a vehicle, (2) determining which of the data points correspond to points when the vehicle was actually on the ground, (3) determining the altitude difference between the recorded altitude data and the terrain model at each of the determined “on-ground” points, and (4) using the altitude difference to create a correction signal which can be applied either to the recorded altitude data or the terrain model.

Description:
CROSS-REFERENCE TO RELATED PATENT APPLICATIONS 
       [0001]    This patent application claims priority to U.S. Provisional Patent Application No. 60/826,893, entitled, “Fleet operations quality management system,” and filed on Sep. 25, 2006. The entire disclosure of the above-noted patent application is incorporated by reference in its entirety herein. 
     
    
     FIELD OF INVENTION 
       [0002]    This invention pertains to a method for reconciling ground level errors in a virtual recreation of a trip caused by the inherent inaccuracies of position and altitude sensing technologies. 
       BACKGROUND 
       [0003]    Graphical systems which use real-world trip data (such as location data captured by a GPS sensor mounted in an aircraft) as the basis for a three-dimensional recreation of the original trip must deal with potential inaccuracies in the data, especially when depicting near-ground-level maneuvers, such as takeoff and landing. In the real world, these inaccuracies can be easily handled. For example, an altimeter in an aircraft may show an altitude of three meters above ground level when the plane is actually sitting on the runway. Because the pilot can see and feel that he or she is sitting on the ground, however, the pilot can easily reconcile the error and not be adversely affected by it. Alternately, the pilot can communicate with the control tower of the airport to get additional information (such as the current pressure altitude reading at ground level), and use that information to calibrate their altitude instrument appropriately. 
         [0004]    Using inaccurate recorded altitude data to represent the aircraft in a virtual environment, however, would result in the aircraft being depicted offset from the ground by at least the amount of the altitude error. In fact, in a virtual recreation, multiple error sources must be resolved, including altitude source errors, terrain model errors, and model referencing errors (that is, errors introduced because the mounting location of the altitude sensor on the real aircraft is offset from the reference point used for the virtual model). 
         [0005]    It would be possible for the graphical software system to ask the user to input information to correct inaccurate altitude information during a virtual recreation of the trip, but this is an impractical and limited approach. Depending on the accuracy and predictability of the altitude data source, a user-entered altitude “correction” may reconcile the altitude information and the terrain model in one location, but make the problem worse in a second location. The variability of some altitude sources, such as a GPS sensor, over time can be significant. It may be that a user-entered “correction” may actually reconcile the altitude at the virtual airport location when the aircraft takes off, but compound the problem when the aircraft lands at the exact same location an hour later, due to the variation in the accuracy of the GPS signal. 
         [0006]    These types of data collection errors are relatively small and typically do not cause problems when depicting motion significantly above ground level. For example, if the simulation is showing an aircraft flying at an altitude of 5,000 meters, an altitude error of three meters is not noticeable. However, when the simulated vehicle is operating near the ground, a difference of plus or minus three meters can make the difference of rendering the vehicle above or below the terrain. 
         [0007]    What is needed in the art, therefore, is a method for automatically reconciling differences between the altitude data and the terrain model when creating a simulation of near-ground activities. 
       SUMMARY 
       [0008]    Accordingly, it is one objective of the invention to describe a method for examining the individual data points describing a recorded trip by a vehicle and determining which of the data points correspond to points when the vehicle was actually on the ground. Then, at times in the recorded data corresponding to these confirmed “on-ground” data points, the altitude difference between the recorded altitude data and the terrain model is used to generate an altitude correction signal, which can be applied to the recorded altitude data. 
         [0009]    It is another objective of the invention to describe a method for examining the individual data points describing a recorded trip by a vehicle and determining which of the data points correspond to points when the vehicle was actually on the ground. Then, at times in the recorded data corresponding to these confirmed “on-ground” data points, the altitude difference between the recorded altitude data and the terrain model is used to modify, or morph, the terrain model to match the altitude data. 
         [0010]    It is yet another objective of the invention to describe one implementation of an algorithm for determining which data points in a trip data set correspond to “on-ground” points, by examining factors such as ground speed, vertical speed, geographic location of the points, and the frequency of oscillations measured at the points. 
         [0011]    Further objectives and advantages of the invention will become apparent from a consideration of the drawings and ensuing description. 
         [0012]    In accordance with the present invention, data collected from one or more sensors on a moving vehicle is analyzed. At a minimum, this “trip data” contains three-dimensional location information, including latitude, longitude, and altitude, from which ground speed and vertical speed can be derived. Optionally, the trip data contains information from one or more inertial measurement sensors, such as an accelerometer or gyroscope. First, data points which do not correspond to a likely landing or takeoff location (such as an airport or helipad) are eliminated to limit the amount of data that needs to be processed and to reduce errors introduced by inaccuracies in virtual terrain. Terrain around potential landing and takeoff locations is inherently flat, and, due to this fact, the elevation between successive terrain points is assumed to have little error. Then, the ground speed recorded or derived for each remaining data point is examined, and those data points which are above a predefined ground speed threshold are eliminated. Next, the vertical speed recorded or derived for each remaining data point is examined, and those data points which are above a predefined vertical speed threshold are eliminated. Finally, if the data points contain inertial measurement information, the frequency of the oscillations recorded for each remaining data point is analyzed, and data points with an oscillation frequency below a predefined threshold are eliminated. The remaining data points are assumed to correspond to confirmed “on-ground” locations. 
         [0013]    Now that it is known when the vehicle was on the ground, the difference between the recorded altitude and the height of the terrain model at these on-ground points is determined, and this difference is the basis for a correction signal. The correction signal can either be applied to the recorded altitude, if it is believed the terrain model is the more accurate source of information, or it can be applied to morph the terrain model, if it is believed the recorded altitude is the more accurate source of information. 
     
    
     
       DESCRIPTION OF THE DRAWINGS 
         [0014]      FIG. 1  is a flowchart depicting one implementation of an algorithm used to correct inaccurate altitude data in order to reconcile differences between an altitude data source and a terrain model. 
           [0015]      FIG. 2  is a flowchart depicting one implementation of an algorithm used to modify an inaccurate terrain model in order to reconcile differences between an altitude data source and a terrain model. 
           [0016]      FIG. 3  is a flowchart depicting one implementation of an algorithm to determine when a vehicle or moving body is on the ground by analyzing the data points representing a trip of that vehicle or moving body. 
           [0017]      FIG. 4  is a graph illustrating how the corrections of  FIG. 1  and  FIG. 2  are generated. 
       
    
    
     DETAILED DESCRIPTION 
       [0018]      FIG. 1  is a flowchart depicting one implementation of an algorithm used to correct inaccurate altitude data in order to reconcile differences between an altitude data source and a terrain model. In this “altitude correction” algorithm, it is assumed that the terrain model being used for the simulation is appropriately accurate, and that any difference found between the location of the surface of the terrain model and the altitude reading will be caused by an inaccurate altitude source. 
         [0019]    First, it must be determined if the algorithm is to be used in the simulation of a ground-based vehicle or an aircraft (Step  10 ). If the algorithm is to be used for a ground-based vehicle simulation, then it can be assumed that the vehicle will be in contact with the ground nearly 100 percent of the time. Therefore, the difference between the altitude data and the surface of the terrain model can be immediately used to generate an altitude correction signal (Step  50 ) for the entire recorded trip. The altitude correction signal can be applied directly to the recorded altitude data (Step  60 ). 
         [0020]    An “aircraft” shall be defined here to be any appropriate fixed-wing or rotary-wing aircraft, a glider, a lighter-than-air balloon, or any other vehicle, including vehicles normally considered “ground-based”, for which their use includes a substantial “off-ground” component. For example, the term “aircraft” as used herein may apply to a motorcycle or other normally ground-based vehicle which is used to perform above-ground stunts. 
         [0021]    If it is determined during Step  10  that the vehicle being simulated is an aircraft, analysis must be performed on the recorded trip data to determine which of the data points it contains correspond to known on-ground locations. This analysis is done by first eliminating any data points within the trip data which are not within a predefined window of distance from a potential takeoff or landing location, such as an airport or helipad (Step  20 ). In one implementation, Step  20  may be performed by applying information of known controlled airspaces available from a Federal Aviation Administration (FAA) database. In another implementation, Step  20  may be performed by requiring the simulation user to enter the location of the potential takeoff or landing site by hand. In still another implementation, Step  20  may be performed by making the assumption that the beginning or end of a recorded trip is either a takeoff or a landing from an FAA location or other on-ground location. 
         [0022]    Once the data set has been limited to only that data near known takeoff and landing locations (Step  20 ), an “on-ground” algorithm is applied to the remaining data points to determine a final set of “known on-ground locations” (Step  30 ). One implementation of Step  30  involves examining information contained in or derived from the recorded trip data to determine when a vehicle is on the ground. This implementation is detailed in  FIG. 3 , which will be discussed shortly. Another implementation of Step  30  involves the use of a simple sensor such as a “weight on wheels” switch, which will be mechanically activated when the wheels from the vehicle make contact with the ground. The result of Step  30  is a reduced, final set of data in which all remaining data points are assumed to correspond with known on-ground locations. 
         [0023]    For each known on-ground location, the altitude data corresponding to that location is compared to the altitude of the surface of the terrain model. Since the terrain model is assumed to be accurate by this algorithm, any difference between the two sources of data is assumed to be caused by inaccuracies in the altitude data. The difference between the recorded altitude data and the surface of the terrain model is therefore used to generate an altitude correction signal (Step  40 ). The altitude correction signal can be applied directly to the recorded altitude data (Step  60 ). 
         [0024]      FIG. 2  is a flowchart depicting one implementation of an algorithm used to modify, or morph, an inaccurate terrain model in order to reconcile differences between an altitude data source and a terrain model. In this “terrain morphing” algorithm, it is assumed that the recorded altitude data is appropriately accurate, and that any difference found between the location of the surface of the terrain model and the altitude reading will be caused by an inaccurate terrain model. 
         [0025]    The algorithms shown in  FIG. 1  and  FIG. 2  are very similar, and so the ensuing discussion will focus mostly on the steps that are different. The steps in  FIG. 2  that are repeated from  FIG. 1  retain the same step number; therefore the discussion of the corresponding step in  FIG. 1  applies to the step in  FIG. 2 . 
         [0026]    As in the algorithm of  FIG. 1 , the “terrain morphing” algorithm of  FIG. 2  first determines if the algorithm is to be used in the simulation of a ground-based vehicle or an aircraft (Step  10 ). If the algorithm is to be used for a ground-based vehicle simulation, then the difference between the altitude data and the surface of the terrain model can be immediately used to generate a terrain correction signal (Step  51 ). This terrain correction signal can be used to morph the terrain over the entire length of the recorded trip (Step  61 ). 
         [0027]    A “terrain model” shall be defined as a set of points in three-dimensional space which are used to represent the surface of the Earth in a simulation. Since at least three points in space are required to represent a planar surface in a simulation, a terrain model is often constructed of a finite set of triangles whose sides are joined together to form a triangular “mesh”. A single triangle of data points in space can represent a flat surface such as a plain, but additional triangles are required to represent features on that plain. For instance, three triangles are needed, at a minimum, to represent a pyramid shape, which might represent a smooth-sided mountain on the terrain model. It is obvious to one skilled in the arts that the greater the number of data points or triangles used in the terrain model, the higher the quality of the simulation. 
         [0028]    Therefore, the act of “morphing” a terrain model may require the addition, deletion, or movement of the data points defining that terrain model. In the present invention, the terrain morphing algorithm can be used to improve the quality of the terrain model around known on-ground locations by morphing the terrain so that it corresponds in location to the known on-ground locations. 
         [0029]    Returning to  FIG. 2 , if it is determined during Step  10  that the vehicle being simulated is an aircraft, analysis must be performed on the recorded trip data to determine which of the data points it contains correspond to known on-ground locations. This analysis is done by first eliminating any data points within the trip data which are not within a predefined window of distance from a potential takeoff or landing location, such as an airport or helipad (Step  20 ). Once the data set has been limited to only that data near known takeoff and landing locations (Step  20 ), an “on-ground” algorithm is applied to the remaining data points to determine a final set of “known on-ground locations” (Step  30 ). The result of Step  30  is a reduced, final set of data in which all remaining data points are assumed to correspond with known on-ground locations. 
         [0030]    For each known on-ground location, the altitude data corresponding to that location is compared to the altitude of the surface of the terrain model. Since the altitude data is assumed to be accurate by this algorithm, any difference between the two sources of data is assumed to be caused by inaccuracies in the terrain model. The difference between the recorded altitude data and the surface of the terrain model is therefore used to generate a terrain correction signal (Step  41 ). The terrain correction signal can be applied directly to the simulated terrain model (Step  61 ). 
         [0031]      FIG. 3  is a flowchart depicting one implementation of an algorithm to determine when a vehicle or moving body is on the ground by analyzing the data points representing a trip of that vehicle or moving body. First, the ground speed corresponding to each of the remaining trip data points is analyzed, and data points which are above a pre-defined ground speed threshold are eliminated from further consideration (Step  300 ). In one implementation of Step  300 , the pre-defined ground speed threshold is defined as that speed below which an aircraft is incapable of flight. The ground speed analysis of Step  300  works well for fixed wing aircraft, which require air to be pushed across the surface of the wing to create lift. However, for rotary-wing aircraft, such as a helicopter which is capable of hovering over a location, the application of Step  300  may not eliminate any additional data points. Therefore, additional analyses are required. 
         [0032]    After the application of Step  300 , the vertical speed corresponding to each of the remaining data points is analyzed, and data points for which the absolute value of the vertical speed (since vertical speed can be both positive and negative) is above a pre-defined vertical speed threshold are eliminated from further consideration (Step  301 ). If an aircraft is resting on the ground, any differences in vertical speed detected are due to inaccuracies in the altitude data (since altitude data is used to derive the vertical speed). If the derived vertical speed is changing constantly at a rate above that which can be explained by altitude data inaccuracies, then the aircraft is assumed to be moving (either up or down) and the data points corresponding to this movement are eliminated from further consideration as on-ground locations. 
         [0033]    Finally, after the application of Step  301 , the frequency of the oscillations measured for each remaining trip data point is analyzed (Step  302 ). The word “oscillations” is used here to describe vibration-type movements detected by inertial measurement sensors mounted on the aircraft. These inertial measurement sensors may include accelerometers, gyroscopes, or any other appropriate inertial sensing technology. When an aircraft is suspended in air during flight, the oscillations detected by inertial measurement sensors are relatively low in frequency compared to oscillations detected when the aircraft is still operating but in contact with the ground. Therefore, when the frequency of the oscillations corresponding to the remaining data points are analyzed, those data points with a frequency that falls below a pre-defined frequency threshold are eliminated (Step  303 ). The points remaining after the application of Steps  300 ,  301 ,  302 , and  303  are then assumed to correspond to known on-ground locations (Step  304 ). 
         [0034]      FIG. 4  illustrates how a correction signal, such as that described in  FIG. 1  or  FIG. 2 , is created. A terrain model  400  is rendered to represent an existing geographic location. Terrain models are created from databases comprised of data points representing actual elevations corresponding to the geographic locations being simulated. Although the individual data points given in these terrain databases are typically very accurate, the elevations between data points must be assumed. The more data points used to simulate a given piece of terrain, the more accurate the terrain model. However, a large number of data points requires a large amount of storage space. Trade-offs are made between terrain accuracy and data storage space. When fewer data points are used, the terrain model will likely have inherent inaccuracies. 
         [0035]    The uncorrected path of an aircraft  401 , comprised of a plurality of discrete altitude data points  402  corresponding to known points in time, is rendered over the terrain model  400 . Because of inaccuracies in either the terrain model  400  or the altitude data points  402 , some of the altitude data points  402  are rendered in the wrong location, either too far above or below the terrain model  400 . 
         [0036]    Separately, an on-ground algorithm such as that of  FIG. 3  is applied to the trip data set to create an on-ground waveform  403 , with known on-ground locations  404 . Points of trip data corresponding to the known on-ground locations  404  are examined, and a correction signal  405  is created based on the differences in altitude between the altitude data points  402  and the surface of the terrain model  400 . Discrete correction data points  406  are created for each point in the trip corresponding to a known on-ground location  404 , and the rest of the correction signal  405  is created by interpolating between the correction data points  406 . 
         [0037]    Having described the preferred embodiment, it will become apparent that various modifications can be made without departing from the scope of the invention as defined in the accompanying claims. In particular, the order shown for the steps in the algorithms depicted in  FIG. 1 ,  FIG. 2 , and  FIG. 3  may be changed slightly without significantly changing the end result. Step  20 , as shown in  FIG. 1  and  FIG. 2 , can be eliminated, so that the successive steps are performed on the entire data set, and not just those data points corresponding to a known takeoff or landing location. As discussed in the specification, the on-ground algorithm described in  FIG. 3  may be replaced with a simpler algorithm. For example, the on-ground algorithm of  FIG. 3  may eliminate Steps  301  and  302 , focusing only on the analysis of the measured oscillations. The use of a “weight on wheels” switch may eliminate the need for the on-ground algorithm of  FIG. 3  altogether. Additionally, the algorithms described herein may be applied to any moving body depicted in a simulation or virtual recreation, including a ground-based vehicle or a human performer.