MCPcopy Create free account
hub / github.com/ANYbotics/grid_map / createGaussianWorld

Function createGaussianWorld

grid_map_core/test/test_helpers.cpp:124–167  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

122}
123
124AnalyticalFunctions createGaussianWorld(grid_map::GridMap *map)
125{
126
127 struct Gaussian
128 {
129 double x0, y0;
130 double varX, varY;
131 double s;
132 };
133
134 AnalyticalFunctions func;
135
136 std::uniform_real_distribution<double> var(0.1, 3.0);
137 std::uniform_real_distribution<double> mean(-4.0, 4.0);
138 std::uniform_real_distribution<double> scale(-3.0, 3.0);
139 constexpr int numGaussians = 3;
140 std::array<Gaussian, numGaussians> g;
141
142 for (int i = 0; i < numGaussians; ++i) {
143 g.at(i).x0 = mean(rndGenerator);
144 g.at(i).y0 = mean(rndGenerator);
145 g.at(i).varX = var(rndGenerator);
146 g.at(i).varY = var(rndGenerator);
147 g.at(i).s = scale(rndGenerator);
148 }
149
150 func.f_ = [g](double x,double y) {
151 double value = 0.0;
152 for (int i = 0; i < g.size(); ++i) {
153 const double x0 = g.at(i).x0;
154 const double y0 = g.at(i).y0;
155 const double varX = g.at(i).varX;
156 const double varY = g.at(i).varY;
157 const double s = g.at(i).s;
158 value += s * std::exp(-(x-x0)*(x-x0) / (2.0*varX) - (y-y0)*(y-y0) / (2.0 * varY));
159 }
160
161 return value;
162 };
163
164 fillGridMap(map, func);
165
166 return func;
167}
168
169void fillGridMap(grid_map::GridMap *map, const AnalyticalFunctions &functions)
170{

Callers 2

TESTFunction · 0.70
TESTFunction · 0.70

Calls 2

atMethod · 0.80
fillGridMapFunction · 0.70

Tested by

no test coverage detected