Skip to content

Commit 24d0839

Browse files
committed
Restructured Pedestrian Data to Pedestrian Attributes
Based on the discussions in the workgroup, Pedestrian Data was reformatted to Pedestrian Attributes (see comments by Thomas Nader on 15.05.23). Comments by Thomas Bleher (Feb 13) and Thomas Sedlmayer (Feb 27) were addressed in this commit also.
1 parent 49addb6 commit 24d0839

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
@@ -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

Comments
 (0)