Kinematics Estimators
| This documentation was generated with the assistance of AI. Please report any inaccuracies. |
Classes: NEDKinematicsEstimator, ECEFKinematicsEstimator, ECIKinematicsEstimator (see the
Class Reference table at the end of this page for Javadoc and source links).
What these classes solve
A navigator integrates measured specific force and angular rate forward in
time to obtain position, velocity, and attitude. The kinematics estimators solve the inverse problem:
given two consecutive (attitude, velocity, position) navigation states, they compute the specific force
and angular rate that an ideal IMU would have measured between them. This is exactly what the referenced
MATLAB companion scripts (Kinematics_NED.m, Kinematics_ECEF.m, Kinematics_ECI.m) do, and it is the
standard way to generate noise-free, synthetic IMU measurements for testing a navigator or calibrator
against a known trajectory.
Common structure
All three estimators follow the same four-step pattern described in Groves §5.1-5.3 (see [book-groves]), run in reverse:
-
Angular rate: recover the attitude-increment rotation vector from the old and new body-to-reference coordinate transformation matrices (inverting the exponential attitude-update equation), then divide by the time interval.
-
Specific force: difference the old and new velocities, subtract gravity/gravitation, and add back the Coriolis/transport-rate terms that the frame in question rotates with.
-
Frame transformation: transform the specific force from the reference-frame resolving axes back to body-frame axes using the (precise, averaged) coordinate transformation matrix.
-
Store the resulting
BodyKinematics(specific force + angular rate), or a zero result if the time interval is zero.
ECIKinematicsEstimator
The ECI frame is inertial, so there is no Earth-rotation or transport-rate term. Specific force is simply the velocity change minus gravitation (equation family 5.11-5.14):
using ECIGravitationEstimator for , then transformed to body axes
via the averaged attitude matrix (equations 5.77, 5.81, 5.84 style
precise-form averaging).
ECEFKinematicsEstimator
The ECEF frame rotates with the Earth at rate
where ECEFGravityEstimator and
The attitude increment is recovered from
NEDKinematicsEstimator
The local-navigation (NED) frame adds a further transport-rate term RadiiOfCurvatureEstimator):
Specific force resolved about NED axes (equation 5.44/5.46 style):
using NEDGravityEstimator for
double timeInterval = 1.0; // seconds between the two epochs
// body-to-NED attitude at the start and end of the interval
CoordinateTransformation oldC = new CoordinateTransformation(
0.0, 0.0, 0.0, FrameType.LOCAL_NAVIGATION_FRAME, FrameType.BODY_FRAME);
CoordinateTransformation c = new CoordinateTransformation(
0.01, 0.0, 0.02, FrameType.LOCAL_NAVIGATION_FRAME, FrameType.BODY_FRAME);
double latitude = Math.toRadians(41.3851);
double oldLatitude = latitude;
double height = 0.0;
double oldHeight = 0.0;
// NED velocity at the start and end of the interval (m/s)
double oldVn = 0.0, oldVe = 0.0, oldVd = 0.0;
double vn = 1.0, ve = 0.0, vd = 0.0;
BodyKinematics kinematics = new BodyKinematics();
NEDKinematicsEstimator.estimateKinematics(timeInterval, c, oldC, vn, ve, vd, oldVn, oldVe, oldVd,
latitude, height, oldLatitude, oldHeight, kinematics);
double fx = kinematics.getFx(); // synthetic specific force (m/s^2)
double angularRateZ = kinematics.getAngularRateZ(); // synthetic angular rate (rad/s)
ECEFKinematicsEstimator.estimateKinematics(…) and ECIKinematicsEstimator.estimateKinematics(…)
follow the same pattern, replacing latitude/height with Cartesian
Where to go next
-
Gravity and Gravitation Estimators — gravity/gravitation models used inside these estimators.
-
Navigators — the forward (integrating) counterpart of these classes.
-
reference.adoc#bibliography — bibliography.