@@ -387,6 +387,125 @@ message LogicalLaneAssignment
387387 optional double angle_to_lane = 4 ;
388388}
389389
390+ // \brief A bounding box containing a sub-section of a object.
391+ //
392+ // A bounding box representing a sub-section of it's parents overall dimension,
393+ // either that of a \c MovingObject or \c StationaryObject .
394+ //
395+ // The parent frame of the \c BoundingBox is not relative to the parent object
396+ // it is associated to, but in the same parent frame as the parent object.
397+ //
398+ message BoundingBox
399+ {
400+ // The 3D dimensions of the bounding box.
401+ //
402+ optional Dimension3d dimension = 1 ;
403+
404+ // The 3D position of the bounding box.
405+ //
406+ // \note The position should be within the same coordinate frame as it's
407+ // parent, not relative to coordinate frame of the parent object. The
408+ // position becomes global/absolute if the parent frame is inertial
409+ // (all parent frames up to ground truth).
410+ //
411+ optional Vector3d position = 2 ;
412+
413+ // The 3D orientation of the bounding box.
414+ //
415+ // \note The orientation should be within the same coordinate frame as it's
416+ // parent, not relative to coordinate frame of the parent object. The
417+ // orientation becomes global/absolute if the parent frame is inertial
418+ // (all parent frames up to ground truth).
419+ //
420+ optional Orientation3d orientation = 3 ;
421+
422+ // The type of object contained in the bounding box.
423+ //
424+ optional Type contained_object_type = 4 ;
425+
426+ // Opaque reference of an associated 3D model of the bounding box.
427+ //
428+ // \note It is implementation-specific how model_references are resolved to
429+ // 3d models. This means the coordinate system, model origin, and model
430+ // orientation are also implementation-specific.
431+ //
432+ optional string model_reference = 5 ;
433+
434+ // Definition of different types of object contained within the bounding box
435+ //
436+ enum Type
437+ {
438+ // Object of unknown type (must not be used in ground truth).
439+ //
440+ TYPE_UNKNOWN = 0 ;
441+
442+ // Any other type of object.
443+ //
444+ TYPE_OTHER = 1 ;
445+
446+ // The main chassis of a vehicle.
447+ //
448+ TYPE_CHASSIS = 2 ;
449+
450+ // The door of a vehicle.
451+ //
452+ // \note A door may extend beyond the dimension of the parent when in
453+ // an open state. A closed door must be within the original dimension.
454+ //
455+ TYPE_DOOR = 3 ;
456+
457+ // The side mirror of a vehicle.
458+ //
459+ // \note A side mirror may extend beyond the dimension of the parent.
460+ //
461+ TYPE_SIDE_MIRROR = 4 ;
462+
463+ // Additional cargo attached to the a vehicle which is temporarily
464+ // attached.
465+ //
466+ // \note Cargo may extend beyond the dimension of the parent.
467+ //
468+ TYPE_CARGO = 5 ;
469+
470+ // The wheel of a vehicle.
471+ //
472+ // \note A wheel may extend beyond the dimension of the parent.
473+ //
474+ // \note For more detailed information about the wheels of an object,
475+ // please refer to \c MovingObject/VehicleAttributes/WheelData .
476+ //
477+ TYPE_WHEEL = 6 ;
478+
479+ // The torso section of a person or animal.
480+ //
481+ TYPE_TORSO = 7 ;
482+
483+ // An external limb of a person or animal.
484+ //
485+ TYPE_LIMB = 8 ;
486+
487+ // The head of a person or animal.
488+ //
489+ TYPE_HEAD = 9 ;
490+
491+ // The trunk section of a tree.
492+ //
493+ TYPE_TREE_TRUNK = 10 ;
494+
495+ // The crown of a tree, usually encompassing the branches and leaves.
496+ //
497+ TYPE_TREE_CROWN = 11 ;
498+
499+ // The vertical pole of a street light.
500+ //
501+ TYPE_STREET_LIGHT_POLE = 12 ;
502+
503+ // The horizontal arm of a street light.
504+ //
505+ TYPE_STREET_LIGHT_ARM = 13 ;
506+ }
507+ }
508+
390509//
391510// \brief The base attributes of a stationary object or entity.
392511//
@@ -447,6 +566,23 @@ message BaseStationary
447566 // The polygon is defined counter-clockwise.
448567 //
449568 repeated Vector2d base_polygon = 4 ;
569+
570+ // Sub-divisions of the overall bounding box of the \c BaseStationary object.
571+ //
572+ // The bounding box sections can include separate parts on partially-opaque
573+ // objects such are trees with a distinction between trunk and crown.
574+ //
575+ // \note When one or more \c BoundingBox s are associated to a
576+ // \c BaseStationary , the expectation is that all sections are contained
577+ // within the bounds of the \c #dimension .
578+ //
579+ // \note It is also expcted that when using \c #bounding_box_section ,
580+ // anyone consuming this data has the guarantee that all others parts of
581+ // the \c BaseStationary are covered by a sub-section, such that the
582+ // guarentee is that the remaining area of the objects dimension is
583+ // represented by space where no physical collisions could be detected.
584+ //
585+ repeated BoundingBox bounding_box_section = 5 ;
450586}
451587
452588//
@@ -569,6 +705,23 @@ message BaseMoving
569705 // The polygon is defined counter-clockwise.
570706 //
571707 repeated Vector2d base_polygon = 7 ;
708+
709+ // Sub-divisions of the overall bounding box of the \c BaseMoving object.
710+ //
711+ // The bounding box sections can include side mirrors, cargo, etc. for
712+ // vehicles, as well as body-part sections for pedestrians.
713+ //
714+ // \note When one or more \c BoundingBox s are associated to a
715+ // \c BaseMoving , the expectation is that all sections are contained
716+ // within the bounds of the \c #dimension .
717+ //
718+ // \note It is also expcted that when using \c #bounding_box_section ,
719+ // anyone consuming this data has the guarantee that all others parts of
720+ // the \c BaseMoving are covered by a sub-section, such that the
721+ // guarentee is that the remaining area of the objects dimension is
722+ // represented by space where no physical collisions could be detected.
723+ //
724+ repeated BoundingBox bounding_box_section = 9 ;
572725}
573726
574727//
0 commit comments