ov_type::IMU class

Derived Type class that implements an IMU state.

Contains a PoseJPL, Vec velocity, Vec gyro bias, and Vec accel bias. This should be similar to that of the standard MSCKF state besides the ordering. The pose is first, followed by velocity, etc.

Base classes

class Type
Base class for estimated variables.

Public functions

void set_local_id(int new_id) override
Sets id used to track location of variable in the filter covariance.
void update(const Eigen::VectorXd& dx) override
Performs update operation using JPLQuat update for orientation, then vector updates for position, velocity, gyro bias, and accel bias (in that order).
void set_value(const Eigen::MatrixXd& new_value) override
Sets the value of the estimate.
void set_fej(const Eigen::MatrixXd& new_value) override
Sets the value of the first estimate.
auto clone() -> std::shared_ptr<Type> override
Create a clone of this variable.
auto check_if_subvariable(const std::shared_ptr<Type> check) -> std::shared_ptr<Type> override
Determine if pass variable is a sub-variable.
auto Rot() const -> Eigen::Matrix<double, 3, 3>
Rotation access.
auto Rot_fej() const -> Eigen::Matrix<double, 3, 3>
FEJ Rotation access.
auto quat() const -> Eigen::Matrix<double, 4, 1>
Rotation access quaternion.
auto quat_fej() const -> Eigen::Matrix<double, 4, 1>
FEJ Rotation access quaternion.
auto pos() const -> Eigen::Matrix<double, 3, 1>
Position access.
auto pos_fej() const -> Eigen::Matrix<double, 3, 1>
FEJ position access.
auto vel() const -> Eigen::Matrix<double, 3, 1>
Velocity access.
auto bias_g() const -> Eigen::Matrix<double, 3, 1>
Gyro bias access.
auto bias_g_fej() const -> Eigen::Matrix<double, 3, 1>
FEJ gyro bias access.
auto bias_a() const -> Eigen::Matrix<double, 3, 1>
Accel bias access.
auto pose() -> std::shared_ptr<PoseJPL>
Pose type access.
auto q() -> std::shared_ptr<JPLQuat>
Quaternion type access.
auto p() -> std::shared_ptr<Vec>
Position type access.
auto v() -> std::shared_ptr<Vec>
Velocity type access.
auto bg() -> std::shared_ptr<Vec>
Gyroscope bias access.
auto ba() -> std::shared_ptr<Vec>
Acceleration bias access.

Protected functions

void set_value_internal(const Eigen::MatrixXd& new_value)
Sets the value of the estimate.
void set_fej_internal(const Eigen::MatrixXd& new_value)
Sets the value of the first estimate.

Protected variables

std::shared_ptr<PoseJPL> _pose
Pose subvariable.
std::shared_ptr<Vec> _v
Velocity subvariable.
std::shared_ptr<Vec> _bg
Gyroscope bias subvariable.
std::shared_ptr<Vec> _ba
Acceleration bias subvariable.

Function documentation

void ov_type::IMU::set_local_id(int new_id) override

Sets id used to track location of variable in the filter covariance.

Parameters
new_id entry in filter covariance corresponding to this variable

Note that we update the sub-variables also.

void ov_type::IMU::update(const Eigen::VectorXd& dx) override

Performs update operation using JPLQuat update for orientation, then vector updates for position, velocity, gyro bias, and accel bias (in that order).

Parameters
dx 15 DOF vector encoding update using the following order (q, p, v, bg, ba)

void ov_type::IMU::set_value(const Eigen::MatrixXd& new_value) override

Sets the value of the estimate.

Parameters
new_value New value we should set

void ov_type::IMU::set_fej(const Eigen::MatrixXd& new_value) override

Sets the value of the first estimate.

Parameters
new_value New value we should set

std::shared_ptr<Type> ov_type::IMU::check_if_subvariable(const std::shared_ptr<Type> check) override

Determine if pass variable is a sub-variable.

Parameters
check Type pointer to compare our subvariables to

If the passed variable is a sub-variable or the current variable this will return it. Otherwise it will return a nullptr, meaning that it was unable to be found.

void ov_type::IMU::set_value_internal(const Eigen::MatrixXd& new_value) protected

Sets the value of the estimate.

Parameters
new_value New value we should set

void ov_type::IMU::set_fej_internal(const Eigen::MatrixXd& new_value) protected

Sets the value of the first estimate.

Parameters
new_value New value we should set