diff --git a/test/gtest_IMU_tools.cpp b/test/gtest_IMU_tools.cpp index b110b4bb92ff503469decfe77e4e791faabac391..7dc9f5b6bea94b9523e881fd3efb2be3dcf3112b 100644 --- a/test/gtest_IMU_tools.cpp +++ b/test/gtest_IMU_tools.cpp @@ -671,25 +671,34 @@ TEST(IMU_tools, Stride_sum) } -//template <typename D1, typename D2, typename D3> -//void rot (const MatrixBase<D1>& q, -// const MatrixBase<D2>& v, -// MatrixBase<D3>& vr) -//{ -// WOLF_TRACE("Original inputs ---------------"); -// WOLF_TRACE("q\n", q); -// WOLF_TRACE("v\n", v); -// -// WOLF_TRACE("Subjacent matrix strides ------"); -// WOLF_TRACE("M Stride: col: ", q.colStride(), " row: ",q.rowStride()); -// WOLF_TRACE("N Stride: col: ", v.colStride(), " row: ",v.rowStride()); -// -// WOLF_TRACE("Map without Stride ------------"); -// Map<const Quaternions> q1 (&q(0) + 0); -// Map<const Vector3s> v1 (&v(0) + 0); -// WOLF_TRACE("q1\n", q1.coeffs()); -// WOLF_TRACE("v1\n", v1); -// +template <typename D1, typename D2, typename D3> +void rot (const MatrixBase<D1>& q, + const MatrixBase<D2>& v, + MatrixBase<D3>& vr) +{ + WOLF_TRACE("Original inputs ---------------"); + WOLF_TRACE("q\n", q); + WOLF_TRACE("v\n", v); + + WOLF_TRACE("Subjacent matrix strides ------"); + WOLF_TRACE("M Stride: col: ", q.colStride(), " row: ",q.rowStride()); + WOLF_TRACE("N Stride: col: ", v.colStride(), " row: ",v.rowStride()); + + WOLF_TRACE("Construct without Stride ------------"); + Vector4s qv = q; + Quaternions q0 (&qv(0)); + Quaternions q01 (qv); + Quaternions q02; q02.coeffs() = q; + WOLF_TRACE("q0\n", q0.coeffs()); + WOLF_TRACE("q01\n", q01.coeffs()); + WOLF_TRACE("q02\n", q02.coeffs()); + + WOLF_TRACE("Map without Stride ------------"); + Map<const Quaternions> q1 (&q(0) + 0); + Map<const Vector3s> v1 (&v(0) + 0); + WOLF_TRACE("q1\n", q1.coeffs()); + WOLF_TRACE("v1\n", v1); + // WOLF_TRACE("Map with Stride ---------------"); //// Map<const Quaternions, 0, Stride<Dynamic, Dynamic> > q2(&q(0) + 0, Stride<Dynamic, Dynamic>(q.colStride(),q.rowStride())); //// Map<const Quaternions, 0, OuterStride<Dynamic> > q2(&q(0) + 0, OuterStride<Dynamic>(q.rowStride())); @@ -701,24 +710,24 @@ TEST(IMU_tools, Stride_sum) // // WOLF_TRACE("Result ------------------------"); // WOLF_TRACE("sum\n", vr); -//} -// -//TEST(IMU_tools, Stride_quat) -//{ -// Matrix<Scalar, Dynamic, Dynamic, RowMajor> L(4,5), M(4,5); // RowMajor -// Matrix<Scalar, Dynamic, Dynamic> N(4,5); // ColMajor -// for (int i = 0; i < M.size(); ++i) M(i) = i; -// for (int i = 0; i < N.size(); ++i) N(i) = i; -// VectorXs d; -// -// WOLF_TRACE("M\n", M); -// WOLF_TRACE("N\n", N); -// -// rot(M.col(1), N.col(1).head(3), d); -// -// ASSERT_MATRIX_APPROX(d.head(3), M.col(1).head(3)+N.col(1).head(3), 1e-16); -// -//} +} + +TEST(IMU_tools, Stride_quat) +{ + Matrix<Scalar, Dynamic, Dynamic, RowMajor> L(4,5), M(4,5); // RowMajor + Matrix<Scalar, Dynamic, Dynamic> N(4,5); // ColMajor + for (int i = 0; i < M.size(); ++i) M(i) = i; + for (int i = 0; i < N.size(); ++i) N(i) = i; + VectorXs d; + + WOLF_TRACE("M\n", M); + WOLF_TRACE("N\n", N); + + rot(M.col(1), N.col(1).head(3), d); + + ASSERT_MATRIX_APPROX(d.head(3), M.col(1).head(3)+N.col(1).head(3), 1e-16); + +} int main(int argc, char **argv) {