Skip to content

Commit a5630f3

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. Signed-off-by: Jakob Peintner <jakob.peintner@thi.de> Signed-off-by: Pierre R. Mai <pmai@pmsf.de>
1 parent fa977f3 commit a5630f3

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)