@@ -3,6 +3,8 @@ syntax = "proto2";
3
3
option optimize_for = SPEED ;
4
4
5
5
import "osi_common.proto" ;
6
+ import "osi_object.proto" ;
7
+ import "osi_trafficsign.proto" ;
6
8
7
9
package osi3 ;
8
10
@@ -587,6 +589,10 @@ message LogicalLane
587
589
//
588
590
optional string street_name = 16 ;
589
591
592
+ // A list of traffic rules on the lane.
593
+ //
594
+ repeated TrafficRule traffic_rule = 17 ;
595
+
590
596
//
591
597
// Definition of available lane types.
592
598
//
@@ -822,5 +828,132 @@ message LogicalLane
822
828
//
823
829
optional double end_s_other = 5 ;
824
830
}
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
+
825
958
}
826
959
0 commit comments