@@ -3,6 +3,8 @@ syntax = "proto2";
33option optimize_for = SPEED ;
44
55import "osi_common.proto" ;
6+ import "osi_object.proto" ;
7+ import "osi_trafficsign.proto" ;
68
79package osi3 ;
810
@@ -587,6 +589,10 @@ message LogicalLane
587589 //
588590 optional string street_name = 16 ;
589591
592+ // A list of traffic rules on the lane.
593+ //
594+ repeated TrafficRule traffic_rule = 17 ;
595+
590596 //
591597 // Definition of available lane types.
592598 //
@@ -822,5 +828,132 @@ message LogicalLane
822828 //
823829 optional double end_s_other = 5 ;
824830 }
831+
832+ //
833+ // Describes traffic rules on a lane.
834+ // The traffic rule can thereby be induced by regulations, traffic signs
835+ // or by other means. If the modeled traffic rule is induced by a traffic sign
836+ // the information should be identical with the respective traffic sign.
837+ //
838+ // Note: Every instance should be corresponding to only one specific rule.
839+ // The type of the traffic rule should be set using the respective field.
840+ // Additionally, every message should contain the traffic rule validity information
841+ // and the respective field for the respective traffic rule type.
842+ // In case of traffic rule (priority) conflicts for rules of the same type that
843+ // can not be depicted using the traffic rule validity only the currently
844+ // valid rule should be provided.
845+ //
846+ // Note: Each traffic rule corresponds to only one lane. If the traffic rule
847+ // is also valid on adjacent/successor/predecessor lanes it needs to be
848+ // specified for each lane individually.
849+ //
850+ // \brief Logical Model of a traffic rule on a lane.
851+ //
852+ message TrafficRule {
853+
854+ // The type of the traffic rule.
855+ //
856+ // This specifies the type of the traffic rule to be modeled.
857+ // Based on the type the respective message containing the information
858+ // corresponding to the traffic rule should be filled.
859+ //
860+ optional TrafficRuleType traffic_rule_type = 1 ;
861+
862+ // The validity information of the traffic rule.
863+ //
864+ optional TrafficRuleValidity traffic_rule_validity = 2 ;
865+
866+ // Traffic rule information for traffic rule of type speed limit.
867+ //
868+ optional SpeedLimit speed_limit = 3 ;
869+
870+ //
871+ // The type of the the traffic rule.
872+ //
873+ enum TrafficRuleType {
874+
875+ // Traffic rule is of type speed limit
876+ //
877+ TRAFFIC_RULE_TYPE_SPEED_LIMIT = 0 ;
878+ }
879+
880+ //
881+ // \brief Validity information for a traffic rule.
882+ //
883+ message TrafficRuleValidity {
884+
885+ //
886+ // The starting point of the traffic rule validity on the lane.
887+ // Must be in range [\c sStart,\c sEnd] of the reference line.
888+ //
889+ // Note: The traffic rule applies only to traffic with notional
890+ // direction of travel from the start_s coordinate towards
891+ // the end_s coordinate. For unidirectional lanes this must
892+ // match the direction of travel as specified by the
893+ // move_direction field of the logical lane. For bidirectional
894+ // lanes this allows the specification of separate rules for
895+ // each direction of travel.
896+ //
897+ optional double start_s = 1 ;
898+
899+ //
900+ // The ending point of the traffic rule validity on the lane.
901+ // Must be in range [\c sStart,\c sEnd] of the reference line.
902+ //
903+ optional double end_s = 2 ;
904+
905+ //
906+ // List of traffic participant types for which the speed limit is valid.
907+ // If the traffic rule validity is independent of the vehicle type
908+ // the list should be empty.
909+ //
910+ repeated TypeValidity valid_for_type = 3 ;
911+
912+ //
913+ // \brief Type of traffic participant for which a rule is valid.
914+ //
915+ message TypeValidity {
916+
917+ //
918+ // The type of object for which the traffic rule is valid.
919+ //
920+ optional MovingObject.Type type = 1 ;
921+
922+ //
923+ // Vehicle classification type for traffic participants.
924+ //
925+ // Should be set to TYPE_UNKNOWN if type is not TYPE_VEHICLE
926+ // or the rule is valid for all vehicle types.
927+ //
928+ optional MovingObject.VehicleClassification.Type vehicle_type = 2 ;
929+
930+ //
931+ // Role of traffic participant.
932+ //
933+ // Should be set to ROLE_UNKNOWN if type is not TYPE_VEHICLE
934+ // or the rule is valid for all vehicle roles.
935+ //
936+ optional MovingObject.VehicleClassification.Role vehicle_role = 3 ;
937+ }
938+ }
939+
940+ //
941+ // \brief Speed limit on a lane.
942+ //
943+ message SpeedLimit {
944+
945+ //
946+ // The value of the speed limit.
947+ // The unit field in the TrafficSignValue message may only be set to
948+ // units associated with velocities and must not be UNKNOWN.
949+ //
950+ // Note: All speed limits are to be modeled this way, independent
951+ // of how they are induced.
952+ //
953+ optional TrafficSignValue speed_limit_value = 1 ;
954+
955+ }
956+ }
957+
825958}
826959
0 commit comments