49 typedef std::pair<Point3, Velocity3> PositionAndVelocity;
56 t_(0, 0, 0), v_(Vector3::Zero()) {
64 R_(pose.rotation()), t_(pose.translation()), v_(v) {
68 R_(R), t_(tv.head<3>()), v_(tv.tail<3>()) {
86 const Pose3 pose()
const {
87 return Pose3(attitude(), position());
107 const Vector3&
v()
const {
127 void print(
const std::string& s =
"")
const;
138 static Eigen::Block<Vector9, 3, 1> dR(Vector9& v) {
139 return v.segment<3>(0);
141 static Eigen::Block<Vector9, 3, 1> dP(Vector9& v) {
142 return v.segment<3>(3);
144 static Eigen::Block<Vector9, 3, 1> dV(Vector9& v) {
145 return v.segment<3>(6);
147 static Eigen::Block<const Vector9, 3, 1> dR(
const Vector9& v) {
148 return v.segment<3>(0);
150 static Eigen::Block<const Vector9, 3, 1> dP(
const Vector9& v) {
151 return v.segment<3>(3);
153 static Eigen::Block<const Vector9, 3, 1> dV(
const Vector9& v) {
154 return v.segment<3>(6);
173 NavState update(
const Vector3& b_acceleration,
const Vector3& b_omega,
178 Vector9
coriolis(
double dt,
const Vector3& omega,
bool secondOrder =
false,
183 Vector9
correctPIM(
const Vector9& pim,
double dt,
const Vector3& n_gravity,
184 const boost::optional<Vector3>& omegaCoriolis,
bool use2ndOrderCoriolis =
194 template<
class ARCHIVE>
195 void serialize(ARCHIVE & ar,
const unsigned int ) {
196 ar & BOOST_SERIALIZATION_NVP(R_);
197 ar & BOOST_SERIALIZATION_NVP(t_);
198 ar & BOOST_SERIALIZATION_NVP(v_);
const Vector3 & v() const
Return velocity as Vector3. Computation-free.
Definition: NavState.h:107
NavState(const Pose3 &pose, const Velocity3 &v)
Construct from pose and velocity.
Definition: NavState.h:63
Vector9 coriolis(double dt, const Vector3 &omega, bool secondOrder=false, OptionalJacobian< 9, 9 > H=boost::none) const
Compute tangent space contribution due to Coriolis forces.
Definition: NavState.cpp:215
Matrix3 matrix() const
return 3*3 rotation matrix
Definition: Rot3M.cpp:180
OptionalJacobian is an Eigen::Ref like class that can take be constructed using either a fixed size o...
Definition: OptionalJacobian.h:39
Quaternion quaternion() const
Return quaternion. Induces computation in matrix mode.
Definition: NavState.h:99
static NavState FromPoseVelocity(const Pose3 &pose, const Vector3 &vel, OptionalJacobian< 9, 6 > H1, OptionalJacobian< 9, 3 > H2)
Named constructor with derivatives.
Definition: NavState.cpp:40
NavState()
Default constructor.
Definition: NavState.h:55
Vector9 correctPIM(const Vector9 &pim, double dt, const Vector3 &n_gravity, const boost::optional< Vector3 > &omegaCoriolis, bool use2ndOrderCoriolis=false, OptionalJacobian< 9, 9 > H1=boost::none, OptionalJacobian< 9, 9 > H2=boost::none) const
Correct preintegrated tangent vector with our velocity and rotated gravity, taking into account Corio...
Definition: NavState.cpp:249
NavState update(const Vector3 &b_acceleration, const Vector3 &b_omega, const double dt, OptionalJacobian< 9, 9 > F, OptionalJacobian< 9, 3 > G1, OptionalJacobian< 9, 3 > G2) const
Integrate forward in time given angular velocity and acceleration in body frame Uses second order int...
Definition: NavState.cpp:171
typedef and functions to augment Eigen's VectorXd
Navigation state: Pose (rotation, translation) + velocity NOTE(frank): it does not make sense to make...
Definition: NavState.h:34
gtsam::Quaternion toQuaternion() const
Compute the quaternion representation of this rotation.
Definition: Rot3M.cpp:194
Base class and basic functions for Manifold types.
Both ManifoldTraits and Testable.
Definition: Manifold.h:120
Vector3 t() const
Return position as Vector3.
Definition: NavState.h:103
Matrix7 matrix() const
Return matrix group representation, in MATLAB notation: nTb = [nRb 0 n_t; 0 nRb n_v; 0 0 1] With this...
Definition: NavState.cpp:82
void print(const std::string &s="") const
print
Definition: NavState.cpp:98
A manifold defines a space in which there is a notion of a linear tangent space that can be centered ...
Definition: concepts.h:30
NavState(const Rot3 &R, const Point3 &t, const Velocity3 &v)
Construct from attitude, position, velocity.
Definition: NavState.h:59
Vector3 Velocity3
Velocity is currently typedef'd to Vector3.
Definition: NavState.h:28
bool equals(const NavState &other, double tol=1e-8) const
equals
Definition: NavState.cpp:103
GTSAM_EXPORT friend std::ostream & operator<<(std::ostream &os, const NavState &state)
Output stream operator.
Definition: NavState.cpp:90
Matrix3 R() const
Return rotation matrix. Induces computation in quaternion mode.
Definition: NavState.h:95
friend class boost::serialization::access
Definition: NavState.h:193
Vector9 localCoordinates(const NavState &g, OptionalJacobian< 9, 9 > H1=boost::none, OptionalJacobian< 9, 9 > H2=boost::none) const
localCoordinates with optional derivatives
Definition: NavState.cpp:135
NavState retract(const Vector9 &v, OptionalJacobian< 9, 9 > H1=boost::none, OptionalJacobian< 9, 9 > H2=boost::none) const
retract with optional derivatives
Definition: NavState.cpp:109
NavState(const Matrix3 &R, const Vector9 tv)
Construct from SO(3) and R^6.
Definition: NavState.h:67
Global functions in a separate testing namespace.
Definition: chartTesting.h:28
static NavState Create(const Rot3 &R, const Point3 &t, const Velocity3 &v, OptionalJacobian< 9, 3 > H1, OptionalJacobian< 9, 3 > H2, OptionalJacobian< 9, 3 > H3)
Named constructor with derivatives.
Definition: NavState.cpp:28