Class StandardPosVelAtt

Inheritance Relationships

Base Type

Class Documentation

class StandardPosVelAtt : public navtk::inertial::InertialPosVelAtt

Implementation of InertialPosVelAtt designed for use in navigation that does not approach the poles, where mathematical issues with NED frame representations arise.

Public Functions

StandardPosVelAtt(const aspn_xtensor::TypeTimestamp &time = aspn_xtensor::TypeTimestamp((int64_t)0), Vector3 llh = zeros(3), Vector3 vned = zeros(3), Matrix3 C_s_to_ned = eye(3), AspnMessageType message_type = ASPN_EXTENDED_BEGIN)

Constructor.

Parameters
  • time – Time of validity.

  • llh – Latitude, longitude and altitude (rad, rad, m HAE).

  • vned – North, East and Down velocity, \(\frac{m}{s}\).

  • C_s_to_ned – Sensor to NED frame DCM.

  • message_type – the ASPN message type assigned to StandardPosVelAtt. This will likely be specific to the running program. Defaults to ASPN_EXTENDED_BEGIN since StandardPosVelAtt 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 StandardPosVelAtt 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.

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

Constructor.

Parameters
  • time – Time of validity.

  • tup – Tuple of llh, vned and C_s_to_ned (see other constructor).

  • message_type – the ASPN message type assigned to StandardPosVelAtt. This will likely be specific to the running program. Defaults to ASPN_EXTENDED_BEGIN since StandardPosVelAtt 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 StandardPosVelAtt 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. The DCM is constructed with a wander angle of 0, as this class does not have knowledge of the wander angle. If wander angle is known, use the overloaded version.

virtual Vector3 get_vn() const override

Velocity in n frame.

As this class has no internal knowledge of the wander angle, this is effectively an ENU frame representation.

Returns

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

virtual Matrix3 get_C_s_to_l() const override

Attitude as a sensor to l frame DCM.

As this class has no internal knowledge of the wander angle, this is effectively the sensor to NED frame DCM.

Returns

Sensor to l frame DCM.

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

Position in wander frame format (DCM and altitude), calculated using externally supplied wander angle.

Parameters

wander – Wander angle, rad.

Returns

Pair containing the n to e frame DCM, and the altitude in meters HAE.

Vector3 get_vn(double wander) const

Velocity in n frame, calculated using externally supplied wander angle.

Parameters

wander – Wander angle, rad.

Returns

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

Matrix3 get_C_s_to_l(double wander) const

Attitude as a sensor to l frame DCM, calculated using externally supplied wander angle.

Parameters

wander – Wander angle, rad.

Returns

Sensor to l frame DCM.

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.