MRPT  1.9.9
CRandomFieldGridMap3D_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 
13 TEST(CRandomFieldGridMap3D, insertCheckMapBounds)
14 {
16 
19 
21  // grid3d.setMinLoggingLevel(mrpt::system::LVL_DEBUG);
22 
23  grid3d.setSize(
24  -4.0, 4.0, 0.0, 4.0, 0.0, 4.0,
25  1.0 /*voxel size*/); // x:[-10,10] * y:[0,5] * z:[0,4]
26 
27  const double val = 10.0, var = 1.0;
28 
29  // Inside:
30  EXPECT_TRUE(grid3d.insertIndividualReading(
31  1.0 * val, var, TPoint3D(2.0, 3.0, 1.0), im, false));
32  EXPECT_TRUE(grid3d.insertIndividualReading(
33  2.0 * val, var, TPoint3D(-3.0, 0.4, 1.0), im, false));
34  EXPECT_TRUE(grid3d.insertIndividualReading(
35  3.0 * val, var, TPoint3D(3.0, 3.8, 3.0), im, false));
36  // Outside:
37  EXPECT_FALSE(grid3d.insertIndividualReading(
38  val, var, TPoint3D(-11.0, 2.0, 2.0), im, false));
39  EXPECT_FALSE(grid3d.insertIndividualReading(
40  val, var, TPoint3D(11.0, 2.0, 3.0), im, false));
41  EXPECT_FALSE(grid3d.insertIndividualReading(
42  val, var, TPoint3D(2.0, -1.0, 11.0), im, false));
43  EXPECT_FALSE(grid3d.insertIndividualReading(
44  val, var, TPoint3D(2.0, 6.0, 3.0), im, false));
45 
46 #if 0
47  grid3d.updateMapEstimation();
48  grid3d.saveAsCSV("map3D.csv");
49  grid3d.saveAsVtkStructuredGrid("map3D.vts");
50 #endif
51 }
52 
53 TEST(CRandomFieldGridMap3D, insertPointsAndRead)
54 {
56 
60  // grid3d.setMinLoggingLevel(mrpt::system::LVL_DEBUG);
61 
62  grid3d.setSize(
63  -4.0, 4.0, 0.0, 4.0, 0.0, 4.0,
64  1.0 /*voxel size*/); // x:[-10,10] * y:[0,5] * z:[0,4]
65 
66  const double val = 55.0, var = 1.0;
67 
68  EXPECT_TRUE(grid3d.insertIndividualReading(
69  val, var, TPoint3D(2.0, 3.0, 1.0), im, false));
70 
72  grid3d.updateMapEstimation();
73 
74  {
75  const double map_value = grid3d.cellByPos(2.0, 3.0, 1.0)->mean_value;
76  EXPECT_NEAR(map_value, val, 1e-6);
77  }
78 
79  // Test after map enlarge:
80  grid3d.resize(
81  -5.0, 5.0, -1.0, 5.0, -1.0, 5.0, mrpt::maps::TRandomFieldVoxel(), .0);
82  {
83  const double map_value = grid3d.cellByPos(2.0, 3.0, 1.0)->mean_value;
84  EXPECT_NEAR(map_value, val, 1e-6);
85  }
86 }
bool GMRF_skip_variance
(Default:false) Skip the computation of the variance, just compute the mean
The contents of each voxel in a CRandomFieldGridMap3D map.
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) override
Changes the size of the grid, maintaining previous contents.
int val
Definition: mrpt_jpeglib.h:957
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...
T * cellByPos(coord_t x, coord_t y, coord_t z)
Returns a pointer to the contents of a voxel given by its coordinates, or nullptr if it is out of the...
CRandomFieldGridMap3D represents a 3D regular grid where each voxel is associated one real-valued pro...
TEST(CRandomFieldGridMap3D, insertCheckMapBounds)
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.
Definition: TPoint3D.h:90
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=nullptr) override
Changes the size of the grid, erasing previous contents.If resolution_z<0, the same resolution will b...



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