Skip to content

Commit 69e2325

Browse files
Peintnererpmai
authored andcommitted
Restructure Pedestrian Data to Pedestrian Attributes
Based on the discussions in the workgroup, Pedestrian Data was reformatted to Pedestrian Attributes.
1 parent fa977f3 commit 69e2325

File tree

1 file changed

+176
-36
lines changed

1 file changed

+176
-36
lines changed

osi_object.proto

Lines changed: 176 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)