@@ -47,7 +47,6 @@ message TrafficCommand
4747 // all actions are executed in parallel.
4848 //
4949 repeated TrafficAction action = 4 ;
50-
5150}
5251
5352//
@@ -98,6 +97,26 @@ message TrafficAction
9897 // An EndActionsAction
9998 //
10099 optional EndActionsAction end_actions_action = 7 ;
100+
101+ // A CustomAction
102+ //
103+ optional CustomAction custom_action = 8 ;
104+
105+ // A LongitudinalDistanceAction
106+ //
107+ optional LongitudinalDistanceAction longitudinal_distance_action = 9 ;
108+
109+ // A LaneOffsetAction
110+ //
111+ optional LaneOffsetAction lane_offset_action = 10 ;
112+
113+ // A LateralDistanceAction
114+ //
115+ optional LateralDistanceAction lateral_distance_action = 11 ;
116+
117+ // A TeleportAction
118+ //
119+ optional TeleportAction teleport_action = 12 ;
101120}
102121
103122//
@@ -210,8 +229,8 @@ message FollowTrajectoryAction
210229//
211230// \brief Follow path action.
212231//
213- // Controls a traffic participant to follow a trajectory using vertices
214- // with timings. It specifies the motion in space independent of time.
232+ // Controls a traffic participant to follow a path using vertices. It
233+ // specifies the motion in space independent of time.
215234//
216235// \note The StatePoint messages in path_point only requires a specified
217236// position field. The orientation can be set optionally. Any
@@ -461,8 +480,205 @@ message SpeedAction
461480
462481}
463482
483+ // \brief Longitudinal Distance Action
484+ //
485+ // The action tells the (host) traffic participant to reach a certain longitudinal distance
486+ // relative to a target traffic participant. The longitudinal distance is defined as the distance
487+ // along the centerline of the lane, on which the (host) traffic participant is currently located.
488+ // The interpolation strategy between centerline points for calculating
489+ // that distance along the centerline is open to the traffic participant modeller.
490+ //
491+ // \note This action is aligned with LongitudinalDistanceAction of OpenSCENARIO 1.0
492+ // defining the reference traffic participant and the distance.
493+ //
494+ // \note Limitation: This concept currently only works for lanes with a centerline, i.e. for lanes
495+ // of TYPE_DRIVING, not for lanes of TYPE_NONDRIVING or TYPE_INTERSECTION.
496+ //
497+
498+ message LongitudinalDistanceAction
499+ {
500+ // Action Header of the message
501+ //
502+ optional ActionHeader action_header = 1 ;
503+
504+ // Unique Id of the reference traffic participant to which the distance is defined.
505+ //
506+ optional Identifier target_traffic_participant_id = 2 ;
507+
508+ // The distance to reach along the lane
509+ //
510+ // Unit: m
511+ //
512+ optional double distance = 3 ;
513+
514+ // Determine the measurement of longitudinal distance between the traffic
515+ // participant receiving this action and the reference traffic
516+ // participant.
517+ // True: Longitudinal distance is measured using the distance between closest bounding box points.
518+ // False: Longitudinal distance is mesasured using the distance between the center of each object's bounding box.
519+ //
520+ optional bool freespace = 4 ;
521+
522+ // Define wheather the traffic participant should only reach the distance once
523+ // or if it should also follow if after having reached it.
524+ // True: the traffic participant shall approach the reference participant
525+ // and follow with the distance specified until the action is aborted/ended.
526+ // False: the action ends as soon as the traffic participant has reached
527+ // the specified distance.
528+ //
529+ optional bool follow = 5 ;
530+
531+ // Parameter that assings either unlimited dynamics (if omitted)
532+ // or limited maxAcceleration/maxDeceleration/maxSpeed to the action.
533+ //
534+ optional DynamicConstraints dynamic_constraints = 6 ;
535+ }
536+
537+
538+ // \brief Lateral Distance Action
539+ //
540+ // The action tells the (host) traffic participant to reach a certain lateral distance relative to
541+ // a target traffic participant. The lateral distance is defined along an imaginative perpendicular line
542+ // with respect to the centerline of the current (host) traffic participant's lane.
543+ // The interpolation strategy between centerline points for calculating that distance along the imaginative
544+ // perpendicular line is open to the traffic participant modeller.
545+ //
546+ // \note This action is aligned with LateralDistanceAction of OpenSCENARIO 1.0
547+ // defining the reference traffic participant and the distance.
548+ //
549+ // \note Limitation: This concept currently only works for lanes with a centerline, i.e. for lanes
550+ // of TYPE_DRIVING, not for lanes of TYPE_NONDRIVING or TYPE_INTERSECTION.
551+ //
552+
553+ message LateralDistanceAction
554+ {
555+ // Action Header of the message
556+ //
557+ optional ActionHeader action_header = 1 ;
558+
559+ // Id of the reference entity the lateral distance shall be kept to.
560+ //
561+ optional Identifier target_traffic_participant_id = 2 ;
562+
563+ // Lateral distance value.
564+ //
565+ // Unit: m
566+ //
567+ optional double distance = 3 ;
568+
569+ // Determine the measurement of lateral distance between the traffic
570+ // participant receiving this action and the reference traffic
571+ // participant.
572+ // True: Lateral distance is measured using the distance between closest bounding box points.
573+ // False: Lateral distance is mesasured using the distance between the center of each object's bounding box.
574+ //
575+ optional bool freespace = 4 ;
576+
577+ // Define wheather the traffic participant should only reach the distance once
578+ // or if it should also follow if after having reached it.
579+ // True: the traffic particpant shall approach the reference participant
580+ // and follow with the distance specified until the action is aborted/ended.
581+ // False: the action ends as soon as the traffic participant has reached
582+ // the specified distance.
583+ //
584+ optional bool follow = 5 ;
585+
586+ // Parameter that assings either unlimited dynamics (if omitted)
587+ // or limited maxAcceleration/maxDeceleration/maxSpeed to the action.
588+ //
589+ optional DynamicConstraints dynamic_constraints = 6 ;
590+ }
591+
592+ // \brief Lane Offset Action
593+ //
594+ // This action assigns a targeted lane offset to a traffic participant.
595+ // The action can be constrained by specifying the dynamics shape of the
596+ // lateral transition profile.
597+ //
598+ // \note This action is aligned with LaneOffsetAction of OpenSCENARIO 1.0.
599+ //
600+
601+ message LaneOffsetAction
602+ {
603+ // The Action Header
604+ //
605+ optional ActionHeader action_header = 1 ;
606+
607+ // Targeted lane offset in meters relative to the centerline of the
608+ // current traffic participant's lane. Positive values mean left of the centerline,
609+ // negative values mean right of the centerline.
610+ //
611+ // Unit: m
612+ //
613+ optional double target_lane_offset = 2 ;
614+
615+ // Specified transition shape of reaching the lane offset.
616+ // If the shape is unspecified (enum value 0), the shape of the
617+ // transition is open to the traffic participant model.
618+ //
619+ optional DynamicsShape dynamics_shape = 3 ;
620+
621+ // Definition of dynamic shape of the transition.
622+ //
623+ enum DynamicsShape
624+ {
625+ // Shape is unspecified.
626+ //
627+ DYNAMICS_SHAPE_UNSPECIFIED = 0 ;
628+
629+ // Shape is linear.
630+ //
631+ DYNAMICS_SHAPE_LINEAR = 1 ;
632+
633+ // Shape is cubic.
634+ //
635+ DYNAMICS_SHAPE_CUBIC = 2 ;
636+
637+ // Shape is sinusoidal.
638+ //
639+ DYNAMICS_SHAPE_SINUSOIDAL = 3 ;
640+
641+ // Shape is a step function.
642+ //
643+ DYNAMICS_SHAPE_STEP = 4 ;
644+ }
645+
646+ }
647+
648+
649+ // \brief Teleport Action
650+ //
651+ // This Action allows to immediately place a traffic participant to
652+ // another position.
464653//
465- // \brief Abort actions action
654+ // \note This action is aligned with the TeleportAction of
655+ // OpenSCENARIO 1.0 using a WorldPosition position argument.
656+ //
657+
658+ message TeleportAction
659+ {
660+ // The Action Header
661+ //
662+ optional ActionHeader action_header = 1 ;
663+
664+ // Position in the global coordinate system.
665+ //
666+ // The position refers to the center (x,y,z) of the bounding box.
667+ //
668+ // \note Remark: The definition of the reference point follows the
669+ // specification of the \c BaseMoving message.
670+ //
671+ optional Vector3d position = 2 ;
672+
673+ // Orientation in the global coordinate system.
674+ //
675+ // This is optional, if no orientation is given, the end orientation
676+ // is under control of the traffic participant.
677+ //
678+ optional Orientation3d orientation = 3 ;
679+ }
680+
681+ // \brief AbortActionsAction.
466682//
467683// This action tells a traffic participant that it should immediately
468684// abort the execution of other actions referenced within this action.
@@ -505,3 +721,54 @@ message EndActionsAction
505721 //
506722 repeated Identifier target_action_id = 2 ;
507723}
724+
725+ // \brief DynamicConstraints
726+ //
727+ // This message is used in Longitudinal and Lateral Distance Actions as
728+ // constraints on the TrafficParticipant not allowing them to exceed/drop below
729+ // certain speeds/acceleration levels.
730+ //
731+
732+ message DynamicConstraints
733+ {
734+ // Maximum acceleration the distance contoller is allowed to use for keeping distance.
735+ //
736+ // Unit: m/s^2
737+ //
738+ optional double max_acceleration = 1 ;
739+
740+ // Maximum deceleration the distance contoller is allowed to use for keeping distance.
741+ //
742+ // Unit: m/s^2
743+ //
744+ optional double max_deceleration = 2 ;
745+
746+ // Maximum speed the distance contoller is allowed to use for keeping distance.
747+ //
748+ // Unit: m/s
749+ //
750+ optional double max_speed = 3 ;
751+ }
752+
753+ //
754+ // \brief Custom Action.
755+ //
756+ // This action assigns a custom command to a traffic participant.
757+ // The syntax and semantics of this action is implementation defined.
758+ // It is entirely up to each individual traffic participant which
759+ // custom commands it supports, if any, and how they must be phrased.
760+ //
761+ // \note This action is aligned with CustomCommandAction of OpenSCENARIO 1.0
762+ // providing a customizable user defined action.
763+ //
764+
765+ message CustomAction
766+ {
767+ // The Action Header
768+ //
769+ optional ActionHeader action_header = 1 ;
770+
771+ // The custom command given to the traffic participant.
772+ //
773+ optional string command = 2 ;
774+ }
0 commit comments