| 65 | const double jacobianTolerance = 1.0e-3; |
| 66 | |
| 67 | TEST(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>(); |
nothing calls this directly
no test coverage detected