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