30 #include <FPExceptionEnabler.h>
36 static const double InitialStateError[] = {
37 1., 1., 1., 10., 10., 10., 100., 100., 100., 1000., 1000., 1000.};
39 static const double IMUError = 1.0E-8;
40 static const double IMUErrorVector[] = {IMUError, IMUError * 5., IMUError};
41 static const double CameraOriError = 1.0E-1;
42 static const double CameraOrientationError[] = {CameraOriError, CameraOriError,
44 static const double CameraPosError = 3.0E-4;
45 static const double CameraPositionError[] = {CameraPosError, CameraPosError,
46 CameraPosError * 0.1};
48 static const double PositionNoiseAutocorrelation = 0.01;
49 static const double OrientationNoiseAutocorrelation = 0.1;
51 static const double VelocityDamping = .01;
57 VideoIMUFusion::RunningData::RunningData(
61 : m_processModel(params.damping, params.positionNoise, params.oriNoise),
64 m_imuMeas(
ei::map(initialIMU),
65 Vector<3>::Constant(params.imuOriVariance)),
66 m_imuMeasVel(
Vector<3>::Zero(),
67 Vector<3>::Constant(params.imuAngVelVariance)),
68 m_cameraMeasOri(
Eigen::Quaterniond::Identity(),
69 Vector<3>::Constant(params.videoOriVariance)),
70 m_cameraMeasPos(
Vector<3>::Zero(),
71 Vector<3>::Constant(params.videoPosVariance)),
73 m_rTc(rTc), m_last(lastTS) {
76 FPExceptionEnabler fpe;
78 Eigen::Isometry3d roomPose = takeCameraPoseToRoom(initialVideo);
83 position(initialState) = roomPose.translation();
84 state().setStateVector(initialState);
85 state().setQuaternion(Eigen::Quaterniond(roomPose.rotation()));
86 state().setErrorCovariance(Vector<12>(InitialStateError).asDiagonal());
Eigen::Matrix< Scalar, n, 1 > Vector
A vector of length n.
Vector< Dimension< T >::value > DimVector
A vector of length = dimension of T.
A structure defining a quaternion, often a unit quaternion representing 3D rotation.
A structure defining a 3D (6DOF) rigid body pose: translation and rotation.
Standardized, portable parallel to struct timeval for representing both absolute times and time inter...