Main MRPT website > C++ reference for MRPT 1.5.7
CRandomFieldGridMap3D_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 
11 #include <gtest/gtest.h>
12 
13 TEST(CRandomFieldGridMap3D, insertCheckMapBounds)
14 {
16 
18 
20  //grid3d.setMinLoggingLevel(mrpt::utils::LVL_DEBUG);
21 
22  grid3d.setSize(-4.0,4.0, 0.0, 4.0, 0.0,4.0, 1.0 /*voxel size*/); // x:[-10,10] * y:[0,5] * z:[0,4]
23 
24  const double val = 10.0, var = 1.0;
25 
26  // Inside:
27  EXPECT_TRUE(grid3d.insertIndividualReading(1.0*val, var, TPoint3D(2.0, 3.0, 1.0), im, false));
28  EXPECT_TRUE(grid3d.insertIndividualReading(2.0*val, var, TPoint3D(-3.0, 0.4,1.0), im, false));
29  EXPECT_TRUE(grid3d.insertIndividualReading(3.0*val, var, TPoint3D(3.0, 3.8,3.0), im, false));
30  // Outside:
31  EXPECT_FALSE(grid3d.insertIndividualReading(val, var, TPoint3D(-11.0, 2.0, 2.0), im, false));
32  EXPECT_FALSE(grid3d.insertIndividualReading(val, var, TPoint3D(11.0, 2.0, 3.0), im, false));
33  EXPECT_FALSE(grid3d.insertIndividualReading(val, var, TPoint3D(2.0, -1.0, 11.0), im, false));
34  EXPECT_FALSE(grid3d.insertIndividualReading(val, var, TPoint3D(2.0, 6.0, 3.0), im, false));
35 
36 #if 0
37  grid3d.updateMapEstimation();
38  grid3d.saveAsCSV("map3D.csv");
39  grid3d.saveAsVtkStructuredGrid("map3D.vts");
40 #endif
41 }
42 
43 TEST(CRandomFieldGridMap3D, insertPointsAndRead)
44 {
46 
49  //grid3d.setMinLoggingLevel(mrpt::utils::LVL_DEBUG);
50 
51  grid3d.setSize(-4.0, 4.0, 0.0, 4.0, 0.0, 4.0, 1.0 /*voxel size*/); // x:[-10,10] * y:[0,5] * z:[0,4]
52 
53  const double val = 55.0, var = 1.0;
54 
55  EXPECT_TRUE(grid3d.insertIndividualReading(val, var, TPoint3D(2.0, 3.0, 1.0), im, false));
56 
58  grid3d.updateMapEstimation();
59 
60  {
61  const double map_value = grid3d.cellByPos(2.0, 3.0, 1.0)->mean_value;
62  EXPECT_NEAR(map_value, val, 1e-6);
63  }
64 
65  // Test after map enlarge:
66  grid3d.resize(-5.0, 5.0, -1.0, 5.0, -1.0, 5.0, mrpt::maps::TRandomFieldVoxel(), .0);
67  {
68  const double map_value = grid3d.cellByPos(2.0, 3.0, 1.0)->mean_value;
69  EXPECT_NEAR(map_value, val, 1e-6);
70  }
71 
72 }
73 
bool GMRF_skip_variance
(Default:false) Skip the computation of the variance, just compute the mean
T * cellByPos(double x, double y, double z)
Returns a pointer to the contents of a voxel given by its coordinates, or NULL if it is out of the ma...
The contents of each voxel in a CRandomFieldGridMap3D map.
virtual void resize(double new_x_min, double new_x_max, double new_y_min, double new_y_max, double new_z_min, double new_z_max, const TRandomFieldVoxel &defaultValueNewvoxels, double additionalMarginMeters=2.0) MRPT_OVERRIDE
Changes the size of the grid, maintaining previous contents.
int val
Definition: mrpt_jpeglib.h:953
bool saveAsCSV(const std::string &filName_mean, const std::string &filName_stddev=std::string()) const
Save the current estimated mean values to a CSV file (compatible with Paraview) with fields x y z mea...
CRandomFieldGridMap3D represents a 3D regular grid where each voxel is associated one real-valued pro...
TEST(CRandomFieldGridMap3D, insertCheckMapBounds)
virtual void setSize(const double x_min, const double x_max, const double y_min, const double y_max, const double z_min, const double z_max, const double resolution_xy, const double resolution_z=-1.0, const TRandomFieldVoxel *fill_value=NULL) MRPT_OVERRIDE
Changes the size of the grid, erasing previous contents.If resolution_z<0, the same resolution will b...
bool saveAsVtkStructuredGrid(const std::string &fil) const
Save the current estimated grid to a VTK file (.vts) as a "structured grid".
bool insertIndividualReading(const double sensorReading, const double sensorVariance, const mrpt::math::TPoint3D &point, const TVoxelInterpolationMethod method, const bool update_map)
Direct update of the map with a reading in a given position of the map.
void updateMapEstimation()
Run the method-specific procedure required to ensure that the mean & variances are up-to-date with al...
Lightweight 3D point.



Page generated by Doxygen 1.8.14 for MRPT 1.5.7 Git: 5902e14cc Wed Apr 24 15:04:01 2019 +0200 at lun oct 28 01:39:17 CET 2019