Main MRPT website > C++ reference for MRPT 1.9.9
path_from_rtk_gps_unittest.cpp
Go to the documentation of this file.
1 /* +------------------------------------------------------------------------+
2  | Mobile Robot Programming Toolkit (MRPT) |
3  | http://www.mrpt.org/ |
4  | |
5  | Copyright (c) 2005-2017, Individual contributors, see AUTHORS file |
6  | See: http://www.mrpt.org/Authors - All rights reserved. |
7  | Released under BSD License. See details in http://www.mrpt.org/License |
8  +------------------------------------------------------------------------+ */
9 
10 #include <mrpt/topography.h>
12 #include <mrpt/system/filesystem.h>
13 #include <gtest/gtest.h>
14 
15 using namespace mrpt;
16 using namespace mrpt::utils;
17 using namespace mrpt::math;
18 using namespace mrpt::poses;
19 using namespace mrpt::topography;
20 using namespace std;
21 
22 // Defined in tests/test_main.cpp
23 namespace mrpt
24 {
25 namespace utils
26 {
28 }
29 }
30 
31 TEST(TopographyReconstructPathFrom3RTK, sampleDataset)
32 {
34 
35  mrpt::obs::CRawlog rawlog;
36 
37  const string dataset_fil =
39  string("/share/mrpt/datasets/test_rtk_path.rawlog");
40  if (!mrpt::system::fileExists(dataset_fil))
41  {
42  cerr << "WARNING: Skipping test due to missing file: " << dataset_fil
43  << "\n";
44  return;
45  }
46  if (!rawlog.loadFromRawLogFile(dataset_fil))
47  {
48  cerr << "WARNING: Skipping test due to error loading file: "
49  << dataset_fil << "\n";
50  }
51  else
52  {
54 
55  // -------------------------------------------
56  // Run path reconstruction:
57  // -------------------------------------------
59  robot_path, rawlog,
60  0, // first entry
61  rawlog.size() - 1, // last entry
62  false, // Isn't a GUI
63  false, // disableGPSInterp
64  1, // path_smooth_filter_size
65  &rtk_path_info);
66 
67  EXPECT_EQ(robot_path.size(), 75u);
68 
69  // Expected values:
70  // 1226225355.000000 279.705647 216.651473 8.517821 0.194222 -0.083873
71  // -0.045293
72  // 1226225380.000000 377.095830 233.343569 9.724171 0.177037 -0.073565
73  // -0.019024
74  const mrpt::system::TTimeStamp t1 =
75  mrpt::system::time_tToTimestamp(1226225355.000000);
76  const mrpt::system::TTimeStamp t2 =
77  mrpt::system::time_tToTimestamp(1226225380.000000);
78  const CPose3D pose_GT_1(
79  279.696, 216.623, 9.21315, 0.195764, -0.0319733, -0.0420478);
80  const CPose3D pose_GT_2(
81  377.087, 233.311, 10.474, 0.178932, -0.0212096, -0.0154982);
82 
83  CPose3D pose1, pose2;
84  bool valid;
85  robot_path.interpolate(t1, pose1, valid);
86  EXPECT_TRUE(valid);
87 
88  robot_path.interpolate(t2, pose2, valid);
89  EXPECT_TRUE(valid);
90 
91  CVectorDouble p1vec(12), p2vec(12);
92  pose1.getAs12Vector(p1vec);
93  pose2.getAs12Vector(p2vec);
94 
95  CVectorDouble p1vec_gt(12), p2vec_gt(12);
96  pose_GT_1.getAs12Vector(p1vec_gt);
97  pose_GT_2.getAs12Vector(p2vec_gt);
98 
99  EXPECT_NEAR((p1vec - p1vec_gt).array().abs().sum(), 0, 1e-3);
100  EXPECT_NEAR((p2vec - p2vec_gt).array().abs().sum(), 0, 1e-3);
101  }
102 }
uint64_t TTimeStamp
A system independent time type, it holds the the number of 100-nanosecond intervals since January 1...
Definition: datetime.h:32
Classes for serialization, sockets, ini-file manipulation, streams, list of properties-values, timewatch, extensions to STL.
std::string MRPT_GLOBAL_UNITTEST_SRC_DIR
TEST(TopographyReconstructPathFrom3RTK, sampleDataset)
bool fileExists(const std::string &fileName)
Test if a given file (or directory) exists.
Definition: filesystem.cpp:127
Column vector, like Eigen::MatrixX*, but automatically initialized to zeros since construction...
Definition: eigen_frwds.h:42
STL namespace.
Used to return optional information from mrpt::topography::path_from_rtk_gps.
pose_t & interpolate(mrpt::system::TTimeStamp t, pose_t &out_interp, bool &out_valid_interp) const
Returns the pose at a given time, or interpolates using splines if there is not an exact match...
bool loadFromRawLogFile(const std::string &fileName, bool non_obs_objects_are_legal=false)
Load the contents from a file containing one of these possibilities:
Definition: CRawlog.cpp:206
This base provides a set of functions for maths stuff.
Definition: CArrayNumeric.h:19
CONTAINER::Scalar sum(const CONTAINER &v)
Computes the sum of all the elements.
This class stores a rawlog (robotic datasets) in one of two possible formats:
Definition: CRawlog.h:68
GLsizei const GLchar ** string
Definition: glext.h:4101
Classes for 2D/3D geometry representation, both of single values and probability density distribution...
Definition: CPoint.h:17
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
void path_from_rtk_gps(mrpt::poses::CPose3DInterpolator &robot_path, const mrpt::obs::CRawlog &rawlog, size_t rawlog_first, size_t rawlog_last, bool isGUI=false, bool disableGPSInterp=false, int path_smooth_filter_size=2, TPathFromRTKInfo *outInfo=nullptr)
Reconstruct the path of a vehicle equipped with 3 RTK GPSs.
A class used to store a 3D pose (a 3D translation + a rotation in 3D).
Definition: CPose3D.h:88
This class stores a time-stamped trajectory in SE(3) (CPose3D poses).
This namespace provides topography helper functions, coordinate transformations.
Definition: conversions.h:23
mrpt::system::TTimeStamp time_tToTimestamp(const double t)
Transform from standard "time_t" (actually a double number, it can contain fractions of seconds) to T...
Definition: datetime.cpp:49
void getAs12Vector(ARRAYORVECTOR &vec12) const
Get the pose representation as an array with these 12 elements: [r11 r21 r31 r12 r22 r32 r13 r23 r33 ...
Definition: CPose3D.h:510
size_t size() const
Returns the number of actions / observations object in the sequence.
Definition: CRawlog.cpp:88



Page generated by Doxygen 1.8.14 for MRPT 1.9.9 Git: ae4571287 Thu Nov 23 00:06:53 2017 +0100 at dom oct 27 23:51:55 CET 2019