@@ -518,59 +518,199 @@ message MovingObject
518518 // This is an extension to the \c MovingObject with additional information
519519 // describing a pedestrian in more detail.
520520 //
521- message PedestrianData {
521+ message PedestrianAttributes {
522522
523- // Body height of the pedestrian
524- //
525- // Unit: m
526- //
527- optional double height = 1 ;
528523
529524 // List of all skeleton points of the pedestrian
530525 //
531- // The number of skeleton points may very , based on the detail level of
526+ // The number of skeleton points may vary , based on the detail level of
532527 // the pedestrian model used. For example, some simulators will not include
533528 // detailed data of the fingers or eyes of the pedestrian.
534529 //
535530 repeated SkeletonPoint skeleton_data = 2 ;
536- }
537531
532+
533+ // \brief Points in the skeleton of the pedestrian
534+ //
535+ // Each point represents a joint, or otherwise important point in the skeleton
536+ // of a pedestrian. For example pelvis, knee or shoulder. The naming convention
537+ // should be followed for identifying skeleton points.
538+ //
539+ message SkeletonPoint {
538540
539- //
540- // \brief Points in the skeleton of the pedestrian
541- //
542- // Each point represents a joint, or otherwise important point in the skeleton
543- // of a pedestrian. For example Pelvis, Knee or Shoulder. The naming convention
544- // should be followed for identifying skeleton points.
545- //
546- message SkeletonPoint {
547541
542+ // Skeleton points are identified by their type, combined with which body side
543+ // they are on.
544+ //
545+ // To properly identify the skeleton points the pre-defined naming convention
546+ // must be used.
547+ //
548+ //\image html OSI_SkeletonNamingConvention.jpg
549+ //
550+ // If a skeleton point is used, which is more than one layer detached from the
551+ // root point, all sekleton points between that point and the root point also
552+ // need to be defined in order to create a complete chain!
553+ //
554+ optional Type type = 1 ;
555+
556+ // The side of the body on which the Skeleton Point is located at.
557+ //
558+ // Skeleton Points can either be on the left or right side of the body. The spine,
559+ // neck, and head are located in the middle.
560+ //
561+ optional Side side = 2 ;
548562
549- // Skeleton points are identified by a naming scheme
550- //
551- // To properly identify the skeleton points the pre-defined naming convention
552- // must be used.
553- //
554- //\image html OSI_SkeletonNamingConvention.jpg
555- //
556- required string identifier = 1 ;
563+ // If there are multiple Skeleton Points of the same type, they are additionally
564+ // identified by their number.
565+ //
566+ // In case of the spine, head, jaw, fingers, and toes there can be multiple
567+ // Skeleton Points in these bodyparts, depending on the desired level of detail.
568+ // Smaller numbers are located closer to the root/previous Skeleton Point.
569+ //
570+ optional uint32 number = 3 ;
557571
558- // Position of the skeleton point
559- //
560- // Reference System is the middle of the bounding box (\c MovingObject::base
561- // \c BaseMoving::position).
562- //
563- required Vector3d position = 2 ;
572+ // Position of the skeleton point
573+ //
574+ // Reference System is the middle of the bounding box (\c MovingObject::base
575+ // \c BaseMoving::position).
576+ //
577+ optional Vector3d position = 4 ;
564578
565- // Orientation of the skeleton point
566- //
567- // Reference System is the middle of the bounding box (\c MovingObject::base
568- // \c BaseMoving::orientation).
569- //
570- required Orientation3d orientation = 3 ;
579+ // Orientation of the skeleton point
580+ //
581+ // Reference System is the middle of the bounding box (\c MovingObject::base
582+ // \c BaseMoving::orientation).
583+ //
584+ optional Orientation3d orientation = 5 ;
585+
586+ // The type of the skeleton point
587+ //
588+ // \note Skeleton Points of each type can be assigned, or left empty depending
589+ // on the desired level of detail, or present data. However, if a Skeleton Point
590+ // is defined, all Skeleton Points in the chain from that point back to the root
591+ // point must be defined to create a complete chain.
592+ //
593+ enum Type {
594+
595+ // Root point is usually located in the COM
596+ //
597+ TYPE_ROOT = 0 ;
598+
599+ // Skeleton Point is located in the hip.
600+ //
601+ TYPE_HIP = 1 ;
602+
603+ // Skeleton Points defines part of the spine.
604+ //
605+ // \note skeleton usually contains more than one spine point.
606+ //
607+ TYPE_SPINE = 2 ;
571608
609+ // Skeleton Point defines the neck.
610+ //
611+ TYPE_NECK = 3 ;
612+
613+ // Skeleton Point defines the head.
614+ //
615+ TYPE_HEAD = 4 ;
616+
617+ // Skeleton Point defines one of the eyes.
618+ //
619+ TYPE_EYE = 5 ;
620+
621+ // Skeleton Point defines the jaw.
622+ //
623+ TYPE_JAW = 6 ;
624+
625+ // Skeleton Point defines one of the shoulders.
626+ //
627+ TYPE_SHOULDER = 7 ;
628+
629+ // Skeleton Point defines one of the upper arms.
630+ //
631+ TYPE_UPPER_ARM = 8 ;
632+
633+ // Skeleton Point defines one of the forearms.
634+ //
635+ TYPE_FORE_ARM = 9 ;
636+
637+ // Skeleton Point defines one of the hands.
638+ //
639+ TYPE_HAND = 10 ;
640+
641+ // Skeleton Point defines one of the thumbs.
642+ //
643+ // \note Fingers usually contain three skeleton points (start, middle, end)
644+ //
645+ TYPE_FINGER_THUMB = 11 ;
646+
647+ // Skeleton Point defines one of the index fingers.
648+ //
649+ // \note Fingers usually contain three skeleton points (start, middle, end)
650+ //
651+ TYPE_FINGER_INDEX = 12 ;
652+
653+ // Skeleton Point defines one of the middle fingers.
654+ //
655+ // \note Fingers usually contain three skeleton points (start, middle, end)
656+ //
657+ TYPE_FINGER_MIDDLE = 13 ;
658+
659+ // Skeleton Point defines one of the ring fingers.
660+ //
661+ // \note Fingers usually contain three skeleton points (start, middle, end)
662+ //
663+ TYPE_FINGER_RING = 14 ;
664+
665+ // Skeleton Point defines one of the pinky fingers.
666+ //
667+ // \note Fingers usually contain three skeleton points (start, middle, end)
668+ //
669+ TYPE_FINGER_PINKY = 15 ;
670+
671+ // Skeleton Point defines one of the thighs.
672+ //
673+ TYPE_THIGH = 16 ;
674+
675+ // Skeleton Point defines one of the shins.
676+ //
677+ TYPE_SHIN = 17 ;
678+
679+ // Skeleton Point defines one of the feet.
680+ //
681+ TYPE_FOOT = 18 ;
682+
683+ // Skeleton Point defines one of the toes.
684+ //
685+ // \note Toes usually contain two skeleton points for start and end.
686+ //
687+ TYPE_TOES = 19 ;
688+
689+ }
690+
691+ // Defines on which side of the body the Skeleton Point is located at.
692+ //
693+ enum Side {
694+
695+ // Left body side.
696+ //
697+ SIDE_LEFT = 0 ;
698+
699+ // Right body side.
700+ //
701+ SIDE_RIGHT = 1 ;
702+
703+ // For root, spine, neck, head and jaw, middle is used for side.
704+ //
705+ SIDE_MIDDLE = 2 ;
706+ }
707+
708+ }
572709 }
573710
711+
712+
713+
574714 //
575715 // \brief The vehicle attributes for \c MovingObject (host or other).
576716 //
0 commit comments