Class GNSSMeasurementsGenerator

java.lang.Object
com.irurueta.navigation.gnss.GNSSMeasurementsGenerator

public class GNSSMeasurementsGenerator extends Object
Generates satellite GNSS measurement data. This implementation is based on the equations defined in "Principles of GNSS, Inertial, and Multi-sensor Integrated Navigation Systems, Second Edition" and on the companion software available at: https://github.com/ymjdz/MATLAB-Codes/blob/master/Generate_GNSS_measurements.m
  • Field Details

    • SPEED_OF_LIGHT

      public static final double SPEED_OF_LIGHT
      Speed of light in the vacuum expressed in meters per second (m/s).
      See Also:
    • EARTH_ROTATION_RATE

      public static final double EARTH_ROTATION_RATE
      Earth rotation rate expressed in radians per second (rad/s).
      See Also:
  • Constructor Details

    • GNSSMeasurementsGenerator

      private GNSSMeasurementsGenerator()
      Constructor. Prevents instantiation of utility class.
  • Method Details

    • generate

      public static Collection<GNSSMeasurement> generate(com.irurueta.units.Time time, List<ECEFPositionAndVelocity> satellitePositionsAndVelocities, ECEFPositionAndVelocity userPositionAndVelocity, List<Double> gnssRangeErrorBiases, GNSSConfig config, Random random)
      Generates satellite GNSS measurements.
      Parameters:
      time - current simulation time.
      satellitePositionsAndVelocities - satellite positions and velocities.
      userPositionAndVelocity - user position and velocity.
      gnssRangeErrorBiases - GNSS range error biases for each satellite position and velocity.
      config - GNSS configuration parameters.
      random - random number generator.
      Returns:
      collection of GNSS measurements.
    • generate

      public static void generate(com.irurueta.units.Time time, List<ECEFPositionAndVelocity> satellitePositionsAndVelocities, ECEFPositionAndVelocity userPositionAndVelocity, List<Double> gnssRangeErrorBiases, GNSSConfig config, Random random, Collection<GNSSMeasurement> result)
      Generates satellite GNSS measurements.
      Parameters:
      time - current simulation time.
      satellitePositionsAndVelocities - satellite positions and velocities.
      userPositionAndVelocity - user position and velocity.
      gnssRangeErrorBiases - GNSS range error biases for each satellite position and velocity.
      config - GNSS configuration parameters.
      random - random number generator.
      result - instance where resulting collection of GNSS measurements are stored.
    • generate

      public static Collection<GNSSMeasurement> generate(double time, List<ECEFPositionAndVelocity> satellitePositionsAndVelocities, ECEFPositionAndVelocity userPositionAndVelocity, List<Double> gnssRangeErrorBiases, GNSSConfig config, Random random)
      Generates satellite GNSS measurements.
      Parameters:
      time - current simulation time expressed in seconds (s).
      satellitePositionsAndVelocities - satellite positions and velocities.
      userPositionAndVelocity - user position and velocity.
      gnssRangeErrorBiases - GNSS range error biases for each satellite position and velocity.
      config - GNSS configuration parameters.
      random - random number generator.
      Returns:
      collection of GNSS measurements.
    • generate

      public static void generate(double time, List<ECEFPositionAndVelocity> satellitePositionsAndVelocities, ECEFPositionAndVelocity userPositionAndVelocity, List<Double> gnssRangeErrorBiases, GNSSConfig config, Random random, Collection<GNSSMeasurement> result)
      Generates satellite GNSS measurements.
      Parameters:
      time - current simulation time expressed in seconds (s).
      satellitePositionsAndVelocities - satellite positions and velocities.
      userPositionAndVelocity - user position and velocity.
      gnssRangeErrorBiases - GNSS range error biases for each satellite position and velocity.
      config - GNSS configuration parameters.
      random - random number generator.
      result - instance where resulting collection of GNSS measurements are stored.
    • generate

      public static Collection<GNSSMeasurement> generate(com.irurueta.units.Time time, List<ECEFPositionAndVelocity> satellitePositionsAndVelocities, ECEFPosition userPosition, ECEFVelocity userVelocity, List<Double> gnssRangeErrorBiases, GNSSConfig config, Random random)
      Generates satellite GNSS measurements.
      Parameters:
      time - current simulation time.
      satellitePositionsAndVelocities - satellite positions and velocities.
      userPosition - user position.
      userVelocity - user velocity.
      gnssRangeErrorBiases - GNSS range error biases for each satellite position and velocity.
      config - GNSS configuration parameters.
      random - random number generator.
      Returns:
      collection of GNSS measurements.
    • generate

      public static void generate(com.irurueta.units.Time time, List<ECEFPositionAndVelocity> satellitePositionsAndVelocities, ECEFPosition userPosition, ECEFVelocity userVelocity, List<Double> gnssRangeErrorBiases, GNSSConfig config, Random random, Collection<GNSSMeasurement> result)
      Generates satellite GNSS measurements.
      Parameters:
      time - current simulation time.
      satellitePositionsAndVelocities - satellite positions and velocities.
      userPosition - user position.
      userVelocity - user velocity.
      gnssRangeErrorBiases - GNSS range error biases for each satellite position and velocity.
      config - GNSS configuration parameters.
      random - random number generator.
      result - instance where resulting collection of GNSS measurements are stored.
    • generate

      public static Collection<GNSSMeasurement> generate(double time, List<ECEFPositionAndVelocity> satellitePositionsAndVelocities, ECEFPosition userPosition, ECEFVelocity userVelocity, List<Double> gnssRangeErrorBiases, GNSSConfig config, Random random)
      Generates satellite GNSS measurements.
      Parameters:
      time - current simulation time expressed in seconds (s).
      satellitePositionsAndVelocities - satellite positions and velocities.
      userPosition - user position.
      userVelocity - user velocity.
      gnssRangeErrorBiases - GNSS range error biases for each satellite position and velocity.
      config - GNSS configuration parameters.
      random - random number generator.
      Returns:
      collection of GNSS measurements.
    • generate

      public static void generate(double time, List<ECEFPositionAndVelocity> satellitePositionsAndVelocities, ECEFPosition userPosition, ECEFVelocity userVelocity, List<Double> gnssRangeErrorBiases, GNSSConfig config, Random random, Collection<GNSSMeasurement> result)
      Generates satellite GNSS measurements.
      Parameters:
      time - current simulation time expressed in seconds (s).
      satellitePositionsAndVelocities - satellite positions and velocities.
      userPosition - user position.
      userVelocity - user velocity.
      gnssRangeErrorBiases - GNSS range error biases for each satellite position and velocity.
      config - GNSS configuration parameters.
      random - random number generator.
      result - instance where resulting collection of GNSS measurements are stored.
    • generate

      public static Collection<GNSSMeasurement> generate(double time, List<ECEFPositionAndVelocity> satellitePositionsAndVelocities, double userX, double userY, double userZ, double userVx, double userVy, double userVz, List<Double> gnssRangeErrorBiases, GNSSConfig config, Random random)
      Generates satellite GNSS measurements.
      Parameters:
      time - current simulation time expressed in seconds (s).
      satellitePositionsAndVelocities - satellite positions and velocities.
      userX - x ECEF coordinate of user position expressed in meters (m).
      userY - y ECEF coordinate of user position expressed in meters (m).
      userZ - z ECEF coordinate of user position expressed in meters (m).
      userVx - x ECEF coordinate of user velocity expressed in meters per second (m/s).
      userVy - y ECEF coordinate of user velocity expressed in meters per second (m/s).
      userVz - z ECEF coordinate of user velocity expressed in meters per second (m/s).
      gnssRangeErrorBiases - GNSS range error biases for each satellite position and velocity.
      config - GNSS configuration parameters.
      random - random number generator.
      Returns:
      collection of GNSS measurements.
    • generate

      public static void generate(double time, List<ECEFPositionAndVelocity> satellitePositionsAndVelocities, double userX, double userY, double userZ, double userVx, double userVy, double userVz, List<Double> gnssRangeErrorBiases, GNSSConfig config, Random random, Collection<GNSSMeasurement> result)
      Generates satellite GNSS measurements.
      Parameters:
      time - current simulation time expressed in seconds (s).
      satellitePositionsAndVelocities - satellite positions and velocities.
      userX - x ECEF coordinate of user position expressed in meters (m).
      userY - y ECEF coordinate of user position expressed in meters (m).
      userZ - z ECEF coordinate of user position expressed in meters (m).
      userVx - x ECEF coordinate of user velocity expressed in meters per second (m/s).
      userVy - y ECEF coordinate of user velocity expressed in meters per second (m/s).
      userVz - z ECEF coordinate of user velocity expressed in meters per second (m/s).
      gnssRangeErrorBiases - GNSS range error biases for each satellite position and velocity.
      config - GNSS configuration parameters.
      random - random number generator.
      result - instance where resulting collection of GNSS measurements are stored.
    • generate

      public static GNSSMeasurement generate(com.irurueta.units.Time time, ECEFPositionAndVelocity satellitePositionAndVelocity, ECEFPositionAndVelocity userPositionAndVelocity, double gnssRangeErrorBias, GNSSConfig config, Random random)
      Generates a single satellite GNSS measurement.
      Parameters:
      time - current simulation time.
      satellitePositionAndVelocity - satellite position and velocity.
      userPositionAndVelocity - user position and velocity.
      gnssRangeErrorBias - GNSS range error bias.
      config - GNSS configuration parameters.
      random - random number generator.
      Returns:
      a new GNSS measurement.
    • generate

      public static boolean generate(com.irurueta.units.Time time, ECEFPositionAndVelocity satellitePositionAndVelocity, ECEFPositionAndVelocity userPositionAndVelocity, double gnssRangeErrorBias, GNSSConfig config, Random random, GNSSMeasurement result)
      Generates a single satellite GNSS measurement.
      Parameters:
      time - current simulation time.
      satellitePositionAndVelocity - satellite position and velocity.
      userPositionAndVelocity - user position and velocity.
      gnssRangeErrorBias - GNSS range error bias.
      config - GNSS configuration parameters.
      random - random number generator.
      result - instance where resulting GNSS measurement is stored.
      Returns:
      true if result has been obtained, failed if satellite is below elevation mask angle and result is not updated.
    • generate

      public static GNSSMeasurement generate(double time, ECEFPositionAndVelocity satellitePositionAndVelocity, ECEFPositionAndVelocity userPositionAndVelocity, double gnssRangeErrorBias, GNSSConfig config, Random random)
      Generates a single satellite GNSS measurement.
      Parameters:
      time - current simulation time expressed in seconds (s).
      satellitePositionAndVelocity - satellite position and velocity.
      userPositionAndVelocity - user position and velocity.
      gnssRangeErrorBias - GNSS range error bias.
      config - GNSS configuration parameters.
      random - random number generator.
      Returns:
      a new GNSS measurement.
    • generate

      public static boolean generate(double time, ECEFPositionAndVelocity satellitePositionAndVelocity, ECEFPositionAndVelocity userPositionAndVelocity, double gnssRangeErrorBias, GNSSConfig config, Random random, GNSSMeasurement result)
      Generates a single satellite GNSS measurement.
      Parameters:
      time - current simulation time expressed in seconds (s).
      satellitePositionAndVelocity - satellite position and velocity.
      userPositionAndVelocity - user position and velocity.
      gnssRangeErrorBias - GNSS range error bias.
      config - GNSS configuration parameters.
      random - random number generator.
      result - instance where resulting GNSS measurement is stored.
      Returns:
      true if result has been obtained, failed if satellite is below elevation mask angle and result is not updated.
    • generate

      public static GNSSMeasurement generate(com.irurueta.units.Time time, ECEFPosition satellitePosition, ECEFVelocity satelliteVelocity, ECEFPosition userPosition, ECEFVelocity userVelocity, double gnssRangeErrorBias, GNSSConfig config, Random random)
      Generates a single satellite GNSS measurement.
      Parameters:
      time - current simulation time.
      satellitePosition - satellite position.
      satelliteVelocity - satellite velocity.
      userPosition - user position.
      userVelocity - user velocity.
      gnssRangeErrorBias - GNSS range error bias.
      config - GNSS configuration parameters.
      random - random number generator.
      Returns:
      a new GNSS measurement.
    • generate

      public static boolean generate(com.irurueta.units.Time time, ECEFPosition satellitePosition, ECEFVelocity satelliteVelocity, ECEFPosition userPosition, ECEFVelocity userVelocity, double gnssRangeErrorBias, GNSSConfig config, Random random, GNSSMeasurement result)
      Generates a single satellite GNSS measurement.
      Parameters:
      time - current simulation time.
      satellitePosition - satellite position.
      satelliteVelocity - satellite velocity.
      userPosition - user position.
      userVelocity - user velocity.
      gnssRangeErrorBias - GNSS range error bias.
      config - GNSS configuration parameters.
      random - random number generator.
      result - instance where resulting GNSS measurement is stored.
      Returns:
      true if result has been obtained, failed if satellite is below elevation mask angle and result is not updated.
    • generate

      public static GNSSMeasurement generate(double time, ECEFPosition satellitePosition, ECEFVelocity satelliteVelocity, ECEFPosition userPosition, ECEFVelocity userVelocity, double gnssRangeErrorBias, GNSSConfig config, Random random)
      Generates a single satellite GNSS measurement.
      Parameters:
      time - current simulation time expressed in seconds (s).
      satellitePosition - satellite position.
      satelliteVelocity - satellite velocity.
      userPosition - user position.
      userVelocity - user velocity.
      gnssRangeErrorBias - GNSS range error bias.
      config - GNSS configuration parameters.
      random - random number generator.
      Returns:
      a new GNSS measurement.
    • generate

      public static boolean generate(double time, ECEFPosition satellitePosition, ECEFVelocity satelliteVelocity, ECEFPosition userPosition, ECEFVelocity userVelocity, double gnssRangeErrorBias, GNSSConfig config, Random random, GNSSMeasurement result)
      Generates a single satellite GNSS measurement.
      Parameters:
      time - current simulation time expressed in seconds (s).
      satellitePosition - satellite position.
      satelliteVelocity - satellite velocity.
      userPosition - user position.
      userVelocity - user velocity.
      gnssRangeErrorBias - GNSS range error bias.
      config - GNSS configuration parameters.
      random - random number generator.
      result - instance where resulting GNSS measurement is stored.
      Returns:
      true if result has been obtained, failed if satellite is below elevation mask angle and result is not updated.
    • generate

      public static GNSSMeasurement generate(double time, double satelliteX, double satelliteY, double satelliteZ, double satelliteVx, double satelliteVy, double satelliteVz, double userX, double userY, double userZ, double userVx, double userVy, double userVz, double gnssRangeErrorBias, GNSSConfig config, Random random)
      Generates a single satellite GNSS measurement.
      Parameters:
      time - current simulation time expressed in seconds (s).
      satelliteX - x ECEF coordinate of satellite position expressed in meters (m).
      satelliteY - y ECEF coordinate of satellite position expressed in meters (m).
      satelliteZ - z ECEF coordinate of satellite position expressed in meters (m).
      satelliteVx - x ECEF coordinate of satellite velocity expressed in meters per second (m/s).
      satelliteVy - y ECEF coordinate of satellite velocity expressed in meters per second (m/s).
      satelliteVz - z ECEF coordinate of satellite velocity expressed in meters per second (m/s).
      userX - x ECEF coordinate of user position expressed in meters (m).
      userY - y ECEF coordinate of user position expressed in meters (m).
      userZ - z ECEF coordinate of user position expressed in meters (m).
      userVx - x ECEF coordinate of user velocity expressed in meters per second (m/s).
      userVy - y ECEF coordinate of user velocity expressed in meters per second (m/s).
      userVz - z ECEF coordinate of user velocity expressed in meters per second (m/s).
      gnssRangeErrorBias - GNSS range error bias.
      config - GNSS configuration parameters.
      random - random number generator.
      Returns:
      a new GNSS measurement.
    • generate

      public static boolean generate(double time, double satelliteX, double satelliteY, double satelliteZ, double satelliteVx, double satelliteVy, double satelliteVz, double userX, double userY, double userZ, double userVx, double userVy, double userVz, double gnssRangeErrorBias, GNSSConfig config, Random random, GNSSMeasurement result)
      Generates a single satellite GNSS measurement.
      Parameters:
      time - current simulation time expressed in seconds (s).
      satelliteX - x ECEF coordinate of satellite position expressed in meters (m).
      satelliteY - y ECEF coordinate of satellite position expressed in meters (m).
      satelliteZ - z ECEF coordinate of satellite position expressed in meters (m).
      satelliteVx - x ECEF coordinate of satellite velocity expressed in meters per second (m/s).
      satelliteVy - y ECEF coordinate of satellite velocity expressed in meters per second (m/s).
      satelliteVz - z ECEF coordinate of satellite velocity expressed in meters per second (m/s).
      userX - x ECEF coordinate of user position expressed in meters (m).
      userY - y ECEF coordinate of user position expressed in meters (m).
      userZ - z ECEF coordinate of user position expressed in meters (m).
      userVx - x ECEF coordinate of user velocity expressed in meters per second (m/s).
      userVy - y ECEF coordinate of user velocity expressed in meters per second (m/s).
      userVz - z ECEF coordinate of user velocity expressed in meters per second (m/s).
      gnssRangeErrorBias - GNSS range error bias.
      config - GNSS configuration parameters.
      random - random number generator.
      result - instance where resulting GNSS measurement is stored.
      Returns:
      true if result has been obtained, failed if satellite is below elevation mask angle and result is not updated.
    • generate

      private static boolean generate(double time, double satelliteX, double satelliteY, double satelliteZ, double satelliteVx, double satelliteVy, double satelliteVz, double userX, double userY, double userZ, double userLatitude, double userLongitude, double userVx, double userVy, double userVz, double gnssRangeErrorBias, GNSSConfig config, Random random, GNSSMeasurement result)
      Internal method to generate a single satellite GNSS measurement.
      Parameters:
      time - current simulation time expressed in seconds (s).
      satelliteX - x ECEF coordinate of satellite position expressed in meters (m).
      satelliteY - y ECEF coordinate of satellite position expressed in meters (m).
      satelliteZ - z ECEF coordinate of satellite position expressed in meters (m).
      satelliteVx - x ECEF coordinate of satellite velocity expressed in meters per second (m/s).
      satelliteVy - y ECEF coordinate of satellite velocity expressed in meters per second (m/s).
      satelliteVz - z ECEF coordinate of satellite velocity expressed in meters per second (m/s).
      userX - x ECEF coordinate of user position expressed in meters (m).
      userY - y ECEF coordinate of user position expressed in meters (m).
      userZ - z ECEF coordinate of user position expressed in meters (m).
      userLatitude - latitude of user NED position expressed in radians (rad).
      userLongitude - longitude of user NED position expressed in radians (rad).
      userVx - x ECEF coordinate of user velocity expressed in meters per second (m/s).
      userVy - y ECEF coordinate of user velocity expressed in meters per second (m/s).
      userVz - z ECEF coordinate of user velocity expressed in meters per second (m/s).
      gnssRangeErrorBias - GNSS range error bias.
      config - GNSS configuration parameters.
      random - random number generator.
      result - instance where resulting GNSS measurement is stored.
      Returns:
      true if result has been obtained, failed if satellite is below elevation mask angle and result is not updated.
    • generate

      private static boolean generate(double time, double satelliteX, double satelliteY, double satelliteZ, double satelliteVx, double satelliteVy, double satelliteVz, double userX, double userY, double userZ, double userVx, double userVy, double userVz, double gnssRangeErrorBias, GNSSConfig config, com.irurueta.algebra.Matrix cen, com.irurueta.algebra.Matrix omegaIe, com.irurueta.algebra.Matrix cei, com.irurueta.algebra.Matrix satellitePosition, com.irurueta.algebra.Matrix deltaR, com.irurueta.algebra.Matrix satelliteVelocity, com.irurueta.algebra.Matrix userPosition, com.irurueta.algebra.Matrix userVelocity, com.irurueta.algebra.Matrix tmp1, com.irurueta.algebra.Matrix tmp2, com.irurueta.algebra.Matrix tmp3, com.irurueta.algebra.Matrix tmp4, com.irurueta.algebra.Matrix tmp5, com.irurueta.algebra.Matrix tmp6, Random random, GNSSMeasurement result) throws com.irurueta.algebra.WrongSizeException
      Internal method to generate a single satellite GNSS measurement.
      Parameters:
      time - current simulation time expressed in seconds (s).
      satelliteX - x ECEF coordinate of satellite position expressed in meters (m).
      satelliteY - y ECEF coordinate of satellite position expressed in meters (m).
      satelliteZ - z ECEF coordinate of satellite position expressed in meters (m).
      satelliteVx - x ECEF coordinate of satellite velocity expressed in meters per second (m/s).
      satelliteVy - y ECEF coordinate of satellite velocity expressed in meters per second (m/s).
      satelliteVz - z ECEF coordinate of satellite velocity expressed in meters per second (m/s).
      userX - x ECEF coordinate of user position expressed in meters (m).
      userY - y ECEF coordinate of user position expressed in meters (m).
      userZ - z ECEF coordinate of user position expressed in meters (m).
      userVx - x ECEF coordinate of user velocity expressed in meters per second (m/s).
      userVy - y ECEF coordinate of user velocity expressed in meters per second (m/s).
      userVz - z ECEF coordinate of user velocity expressed in meters per second (m/s).
      gnssRangeErrorBias - GNSS range error bias.
      config - GNSS configuration parameters.
      cen - ECEF to NED coordinate transformation matrix.
      omegaIe - skew symmetric matrix of Earth rotation rate.
      cei - ECEF to ECI conversion matrix.
      satellitePosition - column matrix containing satellite position.
      deltaR - vector containing satellite to user position difference.
      satelliteVelocity - column matrix containing satellite velocity.
      userPosition - column matrix containing user position.
      userVelocity - column matrix containing user velocity.
      tmp1 - column matrix containing temporal values.
      tmp2 - column matrix containing temporal values.
      tmp3 - column matrix containing temporal values.
      tmp4 - column matrix containing temporal values.
      tmp5 - column matrix containing temporal values.
      tmp6 - column matrix containing temporal values.
      random - random number generator.
      result - instance where resulting GNSS measurement is stored.
      Returns:
      true if result has been obtained, failed if satellite is below elevation mask angle and result is not updated.
      Throws:
      com.irurueta.algebra.WrongSizeException - if an error occurs.
    • convertTime

      private static double convertTime(com.irurueta.units.Time time)
      Converts time instance into seconds.
      Parameters:
      time - instance to be converted.
      Returns:
      time converted to seconds.