NEDInertialNavigator.java
/*
* Copyright (C) 2019 Alberto Irurueta Carro (alberto@irurueta.com)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.irurueta.navigation.inertial.navigators;
import com.irurueta.algebra.AlgebraException;
import com.irurueta.algebra.Matrix;
import com.irurueta.algebra.Utils;
import com.irurueta.geometry.InvalidRotationMatrixException;
import com.irurueta.navigation.frames.CoordinateTransformation;
import com.irurueta.navigation.frames.FrameType;
import com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException;
import com.irurueta.navigation.frames.NEDFrame;
import com.irurueta.navigation.frames.NEDPosition;
import com.irurueta.navigation.frames.NEDVelocity;
import com.irurueta.navigation.geodesic.Constants;
import com.irurueta.navigation.inertial.BodyKinematics;
import com.irurueta.navigation.inertial.estimators.NEDGravityEstimator;
import com.irurueta.navigation.inertial.estimators.RadiiOfCurvatureEstimator;
import com.irurueta.units.*;
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation phases are precise).
* This implementation is based on the equations defined in "Principles of GNSS, Inertial, and Multisensor
* Integrated Navigation Systems, Second Edition" and on the companion software available at:
* <a href="https://github.com/ymjdz/MATLAB-Codes/blob/master/Nav_equations_NED.m">
* https://github.com/ymjdz/MATLAB-Codes/blob/master/Nav_equations_NED.m
* </a>
*/
public class NEDInertialNavigator {
/**
* Earth rotation rate expressed in radians per second (rad/s).
*/
public static final double EARTH_ROTATION_RATE = Constants.EARTH_ROTATION_RATE;
/**
* Default threshold to consider a coordinate transformation matrix as a valid rotation.
*/
public static final double DEFAULT_ACCURACY_THRESHOLD = CoordinateTransformation.DEFAULT_THRESHOLD;
/**
* Alpha threshold.
*/
private static final double ALPHA_THRESHOLD = 1e-8;
/**
* Number of rows.
*/
private static final int ROWS = 3;
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC,
oldVn, oldVe, oldVd, fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final BodyKinematics kinematics, final double accuracyThreshold, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, kinematics,
accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final BodyKinematics kinematics, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, kinematics,
DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final BodyKinematics kinematics, final double accuracyThreshold, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, kinematics,
accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final BodyKinematics kinematics, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, kinematics,
DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd, final BodyKinematics kinematics,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, kinematics, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd, final BodyKinematics kinematics,
final NEDFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, kinematics, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd, final BodyKinematics kinematics,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, kinematics, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd, final BodyKinematics kinematics,
final NEDFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, kinematics, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity, final BodyKinematics kinematics,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, kinematics,
accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity, final BodyKinematics kinematics,
final NEDFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, kinematics,
DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity, final BodyKinematics kinematics,
final double accuracyThreshold, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, kinematics,
accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity, final BodyKinematics kinematics,
final NEDFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, kinematics,
DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final BodyKinematics kinematics, final double accuracyThreshold,
final NEDFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldPosition, oldC, oldVelocity, kinematics, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final BodyKinematics kinematics, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldPosition, oldC, oldVelocity, kinematics, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final BodyKinematics kinematics, final double accuracyThreshold,
final NEDFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldPosition, oldC, oldVelocity, kinematics, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final BodyKinematics kinematics, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldPosition, oldC, oldVelocity, kinematics, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final BodyKinematics kinematics, final double accuracyThreshold, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, kinematics,
accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final BodyKinematics kinematics, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, kinematics,
DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final BodyKinematics kinematics, final double accuracyThreshold, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, kinematics,
accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final BodyKinematics kinematics, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, kinematics,
DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity, final BodyKinematics kinematics,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, kinematics,
accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity, final BodyKinematics kinematics,
final NEDFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, kinematics,
DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity, final BodyKinematics kinematics,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, kinematics,
accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity, final BodyKinematics kinematics,
final NEDFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, kinematics,
DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldSpeedN, oldSpeedE, oldSpeedD,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldSpeedN, oldSpeedE, oldSpeedD, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldSpeedN, oldSpeedE, oldSpeedD,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldSpeedN, oldSpeedE, oldSpeedD, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldPosition, oldC, oldSpeedN, oldSpeedE, oldSpeedD, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final NEDPosition oldPosition,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldPosition, oldC, oldSpeedN, oldSpeedE, oldSpeedD, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldPosition, oldC, oldSpeedN, oldSpeedE, oldSpeedD, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldPosition, oldC, oldSpeedN, oldSpeedE, oldSpeedD, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final BodyKinematics kinematics, final double accuracyThreshold, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldSpeedN, oldSpeedE, oldSpeedD,
kinematics, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final BodyKinematics kinematics, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldSpeedN, oldSpeedE, oldSpeedD, kinematics,
DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final BodyKinematics kinematics, final double accuracyThreshold, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldSpeedN, oldSpeedE, oldSpeedD,
kinematics, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final BodyKinematics kinematics, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldSpeedN, oldSpeedE, oldSpeedD, kinematics,
DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD, final BodyKinematics kinematics,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldPosition, oldC, oldSpeedN, oldSpeedE, oldSpeedD, kinematics, accuracyThreshold,
result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD, final BodyKinematics kinematics,
final NEDFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldPosition, oldC, oldSpeedN, oldSpeedE, oldSpeedD, kinematics,
DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD, final BodyKinematics kinematics,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldPosition, oldC, oldSpeedN, oldSpeedE, oldSpeedD, kinematics, accuracyThreshold,
result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD, final BodyKinematics kinematics,
final NEDFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldPosition, oldC, oldSpeedN, oldSpeedE, oldSpeedD, kinematics,
DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, fx, fy, fz, angularRateX,
angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final NEDFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final NEDFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final NEDFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final NEDFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final NEDFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final NEDFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final NEDFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final NEDFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldSpeedN, oldSpeedE, oldSpeedD,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldSpeedN, oldSpeedE, oldSpeedD, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldSpeedN, oldSpeedE, oldSpeedD,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldSpeedN, oldSpeedE, oldSpeedD, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldSpeedN, oldSpeedE, oldSpeedD,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final NEDFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldSpeedN, oldSpeedE, oldSpeedD, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldSpeedN, oldSpeedE, oldSpeedD,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final NEDFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldSpeedN, oldSpeedE, oldSpeedD, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldSpeedN, oldSpeedE, oldSpeedD,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final NEDFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldSpeedN, oldSpeedE, oldSpeedD, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldSpeedN, oldSpeedE, oldSpeedD,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final double oldLatitude, final double oldLongitude,
final double oldHeight, final CoordinateTransformation oldC,
final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final NEDFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldSpeedN, oldSpeedE, oldSpeedD, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldPosition, oldC, oldSpeedN, oldSpeedE, oldSpeedD, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final NEDFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldPosition, oldC, oldSpeedN, oldSpeedE, oldSpeedD, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldPosition, oldC, oldSpeedN, oldSpeedE, oldSpeedD,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final NEDFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldPosition, oldC, oldSpeedN, oldSpeedE, oldSpeedD, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final NEDFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final NEDFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final NEDFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final NEDFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final NEDFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final NEDFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final NEDFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final NEDFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final NEDFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final NEDFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final BodyKinematics kinematics, final double accuracyThreshold, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldSpeedN, oldSpeedE, oldSpeedD,
kinematics, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final BodyKinematics kinematics, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldSpeedN, oldSpeedE, oldSpeedD, kinematics,
DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final BodyKinematics kinematics, final double accuracyThreshold, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldSpeedN, oldSpeedE, oldSpeedD,
kinematics, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public void navigate(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final BodyKinematics kinematics, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigate(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldSpeedN, oldSpeedE, oldSpeedD, kinematics,
DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public void navigate(
final double timeInterval, final NEDFrame oldFrame, final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException {
navigateNED(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold,
result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public void navigate(
final double timeInterval, final NEDFrame oldFrame, final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ, final NEDFrame result)
throws InertialNavigatorException {
navigate(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public void navigate(
final Time timeInterval, final NEDFrame oldFrame, final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException {
navigateNED(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold,
result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public void navigate(
final Time timeInterval, final NEDFrame oldFrame, final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ, final NEDFrame result)
throws InertialNavigatorException {
navigate(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public void navigate(
final double timeInterval, final NEDFrame oldFrame, final BodyKinematics kinematics,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException {
navigateNED(timeInterval, oldFrame, kinematics, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public void navigate(
final double timeInterval, final NEDFrame oldFrame, final BodyKinematics kinematics, final NEDFrame result)
throws InertialNavigatorException {
navigate(timeInterval, oldFrame, kinematics, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public void navigate(
final Time timeInterval, final NEDFrame oldFrame, final BodyKinematics kinematics,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException {
navigateNED(timeInterval, oldFrame, kinematics, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public void navigate(
final Time timeInterval, final NEDFrame oldFrame, final BodyKinematics kinematics, final NEDFrame result)
throws InertialNavigatorException {
navigate(timeInterval, oldFrame, kinematics, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public void navigate(
final double timeInterval, final NEDFrame oldFrame,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException {
navigateNED(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold,
result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public void navigate(
final double timeInterval, final NEDFrame oldFrame,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ, final NEDFrame result)
throws InertialNavigatorException {
navigate(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public void navigate(
final Time timeInterval, final NEDFrame oldFrame,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException {
navigateNED(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold,
result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public void navigate(
final Time timeInterval, final NEDFrame oldFrame,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final NEDFrame result) throws InertialNavigatorException {
navigateNED(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public void navigate(
final double timeInterval, final NEDFrame oldFrame,
final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException {
navigateNED(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold,
result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public void navigate(
final double timeInterval, final NEDFrame oldFrame,
final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final NEDFrame result) throws InertialNavigatorException {
navigate(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public void navigate(
final Time timeInterval, final NEDFrame oldFrame, final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException {
navigateNED(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold,
result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public void navigate(
final Time timeInterval, final NEDFrame oldFrame, final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final NEDFrame result) throws InertialNavigatorException {
navigate(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public void navigate(
final double timeInterval, final NEDFrame oldFrame,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException {
navigateNED(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold,
result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public void navigate(
final double timeInterval, final NEDFrame oldFrame,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final NEDFrame result) throws InertialNavigatorException {
navigate(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public void navigate(
final Time timeInterval, final NEDFrame oldFrame,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException {
navigateNED(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold,
result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public void navigate(
final Time timeInterval, final NEDFrame oldFrame,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final NEDFrame result) throws InertialNavigatorException {
navigate(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final BodyKinematics kinematics, final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd,
kinematics, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final BodyKinematics kinematics) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd,
kinematics, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final BodyKinematics kinematics, final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd,
kinematics, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final BodyKinematics kinematics) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd,
kinematics, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd, final BodyKinematics kinematics,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, kinematics,
accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd, final BodyKinematics kinematics)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, kinematics,
DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd, final BodyKinematics kinematics,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, kinematics,
accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd, final BodyKinematics kinematics)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, kinematics,
DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity, final BodyKinematics kinematics,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity,
kinematics, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity, final BodyKinematics kinematics)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, kinematics,
DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity, final BodyKinematics kinematics,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity,
kinematics, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity, final BodyKinematics kinematics)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, kinematics,
DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final BodyKinematics kinematics, final double accuracyThreshold)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldPosition, oldC, oldVelocity, kinematics, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final BodyKinematics kinematics) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldPosition, oldC, oldVelocity, kinematics,
DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final BodyKinematics kinematics, final double accuracyThreshold)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldPosition, oldC, oldVelocity, kinematics, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final BodyKinematics kinematics) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldPosition, oldC, oldVelocity, kinematics,
DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC,
oldVn, oldVe, oldVd, fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC,
oldVn, oldVe, oldVd, fx, fy, fz, angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final BodyKinematics kinematics, final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd,
kinematics, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final BodyKinematics kinematics) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd,
kinematics, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final BodyKinematics kinematics, final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd,
kinematics, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final BodyKinematics kinematics) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd,
kinematics, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity, final BodyKinematics kinematics,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity,
kinematics, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity, final BodyKinematics kinematics)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, kinematics,
DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity, final BodyKinematics kinematics,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity,
kinematics, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity, final BodyKinematics kinematics)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity,
kinematics, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC,
oldSpeedN, oldSpeedE, oldSpeedD, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC,
oldSpeedN, oldSpeedE, oldSpeedD, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC,
oldSpeedN, oldSpeedE, oldSpeedD, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC,
oldSpeedN, oldSpeedE, oldSpeedD, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldPosition, oldC, oldSpeedN, oldSpeedE, oldSpeedD, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldPosition, oldC, oldSpeedN, oldSpeedE, oldSpeedD, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldPosition, oldC, oldSpeedN, oldSpeedE, oldSpeedD, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldPosition, oldC, oldSpeedN, oldSpeedE, oldSpeedD, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final BodyKinematics kinematics, final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC,
oldSpeedN, oldSpeedE, oldSpeedD, kinematics, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final BodyKinematics kinematics) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC,
oldSpeedN, oldSpeedE, oldSpeedD, kinematics, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final BodyKinematics kinematics, final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC,
oldSpeedN, oldSpeedE, oldSpeedD, kinematics, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final BodyKinematics kinematics) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC,
oldSpeedN, oldSpeedE, oldSpeedD, kinematics, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD, final BodyKinematics kinematics,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldPosition, oldC, oldSpeedN, oldSpeedE, oldSpeedD, kinematics,
accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD, final BodyKinematics kinematics)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldPosition, oldC, oldSpeedN, oldSpeedE, oldSpeedD, kinematics,
DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD, final BodyKinematics kinematics,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldPosition, oldC, oldSpeedN, oldSpeedE, oldSpeedD, kinematics,
accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD, final BodyKinematics kinematics)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldPosition, oldC, oldSpeedN, oldSpeedE, oldSpeedD, kinematics,
DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC,
oldSpeedN, oldSpeedE, oldSpeedD, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC,
oldSpeedN, oldSpeedE, oldSpeedD, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC,
oldSpeedN, oldSpeedE, oldSpeedD, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC,
oldSpeedN, oldSpeedE, oldSpeedD, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC,
oldSpeedN, oldSpeedE, oldSpeedD, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC,
oldSpeedN, oldSpeedE, oldSpeedD, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC,
oldSpeedN, oldSpeedE, oldSpeedD, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC,
oldSpeedN, oldSpeedE, oldSpeedD, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC,
oldSpeedN, oldSpeedE, oldSpeedD, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC,
oldSpeedN, oldSpeedE, oldSpeedD, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC,
oldSpeedN, oldSpeedE, oldSpeedD, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC,
oldSpeedN, oldSpeedE, oldSpeedD, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldPosition, oldC, oldSpeedN, oldSpeedE, oldSpeedD, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldPosition, oldC, oldSpeedN, oldSpeedE, oldSpeedD, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldPosition, oldC, oldSpeedN, oldSpeedE, oldSpeedD, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldPosition, oldC, oldSpeedN, oldSpeedE, oldSpeedD, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final BodyKinematics kinematics, final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC,
oldSpeedN, oldSpeedE, oldSpeedD, kinematics, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final BodyKinematics kinematics) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC,
oldSpeedN, oldSpeedE, oldSpeedD, kinematics, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final BodyKinematics kinematics, final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC,
oldSpeedN, oldSpeedE, oldSpeedD, kinematics, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final BodyKinematics kinematics) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC,
oldSpeedN, oldSpeedE, oldSpeedD, kinematics, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final NEDFrame oldFrame, final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException {
return navigateNEDAndReturnNew(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final NEDFrame oldFrame, final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ)
throws InertialNavigatorException {
return navigateAndReturnNew(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final NEDFrame oldFrame, final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException {
return navigateNEDAndReturnNew(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final NEDFrame oldFrame, final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ)
throws InertialNavigatorException {
return navigateAndReturnNew(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final NEDFrame oldFrame, final BodyKinematics kinematics,
final double accuracyThreshold) throws InertialNavigatorException {
return navigateNEDAndReturnNew(timeInterval, oldFrame, kinematics, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final NEDFrame oldFrame, final BodyKinematics kinematics)
throws InertialNavigatorException {
return navigateAndReturnNew(timeInterval, oldFrame, kinematics, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final NEDFrame oldFrame, final BodyKinematics kinematics,
final double accuracyThreshold) throws InertialNavigatorException {
return navigateNEDAndReturnNew(timeInterval, oldFrame, kinematics, accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final NEDFrame oldFrame, final BodyKinematics kinematics)
throws InertialNavigatorException {
return navigateAndReturnNew(timeInterval, oldFrame, kinematics, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final NEDFrame oldFrame,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException {
return navigateNEDAndReturnNew(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final NEDFrame oldFrame,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ)
throws InertialNavigatorException {
return navigateAndReturnNew(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final NEDFrame oldFrame,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException {
return navigateNEDAndReturnNew(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final NEDFrame oldFrame,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ)
throws InertialNavigatorException {
return navigateAndReturnNew(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final NEDFrame oldFrame, final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException {
return navigateNEDAndReturnNew(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final NEDFrame oldFrame, final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
throws InertialNavigatorException {
return navigateAndReturnNew(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final NEDFrame oldFrame, final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException {
return navigateNEDAndReturnNew(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final NEDFrame oldFrame, final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
throws InertialNavigatorException {
return navigateAndReturnNew(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final NEDFrame oldFrame,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException {
return navigateNEDAndReturnNew(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public NEDFrame navigateAndReturnNew(
final double timeInterval, final NEDFrame oldFrame,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
throws InertialNavigatorException {
return navigateAndReturnNew(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final NEDFrame oldFrame,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException {
return navigateNEDAndReturnNew(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
accuracyThreshold);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public NEDFrame navigateAndReturnNew(
final Time timeInterval, final NEDFrame oldFrame,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
throws InertialNavigatorException {
return navigateAndReturnNew(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
if (!isValidBodyToNEDCoordinateTransformationMatrix(oldC)) {
throw new InvalidSourceAndDestinationFrameTypeException();
}
try {
// Calculate attitude increment, magnitude, and skew-symmetric matrix
final var alphaIbb = new Matrix(ROWS, 1);
alphaIbb.setElementAtIndex(0, angularRateX * timeInterval);
alphaIbb.setElementAtIndex(1, angularRateY * timeInterval);
alphaIbb.setElementAtIndex(2, angularRateZ * timeInterval);
final var magAlpha = Utils.normF(alphaIbb);
final var skewAlpha = Utils.skewMatrix(alphaIbb);
// From (2.123), determine the angular rate of the ECEF frame with respect
// the ECI frame, resolved about NED
final var omegaIen = new Matrix(ROWS, 1);
omegaIen.setElementAtIndex(0, Math.cos(oldLatitude) * EARTH_ROTATION_RATE);
omegaIen.setElementAtIndex(2, -Math.sin(oldLatitude) * EARTH_ROTATION_RATE);
// From (5.44), determine the angular rate of the NED frame with respect
// the ECEF frame, resolved about NED
final var oldRadiiOfCurvature = RadiiOfCurvatureEstimator.estimateRadiiOfCurvatureAndReturnNew(oldLatitude);
final var oldRe = oldRadiiOfCurvature.getRe();
final var oldRn = oldRadiiOfCurvature.getRn();
final var oldRePlusHeight = oldRe + oldHeight;
final var oldOmegaEnN = new Matrix(ROWS, 1);
oldOmegaEnN.setElementAtIndex(0, oldVe / oldRePlusHeight);
oldOmegaEnN.setElementAtIndex(1, -oldVn / (oldRn + oldHeight));
oldOmegaEnN.setElementAtIndex(2, -oldVe * Math.tan(oldLatitude) / oldRePlusHeight);
final var oldCbn = oldC.getMatrix();
final var skewOmega = Utils.skewMatrix(oldOmegaEnN.addAndReturnNew(omegaIen));
skewOmega.multiplyByScalar(0.5);
skewOmega.multiply(oldCbn);
// Calculate the average body-to-ECEF-frame coordinate transformation
// matrix over the update interval using (5.84) and (5.86)
final Matrix aveCbn;
if (magAlpha > ALPHA_THRESHOLD) {
final var magAlpha2 = magAlpha * magAlpha;
final var value1 = (1.0 - Math.cos(magAlpha)) / magAlpha2;
final var value2 = (1.0 - Math.sin(magAlpha) / magAlpha) / magAlpha2;
final var tmp1 = Matrix.identity(ROWS, ROWS);
final var tmp2 = skewAlpha.multiplyByScalarAndReturnNew(value1);
final var tmp3 = skewAlpha.multiplyByScalarAndReturnNew(value2);
tmp3.multiply(skewAlpha);
tmp1.add(tmp2);
tmp1.add(tmp3);
aveCbn = oldCbn.multiplyAndReturnNew(tmp1);
aveCbn.subtract(skewOmega);
} else {
aveCbn = oldCbn.subtractAndReturnNew(skewOmega);
}
// Transform specific force to ECEF-frame resolving axes using (5.86)
final var fIbb = new Matrix(ROWS, 1);
fIbb.setElementAtIndex(0, fx);
fIbb.setElementAtIndex(1, fy);
fIbb.setElementAtIndex(2, fz);
// aveCbn now contains specific force fIbn = aveCbn * fIbb
aveCbn.multiply(fIbb);
// Update velocity
// From (5.54),
final var gravity = NEDGravityEstimator.estimateGravityAndReturnNew(oldLatitude, oldHeight);
final var g = gravity.asMatrix();
aveCbn.add(g);
aveCbn.multiplyByScalar(timeInterval);
final var oldVebn = new Matrix(ROWS, 1);
oldVebn.setElementAtIndex(0, oldVn);
oldVebn.setElementAtIndex(1, oldVe);
oldVebn.setElementAtIndex(2, oldVd);
final var skewOmega2 = Utils.skewMatrix(oldOmegaEnN.addAndReturnNew(
omegaIen.multiplyByScalarAndReturnNew(2.0)));
skewOmega2.multiply(oldVebn);
skewOmega2.multiplyByScalar(timeInterval);
final var vEbn = oldVebn.addAndReturnNew(aveCbn);
vEbn.subtract(skewOmega2);
final var vn = vEbn.getElementAtIndex(0);
final var ve = vEbn.getElementAtIndex(1);
final var vd = vEbn.getElementAtIndex(2);
// Update curvilinear position
// Update height using (5.56)
final var height = oldHeight - 0.5 * timeInterval * (oldVd + vd);
// Update latitude using (5.56)
final var latitude = oldLatitude
+ 0.5 * timeInterval * (oldVn / (oldRn + oldHeight) + vn / (oldRn + height));
// Calculate meridian and transverse radii of curvature
final var radiiOfCurvature = RadiiOfCurvatureEstimator.estimateRadiiOfCurvatureAndReturnNew(latitude);
final var rn = radiiOfCurvature.getRn();
final var re = radiiOfCurvature.getRe();
// Update longitude using (5.56)
final var longitude = oldLongitude
+ 0.5 * timeInterval * (oldVe / ((oldRe + oldHeight) * Math.cos(oldLatitude))
+ ve / ((re + height) * Math.cos(latitude)));
// Attitude update
// From (5.44), determine the angular rate of the NED frame with respect the
// ECEF frame, resolved about NED
final var rePlusHeight = re + height;
final var omegaEnN = new Matrix(ROWS, 1);
omegaEnN.setElementAtIndex(0, ve / rePlusHeight);
omegaEnN.setElementAtIndex(1, -vn / (rn + height));
omegaEnN.setElementAtIndex(2, -ve * Math.tan(latitude) / rePlusHeight);
// Obtain coordinate transformation matrix from the new attitude with respect
// an inertial frame to the old using Rodrigues' formula, (5.73)
final var cNewOld = Matrix.identity(ROWS, ROWS);
if (magAlpha > ALPHA_THRESHOLD) {
final var magAlpha2 = magAlpha * magAlpha;
final var value1 = Math.sin(magAlpha) / magAlpha;
final var value2 = (1.0 - Math.cos(magAlpha)) / magAlpha2;
final var tmp1 = skewAlpha.multiplyByScalarAndReturnNew(value1);
final var tmp2 = skewAlpha.multiplyByScalarAndReturnNew(value2);
tmp2.multiply(skewAlpha);
cNewOld.add(tmp1);
cNewOld.add(tmp2);
} else {
cNewOld.add(skewAlpha);
}
// Update attitude using (5.77)
omegaEnN.multiplyByScalar(0.5);
oldOmegaEnN.multiplyByScalar(0.5);
omegaIen.add(omegaEnN);
omegaIen.add(oldOmegaEnN);
final var skewOmega3 = Utils.skewMatrix(omegaIen);
skewOmega3.multiplyByScalar(timeInterval);
final var cbn = Matrix.identity(ROWS, ROWS);
cbn.subtract(skewOmega3);
cbn.multiply(oldCbn);
cbn.multiply(cNewOld);
result.setPosition(latitude, longitude, height);
result.setVelocityCoordinates(vn, ve, vd);
final var c = new CoordinateTransformation(cbn, FrameType.BODY_FRAME, FrameType.LOCAL_NAVIGATION_FRAME,
accuracyThreshold);
result.setCoordinateTransformation(c);
} catch (final AlgebraException | InvalidRotationMatrixException e) {
throw new InertialNavigatorException(e);
}
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(convertTimeToDouble(timeInterval), oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldPosition.getLatitude(), oldPosition.getLongitude(),
oldPosition.getHeight(), oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(convertTimeToDouble(timeInterval), oldPosition, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC,
oldVelocity.getVn(), oldVelocity.getVe(), oldVelocity.getVd(), fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(convertTimeToDouble(timeInterval), oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldPosition.getLatitude(), oldPosition.getLongitude(), oldPosition.getHeight(), oldC,
oldVelocity.getVn(), oldVelocity.getVe(), oldVelocity.getVd(), fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(convertTimeToDouble(timeInterval), oldPosition, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final BodyKinematics kinematics, final double accuracyThreshold, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd,
kinematics.getFx(), kinematics.getFy(), kinematics.getFz(),
kinematics.getAngularRateX(), kinematics.getAngularRateY(), kinematics.getAngularRateZ(),
accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final BodyKinematics kinematics, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, kinematics,
DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final BodyKinematics kinematics, final double accuracyThreshold, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigateNED(convertTimeToDouble(timeInterval), oldLatitude, oldLongitude, oldHeight, oldC,
oldVn, oldVe, oldVd, kinematics, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final BodyKinematics kinematics, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, kinematics,
DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd, final BodyKinematics kinematics,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldPosition.getLatitude(), oldPosition.getLongitude(), oldPosition.getHeight(),
oldC, oldVn, oldVe, oldVd, kinematics, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd, final BodyKinematics kinematics,
final NEDFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, kinematics, DEFAULT_ACCURACY_THRESHOLD,
result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd, final BodyKinematics kinematics,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(convertTimeToDouble(timeInterval), oldPosition, oldC, oldVn, oldVe, oldVd, kinematics,
accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd, final BodyKinematics kinematics,
final NEDFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, kinematics, DEFAULT_ACCURACY_THRESHOLD,
result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity, final BodyKinematics kinematics,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC,
oldVelocity.getVn(), oldVelocity.getVe(), oldVelocity.getVd(), kinematics, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity, final BodyKinematics kinematics,
final NEDFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, kinematics,
DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity, final BodyKinematics kinematics,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(convertTimeToDouble(timeInterval), oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity,
kinematics, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity, final BodyKinematics kinematics,
final NEDFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, kinematics,
DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final BodyKinematics kinematics, final double accuracyThreshold,
final NEDFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldPosition, oldC, oldVelocity.getVn(), oldVelocity.getVe(), oldVelocity.getVd(),
kinematics, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final BodyKinematics kinematics, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldPosition, oldC, oldVelocity, kinematics, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final BodyKinematics kinematics, final double accuracyThreshold,
final NEDFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigateNED(convertTimeToDouble(timeInterval), oldPosition, oldC, oldVelocity, kinematics, accuracyThreshold,
result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final BodyKinematics kinematics, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldPosition, oldC, oldVelocity, kinematics, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz, final double angularRateX, final double angularRateY,
final double angularRateZ, final double accuracyThreshold, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, convertAngleToDouble(oldLatitude), convertAngleToDouble(oldLongitude),
convertDistanceToDouble(oldHeight), oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude,
final Distance oldHeight, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(convertTimeToDouble(timeInterval), oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC,
oldVelocity.getVn(), oldVelocity.getVe(), oldVelocity.getVd(), fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigateNED(convertTimeToDouble(timeInterval), oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final BodyKinematics kinematics, final double accuracyThreshold, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, convertAngleToDouble(oldLatitude), convertAngleToDouble(oldLongitude),
convertDistanceToDouble(oldHeight), oldC, oldVn, oldVe, oldVd, kinematics, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final BodyKinematics kinematics, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, kinematics,
DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final BodyKinematics kinematics, final double accuracyThreshold, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigateNED(convertTimeToDouble(timeInterval), oldLatitude, oldLongitude, oldHeight, oldC,
oldVn, oldVe, oldVd, kinematics, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final BodyKinematics kinematics, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, kinematics,
DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity, final BodyKinematics kinematics,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC,
oldVelocity.getVn(), oldVelocity.getVe(), oldVelocity.getVd(), kinematics, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity, final BodyKinematics kinematics,
final NEDFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, kinematics,
DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity, final BodyKinematics kinematics,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(convertTimeToDouble(timeInterval), oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity,
kinematics, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity, final BodyKinematics kinematics,
final NEDFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, kinematics,
DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC,
convertSpeedToDouble(oldSpeedN), convertSpeedToDouble(oldSpeedE), convertSpeedToDouble(oldSpeedD),
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(convertTimeToDouble(timeInterval), oldLatitude, oldLongitude, oldHeight, oldC,
oldSpeedN, oldSpeedE, oldSpeedD, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldPosition.getLatitude(), oldPosition.getLongitude(), oldPosition.getHeight(), oldC,
oldSpeedN, oldSpeedE, oldSpeedD, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(convertTimeToDouble(timeInterval), oldPosition, oldC, oldSpeedN, oldSpeedE, oldSpeedD, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final BodyKinematics kinematics, final double accuracyThreshold, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldSpeedN, oldSpeedE, oldSpeedD,
kinematics.getFx(), kinematics.getFy(), kinematics.getFz(),
kinematics.getAngularRateX(), kinematics.getAngularRateY(), kinematics.getAngularRateZ(),
accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final BodyKinematics kinematics, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldSpeedN, oldSpeedE, oldSpeedD,
kinematics, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final BodyKinematics kinematics, final double accuracyThreshold, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigateNED(convertTimeToDouble(timeInterval), oldLatitude, oldLongitude, oldHeight, oldC,
oldSpeedN, oldSpeedE, oldSpeedD, kinematics, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final BodyKinematics kinematics, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldSpeedN, oldSpeedE, oldSpeedD,
kinematics, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD, final BodyKinematics kinematics,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldPosition.getLatitude(), oldPosition.getLongitude(), oldPosition.getHeight(), oldC,
oldSpeedN, oldSpeedE, oldSpeedD, kinematics, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD, final BodyKinematics kinematics,
final NEDFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldPosition, oldC, oldSpeedN, oldSpeedE, oldSpeedD, kinematics,
DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD, final BodyKinematics kinematics,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(convertTimeToDouble(timeInterval), oldPosition, oldC, oldSpeedN, oldSpeedE, oldSpeedD, kinematics,
accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD, final BodyKinematics kinematics,
final NEDFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldPosition, oldC, oldSpeedN, oldSpeedE, oldSpeedD, kinematics,
DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd,
convertAccelerationToDouble(fx), convertAccelerationToDouble(fy), convertAccelerationToDouble(fz),
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(convertTimeToDouble(timeInterval), oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldPosition.getLatitude(), oldPosition.getLongitude(), oldPosition.getHeight(),
oldC, oldVn, oldVe, oldVd, fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold,
result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(convertTimeToDouble(timeInterval), oldPosition, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC,
oldVelocity.getVn(), oldVelocity.getVe(), oldVelocity.getVd(), fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(convertTimeToDouble(timeInterval), oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldPosition, oldC, oldVelocity.getVn(), oldVelocity.getVe(), oldVelocity.getVd(),
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(convertTimeToDouble(timeInterval), oldPosition, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
convertAngularSpeedToDouble(angularRateX), convertAngularSpeedToDouble(angularRateY),
convertAngularSpeedToDouble(angularRateZ), accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(convertTimeToDouble(timeInterval), oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldPosition.getLatitude(), oldPosition.getLongitude(), oldPosition.getHeight(), oldC,
oldVn, oldVe, oldVd, fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(convertTimeToDouble(timeInterval), oldPosition, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC,
oldVelocity.getVn(), oldVelocity.getVe(), oldVelocity.getVd(), fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(convertTimeToDouble(timeInterval), oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldPosition, oldC, oldVelocity.getVn(), oldVelocity.getVe(), oldVelocity.getVd(),
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(convertTimeToDouble(timeInterval), oldPosition, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, convertAngleToDouble(oldLatitude), convertAngleToDouble(oldLongitude),
convertDistanceToDouble(oldHeight), oldC, convertSpeedToDouble(oldSpeedN),
convertSpeedToDouble(oldSpeedE), convertSpeedToDouble(oldSpeedD), fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(convertTimeToDouble(timeInterval), oldLatitude, oldLongitude, oldHeight, oldC,
oldSpeedN, oldSpeedE, oldSpeedD, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, convertAngleToDouble(oldLatitude), convertAngleToDouble(oldLongitude),
convertDistanceToDouble(oldHeight), oldC, convertSpeedToDouble(oldSpeedN),
convertSpeedToDouble(oldSpeedE), convertSpeedToDouble(oldSpeedD),
convertAccelerationToDouble(fx), convertAccelerationToDouble(fy), convertAccelerationToDouble(fz),
convertAngularSpeedToDouble(angularRateX), convertAngularSpeedToDouble(angularRateY),
convertAngularSpeedToDouble(angularRateZ), accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(convertTimeToDouble(timeInterval), oldLatitude, oldLongitude, oldHeight, oldC,
oldSpeedN, oldSpeedE, oldSpeedD, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, convertSpeedToDouble(oldSpeedN),
convertSpeedToDouble(oldSpeedE), convertSpeedToDouble(oldSpeedD),
convertAccelerationToDouble(fx), convertAccelerationToDouble(fy), convertAccelerationToDouble(fz),
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(convertTimeToDouble(timeInterval), oldLatitude, oldLongitude, oldHeight, oldC,
oldSpeedN, oldSpeedE, oldSpeedD, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldPosition.getLatitude(), oldPosition.getLongitude(), oldPosition.getHeight(), oldC,
oldSpeedN, oldSpeedE, oldSpeedD, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(convertTimeToDouble(timeInterval), oldPosition, oldC, oldSpeedN, oldSpeedE, oldSpeedD, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC,
oldVelocity.getVn(), oldVelocity.getVe(), oldVelocity.getVd(), fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(convertTimeToDouble(timeInterval), oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldPosition, oldC, oldVelocity.getVn(), oldVelocity.getVe(), oldVelocity.getVd(),
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(convertTimeToDouble(timeInterval), oldPosition, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, convertAngleToDouble(oldLatitude), convertAngleToDouble(oldLongitude),
convertDistanceToDouble(oldHeight), oldC, oldVn, oldVe, oldVd,
convertAccelerationToDouble(fx), convertAccelerationToDouble(fy), convertAccelerationToDouble(fz),
convertAngularSpeedToDouble(angularRateX), convertAngularSpeedToDouble(angularRateY),
convertAngularSpeedToDouble(angularRateZ), accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(convertTimeToDouble(timeInterval), oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldPosition.getLatitude(), oldPosition.getLongitude(), oldPosition.getHeight(), oldC,
oldVn, oldVe, oldVd, fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(convertTimeToDouble(timeInterval), oldPosition, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd,
convertAccelerationToDouble(fx), convertAccelerationToDouble(fy), convertAccelerationToDouble(fz),
convertAngularSpeedToDouble(angularRateX), convertAngularSpeedToDouble(angularRateY),
convertAngularSpeedToDouble(angularRateZ), accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(convertTimeToDouble(timeInterval), oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final BodyKinematics kinematics, final double accuracyThreshold, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC,
convertSpeedToDouble(oldSpeedN), convertSpeedToDouble(oldSpeedE), convertSpeedToDouble(oldSpeedD),
kinematics, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final BodyKinematics kinematics, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldSpeedN, oldSpeedE, oldSpeedD,
kinematics, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final BodyKinematics kinematics, final double accuracyThreshold, final NEDFrame result)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC,
convertSpeedToDouble(oldSpeedN), convertSpeedToDouble(oldSpeedE), convertSpeedToDouble(oldSpeedD),
kinematics, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static void navigateNED(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final BodyKinematics kinematics, final NEDFrame result) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldSpeedN, oldSpeedE, oldSpeedD,
kinematics, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public static void navigateNED(
final double timeInterval, final NEDFrame oldFrame, final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException {
try {
navigateNED(timeInterval, oldFrame.getLatitude(), oldFrame.getLongitude(), oldFrame.getHeight(),
oldFrame.getCoordinateTransformation(), oldFrame.getVn(), oldFrame.getVe(), oldFrame.getVd(),
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
} catch (final InvalidSourceAndDestinationFrameTypeException ignore) {
// never happens
}
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public static void navigateNED(
final double timeInterval, final NEDFrame oldFrame, final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ, final NEDFrame result)
throws InertialNavigatorException {
navigateNED(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public static void navigateNED(
final Time timeInterval, final NEDFrame oldFrame, final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException {
navigateNED(convertTimeToDouble(timeInterval), oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public static void navigateNED(
final Time timeInterval, final NEDFrame oldFrame, final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ, final NEDFrame result)
throws InertialNavigatorException {
navigateNED(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public static void navigateNED(
final double timeInterval, final NEDFrame oldFrame, final BodyKinematics kinematics,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException {
try {
navigateNED(timeInterval, oldFrame.getLatitude(), oldFrame.getLongitude(), oldFrame.getHeight(),
oldFrame.getCoordinateTransformation(), oldFrame.getVn(), oldFrame.getVe(), oldFrame.getVd(),
kinematics, accuracyThreshold, result);
} catch (final InvalidSourceAndDestinationFrameTypeException ignore) {
// never happens
}
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public static void navigateNED(
final double timeInterval, final NEDFrame oldFrame, final BodyKinematics kinematics, final NEDFrame result)
throws InertialNavigatorException {
navigateNED(timeInterval, oldFrame, kinematics, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public static void navigateNED(
final Time timeInterval, final NEDFrame oldFrame, final BodyKinematics kinematics,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException {
navigateNED(convertTimeToDouble(timeInterval), oldFrame, kinematics, accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public static void navigateNED(
final Time timeInterval, final NEDFrame oldFrame, final BodyKinematics kinematics, final NEDFrame result)
throws InertialNavigatorException {
navigateNED(timeInterval, oldFrame, kinematics, DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public static void navigateNED(
final double timeInterval, final NEDFrame oldFrame,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException {
try {
navigateNED(timeInterval, oldFrame.getLatitude(), oldFrame.getLongitude(), oldFrame.getHeight(),
oldFrame.getCoordinateTransformation(), oldFrame.getVn(), oldFrame.getVe(), oldFrame.getVd(),
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
} catch (final InvalidSourceAndDestinationFrameTypeException ignore) {
// never happens
}
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public static void navigateNED(
final double timeInterval, final NEDFrame oldFrame,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ, final NEDFrame result)
throws InertialNavigatorException {
navigateNED(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public static void navigateNED(
final Time timeInterval, final NEDFrame oldFrame,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException {
navigateNED(convertTimeToDouble(timeInterval), oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public static void navigateNED(
final Time timeInterval, final NEDFrame oldFrame,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final NEDFrame result) throws InertialNavigatorException {
navigateNED(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public static void navigateNED(
final double timeInterval, final NEDFrame oldFrame,
final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException {
try {
navigateNED(timeInterval, oldFrame.getLatitude(), oldFrame.getLongitude(), oldFrame.getHeight(),
oldFrame.getCoordinateTransformation(), oldFrame.getVn(), oldFrame.getVe(), oldFrame.getVd(),
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
} catch (final InvalidSourceAndDestinationFrameTypeException ignore) {
// never happens
}
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public static void navigateNED(
final double timeInterval, final NEDFrame oldFrame, final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final NEDFrame result) throws InertialNavigatorException {
navigateNED(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public static void navigateNED(
final Time timeInterval, final NEDFrame oldFrame, final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException {
navigateNED(convertTimeToDouble(timeInterval), oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public static void navigateNED(
final Time timeInterval, final NEDFrame oldFrame, final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final NEDFrame result) throws InertialNavigatorException {
navigateNED(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public static void navigateNED(
final double timeInterval, final NEDFrame oldFrame,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException {
try {
navigateNED(timeInterval, oldFrame.getLatitude(), oldFrame.getLongitude(), oldFrame.getHeight(),
oldFrame.getCoordinateTransformation(), oldFrame.getVn(), oldFrame.getVe(), oldFrame.getVd(),
convertAccelerationToDouble(fx), convertAccelerationToDouble(fy), convertAccelerationToDouble(fz),
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
} catch (final InvalidSourceAndDestinationFrameTypeException ignore) {
// never happens
}
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public static void navigateNED(
final double timeInterval, final NEDFrame oldFrame,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final NEDFrame result) throws InertialNavigatorException {
navigateNED(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public static void navigateNED(
final Time timeInterval, final NEDFrame oldFrame,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold, final NEDFrame result) throws InertialNavigatorException {
navigateNED(convertTimeToDouble(timeInterval), oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
accuracyThreshold, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param result instance where new estimated NED frame containing new body position,
* velocity and coordinate transformation matrix will be stored.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public static void navigateNED(
final Time timeInterval, final NEDFrame oldFrame,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final NEDFrame result) throws InertialNavigatorException {
navigateNED(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
DEFAULT_ACCURACY_THRESHOLD, result);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final BodyKinematics kinematics, final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, kinematics,
accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final BodyKinematics kinematics) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd,
kinematics, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final BodyKinematics kinematics, final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, kinematics,
accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final BodyKinematics kinematics) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd,
kinematics, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd, final BodyKinematics kinematics,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, kinematics, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd, final BodyKinematics kinematics)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, kinematics,
DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd, final BodyKinematics kinematics,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, kinematics, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd, final BodyKinematics kinematics)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, kinematics,
DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity, final BodyKinematics kinematics,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, kinematics,
accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity, final BodyKinematics kinematics)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity,
kinematics, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity, final BodyKinematics kinematics,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, kinematics,
accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity, final BodyKinematics kinematics)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity,
kinematics, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final BodyKinematics kinematics, final double accuracyThreshold)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldPosition, oldC, oldVelocity, kinematics, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final BodyKinematics kinematics) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldPosition, oldC, oldVelocity, kinematics,
DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final BodyKinematics kinematics, final double accuracyThreshold)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldPosition, oldC, oldVelocity, kinematics, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final BodyKinematics kinematics) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldPosition, oldC, oldVelocity, kinematics,
DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final BodyKinematics kinematics, final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, kinematics,
accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final BodyKinematics kinematics) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd,
kinematics, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final BodyKinematics kinematics, final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, kinematics,
accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final BodyKinematics kinematics) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd,
kinematics, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity, final BodyKinematics kinematics,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, kinematics,
accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity, final BodyKinematics kinematics)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity,
kinematics, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity, final BodyKinematics kinematics,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, kinematics,
accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity, final BodyKinematics kinematics)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity,
kinematics, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldSpeedN, oldSpeedE, oldSpeedD,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldSpeedN, oldSpeedE, oldSpeedD,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldPosition, oldC, oldSpeedN, oldSpeedE, oldSpeedD, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldPosition, oldC, oldSpeedN, oldSpeedE, oldSpeedD, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final BodyKinematics kinematics, final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldSpeedN, oldSpeedE, oldSpeedD,
kinematics, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final BodyKinematics kinematics) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC,
oldSpeedN, oldSpeedE, oldSpeedD, kinematics, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final BodyKinematics kinematics, final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldSpeedN, oldSpeedE, oldSpeedD,
kinematics, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final BodyKinematics kinematics) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC,
oldSpeedN, oldSpeedE, oldSpeedD, kinematics, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD, final BodyKinematics kinematics,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldPosition, oldC, oldSpeedN, oldSpeedE, oldSpeedD, kinematics, accuracyThreshold,
result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD, final BodyKinematics kinematics)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldPosition, oldC, oldSpeedN, oldSpeedE, oldSpeedD, kinematics,
DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD, final BodyKinematics kinematics,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldPosition, oldC, oldSpeedN, oldSpeedE, oldSpeedD, kinematics, accuracyThreshold,
result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD, final BodyKinematics kinematics)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldPosition, oldC, oldSpeedN, oldSpeedE, oldSpeedD, kinematics,
DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd,
final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldSpeedN, oldSpeedE, oldSpeedD,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldSpeedN, oldSpeedE, oldSpeedD,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldSpeedN, oldSpeedE, oldSpeedD,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldSpeedN, oldSpeedE, oldSpeedD,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldSpeedN, oldSpeedE, oldSpeedD,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldSpeedN, oldSpeedE, oldSpeedD,
fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldPosition, oldC, oldSpeedN, oldSpeedE, oldSpeedD, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldPosition, oldC, oldSpeedN, oldSpeedE, oldSpeedD, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final NEDVelocity oldVelocity,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVelocity previous velocity of body frame with respect ECEF frame resolved
* along north, east and down axes.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final NEDVelocity oldVelocity, final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldPosition previous curvilinear position expressed in terms of latitude,
* longitude and height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final NEDPosition oldPosition, final CoordinateTransformation oldC,
final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldPosition, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude expressed in radians (rad).
* @param oldLongitude previous longitude expressed in radians (rad).
* @param oldHeight previous height expressed in meters (m).
* @param oldC previous body-to-NED coordinate transformation.
* @param oldVn previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVe previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param oldVd previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes and expressed in meters per second (m/s).
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final double oldLatitude, final double oldLongitude, final double oldHeight,
final CoordinateTransformation oldC, final double oldVn, final double oldVe, final double oldVd,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldVn, oldVe, oldVd, fx, fy, fz,
angularRateX, angularRateY, angularRateZ, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final BodyKinematics kinematics, final double accuracyThreshold) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldSpeedN, oldSpeedE, oldSpeedD,
kinematics, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final BodyKinematics kinematics) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC,
oldSpeedN, oldSpeedE, oldSpeedD, kinematics, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE,
final Speed oldSpeedD, final BodyKinematics kinematics, final double accuracyThreshold)
throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC, oldSpeedN, oldSpeedE, oldSpeedD,
kinematics, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldLatitude previous latitude angle.
* @param oldLongitude previous longitude angle.
* @param oldHeight previous height.
* @param oldC previous body-to-NED coordinate transformation.
* @param oldSpeedN previous velocity north-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedE previous velocity east-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param oldSpeedD previous velocity down-coordinate of body frame with respect ECEF frame,
* resolved along NED-frame axes.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
* @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
* body-to-NED-frame coordinate transformation matrix are
* invalid.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final Angle oldLatitude, final Angle oldLongitude, final Distance oldHeight,
final CoordinateTransformation oldC, final Speed oldSpeedN, final Speed oldSpeedE, final Speed oldSpeedD,
final BodyKinematics kinematics) throws InertialNavigatorException,
InvalidSourceAndDestinationFrameTypeException {
return navigateNEDAndReturnNew(timeInterval, oldLatitude, oldLongitude, oldHeight, oldC,
oldSpeedN, oldSpeedE, oldSpeedD, kinematics, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final NEDFrame oldFrame, final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold,
result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final NEDFrame oldFrame, final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ)
throws InertialNavigatorException {
return navigateNEDAndReturnNew(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final NEDFrame oldFrame, final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold,
result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final NEDFrame oldFrame, final double fx, final double fy, final double fz,
final double angularRateX, final double angularRateY, final double angularRateZ)
throws InertialNavigatorException {
return navigateNEDAndReturnNew(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final NEDFrame oldFrame, final BodyKinematics kinematics,
final double accuracyThreshold) throws InertialNavigatorException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldFrame, kinematics, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final NEDFrame oldFrame, final BodyKinematics kinematics)
throws InertialNavigatorException {
return navigateNEDAndReturnNew(timeInterval, oldFrame, kinematics, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final NEDFrame oldFrame, final BodyKinematics kinematics,
final double accuracyThreshold) throws InertialNavigatorException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldFrame, kinematics, accuracyThreshold, result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param kinematics body kinematics containing specific forces and angular rates applied to
* the body.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final NEDFrame oldFrame, final BodyKinematics kinematics)
throws InertialNavigatorException {
return navigateNEDAndReturnNew(timeInterval, oldFrame, kinematics, DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final NEDFrame oldFrame,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold,
result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final NEDFrame oldFrame,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ)
throws InertialNavigatorException {
return navigateNEDAndReturnNew(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final NEDFrame oldFrame,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold,
result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in radians per second (rad/s).
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final NEDFrame oldFrame,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final double angularRateX, final double angularRateY, final double angularRateZ)
throws InertialNavigatorException {
return navigateNEDAndReturnNew(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final NEDFrame oldFrame,
final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold,
result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final NEDFrame oldFrame, final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
throws InertialNavigatorException {
return navigateNEDAndReturnNew(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final NEDFrame oldFrame, final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold,
result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs.
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final NEDFrame oldFrame, final double fx, final double fy, final double fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
throws InertialNavigatorException {
return navigateNEDAndReturnNew(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final NEDFrame oldFrame,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold,
result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public static NEDFrame navigateNEDAndReturnNew(
final double timeInterval, final NEDFrame oldFrame,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
throws InertialNavigatorException {
return navigateNEDAndReturnNew(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param accuracyThreshold threshold to determine whether a matrix is a valid rotation or not.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final NEDFrame oldFrame,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
final double accuracyThreshold) throws InertialNavigatorException {
final var result = new NEDFrame();
navigateNED(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ, accuracyThreshold,
result);
return result;
}
/**
* Runs precision local-navigation-frame inertial navigation equations.
* NOTE: only the attitude update and specific force frame transformation
* phases are precise.
*
* @param timeInterval time interval between epochs expressed in seconds (s).
* @param oldFrame previous NED frame containing body position, velocity and
* coordinate transformation matrix.
* @param fx specific force x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fy specific force y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param fz specific force z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval and
* expressed in meters per squared second (m/s^2).
* @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
* resolved along body-frame axes, averaged over time interval.
* @return estimated NED frame containing new body position, velocity and coordinate
* transformation matrix.
* @throws InertialNavigatorException if navigation fails due to numerical instabilities.
*/
public static NEDFrame navigateNEDAndReturnNew(
final Time timeInterval, final NEDFrame oldFrame,
final Acceleration fx, final Acceleration fy, final Acceleration fz,
final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
throws InertialNavigatorException {
return navigateNEDAndReturnNew(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
DEFAULT_ACCURACY_THRESHOLD);
}
/**
* Checks whether provided coordinate transformation matrix is valid or not.
* Only body to NED transformation matrices are considered to be valid.
*
* @param c coordinate transformation matrix to be checked.
* @return true if provided value is valid, false otherwise.
*/
public static boolean isValidBodyToNEDCoordinateTransformationMatrix(final CoordinateTransformation c) {
return NEDFrame.isValidCoordinateTransformation(c);
}
/**
* Converts provided time instance into its corresponding value expressed in
* seconds.
*
* @param time time instance to be converted.
* @return converted value expressed in seconds.
*/
private static double convertTimeToDouble(final Time time) {
return TimeConverter.convert(time.getValue().doubleValue(), time.getUnit(), TimeUnit.SECOND);
}
/**
* Converts provided angle instance into its corresponding value expressed in
* radians.
*
* @param angle angle instance to be converted.
* @return converted value expressed in meters.
*/
private static double convertAngleToDouble(final Angle angle) {
return AngleConverter.convert(angle.getValue().doubleValue(), angle.getUnit(), AngleUnit.RADIANS);
}
/**
* Converts provided distance instance into its corresponding value expressed in
* meters.
*
* @param distance distance instance to be converted.
* @return converted value expressed in meters.
*/
private static double convertDistanceToDouble(final Distance distance) {
return DistanceConverter.convert(distance.getValue().doubleValue(), distance.getUnit(), DistanceUnit.METER);
}
/**
* Converts provided speed instance into its corresponding value expressed in
* meters per second.
*
* @param speed speed instance to be converted.
* @return converted value expressed in meters per second.
*/
private static double convertSpeedToDouble(final Speed speed) {
return SpeedConverter.convert(speed.getValue().doubleValue(), speed.getUnit(), SpeedUnit.METERS_PER_SECOND);
}
/**
* Converts provided acceleration instance into its corresponding value expressed
* in meters per squared second.
*
* @param acceleration acceleration instance to be converted.
* @return converted value expressed in meters per squared second.
*/
private static double convertAccelerationToDouble(final Acceleration acceleration) {
return AccelerationConverter.convert(acceleration.getValue().doubleValue(), acceleration.getUnit(),
AccelerationUnit.METERS_PER_SQUARED_SECOND);
}
/**
* Converts provided angular speed into its corresponding value expressed in
* radians per second.
*
* @param angularSpeed angular speed instance to be converted.
* @return converted value expressed in radians per second.
*/
private static double convertAngularSpeedToDouble(final AngularSpeed angularSpeed) {
return AngularSpeedConverter.convert(angularSpeed.getValue().doubleValue(), angularSpeed.getUnit(),
AngularSpeedUnit.RADIANS_PER_SECOND);
}
}