MCPcopy Create free account
hub / github.com/AutonomousFieldRoboticsLab/SVIn / TEST

Function TEST

okvis_ros/okvis/okvis_ceres/test/TestImuError.cpp:67–399  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

65const double jacobianTolerance = 1.0e-3;
66
67TEST(okvisTestSuite, ImuError) {
68 // initialize random number generator
69 // srand((unsigned int) time(0)); // disabled: make unit tests deterministic...
70
71 // Build the problem.
72 ::ceres::Problem problem;
73
74 // check errors
75 OKVIS_DEFINE_EXCEPTION(Exception, std::runtime_error);
76
77 // set the imu parameters
78 okvis::ImuParameters imuParameters;
79 imuParameters.a0.setZero();
80 imuParameters.g = 9.81;
81 imuParameters.a_max = 1000.0;
82 imuParameters.g_max = 1000.0;
83 imuParameters.rate = 1000; // 1 kHz
84 imuParameters.sigma_g_c = 6.0e-4;
85 imuParameters.sigma_a_c = 2.0e-3;
86 imuParameters.sigma_gw_c = 3.0e-6;
87 imuParameters.sigma_aw_c = 2.0e-5;
88 imuParameters.tau = 3600.0;
89
90 // generate random motion
91 const double w_omega_S_x = Eigen::internal::random(0.1, 10.0); // circular frequency
92 const double w_omega_S_y = Eigen::internal::random(0.1, 10.0); // circular frequency
93 const double w_omega_S_z = Eigen::internal::random(0.1, 10.0); // circular frequency
94 const double p_omega_S_x = Eigen::internal::random(0.0, M_PI); // phase
95 const double p_omega_S_y = Eigen::internal::random(0.0, M_PI); // phase
96 const double p_omega_S_z = Eigen::internal::random(0.0, M_PI); // phase
97 const double m_omega_S_x = Eigen::internal::random(0.1, 1.0); // magnitude
98 const double m_omega_S_y = Eigen::internal::random(0.1, 1.0); // magnitude
99 const double m_omega_S_z = Eigen::internal::random(0.1, 1.0); // magnitude
100 const double w_a_W_x = Eigen::internal::random(0.1, 10.0);
101 const double w_a_W_y = Eigen::internal::random(0.1, 10.0);
102 const double w_a_W_z = Eigen::internal::random(0.1, 10.0);
103 const double p_a_W_x = Eigen::internal::random(0.1, M_PI);
104 const double p_a_W_y = Eigen::internal::random(0.1, M_PI);
105 const double p_a_W_z = Eigen::internal::random(0.1, M_PI);
106 const double m_a_W_x = Eigen::internal::random(0.1, 10.0);
107 const double m_a_W_y = Eigen::internal::random(0.1, 10.0);
108 const double m_a_W_z = Eigen::internal::random(0.1, 10.0);
109
110 // generate randomized measurements - duration 10 seconds
111 const double duration = 1.0;
112 okvis::ImuMeasurementDeque imuMeasurements;
113 okvis::kinematics::Transformation T_WS;
114 // T_WS.setRandom();
115
116 // time increment
117 const double dt = 1.0 / static_cast<double>(imuParameters.rate); // time discretization
118
119 // states
120 Eigen::Quaterniond q = T_WS.q();
121 Eigen::Vector3d r = T_WS.r();
122 okvis::SpeedAndBias speedAndBias;
123 speedAndBias.setZero();
124 Eigen::Vector3d v = speedAndBias.head<3>();

Callers

nothing calls this directly

Calls 15

TimeClass · 0.85
sinc_testFunction · 0.85
TransformationClass · 0.85
RandomClass · 0.85
ImuSensorReadingsClass · 0.85
inverseMethod · 0.80
setRandomMethod · 0.80
TMethod · 0.80
parametersMethod · 0.45
PlusMethod · 0.45
EvaluateMethod · 0.45

Tested by

no test coverage detected