Class WanderPosVelAtt

Inheritance Relationships

Base Type

Class Documentation

class WanderPosVelAtt : public navtk::inertial::InertialPosVelAtt

Implementation of InertialPosVelAtt designed for use with wander frame navigation, valid worldwide.

Methods of this class that convert to/from non-wander compatible representations may not be valid under all scenarios; see method documentation.

Public Functions

WanderPosVelAtt(const aspn_xtensor::TypeTimestamp &time = aspn_xtensor::TypeTimestamp((int64_t)0), Matrix3 C_n_to_e = eye(3), double alt = 0.0, Vector3 vn = zeros(3), Matrix3 C_s_to_l = eye(3), AspnMessageType message_type = ASPN_EXTENDED_BEGIN)

Constructor.

Parameters
  • time – Time of validity for this instance

  • C_n_to_e – The n frame to e frame DCM, which is derived from latitude, longitude and wander angle as described in Savage 4.4.2.1-2.

  • alt – Altitude, meters HAE.

  • vn – Velocity in the n frame, \(\frac{m}{s}\).

  • C_s_to_l – The sensor to l frame DCM.

  • message_type – the ASPN message type assigned to WanderPosVelAtt. This will likely be specific to the running program. Defaults to ASPN_EXTENDED_BEGIN since WanderPosVelAtt extends the set of defined ASPN messages. Note, if this default value is not overridden by a program using NavToolkit, then the type assigned to WanderPosVelAtt may conflict with another type used by that program. Users should be careful to ensure that all ASPN message types used by their program have unique types if they are using AspnBase::get_message_type to identify a message type.

WanderPosVelAtt(const aspn_xtensor::TypeTimestamp &time, const std::tuple<Matrix3, double, Vector3, Matrix3> &tup, AspnMessageType message_type = ASPN_EXTENDED_BEGIN)

Constructor.

Parameters
  • time – Time of validity for this instance

  • tup – Tuple containing C_n_to_e, altitude, v_n and C_s_to_l; see other constructor.

  • message_type – the ASPN message type assigned to WanderPosVelAtt. This will likely be specific to the running program. Defaults to ASPN_EXTENDED_BEGIN since WanderPosVelAtt extends the set of defined ASPN messages. Note, if this default value is not overridden by a program using NavToolkit, then the type assigned to WanderPosVelAtt may conflict with another type used by that program. Users should be careful to ensure that all ASPN message types used by their program have unique types if they are using AspnBase::get_message_type to identify a message type.

virtual std::shared_ptr<InertialPosVelAtt> clone() const override

Return a deep copy of the instance.

Returns

Clone.

virtual Vector3 get_llh() const override

Position as latitude, longitude and altitude.

The return value of this function may not be valid near the poles.

Returns

Vector3 composed of latitude in radians, longitude in radians, and altitude in meters HAE.

virtual Vector3 get_vned() const override

Velocity in the NED frame.

The return value of this function may not be valid near the poles.

Returns

Vector3 composed of velocity in the North, East and Down frame, \(\frac{m}{s}\).

virtual Matrix3 get_C_s_to_ned() const override

Attitude as a sensor-to-NED frame or platform-to-NED frame DCM.

(Depends on whether the mechanization is in original inertial sensor frame or the inertial measurements are first rotated to a platform frame prior to mechanization). The return value of this function may not be valid near the poles.

Returns

DCM that rotates from the frame whose PVA is described by this instance (either sensor or platform frame) to the North, East and Down frame.

virtual std::pair<Matrix3, double> get_C_n_to_e_h() const override

Position in wander frame format (DCM and altitude).

Returns

Pair containing the n to e frame DCM and height above ellipsoid in meters.

virtual Vector3 get_vn() const override

Velocity in wander n frame.

Returns

Velocity in n frame, \(\frac{m}{s}\).

virtual Matrix3 get_C_s_to_l() const override

Attitude as the sensor to l frame DCM.

Returns

DCM that rotates from the sensor frame to the l frame,.

inline virtual bool is_wander_capable() const override

Determines if this instance is ‘wander-capable’, meaning that it has a separate internal representation of a wander angle.

Generally, replacing a wander-capable value with one that is not will result in a loss of information.

Returns

If this instance is able to store a valid wander angle value.