31 Eigen::Map<const Eigen::Vector4d> q(x);
34 Eigen::Map<const Eigen::Vector3d> d_th(delta);
35 Eigen::Matrix<double, 4, 1> d_q;
36 double theta = d_th.norm();
38 d_q << .5 * d_th, 1.0;
40 d_q.block(0, 0, 3, 1) = (d_th / theta) * std::sin(theta / 2);
41 d_q(3, 0) = std::cos(theta / 2);
46 Eigen::Map<Eigen::Vector4d> q_plus(x_plus_delta);
52 Eigen::Map<Eigen::Matrix<double, 4, 3, Eigen::RowMajor>> j(jacobian);
53 j.topRows<3>().setIdentity();
54 j.bottomRows<1>().setZero();
Eigen::Matrix< double, 4, 1 > quat_multiply(const Eigen::Matrix< double, 4, 1 > &q, const Eigen::Matrix< double, 4, 1 > &p)
bool ComputeJacobian(const double *x, double *jacobian) const override
Computes the jacobian in respect to the local parameterization.
State initialization code.
Eigen::Matrix< double, 4, 1 > quatnorm(Eigen::Matrix< double, 4, 1 > q_t)
bool Plus(const double *x, const double *delta, double *x_plus_delta) const override
State update function for a JPL quaternion representation.