MRPT  1.9.9
CVelodyneScanner_unittest.cpp
Go to the documentation of this file.
1 /* +------------------------------------------------------------------------+
2  | Mobile Robot Programming Toolkit (MRPT) |
3  | https://www.mrpt.org/ |
4  | |
5  | Copyright (c) 2005-2019, Individual contributors, see AUTHORS file |
6  | See: https://www.mrpt.org/Authors - All rights reserved. |
7  | Released under BSD License. See: https://www.mrpt.org/License |
8  +------------------------------------------------------------------------+ */
9 
10 #include <gtest/gtest.h>
12 #include <mrpt/system/filesystem.h>
13 #include <test_mrpt_common.h>
14 
15 using namespace mrpt;
16 using namespace mrpt::hwdrivers;
17 using namespace std;
18 
19 #include <mrpt/config.h>
20 #if MRPT_HAS_LIBPCAP
21 
22 TEST(CVelodyneScanner, sample_vlp16_dataset)
23 {
24  const string fil =
25  UNITTEST_BASEDIR + string("/tests/sample_velodyne_vlp16_gps.pcap");
26 
27  if (!mrpt::system::fileExists(fil))
28  {
29  std::cerr << "WARNING: Skipping test due to missing file: " << fil
30  << "\n";
31  return;
32  }
33 
34  CVelodyneScanner velodyne;
35 
37  velodyne.setPCAPInputFile(fil);
38  velodyne.setPCAPInputFileReadOnce(true);
39  velodyne.enableVerbose(false);
40  velodyne.setPCAPVerbosity(false);
41 
42  velodyne.initialize();
43 
44  size_t nScans = 0, nGPS = 0;
45  bool rx_ok = true;
46  for (size_t i = 0; i < 1000 && rx_ok; i++)
47  {
50  rx_ok = velodyne.getNextObservation(scan, gps);
51  if (scan)
52  {
53  nScans++;
54  scan->generatePointCloud();
55  }
56  if (gps) nGPS++;
57  };
58  EXPECT_EQ(nScans, 4U);
59  EXPECT_GT(nGPS, 0U);
60 }
61 
62 TEST(CVelodyneScanner, sample_hdl32_dataset)
63 {
64  const string fil =
65  UNITTEST_BASEDIR + string("/tests/sample_velodyne_hdl32.pcap");
66 
67  if (!mrpt::system::fileExists(fil))
68  {
69  std::cerr << "WARNING: Skipping test due to missing file: " << fil
70  << "\n";
71  return;
72  }
73 
74  CVelodyneScanner velodyne;
75 
77  velodyne.setPCAPInputFile(fil);
78  velodyne.setPCAPInputFileReadOnce(true);
79  velodyne.enableVerbose(false);
80  velodyne.setPCAPVerbosity(false);
81 
82  velodyne.initialize();
83 
84  size_t nScans = 0;
85  // size_t nGPS=0;
86  bool rx_ok = true;
87  for (size_t i = 0; i < 1000 && rx_ok; i++)
88  {
91  rx_ok = velodyne.getNextObservation(scan, gps);
92  if (scan) nScans++;
93  // if (gps) nGPS++;
94  };
95  EXPECT_EQ(nScans, 3U);
96 }
97 
98 #endif // MRPT_HAS_LIBPCAP
A C++ interface to Velodyne laser scanners (HDL-64, HDL-32, VLP-16), working on Linux and Windows...
void setPCAPInputFile(const std::string &pcap_file)
Enables reading from a PCAP file instead of live UDP packet listening.
void setPCAPVerbosity(const bool verbose)
Enables/disables PCAP info messages to console (default: true)
bool getNextObservation(mrpt::obs::CObservationVelodyneScan::Ptr &outScan, mrpt::obs::CObservationGPS::Ptr &outGPS)
Polls the UDP port for incoming data packets.
void enableVerbose(bool enabled=true)
Enable or disable extra debug info dumped to std::cout during sensor operation.
bool fileExists(const std::string &fileName)
Test if a given file (or directory) exists.
Definition: filesystem.cpp:128
Contains classes for various device interfaces.
STL namespace.
void setModelName(const model_t model)
See supported model names in the general discussion docs for mrpt::hwdrivers::CVelodyneScanner.
TEST(NodeletsTests, pub_sub_multithread_test)
GLsizei const GLchar ** string
Definition: glext.h:4116
void initialize() override
Tries to initialize the sensor driver, after setting all the parameters with a call to loadConfig...
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
void setPCAPInputFileReadOnce(bool read_once)



Page generated by Doxygen 1.8.14 for MRPT 1.9.9 Git: 8fe78517f Sun Jul 14 19:43:28 2019 +0200 at lun oct 28 02:10:00 CET 2019