142 gravitation =
trafo::e_Quat_n(lla_positionOld(0), lla_positionOld(1)) * gravitation;
149 + pvaOld.
attitude * velocityIncrement
153 + pvaOld.
attitude * positionIncrement
Transformation collection.
nlohmann::json json
json namespace
Different Gravity Models.
The class is responsible for all time-related tasks.
Defines how to save certain datatypes to json.
Utility class for logging to console and file.
const Eigen::Quaterniond & b_quat_p() const
Quaternion from IMU platform frame to body frame.
Inertial Measurement Integrator.
friend bool InertialPreIntegratorGui(const char *label, InertialPreIntegrator &integrator, float width)
Shows a GUI for advanced configuration of the InertialPreIntegrator.
const Eigen::Matrix9d & getCovMatrix() const
Get the Covariance Matrix of the preintegrated measurements (3x attitude, 3x velocity,...
PVAState< T > calcIntegratedState(const PVAState< T > &pvaOld, const ImuState< T > &imuNew, const ImuPos &imuPos, const std::string &nameId)
Calculates the state using the preintegrated relative motion increments.
std::optional< Eigen::Matrix6d > _imuNoiseScale_W
Noise scale matrix of the IMU.
Eigen::Matrix3d _pAtt_pOmega
Partial derivative of the attitude increment after the angular rate bias.
double _timeIncrement
Time accumulated for each increment.
void addInertialMeasurement(const Measurement &meas, const ImuPos &imuPos, const std::string &nameId)
Adds a inertial measurement to the relative motion increments.
bool _lockIntegrationFrame
Wether to lock the integration frame.
Eigen::Matrix3d _pVel_pOmega
Partial derivative of the velocity increment after the angular rate bias.
friend void to_json(json &j, const InertialPreIntegrator &data)
Write info to a json object.
void reset()
Clears all internal data.
Eigen::Matrix3d _pPos_pOmega
Partial derivative of the position increment after the angular rate bias.
Eigen::Matrix9d _covMatrix
Incremental covariance matrix (3x attitude, 3x velocity, 3x position)
friend void from_json(const json &j, InertialPreIntegrator &data)
Read info from a json object.
InertialPreIntegrator()=default
Default Constructor.
IntegrationFrame _integrationFrame
Frame to integrate the observations in.
GenericMeasurement< double > Measurement
Inertial measurements.
Eigen::Vector3d _positionIncrement
Relative motion increment for the position.
IntegrationFrame
Available Integration Frames.
@ NED
Local North-East-Down frame.
@ ECEF
Earth-Centered Earth-Fixed frame.
Eigen::Quaterniond _attitudeIncrement
Relative motion increment for the attitude bi_q_bj.
friend const char * to_string(InertialPreIntegrator::IntegrationFrame frame)
Converts the enum to a string.
Eigen::Matrix3d _pVel_pAccel
Partial derivative of the velocity increment after the acceleration bias.
void setImuNoiseScaleMatrix(const Eigen::Matrix6d &W)
Set the IMU Noise Scale Matrix.
ImuState< double > _imuState
IMU state used to calculate the increments.
IntegrationFrame getIntegrationFrame() const
Returns the selected integration frame.
Eigen::Matrix3d _pPos_pAccel
Partial derivative of the position increment after the acceleration bias.
GravitationModel _gravitationModel
Gravity Model to use.
Eigen::Vector3d _velocityIncrement
Relative motion increment for the velocity.
Matrix< double, 6, 6 > Matrix6d
Double 6x6 Eigen::Matrix.
Matrix< double, 9, 9 > Matrix9d
Double 9x9 Eigen::Matrix.
Eigen::Quaternion< typename Derived::Scalar > expMapQuat(const Eigen::MatrixBase< Derived > &v)
Calculates the quaternionic exponential map of the given vector.
Eigen::Vector3< typename Derived::Scalar > ecef2lla_WGS84(const Eigen::MatrixBase< Derived > &e_position)
Converts Earth-centered-Earth-fixed coordinates into latitude, longitude and altitude using WGS84.
Eigen::Quaternion< Scalar > e_Quat_n(const Scalar &latitude, const Scalar &longitude)
Quaternion for rotations from navigation to Earth-fixed frame.
Eigen::Vector3< typename Derived::Scalar > n_calcGravitation(const Eigen::MatrixBase< Derived > &lla_position, GravitationModel gravitationModel=GravitationModel::EGM96)
Calculates the gravitation (acceleration due to mass attraction of the Earth)
bool InertialPreIntegratorGui(const char *label, InertialPreIntegrator &integrator, float width)
Shows a GUI for advanced configuration of the InertialPreIntegrator.
void to_json(json &j, const Node &node)
Converts the provided node into a json object.
const char * to_string(gui::widgets::PositionWithFrame::ReferenceFrame refFrame)
Converts the enum to a string.
GravitationModel
Available Gravitation Models.
@ EGM96
Earth Gravitational Model 1996.
void from_json(const json &j, Node &node)
Converts the provided json object into a node object.
Inertial Measurement for a generic type.
Eigen::Vector3d p_angularRate
Angular rate in platform frame coordinates in [rad/s].
double dt
Time since previous observation in [s].
Eigen::Vector3d p_acceleration
Acceleration in platform frame coordinates in [m/s^2].
Eigen::Vector3< T > p_biasAngularRate
Angular rate bias in platform frame coordinates in [rad/s].
Eigen::Vector3< T > p_biasAcceleration
Acceleration bias in platform frame coordinates in [m/s^2].
constexpr bool operator==(const ImuState< T > &rhs) const
Equal comparison.
Position, velocity and attitude state.
Eigen::Vector3< T > velocity
IMU velocity (e_vel / n_vel)
Eigen::Quaternion< T > attitude
IMU attitude (e_Quat_b / n_Quat_b)
Eigen::Vector3< T > position
IMU position (e_pos / lla_pos)