Go to the documentation of this file.
14 #include <Eigen/Dense>
22 -> Eigen::Matrix<TT, 3, 3> {
23 Eigen::Matrix<TT, 3, 3> lower_triagonal = Eigen::Matrix<TT, 3, 3>::Identity();
24 lower_triagonal(1, 0) = non_orthogonality[0];
25 lower_triagonal(2, 0) = non_orthogonality[1];
26 lower_triagonal(2, 1) = non_orthogonality[2];
27 return lower_triagonal;
34 Eigen::Matrix<TT, 3, 1>
const&
scale = Eigen::Matrix<TT, 3, 1>::Ones(),
36 Eigen::Matrix<TT, 3, 1>::Zero(),
37 Eigen::Matrix<TT, 3, 1>
const&
gyro_bias =
38 Eigen::Matrix<TT, 3, 1>::Zero())
52 Eigen::Matrix<TT, 3, 1>
const& imu_angular_rate_imu)
const
53 -> Eigen::Matrix<TT, 3, 1> {
54 return Eigen::DiagonalMatrix<TT, 3>(
scale) *
56 imu_angular_rate_imu +
60 [[nodiscard]]
auto params() const ->
Eigen::Matrix<TT, 9, 1> {
61 Eigen::Matrix<TT, 9, 1>
params;
77 Eigen::Matrix<TT, 3, 1>
const&
scale = Eigen::Matrix<TT, 3, 1>::Ones(),
79 Eigen::Matrix<TT, 3, 1>::Zero(),
81 Eigen::Matrix<TT, 3, 1>::Zero())
95 Eigen::Matrix<TT, 3, 1>
const& imu_acceleration_imu)
const
96 -> Eigen::Matrix<TT, 3, 1> {
97 return Eigen::DiagonalMatrix<TT, 3>(
scale) *
99 imu_acceleration_imu +
104 Eigen::Matrix<TT, 9, 1>
params;
116 SOPHUS_ENUM(GyroModelType, (scaling_non_orthogonality));
118 SOPHUS_ENUM(AcceleroModelType, (scaling_non_orthogonality));
122 std::variant<ScalingNonOrthogonalityAcceleroModel<double>>;
124 auto getModelFromType(GyroModelType model_type, Eigen::VectorXd
const& params)
128 AcceleroModelType model_type, Eigen::VectorXd
const& params)
132 std::variant_size_v<GyroModelVariant> == getCount(GyroModelType()),
133 "When the variant GyroModelVariant is updated, one needs to "
134 "update the enum GyroModelType as well, and vice versa.");
137 std::variant_size_v<AcceleroModelVariant> == getCount(AcceleroModelType()),
138 "When the variant AcceleroModelVariant is updated, one needs to "
139 "update the enum AcceleroModelType as well, and vice versa.");
146 : gyro_model_(gyro_model), accelero_model_(accelero_model) {}
163 return accelero_model_;
Definition: imu_model.h:75
auto gyroParams() const -> Eigen::VectorXd
Definition: imu_model.cpp:69
auto acceleroMeasurement(Eigen::Vector3d const &world_acceleration_imu) -> Eigen::Vector3d
Definition: imu_model.cpp:45
auto acceleroParams() const -> Eigen::VectorXd
Definition: imu_model.cpp:73
Image MutImage, owning images types.
Definition: num_diff.h:20
auto gyroModel() -> GyroModelVariant &
Definition: imu_model.h:154
Eigen::Matrix< TT, 3, 1 > accel_bias
Definition: imu_model.h:113
auto gyroMeasurement(Eigen::Matrix< TT, 3, 1 > const &imu_angular_rate_imu) const -> Eigen::Matrix< TT, 3, 1 >
Definition: imu_model.h:51
auto acceleroMeasurement(Eigen::Matrix< TT, 3, 1 > const &imu_acceleration_imu) const -> Eigen::Matrix< TT, 3, 1 >
Definition: imu_model.h:94
auto params() const -> Eigen::Matrix< TT, 9, 1 >
Definition: imu_model.h:60
Eigen::Matrix< TT, 3, 1 > scale
Definition: imu_model.h:111
Eigen::Matrix< TT, 3, 1 > non_orthogonality
Definition: imu_model.h:112
auto gyroMeasurement(Eigen::Vector3d const &world_velocity_imu) -> Eigen::Vector3d
Definition: imu_model.cpp:36
static auto fromParams(Eigen::Matrix< TT, 9, 1 > const ¶ms) -> ScalingNonOrthogonalityAcceleroModel< TT >
Definition: imu_model.h:86
std::variant< ScalingNonOrthogonalityGyroModel< double > > GyroModelVariant
Definition: imu_model.h:120
Definition: imu_model.h:32
Eigen::Matrix< TT, 3, 1 > non_orthogonality
Definition: imu_model.h:69
auto acceleroModel() -> AcceleroModelVariant &
Definition: imu_model.h:160
auto acceleroModelType() const -> AcceleroModelType
Definition: imu_model.cpp:78
ImuModel(GyroModelVariant const &gyro_model, AcceleroModelVariant const &accelero_model)
Definition: imu_model.h:143
auto acceleroModel() const -> AcceleroModelVariant const &
Definition: imu_model.h:162
SOPHUS_ENUM(NumberType,(fixed_point, floating_point))
auto getModelFromType(GyroModelType model_type, Eigen::VectorXd const ¶ms) -> GyroModelVariant
Definition: imu_model.cpp:13
ScalingNonOrthogonalityAcceleroModel(Eigen::Matrix< TT, 3, 1 > const &scale=Eigen::Matrix< TT, 3, 1 >::Ones(), Eigen::Matrix< TT, 3, 1 > const &non_orthogonality=Eigen::Matrix< TT, 3, 1 >::Zero(), Eigen::Matrix< TT, 3, 1 > const &accel_bias=Eigen::Matrix< TT, 3, 1 >::Zero())
Definition: imu_model.h:76
std::variant< ScalingNonOrthogonalityAcceleroModel< double > > AcceleroModelVariant
Definition: imu_model.h:122
ScalingNonOrthogonalityGyroModel(Eigen::Matrix< TT, 3, 1 > const &scale=Eigen::Matrix< TT, 3, 1 >::Ones(), Eigen::Matrix< TT, 3, 1 > const &non_orthogonality=Eigen::Matrix< TT, 3, 1 >::Zero(), Eigen::Matrix< TT, 3, 1 > const &gyro_bias=Eigen::Matrix< TT, 3, 1 >::Zero())
Definition: imu_model.h:33
auto gyroModel() const -> GyroModelVariant const &
Definition: imu_model.h:156
static auto fromParams(Eigen::Matrix< TT, 9, 1 > const ¶ms) -> ScalingNonOrthogonalityGyroModel< TT >
Definition: imu_model.h:43
auto nonOrthogonalityMatrix(Eigen::Matrix< TT, 3, 1 > const &non_orthogonality) -> Eigen::Matrix< TT, 3, 3 >
Definition: imu_model.h:21
auto gyroModelType() const -> GyroModelType
Definition: imu_model.cpp:54
Eigen::Matrix< TT, 3, 1 > scale
Definition: imu_model.h:68
Eigen::Matrix< TT, 3, 1 > gyro_bias
Definition: imu_model.h:70
auto params() const -> Eigen::Matrix< TT, 9, 1 >
Definition: imu_model.h:103
Definition: imu_model.h:141