25TEST(ImuMath, north_is_pi_over_two) {
30 ASSERT_NEAR(q[1], 0.0f, kEps);
31 ASSERT_NEAR(q[2], 0.0f, kEps);
32 ASSERT_NEAR(q[0], std::cos(
static_cast<float>(M_PI) / 4.0f), kEps);
33 ASSERT_NEAR(q[3], std::sin(
static_cast<float>(M_PI) / 4.0f), kEps);
34 ASSERT_NEAR(YawFrom(q),
static_cast<float>(M_PI) / 2.0f, kEps);
37TEST(ImuMath, east_is_zero_yaw) {
41 ASSERT_NEAR(q[1], 0.0f, kEps);
42 ASSERT_NEAR(q[2], 0.0f, kEps);
43 ASSERT_NEAR(q[0], 1.0f, kEps);
44 ASSERT_NEAR(q[3], 0.0f, kEps);
45 ASSERT_NEAR(YawFrom(q), 0.0f, kEps);
48TEST(ImuMath, south_is_negative_pi_over_two) {
52 ASSERT_NEAR(q[1], 0.0f, kEps);
53 ASSERT_NEAR(q[2], 0.0f, kEps);
54 ASSERT_NEAR(YawFrom(q), -
static_cast<float>(M_PI) / 2.0f, kEps);
69TEST(ImuMath, accel_mirrors_y_only) {
72 ASSERT_NEAR(a[0], 1.0f, kEps);
73 ASSERT_NEAR(a[1], -2.0f, kEps);
74 ASSERT_NEAR(a[2], 3.0f, kEps);
77TEST(ImuMath, gyro_negates_x_and_z_keeps_y) {
80 ASSERT_NEAR(g[0], -1.0f, kEps);
81 ASSERT_NEAR(g[1], 2.0f, kEps);
82 ASSERT_NEAR(g[2], -3.0f, kEps);