diff --git a/.gitignore b/.gitignore index 2b8006516..b2c8b888e 100644 --- a/.gitignore +++ b/.gitignore @@ -13,4 +13,6 @@ build osi .project doc/html -doc/latex \ No newline at end of file +doc/latex +osi_version.proto +version.py \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index d52a11d80..99bed26ab 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,15 +1,22 @@ cmake_minimum_required(VERSION 3.7) -# set name and version of the project project(open_simulation_interface) -set(VERSION_MAJOR 2) -set(VERSION_MINOR 1) -set(VERSION_PATCH 1) +# read the version number from the file "VERSION" +file(STRINGS "VERSION" VERSION_CONTENTS) +foreach(LINE ${VERSION_CONTENTS}) + string(REGEX REPLACE " |\t" "" LINE ${LINE}) + string(REGEX MATCH "^[^=]+" VERSION_NAME ${LINE}) + string(REPLACE "${VERSION_NAME}=" "" VERSION_VALUE ${LINE}) + set(${VERSION_NAME} "${VERSION_VALUE}") +endforeach() + +configure_file(osi_version.proto.in ${CMAKE_CURRENT_SOURCE_DIR}/osi_version.proto) find_package(Protobuf 2.6.1 REQUIRED) set(OSI_PROTO_FILES + osi_version.proto osi_common.proto osi_datarecording.proto osi_detectedlandmark.proto @@ -77,22 +84,22 @@ if(NOT DOXYGEN_FOUND) message(WARNING "Doxygen could not be found.") else() - - if(NOT EXISTS ${FILTER_PROTO2CPP_PY_PATH}/proto2cpp.py) - - message(WARNING "${FILTER_PROTO2CPP_PY_PATH}/proto2cpp.py could not be found.") - - else() - - set(doxyfile_in ${CMAKE_CURRENT_SOURCE_DIR}/doxygen_config.cmake.in) - set(doxyfile ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile) - - configure_file(${doxyfile_in} ${doxyfile} @ONLY) - - ADD_CUSTOM_TARGET(api_doc ALL - COMMAND ${DOXYGEN_EXECUTABLE} ${doxyfile} - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) - - endif(NOT EXISTS ${FILTER_PROTO2CPP_PY_PATH}/proto2cpp.py) - + + if(NOT EXISTS ${FILTER_PROTO2CPP_PY_PATH}/proto2cpp.py) + + message(WARNING "${FILTER_PROTO2CPP_PY_PATH}/proto2cpp.py could not be found.") + + else() + + set(doxyfile_in ${CMAKE_CURRENT_SOURCE_DIR}/doxygen_config.cmake.in) + set(doxyfile ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile) + + configure_file(${doxyfile_in} ${doxyfile} @ONLY) + + ADD_CUSTOM_TARGET(api_doc ALL + COMMAND ${DOXYGEN_EXECUTABLE} ${doxyfile} + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) + + endif(NOT EXISTS ${FILTER_PROTO2CPP_PY_PATH}/proto2cpp.py) + endif(NOT DOXYGEN_FOUND) \ No newline at end of file diff --git a/README.md b/README.md index c3402e65e..c6d6e7b32 100644 --- a/README.md +++ b/README.md @@ -41,12 +41,12 @@ sensor model component, i.e. it takes a SensorData message as input and returns Specific errors should be handled as follows: - Ghost objects / false positive: An additional SensorDataObject is added to the list of objects in SensorData.object - with SensorDataObject.model_internal_object.ground_truth_type set to kTypeGhost. + with SensorDataObject.model_internal_object.ground_truth_type set to kTypeGhost. - False negative: The object is marked as not seen by the sensor by setting the property - SensorDataObject.model_internal_object.is_seen to false. The implementation - of field-of-view calculation modules should respect this flag and never reset - an object marked as not-seen to seen. + SensorDataObject.model_internal_object.is_seen to false. The implementation + of field-of-view calculation modules should respect this flag and never reset + an object marked as not-seen to seen. Versioning diff --git a/VERSION b/VERSION new file mode 100644 index 000000000..9bd69d4eb --- /dev/null +++ b/VERSION @@ -0,0 +1,3 @@ +VERSION_MAJOR = 2 +VERSION_MINOR = 2 +VERSION_PATCH = 0 \ No newline at end of file diff --git a/osi_common.proto b/osi_common.proto index 0cb20e9eb..1441247f4 100644 --- a/osi_common.proto +++ b/osi_common.proto @@ -4,26 +4,6 @@ option optimize_for = SPEED; package osi; -// -// \brief The interface version number. -// -// The field containing the version number. Should be left on default, not to be modified by sender. -// Increments will happen as part of changes to the whole interface. -// -message InterfaceVersion -{ - // Major version number. - // - optional uint32 major = 1 [default = 2]; - - // Minor version number. - // - optional uint32 minor = 2 [default = 1]; - - // Patch version number. - // - optional uint32 patch = 3 [default = 1]; -} // // \brief A cartesian 3D vector for positions, velocities or accelerations. @@ -33,31 +13,31 @@ message InterfaceVersion message Vector3d { // The x coordinate. - // + // optional double x = 1; // The y coordinate. - // + // optional double y = 2; // The z coordinate. - // + // optional double z = 3; } // -// \brief A cartesian 2D vector for positions, velocities or accelerations. +// \brief A cartesian 2D vector for positions, velocities or accelerations. // // Units are [m] for positions, [m/s] for velocities and [m/s^2] for accelerations. // message Vector2d { // The x coordinate. - // + // optional double x = 1; // The y coordinate. - // + // optional double y = 2; } @@ -70,11 +50,11 @@ message Vector2d message Timestamp { // The number of seconds since start of the simulation / system / vehicle. Unit: [s]. - // + // optional int64 seconds = 1; // The number of nanoseconds since the start of the last second. Unit: [ns]. - // + // optional int32 nanos = 2; } @@ -86,15 +66,15 @@ message Timestamp message Dimension3d { // The width of the bounding box. - // + // optional double width = 1; - + // The length of the bounding box. - // + // optional double length = 2; - + // The height of the bounding box. - // + // optional double height = 3; } @@ -123,15 +103,15 @@ message Dimension3d message Orientation3d { // The roll angle/rate/acceleration. - // + // optional double roll = 1; - + // The pitch angle/rate/acceleration. - // + // optional double pitch = 2; - + // The yaw angle/rate/acceleration. - // + // optional double yaw = 3; } @@ -146,7 +126,7 @@ message Orientation3d message Identifier { // The identifier's value. - // + // optional uint64 value = 1; } @@ -158,11 +138,11 @@ message Identifier message MountingPosition { // Offset position relative to specified reference coordinate system. - // + // optional Vector3d position = 1; // Orientation offset relative to specified reference coordinate system. - // + // optional Orientation3d orientation = 2; } @@ -175,15 +155,15 @@ message MountingPosition message Polar3d { // The radial distance. - // + // optional double distance = 1; // The azimuth (horizontal) angle. - // + // optional double azimuth = 2; // The elevation (vertical) angle. - // + // optional double elevation = 3; } @@ -195,15 +175,15 @@ message Polar3d message BaseStationary { // The 3D dimension of the landmark (bounding box): - // + // optional Dimension3d dimension = 1; // The reference point for position and rotation (orientation): center (x, y, z) of bounding box. - // + // optional Vector3d position = 2; // The relative orientation of the landmark w.r.t its parent frame. - // + // optional Orientation3d orientation = 3; // Usage as ground truth: @@ -230,29 +210,27 @@ message BaseStationary message BaseMoving { // The 3D dimension of the object (bounding box). - // + // optional Dimension3d dimension = 1; // The reference point for position and rotation (orientation): center (x, y, z) of bounding box. - // + // optional Vector3d position = 2; // The relative orientation of the object w.r.t its parent frame. + // optional Orientation3d orientation = 3; // The relative velocity of the object w.r.t. its parent frame and parent velocity. // Obviously, the velocity becomes global/absolute if the parent frame does not move. - // optional Vector3d velocity = 4; // The relative acceleration of the object w.r.t. its parent frame and parent acceleration. // Obviously, the acceleration becomes global/absolute if the parent frame is not accelerating. - // optional Vector3d acceleration = 5; // The relative orientation rate of the object w.r.t. its parent frame and parent orientation rate. // Obviously, the orientation rate becomes global/absolute if the parent frame is not rotating. - // optional Orientation3d orientation_rate = 6; // Usage as ground truth: diff --git a/osi_datarecording.proto b/osi_datarecording.proto index 614b35329..2a4a5e4bf 100644 --- a/osi_datarecording.proto +++ b/osi_datarecording.proto @@ -12,7 +12,7 @@ package osi; message SensorDataSeries { // List of sensor data messages for subsequent timesteps. - // + // repeated SensorData sensor_data = 1; } @@ -25,7 +25,7 @@ message SensorDataList { // List of sensor data for multiple sensors at a specific timestep. // - repeated SensorData sensor = 1; + repeated SensorData sensor = 1; } // @@ -35,5 +35,5 @@ message SensorDataSeriesList { // List of sensor data for multiple sensors at subsequent timesteps. // - repeated SensorDataSeries sensor = 1; + repeated SensorDataSeries sensor = 1; } diff --git a/osi_detectedlandmark.proto b/osi_detectedlandmark.proto index e7e49e18b..a0991e44f 100644 --- a/osi_detectedlandmark.proto +++ b/osi_detectedlandmark.proto @@ -17,76 +17,76 @@ message DetectedTrafficSign optional Identifier ground_truth_id = 1; // A list of candidates for this traffic sign as estimated by the sensor. - // - repeated CandidateSign candidate_sign = 2; + // + repeated CandidateSign candidate_sign = 2; // A list of candidates for (a) possible supplementary sign(s) as estimated by the sensor. - // + // repeated CandidateSupplementarySign candidate_supplementary_sign = 3; // The detected geometry of the traffic sign. - // + // optional Geometry geometry = 4; // The estimated probability that this traffic sign really exists. Range [0,1]. - // + // optional double existence_probability = 5; // The measurement state of the traffic sign. - // + // optional MeasurementState measurement_state = 6; // The standard deviation of the base parameters of the detected traffic sign. - // + // optional BaseStationary standard_deviation = 7; // Links to the corresponding lanes. - // + // repeated RelevantLane relevant_lane = 8; // Definition of traffic sign geometries. - // + // enum Geometry { // Geometry of the traffic sign is unknown (must not be used in ground truth). - // - GEOMETRY_UNKNOWN = 0; - + // + GEOMETRY_UNKNOWN = 0; + // Geometry of the traffic sign is unspecified (but known). - // + // GEOMETRY_OTHER = 1; - + // Traffic sign has a triangular geometry. - // + // GEOMETRY_TRIANGLE = 2; - + // Traffic sign has a circular geometry. - // + // GEOMETRY_CIRCLE = 3; - + // Traffic sign has a square geometry. - // + // GEOMETRY_SQUARE = 4; } // Definition of measurement states. - // + // enum MeasurementState { // Measurement state is unknown (must not be used in ground truth). - // + // MEASUREMENT_STATE_UNKNOWN = 0; - + // Measurement state is unspecified (but known, i.e. value is not part of this enum list). - // + // MEASUREMENT_STATE_OTHER = 1; - + // Traffic sign has been measured by the sensor in the current timestep. - // + // MEASUREMENT_STATE_MEASURED = 2; - + // Traffic sign has not been measured by the sensor in the current timestep. Values provided by tracking only. - // + // MEASUREMENT_STATE_PREDICTED = 3; } } @@ -112,7 +112,7 @@ message CandidateSign message CandidateSupplementarySign { // The definition of one of more supplementary signs that together define this candidate. - // + // repeated SupplementarySign sign = 1; // The estimated probability that this candidate is the true value. Range [0,1]. @@ -130,23 +130,23 @@ message DetectedTrafficLight optional Identifier ground_truth_id = 1; // Description of the detected traffic light. - // + // optional TrafficLight traffic_light = 2; // Determines for which directions the traffic light applies. - // + // repeated RelevantDirection relevant_direction = 3; // Links to the corresponding lanes. - // + // repeated RelevantLane relevant_lane = 4; // Existence probability. Range [0,1]. - // + // optional double existence_probability = 5; // The standard deviation of the base parameters of the detected traffic light. - // + // optional BaseStationary standard_deviation = 6; // @@ -155,31 +155,31 @@ message DetectedTrafficLight message RelevantDirection { // The direction the traffic light corresponds to. - // + // optional Direction direction = 1; // Relevance probability. Range [0,1]. - // + // optional double relevance_probability = 2; // Specifies the different directions. - // + // enum Direction { // Direction is unknown (must not be used in ground truth). - // + // DIRECTION_UNKNOWN = 0; // Other (unspecified but known) direction. - // + // DIRECTION_OTHER = 1; // Direction is straight. - // + // DIRECTION_STRAIGHT = 2; // Direction is left. - // + // DIRECTION_LEFT = 3; // Direction is right. - // + // DIRECTION_RIGHT = 4; } } @@ -191,11 +191,11 @@ message DetectedTrafficLight message RelevantLane { // Tracking id of the lane segment. - // + // optional Identifier lane_id = 1; // Relevance probability. Range [0,1]. - // + // optional double relevance_probability = 2; } @@ -205,7 +205,7 @@ message RelevantLane message DetectedRoadMarking { // Tracking id of the road marking. - // + // optional Identifier tracking_id = 1; // The id of the original road marking in the ground truth. @@ -213,19 +213,19 @@ message DetectedRoadMarking optional Identifier ground_truth_id = 2; // A list of candidates for this road marking as estimated by the sensor. - // + // repeated CandidateRoadMarking candidate_road_marking = 3; // Existence probability. Range [0,1]. - // + // optional double existence_probability = 4; // Links to the corresponding lanes. - // + // repeated RelevantLane relevant_lane = 5; // The standard deviation of the base parameters of the detected road marking. - // + // optional BaseStationary standard_deviation = 6; } @@ -235,7 +235,7 @@ message DetectedRoadMarking message CandidateRoadMarking { // The description of the road marking. - // + // optional RoadMarking road_marking = 1; // The estimated probability that this candidate is the true value. Range [0,1]. diff --git a/osi_detectedlane.proto b/osi_detectedlane.proto index 9adf40259..671704ad3 100644 --- a/osi_detectedlane.proto +++ b/osi_detectedlane.proto @@ -18,10 +18,10 @@ message DetectedLane repeated Identifier ground_truth_id = 1; // The detected lane. - // + // optional Lane lane = 2; // Estimated probability that this lane really exists. Range [0,1]. - // + // optional double existence_probability = 3; } diff --git a/osi_detectedobject.proto b/osi_detectedobject.proto index eb7b3fdd5..67ca438df 100644 --- a/osi_detectedobject.proto +++ b/osi_detectedobject.proto @@ -16,7 +16,7 @@ message DetectedObject { // Specific id of the object as assigned by the sensor internally. Need not match with ground_truth_id. // - optional Identifier tracking_id = 1; + optional Identifier tracking_id = 1; // The id of the original object in the ground truth list of vehicles / objects / .. // Multiple entries if detected object is a merge of multiple ground truth objects. @@ -74,45 +74,45 @@ message DetectedObject // within the bounding volume unknown to the sensor. If this value is set, the center of the bounding box should // be used as reference point by convention, unless the specific use case requires otherwise. REFERENCE_POINT_UNKNOWN = 0; - + // Other (unspecified but known) reference point. - // + // REFERENCE_POINT_OTHER = 1; - + // Center of the bounding box. - // + // REFERENCE_POINT_CENTER = 2; - + // Middle-Left of the bounding box. - // + // REFERENCE_POINT_MIDDLE_LEFT = 3; - + // Middle-Right of the bounding box. - // + // REFERENCE_POINT_MIDDLE_RIGHT = 4; - + // Rear-Middle of the bounding box. - // + // REFERENCE_POINT_REAR_MIDDLE = 5; - + // Rear-Left of the bounding box. - // + // REFERENCE_POINT_REAR_LEFT = 6; - + // Rear-Right of the bounding box. - // + // REFERENCE_POINT_REAR_RIGHT = 7; - + // Front-Middle of the bounding box. - // + // REFERENCE_POINT_FRONT_MIDDLE = 8; - + // Front-Left of the bounding box. - // + // REFERENCE_POINT_FRONT_LEFT = 9; - + // Front-Right of the bounding box. - // + // REFERENCE_POINT_FRONT_RIGHT = 10; } @@ -122,31 +122,31 @@ message DetectedObject message ClassProbability { // Probability that the object has unknown type. Range [0,1]. - // + // optional double prob_unknown = 1; - + // Probability that the object is a car. Range [0,1]. - // + // optional double prob_car = 2; - + // Probability that the object is a truck. Range [0,1]. - // + // optional double prob_truck = 3; - + // Probability that the object is a motorbike. Range [0,1]. - // + // optional double prob_motorbike = 4; - + // Probability that the object is a bicycle. Range [0,1]. - // + // optional double prob_bicycle = 5; - + // Probability that the object is a pedestrian. Range [0,1]. - // + // optional double prob_pedestrian = 6; - + // Probability that the object is a stationary object. Range [0,1]. - // + // optional double prob_stationary = 7; } } diff --git a/osi_detectedoccupant.proto b/osi_detectedoccupant.proto index 5de958b72..3c0deb677 100644 --- a/osi_detectedoccupant.proto +++ b/osi_detectedoccupant.proto @@ -13,10 +13,10 @@ package osi; message DetectedOccupant { // The detected vehicle occupant - // + // optional Occupant occupant = 1; // The id of the original vehicle occupant in the ground truth. - // + // optional Identifier ground_truth_occupant_id = 2; } diff --git a/osi_environment.proto b/osi_environment.proto index ba7c003c5..91b588f69 100644 --- a/osi_environment.proto +++ b/osi_environment.proto @@ -10,70 +10,70 @@ package osi; message EnvironmentalConditions { // The ambient illumination of the environment. - // + // optional AmbientIllumination ambient_illumination = 1; // The time of day. - // + // optional TimeOfDay time_of_day = 2; // Atmospheric pressure in Pascal at z=0.0 in world frame - // + // optional double atmospheric_pressure = 3; // Temperature in Kelvin at z=0.0 in world frame - // + // optional double temperature = 4; // Precipitation - // + // optional Precipitation precipitation = 5; // Definition of precipitation states. See https://en.wikipedia.org/wiki/Rain#Measurement - // + // enum Precipitation { // Light intensity rain, when the precipitation rate is < 2.5 mm per hour - // + // PRECIPITATION_RAIN_LIGHT = 0; // Medium intensity rain, when the precipitation rate is between 2.5 mm and 10 mm per hour - // + // PRECIPITATION_RAIN_MEDIUM = 1; // High intensity rain, when the precipitation rate is between 10 mm and 50 mm per hour - // + // PRECIPITATION_RAIN_HIGH = 2; // Violent intensity rain, when the precipitation rate is > 50 mm per hour - // + // PRECIPITATION_RAIN_VIOLENT = 3; } // Definition of ambient illumination states. - // + // enum AmbientIllumination { // Ambient illumination is unknown (must not be used in ground truth). - // + // AMBIENT_ILLUMINATION_UNKNOWN = 0; - + // Other (unspecified but known) ambient illumination. - // + // AMBIENT_ILLUMINATION_OTHER = 1; - + // Ambient illumination index is "bright". // E.g. daytime with sunshine. AMBIENT_ILLUMINATION_BRIGHT = 2; - + // Ambient illumination index is "medium". // E.g. daytime with overcast sky. AMBIENT_ILLUMINATION_MEDIUM = 3; - + // Ambient illumination index is "low". // E.g. during twilight (dawn/dusk) or in a tunnel. AMBIENT_ILLUMINATION_LOW = 4; - + // Ambient illumination index is "dark". // E.g. night time, no sunlight. AMBIENT_ILLUMINATION_DARK = 5; diff --git a/osi_groundtruth.proto b/osi_groundtruth.proto index f0bbcc9c0..2dc6271ce 100644 --- a/osi_groundtruth.proto +++ b/osi_groundtruth.proto @@ -2,6 +2,7 @@ syntax = "proto2"; option optimize_for = SPEED; +import "osi_version.proto"; import "osi_common.proto"; import "osi_environment.proto"; import "osi_landmark.proto"; @@ -34,7 +35,7 @@ message GroundTruth { // The interface version used by the sender (simulation environment). // - optional InterfaceVersion version = 1; + optional InterfaceVersion version = 1; // The data timestamp of the simulation environment. Zero time is arbitrary but must be identical for all messages. // Zero time does not need to coincide with the unix epoch. Recommended is the starting time point of the diff --git a/osi_landmark.proto b/osi_landmark.proto index f681734b3..f92b748d3 100644 --- a/osi_landmark.proto +++ b/osi_landmark.proto @@ -13,7 +13,7 @@ message TrafficSign { // The id of the traffic sign. // - optional Identifier id = 1; + optional Identifier id = 1; // The base parameters of the traffic sign. // @@ -51,227 +51,227 @@ message TrafficSign enum Type { // Type of traffic sign is unknown (must not be used in ground truth). - // + // TYPE_UNKNOWN = 0; - + // Other (unspecified but known) type of traffic sign. - // + // TYPE_OTHER = 1; - + // Start of speed limit (StVO 274). - // + // TYPE_SPEED_LIMIT_BEGIN = 2; - + // End of speed limit (StVO 278). - // + // TYPE_SPEED_LIMIT_END = 3; - + // Town entrance (StVO 310). - // + // TYPE_TOWN_BEGIN = 4; - + // Town exit (StVO 311). - // + // TYPE_TOWN_END = 5; - + // Start of zone with speed limit 30 (StVO 274.1). - // + // TYPE_ZONE_30_BEGIN = 6; - + // End of zone with speed limit 30 (StVO 274.2). - // + // TYPE_ZONE_30_END = 7; - + // Mandatory minimum speed (StVO 275). - // + // TYPE_MINIMUM_SPEED = 8; - + // Start of area with calmed / reduced traffic (verkehrsberuhigter Bereich - StVO 325.1). - // + // TYPE_TRAFFIC_CALMED_DISTRICT_BEGIN = 9; - + // End of area with calmed / reduced traffic (verkehrsberuhigter Bereich - StVO 325.2). - // + // TYPE_TRAFFIC_CALMED_DISTRICT_END = 10; - + // Start of area without traffic to reduce harmful air pollution (StVO 270.1). - // + // TYPE_ENVIRONMENTAL_ZONE_BEGIN = 11; // End of area without traffic to reduce harmful air pollution (StVO 270.2). - // + // TYPE_ENVIRONMENTAL_ZONE_END = 12; - + // Start of overtaking ban (StVO 276). - // + // TYPE_OVERTAKING_BAN_BEGIN = 13; - + // End of overtaking ban (StVO 280). - // + // TYPE_OVERTAKING_BAN_END = 14; - + // Start of overtaking ban for trucks (StVO 277). - // + // TYPE_OVERTAKING_BAN_FOR_TRUCKS_BEGIN = 15; - + // End of overtaking ban for trucks (StVO 281). - // + // TYPE_OVERTAKING_BAN_FOR_TRUCKS_END = 16; - + // End of all speed and overtaking restrictions (StVO 282). - // + // TYPE_ALL_RESTRICTIONS_END = 17; - + // Begin of priority road with right of way (StVO 306). - // + // TYPE_RIGHT_OF_WAY_BEGIN = 18; - + // End of priority road with right of way (StVO 307). - // + // TYPE_RIGHT_OF_WAY_END = 19; - + // Right of way at the next intersection (StVO 301). - // + // TYPE_RIGHT_OF_WAY_NEXT_INTERSECTION = 20; - + // Begin of no parking zone (StVO 290.1). - // + // TYPE_NO_PARKING_ZONE_BEGIN = 21; - + // End of no parking zone (StVO 290.2). - // + // TYPE_NO_PARKING_ZONE_END = 22; - + // No parking sign (StVO 286). - // + // TYPE_NO_PARKING = 23; - + // No stopping sign (StVO 283). - // + // TYPE_NO_STOPPING = 24; - + // Give way sign (StVO 205). - // + // TYPE_GIVE_WAY = 25; - + // Stop sign (StVO 206). - // + // TYPE_STOP = 26; - + // Danger sign (StVO 101). - // + // TYPE_DANGER_SPOT = 27; - + // Road works sign (StVO 123) - // + // TYPE_ROAD_WORKS = 28; - + // Roundabout (StVO 215). - // + // TYPE_ROUNDABOUT = 29; - + // Traffic light ahead sign (StVO 131). - // + // TYPE_ATTENTION_TRAFFIC_LIGHT = 30; - + // Pedestrian crossing (StVO 350). - // + // TYPE_PEDESTRIAN_CROSSING_INFO = 31; - + // Minimum safety distance for trucks (StVO 273). - // + // TYPE_MINIMUM_DISTANCE_FOR_TRUCKS = 32; - + // Entry not allowed (StVO 267). - // + // TYPE_DO_NOT_ENTER = 33; - + // Entry prohibited for all vehicle types (StVO 250). - // + // TYPE_PROHIBITED_FOR_ALL = 34; - + // Entry prohibited for all motor vehicles (StVO 251). - // + // TYPE_PROHIBITED_FOR_MOTOR_VEHICLES = 35; - + // Entry prohibited for trucks (StVO 253). - // + // TYPE_PROHIBITED_FOR_TRUCKS = 36; - + // Entry prohibited for bicycles (StVO 254). - // + // TYPE_PROHIBITED_FOR_BICYCLES = 37; - + // Entry prohibited for motor bikes (StVO 255). - // + // TYPE_PROHIBITED_FOR_MOTOR_BIKES = 38; - + // Entry prohibited for pedestrians (StVO 259). - // + // TYPE_PROHIBITED_FOR_PEDESTRIANS = 39; - + // Entry prohibited for all motor vehicles and bikes (StVO 260). - // + // TYPE_PROHIBITED_FOR_MOTOR_VEHICLES_BIKES = 40; - + // Begin of highway (StVO 330.1). - // + // TYPE_HIGHWAY_BEGIN = 41; - + // End of highway (StVO 330.2). - // + // TYPE_HIGHWAY_END = 42; - + // Highway exit sign (StVO 333). - // + // TYPE_HIGHWAY_EXIT = 43; - + // Pole indicating highways exit in 100m (StVO 450). - // + // TYPE_POLE_EXIT_100M = 44; - + // Pole indicating highways exit in 200m (StVO 450). - // + // TYPE_POLE_EXIT_200M = 45; - + // Pole indicating highways exit in 300m (StVO 450). - // + // TYPE_POLE_EXIT_300M = 46; - + // Pole for warning and guiding purposes (red/white stripes - StVO 605). - // + // TYPE_POLE_WARNING = 47; - + // Begin of expressway for motor vehicles (StVO 331.1). - // + // TYPE_EXPRESSWAY_BEGIN = 48; - + // End of expressways for motor vehicles (StVO 331.2). - // + // TYPE_EXPRESSWAY_END = 49; - + // Parking space (StVO 314). - // + // TYPE_CAR_PARKING = 50; } // Definition of the variability of the traffic sign. - // + // enum Variability { // Variability type of sign is unknown (must not be used in ground truth). - // + // VARIABILITY_UNKNOWN = 0; - + // Other (unspecified but known) variability. - // + // VARIABILITY_OTHER = 1; - + // Fixed sign, i.e. always present. - // + // VARIABILITY_FIXED = 2; - + // Temporary or variable sign, e.g. on a sign bridge. - // + // VARIABILITY_VARIABLE = 3; } } @@ -283,122 +283,122 @@ message SupplementarySign { // Type of the supplementary sign. // - optional Type type = 1; + optional Type type = 1; // Optional first value defining additional properties, e.g. length, mass, or starting time in time range. // - optional double value_1 = 2; + optional double value_1 = 2; // Optional second value defining additional properties, e.g. end time in time range. // - optional double value_2 = 3; + optional double value_2 = 3; // Definition of supplementary sign types. // See TrafficSign.Type for further information. enum Type { // Type of supplementary sign is unknown (must not be used in ground truth). - // + // TYPE_UNKNOWN = 0; - + // Other (unspecified but known) type of supplementary sign. - // + // TYPE_OTHER = 1; - + // There is no supplementary sign (must not be used in ground truth). - // + // TYPE_NO_SIGN = 2; - + // Traffic sign is valid for a certain distance (given by value_1 in meter). - // + // TYPE_VALID_FOR_DISTANCE = 3; - + // Distance to the start of validity of the traffic sign (given by value_1 in meter). - // + // TYPE_VALID_IN_DISTANCE = 4; - + // Time range for validity of traffic sign (starting from value_1 and ending with value_2, both defining // time of day in minutes from midnight). TPYE_TIME_RANGE = 5; - + // Restriction of the validity of the traffic sign depending on the vehicle's weight (more than value_1 in kilogram). - // + // TYPE_WEIGHT = 6; - + // Restriction of the validity of the traffic sign to wet / rainy conditions. - // + // TYPE_RAIN = 7; - + // Restriction of the validity of the traffic sign to foggy conditions. - // + // TYPE_FOG = 8; - + // Restriction of the validity of the traffic sign to snowy / icy conditions. - // + // TYPE_SNOW = 9; - + // Combined restriction of the validity of the traffic sign to rainy or snowy conditions denoted by a single // supplementary sign (instead of two signs of TYPE_WET and TYPE_SNOW respectively). TYPE_SNOW_RAIN = 10; - + // Direction, left-pointing. - // + // TYPE_LEFT_ARROW = 11; - + // Direction, right-pointing. - // + // TYPE_RIGHT_ARROW = 12; - + // Direction of potential danger, left-pointing. - // + // TYPE_LEFT_BEND_ARROW = 13; - + // Direction of potential danger, right-pointing. - // + // TYPE_RIGHT_BEND_ARROW = 14; - + // Valid for trucks. - // + // TYPE_TRUCK = 15; - + // Only trucks allowed. - // + // TYPE_TRACTORS_MAY_BE_PASSED = 16; - + // Hazardous. - // + // TYPE_HAZARDOUS = 17; - + // Valid for trailer. - // + // TYPE_TRAILER = 18; - + // Valid at night. - // + // TYPE_NIGHT = 19; - + // Zone. - // + // TYPE_ZONE = 20; - + // Stop 4 way. - // + // TYPE_STOP_4_WAY = 21; - + // Valid for motorcycle. - // + // TYPE_MOTORCYCLE = 22; - + // Only motorcycle allowed. - // + // TYPE_MOTORCYCLE_ALLOWED = 23; - + // Valid for cars. - // + // TYPE_CAR = 24; - + // Ends in X meter. - // + // TYPE_STOP_IN = 25; } } @@ -409,27 +409,27 @@ message SupplementarySign message TrafficLight { // The id of the traffic light. - // + // optional Identifier id = 1; // The base parameters of the traffic light. - // + // optional BaseStationary base = 2; // The type of the traffic light. - // + // optional Type type = 3; // The shape of the traffic light. - // + // optional Shape shape = 4; // The state of the traffic light. - // + // optional LightState light_state = 5; // Presence of a green arrow sign for right turns on the traffic light. - // + // optional GreenArrowPresence green_arrow = 6; // The ids of the lanes that the traffic light is assigned to. @@ -437,92 +437,92 @@ message TrafficLight repeated Identifier assigned_lane = 7; // Definition of traffic light types. - // + // enum Type { // Unknown type of traffic light (must not be used in ground truth). - // + // TYPE_UNKNOWN = 0; - + // Other (unspecified but known) type of traffic light. - // + // TYPE_OTHER = 1; - + // Normal traffic light for motor vehicle traffic. - // + // TYPE_NORMAL = 2; - + // Light for pedestrian traffic. - // + // TYPE_PEDESTRIAN = 3; - + // Light for bicycle traffic. - // + // TYPE_BICYCLE = 4; } // Definition of traffic light shapes. - // + // enum Shape { // Unknown shape of traffic light (must not be used in ground truth). - // + // SHAPE_UNKNOWN = 0; - + // Other (unspecified but known) shape of traffic light. - // + // SHAPE_OTHER = 1; - + // This is a normal traffic light without specification of direction. - // + // SHAPE_CIRCULAR = 2; - + // This traffic light applies to the lane straight ahead. - // + // SHAPE_ARROW_STRAIGHT = 3; - + // This traffic light applies to left turns. - // + // SHAPE_ARROW_LEFT = 4; - + // This traffic light applies to diagonal left turns. - // + // SHAPE_ARROW_DIAG_LEFT = 5; - + // This traffic light applies to a lane allowing to drive straight ahead or to turn left. - // + // SHAPE_ARROW_STRAIGHT_LEFT = 6; - + // This traffic light applies to right turns. - // + // SHAPE_ARROW_RIGHT = 7; - + // This traffic light applies to diagonal right turns. - // + // SHAPE_ARROW_DIAG_RIGHT = 8; - + // This traffic light applies to a lane allowing to drive straight ahead or to turn right. - // + // SHAPE_ARROW_STRAIGHT_RIGHT = 9; - + // This traffic light applies to a lane allowing to turn left or right. - // + // SHAPE_ARROW_LEFT_RIGHT = 10; - + // This traffic light indicates that the assigned lane is open for driving. - // + // SHAPE_ARROW_DOWN = 11; - + // This traffic light indicates a necessary lane change to the left ahead. - // + // SHAPE_ARROW_DOWN_LEFT = 12; - + // This traffic light indicates a necessary lane change to the right ahead. - // + // SHAPE_ARROW_DOWN_RIGHT = 13; - + // This traffic light indicates that the assigned lane is not open for driving. - // + // SHAPE_ARROW_CROSS = 14; } @@ -534,90 +534,90 @@ message TrafficLight message LightState { // The color of the traffic light. - // + // optional Color color = 1; - + // The operating mode of the traffic light. - // + // optional Mode mode = 2; - + // Definition of colors for traffic lights. - // + // enum Color { // Color is unknown (must not be used in ground truth). - // + // COLOR_UNKNOWN = 0; - + // Other (unspecified but known) color. - // + // COLOR_OTHER = 1; - + // Traffic light is off / not active. In this case mode must also be set to MODE_OFF. - // + // COLOR_OFF = 2; - + // Red light is on. - // + // COLOR_RED = 3; - + // Red and yellow light are on at the same time. - // + // COLOR_RED_YELLOW = 4; - + // Yellow light is on. - // + // COLOR_YELLOW = 5; - + // Green light is on. - // + // COLOR_GREEN = 6; } // Definition of light modes for traffic lights. - // + // enum Mode { // Mode is unknown (must not be used in ground truth). - // + // MODE_UNKNOWN = 0; - + // Other (unspecified but known) mode. - // + // MODE_OTHER = 1; - + // Traffic light is off / not active. In this case color must also be set to COLOR_OFF. - // + // MODE_OFF = 2; - + // Light is on normally. - // + // MODE_CONSTANT = 3; - + // Light is blinking. - // + // MODE_BLINKING = 4; } } // Definition of states for the presence of a green arrow sign for right turns. - // + // enum GreenArrowPresence { // Presence of green arrow sign is unknown (must not be used in ground truth). - // + // GREEN_ARROW_UNKNOWN = 0; - + // Other (unspecified but known) green arrow sign. - // + // GREEN_ARROW_OTHER = 1; - + // No green arrow sign present. - // + // GREEN_ARROW_NOT_PRESENT = 2; - + // Green arrow sign present. - // + // GREEN_ARROW_PRESENT = 3; } } @@ -630,19 +630,19 @@ message TrafficLight message RoadMarking { // The id of the road marking. - // + // optional Identifier id = 1; // The base parameters of the road marking. - // + // optional BaseStationary base = 2; // The type of the road marking. - // + // optional Type type = 3; // The color of the road marking. - // + // optional Color color = 4; // Additional value associated with the road marking, e.g. value of the speed limit. @@ -654,60 +654,60 @@ message RoadMarking repeated Identifier assigned_lane = 6; // Definition of road marking types. - // + // enum Type { // Type of road marking is unknown (must not be used in ground truth). - // + // TYPE_UNKNOWN = 0; - + // Other (unspecified but known) type of road marking. - // + // TYPE_OTHER = 1; - + // A stop line. - // + // TYPE_STOP_LINE = 2; - + // A speed limit sign painted on the road surface. - // + // TYPE_SPEED_LIMIT = 3; - + // A straight arrow painted on the road surface indicating a lane to drive straight. - // + // TYPE_STRAIGHT_ARROW = 4; - + // A straight arrow painted on the road surface indicating a lane to turn right. - // + // TYPE_RIGHT_TURN_ARROW = 5; - + // A straight arrow painted on the road surface indicating a lane to turn left. - // + // TYPE_LEFT_TURN_ARROW = 6; } // Definition of road marking colors - // + // enum Color { // Color of road marking is unknown (must not be used in ground truth). - // + // COLOR_UNKNOWN = 0; - + // Marking with another (unspecified but known) color. - // + // COLOR_OTHER = 1; - + // Marking with white color. - // + // COLOR_WHITE = 2; - + // Marking with yellow / orange-yellow color. - // + // COLOR_YELLOW = 3; - + // Marking with blue color. - // + // COLOR_BLUE = 5; } } diff --git a/osi_lane.proto b/osi_lane.proto index d8e3ae497..313ca208f 100644 --- a/osi_lane.proto +++ b/osi_lane.proto @@ -80,68 +80,68 @@ message Lane repeated Identifier successor_lane_id = 8; // A lane framing describes the surrounding of the lane segment. - // + // optional LaneFraming lane_framing = 9; // Definition of available lane types. - // + // enum Type { // Lane of unknown type (must not be used in ground truth). - // + // TYPE_UNKNOWN = 0; - + // Any other type of lane - // + // TYPE_OTHER = 1; - + // A normal lane. // E.g. lanes with ids 1, 2, 3, 4 and 7 of the highway_exit image. TYPE_NORMAL = 2; - + // A stop/emergency lane on highways/freeways. // E.g. lane with id 5 of the highway_exit image. TYPE_EMERGENCY = 3; - + // A freeway/highway entry lane. - // + // TYPE_ENTRANCE = 4; - + // A freeway/highway exit lane. // E.g. lane with id 6 of the highway_exit image. TYPE_EXIT = 5; - + // A car pooling lane. - // + // TYPE_HIGH_OCCUPANCY_VEHICLE = 6; - + // A road area / lane reserved for parking. - // + // TYPE_PARKING = 7; } // Definition of available lane framing types. - // + // enum LaneFraming { // Lane of unknown framing (must not be used in ground truth). - // + // LANE_FRAMING_UNKNOWN = 0; - + // Other (unspecified but known) lane framing. - // + // LANE_FRAMING_OTHER = 1; - + // The lane is not framed. - // + // LANE_FRAMING_OPEN = 2; - + // The lane segment is inside of a tunnel. - // + // LANE_FRAMING_TUNNEL = 3; - + // The lane segment is on a bridge. - // + // LANE_FRAMING_BRIDGE = 4; } } @@ -167,39 +167,39 @@ message LaneBoundary repeated BoundaryPoint boundary_line = 1; // The location of the lane boundary within the lane. - // + // optional BoundaryLocation location = 2; // The type of the lane boundary. - // + // optional Type type = 3; // The color of the lane boundary in case of lane markings. - // + // optional Color color = 4; // The location of the lane boundary within the lane. - // + // enum BoundaryLocation { // The location of the boundary is unknown. Value must not be used in ground truth. - // + // BOUNDARY_LOCATION_UNKNOWN = 0; - + // Other (unspecified but known) boundary location. - // + // BOUNDARY_LOCATION_OTHER = 1; - + // A left lane boundary. - // + // BOUNDARY_LOCATION_LEFT = 2; - + // A right lane boundary. - // + // BOUNDARY_LOCATION_RIGHT = 3; - + // A free lane boundary. - // + // BOUNDARY_LOCATION_FREE = 4; } @@ -208,47 +208,47 @@ message LaneBoundary enum Type { // The type of lane boundary is unknown. Value must not be used in ground truth. - // + // TYPE_UNKNOWN = 0; - + // Unspecified but known type of lane boundary. // Consider proposing an additional type if using TYPE_OTHER. TYPE_OTHER = 1; - + // An invisible lane boundary (e.g. unmarked part of a dashed line). - // + // TYPE_NO_LINE = 2; - + // A solid line at the lane boundary. - // + // TYPE_SOLID_LINE = 3; - + // A dashed line at the lane boundary. - // + // TYPE_DASHED_LINE = 4; - + // A lane boundary consisting of Botts' dots. - // + // TYPE_BOTTS_DOTS = 5; - + // A lane boundary formed by the road's edge. // The road edge is the end of the (paved) road surface. TYPE_ROAD_EDGE = 6; - + // A lane boundary formed by a snow edge that may be on the road surface. - // + // TYPE_SNOW_EDGE = 7; - + // A guard rail. - // + // TYPE_GUARD_RAIL = 8; - + // A curb. - // + // TYPE_CURB = 9; - + // A structure (e.g. building or tunnel wall). - // + // TYPE_STRUCTURE = 10; } @@ -257,35 +257,35 @@ message LaneBoundary enum Color { // Color of Marking is unknown. Value must not be used in ground truth. - // + // COLOR_UNKNOWN = 0; - + // Other (unspecified but known) color. - // + // COLOR_OTHER = 1; - + // Marking without color, used to represent logical boundaries without physical markings. // Value may be used in ground truth only. COLOR_NONE = 2; - + // Marking with white color. - // + // COLOR_WHITE = 3; - + // Marking with yellow / orange-yellow color. - // + // COLOR_YELLOW = 4; - + // Marking with red color - // + // COLOR_RED = 5; - + // Marking with blue color. - // + // COLOR_BLUE = 6; - + // Marking with green color; - // + // COLOR_GREEN = 7; } } @@ -296,7 +296,7 @@ message LaneBoundary message BoundaryPoint { // The position of the BoundaryPoint. - // + // optional Vector3d position = 1; // The overall width of the lane boundary at the position of the BoundaryPoint. diff --git a/osi_lowleveldata.proto b/osi_lowleveldata.proto index 62d8bb83b..5bc5789a9 100644 --- a/osi_lowleveldata.proto +++ b/osi_lowleveldata.proto @@ -27,11 +27,11 @@ package osi; optional MountingPosition mounting_position = 3; // Lidar point cloud. - // + // optional LidarPointCloud lidar_point_cloud = 4; // Radar Reflection list. - // + // optional RadarReflectionList radar_reflection_list = 5; } @@ -83,31 +83,31 @@ message LidarPoint enum ReflectionType { // Reflection type is unknown (must not be used in ground truth). - // + // REFLECTION_TYPE_UNKNOWN = 0; - + // Other (unspecified but known) type of reflection. - // + // REFLECTION_TYPE_OTHER = 1; - + // Invalid scan point, not to be used for object tracking, of unspecified type (none of the other types applies). - // + // REFLECTION_TYPE_INVALID = 2; - + // Reflection from dynamic object. - // + // REFLECTION_TYPE_DYNAMIC_OBJECT = 3; - + // Reflection from static object. - // + // REFLECTION_TYPE_STATIC_OBJECT = 4; - + // Reflection from ground. - // + // REFLECTION_TYPE_GROUND = 5; - + // Reflection from road marking. - // + // REFLECTION_TYPE_ROAD_MARKING = 6; } } diff --git a/osi_modelinternal.proto b/osi_modelinternal.proto index c63054326..72a04cdbc 100644 --- a/osi_modelinternal.proto +++ b/osi_modelinternal.proto @@ -59,31 +59,31 @@ message ModelInternalObject enum ObjectType { // Object is a ghost object and does not exist in ground truth. - // + // OBJECT_TYPE_GHOST = 0; - + // Other (unspecified but known) type of object. - // + // OBJECT_TYPE_OTHER = 1; - + // Object of type Vehicle. - // + // OBJECT_TYPE_VEHICLE = 2; - + // Object of type MovingObject. - // + // OBJECT_TYPE_MOVING = 3; - + // Object of type StationaryObject. - // + // OBJECT_TYPE_STATIONARY = 4; - + // Object of type TrafficSign. - // + // OBJECT_TYPE_TRAFFIC_SIGN = 5; - + // Object of type TrafficLight. - // + // OBJECT_TYPE_TRAFFIC_LIGHT = 6; } } diff --git a/osi_object.proto b/osi_object.proto index fe3f69638..8209f1e75 100644 --- a/osi_object.proto +++ b/osi_object.proto @@ -64,36 +64,36 @@ message Vehicle // Definition of vehicle types. - // + // enum Type { // Type of vehicle is unknown (must not be used in ground truth). - // + // TYPE_UNKNOWN = 0; - + // Other (unspecified but known) type of vehicle. - // + // TYPE_OTHER = 1; - + // Vehicle is a normal car. - // - TYPE_CAR = 2; - + // + TYPE_CAR = 2; + // Vehicle is a truck, bus, or large van. - // - TYPE_TRUCK = 3; - + // + TYPE_TRUCK = 3; + // Vehicle is a motorbike or moped. - // - TYPE_MOTOR_BIKE = 4; - + // + TYPE_MOTOR_BIKE = 4; + // Vehicle is a bicycle (without motor). - // - TYPE_BICYCLE = 5; - + // + TYPE_BICYCLE = 5; + // Vehicle is a trailer (possibly attached to another vehicle). - // - TYPE_TRAILER = 6; + // + TYPE_TRAILER = 6; } // @@ -103,109 +103,109 @@ message Vehicle { // State of the object's indicators. // - optional IndicatorState indicator_state = 1; + optional IndicatorState indicator_state = 1; // State of the front fog light. - // + // optional GenericLightState front_fog_light = 2; // State of the rear fog light. - // + // optional GenericLightState rear_fog_light = 3; // State of the head lights. - // + // optional GenericLightState head_light = 4; // State of the high beam. - // + // optional GenericLightState high_beam = 5; // State of the reversing light. - // + // optional GenericLightState reversing_light = 6; // State of the brake lights. - // + // optional BrakeLightState brake_light_state = 7; // State of the (rear) license plate illumination - // + // optional GenericLightState license_plate_illumination_rear = 8; // Definition of indicator states. // - enum IndicatorState - { - // Indicator state is unknown (must not be used in ground truth). - // + enum IndicatorState + { + // Indicator state is unknown (must not be used in ground truth). + // INDICATOR_STATE_UNKNOWN = 0; - + // Other (unspecified but known) state of indicator. - // - INDICATOR_STATE_OTHER = 1; - + // + INDICATOR_STATE_OTHER = 1; + // Indicators are off. - // - INDICATOR_STATE_OFF = 2; - + // + INDICATOR_STATE_OFF = 2; + // Left indicator is on. - // - INDICATOR_STATE_LEFT = 3; - + // + INDICATOR_STATE_LEFT = 3; + // Right indicator is on. - // - INDICATOR_STATE_RIGHT = 4; - + // + INDICATOR_STATE_RIGHT = 4; + // Hazard/warning light, i.e. both indicators, are on. - // - INDICATOR_STATE_WARNING = 5; + // + INDICATOR_STATE_WARNING = 5; } // Definition of generic light states for light that may be on or off. // - enum GenericLightState + enum GenericLightState { // Light state is unknown (must not be used in ground truth). - // - GENERIC_LIGHT_STATE_UNKNOWN = 0; - + // + GENERIC_LIGHT_STATE_UNKNOWN = 0; + // Other (unspecified but known) state of light. - // - GENERIC_LIGHT_STATE_OTHER = 1; - + // + GENERIC_LIGHT_STATE_OTHER = 1; + // Light is off. - // - GENERIC_LIGHT_STATE_OFF = 2; - + // + GENERIC_LIGHT_STATE_OFF = 2; + // Light is on. - // - GENERIC_LIGHT_STATE_ON = 3; + // + GENERIC_LIGHT_STATE_ON = 3; } // Definition of brake light states. - // + // enum BrakeLightState { // Brake light state is unknown (must not be used in ground truth). - // + // BRAKE_LIGHT_STATE_UNKNOWN = 0; - + // Other (unspecified but known) state of brake light. - // + // BRAKE_LIGHT_STATE_OTHER = 1; - + // Brake lights are off. - // + // BRAKE_LIGHT_STATE_OFF = 2; - + // Brake lights are on with normal intensity. - // - BRAKE_LIGHT_STATE_NORMAL = 3; - + // + BRAKE_LIGHT_STATE_NORMAL = 3; + // Brake lights are on with extra bright intensity (indicating stronger braking). - // - BRAKE_LIGHT_STATE_STRONG = 4; + // + BRAKE_LIGHT_STATE_STRONG = 4; } } } @@ -231,20 +231,20 @@ message MovingObject // enum Type { // Type of the object is unknown (must not be used in ground truth). - // + // TYPE_UNKNOWN = 0; - + // Other (unspecified but known) type of moving object. - // - TYPE_OTHER = 1; - + // + TYPE_OTHER = 1; + // Object is a pedestrian. - // - TYPE_PEDESTRIAN = 2; - + // + TYPE_PEDESTRIAN = 2; + // Object is an animal. - // - TYPE_ANIMAL = 3; + // + TYPE_ANIMAL = 3; } } @@ -268,33 +268,33 @@ message StationaryObject // Definition of object types. // enum Type - { + { // Type of the object is unknown (must not be used in ground truth). - // + // TYPE_UNKNOWN = 0; - + // Other (unspecified but known) type of object. - // + // TYPE_OTHER = 1; - + // Object is a bridge. - // + // TYPE_BRIDGE = 2; - + // Object is a building. - // + // TYPE_BUILDING = 3; - + // Object is a pylon. - // + // TYPE_PYLON = 4; - + // Object is a reflector post. - // + // TYPE_REFLECTOR_POST = 5; - + // Object is a delineator (e.g. at a construction site). - // + // TYPE_DELINEATOR = 6; } } diff --git a/osi_occupant.proto b/osi_occupant.proto index f7f924279..36bdb0919 100644 --- a/osi_occupant.proto +++ b/osi_occupant.proto @@ -32,48 +32,48 @@ message Occupant enum Seat { // Seat position is unknown (must not be used in ground truth). - // + // SEAT_UNKNOWN = 0; - + // Other (unspecified but known) seat. - // + // SEAT_OTHER = 1; - + // Seat position is in the front row, left seat. // This is usually the driver's seat in right-hand traffic. SEAT_FRONT_LEFT = 2; - + // Seat position is in the front row, right seat. // This is usually the driver's seat in left-hand traffic. SEAT_FRONT_RIGHT = 3; - + // Seat position is in the front row, middle seat. - // - SEAT_FRONT_MIDDLE = 4; - + // + SEAT_FRONT_MIDDLE = 4; + // Seat position is in the back row, left seat. - // - SEAT_BACK_LEFT = 5; - + // + SEAT_BACK_LEFT = 5; + // Seat position is in the back row, right right. - // - SEAT_BACK_RIGHT = 6; - + // + SEAT_BACK_RIGHT = 6; + // Seat position is in the back row, middle seat. - // - SEAT_BACK_MIDDLE = 7; - + // + SEAT_BACK_MIDDLE = 7; + // Seat position is in the third row, left seat. - // + // SEAT_THIRD_ROW_LEFT = 8; - + // Seat position is in the third row, right seat. - // - SEAT_THIRD_ROW_RIGHT = 9; - + // + SEAT_THIRD_ROW_RIGHT = 9; + // Seat position is in the third row, middle seat. - // - SEAT_THIRD_ROW_MIDDLE = 10; + // + SEAT_THIRD_ROW_MIDDLE = 10; } // Definition of hands related to the steering wheel (mostly driver). @@ -81,31 +81,31 @@ message Occupant enum SteeringControl { // Hands state is unknown (must not be used in ground truth). - // + // STEERING_CONTROL_UNKNOWN = 0; - + // Other (unspecified but known) hand positioning related to the steering wheel. - // - STEERING_CONTROL_OTHER = 1; - + // + STEERING_CONTROL_OTHER = 1; + // Hands are not on the steering wheel. - // - STEERING_CONTROL_NO_HAND = 2; - + // + STEERING_CONTROL_NO_HAND = 2; + // One hand is on the steering wheel. Whether it is the left or right hand is unspecified or unknown. // \b Note: If there is no differentiation between one or both hands on the steering wheel, this value should be used. STEERING_CONTROL_ONE_HAND = 3; - + // Both hands are on the steering wheel. - // - STEERING_CONTROL_BOTH_HANDS = 4; - + // + STEERING_CONTROL_BOTH_HANDS = 4; + // The left hand only is on the steering wheel. - // - STEERING_CONTROL_LEFT_HAND = 5; - + // + STEERING_CONTROL_LEFT_HAND = 5; + // The right hand only is on the steering wheel. - // - STEERING_CONTROL_RIGHT_HAND = 6; + // + STEERING_CONTROL_RIGHT_HAND = 6; } } diff --git a/osi_version.proto.in b/osi_version.proto.in new file mode 100644 index 000000000..efa05b0a4 --- /dev/null +++ b/osi_version.proto.in @@ -0,0 +1,26 @@ +syntax = "proto2"; + +option optimize_for = SPEED; + +package osi; + +// +// \brief The interface version number. +// +// The field containing the version number. Should be left on default, not to be modified by sender. +// Increments will happen as part of changes to the whole interface. +// +message InterfaceVersion +{ + // Major version number. + // + optional uint32 major = 1 [default = @VERSION_MAJOR@]; + + // Minor version number. + // + optional uint32 minor = 2 [default = @VERSION_MINOR@]; + + // Patch version number. + // + optional uint32 patch = 3 [default = @VERSION_PATCH@]; +} \ No newline at end of file diff --git a/setup.py b/setup.py index 2898ae1f4..a19289299 100644 --- a/setup.py +++ b/setup.py @@ -9,10 +9,21 @@ from setuptools import setup from setuptools.command.install import install +# configure the version number +from shutil import copyfile +copyfile('VERSION', 'version.py') +from version import * +with open("osi_version.proto.in", "rt") as fin: + with open("osi_version.proto", "wt") as fout: + for line in fin: + lineConfigured = line.replace('@VERSION_MAJOR@',str(VERSION_MAJOR)) + lineConfigured = lineConfigured.replace('@VERSION_MINOR@',str(VERSION_MINOR)) + lineConfigured = lineConfigured.replace('@VERSION_PATCH@',str(VERSION_PATCH)) + fout.write(lineConfigured) + package_name = 'osi' package_path = os.path.join(os.getcwd(), package_name) - class GenerateProtobuf(install): @staticmethod @@ -33,6 +44,7 @@ def find_protoc(): return protoc osi_files = ( + 'osi_version.proto', 'osi_common.proto', 'osi_datarecording.proto', 'osi_detectedlandmark.proto', @@ -74,7 +86,7 @@ def run(self): setup( name='open-simulation-interface', - version='2.1.1', + version=str(VERSION_MAJOR)+'.'+str(VERSION_MINOR)+'.'+str(VERSION_PATCH), description='A generic interface for the environmental perception of' 'automated driving functions in virtual scenarios.', author='Carlo van Driesten, Timo Hanke, Nils Hirsenkorn,'