34 #include <gtest/gtest.h>
38 TEST(State6DOF, Constructors)
66 ASSERT_EQ(a[0], 1.0
f);
67 ASSERT_EQ(a[1], 2.0
f);
68 ASSERT_EQ(a[2], 3.0
f);
69 ASSERT_EQ(a[3], 0.001
f);
70 ASSERT_EQ(a[4], 0.002
f);
71 ASSERT_EQ(a[5], 0.003
f);
72 ASSERT_EQ(a[6], 0.99
f);
73 ASSERT_EQ(a[7], 0.0
f);
74 ASSERT_EQ(a[8], 0.0
f);
75 ASSERT_EQ(a[9], 0.0
f);
76 ASSERT_EQ(a[10], 0.0
f);
77 ASSERT_EQ(a[11], 0.0
f);
78 ASSERT_EQ(a[12], 0.0
f);
81 for (
size_t i = 0; i < b.
size(); ++i)
83 for (
size_t i = 0; i < b.
size(); ++i)
84 ASSERT_FLOAT_EQ(b[i], 0.1 * (i + 1));
87 for (
size_t i = 0; i < b.
size(); ++i)
88 ASSERT_FLOAT_EQ(c[i], 0.1 * (i + 1));
104 ASSERT_FLOAT_EQ(sum.
rot_.
x_, sum_rot.
x_);
105 ASSERT_FLOAT_EQ(sum.
rot_.
y_, sum_rot.
y_);
106 ASSERT_FLOAT_EQ(sum.
rot_.
z_, sum_rot.
z_);
107 ASSERT_FLOAT_EQ(sum.
rot_.
w_, sum_rot.
w_);
109 ASSERT_FLOAT_EQ(sub.
rot_.
x_, sub_rot.
x_);
110 ASSERT_FLOAT_EQ(sub.
rot_.
y_, sub_rot.
y_);
111 ASSERT_FLOAT_EQ(sub.
rot_.
z_, sub_rot.
z_);
112 ASSERT_FLOAT_EQ(sub.
rot_.
w_, sub_rot.
w_);
115 TEST(State6DOF, CovarianceMatrix)
121 std::array<float, 36> cov{};
124 std::normal_distribution<float> x_dis(e.
pos_.
x_, 0.1);
125 std::normal_distribution<float> y_dis(e.
pos_.
y_, 0.2);
126 std::normal_distribution<float> z_dis(e.
pos_.
z_, 0.3);
127 std::normal_distribution<float> yaw_dis(e.
rot_.
getRPY().
z_, 0.4);
129 const auto generate_state = [&mt, &x_dis, &y_dis, &z_dis, &yaw_dis](
const bool use_rpy) ->
mcl_3dl::State6DOF
143 const std::size_t N = 500;
144 for (std::size_t n = 0; n < N; n++)
147 for (std::size_t j = 0; j < 6; j++)
149 for (std::size_t k = j; k < 6; k++)
151 cov[k * 6 + j] = cov[j * 6 + k] +=
s.covElement(e, j, k);
156 for (
size_t j = 0; j < 6; j++)
158 for (
size_t k = 0; k < 6; k++)
160 cov[k * 6 + j] /= (N - 1);
164 const float tolerance = 1e-2;
165 ASSERT_NEAR(std::sqrt(cov[0]), 0.1, tolerance);
166 ASSERT_NEAR(std::sqrt(cov[7]), 0.2, tolerance);
167 ASSERT_NEAR(std::sqrt(cov[14]), 0.3, tolerance);
168 ASSERT_NEAR(std::sqrt(cov[35]), 0.4, tolerance);
171 int main(
int argc,
char** argv)
173 testing::InitGoogleTest(&argc, argv);
175 return RUN_ALL_TESTS();