@@ -387,6 +387,102 @@ message LogicalLaneAssignment
387
387
optional double angle_to_lane = 4 ;
388
388
}
389
389
390
+ // \brief A bounding box description.
391
+ //
392
+ // A bounding box representing a sub-section of its parent's overall
393
+ // dimension, either that of a \c BaseMoving or \c BaseStationary .
394
+ //
395
+ // The parent frame of the \c BoundingBox is identical to the parent frame
396
+ // of the \c MovingObject or \c StationaryObject it is associated to. For
397
+ // example, if the parent object coordinates are given relative to the
398
+ // global coordinate system, then the \c BoundingBox coordinates are also
399
+ // given relative to the global coordinate system.
400
+ //
401
+ // \note The overall bounding box of the object is still defined using the
402
+ // dimension, position and orientation of the \c BaseMoving or
403
+ // \c BaseStationary .
404
+ //
405
+ message BoundingBox
406
+ {
407
+ // The 3D dimensions of the bounding box.
408
+ //
409
+ optional Dimension3d dimension = 1 ;
410
+
411
+ // The 3D position of the bounding box. The position is the center
412
+ // of the bounding box and the pivot for the \c dimension and \c orientation.
413
+ //
414
+ // \note The position should be within the same coordinate frame as
415
+ // its parent, not relative to coordinate frame of the parent object.
416
+ // The position becomes global/absolute if the parent frame is inertial
417
+ // (all parent frames up to ground truth).
418
+ //
419
+ optional Vector3d position = 2 ;
420
+
421
+ // The 3D orientation of the bounding box.
422
+ //
423
+ // \note The orientation should be within the same coordinate frame as
424
+ // its parent, not relative to the coordinate frame of the parent object.
425
+ // The orientation becomes global/absolute if the parent frame is inertial
426
+ // (all parent frames up to ground truth).
427
+ //
428
+ optional Orientation3d orientation = 3 ;
429
+
430
+ // The type of object contained in the bounding box.
431
+ //
432
+ optional Type contained_object_type = 4 ;
433
+
434
+ // Opaque reference of an associated 3D model of the bounding box.
435
+ //
436
+ // \note It is implementation-specific how model_references are resolved to
437
+ // 3d models. This means the coordinate system, model origin, and model
438
+ // orientation are also implementation-specific.
439
+ //
440
+ optional string model_reference = 5 ;
441
+
442
+ // Definition of different types of object contained within the bounding box
443
+ //
444
+ enum Type
445
+ {
446
+ // Object of unknown type (must not be used in ground truth).
447
+ //
448
+ TYPE_UNKNOWN = 0 ;
449
+
450
+ // Any other type of object.
451
+ //
452
+ TYPE_OTHER = 1 ;
453
+
454
+ // The main structure of an object, e.g. a chassis of a vehicle,
455
+ // or the central structure of a building, a tree trunk, etc.
456
+ //
457
+ TYPE_BASE_STRUCTURE = 2 ;
458
+
459
+ // A protruding, integral part of an object, which is not
460
+ // temporarily attached, e.g. a tree crown, a light pole arm, or a
461
+ // parking house gate. The protruding structure is meant to be an
462
+ // additional part to a base structure.
463
+ //
464
+ TYPE_PROTRUDING_STRUCTURE = 3 ;
465
+
466
+ // Additional, temporarily attached cargo to an object.
467
+ //
468
+ TYPE_CARGO = 4 ;
469
+
470
+ // The door of an object.
471
+ //
472
+ // For vehicles, this includes driver and passenger doors, trunk
473
+ // and front hoods, and fuel or charging port covers.
474
+ //
475
+ TYPE_DOOR = 5 ;
476
+
477
+ // The side mirror of a vehicle.
478
+ //
479
+ // \note The side mirror is not included in the overall bounding box
480
+ // of the parent object.
481
+ //
482
+ TYPE_SIDE_MIRROR = 6 ;
483
+ }
484
+ }
485
+
390
486
//
391
487
// \brief The base attributes of a stationary object or entity.
392
488
//
@@ -405,6 +501,9 @@ message BaseStationary
405
501
// The 3D dimensions of the stationary object (bounding box), e.g. a
406
502
// landmark.
407
503
//
504
+ // \note The \c #dimension must completely enclose the geometry of the
505
+ // \c BaseStationary .
506
+ //
408
507
optional Dimension3d dimension = 1 ;
409
508
410
509
// The reference point for position and orientation, i.e. the center (x,y,z)
@@ -447,6 +546,23 @@ message BaseStationary
447
546
// The polygon is defined counter-clockwise.
448
547
//
449
548
repeated Vector2d base_polygon = 4 ;
549
+
550
+ // Sub-divisions of the overall bounding box of the \c BaseStationary object.
551
+ //
552
+ // The bounding box sections can include separate parts on partially-opaque
553
+ // objects such as trees with a distinction between trunk and crown.
554
+ //
555
+ // \note The bounding box sub-divisions can extend beyond the overall
556
+ // bounding box, however no actual geometry must reside outside of the
557
+ // overall bounding box.
558
+ //
559
+ // \note If any sub-divisions are provided, then they must cover all
560
+ // occupied space of the overall bounding box. In other words, a consumer
561
+ // of this data is guaranteed that any part of the overall bounding box
562
+ // that is not covered by any sub-division is free of physical objects,
563
+ // and thus no collisions can occur there.
564
+ //
565
+ repeated BoundingBox bounding_box_section = 5 ;
450
566
}
451
567
452
568
//
@@ -469,6 +585,9 @@ message BaseMoving
469
585
{
470
586
// The 3D dimension of the moving object (its bounding box).
471
587
//
588
+ // \note The \c #dimension must completely enclose the geometry of the
589
+ // \c BaseMoving with the exception of the side mirrors for vehicles.
590
+ //
472
591
// \note The bounding box does NOT include side mirrors for vehicles.
473
592
//
474
593
optional Dimension3d dimension = 1 ;
@@ -569,6 +688,24 @@ message BaseMoving
569
688
// The polygon is defined counter-clockwise.
570
689
//
571
690
repeated Vector2d base_polygon = 7 ;
691
+
692
+ // Sub-divisions of the overall bounding box of the \c BaseMoving object.
693
+ //
694
+ // The bounding box sections can include side mirrors, cargo, etc. for
695
+ // vehicles, as well as body-part sections for pedestrians. Note that for
696
+ // more precise pedestrian information \c PedestrianAttributes can be used.
697
+ //
698
+ // \note The bounding box sub-divisions can extend beyond the overall
699
+ // bounding box, however no actual geometry must reside outside of the
700
+ // overall bounding box, with the specific exception of the side mirrors.
701
+ //
702
+ // \note If any sub-divisions are provided, then they must cover all
703
+ // occupied space of the overall bounding box. In other words, a consumer
704
+ // of this data is guaranteed that any part of the overall bounding box
705
+ // that is not covered by any sub-division is free of physical objects,
706
+ // and thus no collisions can occur there.
707
+ //
708
+ repeated BoundingBox bounding_box_section = 9 ;
572
709
}
573
710
574
711
//
0 commit comments