33 const tf2::Quaternion kNedEnuQ(0.70710678118654752, 0.70710678118654752, 0.0, 0.0);
34 const tf2::Quaternion kFrdFluQ(1.0, 0.0, 0.0, 0.0);
35 const tf2::Quaternion qNedFrd(q[1], q[2], q[3], q[0]);
36 tf2::Quaternion qEnuFlu = kNedEnuQ * qNedFrd * kFrdFluQ;
38 const tf2::Matrix3x3 m(qEnuFlu);
39 const double yaw = std::atan2(m[1][0], m[0][0]);
41 unyaw.setRPY(0.0, 0.0, -yaw);
42 const tf2::Matrix3x3 level = unyaw * m;
43 for (
int i = 0; i < 3; ++i)
45 for (
int j = 0; j < 3; ++j)
47 r[i * 3 + j] =
static_cast<float>(level[i][j]);