test_routing_map.h
Go to the documentation of this file.
1 #include <gtest/gtest.h>
3 #include <lanelet2_core/primitives/Point.h>
6 
7 #include <memory>
8 #include <utility>
9 
10 #include "RoutingCost.h"
13 
16 namespace lanelet {
17 namespace routing {
18 namespace tests {
19 
20 inline RoutingGraphPtr setUpGermanVehicleGraph(LaneletMap& map, double laneChangeCost = 2.,
21  double participantHeight = 2., double minLaneChangeLength = 0.) {
24  RoutingCostPtrs costPtrs{std::make_shared<RoutingCostDistance>(laneChangeCost, minLaneChangeLength),
25  std::make_shared<RoutingCostTravelTime>(laneChangeCost),
26  std::make_shared<RoutingCostDistance>(laneChangeCost, minLaneChangeLength)};
27  RoutingGraph::Configuration configuration;
28  configuration.insert(std::make_pair(RoutingGraph::ParticipantHeight, participantHeight));
29  return RoutingGraph::build(map, *trafficRules, costPtrs, configuration);
30 }
31 
32 inline RoutingGraphPtr setUpGermanPedestrianGraph(LaneletMap& map, double laneChangeCost = 2.) {
33  traffic_rules::TrafficRulesPtr trafficRules{
35  RoutingCostPtrs costPtrs{std::make_shared<RoutingCostDistance>(laneChangeCost)};
36  return RoutingGraph::build(map, *trafficRules, costPtrs);
37 }
38 
39 inline RoutingGraphPtr setUpGermanBicycleGraph(LaneletMap& map, double laneChangeCost = 2.) {
40  traffic_rules::TrafficRulesPtr trafficRules{
42  RoutingCostPtrs costPtrs{std::make_shared<RoutingCostDistance>(laneChangeCost)};
43  return RoutingGraph::build(map, *trafficRules, costPtrs);
44 }
45 
47  public:
49  initPoints();
51  initLanelets();
52  initAreas();
53  laneletMap = std::make_shared<LaneletMap>(lanelets, areas, std::unordered_map<Id, RegulatoryElementPtr>(),
54  std::unordered_map<Id, Polygon3d>(), lines, points);
58  }
59 
60  void addPoint(double x, double y, double z) {
61  pointId++;
62  points.insert(std::pair<Id, Point3d>(pointId, Point3d(pointId, x, y, z)));
63  }
64 
65  void addLine(const Points3d& points) {
66  lineId++;
67  lines.insert(std::pair<Id, LineString3d>(lineId, LineString3d(lineId, points)));
68  }
69 
71  laneletId++;
74  lanelets.insert(std::make_pair(laneletId, ll));
75  }
76 
78  laneletId++;
81  lanelets.insert(std::make_pair(laneletId, ll));
82  }
83 
84  void addAreaPedestrian(const LineStrings3d& outerBound) {
85  Area area(areaId, outerBound);
87  areas.emplace(areaId, area);
88  areaId++;
89  }
90 
91  Id pointId{0};
92  Id lineId{1000};
93  Id laneletId{2000};
94  Id areaId{3000};
95  std::unordered_map<Id, Lanelet> lanelets;
96  std::unordered_map<Id, Point3d> points;
97  std::unordered_map<Id, LineString3d> lines;
98  std::unordered_map<Id, Area> areas;
99  const double laneChangeCost{2.};
102 
103  private:
104  void initPoints() {
105  points.clear();
106  addPoint(0., 1., 0.); // p1
107  addPoint(1., 1., 0.);
108  addPoint(2., 1.5, 0.);
109  addPoint(0., 0., 0.);
110  addPoint(1., 0., 0.);
111  addPoint(2., 0.5, 0.);
112  addPoint(0., 2., 0.);
113  addPoint(1., 2., 0.);
114  addPoint(2., 2.5, 0.); // p9
115  addPoint(5., 3.5, 0.);
116  addPoint(5., 1.5, 0.); // p11
117  addPoint(7., 3.5, 0.);
118  addPoint(7., 1.5, 0.); // p13
119  addPoint(10., 5., 0.);
120  addPoint(10., 3., 0.);
121  addPoint(10., 1., 0.); // p16
122  addPoint(13., 7., 0.);
123  addPoint(13., 5., 0.);
124  addPoint(13., 3., 0.);
125  addPoint(13., 1., 0.); // p20
126  addPoint(15., 7., 0.);
127  addPoint(15., 5., 0.);
128  addPoint(15., 3., 0.);
129  addPoint(15., 1., 0.); // p24
130  addPoint(5., 14., 0.);
131  addPoint(5., 12., 0.);
132  addPoint(5., 10., 0.);
133  addPoint(7., 14., 0.);
134  addPoint(7., 12., 0.);
135  addPoint(7., 10., 0.);
136  addPoint(10., 13., 0.); // p31
137  addPoint(10., 11., 0.);
138  addPoint(12., 13., 0.);
139  addPoint(12., 11., 0.);
140  addPoint(15., 14., 0.);
141  addPoint(15., 12., 0.);
142  addPoint(15., 10., 0.);
143  addPoint(17., 14., 0.);
144  addPoint(17., 12., 0.);
145  addPoint(17., 10., 0.); // p40
146  addPoint(17., 8., 0.);
147  addPoint(19., 12., 0.);
148  addPoint(19., 10., 0.);
149  addPoint(19., 8., 0.); // p44
150  addPoint(21., 12., 0.);
151  addPoint(21., 10., 0.); // p46
152  addPoint(21., 8., 0.);
153  addPoint(23., 12., 0.); // p48
154  addPoint(23., 10., 0.); // p49
155  addPoint(23., 8., 0.); // p50
156  addPoint(10.5, 14., 0.); // p51
157  addPoint(11.5, 14., 0.); // p52
158  addPoint(10.5, 10., 0.); // p53
159  addPoint(11.5, 10., 0.); // p54
160  addPoint(3., 5., 3.); // p55
161  addPoint(4., 5., 3.); // p56
162  addPoint(3., -1., 3.); // p57
163  addPoint(4., -1., 3.); // p58
164  addPoint(26., 10., 0.); // p59
165  addPoint(28., 10., 0.); // p60
166  addPoint(30., 10., 0.); // p61
167  addPoint(25., 11., 0.); // p62
168  addPoint(26., 12., 0.); // p63
169  addPoint(28., 12., 0.); // p64
170  addPoint(30., 12., 0.); // p65
171  addPoint(25., 13., 0.); // p66
172  addPoint(28., 14., 0.); // p67
173  addPoint(30., 14., 0.); // p68
174  addPoint(32., 10., 0.); // p69
175  addPoint(33., 9., 0.); // p70
176  addPoint(32., 8., 0.); // p71
177  addPoint(33., 7., 0.); // p72
178  addPoint(28., 8., 0.); // p73
179  addPoint(30., 8., 0.); // p74
180  addPoint(35., 10., 0.); // p75
181  addPoint(35., 8., 0.); // p76
182  addPoint(35., 6., 0.); // p77
183  addPoint(37., 9., 0.); // p78
184  addPoint(37., 7., 0.); // p79
185  addPoint(37., 5., 0.); // p80
186  addPoint(38., 10., 0.); // p81
187  addPoint(38., 8., 0.); // p82
188  addPoint(41., 10., 0.); // p83
189  addPoint(41., 8., 0.); // p84
190  addPoint(41., 6., 0.); // p85
191  addPoint(43., 10., 0.); // p86
192  addPoint(43., 8., 0.); // p87
193 
194  // points around areas
195  pointId = 88;
196  addPoint(24, 4, 0); // p89
197  addPoint(26, 4, 0); // p90
198  addPoint(24, 2, 0); // p91
199  addPoint(26, 2, 0); // p92
200  addPoint(27, 5, 0); // p93
201  addPoint(28, 5, 0); // p94
202  addPoint(29, 4, 0); // p95
203  addPoint(29, 2, 0); // p96
204  addPoint(28, 1, 0); // p97
205  addPoint(27, 1, 0); // p98
206  addPoint(27, 0, 0); // p99
207  addPoint(28, 0, 0); // p100
208  addPoint(27, 6, 0); // p101
209  addPoint(28, 6, 0); // p102
210  addPoint(31, 4, 0); // p103
211  addPoint(33, 4, 0); // p104
212  addPoint(31, 2, 0); // p105
213  addPoint(33, 2, 0); // p106
214  addPoint(31, 0, 0); // p107
215 
216  // points on the conflicting and circular section
217  pointId = 119;
218  addPoint(33, 11, 0); // p120
219  addPoint(37, 16, 0); // p121
220  addPoint(37, 14, 0); // p122
221  addPoint(37, 12, 0); // p123
222  addPoint(41, 12, 0); // p124
223  addPoint(32, 16, 0); // p125
224  addPoint(34, 16, 0); // p126
225  addPoint(28, 18, 0); // p127
226  addPoint(28, 20, 0); // p128
227  addPoint(21, 14, 0); // p129
228  addPoint(23, 14, 0); // p130
229  addPoint(19, 14, 0); // p131
230  }
231 
233  lines.clear();
234  addLine(Points3d{points.at(1), points.at(2)}); // l1001
235  lines.at(1001).setAttribute(AttributeNamesString::LaneChange, true);
236  addLine(Points3d{points.at(4), points.at(5)});
237  addLine(Points3d{points.at(2), points.at(3)});
238  addLine(Points3d{points.at(5), points.at(6)});
239  addLine(Points3d{points.at(7), points.at(8)});
240  addLine(Points3d{points.at(8), points.at(9)}); // ls1006
241  addLine(Points3d{points.at(9), points.at(10)});
242  addLine(Points3d{points.at(3), points.at(11)});
244  addLine(Points3d{points.at(3), points.at(10)});
246  addLine(Points3d{points.at(6), points.at(11)}); // ls1010
247  addLine(Points3d{points.at(10), points.at(12)});
248  addLine(Points3d{points.at(11), points.at(13)}); // ls1012
249  addLine(Points3d{points.at(12), points.at(14)});
250  addLine(Points3d{points.at(12), points.at(15)});
251  addLine(Points3d{points.at(13), points.at(15)});
253  addLine(Points3d{points.at(13), points.at(16)}); // ls1016
254  addLine(Points3d{points.at(14), points.at(17)});
255  addLine(Points3d{points.at(14), points.at(18)});
256  addLine(Points3d{points.at(15), points.at(18)});
258  addLine(Points3d{points.at(15), points.at(19)});
259  lines.at(1020).setAttribute(AttributeNamesString::LaneChange, true);
260  addLine(Points3d{points.at(16), points.at(20)}); // ls1021
261  addLine(Points3d{points.at(17), points.at(21)});
262  addLine(Points3d{points.at(18), points.at(22)});
263  lines.at(1023).setAttribute(AttributeNamesString::LaneChange, true);
264  addLine(Points3d{points.at(19), points.at(23)});
265  lines.at(1024).setAttribute(AttributeNamesString::LaneChange, true);
266  addLine(Points3d{points.at(20), points.at(24)});
267  addLine(Points3d{points.at(25), points.at(28)}); // ls1026
268  addLine(Points3d{points.at(26), points.at(29)});
269  addLine(Points3d{points.at(27), points.at(30)});
270  addLine(Points3d{points.at(28), points.at(31)});
271  addLine(Points3d{points.at(29), points.at(31)}); // ls1030
273  addLine(Points3d{points.at(29), points.at(32)});
275  addLine(Points3d{points.at(30), points.at(32)});
276  addLine(Points3d{points.at(31), points.at(33)});
277  addLine(Points3d{points.at(32), points.at(34)});
278  addLine(Points3d{points.at(33), points.at(35)});
279  addLine(Points3d{points.at(33), points.at(36)});
281  addLine(Points3d{points.at(34), points.at(36)});
283  addLine(Points3d{points.at(34), points.at(37)});
284  addLine(Points3d{points.at(35), points.at(38)});
285  addLine(Points3d{points.at(36), points.at(39)});
286  addLine(Points3d{points.at(37), points.at(40)}); // ls1041
287  addLine(Points3d{points.at(39), points.at(42)});
288  addLine(Points3d{points.at(40), points.at(43)});
291  addLine(Points3d{points.at(41), points.at(44)}); // ls1044
292  addLine(Points3d{points.at(42), points.at(45)});
293  addLine(Points3d{points.at(43), points.at(46)}); // ls1046
294  addLine(Points3d{points.at(44), points.at(47)});
295  addLine(Points3d{points.at(45), points.at(48)});
296  addLine(Points3d{points.at(46), points.at(49)});
299  addLine(Points3d{points.at(47), points.at(50)}); // ls1050
300  addLine(Points3d{points.at(51), points.at(53)}); // ls1051
301  addLine(Points3d{points.at(52), points.at(54)}); // ls1052
302  addLine(Points3d{points.at(55), points.at(57)}); // ls1053
303  addLine(Points3d{points.at(56), points.at(58)}); // ls1054
304  addLine(Points3d{points.at(49), points.at(59)}); // ls1055
305  addLine(Points3d{points.at(59), points.at(60)}); // ls1056
306  addLine(Points3d{points.at(60), points.at(61)}); // ls1057
309  addLine(Points3d{points.at(49), points.at(62)}); // ls1058
311  addLine(Points3d{points.at(62), points.at(64)}); // ls1059
313  addLine(Points3d{points.at(48), points.at(63)}); // ls1060
315  addLine(Points3d{points.at(63), points.at(64)}); // ls1061
317  addLine(Points3d{points.at(64), points.at(65)}); // ls1062
318  lines.at(1062).setAttribute(AttributeNamesString::LaneChange, true);
319  addLine(Points3d{points.at(48), points.at(66)}); // ls1063
320  addLine(Points3d{points.at(66), points.at(67)}); // ls1064
321  addLine(Points3d{points.at(67), points.at(68)}); // ls1065
322  addLine(Points3d{points.at(61), points.at(69)}); // ls1066
323  addLine(Points3d{points.at(61), points.at(70)}); // ls1067
324  addLine(Points3d{points.at(74), points.at(71)}); // ls1068
325  addLine(Points3d{points.at(74), points.at(72)}); // ls1069
326  addLine(Points3d{points.at(73), points.at(74)}); // ls1070
327  addLine(Points3d{points.at(69), points.at(75)}); // ls1071
328  addLine(Points3d{points.at(70), points.at(76)}); // ls1072
329  addLine(Points3d{points.at(71), points.at(76)}); // ls1073
330  addLine(Points3d{points.at(72), points.at(77)}); // ls1074
331  addLine(Points3d{points.at(75), points.at(81)}); // ls1075
332  addLine(Points3d{points.at(76), points.at(78)}); // ls1076
333  addLine(Points3d{points.at(76), points.at(82)}); // ls1077
334  addLine(Points3d{points.at(77), points.at(79)}); // ls1078
335  addLine(Points3d{points.at(81), points.at(83)}); // ls1079
336  addLine(Points3d{points.at(78), points.at(83)}); // ls1080
337  addLine(Points3d{points.at(82), points.at(84)}); // ls1081
338  addLine(Points3d{points.at(79), points.at(84)}); // ls1082
341  addLine(Points3d{points.at(80), points.at(85)}); // ls1083
342  addLine(Points3d{points.at(83), points.at(86)}); // ls1084
343  addLine(Points3d{points.at(84), points.at(87)}); // ls1085
344 
345  // linestrings around areas
346  addLine({points.at(89), points.at(90)}); // ls1086
347  addLine({points.at(91), points.at(92)}); // ls1087
348  addLine({points.at(90), points.at(93)}); // ls1088
349  addLine({points.at(93), points.at(94)}); // ls1089
350  addLine({points.at(94), points.at(95)}); // ls1090
351  addLine({points.at(95), points.at(96)}); // ls1091
353  addLine({points.at(96), points.at(97)}); // ls1092
356  addLine({points.at(97), points.at(98)}); // ls1093
359  addLine({points.at(98), points.at(92)}); // ls1094
360  addLine({points.at(95), points.at(103)}); // ls1095
361  addLine({points.at(96), points.at(105)}); // ls1096
362  lines.at(1096).setAttribute(AttributeName::Type, AttributeValueString::Wall);
363  addLine({points.at(103), points.at(105)}); // ls1097
365  addLine({points.at(103), points.at(104)}); // ls1098
366  addLine({points.at(105), points.at(106)}); // ls1099
367  addLine({points.at(99), points.at(100)}); // ls1100
368  addLine({points.at(101), points.at(102)}); // ls1101
369  addLine({points.at(92), points.at(90)}); // ls1102
371  addLine({points.at(97), points.at(107)}); // ls1103
372  addLine({points.at(107), points.at(105)}); // ls1104
373 
374  // lines on the conflicting and circular section
375  lineId = 1199;
376  addLine({points.at(61), points.at(120)}); // ls1200
377  addLine({points.at(74), points.at(70)}); // ls1201
378  addLine({points.at(120), points.at(122)}); // ls1202
379  addLine({points.at(70), points.at(123)}); // ls1203
380  addLine({points.at(121), points.at(124)}); // ls1204
381  addLine({points.at(122), points.at(83)}); // ls1205
382  addLine({points.at(123), points.at(84)}); // ls1206
383  addLine({points.at(68), points.at(125)}); // ls1207
384  addLine({points.at(65), points.at(126)}); // ls1208
385  addLine({points.at(125), points.at(127)}); // ls1209
386  addLine({points.at(126), points.at(128)}); // ls1210
387  addLine({points.at(127), points.at(130)}); // ls1211
388  addLine({points.at(128), points.at(129)}); // ls1212
389  addLine({points.at(130), points.at(48)}); // ls1213
390  addLine({points.at(129), points.at(49)}); // ls1214
391  addLine({points.at(129), points.at(131)}); // ls1215
392  addLine({points.at(130), points.at(42)}); // ls1216
395  }
396  void initLanelets() {
397  lanelets.clear();
398  addLaneletVehicle(lines.at(1001), lines.at(1002)); // ll2001
399  addLaneletVehicle(lines.at(1003), lines.at(1004));
400  addLaneletVehicle(lines.at(1005), lines.at(1001));
401  addLaneletVehicle(lines.at(1006), lines.at(1003)); // ll2004
402  addLaneletVehicle(lines.at(1007), lines.at(1008));
403  addLaneletVehicle(lines.at(1009), lines.at(1010)); // ll2006
404  addLaneletVehicle(lines.at(1011), lines.at(1012)); // ll2007
405  addLaneletVehicle(lines.at(1013), lines.at(1015)); // ll2008
406  addLaneletVehicle(lines.at(1014), lines.at(1016)); // ll2009
407  addLaneletVehicle(lines.at(1017), lines.at(1019)); // ll2010
408  addLaneletVehicle(lines.at(1018), lines.at(1020)); // ll2011
409  addLaneletVehicle(lines.at(1020), lines.at(1021)); // ll2012
410  addLaneletVehicle(lines.at(1022), lines.at(1023)); // ll2013
411  addLaneletVehicle(lines.at(1023), lines.at(1024)); // ll2014
412  addLaneletVehicle(lines.at(1024), lines.at(1025)); // ll2015
413  addLaneletVehicle(lines.at(1027).invert(), lines.at(1026).invert());
414  addLaneletVehicle(lines.at(1027), lines.at(1028));
415  addLaneletVehicle(lines.at(1031).invert(), lines.at(1029).invert());
416  addLaneletVehicle(lines.at(1030), lines.at(1032));
417  addLaneletVehicle(lines.at(1033), lines.at(1034));
418  lanelets.at(2020).setAttribute(AttributeName::OneWay, false);
419  addLaneletVehicle(lines.at(1037).invert(), lines.at(1035).invert());
420  addLaneletVehicle(lines.at(1036), lines.at(1038));
422  addLaneletVehicle(lines.at(1040).invert(), lines.at(1039).invert());
423  addLaneletVehicle(lines.at(1040), lines.at(1041)); // ll2024
424  addLaneletVehicle(lines.at(1042), lines.at(1043));
425  addLaneletVehicle(lines.at(1043), lines.at(1044));
426  addLaneletVehicle(lines.at(1045), lines.at(1046)); // ll2027
427  addLaneletVehicle(lines.at(1046), lines.at(1047));
428  addLaneletVehicle(lines.at(1048), lines.at(1049));
429  addLaneletVehicle(lines.at(1049), lines.at(1050)); // ll2030
430  addLaneletPedestrian(lines.at(1051), lines.at(1052)); // ll2031
431  addLaneletVehicle(lines.at(1053), lines.at(1054)); // ll2032
432  addLaneletVehicle(lines.at(1060), lines.at(1055)); // ll2033
433  addLaneletVehicle(lines.at(1061), lines.at(1056)); // ll2034
434  addLaneletVehicle(lines.at(1062), lines.at(1057)); // ll2035
435  addLaneletVehicle(lines.at(1063), lines.at(1058)); // ll2036
436  addLaneletVehicle(lines.at(1064), lines.at(1059)); // ll2037
437  addLaneletVehicle(lines.at(1065), lines.at(1062)); // ll2038
438  addLaneletVehicle(lines.at(1066), lines.at(1068)); // ll2039
439  addLaneletVehicle(lines.at(1067), lines.at(1069)); // ll2040
440  addLaneletVehicle(lines.at(1057), lines.at(1070)); // ll2041
441  addLaneletVehicle(lines.at(1071), lines.at(1073)); // ll2042
442  addLaneletVehicle(lines.at(1072), lines.at(1074)); // ll2043
443  addLaneletVehicle(lines.at(1075), lines.at(1077)); // ll2044
444  addLaneletVehicle(lines.at(1076), lines.at(1078)); // ll2045
445  addLaneletVehicle(lines.at(1079), lines.at(1081)); // ll2046
446  addLaneletVehicle(lines.at(1080), lines.at(1082)); // ll2047
447  addLaneletVehicle(lines.at(1082), lines.at(1083)); // ll2048
448  addLaneletVehicle(lines.at(1084), lines.at(1085)); // ll2049
449 
450  // area
451  addLaneletPedestrian(lines.at(1086), lines.at(1087)); // ll2050
452  lanelets.at(2050).setAttribute(AttributeName::OneWay, true);
453  addLaneletPedestrian(lines.at(1101), lines.at(1089)); // ll2051
454  addLaneletPedestrian(lines.at(1093).invert(), lines.at(1100)); // ll2052
455  lanelets.at(2052).setAttribute(AttributeName::OneWay, true);
456  addLaneletPedestrian(lines.at(1098), lines.at(1099)); // ll2053
457 
458  // lanelets on conflicting section
459  laneletId = 2059;
460  addLaneletVehicle(lines.at(1200), lines.at(1201)); // ll2060
461  addLaneletVehicle(lines.at(1202), lines.at(1203)); // ll2061
462  addLaneletVehicle(lines.at(1204), lines.at(1205)); // ll2062
463  addLaneletVehicle(lines.at(1205), lines.at(1206)); // ll2063
464  addLaneletVehicle(lines.at(1207), lines.at(1208)); // ll2064
465  addLaneletVehicle(lines.at(1209), lines.at(1210)); // ll2065
466  addLaneletVehicle(lines.at(1211), lines.at(1212)); // ll2066
467  addLaneletVehicle(lines.at(1213), lines.at(1214)); // ll2067
468  addLaneletVehicle(lines.at(1216), lines.at(1215)); // ll2068
469  }
470 
471  void initAreas() {
472  addAreaPedestrian({lines.at(1102), lines.at(1088), lines.at(1089), lines.at(1090), lines.at(1091), lines.at(1092),
473  lines.at(1093), lines.at(1094)}); // ar3000
474  addAreaPedestrian({lines.at(1095), lines.at(1097), lines.at(1096), lines.at(1091).invert()}); // ar3001
475  // addAreaPedestrian({lines.at(1096).invert(), lines.at(1092), lines.at(1103), lines.at(1104)}); // ar3002
477  {lines.at(1096), lines.at(1104).invert(), lines.at(1103).invert(), lines.at(1092).invert()}); // ar3002
479  }
480 };
481 
482 namespace { // NOLINT
483 static RoutingGraphTestData testData; // NOLINT
484 } // namespace
485 
486 class RoutingGraphTest : public ::testing::Test {
487  public:
488  const std::unordered_map<Id, Lanelet>& lanelets{testData.lanelets};
489  const std::unordered_map<Id, Area>& areas{testData.areas};
490  const std::unordered_map<Id, Point3d>& points{testData.points};
491  const std::unordered_map<Id, LineString3d>& lines{testData.lines};
492  const LaneletMapConstPtr laneletMap{testData.laneletMap};
493 };
494 
496  protected:
497  GermanVehicleGraph() { EXPECT_NO_THROW(graph->checkValidity()); } // NOLINT
498 
499  public:
500  RoutingGraphConstPtr graph{testData.vehicleGraph};
501  uint8_t numCostModules{3};
502 };
503 
505  protected:
506  GermanPedestrianGraph() { EXPECT_NO_THROW(graph->checkValidity()); } // NOLINT
507 
508  public:
509  RoutingGraphConstPtr graph{testData.pedestrianGraph};
510  uint8_t numCostModules{2};
511 };
512 
514  protected:
515  GermanBicycleGraph() { EXPECT_NO_THROW(graph->checkValidity()); } // NOLINT
516 
517  public:
518  RoutingGraphConstPtr graph{testData.bicycleGraph};
519  uint8_t numCostModules{2};
520 };
521 
522 template <typename T>
523 class AllGraphsTest : public T {};
524 
525 using AllGraphs = testing::Types<GermanVehicleGraph, GermanPedestrianGraph, GermanBicycleGraph>;
526 
527 #ifndef TYPED_TEST_SUITE
528 // backwards compability with old gtest versions
529 #define TYPED_TEST_SUITE TYPED_TEST_CASE
530 #endif
531 
532 TYPED_TEST_SUITE(AllGraphsTest, AllGraphs);
533 } // namespace tests
534 } // namespace routing
535 } // namespace lanelet
lanelet::routing::tests::RoutingGraphTest::areas
const std::unordered_map< Id, Area > & areas
Definition: test_routing_map.h:489
lanelet::LineStrings3d
std::vector< LineString3d > LineStrings3d
lanelet::routing::tests::RoutingGraphTestData::vehicleGraph
RoutingGraphPtr vehicleGraph
Definition: test_routing_map.h:100
lanelet::routing::tests::RoutingGraphTest::lanelets
const std::unordered_map< Id, Lanelet > & lanelets
Definition: test_routing_map.h:488
RoutingGraph.h
lanelet::routing::tests::RoutingGraphTest
Definition: test_routing_map.h:486
LaneletMap.h
lanelet::LaneletMapPtr
std::shared_ptr< LaneletMap > LaneletMapPtr
lanelet::routing::tests::RoutingGraphTestData::addPoint
void addPoint(double x, double y, double z)
Definition: test_routing_map.h:60
lanelet
lanelet::AttributeNamesString::LaneChange
static constexpr const char LaneChange[]
lanelet::routing::RoutingGraph::ParticipantHeight
static constexpr const char ParticipantHeight[]
Defined configuration attributes.
Definition: RoutingGraph.h:74
TrafficRulesFactory.h
lanelet::routing::RoutingCostPtrs
std::vector< RoutingCostPtr > RoutingCostPtrs
Definition: Forward.h:43
lanelet::routing::tests::GermanVehicleGraph::GermanVehicleGraph
GermanVehicleGraph()
Definition: test_routing_map.h:497
lanelet::routing::RoutingGraph::build
static RoutingGraphUPtr build(const LaneletMap &laneletMap, const traffic_rules::TrafficRules &trafficRules, const RoutingCostPtrs &routingCosts=defaultRoutingCosts(), const Configuration &config=Configuration())
Main constructor with optional configuration.
Definition: RoutingGraph.cpp:375
lanelet::routing::tests::GermanVehicleGraph::graph
RoutingGraphConstPtr graph
Definition: test_routing_map.h:500
lanelet::Participants::Pedestrian
static constexpr const char Pedestrian[]
lanelet::AttributeValueString::Highway
static constexpr const char Highway[]
lanelet::routing::tests::RoutingGraphTest::laneletMap
const LaneletMapConstPtr laneletMap
Definition: test_routing_map.h:492
lanelet::routing::tests::RoutingGraphTestData::initPoints
void initPoints()
Definition: test_routing_map.h:104
lanelet::AttributeName::OneWay
@ OneWay
lanelet::AttributeValueString::Low
static constexpr const char Low[]
lanelet::routing::tests::GermanPedestrianGraph
Definition: test_routing_map.h:504
lanelet::routing::tests::RoutingGraphTest::lines
const std::unordered_map< Id, LineString3d > & lines
Definition: test_routing_map.h:491
lanelet::routing::tests::GermanBicycleGraph::numCostModules
uint8_t numCostModules
Definition: test_routing_map.h:519
lanelet::routing::tests::AllGraphs
testing::Types< GermanVehicleGraph, GermanPedestrianGraph, GermanBicycleGraph > AllGraphs
Definition: test_routing_map.h:525
lanelet::AttributeValueString::LineThin
static constexpr const char LineThin[]
lanelet::Id
int64_t Id
lanelet::LaneletMapConstPtr
std::shared_ptr< const LaneletMap > LaneletMapConstPtr
right
BasicPolygon3d right
Definition: LaneletPath.cpp:99
lanelet::routing::tests::RoutingGraphTestData::addAreaPedestrian
void addAreaPedestrian(const LineStrings3d &outerBound)
Definition: test_routing_map.h:84
lanelet::routing::tests::AllGraphsTest
Definition: test_routing_map.h:523
lanelet::routing::tests::GermanVehicleGraph
Definition: test_routing_map.h:495
lanelet::routing::tests::RoutingGraphTestData::areas
std::unordered_map< Id, Area > areas
Definition: test_routing_map.h:98
lanelet::Area
lanelet::routing::tests::setUpGermanPedestrianGraph
RoutingGraphPtr setUpGermanPedestrianGraph(LaneletMap &map, double laneChangeCost=2.)
Definition: test_routing_map.h:32
lanelet::AttributeValueString::Walkway
static constexpr const char Walkway[]
lanelet::routing::tests::setUpGermanVehicleGraph
RoutingGraphPtr setUpGermanVehicleGraph(LaneletMap &map, double laneChangeCost=2., double participantHeight=2., double minLaneChangeLength=0.)
Definition: test_routing_map.h:20
lanelet::routing::tests::RoutingGraphTestData::areaId
Id areaId
Definition: test_routing_map.h:94
lanelet::routing::tests::RoutingGraphTestData::bicycleGraph
RoutingGraphPtr bicycleGraph
Definition: test_routing_map.h:100
lanelet::LaneletMap
GermanTrafficRules.h
lanelet::routing::tests::RoutingGraphTestData::lanelets
std::unordered_map< Id, Lanelet > lanelets
Definition: test_routing_map.h:95
lanelet::AttributeValueString::Virtual
static constexpr const char Virtual[]
lanelet::AttributeValueString::Wall
static constexpr const char Wall[]
lanelet::Lanelet
lanelet::AttributeName::Type
@ Type
lanelet::AttributeNamesString::Subtype
static constexpr const char Subtype[]
lanelet::routing::tests::RoutingGraphTest::points
const std::unordered_map< Id, Point3d > & points
Definition: test_routing_map.h:490
lanelet::AttributeValueString::Crosswalk
static constexpr const char Crosswalk[]
lanelet::Locations::Germany
static constexpr char Germany[]
lanelet::Points3d
std::vector< Point3d > Points3d
lanelet::routing::RoutingGraphPtr
std::shared_ptr< RoutingGraph > RoutingGraphPtr
Definition: Forward.h:25
lanelet::AttributeValueString::DashedSolid
static constexpr const char DashedSolid[]
lanelet::routing::tests::setUpGermanBicycleGraph
RoutingGraphPtr setUpGermanBicycleGraph(LaneletMap &map, double laneChangeCost=2.)
Definition: test_routing_map.h:39
lanelet::routing::tests::RoutingGraphTestData::addLaneletVehicle
void addLaneletVehicle(const LineString3d &left, const LineString3d &right)
Definition: test_routing_map.h:70
lanelet::routing::tests::GermanVehicleGraph::numCostModules
uint8_t numCostModules
Definition: test_routing_map.h:501
lanelet::AttributeValueString::Solid
static constexpr const char Solid[]
lanelet::routing::tests::RoutingGraphTestData::laneletId
Id laneletId
Definition: test_routing_map.h:93
lanelet::routing::tests::RoutingGraphTestData::laneletMap
LaneletMapPtr laneletMap
Definition: test_routing_map.h:101
lanelet::routing::tests::RoutingGraphTestData::initLanelets
void initLanelets()
Definition: test_routing_map.h:396
lanelet::AttributeValueString::Curbstone
static constexpr const char Curbstone[]
lanelet::routing::tests::RoutingGraphTestData::pedestrianGraph
RoutingGraphPtr pedestrianGraph
Definition: test_routing_map.h:100
lanelet::routing::tests::GermanPedestrianGraph::numCostModules
uint8_t numCostModules
Definition: test_routing_map.h:510
lanelet::routing::tests::GermanBicycleGraph
Definition: test_routing_map.h:513
lanelet::AttributeValueString::SolidDashed
static constexpr const char SolidDashed[]
lanelet::routing::tests::TYPED_TEST_SUITE
TYPED_TEST_SUITE(AllGraphsTest, AllGraphs)
lanelet::Point3d
lanelet::routing::tests::RoutingGraphTestData::RoutingGraphTestData
RoutingGraphTestData()
Definition: test_routing_map.h:48
left
BasicPolygon3d left
Definition: LaneletPath.cpp:98
lanelet::Participants::Bicycle
static constexpr const char Bicycle[]
lanelet::Participants::Vehicle
static constexpr const char Vehicle[]
lanelet::routing::tests::RoutingGraphTestData::initAreas
void initAreas()
Definition: test_routing_map.h:471
lanelet::routing::tests::RoutingGraphTestData::laneChangeCost
const double laneChangeCost
Definition: test_routing_map.h:99
lanelet::AttributeValueString::Road
static constexpr const char Road[]
lanelet::traffic_rules::TrafficRulesFactory::create
static TrafficRulesUPtr create(const std::string &location, const std::string &participant, TrafficRules::Configuration configuration=TrafficRules::Configuration())
lanelet::routing::tests::GermanBicycleGraph::GermanBicycleGraph
GermanBicycleGraph()
Definition: test_routing_map.h:515
lanelet::routing::tests::RoutingGraphTestData::pointId
Id pointId
Definition: test_routing_map.h:91
lanelet::traffic_rules::TrafficRules::Configuration
std::map< std::string, Attribute > Configuration
lanelet::AttributeValueString::Dashed
static constexpr const char Dashed[]
lanelet::routing::tests::RoutingGraphTestData::addLine
void addLine(const Points3d &points)
Definition: test_routing_map.h:65
RoutingCost.h
lanelet::routing::RoutingGraph::Configuration
std::map< std::string, Attribute > Configuration
Definition: RoutingGraph.h:72
lanelet::routing::RoutingGraphConstPtr
std::shared_ptr< const RoutingGraph > RoutingGraphConstPtr
Definition: Forward.h:27
Primitive< ConstArea >::setAttribute
void setAttribute(AttributeName name, const Attribute &attribute)
lanelet::routing::tests::GermanPedestrianGraph::graph
RoutingGraphConstPtr graph
Definition: test_routing_map.h:509
lanelet::routing::tests::RoutingGraphTestData::lineId
Id lineId
Definition: test_routing_map.h:92
Forward.h
lanelet::routing::tests::RoutingGraphTestData::lines
std::unordered_map< Id, LineString3d > lines
Definition: test_routing_map.h:97
lanelet::routing::tests::RoutingGraphTestData::points
std::unordered_map< Id, Point3d > points
Definition: test_routing_map.h:96
lanelet::routing::tests::RoutingGraphTestData
Definition: test_routing_map.h:46
lanelet::LineString3d
lanelet::routing::tests::RoutingGraphTestData::addLaneletPedestrian
void addLaneletPedestrian(const LineString3d &left, const LineString3d &right)
Definition: test_routing_map.h:77
lanelet::AttributeName::Subtype
@ Subtype
lanelet::routing::tests::RoutingGraphTestData::initLineStrings
void initLineStrings()
Definition: test_routing_map.h:232
ll
LaneletAdjacency ll
Definition: LaneletPath.cpp:88
lanelet::routing::tests::GermanBicycleGraph::graph
RoutingGraphConstPtr graph
Definition: test_routing_map.h:518
lanelet::routing::tests::GermanPedestrianGraph::GermanPedestrianGraph
GermanPedestrianGraph()
Definition: test_routing_map.h:506
lanelet::traffic_rules::TrafficRulesPtr
std::shared_ptr< TrafficRules > TrafficRulesPtr


lanelet2_routing
Author(s): Matthias Mayr
autogenerated on Thu Mar 6 2025 03:26:10