diff --git a/doc/architecture/architecture_overview.adoc b/doc/architecture/architecture_overview.adoc index 6ef5b76ee..9d8a20228 100644 --- a/doc/architecture/architecture_overview.adoc +++ b/doc/architecture/architecture_overview.adoc @@ -51,7 +51,8 @@ This has been done to allow backward-compatible changes in the field. Additionally, this is the default behavior in Protocol Buffer version 3 that no longer has the `required` type. Setting all fields to `optional` thus ensures update compatibility. However, this does not mean that it is optional to fill the field. -For the purpose of providing a complete interface, all existing fields should be set, unless not setting a field carries a specific meaning, as indicated in the accompanying comment. +Fields with the rule `is_set` are mandatory and have to be set at all times. +All other fields have to be set according to the requirements of the connected models. NOTE: All field numbers equal to or greater than 10000 are available for user-specific extensions via custom fields. No future evolution of OSI will therefore use field numbers equal to or greater than 10000. diff --git a/osi_detectedobject.proto b/osi_detectedobject.proto index d651b949e..030747f06 100644 --- a/osi_detectedobject.proto +++ b/osi_detectedobject.proto @@ -17,6 +17,10 @@ message DetectedItemHeader // Specific ID of the detected item as assigned by the sensor internally. // Needs not to match with \c #ground_truth_id. // + // \rules + // is_set + // \endrules + // optional Identifier tracking_id = 1; // The ID of the original detected item in the ground truth. diff --git a/osi_featuredata.proto b/osi_featuredata.proto index 16ed85aaf..69b4fcd62 100644 --- a/osi_featuredata.proto +++ b/osi_featuredata.proto @@ -92,6 +92,10 @@ message SensorDetectionHeader // \par Reference: // [1] DIN Deutsches Institut fuer Normung e. V. (2013). DIN ISO 8855 Strassenfahrzeuge - Fahrzeugdynamik und Fahrverhalten - Begriffe. (DIN ISO 8855:2013-11). Berlin, Germany. // + // \rules + // is_set + // \endrules + // optional MountingPosition mounting_position = 3; // The origin/orientation of the sensor frame represents the current @@ -124,6 +128,10 @@ message SensorDetectionHeader // This ID can equal \c SensorData::sensor_id, if \c SensorData holds only // data from one sensor/sensor model. // + // \rules + // is_set + // \endrules + // optional Identifier sensor_id = 7; // The extended qualifier describes the reason (not the effect) why the diff --git a/osi_groundtruth.proto b/osi_groundtruth.proto index 5cf5477b5..651ff7e81 100644 --- a/osi_groundtruth.proto +++ b/osi_groundtruth.proto @@ -47,6 +47,10 @@ message GroundTruth // The interface version used by the sender (i.e. the simulation // environment). // + // \rules + // is_set + // \endrules + // optional InterfaceVersion version = 1; // The data timestamp of the simulation environment. The zero time point is @@ -60,6 +64,10 @@ message GroundTruth // (there is no inherent latency for ground truth data, as opposed to // sensor data). // + // \rules + // is_set + // \endrules + // optional Timestamp timestamp = 2; // The ID of the host vehicle object referencing to \c MovingObject . @@ -68,6 +76,7 @@ message GroundTruth // // \rules // refers_to: MovingObject + // is_set // \endrules // optional Identifier host_vehicle_id = 3; @@ -118,7 +127,7 @@ message GroundTruth // [1] ISO International Organization for Standardization. (2013). ISO 3166-1 Codes for the representation of names of countries and their subdivisions - Part 1: Country codes. (ISO 3166-1:2013). Geneva, Switzerland. // // \rules - // is_iso_country_code: + // is_iso_country_code // \endrules // optional uint32 country_code = 13; diff --git a/osi_lane.proto b/osi_lane.proto index c95a30de1..702a088d9 100644 --- a/osi_lane.proto +++ b/osi_lane.proto @@ -42,6 +42,7 @@ message Lane // // \rules // is_globally_unique + // is_set // \endrules // optional Identifier id = 1; diff --git a/osi_logicaldetectiondata.proto b/osi_logicaldetectiondata.proto index cbf0e71fe..353abd407 100644 --- a/osi_logicaldetectiondata.proto +++ b/osi_logicaldetectiondata.proto @@ -19,6 +19,10 @@ message LogicalDetectionData // The interface version used by the sender (i.e. the simulation // environment). // + // \rules + // is_set + // \endrules + // optional InterfaceVersion version = 1; // Header attributes of fused detections from multiple sensors and sensor types. diff --git a/osi_logicallane.proto b/osi_logicallane.proto index f709a89a6..5d3828673 100644 --- a/osi_logicallane.proto +++ b/osi_logicallane.proto @@ -56,6 +56,7 @@ message LogicalLaneBoundary // // \rules // is_globally_unique + // is_set // \endrules // optional Identifier id = 1; diff --git a/osi_motionrequest.proto b/osi_motionrequest.proto index 82560c8e6..be81b0804 100644 --- a/osi_motionrequest.proto +++ b/osi_motionrequest.proto @@ -25,11 +25,19 @@ message MotionRequest { // The interface version used by the sender (simulation environment). // + // \rules + // is_set + // \endrules + // optional InterfaceVersion version = 1; // The data timestamp of the simulation environment. // A reference to \c Timestamp message. // + // \rules + // is_set + // \endrules + // optional Timestamp timestamp = 2; // Define the type that is used to specify the motion request. diff --git a/osi_object.proto b/osi_object.proto index 3868eb3ff..fa879188a 100644 --- a/osi_object.proto +++ b/osi_object.proto @@ -21,6 +21,7 @@ message StationaryObject // // \rules // is_globally_unique + // is_set // \endrules // optional Identifier id = 1; @@ -388,6 +389,7 @@ message MovingObject // // \rules // is_globally_unique + // is_set // \endrules // optional Identifier id = 1; diff --git a/osi_referenceline.proto b/osi_referenceline.proto index b6b3bc5e4..72fa312a8 100644 --- a/osi_referenceline.proto +++ b/osi_referenceline.proto @@ -32,6 +32,7 @@ message ReferenceLine // // \rules // is_globally_unique + // is_set // \endrules // optional Identifier id = 1; diff --git a/osi_roadmarking.proto b/osi_roadmarking.proto index d8ed5a2e0..f002f9bb5 100644 --- a/osi_roadmarking.proto +++ b/osi_roadmarking.proto @@ -29,6 +29,10 @@ message RoadMarking { // The ID of the road marking. // + // \rules + // is_set + // \endrules + // optional Identifier id = 1; // The base parameters of the road marking. diff --git a/osi_route.proto b/osi_route.proto index b7e519330..794c6bb20 100644 --- a/osi_route.proto +++ b/osi_route.proto @@ -40,6 +40,10 @@ message Route // \note This id must be unique within all route messages exchanged with // one traffic participant. // + // \rules + // is_set + // \endrules + // optional Identifier route_id = 1; // Route segments that form the route of an agent. diff --git a/osi_sensordata.proto b/osi_sensordata.proto index 689149370..523cb4cfb 100644 --- a/osi_sensordata.proto +++ b/osi_sensordata.proto @@ -102,6 +102,10 @@ message SensorData { // The interface version used by the sender. // + // \rules + // is_set + // \endrules + // optional InterfaceVersion version = 1; // The timestamp of the sensor data. Zero time is arbitrary but must be @@ -129,6 +133,10 @@ message SensorData // a dumb sensor with no internal time concept), the two timestamps might // also be identical, but delayed from the \c GroundTruth timestamp. // + // \rules + // is_set + // \endrules + // optional Timestamp timestamp = 2; // The sensors estimated location of the host vehicle @@ -156,6 +164,10 @@ message SensorData // object output; it is distinct from the IDs of its physical detectors, // which are used in the detected features. // + // \rules + // is_set + // \endrules + // optional Identifier sensor_id = 5; // The virtual mounting position of the sensor (origin and orientation @@ -186,6 +198,10 @@ message SensorData // vehicle's bounding box \c MovingObject::base . \c // BaseMoving::orientation. // + // \rules + // is_set + // \endrules + // optional MountingPosition mounting_position = 6; // The root mean squared error of the mounting position. diff --git a/osi_sensorview.proto b/osi_sensorview.proto index 8d595ed92..863a5c2bb 100644 --- a/osi_sensorview.proto +++ b/osi_sensorview.proto @@ -36,6 +36,10 @@ message SensorView { // The interface version used by the sender (simulation environment). // + // \rules + // is_set + // \endrules + // optional InterfaceVersion version = 1; // The data timestamp of the simulation environment. Zero time is arbitrary @@ -48,6 +52,10 @@ message SensorView // (there is no inherent latency for sensor view data, as opposed to // sensor data). // + // \rules + // is_set + // \endrules + // optional Timestamp timestamp = 2; // The ID of the sensor at host vehicle's \c #mounting_position. @@ -58,6 +66,7 @@ message SensorView // // \rules // is_globally_unique + // is_set // \endrules // optional Identifier sensor_id = 3; @@ -92,6 +101,10 @@ message SensorView // vehicle's bounding box \c MovingObject::base . \c // BaseMoving::orientation. // + // \rules + // is_set + // \endrules + // optional MountingPosition mounting_position = 4; // The root mean squared error of the mounting position. @@ -127,6 +140,7 @@ message SensorView // // \rules // refers_to: 'MovingObject' + // is_set // \endrules // optional Identifier host_vehicle_id = 8; diff --git a/osi_sensorviewconfiguration.proto b/osi_sensorviewconfiguration.proto index fc3720ebc..1419c9312 100644 --- a/osi_sensorviewconfiguration.proto +++ b/osi_sensorviewconfiguration.proto @@ -66,6 +66,10 @@ message SensorViewConfiguration { // The interface version used by the sender (simulation environment). // + // \rules + // is_set + // \endrules + // optional InterfaceVersion version = 1; // The ID of the sensor at host vehicle's mounting_position. @@ -77,6 +81,10 @@ message SensorViewConfiguration // The ID is to be provided by the environment simulation, the sensor // model is not in a position to provide a useful default value. // + // \rules + // is_set + // \endrules + // optional Identifier sensor_id = 2; // The virtual mounting position of the sensor (origin and orientation diff --git a/osi_streamingupdate.proto b/osi_streamingupdate.proto index b1ad1121a..f3006fee9 100644 --- a/osi_streamingupdate.proto +++ b/osi_streamingupdate.proto @@ -30,6 +30,10 @@ message StreamingUpdate { // The interface version used by the sender. // + // \rules + // is_set + // \endrules + // optional InterfaceVersion version = 1; // The data timestamp where the information of contained objects is calculated. @@ -38,6 +42,10 @@ message StreamingUpdate // Zero time does not need to coincide with the UNIX epoch. // Recommended is the starting time point of the simulation. // + // \rules + // is_set + // \endrules + // optional Timestamp timestamp = 2; // The list of stationary objects (excluding traffic signs and traffic diff --git a/osi_trafficcommand.proto b/osi_trafficcommand.proto index 6e717e3e8..5baef7731 100644 --- a/osi_trafficcommand.proto +++ b/osi_trafficcommand.proto @@ -21,6 +21,10 @@ message TrafficCommand { // The interface version used by the sender (scenario engine). // + // \rules + // is_set + // \endrules + // optional InterfaceVersion version = 1; // The data timestamp of the simulation environment. Zero time is arbitrary @@ -33,10 +37,18 @@ message TrafficCommand // There is no inherent latency for traffic command data, as opposed // to sensor data. // + // \rules + // is_set + // \endrules + // optional Timestamp timestamp = 2; // The ID of this traffic participant. // + // \rules + // is_set + // \endrules + // optional Identifier traffic_participant_id = 3; // Commanded traffic action(s) if any. diff --git a/osi_trafficcommandupdate.proto b/osi_trafficcommandupdate.proto index d55d38ff3..c341acfdc 100644 --- a/osi_trafficcommandupdate.proto +++ b/osi_trafficcommandupdate.proto @@ -29,6 +29,10 @@ message TrafficCommandUpdate { // The interface version used by the sender (traffic participant model). // + // \rules + // is_set + // \endrules + // optional InterfaceVersion version = 1; // The data timestamp of the simulation environment. Zero time is arbitrary @@ -36,11 +40,19 @@ message TrafficCommandUpdate // coincide with the UNIX epoch. It is recommended to use zero timestamp as // the starting time point of the simulation. // + // \rules + // is_set + // \endrules + // optional Timestamp timestamp = 2; // The ID of this traffic participant which must coincide with a prior sent ID, cf. // \c TrafficCommand::traffic_participant_id. // + // \rules + // is_set + // \endrules + // optional Identifier traffic_participant_id = 3; // Actions which a traffic participant dismisses and which are not yet ended or diff --git a/osi_trafficlight.proto b/osi_trafficlight.proto index 887a99fd4..fe90fd4b4 100644 --- a/osi_trafficlight.proto +++ b/osi_trafficlight.proto @@ -20,6 +20,7 @@ message TrafficLight // // \rules // is_globally_unique + // is_set // \endrules // optional Identifier id = 1; diff --git a/osi_trafficsign.proto b/osi_trafficsign.proto index f15aad856..11e600d4d 100644 --- a/osi_trafficsign.proto +++ b/osi_trafficsign.proto @@ -173,6 +173,7 @@ message TrafficSign // // \rules // is_globally_unique + // is_set // \endrules // optional Identifier id = 1; diff --git a/osi_trafficupdate.proto b/osi_trafficupdate.proto index 5b157c668..45a87d6fb 100644 --- a/osi_trafficupdate.proto +++ b/osi_trafficupdate.proto @@ -27,6 +27,10 @@ message TrafficUpdate { // The interface version used by the sender (traffic participant model). // + // \rules + // is_set + // \endrules + // optional InterfaceVersion version = 1; // The data timestamp of the simulation environment. Zero time is arbitrary @@ -39,6 +43,10 @@ message TrafficUpdate // There is no inherent latency for moving object update data, as opposed // to sensor data. // + // \rules + // is_set + // \endrules + // optional Timestamp timestamp = 2; // Updated traffic participant data diff --git a/rules.yml b/rules.yml index 473bf51b2..1816a7542 100644 --- a/rules.yml +++ b/rules.yml @@ -9,4 +9,5 @@ refers_to: '^[ ]\b(refers_to)\b' is_iso_country_code: '^[ ]\b(is_iso_country_code)\b' first_element: '^[ ]\b(first_element)\b' last_element: '^[ ]\b(last_element)\b' -check_if: '^[ ](\bcheck_if\b)(.*\belse do_check\b)' \ No newline at end of file +check_if: '^[ ](\bcheck_if\b)(.*\belse do_check\b)' +is_set: '^[ ]\b(is_set)\b' \ No newline at end of file