-
Notifications
You must be signed in to change notification settings - Fork 0
/
osi_lane.proto
796 lines (735 loc) · 24.8 KB
/
osi_lane.proto
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
syntax = "proto2";
option optimize_for = SPEED;
import "osi_common.proto";
package osi3;
//
// \brief A lane in the road network.
//
// A lane is part of a road and mainly characterized by its center line. It also
// knows about any adjacent lanes, antecessor and successor lanes.
// The following images will be referred to by later comments. The lane
// l4 in image HighwayExit is used as reference if not mentioned otherwise.
//
// <table border=0>
// <tr>
// <td>
// \image html OSI_Highway_Exit.svg "" width=550px
// <td>
// \image html OSI_LaneIntersection.svg "" width=550px
// <tr>
// <td>
// \image html OSI_Highway_Exit.jpg "HighwayExit" width=650px
// <td>
// \image html OSI_LaneIntersection.jpg "Intersection" width=650px
// </table>
//
// \note In the examples, the symbols l1, l2, ... and lb1, lb2, ...
// stand for the lane ids and lane boundary ids respectively, i.e. for
// integers (uint64). The symbols cl1, cl2, ... represent the
// osi3::Lane::Classification::centerline elements of the lanes with
// the respective ids.
//
message Lane
{
// The ID of the lane.
// Example: l4 (see reference picture HighwayExit).
//
// \note Note ID is global unique.
//
optional Identifier id = 1;
// The classification of the lane.
//
optional Classification classification = 2;
//
// \brief \c Classification of a lane.
//
// <table border = 0>
// <tr>
// <td>
// \anchor HighwayExit
// \image html OSI_LaneClassification.jpg "HighwayExit" width=800px
// </td>
// <td>
// <table border=0>
// <tr>
// <td>
// <b>
// \c Classification for lane l4 in image HighwayExit:
// </b>
// <tr>
// <td>
// \c #type = \c #TYPE_DRIVING
// <tr>
// <td>
// \c #centerline = (cl4_1, cl4_2, cl4_3, cl4_4, cl4_5)
// <tr>
// <td>
// \c #centerline_is_driving_direction = \c true
// <tr>
// <td>
// \c #is_host_vehicle_lane = \c true
// <tr>
// <td>
// \c #left_adjacent_lane_id = l3
// <tr>
// <td>
// \c #right_adjacent_lane_id = (l5,l6)
// <tr>
// <td>
// \c #left_lane_boundary_id = lb5
// <tr>
// <td>
// \c #right_lane_boundary_id = (lb9, lb6)
// </table>
// </td>
// </tr>
// <tr>
// <td>
// \anchor Intersection
// \image html OSI_LaneIntersection.jpg "Intersection" width=800px
// </td>
// <td>
// <table border=0>
// <tr>
// <td>
// <b>
// \c Classification for lane l7 in image Intersection:
// </b>
// </td>
// </tr>
// <tr>
// <td>
// \c #type = \c #TYPE_INTERSECTION
// </td>
// </tr>
// <tr>
// <td>
// \c #is_host_vehicle_lane = \c false
// </td>
// </tr>
// <tr>
// <td>
// \c #free_lane_boundary_id = lb11
// </td>
// </tr>
// <tr>
// <td>
// <border = 0>
// <tr>
// <td>
// \c #lane_pairing = (
// <td>
// (l2,l1), (l2,l3), (l2,l5),
// <tr>
// <td>
// <td>
// (l4,l1), (l4,l3), (l4,l5),
// <tr>
// <td>
// <td>
// (l6,l1), (l6,l3), (l6,l5) )
// </table>
// </td>
// </tr>
// </table>
// </td>
// </tr>
// </table>
//
// \note In the examples, the symbols l1, l2, ... and lb1, lb2, ...
// stand for the lane ids and lane boundary ids respectively, i.e. for
// integers (uint64). The symbols cl1, cl2, ... represent the
// osi3::Lane::Classification::centerline elements of the lanes with
// the respective ids. The symbols cl1_1, cl1_2, ... stand for
// \c #osi3::Vector3d elements.
//
message Classification
{
// The type of the lane.
//
// Example: For l4 in image \ref HighwayExit the \c #type is \c
// #TYPE_DRIVING.
//
optional Type type = 1;
// Indicates that the host vehicle travels on this particular lane.
// The host vehicle may travel on more than one lane at once. This does
// also apply for the \c CanditateLane in the \c DetectedLane .
//
optional bool is_host_vehicle_lane = 2;
// The lane's center line (as a list of segments).
//
// The centerline describes the middle of the lane.
//
// \image html OSI_LaneCenterline.svg "Centerline" width=500px
//
// Example: In image \ref HighwayExit,
// the centerline of lane l4 (black line) is given by
// (cl4_1, cl4_2, cl4_3, cl4_4, cl4_5).
//
// \attention The points describing the center line might be set at
// arbitrary distances. When the points are pairwise linearly connected,
// the lateral distance to the real ideal line (as used by the
// simulation environment internally) must not exceed 5cm. As shown in
// the following image:
//
// \image html line_approximation_error.svg "Approximation error"
// Approximation error green line.
//
// \note The center line is the line that a typical vehicle follows more
// or less (depending on the situation, a little more to the left or
// right of the center line). The intended direction of travel on the
// lane is given by the direction defined by the sequence of points
// forming the \c #centerline w.r.t. \c
// #centerline_is_driving_direction.
//
// \note The \c #centerline is defined only for \c #type =
// \c #TYPE_DRIVING and if exactly one or no \c #lane_pairing pair
// exists.
//
// \note Intersections and non-driving lanes do not have a center line.
// A vehicle must calculate this individually and depending on the
// situation.
//
repeated Vector3d centerline = 3;
// Definition of the intended driving direction.
//
// Defined and used for driving lanes.
// \c true means driving direction is according to ascending storage
// order of center line points. \c false means driving direction is
// according to descending storage order of center line points.
//
// Example: \c #centerline_is_driving_direction = \c true for lane l4
// and \c #centerline_is_driving_direction = \c false for lane l2 in
// image \ref HighwayExit .
//
// \note The \c #centerline_is_driving_direction is defined for \c #type
// = \c #TYPE_DRIVING .
//
optional bool centerline_is_driving_direction = 4;
// List of IDs of all lane segments that are directly adjacent to the
// lane on the left side (w.r.t. intended driving direction). Note that
// lengths of lane segments are not synchronized and therefore there are
// multiple adjacent segments if there is a split/merge point in the
// adjacent lane.
//
// Example: The lane l3 is the only left adjacent lane for lane l4
// in image \ref HighwayExit.
//
// \note The \c #left_adjacent_lane_id is undefined for \c #type =
// \c #TYPE_INTERSECTION .
//
// \note OSI uses singular instead of plural for repeated field names.
//
repeated Identifier left_adjacent_lane_id = 5;
// List of IDs of all lane segments that are directly adjacent to the
// lane on the right side (w.r.t. intended driving direction). Note that
// lengths of lane segments are not synchronized and therefore there are
// multiple adjacent segments if there is a split/merge point in the
// adjacent lane.
//
// Example: \c #right_adjacent_lane_id = (l5, l6)
// for lane l4 in image \ref HighwayExit.
//
// \note The \c #right_adjacent_lane_id is undefined for \c #type =
// \c #TYPE_INTERSECTION .
//
// \note OSI uses singular instead of plural for repeated field names.
//
repeated Identifier right_adjacent_lane_id = 6;
// The antecessor/successor lane pairings of this lane. There can be
// multiple pairings with the same antecessor and different successor
// lanes and vice versa. The antecessor lanes end in the same point that
// this lane starts from. The successor lanes start in the same point
// that this lane ends in.
//
// Example: See image \ref Intersection.
//
// \note OSI uses singular instead of plural for repeated field names.
//
repeated LanePairing lane_pairing = 7;
// The right adjacent lane boundaries \c #right_lane_boundary_id may
// only be shared with/as the left adjacent lane boundaries \c
// #left_lane_boundary_id of the nearest right adjacent lane \c
// #right_adjacent_lane_id.
//
// Example: \c #right_lane_boundary_id =
// (lb9, lb6) for reference lane l4 in image \ref HighwayExit.
//
// \note Empty for intersections.
//
// \note The \c #right_lane_boundary_id is undefined for \c #type =
// \c #TYPE_INTERSECTION .
//
// \note OSI uses singular instead of plural for repeated field names.
//
repeated Identifier right_lane_boundary_id = 8;
// The left adjacent lane boundaries \c #left_lane_boundary_id may only
// be shared with/as the right adjacent lane boundaries \c
// #right_lane_boundary_id of the nearest left adjacent lane \c
// #left_adjacent_lane_id.
//
// Example: \c #left_lane_boundary_id = lb5 for lane l4 in image \ref
// HighwayExit.
//
// \note Empty for intersections.
//
// \note The \c #left_lane_boundary_id is undefined for \c #type =
// \c #TYPE_INTERSECTION .
//
// \note OSI uses singular instead of plural for repeated field names.
//
repeated Identifier left_lane_boundary_id = 9;
// The free boundaries which have no/unknown assignment to left/right.
//
// Example: \c #free_lane_boundary_id = lb11 for lane l7 in image \ref
// Intersection.
//
// \note \c Lane with \c #type = \c #TYPE_INTERSECTION use only free
// lane boundaries.
//
// \note OSI uses singular instead of plural for repeated field names.
//
repeated Identifier free_lane_boundary_id = 10;
// The condition of the lane, e.g. influenced by weather.
//
optional RoadCondition road_condition = 11;
// Definition of available lane types.
//
enum Type
{
// Lane of unknown type (must not be used in ground truth).
//
TYPE_UNKNOWN = 0;
// Any other type of lane.
//
TYPE_OTHER = 1;
// A normal lane.
// Example: Lanes with IDs l1, l2, l3, l4 and l6 in image \ref
// HighwayExit.
//
TYPE_DRIVING = 2;
// A road where driving is normally not permitted.
// Example: Lane with ID l5 in image \ref HighwayExit.
//
TYPE_NONDRIVING = 3;
// An intersection as a lane.
// Example: Lane with ID l7 in image \ref Intersection.
//
// \image html OSI_X-Junction.svg "" width=600px
//
TYPE_INTERSECTION = 4;
}
//
// \brief The condition of the road surface.
//
message RoadCondition
{
// The temperature of the roads surface in Kelvin.
//
// Unit: [K]
//
optional double surface_temperature = 1;
// The height of the water film on top of the surface in mm.
//
// Unit: [mm]
//
optional double surface_water_film = 2;
// The temperature where the water on top of the surface would start
// to freeze or dew in Kelvin.
//
// Unit: [K]
//
optional double surface_freezing_point = 3;
// The percentage of ice covering the road.
//
// Unit: [%]
//
optional double surface_ice = 4;
// The coefficient representing the roughness or unevenness of the
// road. International Roughness Index (IRI) [1] values range from 0
// = smooth ground (equivalent to driving on a plate of glass) up to
// >
// 20 mm/m (a very rough road).
//
// Estimated value ranges (IRI):
// 0.0 [mm/m] absolutely perfect evenness
// 0.3 - 1.8 [mm/m] airport runways and superhighways
// 1.4 - 3.4 [mm/m] new pavements
// 2.2 - 5.7 [mm/m] older pavements
// 3.2 - 9.8 [mm/m] maintained unpaved roads
// 4.0 - 11.0 [mm/m] damaged pavements
// 8.0 - >
// 20 [mm/m] rough unpaved roads
//
// Speed of normal use (IRI):
// 30 [km/h] - 20 [mm/m]
// 50 [km/h] - 14.5 [mm/m]
// 60 [km/h] - 10.0 [mm/m]
// 80 [km/h] - 8.5 [mm/m]
// 100 [km/h] - 3.4 [mm/m]
//
// Road conditions (IRI);
// 15 [mm/m] erosion gulleys and deep depressions
// 11 [mm/m] frequent shallow depressions, some deep
// 9 [mm/m] frequent minor depressions
// 5 [mm/m] surface imperfections
//
// Unit: [mm/m]
//
// \par References:
// - [1] SAYERS, M.W.; KARAMIHAS, S.M. Little Book of Profiling,
// University of Michigan Transportation Research Institute, 1998.
//
optional double surface_roughness = 5;
// The surface texture or fine roughness
//
// Whereas the IRI-based roughness or unevenness measure only takes
// into account road wavelengths around 0.5m - 100m, the surface
// texture or fine roughness [2] measures only wavelengths below
// 0.5m. It is given as the standard height deviation of fine
// roughness
//
// Unit: [m]
//
// \par References:
// - [1] SAYERS, M.W.; KARAMIHAS, S.M. Little Book of Profiling,
// University of Michigan Transportation Research Institute, 1998.
// - [2] SCHNEIDER, R.: Modellierung der Wellenausbreitung fuer
// ein bildgebendes Kfz-Radar, Dissertation, Universitaet Karlsruhe,
// Mai 1998.
//
optional double surface_texture = 6;
}
// \brief The lane ID pairings of antecessor and successor lanes.
//
// <table border = 0>
// <tr>
// <td>
// \image html OSI_LaneIntersection.svg "" width=600px
// </td>
// <td>
// <table border=0>
// <tr>
// <td>
// <b>
// \c LanePairing for lane l7:
// </b>
// </td>
// </tr>
// <tr>
// <td>
// <table border = 0>
// <tr>
// <td>
// (l2,l1), (l2,l3), (l2,l5),
// <tr>
// <td>
// (l4,l1), (l4,l3), (l4,l5),
// <tr>
// <td>
// (l6,l1), (l6,l3), (l6,l5)
// </table>
// </td>
// </tr>
// </table>
// </td>
// </tr>
// </table>
//
// \note In the example, the symbols l1, l2, ... stand for the
// respective lane ids, i.e. for integers (uint64). The symbols cl1,
// cl2, ... represent the osi3::Lane::Classification::centerline
// elements of the lanes with the respective ids.
//
message LanePairing
{
// The antecessor lane ID.
//
optional Identifier antecessor_lane_id = 1;
// The successor lane ID.
//
optional Identifier successor_lane_id = 2;
}
}
}
//
// \brief A lane boundary defining the border of a lane.
//
// The left and right lane boundary define the width of the lane. Additionally,
// free markings can be defined, e.g. at construction sites. Free markings
// across multiple lanes may be defined multiple times for all affected lanes.
//
// \image html OSI_LaneBoundary.svg "LaneBoundary" width=800px
//
// \note In the example, the symbols l1, l2, ... and lb1, lb2, ...
// stand for the lane ids and lane boundary ids respectively, i.e. for
// integers (uint64). The symbols bp2_{i+1}, bp2_{i}, bp2_{i-1} stand
// for \c #osi3::LaneBoundary::BoundaryPoint elements.
//
message LaneBoundary
{
// The ID of the lane boundary.
//
optional Identifier id = 1;
// The list of individual points defining the location of the lane boundary
// (as a list of segments).
//
// Since a \c BoundaryPoint is part of a sequence, only the position
// attribute has to be set for each instance. All other values will be
// reused from the previous \c BoundaryPoint in the sequence or set to
// default values if there is none or it was never set.
//
// \image html OSI_LaneBoundary.svg "" width=800px
//
// Example: The boundary_line of the \c LaneBoundary with id lb2 is given by
// (bp2_1, ..., bp2_{i-1}, bp2_{i}, bp2_{i+1}, ...).
//
// \note For dashed lines, one \c BoundaryPoint has to be at the start and
// another at the end of each dashed line segment. The first
// \c BoundaryPoint defines the beginning of the first dashed lane marking.
// The last \c BoundaryPoint defines the end of the last dashed lane
// marking. For example, the area between the second and third
// \c BoundaryPoint has no lane marking, and so on.
// \note For Botts' dots lines, one \c BoundaryPoint position has to define
// each Botts' dot.
//
// \attention For \c BoundaryPoint the same rule for the approximation
// error applies as for \c Lane::Classification::centerline.
//
repeated BoundaryPoint boundary_line = 2;
// The classification of the lane boundary.
//
optional Classification classification = 3;
//
// \brief A single point of a lane boundary.
//
// \image html OSI_LaneBoundary.svg "" width=800px
//
// The lane boundary point bp2_{i} is one of the points of lane boundary
// lb2.
//
// \note In the example, the symbols l1, l2, ... and lb1, lb2, ...
// stand for the lane ids and lane boundary ids respectively, i.e. for
// integers (uint64). The symbols bp2_{i+1}, bp2_{i}, bp2_{i-1} stand
// for \c #osi3::LaneBoundary::BoundaryPoint elements.
//
message BoundaryPoint
{
// The position of the \c BoundaryPoint.
//
optional Vector3d position = 1;
// The overall width of the lane boundary at the position of the
// \c BoundaryPoint .
// Used for lines forming lane markings.
//
// \image html OSI_LaneBoundaryWidth.svg "" width=600px
//
// \note Field need not be set if it is defined previous.
// See \c LaneBoundary.
//
optional double width = 2;
// The overall height of the lane boundary at the position of the
// \c BoundaryPoint .
// Used for guard rails, curbstone, or similar.
//
// \image html OSI_LaneBoundaryHeight.svg "" width=600px
//
// \note Field need not be set if it is previously defined.
// See \c LaneBoundary .
//
optional double height = 3;
}
//
// \brief \c Classification of a lane boundary.
//
// <table border = 0>
// <tr>
// <td>
// <table border=0>
// <tr>
// <td>
// <b>
// Image Intersection
// </b>
// <tr>
// <td>
// <tr>
// <td>
// \c Classification for lane boundaries lb2 and lb9:
// </td>
// </tr>
// <tr>
// <td>
// <table border = 0>
// <tr>
// <td>
// \c #type = #TYPE_DASHED_LINE
// <tr>
// <td>
// \c #color = #COLOR_WHITE
// <tr>
// </table>
// </td>
// </tr>
// <tr>
// <td>
// \c Classification for lane boundaries lb1, lb3, lb4, lb7, lb8, lb10,
// lb11, lb12 and lb14:
// </td>
// </tr>
// <tr>
// <td>
// <table border = 0>
// <tr>
// <td>
// \c #type = #TYPE_SOLID_LINE
// <tr>
// <td>
// \c #color = #COLOR_WHITE
// <tr>
// </table>
// </td>
// </tr>
// <tr>
// <td>
// \c Classification for lane boundaries lb5, lb6 and lb13:
// </td>
// </tr>
// <tr>
// <td>
// <table border = 0>
// <tr>
// <td>
// \c #type = #TYPE_CURB
// </table>
// </td>
// </tr>
// </table>
// </td>
// <td>
// <table border=0>
// <tr>
// <td>
// \image html OSI_LaneIntersection.svg "" width=500px
// </td>
// <tr>
// <td>
// \image html OSI_LaneBoundaryClassification.jpg "" width=600px
// </td>
// </table>
// </td>
// </tr>
// </table>
//
// \note In the example, the symbols l1, l2, ... and lb1, lb2, ...
// stand for the lane ids and lane boundary ids respectively, i.e. for
// integers (uint64). The symbols cl1, cl2, ... represent the
// osi3::Lane::Classification::centerline elements of the lanes with
// the respective ids.
//
message Classification
{
// The type of the lane boundary.
//
optional Type type = 1;
// The color of the lane boundary in case of lane markings.
//
optional Color color = 2;
// The ids of \c StationaryObject which limit the corresponding lane.
// This field must be set if the \c #type is set to
// \c #TYPE_STRUCTURE
//
repeated Identifier limiting_structure_id = 3;
// The lane boundary type.
// There is no special representation for double lines, e.g. solid /
// solid or dashed / solid. In such cases, each lane will define its own
// side of the lane boundary.
//
enum Type
{
// The type of lane boundary is unknown. Value must not be used in
// ground truth.
//
TYPE_UNKNOWN = 0;
// Unspecified but known type of lane boundary.
// Consider proposing an additional type if using TYPE_OTHER.
//
TYPE_OTHER = 1;
// An invisible lane boundary (e.g. unmarked part of a dashed line).
//
TYPE_NO_LINE = 2;
// A solid line at the lane boundary.
//
TYPE_SOLID_LINE = 3;
// A dashed line at the lane boundary.
//
TYPE_DASHED_LINE = 4;
// A lane boundary consisting of Botts' dots (multiple Botts dots).
//
TYPE_BOTTS_DOTS = 5;
// A lane boundary formed by the road's edge.
// The road edge is the end of the (paved) road surface.
//
TYPE_ROAD_EDGE = 6;
// A lane boundary formed by a snow edge that may be on the road
// surface.
//
TYPE_SNOW_EDGE = 7;
// A lane boundary covered by grass.
//
TYPE_GRASS_EDGE = 8;
// A lane boundary covered by gravel.
//
TYPE_GRAVEL_EDGE = 9;
// A lane boundary covered by soil.
//
TYPE_SOIL_EDGE = 10;
// A guard rail.
//
TYPE_GUARD_RAIL = 11;
// A curb.
//
TYPE_CURB = 12;
// A structure (e.g. building or tunnel wall).
//
TYPE_STRUCTURE = 13;
}
// The color of the lane boundary in case of a lane markings.
// Lane markings that alternate in color must be represented by
// individual \c LaneBoundary segments.
//
enum Color
{
// Color of marking is unknown. Value must not be used in ground
// truth.
//
COLOR_UNKNOWN = 0;
// Other (unspecified but known) color.
//
COLOR_OTHER = 1;
// Marking without color. Used to represent logical boundaries
// without actual physical markings at the respective position.
// Value may be used in ground truth only.
//
COLOR_NONE = 2;
// Marking with white color.
//
COLOR_WHITE = 3;
// Marking with yellow / orange-yellow color.
//
COLOR_YELLOW = 4;
// Marking with red color
//
COLOR_RED = 5;
// Marking with blue color.
//
COLOR_BLUE = 6;
// Marking with green color;
//
COLOR_GREEN = 7;
// Marking with violet color.
//
COLOR_VIOLET = 8;
}
}
}