14 const std::list<Vector>&
F,
const double g_e,
bool flat) {
24 const Matrix&
F,
const double g_e,
bool flat) {
28 Vector3 meanF = F.rowwise().mean();
35 b_g = (
Vector3(3) << 0.0, 0.0, meanF.norm()).finished();
45 b_g = - g_e * meanF/meanF.norm();
57 double roll =
atan2(g2, g3);
59 double pitch =
atan2(-g1,
sqrt(g2 * g2 + g3 * g3));
82 const double dt)
const {
85 #ifndef MODEL_NAV_FRAME_ROTATION 91 Vector3 b_omega_in; b_omega_in.setZero();
94 Vector3 b_omega_bn = b_omega_in - b_omega_ib;
103 Vector3 n_omega_bn = nRb * b_omega_bn;
const Vector3 & x_a() const
static Rot3 Ypr(double y, double p, double r, OptionalJacobian< 3, 1 > Hy={}, OptionalJacobian< 3, 1 > Hp={}, OptionalJacobian< 3, 1 > Hr={})
static Mechanization_bRn2 initialize(const Matrix &U, const Matrix &F, const double g_e=0, bool flat=false)
Matrix version of initialize.
Vector3 x_a_
accelerometer bias
Vector3 b_g(double g_e) const
gravity in the body frame
Rot3 bRn_
rotation from nav to body
Mechanization_bRn2 integrate(const Vector3 &u, const double dt) const
Rot3 is a 3D rotation represented as a rotation matrix if the preprocessor symbol GTSAM_USE_QUATERNIO...
Rot3 inverse() const
inverse of a rotation
Mechanization_bRn2(const Rot3 &initial_bRn=Rot3(), const Vector3 &initial_x_g=Z_3x1, const Vector3 &initial_x_a=Z_3x1)
static Rot3 Rodrigues(const Vector3 &w)
Class compose(const Class &g) const
AnnoyingScalar atan2(const AnnoyingScalar &y, const AnnoyingScalar &x)
const Vector3 & x_g() const
Vector3 x_g_
gyroscope bias
Pose3 g1(Rot3(), Point3(100.0, 0.0, 300.0))
static Mechanization_bRn2 initializeVector(const std::list< Vector > &U, const std::list< Vector > &F, const double g_e=0, bool flat=false)
Jet< T, N > sqrt(const Jet< T, N > &f)
Vector concatVectors(const std::list< Vector > &vs)
Pose3 g2(g1.expmap(h *V1_g1))
Mechanization_bRn2 correct(const Vector9 &dx) const