From 2309cf51d6314dc4e800779860a77f59be4929c5 Mon Sep 17 00:00:00 2001 From: Carsten Kuebler Date: Thu, 22 Mar 2018 14:53:33 +0100 Subject: [PATCH 01/29] Review documentation and add BaseStationary to supplementary signs Regularize doxygen comments. Add links to OSI message fields and enums. Add "plural" form to repeated field names (add _list/multiple_, add _s etc.). Remove typos and replace special chars. Split CanditateSupplementarySign in 2 messages (every supplementary sign has its own list of candidates and one base_rmse). Add BaseStationary to SupplementarySign and remove its position_supplementary field. --- osi_common.proto | 86 +++-- osi_detectedlandmark.proto | 135 +++++--- osi_detectedlane.proto | 39 ++- osi_detectedoccupant.proto | 11 +- osi_environment.proto | 29 +- osi_featuredata.proto | 34 +- osi_groundtruth.proto | 26 +- osi_landmark.proto | 631 +++++++++++++++++++++++++++---------- osi_lane.proto | 16 +- osi_modelinternal.proto | 26 +- osi_object.proto | 6 +- 11 files changed, 734 insertions(+), 305 deletions(-) diff --git a/osi_common.proto b/osi_common.proto index 8f09240fe..de51495ff 100644 --- a/osi_common.proto +++ b/osi_common.proto @@ -13,21 +13,25 @@ package osi; // // Units are [m] for positions, [m/s] for velocities and [m/s^2] for // accelerations. +// message Vector3d { // The x coordinate. // - // Unit [m] [m/s] or [m/s^2] + // Unit: [m] [m/s] or [m/s^2] + // optional double x = 1; // The y coordinate. // - // Unit [m] [m/s] or [m/s^2] + // Unit: [m] [m/s] or [m/s^2] + // optional double y = 2; // The z coordinate. // - // Unit [m] [m/s] or [m/s^2] + // Unit: [m] [m/s] or [m/s^2] + // optional double z = 3; } @@ -37,16 +41,19 @@ message Vector3d // // Units are [m] for positions, [m/s] for velocities and [m/s^2] for // accelerations. +// message Vector2d { // The x coordinate. // - // Unit [m] [m/s] or [m/s^2] + // Unit: [m] [m/s] or [m/s^2] + // optional double x = 1; // The y coordinate. // - // Unit [m] [m/s] or [m/s^2] + // Unit: [m] [m/s] or [m/s^2] + // optional double y = 2; } @@ -58,12 +65,14 @@ message Vector2d // There is no definition of the zero point in time neither it is the Unix // epoch. A simulation may start at the zero point in time but it is not // mandatory. +// message Timestamp { // The number of seconds since the start of e.g. the simulation / system / // vehicle. // // Unit: [s] + // optional int64 seconds = 1; // The number of nanoseconds since the start of the last second. @@ -71,6 +80,7 @@ message Timestamp // Range: [0, 999.999.999] // // Unit: [ns] + // optional uint32 nanos = 2; } @@ -87,17 +97,20 @@ message Dimension3d { // The length of the box. // - // Unit [m] + // Unit: [m] + // optional double length = 1; // The width of the box. // - // Unit [m] + // Unit: [m] + // optional double width = 2; // The height of the box. // - // Unit [m] + // Unit: [m] + // optional double height = 3; } @@ -117,16 +130,17 @@ message Dimension3d // new x-axis) to follow the definition according to [1] (Tait-Bryan / Euler // convention z-y'-x''). // -// Roll/Pitch are 0 if the objects xy-plane is parallel to its parent's xy-plane. -// Yaw is 0 if the object's local x-axis is parallel to its parent's x-axis. +// Roll/Pitch are 0 if the objects xy-plane is parallel to its parent's +// xy-plane. Yaw is 0 if the object's local x-axis is parallel to its parent's +// x-axis. // // Rotation_yaw_pitch_roll = Rotation_roll*Rotation_pitch*Rotation_yaw // -// vector_global_coord_system := Inverse_Rotation_yaw_pitch_roll(orientation)*(vector_local_coord_system) + local_origin.position +// vector_global_coord_system := Inverse_Rotation_yaw_pitch_roll(Orientation3d)*(vector_local_coord_system) + local_origin.position // -// \attention This definition changed in OSI version 3.0.0. Previous OSI versions -// (V2.xx) had an other definition. +// \attention This definition changed in OSI version 3.0.0. Previous OSI +// versions (V2.xx) had an other definition. // // \par References: // [1] DIN ISO 8855:2013-11 @@ -136,16 +150,19 @@ message Orientation3d // The roll angle/rate/acceleration. // // Unit: [rad] [rad/s] or [rad/s^2] + // optional double roll = 1; // The pitch angle/rate/acceleration. // // Unit: [rad] [rad/s] or [rad/s^2] + // optional double pitch = 2; // The yaw angle/rate/acceleration. // // Unit: [rad] [rad/s] or [rad/s^2] + // optional double yaw = 3; } @@ -154,7 +171,7 @@ message Orientation3d // // Has to be unique among all simulated items at any given time. For ground // truth, the identifier of an item (object, lane, sign, etc.) must remain -// stable over its lifetime. Identifier values may be only be reused if the +// stable over its lifetime. \c Identifier values may be only be reused if the // available address space is exhausted and the specific values have not been in // use for several timesteps. Sensor specific tracking IDs have no restrictions // and should behave according to the sensor specifications. @@ -173,7 +190,7 @@ message Identifier // // \brief Specifies the mounting position of a sensor. // -// Details are specified in each instance where MountingPosition is used. +// Details are specified in each instance where \c MountingPosition is used. // message MountingPosition { @@ -183,7 +200,8 @@ message MountingPosition // Orientation offset relative to the specified reference coordinate system. // - // Origin_sensor := Rotation_yaw_pitch_roll(MountingPosition.orientation)*(Origin_reference_coordinate_system - MountingPosition.position) + // Origin_sensor := Rotation_yaw_pitch_roll(#orientation)*(Origin_reference_coordinate_system - #position) + // optional Orientation3d orientation = 2; } @@ -200,22 +218,26 @@ message MountingPosition // the new y-axis) to follow the definition of \c Orientation3D. For the // sense of each rotation, the right-hand rule applies. // -// vector_cartesian := Rotation(elevation)*Rotation(azimuth)*Unit_vector_x*distance +// vector_cartesian := Rotation(#elevation)*Rotation(#azimuth)*Unit_vector_x*#distance +// message Spherical3d { // The radial distance. // // Unit: [m] + // optional double distance = 1; // The azimuth (horizontal) angle. // // Unit: [rad] + // optional double azimuth = 2; // The elevation (vertical) angle. // // Unit: [rad] + // optional double elevation = 3; } @@ -232,24 +254,27 @@ message BaseStationary { // The 3D dimensions of the stationary object (bounding box), e.g. a // landmark. + // optional Dimension3d dimension = 1; // The reference point for position and orientation, i.e. the center (x,y,z) // of the bounding box. + // optional Vector3d position = 2; // The relative orientation of the stationary object w.r.t. its parent // frame. // - // Origin_base_stationary_entity := Rotation_yaw_pitch_roll(BaseStationary.orientation)*(Origin_parent_coordinate_system - BaseStationary.position) + // Origin_base_stationary_entity := Rotation_yaw_pitch_roll(#orientation)*(Origin_parent_coordinate_system - #position) // // \note There may be some constraints how to align the orientation w.r.t. // to some stationary object's or entity's definition. + // optional Orientation3d orientation = 3; // Usage as ground truth: // The two dimensional (flat) contour of the object. This is an extension of - // the concept of a bounding box as defined by Dimension3d. The contour is + // the concept of a bounding box as defined by \c Dimension3d. The contour is // the projection of the object's outline onto the z-plane in the object // frame (independent of its current position and orientation). // @@ -265,13 +290,14 @@ message BaseStationary // must consist of at least three points. // As sensor data, however, the polygon is open. // The polygon is defined counter-clockwise. + // repeated Vector2d base_polygon = 4; } // // \brief The base attributes of each object that is moving. // -// This includes the MovingObject messages. +// This includes the \c MovingObject messages. // // All coordinates and orientations are relative to the global ground truth // coordinate system. @@ -284,21 +310,24 @@ message BaseMoving // The reference point for position and orientation: the center (x,y,z) of // the bounding box. + // optional Vector3d position = 2; // The relative orientation of the moving object w.r.t. its parent frame. // - // Origin_base_moving_entity := Rotation_yaw_pitch_roll(BaseMoving.orientation)*(Origin_parent_coordinate_system - BaseMoving.position) + // Origin_base_moving_entity := Rotation_yaw_pitch_roll(#orientation)*(Origin_parent_coordinate_system - #position) // // \note There may be some constraints how to align the orientation w.r.t. // to some stationary object's or entity's definition. + // optional Orientation3d orientation = 3; // The relative velocity of the moving object w.r.t. its parent frame and // parent velocity. // The velocity becomes global/absolute if the parent frame does not move. // - // BaseMoving.position(t) := BaseMoving.position(t-dt)+velocity*dt + // #position (t) := #position (t-dt)+ #velocity *dt + // optional Vector3d velocity = 4; // The relative acceleration of the moving object w.r.t. its parent frame @@ -306,23 +335,25 @@ message BaseMoving // The acceleration becomes global/absolute if the parent frame is not // accelerating. // - // BaseMoving.position(t) := BaseMoving.position(t-dt)+velocity*dt+acceleration/2*dt^2 + // #position (t) := #position (t-dt)+ #velocity *dt+ #acceleration /2*dt^2 + // + // #velocity (t) := #velocity (t-dt)+ #acceleration *dt // - // BaseMoving.velocity(t) := BaseMoving.velocity(t-dt)+acceleration*dt optional Vector3d acceleration = 5; // The relative orientation rate of the moving object w.r.t. its parent // frame and parent orientation rate in the center point of the bounding box // (origin of the bounding box frame). // - // Rotation_yaw_pitch_roll(BaseMoving.orientation(t)) := Rotation_yaw_pitch_roll(BaseMoving.orientation_rate*dt)*Rotation_yaw_pitch_roll(BaseMoving.orientation(t-dt)) + // Rotation_yaw_pitch_roll(#orientation (t)) := Rotation_yaw_pitch_roll(#orientation_rate *dt)*Rotation_yaw_pitch_roll(#orientation (t-dt)) + // + // \note #orientation (t) is \b not equal #orientation (t-dt)+#orientation_rate *dt // - // \note BaseMoving.orientation(t) is \b not equal BaseMoving.orientation(t-dt)+BaseMoving.orientation_rate*dt optional Orientation3d orientation_rate = 6; // Usage as ground truth: // The two dimensional (flat) contour of the object. This is an extension of - // the concept of a bounding box as defined by Dimension3d. The contour is + // the concept of a bounding box as defined by \c Dimension3d. The contour is // the projection of the object's outline onto the z-plane in the object // frame (independent of its current position and orientation). // @@ -337,5 +368,6 @@ message BaseMoving // must consist of at least three points. As sensor data, however, the // polygon is open. // The polygon is defined counter-clockwise. + // repeated Vector2d base_polygon = 7; } diff --git a/osi_detectedlandmark.proto b/osi_detectedlandmark.proto index cfb7012c4..8ab30c958 100644 --- a/osi_detectedlandmark.proto +++ b/osi_detectedlandmark.proto @@ -14,7 +14,7 @@ package osi; message DetectedTrafficSign { // Specific ID of the traffic sign as assigned by the sensor internally. - // Need not match with ground_truth_id. + // Need not match with \c #ground_truth_id. // optional Identifier tracking_id = 2; @@ -25,16 +25,16 @@ message DetectedTrafficSign optional Identifier ground_truth_id = 3; // A list of candidates for this traffic sign as estimated by the sensor. - // - repeated CandidateSign candidate_sign = 4; + // + repeated CandidateSign candidate_signs = 4; // A list of candidates for (a) possible supplementary sign(s) as estimated // by the sensor. // - repeated CandidateSupplementarySign candidate_supplementary_sign = 5; + repeated CandidateSupplementarySigns candidate_multiple_supplementary_signs = 5; // The detected geometry of the traffic sign. - // + // optional Geometry geometry = 6; // The estimated probability that this traffic sign really exists, not based @@ -50,24 +50,25 @@ message DetectedTrafficSign optional MeasurementState measurement_state = 8; // The root mean squared error of the base parameters of the detected - // traffic sign. + // traffic sign. \c TrafficSign::base has to be identical for + // all \c #candidate_sign traffic signs. // - optional BaseStationary rmse = 9; + optional BaseStationary base_rmse = 9; // Links to the corresponding lanes. - // - repeated RelevantLane relevant_lane = 10; + // + repeated RelevantLane relevant_lanes = 10; // A list of sensors which detected this detected entity. // // If SensorData has detected entities and all detections are missing, then - // e.g. the number of sensors can confirm the existence_probability. + // e.g. the number of sensors can confirm the #existence_probability. // // \note This information can be determined via the detected entities' // detections ( \c ...Detection::object_id = 'this detected entity' ) and // the sensors (their IDs) to which these detections belong. // - repeated Identifier sensor_id = 11; + repeated Identifier sensor_id_list = 11; // Definition of traffic sign geometries. // @@ -79,39 +80,39 @@ message DetectedTrafficSign GEOMETRY_UNKNOWN = 0; // Geometry of the traffic sign is unspecified (but known). - // + // GEOMETRY_OTHER = 1; // Traffic sign has a triangular geometry pointing to the top. - // + // GEOMETRY_TRIANGLE_TOP = 2; //Traffic sign has a triangular geometry pointing down. - // + // GEOMETRY_TRIANGLE_DOWN = 3; // Traffic sign has a circular geometry. - // + // GEOMETRY_CIRCLE = 4; // Traffic sign has a square geometry. - // + // GEOMETRY_SQUARE = 5; // Traffic sign has a diamond geometry. - // + // GEOMETRY_DIAMOND = 6; // Traffic sign has an octagon geometry. - // + // GEOMETRY_OCTAGON = 7; - // Traffic sign has a geomety of an arrow pointing to the left. - // + // Traffic sign has a geometry of an arrow pointing to the left. + // GEOMETRY_ARROW_LEFT = 8; - // Traffic sign has a geomety of an arrow pointing to the right. - // + // Traffic sign has a geometry of an arrow pointing to the right. + // GEOMETRY_ARROW_RIGHT = 9; // Traffic sign has a rectangle geometry. (width is bigger than height) @@ -137,13 +138,16 @@ message DetectedTrafficSign message CandidateSign { // The definition of the candidate's properties. - // The sign.id values of all CandidateSigns within one DetectedTrafficSign - // correspond to the tracking ID and must be identical. + // The sign.id values of all CandidateSigns within one + // \c DetectedTrafficSign correspond to the tracking ID and must be + // identical. // optional TrafficSign sign = 1; // The estimated probability that this candidate is the true value. - // Range [0,1]. The sum of all candidate_probabilities must be one. + // The sum of all \c #candidate_probability must be one. + // + // Range: [0,1] // optional double candidate_probability = 2; @@ -151,21 +155,44 @@ message CandidateSign // observed/tracked. // // Unit: [s] + // optional double age = 3; } // -// \brief A candidate for (a) detected supplementary sign(s) as estimated by the +// \brief Candidates for all detected supplementary signs of one traffic sign +// as estimated by the sensor. +// +message CandidateSupplementarySigns +{ + // The definition of one of more supplementary signs that together define + // this candidate. + // + repeated CandidateSupplementarySign candidate_signs = 1; + + // The root mean squared error of the base parameters of the detected + // supplementary traffic sign. \c #candidate_signs + // \c SupplementarySign::base has to be identical for all + // \c #candidate_sign supplementary traffic signs. + // + optional BaseStationary base_rmse = 9; +} + +// +// \brief A candidate for a detected supplementary sign as estimated by the // sensor. +// message CandidateSupplementarySign { // The definition of one of more supplementary signs that together define // this candidate. // - repeated SupplementarySign sign = 1; + optional SupplementarySign sign = 1; // The estimated probability that this candidate is the true value. - // Range [0,1]. The sum of all candidate_probabilities must be one. + // The sum of all \c #candidate_probability must be one. + // + // Range: [0,1] // optional double candidate_probability = 2; @@ -173,6 +200,7 @@ message CandidateSupplementarySign // observed/tracked. // // Unit: [s] + // optional double age = 3; } @@ -182,7 +210,7 @@ message CandidateSupplementarySign message DetectedTrafficLight { // Specific ID of the traffic light as assigned by the sensor internally. - // Need not match with ground_truth_id. + // Need not match with \c #ground_truth_id. // optional Identifier tracking_id = 2; @@ -194,21 +222,21 @@ message DetectedTrafficLight // A list of candidates for this traffic light as estimated by the sensor. // - repeated CandidateTrafficLight candidate_traffic_light = 4; + repeated CandidateTrafficLight candidate_traffic_lights = 4; // The root mean squared error of the base parameters of the detected - // traffic light's geometry. TrafficLight::base have to be identical for all - // \c DetectedTrafficLight::candidate_traffic_light traffic lights. + // traffic light's geometry. \c TrafficLight::base has to be identical for + // all \c #candidate_traffic_light traffic lights. // - optional BaseStationary rmse = 5; + optional BaseStationary base_rmse = 5; // Determines for which directions the traffic light applies. // - repeated RelevantDirection relevant_direction = 6; + repeated RelevantDirection relevant_directions = 6; // Links to the corresponding lanes. // - repeated RelevantLane relevant_lane = 7; + repeated RelevantLane relevant_lanes = 7; // The estimated probability that this traffic light really exists, not // based on history. @@ -225,13 +253,13 @@ message DetectedTrafficLight // A list of sensors which detected this detected entity. // // If SensorData has detected entities and all detections are missing, then - // e.g. the number of sensors can confirm the existence_probability. + // e.g. the number of sensors can confirm the #existence_probability. // // \note This information can be determined via the detected entities' // detections ( \c ...Detection::object_id = 'this detected entity' ) and // the sensors (their IDs) to which these detections belong. // - repeated Identifier sensor_id = 10; + repeated Identifier sensor_id_list = 10; // // \brief Further specifies the relevant directions of the traffic light. @@ -242,7 +270,9 @@ message DetectedTrafficLight // optional Direction direction = 1; - // Relevance probability. Range [0,1]. + // Relevance probability. + // + // Range: [0,1] // optional double relevance_probability = 2; @@ -276,6 +306,7 @@ message DetectedTrafficLight // // \brief A candidate for (a) detected traffic light(s) as estimated by the // sensor. +// message CandidateTrafficLight { // The definition of one traffic light that define this candidate. @@ -283,8 +314,9 @@ message CandidateTrafficLight optional TrafficLight traffic_light = 1; // The estimated probability that this candidate is the true value. - // Range [0,1]. - // The sum of all candidate_probabilities must be one. + // The sum of all \c #candidate_probability must be one. + // + // Range: [0,1] // optional double candidate_probability = 2; } @@ -298,8 +330,9 @@ message RelevantLane // optional Identifier lane_id = 1; - // Relevance probability. Range [0,1]. + // Relevance probability. // + // Range: [0,1] optional double relevance_probability = 2; } @@ -309,7 +342,7 @@ message RelevantLane message DetectedRoadMarking { // Specific ID of the road marking as assigned by the sensor internally. - // Need not match with ground_truth_id. + // Need not match with \c #ground_truth_id. // optional Identifier tracking_id = 2; @@ -321,7 +354,7 @@ message DetectedRoadMarking // A list of candidates for this road marking as estimated by the sensor. // - repeated CandidateRoadMarking candidate_road_marking = 4; + repeated CandidateRoadMarking candidate_road_markings = 4; // The estimated probability that this road marking really exists, not based // on history. @@ -333,27 +366,28 @@ message DetectedRoadMarking // Links to the corresponding lanes. // - repeated RelevantLane relevant_lane = 6; + repeated RelevantLane relevant_lanes = 6; // The measurement state. // optional MeasurementState measurement_state = 7; // The root mean squared error of the base parameters of the detected road - // marking. + // marking. \c RoadMarking::base has to be identical for + // all \c #candidate_road_marking road markings. // - optional BaseStationary rmse = 8; + optional BaseStationary base_rmse = 8; // A list of sensors which detected this detected entity. // // If SensorData has detected entities and all detections are missing, then - // e.g. the number of sensors can confirm the existence_probability. + // e.g. the number of sensors can confirm the #existence_probability. // // \note This information can be determined via the detected entities' // detections ( \c ...Detection::object_id = 'this detected entity' ) and // the sensors (their IDs) to which these detections belong. // - repeated Identifier sensor_id = 11; + repeated Identifier sensor_id_list = 11; } // @@ -366,7 +400,9 @@ message CandidateRoadMarking optional RoadMarking road_marking = 1; // The estimated probability that this candidate is the true value. - // Range [0,1]. The sum of all candidate_probabilities must be one. + // The sum of all \c #candidate_probability must be one. + // + // Range: [0,1] // optional double candidate_probability = 2; @@ -374,5 +410,6 @@ message CandidateRoadMarking // observed/tracked. // // Unit: [s] + // optional double age = 3; } diff --git a/osi_detectedlane.proto b/osi_detectedlane.proto index a1a8ead2f..17b211d48 100644 --- a/osi_detectedlane.proto +++ b/osi_detectedlane.proto @@ -14,19 +14,22 @@ package osi; message DetectedLane { // Specific ID of the detected lane as assigned by the sensor internally. - // Need not match with ground_truth_id. + // Need not match with \c #ground_truth_id_list IDs. + // optional Identifier tracking_id = 2; // The ID of the original lane in the ground truth. // Multiple entries if the detected lane is a merge of multiple lanes in // ground truth (as lane segment definitions may vary between sensor and // ground truth). - repeated Identifier ground_truth_id = 3; + // + repeated Identifier ground_truth_id_list = 3; // The amount of time that this detected object has been currently // observed/tracked. // // Unit: [s] + // optional double age = 1000; // The measurement state of the detected object. @@ -42,6 +45,7 @@ message DetectedLane // // \note Use as confidence measure where a low value means less confidence // and a high value indicates strong confidence. + // optional double existence_probability = 5; // A list of sensors which detected this detected entity. @@ -52,7 +56,8 @@ message DetectedLane // \note This information can be determined via the detected entities' // detections ( \c ...Detection::object_id = 'this detected entity' ) and // the sensors (their IDs) to which these detections belong. - repeated Identifier sensor_id = 6; + // + repeated Identifier sensor_id_list = 6; } // @@ -62,22 +67,26 @@ message DetectedLaneBoundary { // Specific ID of the detected lane boundary as assigned by the sensor // internally. Need not match with ground_truth_id. + // optional Identifier tracking_id = 2; // The ID of the original LaneBoundary in the ground truth. // // \note In case of a ghost LaneBoundary (no corresponding ground truth), // this field should be unset. + // optional Identifier ground_truth_id = 3; // The amount of time that this detected object has been currently // observed/tracked. // // Unit: [s] + // optional double age = 1000; // State of the measurement. Lane boundary measured in the current image or // lane boundary predicted (no measurement in current image). + // optional MeasurementState measurement_state = 5; // The basic measured lane boundary. @@ -89,6 +98,7 @@ message DetectedLaneBoundary // // \note Use as confidence measure where a low value means less confidence // and a high value indicates strong confidence. + // optional double existence_probability = 6; // Confidence of the classified lane boundary type. @@ -99,21 +109,28 @@ message DetectedLaneBoundary // optional double color_confidence = 8; - // The root mean squared error of the BoundaryPoint information from a LaneBoundary. - // For every \c lane_boundary.boundary_line point exact one \c boundary_line_rmse rmse information exist. - repeated BoundaryPoint boundary_line_point_rmse = 9; + // The root mean squared error of the \c BoundaryPoint information from a + // \c LaneBoundary. + // For each \c #lane_boundary \c LaneBoundary::boundary_line point exact + // one \c #boundary_line_points_rmse rmse information exist. + // + repeated BoundaryPoint boundary_line_points_rmse = 9; - // Confidence of the segments of the BoundaryPoint information from a LaneBoundary. - // For every \c lane_boundary.boundary_line point exact one \c boundary_line_confidence confidence value is specified. - repeated double boundary_line_point_confidences = 10; + // Confidence of the segments of the \c BoundaryPoint information from a + // \c LaneBoundary. + // For each \c #lane_boundary \c LaneBoundary::boundary_line point exact + // one \c #boundary_line_points_confidences confidence value is specified. + // + repeated double boundary_line_points_confidences = 10; // A list of sensors which detected this detected entity. // // If SensorData has detected entities and all detections are missing, then - // e.g. the number of sensors can confirm the existence_probability. + // e.g. the number of sensors can confirm the \c #existence_probability. // // \note This information can be determined via the detected entities' // detections ( \c ...Detection::object_id = 'this detected entity' ) and // the sensors (their IDs) to which these detections belong. - repeated Identifier sensor_id = 11; + // + repeated Identifier sensor_id_list = 11; } diff --git a/osi_detectedoccupant.proto b/osi_detectedoccupant.proto index feea5d44e..8ecfe229b 100644 --- a/osi_detectedoccupant.proto +++ b/osi_detectedoccupant.proto @@ -14,7 +14,8 @@ package osi; message DetectedOccupant { // Specific ID of the occupant as assigned by the sensor internally. Need - // not match with ground_truth_id. + // not match with \c #ground_truth_id. + // optional Identifier tracking_id = 2; // The ID of the original vehicle occupant in the ground truth. @@ -25,6 +26,7 @@ message DetectedOccupant // observed/tracked. // // Unit: [s] + // optional double age = 1000; // The measurement state. @@ -35,10 +37,12 @@ message DetectedOccupant // optional Occupant occupant = 3; - // The estimated probability that this occupant really exists, not based on history. + // The estimated probability that this occupant really exists, not based on + // history. // // \note Use as confidence measure where a low value means less confidence // and a high value indicates strong confidence. + // optional double existence_probability = 5; // A list of sensors which detected this detected entity. @@ -49,5 +53,6 @@ message DetectedOccupant // \note This information can be determined via the detected entities' // detections ( \c ...Detection::object_id = 'this detected entity' ) and // the sensors (their IDs) to which these detections belong. - repeated Identifier sensor_id = 7; + // + repeated Identifier sensor_id_list = 7; } diff --git a/osi_environment.proto b/osi_environment.proto index ac56d4abe..d9ac76e55 100644 --- a/osi_environment.proto +++ b/osi_environment.proto @@ -7,7 +7,8 @@ package osi; // // \brief The conditions of the environment. // -// Definiton of light, weather conditions and other environmental conditions. +// Definition of light, weather conditions and other environmental conditions. +// message EnvironmentalConditions { // The ambient illumination of the environment. @@ -22,11 +23,13 @@ message EnvironmentalConditions // [Pa]). // // Unit: [Pa] + // optional double atmospheric_pressure = 3; // Temperature in Kelvin at z=0.0 in world frame. // // Unit: [K] + // optional double temperature = 4; // Description of the precipitation. @@ -42,9 +45,11 @@ message EnvironmentalConditions // // \par References: // [1] PAULAT, Marcus, et al. A gridded dataset of hourly precipitation in Germany: Its construction, climatology and application. Meteorologische Zeitschrift, 2008, 17. Jg. Nr. 6, S. 719-732. + // enum Precipitation { - // Intensity of precipitation is unknown (must not be used in ground truth). + // Intensity of precipitation is unknown (must not be used in ground + // truth). // PRECIPITATION_UNKNOWN = 0; @@ -96,6 +101,7 @@ message EnvironmentalConditions // [2] SHEPARD, Frank D. Reduced visibility due to fog on the highway. Transportation Research Board, 1996. // [3] [StVO §17 chapter 3](https://www.stvo.de/strassenverkehrsordnung/101-17-beleuchtung) // [4] [Homepage of the Meteorological Office](http://www.metoffice.gov.uk/guide/weather/observations-guide/how-we-measure-visibility) + // enum Fog { // Visibility is unknown (must not be used in ground truth). @@ -136,16 +142,17 @@ message EnvironmentalConditions // Dense fog, when V in [0,50[ [m] // (allowed to use rear fog light according to [3]) + // FOG_DENSE = 9; } // Definition of discretized ambient illumination states: // Ambient light is any light in the vehicle's environment that is not // emitted by the vehicle itself. It can include sun/moon light, light from - // other cars, street lights, etc. + // other cars, street lights etc. // // Lux [lx] is the SI unit of luminance or illumination of an area of exact - // one square metre, which is equal to one lumen per square meter 1 [lx] = + // one square meter, which is equal to one lumen per square meter 1 [lx] = // 1 [lm/m^2] [5]. // The lumen [lm] is the SI derived unit of luminous flux and a measure of // the total quantity of visible light emitted by a source. The lumen is @@ -162,6 +169,7 @@ message EnvironmentalConditions // [7] [Standards for required street lighting in the USA](http://www.wsdot.wa.gov/research/reports/fullreports/847.1.pdf) // [8] [Canadian IES-RP-8 standards for road lighting - municipality of Saint-Gédéon-de-. Beauce](http://sslnet.ca/wp-content/uploads/2011/10/LTE-RT-2011-0076-Anglais.pdf) // [9] [European standards for road lighting](http://courtneystrong.com/wp-content/uploads/2017/07/css-sl1-class-and-quality-of-street-lighting.pdf) + // enum AmbientIllumination { // Ambient illumination is unknown (must not be used in ground truth). @@ -175,40 +183,49 @@ message EnvironmentalConditions // Level 1 illumination in ]0.001, 0.01[ [lx] // E.g. Night with no artificial light. // - // \note Use \c AMBIENT_ILLUMINATION_LEVEL1 if illumination is less than 0.001 [lx] + // \note Use \c AMBIENT_ILLUMINATION_LEVEL1 if illumination is less than + // 0.001 [lx] + // AMBIENT_ILLUMINATION_LEVEL1 = 2; // Level 2 illumination in [0.01, 1[ [lx] // E.g. Night full moon / Deep twilight. + // AMBIENT_ILLUMINATION_LEVEL2 = 3; // Level 3 illumination in [1, 3[ [lx] // E.g. Deep to average twilight / Minimum lighting on local low // pedestrian conflict roads. + // AMBIENT_ILLUMINATION_LEVEL3 = 4; // Level 4 illumination in [3, 10[ [lx] // E.g. Average to full twilight / Minimum lighting on collector roads / // Minimum lighting on major and expressway roads with low to average // pedestrian conflict. + // AMBIENT_ILLUMINATION_LEVEL4 = 5; // Level 5 illumination in [10, 20[ [lx] // E.g. Minimum lighting on major and expressway roads with high // pedestrian conflict. + // AMBIENT_ILLUMINATION_LEVEL5 = 6; // Level 6 illumination in [20, 400[ [lx] // E.g. Roads with more lighting / Very dark overcast day to sunrise or // sunset on a clear day. + // AMBIENT_ILLUMINATION_LEVEL6 = 7; // Level 7 illumination in [400, 1000[ [lx] // E.g. Sunrise or sunset on a clear day / Overcast day. + // AMBIENT_ILLUMINATION_LEVEL7 = 8; // Level 8 illumination in [1000, 10000[ [lx] // E.g. Average to full daylight. + // AMBIENT_ILLUMINATION_LEVEL8 = 9; // Level 9 illumination in [10000, 120000[ [lx] @@ -216,6 +233,7 @@ message EnvironmentalConditions // // \note Use \c AMBIENT_ILLUMINATION_LEVEL9 if illumination is more than // 120000 [lx] + // AMBIENT_ILLUMINATION_LEVEL9 = 10; } @@ -230,6 +248,7 @@ message EnvironmentalConditions // // \note No changes of daylight saving time or time zones are // considered. + // optional uint32 seconds_since_midnight = 1; } } diff --git a/osi_featuredata.proto b/osi_featuredata.proto index ae4e94c40..99c08298e 100644 --- a/osi_featuredata.proto +++ b/osi_featuredata.proto @@ -32,7 +32,7 @@ message FeatureData // message SensorDetectionHeader { - // Version number of used detection list messages ( \c SensorDetectionHeader, + // Version number of used detection list messages (\c SensorDetectionHeader, // \c LidarDetection, \c LidarDetectionList etc.). // optional DetectionInterfaceVersion version = 1; @@ -44,11 +44,13 @@ message SensorDetectionHeader // \note See \c SensorData::timestamp and // \c SensorData::last_measurement_time for detailed discussions on the // semantics of time-related fields. + // optional Timestamp measurement_time = 2; // Monotonous counter to identify the exact cycle. // Generally the detection function is called periodic and - // \c SensorDetectionHeader::cycle_counter corresponds to the number of periods. + // \c #cycle_counter corresponds to the number of periods. + // optional uint64 cycle_counter = 3; @@ -71,6 +73,7 @@ message SensorDetectionHeader // The sensor frame uses cartesian coordinates. The sensor frame's origin is // identical to sensor detection frame's origin. Detections are defined in // the sensor detection frame which uses e.g. spherical coordinates. + // optional MountingPosition mounting_position = 4; // The origin/orientation of the sensor frame represents the current @@ -80,6 +83,7 @@ message SensorDetectionHeader // of the current origin does not include effects due to short-time // dynamics, such as pitch angles from braking, but includes long-time // calibration values, such as pitch angles from luggage in the trunk. + // optional MountingPosition mounting_position_rmse = 5; // Data Qualifier expresses to what extent the content of this event can be @@ -90,12 +94,14 @@ message SensorDetectionHeader // The current number of valid detections in the detections list. // // \note This value has to be set if the list contains invalid detections. + // optional uint32 number_of_valid_detections = 7; // The ID of the sensor at host vehicle's mounting_position. // // This ID can equal \c SensorData::sensor_id, if SensorData hold only data // from one sensor/sensor model. + // optional Identifier sensor_id = 8; // \brief Data qualifier communicates the overall availability of the @@ -176,11 +182,13 @@ message LidarDetection // // \note Used as confidence measure where a low value means less confidence // and a high value indicates strong confidence. + // optional double existence_probability = 1; // ID of the detected object this detection is associated to. // // \note ID = MAX(uint64) indicates no reference to an object. + // optional Identifier object_id = 2; // Measured position of the detection, given in spherical coordinates in the @@ -196,22 +204,26 @@ message LidarDetection // clustered. Only vertical clustering is allowed (z-axis). // // Unit: [m] + // optional double height = 5; // Root mean squared error of the object height. // // Unit: [m] + // optional double height_rmse = 6; // Intensity or equivalent value of the detection's echo. // // Unit: [%] + // optional double intensity = 7; // The free space probability in the range [0.0, 1.0] from the origin of the // sensor up to this detection, as given by the distance. // // Range: [0.0, 1.0] + // optional double free_space_probability = 8; // Basic classification of the detection. @@ -243,13 +255,14 @@ message RadarDetection // not depend on any past experience with similar detections. // // \note Use as confidence measure where a low value means less confidence - // and a high value indicates - // strong confidence. + // and a high value indicates strong confidence. + // optional double existence_probability = 1; // ID of the detected object this detection is associated to. // // \note ID = MAX(uint64) indicates no reference to an object. + // optional Identifier object_id = 2; // Measured position of the detection, given in spherical coordinates in the @@ -264,21 +277,25 @@ message RadarDetection // Absolute radial (in direction to the sensor) velocity of the detection. // // Unit: [m/s] + // optional double radial_velocity = 5; // Root mean squared error of the object measured radial velocity. // // Unit: [m/s] + // optional double radial_velocity_rmse = 6; // The radar cross section (RCS) of the radar detection. // - // Unit: [dB m^2]. + // Unit: [dB m^2] + // optional double rcs = 7; // The signal to noise ratio (SNR) of the radar detection. // - // Unit: [dB m^2]. + // Unit: [dB m^2] + // optional double snr = 8; // Describes the possibility whether more than one object may have led to @@ -291,6 +308,7 @@ message RadarDetection // indicated by an identical ambiguity ID. // // \note Unambiguous measurements have the ambiguity ID 0. + // optional Identifier ambiguity_id = 10; // Basic classification of the detection. @@ -319,11 +337,11 @@ enum DetectionClassification // DETECTION_CLASSIFICATION_CLUTTER = 3; - // Overdrivable (ground etc.). + // Over-drivable (ground etc.). // DETECTION_CLASSIFICATION_OVERDRIVABLE = 4; - // Underdrivable (sign gantry etc.). + // Under-drivable (sign gantry etc.). // DETECTION_CLASSIFICATION_UNDERDRIVABLE = 5; } diff --git a/osi_groundtruth.proto b/osi_groundtruth.proto index 439270220..da6ee7dfe 100644 --- a/osi_groundtruth.proto +++ b/osi_groundtruth.proto @@ -40,56 +40,59 @@ message GroundTruth { // The interface version used by the sender (i.e. the simulation // environment). + // optional InterfaceVersion version = 1; // The data timestamp of the simulation environment. The zero time point is // arbitrary but must be identical for all messages. // Recommendation: Zero time point for start point of the simulation. // - // \note Zero time point does not need to coincide with the unix epoch. + // \note Zero time point does not need to coincide with the UNIX epoch. // // \note For ground truth data this timestamp coincides both with the // notional simulation time the data applies to and the time it was sent // (there is no inherent latency for ground truth data, as opposed to // sensor data). + // optional Timestamp timestamp = 2; // The list of (host) vehicles. // - repeated Vehicle vehicle = 3; + repeated Vehicle vehicles = 3; // The list of all other moving objects (i.e. excluding vehicles). // - repeated MovingObject moving_object = 4; + repeated MovingObject moving_objects = 4; // The list of stationary objects (excluding traffic signs and traffic // lights). - repeated StationaryObject stationary_object = 5; + // + repeated StationaryObject stationary_objects = 5; // The list of traffic signs. // - repeated TrafficSign traffic_sign = 6; + repeated TrafficSign traffic_signs = 6; // The list of traffic lights. // - repeated TrafficLight traffic_light = 7; + repeated TrafficLight traffic_lights = 7; // The list of road surface markings (lane markings are excluded and // defined as \c LaneBoundary). // - repeated RoadMarking road_marking = 8; + repeated RoadMarking road_markings = 8; // The list of lanes forming a road network. // - repeated Lane lane = 9; + repeated Lane lanes = 9; - // The list of lane boundaries from lanes. + // The list of lane boundaries. // - repeated LaneBoundary lane_boundary = 10; + repeated LaneBoundary lane_boundaries = 10; // The list of passengers in the (host) vehicle(s). // - repeated Occupant occupant = 11; + repeated Occupant occupants = 11; // Conditions of the environment. // @@ -104,5 +107,6 @@ message GroundTruth // \par References: // [1] [International Standard ISO 3166-1: Codes for the representation of names of countries and their subdivisions – Part 1: Country codes, third ed., 2013] (https://www.iso.org/obp/ui/) // [2] [Wikipedia ISO 3166/1] (https://en.wikipedia.org/wiki/ISO_3166-1) + // optional uint32 country_code = 13; } diff --git a/osi_landmark.proto b/osi_landmark.proto index 3aaa9aee1..d5425848d 100644 --- a/osi_landmark.proto +++ b/osi_landmark.proto @@ -20,7 +20,7 @@ message TrafficSign // The base parameters of the traffic sign. // - // The orientation of the bounding box \c TrafficSign::base + // The orientation of the bounding box \c #base // ( \c BaseStationary::orientation ) is defined as follows: // The z-axis of the given \c BaseStationary::orientation is the vector // from the bottom to the top of the traffic sign's 2D image plate. @@ -40,7 +40,8 @@ message TrafficSign // speed limit. // // \note Field need not be set if traffic sign type does not require it. - // Unit of field value is defined by field value_unit. + // Unit of field \c #value is defined by field \c #value_unit. + // optional double value = 4; // Unit for additional value. @@ -53,7 +54,7 @@ message TrafficSign // Some traffic signs have an additional arrow symbol as an additional // constraint for their scope (e.g. no parking to the right). - // The arrow direction is given relative to the sign’s 2D image plane, i.e. + // The arrow direction is given relative to the sign's 2D image plane, i.e. // as a viewer standing right in front of the sign and looking straight // towards it would interpret the arrow. // @@ -61,23 +62,26 @@ message TrafficSign // temporarily constructed right-handed local coordinate system: // Set z-axis to match the z-axis of the ground truth coordinate system. // Set x-axis to the view normal of the traffic sign's image - // (\c TrafficSign::base \c BaseStationary::orientation x-axis). + // (\c #base \c BaseStationary::orientation x-axis). // Right: direction of the local coordinate system's positive y-axis. // Left: opposite direction of the local coordinate system's y-axis i.e. - // negative y-axis´, + // negative y-axis', // // \note If a traffic sign image is on the ground (there is no definition // for right or left). Normally, this is a road marking and not a traffic // sign. Actual traffic signs lying on the ground might have been // intentionally unmounted and, hence, not be in effect. + // optional DirectionScope direction_scope = 7; // Additional supplementary signs, e.g. time limits, modifying the traffic // sign. + // repeated SupplementarySign supplementary_signs = 8; // The IDs of the lanes that the traffic sign is assigned to. // May be multiple if the traffic sign is valid for multiple lanes. + // repeated Identifier assigned_lanes = 9; // Definition of traffic sign types. @@ -90,6 +94,7 @@ message TrafficSign // \arg https://www.gesetze-im-internet.de/stvo_2013/anlage_3.html (Richtzeichen) // \arg https://www.gesetze-im-internet.de/stvo_2013/anlage_4.html (Verkehrseinrichtungen) // \arg https://traffic-rules.com/ + // enum Type { // Type of traffic sign is unknown (must not be used in ground truth). @@ -102,203 +107,331 @@ message TrafficSign // Start of speed limit (StVO 274) \c TrafficSign::value and // \c TrafficSign::value_unit . + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/274-60.png + // TYPE_SPEED_LIMIT_BEGIN = 2; // End of speed limit (StVO 278) \c TrafficSign::value and // \c TrafficSign::value_unit . + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/278-60.png + // TYPE_SPEED_LIMIT_END = 3; - // Town entrance (StVO 310). + // Town entrance + // (StVO 310). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/310.png + // TYPE_TOWN_BEGIN = 4; - // Town exit (StVO 311). + // Town exit + // (StVO 311). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/311.png + // TYPE_TOWN_END = 5; // Start of zone with speed limit (StVO 274.1) \c TrafficSign::value and // \c TrafficSign::value_unit . + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/274.1.png + // TYPE_SPEED_LIMIT_ZONE_BEGIN = 6; // End of zone with speed limit (StVO 274.2) \c TrafficSign::value and // \c TrafficSign::value_unit . + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/274.2.png + // TYPE_SPEED_LIMIT_ZONE_END = 7; // Start of mandatory minimum speed (StVO 275) \c TrafficSign::value and // \c TrafficSign::value_unit . + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/275.png + // TYPE_MINIMUM_SPEED_BEGIN = 8; // End of mandatory minimum speed (StVO 279) \c TrafficSign::value and // \c TrafficSign::value_unit . + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/279.png + // TYPE_MINIMUM_SPEED_END = 9; // Start of area with calmed / reduced traffic // (verkehrsberuhigter Bereich - StVO 325.1). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/325.1.png + // TYPE_TRAFFIC_CALMED_DISTRICT_BEGIN = 10; // End of area with calmed / reduced traffic // (verkehrsberuhigter Bereich - StVO 325.2). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/325.2.png + // TYPE_TRAFFIC_CALMED_DISTRICT_END = 11; // Start of area without traffic to reduce harmful air pollution // (StVO 270.1). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/270.1.png + // TYPE_ENVIRONMENTAL_ZONE_BEGIN = 12; // End of area without traffic to reduce harmful air pollution // (StVO 270.2). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/270.2.png + // TYPE_ENVIRONMENTAL_ZONE_END = 13; - // Start of overtaking ban (StVO 276). + // Start of overtaking ban + // (StVO 276). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/276.png + // TYPE_OVERTAKING_BAN_BEGIN = 14; - // End of overtaking ban (StVO 280). + // End of overtaking ban + // (StVO 280). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/280.png + // TYPE_OVERTAKING_BAN_END = 15; - // Start of overtaking ban for trucks (StVO 277). + // Start of overtaking ban for trucks + // (StVO 277). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/277.png + // TYPE_OVERTAKING_BAN_FOR_TRUCKS_BEGIN = 16; - // End of overtaking ban for trucks (StVO 281). + // End of overtaking ban for trucks + // (StVO 281). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/281.png + // TYPE_OVERTAKING_BAN_FOR_TRUCKS_END = 17; - // End of all speed and overtaking restrictions (StVO 282). + // End of all speed and overtaking restrictions + // (StVO 282). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/282.png + // TYPE_ALL_RESTRICTIONS_END = 18; - // Begin of priority road with right of way (StVO 306). + // Begin of priority road with right of way + // (StVO 306). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/306.png + // TYPE_RIGHT_OF_WAY_BEGIN = 19; - // End of priority road with right of way (StVO 307). + // End of priority road with right of way + // (StVO 307). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/307.png + // TYPE_RIGHT_OF_WAY_END = 20; - // Right of way at the next intersection (StVO 301). + // Right of way at the next intersection + // (StVO 301). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/301.png + // TYPE_RIGHT_OF_WAY_NEXT_INTERSECTION = 21; - // "Right before left" rule at the next intersection (StVO 102). + // "Right before left" rule at the next intersection + // (StVO 102). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/102.png + // TYPE_RIGHT_BEFORE_LEFT_NEXT_INTERSECTION = 22; - // Begin of no parking zone (StVO 290.1). + // Begin of no parking zone + // (StVO 290.1). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/290.1.png + // TYPE_NO_PARKING_ZONE_BEGIN = 23; - // End of no parking zone (StVO 290.2). + // End of no parking zone + // (StVO 290.2). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/290.2.png + // TYPE_NO_PARKING_ZONE_END = 24; - // No parking sign (StVO 286). + // No parking sign + // (StVO 286). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/286.png + // TYPE_NO_PARKING = 25; - // No stopping sign (StVO 283). + // No stopping sign + // (StVO 283). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/283.png + // TYPE_NO_STOPPING = 26; - // Begin of parking zone (StVO 314.1). + // Begin of parking zone + // (StVO 314.1). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/314.1.png + // TYPE_CAR_PARKING_ZONE_BEGIN = 27; - // End of parking zone (StVO 314.2). + // End of parking zone + // (StVO 314.2). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/314.2.png + // TYPE_CAR_PARKING_ZONE_END = 28; - // Parking space (StVO 314). + // Parking space + // (StVO 314). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/314.png + // TYPE_CAR_PARKING = 29; - // Give way sign (StVO 205). + // Give way sign + // (StVO 205). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/205.png + // TYPE_GIVE_WAY = 30; - // Stop sign (StVO 206). + // Stop sign + // (StVO 206). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/206.png + // TYPE_STOP = 31; - // Danger sign (StVO 101). + // Danger sign + // (StVO 101). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/101.png + // TYPE_DANGER_SPOT = 32; - // Road works sign (StVO 123) + // Road works sign + // (StVO 123) + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/123.png + // TYPE_ROAD_WORKS = 33; // Steep hill downwards (StVO 108) \c TrafficSign::value and // \c TrafficSign::value_unit . + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/108-10.png + // TYPE_HILL_DOWNWARDS = 34; // Steep hill upwards (StVO 110) \c TrafficSign::value and // \c TrafficSign::value_unit . + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/110-12.png + // TYPE_HILL_UPWARDS = 35; - // Prescribed left turn (StVO 209.1). + // Prescribed left turn + // (StVO 209.1). + // // See e.g.: + // TYPE_PRESCRIBED_LEFT_TURN = 36; - // Prescribed right turn (StVO 209.2). + // Prescribed right turn + // (StVO 209.2). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/209.png + // TYPE_PRESCRIBED_RIGHT_TURN = 37; - // Prescribed driving straight ahead (StVO 209.3). + // Prescribed driving straight ahead + // (StVO 209.3). + // // See e.g.: + // TYPE_PRESCRIBED_STRAIGHT_AHEAD = 38; - // Prescribed left way (StVO 211.1). + // Prescribed left way + // (StVO 211.1). + // // See e.g.: + // TYPE_PRESCRIBED_LEFT_WAY = 39; - // Prescribed right way (StVO 211.2). + // Prescribed right way + // (StVO 211.2). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/211.png + // TYPE_PRESCRIBED_RIGHT_WAY = 40; - // Prescribed left turn and driving straight ahead (StVO 214.1). + // Prescribed left turn and driving straight ahead + // (StVO 214.1). + // // See e.g.: + // TYPE_PRESCRIBED_LEFT_TURN_AND_STRAIGHT_AHEAD = 41; - // Prescribed right turn and driving straight ahead (StVO 214.2). + // Prescribed right turn and driving straight ahead + // (StVO 214.2). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/214.png + // TYPE_PRESCRIBED_RIGHT_TURN_AND_STRAIGHT_AHEAD = 42; - // Prescribed left and right turn (StVO 214.3). + // Prescribed left and right turn + // (StVO 214.3). + // // See e.g.: + // TYPE_PRESCRIBED_LEFT_TURN_AND_RIGHT_TURN = 43; // Prescribed left turn, right turn and driving straight ahead (required // for logical signs as road marking). + // // See e.g.: + // TYPE_PRESCRIBED_LEFT_TURN_RIGHT_TURN_AND_STRAIGHT_AHEAD = 44; - // One-way road to the left (StVO 220.1). + // One-way road to the left + // (StVO 220.1). + // // See e.g.: + // TYPE_ONEWAY_LEFT = 45; - // One-way road to the right (StVO 220.2). + // One-way road to the right + // (StVO 220.2). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/220-20.png + // TYPE_ONEWAY_RIGHT = 46; - // Entry not allowed (StVO 267). + // Entry not allowed + // (StVO 267). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/267.png + // TYPE_DO_NOT_ENTER = 47; - // No U turn left (StVO 272). + // No U turn left + // (StVO 272). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/272.png + // TYPE_NO_U_TURN_LEFT = 48; // No U turn right (). @@ -313,18 +446,29 @@ message TrafficSign // TYPE_PRESCRIBED_U_TURN_RIGHT = 51; - // End of left lane (StVO 531.2x). + // End of left lane + // (StVO 531.2x). + // // See e.g.: + // // \note No speed limitation + // TYPE_ANNOUNCE_LEFT_LANE_END = 52; - // End of right lane (StVO 531.1x). + // End of right lane + // (StVO 531.1x). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/531-10.png + // // \note No speed limitation + // TYPE_ANNOUNCE_RIGHT_LANE_END = 53; - // Roundabout (StVO 215). + // Roundabout + // (StVO 215). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/215.png + // TYPE_ROUNDABOUT = 54; // Bus only lane begin (). @@ -335,153 +479,255 @@ message TrafficSign // TYPE_BUS_LANE_END = 56; - // Entry prohibited for all vehicle types (StVO 250). + // Entry prohibited for all vehicle types + // (StVO 250). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/250.png + // TYPE_PROHIBITED_FOR_ALL = 57; - // Entry prohibited for all motor vehicles (StVO 251). + // Entry prohibited for all motor vehicles + // (StVO 251). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/251.png + // TYPE_PROHIBITED_FOR_MOTOR_VEHICLES = 58; - // Entry prohibited for trucks (StVO 253). + // Entry prohibited for trucks + // (StVO 253). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/253.png + // TYPE_PROHIBITED_FOR_TRUCKS = 59; - // Entry prohibited for bicycles (StVO 254). + // Entry prohibited for bicycles + // (StVO 254). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/254.png + // TYPE_PROHIBITED_FOR_BICYCLES = 60; - // Entry prohibited for motor bikes (StVO 255). + // Entry prohibited for motor bikes + // (StVO 255). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/255.png + // TYPE_PROHIBITED_FOR_MOTOR_AND_BIKES = 61; - // Entry prohibited for pedestrians (StVO 259). + // Entry prohibited for pedestrians + // (StVO 259). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/259.png + // TYPE_PROHIBITED_FOR_PEDESTRIANS = 62; - // Entry prohibited for all motor vehicles and bikes (StVO 260). + // Entry prohibited for all motor vehicles and bikes + // (StVO 260). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/260.png + // TYPE_PROHIBITED_FOR_MOTOR_VEHICLES_BIKES = 63; - // Begin of highway (StVO 330.1). + // Begin of highway + // (StVO 330.1). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/330.1.png + // TYPE_HIGHWAY_BEGIN = 64; - // End of highway (StVO 330.2). + // End of highway + // (StVO 330.2). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/330.2.png + // TYPE_HIGHWAY_END = 65; - // Highway exit sign (StVO 333). + // Highway exit sign + // (StVO 333). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/333.png + // TYPE_HIGHWAY_EXIT = 66; // Pole indicating highways exit in e.g. 100m (StVO 450). // \c TrafficSign::value and \c TrafficSign::value_unit . + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/450-51.png + // TYPE_POLE_EXIT = 67; - // Pole for warning and guiding purposes (red/white stripes - StVO 605). + // Pole for warning and guiding purposes + // (red/white stripes - StVO 605). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/605-10.png + // TYPE_POLE_WARNING = 68; - // Begin of expressway for motor vehicles (StVO 331.1). + // Begin of expressway for motor vehicles + // (StVO 331.1). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/331.1.png + // TYPE_EXPRESSWAY_BEGIN = 69; - // End of expressways for motor vehicles (StVO 331.2). + // End of expressways for motor vehicles + // (StVO 331.2). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/331.2.png + // TYPE_EXPRESSWAY_END = 70; // Priority must be given to vehicles from the opposite direction // (StVO 208). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/208.png + // TYPE_PRIORITY_TO_OPPOSITE_DIRECTION = 71; // Traffic has priority over vehicles from the opposite direction // (StVO 308). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/308.png + // TYPE_PRIORITY_OVER_OPPOSITE_DIRECTION = 72; // Priority must be given to vehicles from the opposite direction // (StVO 208 Upside down). + // // See e.g.: + // TYPE_PRIORITY_TO_OPPOSITE_DIRECTION_UPSIDE_DOWN = 73; // Traffic has priority over vehicles from the opposite direction // (StVO 308 Upside down). + // // See e.g.: + // TYPE_PRIORITY_OVER_OPPOSITE_DIRECTION_UPSIDE_DOWN = 74; // Minimum safety distance for trucks (StVO 273). // \c TrafficSign::value and \c TrafficSign::value_unit . + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/273.png + // TYPE_MINIMUM_DISTANCE_FOR_TRUCKS = 75; - // Traffic light ahead sign (StVO 131). + // Traffic light ahead sign + // (StVO 131). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/131.png + // TYPE_ATTENTION_TRAFFIC_LIGHT = 76; - // Pedestrian crossing (StVO 350) - crosswalk. + // Pedestrian crossing + // (StVO 350) - crosswalk. + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/350-10.png + // TYPE_PEDESTRIAN_CROSSING_INFO = 77; - // Warning sign for a left turn (StVO 103.1). + // Warning sign for a left turn + // (StVO 103.1). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/103-10.png + // TYPE_TURN_LEFT = 78; - // Warning sign for a right turn (StVO 103.2). + // Warning sign for a right turn + // (StVO 103.2). + // // See e.g.: + // TYPE_TURN_RIGHT = 79; - // Warning sign for a double turn (first left turn) (StVO 105.1). + // Warning sign for a double turn (first left turn) + // (StVO 105.1). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/105-10.png + // TYPE_DOUBLE_TURN_LEFT = 80; - // Warning sign for a double turn (first right turn) (StVO 105.2). + // Warning sign for a double turn (first right turn) + // (StVO 105.2). + // // See e.g.: + // TYPE_DOUBLE_TURN_RIGHT = 81; - // Drive past on the left side (StVO 222.1). + // Drive past on the left side + // (StVO 222.1). + // // See e.g.: + // TYPE_PASS_LEFT = 82; - // Drive past on the right side (StVO 222.2). + // Drive past on the right side + // (StVO 222.2). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/222.png + // TYPE_PASS_RIGHT = 83; - // Tunnel ahead (StVO 327). + // Tunnel ahead + // (StVO 327). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/327.png + // TYPE_TUNNEL = 84; - // Emergency stopping place left (). + // Emergency stopping place left + // (). + // // See e.g.: + // TYPE_EMERGENCY_STOPPING_LEFT = 85; - // Emergency stopping place right (StVO 328). + // Emergency stopping place right + // (StVO 328). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/328.png + // TYPE_EMERGENCY_STOPPING_RIGHT = 86; - // Warning for two-way-traffic (after one-way lane) (StVO 125). + // Warning for two-way-traffic (after one-way lane) + // (StVO 125). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/125.png + // TYPE_WARNING_TWO_WAY_TRAFFIC = 87; - // Warning for road narrowing (StVO 120). + // Warning for road narrowing + // (StVO 120). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/120.png + // TYPE_WARNING_ROAD_NARROWING = 88; - // Warning for road narrowing on the left (StVO 121.2). + // Warning for road narrowing on the left + // (StVO 121.2). + // // See e.g.: + // TYPE_WARNING_ROAD_NARROWING_LEFT = 89; - // Warning for road narrowing on the right (StVO 121.1). + // Warning for road narrowing on the right + // (StVO 121.1). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/121-10.png + // TYPE_WARNING_ROAD_NARROWING_RIGHT = 90; - // Lane for buses (StVO 245). + // Lane for buses + // (StVO 245). + // // See e.g.: https://www.dvr.de/bilder/stvo/gt/245.png + // TYPE_BUS_LANE = 91; - // Green arrow sign at a traffic light (StVO 720). + // Green arrow sign at a traffic light + // (StVO 720). + // + // See e.g.: // TYPE_TRAFFIC_LIGHT_GREEN_ARROW = 92; } @@ -492,6 +738,7 @@ message TrafficSign { // Variability type of sign is unknown (must not be used in ground // truth). + // VARIABILITY_UNKNOWN = 0; // Other (unspecified but known) variability. @@ -510,10 +757,12 @@ message TrafficSign // Definition of the direction of the traffic sign's scope. // Signs marked with additional arrows. (E.g. No parking sign (StVO 286) to // the left.) + // enum DirectionScope { // Direction of the sign's scope is unknown (must not be used in ground // truth). + // DIRECTION_SCOPE_UNKNOWN = 0; // Other (unspecified but known) direction of the sign's scope. @@ -532,7 +781,7 @@ message TrafficSign // DIRECTION_SCOPE_RIGHT = 4; - // Direction of the sign's scope for its viewer is to both sides. + // Direction of the sign's scope for its viewer is to both sides. // DIRECTION_SCOPE_LEFT_RIGHT = 5; } @@ -543,79 +792,102 @@ message TrafficSign { // Unit of the sign's value is unknown (must not be used in ground // truth). + // UNIT_UNKNOWN = 0; // Other (unspecified but known) unit of the sign's value. // UNIT_OTHER = 1; - // Value without unit. + // Value without + // unit. // // Unit: [] + // UNIT_NO_UNIT = 2; - // Velocity + // Velocity. + // Kilometers per hour. // // Unit: [km/h] + // UNIT_KILOMETER_PER_HOUR = 3; - // Velocity + // Velocity . + // Miles per hour. // // Unit: [mph] + // UNIT_MILE_PER_HOUR = 4; - // Length + // Length. + // Meter. // // Unit: [m] + // UNIT_METER = 5; - // Length + // Length. + // Kilometer. // // Unit: [km] + // UNIT_KILOMETER = 6; - // Length + // Length. + // Feet. // // Unit: [ft] + // UNIT_FEET = 7; - // Length + // Length. + // Mile. // // Unit: [mile] + // UNIT_MILE = 8; - // Weight + // Weight. + // Ton. // // Unit: [t] + // UNIT_METRIC_TON = 9; - // Weight - // Long ton UK 1,016.047 kg + // Weight. + // Long ton UK 1,016.047 [kg]. // // Unit: [tn. l.] + // UNIT_LONG_TON = 10; - // Weight - // Short ton USA 907.1847 kg + // Weight. + // Short ton USA 907.1847 [kg]. // // Unit: [tn. sh.] + // UNIT_SHORT_TON = 11; - // Time of day - // Hour since midnight + // Time of day. + // Hour since midnight. // // Unit: [min] + // UNIT_MINUTES = 12; - // Day of the week - // Days since monday. Monday = 0; Tuesday = 1; ... + // Day of the week. + // Days since Monday. Monday = 0; Tuesday = 1; ... // // Unit: [] + // UNIT_DAY = 13; - // Percentage + // Percentage. + // . // // Unit: [%] + // UNIT_PERCENTAGE = 14; } } @@ -625,12 +897,27 @@ message TrafficSign // message SupplementarySign { + // The base parameters of the supplementary traffic sign. + // + // The orientation of the bounding box \c SupplementarySign::base + // ( \c BaseStationary::orientation ) is defined as follows: + // The z-axis of the given \c BaseStationary::orientation is the vector + // from the bottom to the top of the supplementary traffic sign's 2D image + // plate. (Normally it is equal to the ground truth z-axis.) + // The x-axis of the given \c BaseStationary::orientation is view + // normal of the supplementary traffic sign's image. + // This x-axis points from the supplementary traffic sign's image in the + // direction from where a 'viewer' could see the supplementary traffic sign image. + // + optional BaseStationary base = 1000; + // Type of the supplementary sign. // 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; // Unit for first optional value. @@ -639,6 +926,7 @@ message SupplementarySign // Optional second value defining additional properties, e.g. end time in // time range. + // optional double value_2 = 4; // Unit for second optional value. @@ -647,6 +935,7 @@ message SupplementarySign // Optional third value defining additional properties, e.g. day of the // week start. + // optional double value_3 = 6; // Unit for third optional value. @@ -655,22 +944,21 @@ message SupplementarySign // Optional fourth value defining additional properties, e.g. day of the // week end. + // optional double value_4 = 8; // Unit for fourth optional value. // optional TrafficSign.Unit value_4_unit = 9; - // Defines the position of the supplementary sign. - // - optional Position position_supplementary = 10; - // Definition of supplementary sign types. // See \c 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. @@ -681,26 +969,33 @@ message SupplementarySign // TYPE_NO_SIGN = 2; - // Traffic sign is valid for a certain distance (given by \c value_1 in - // e.g. meter - \c value_1_unit). + // Traffic sign is valid for a certain distance (given by \c #value_1 in + // e.g. meter - \c #value_1_unit). + // TYPE_VALID_FOR_DISTANCE = 3; // Distance to the start of validity of the traffic sign (given by - // \c value_1 in e.g. meter - \c value_1_unit). + // \c #value_1 in e.g. meter - \c #value_1_unit). + // TYPE_VALID_IN_DISTANCE = 4; - // Time range for validity of traffic sign (starting from \c value_1 and - // ending with \c value_2, both defining e.g. time of day in minutes - // from midnight - \c value_1_unit and \c value_2_unit). + // Time range for validity of traffic sign (starting from \c #value_1 + // and ending with \c #value_2, both defining e.g. time of day in + // minutes since midnight - \c #value_1_unit and \c #value_2_unit). + // Day of the week starting from \c #value_3 and ending with + // \c #value_4 with \c #value_3_unit and \c #value_4_unit). + // TYPE_TIME_RANGE = 5; // Restriction of the validity of the traffic sign depending on the - // vehicle's weight (more than \c value_1 e.g. in kilogram - - // \c value_1_unit). + // vehicle's weight (more than \c #value_1 e.g. in kilogram - + // \c #value_1_unit). + // 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. @@ -709,11 +1004,13 @@ message SupplementarySign // 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 \c TYPE_WET and \c TYPE_SNOW respectively). + // two signs of \c #TYPE_RAIN and \c #TYPE_SNOW respectively). + // TYPE_SNOW_RAIN = 10; // Direction, left-pointing. @@ -744,7 +1041,7 @@ message SupplementarySign // TYPE_HAZARDOUS = 17; - // Valid for vehice with trailers. + // Valid for vehicle with trailers. // TYPE_TRAILER = 18; @@ -772,34 +1069,10 @@ message SupplementarySign // TYPE_CAR = 24; - // Ends in e.g. .. meter (given by \c value_1 in e.g. meter - - // \c value_1_unit). - TYPE_STOP_IN = 25; - } - - // The relative position of the supplementary sign. - // - enum Position - { - // Position of supplementary sign is unknown (must not be used in ground truth). - // - POSITION_UNKNOWN = 0; - - // Supplementary sign is above the main sign. - // - POSITION_ABOVE = 1; - - // Supplementary sign is left of the main sign. - // - POSITION_LEFT = 2; - - // Supplementary sign is right of the main sign. + // Ends in e.g. .. meter (given by \c #value_1 in e.g. meter - + // \c #value_1_unit). // - POSITION_RIGHT = 3; - - // Supplementary sign is under the main sign. - // - POSITION_UNDER = 4; + TYPE_STOP_IN = 25; } } @@ -819,16 +1092,18 @@ message TrafficLight // // \c BaseStationary::orientation x-axis is view normal of the traffic // light's icon. + // optional BaseStationary base = 2; - + // The color of the traffic light. // // \note If the color of the traffic light is known (from history or - // geometrical arrangement) and the state \c TrafficLight::mode is - // \c MODE_OFF then \c TrafficLight::color could remain unchanged. + // geometrical arrangement) and the state \c #mode is + // \c MODE_OFF then \c #color could remain unchanged. // If traffic light displays images in different colors and traffic light - // is off ( \c TrafficLight::mode = \c MODE_OFF), then - // \c TrafficLight::color = \c COLOR_OTHER . + // is off ( \c #mode = \c #MODE_OFF), then + // \c #color = \c #COLOR_OTHER . + // optional Color color = 3; // The icon of the traffic light. @@ -843,6 +1118,7 @@ message TrafficLight // Unit: [%] or [s] // // \note Set value only if traffic light bulb is a countdown counter. + // optional double counter = 6; // The IDs of the lanes that the traffic light is assigned to. @@ -850,7 +1126,7 @@ message TrafficLight // lanes. // repeated Identifier assigned_lanes = 7; - + // Definition of colors for traffic lights. // enum Color @@ -862,7 +1138,7 @@ message TrafficLight // Other (unspecified but known) color. // COLOR_OTHER = 1; - + // Red light. // COLOR_RED = 2; @@ -870,15 +1146,15 @@ message TrafficLight // Orange-yellow light. // COLOR_YELLOW = 3; - + // Green light. // COLOR_GREEN = 4; - + // Blue light. // COLOR_BLUE = 5; - + // White light. // COLOR_WHITE = 6; @@ -898,6 +1174,7 @@ message TrafficLight // This is a normal traffic light without specification of e.g. // direction. + // ICON_NONE = 2; // This traffic light applies to the lane straight ahead. @@ -912,8 +1189,9 @@ message TrafficLight // ICON_ARROW_DIAG_LEFT = 5; - // This traffic light applies to a lane allowing to drive straight - // ahead or to turn left. + // This traffic light applies to a lane allowing to drive straight ahead + // or to turn left. + // ICON_ARROW_STRAIGHT_AHEAD_LEFT = 6; // This traffic light applies to right turns. @@ -924,30 +1202,35 @@ message TrafficLight // ICON_ARROW_DIAG_RIGHT = 8; - // This traffic light applies to a lane allowing to drive straight - // ahead or to turn right. + // This traffic light applies to a lane allowing to drive straight ahead + // or to turn right. + // ICON_ARROW_STRAIGHT_AHEAD_RIGHT = 9; - // This traffic light applies to a lane allowing to turn left or - // right. + // This traffic light applies to a lane allowing to turn left or right. + // ICON_ARROW_LEFT_RIGHT = 10; // This traffic light indicates that the assigned lane is open for // driving. + // ICON_ARROW_DOWN = 11; // This traffic light indicates a necessary lane change to the left // ahead. + // ICON_ARROW_DOWN_LEFT = 12; // This traffic light indicates a necessary lane change to the right // ahead. + // ICON_ARROW_DOWN_RIGHT = 13; - // This traffic light indicates that the assigned lane is not open - // for driving. + // This traffic light indicates that the assigned lane is not open for + // driving. + // ICON_ARROW_CROSS = 14; - + // This traffic light is valid for pedestrians. // ICON_PEDESTRIAN = 15; @@ -956,7 +1239,8 @@ message TrafficLight // ICON_WALK = 16; - // This traffic light is valid for pedestrians with letters 'don't walk'. + // This traffic light is valid for pedestrians with letters 'don't + // walk'. // ICON_DONT_WALK = 17; @@ -980,18 +1264,21 @@ message TrafficLight // // \note There is no detailed traffic light specification for trams and // buses at the moment. + // ICON_TRAM = 22; // This traffic light is valid for buses. // // \note There is no detailed traffic light specification for trams and // buses at the moment. + // ICON_BUS = 23; // This traffic light is valid for buses and trams. // // \note There is no detailed traffic light specification for trams and // buses at the moment. + // ICON_BUS_AND_TRAM = 24; } @@ -1042,40 +1329,44 @@ message RoadMarking // The base parameters of the road marking. // - // The orientation of the bounding box \c RoadMarking::base.orientation is - // defined as follows: + // The orientation of the bounding box \c #base + // \c BaseStationary::orientation is defined as follows: // The z-axis of the \c BaseStationary::orientation is the vector from the // 'bottom' to the 'top' of the road marking's (i.e. painted traffic sign) // 2D image area. // (Normally it is in the ground truth xy-plain.) // The x-axis of the \c BaseStationary::orientation is the view normal of - // the road markings's 2D image area. + // the road marking's 2D image area. // Normally this x-axis points to the sky. // // \note If a valid unidirectional road marking is assigned to the host // vehicle's current lane and the driving direction of the latter roughly - // matches the z-axis of the \c RoadMarking::base.orientation then the - // road marking is of relevance to (i.e. in effect for) the host vehicle. + // matches the z-axis of the \c #base \c BaseStationary::orientation then + // the road marking is of relevance to (i.e. in effect for) the host + // vehicle. + // optional BaseStationary base = 2; // The type of the road marking. // optional Type type = 3; - // Traffic sign as road marking (colour image, monochrome image or character + // Traffic sign as road marking (color image, monochrome image or character // string). // - // \note Field is set if ( \c RoadMarking.type == \c RoadMarking.Type.TYPE_PAINTED_TRAFFIC_SIGN or - // \c RoadMarking.Type.TYPE_SYMBOLIC_TRAFFIC_SIGN or \c RoadMarking.Type.TYPE_TEXTUAL_TRAFFIC_SIGN ). + // \note Field is set if ( \c #type == \c #TYPE_PAINTED_TRAFFIC_SIGN or + // \c #TYPE_SYMBOLIC_TRAFFIC_SIGN or \c #TYPE_TEXTUAL_TRAFFIC_SIGN ). + // + // \note Field need not be set (or set to \c #TYPE_OTHER) + // if road marking type (\c #type) does not require it. // - // \note Field need not be set (or set to \c TrafficSign.Type.TYPE_OTHER) - // if road marking type (\c RoadMarking.type) does not require it. optional TrafficSign.Type traffic_sign_type = 4; // The monochrome color of the road marking. - // \note Field need not be set (or set to \c RoadMarking.Color.COLOR_OTHER) - // if road marking type does not require it (e.g. for \c RoadMarking.type == - // \c RoadMarking.Type.TYPE_PAINTED_TRAFFIC_SIGN). + // \note Field need not be set (or set to \c #COLOR_OTHER) + // if road marking type does not require it (e.g. for \c #type == + // \c #TYPE_PAINTED_TRAFFIC_SIGN). + // optional Color monochrome_color = 5; // Additional value associated with the road marking, e.g. value of the @@ -1083,6 +1374,7 @@ message RoadMarking // // \note This field needs not be set if the road marking's type does not // require it. + // optional double value = 6; // Unit for optional value. @@ -1092,10 +1384,12 @@ message RoadMarking // Additional text value as road marking, e.g. BUS, TAXI etc. // // \note Field need not be set if road marking type does not require it. + // optional string value_text = 8; // The ID(s) of the lane(s) that the road marking is assigned to. // May be multiple if the road marking goes across multiple lanes. + // repeated Identifier assigned_lanes = 9; // Definition of road marking types. @@ -1110,15 +1404,18 @@ message RoadMarking // TYPE_OTHER = 1; - // Paint on the road surface indicating a colour image of a traffic sign. + // Paint on the road surface indicating a color image of a traffic sign. // TYPE_PAINTED_TRAFFIC_SIGN = 2; - // Paint on the road surface indicating a monochrome logical symbol of a traffic sign (e.g. digits 50 as start of speed limit 50 or stop line for stop sign). + // Paint on the road surface indicating a monochrome logical symbol of a + // traffic sign (e.g. digits 50 as start of speed limit 50 or stop line + // for stop sign). // TYPE_SYMBOLIC_TRAFFIC_SIGN = 3; - // Paint on the road surface as a character string (e.g. BUS as bus only lane). + // Paint on the road surface as a character string (e.g. BUS as bus only + // lane). // TYPE_TEXTUAL_TRAFFIC_SIGN = 4; diff --git a/osi_lane.proto b/osi_lane.proto index ed644bfea..501cf4f7e 100644 --- a/osi_lane.proto +++ b/osi_lane.proto @@ -60,10 +60,10 @@ message Lane // Definition of the intended driving direction. // // Defined and used for driving lanes. - // true means driving direction is according to ascending order of center - // line points. - // false means driving direction is according to descending order of center - // line points. + // true means driving direction is according to ascending storage order of + // center line points. + // false means driving direction is according to descending storage order of + // center line points. // // \note The center_line_is_driving_direction is defined for \c Lane::type = // \c Type::TYPE_DRIVING . @@ -81,9 +81,9 @@ message Lane // \c Type::TYPE_INTERSECTION . repeated Identifier left_adjacent_lane_id_list = 5; - // List of IDs of all lane segments that are directy adjacent to the lane on - // the right side (w.r.t. intended driving direction). Note that lengths of - // lane segments are not synchronized and therefore there are multiple + // List of IDs of all lane segments that are directly adjacent to the lane + // on the right side (w.r.t. intended driving direction). Note that lengths + // of lane segments are not synchronized and therefore there are multiple // adjacent segments if there is a split/merge point in the adjacent lane. // Example: The lane IDs 4 and 7 are the right adjacent lane segments for // lane ID 3 in the reference picture due to the lane split. Lane ID 6 is @@ -112,7 +112,7 @@ message Lane // The ID of the left boundary ID of the left lane ID w.r.t. the driving // direction. Empty for intersections. // - // \note The left_lane_boundary_id is udefined for \c Lane::type = + // \note The left_lane_boundary_id is undefined for \c Lane::type = // \c Type::TYPE_INTERSECTION . repeated Identifier left_lane_boundary_id_list = 9; diff --git a/osi_modelinternal.proto b/osi_modelinternal.proto index edcb73cae..1a6e35eb1 100644 --- a/osi_modelinternal.proto +++ b/osi_modelinternal.proto @@ -12,24 +12,24 @@ package osi; // message ModelInternalObject { - // Specifies whether this vehicle is seen by the sensor; set by the field-of-view calculation. - // + // Specifies whether this vehicle is seen by the sensor; set by the + // field-of-view calculation. optional bool is_seen = 1 [default = true]; // The type of the original object in the ground truth. // optional ObjectType ground_truth_type = 2; - // Ground truth vehicle type for object of ground_truth_type Vehicle, should not be set otherwise. - // + // Ground truth vehicle type for object of ground_truth_type \c Vehicle, + // should not be set otherwise. optional Vehicle.Type vehicle_type = 3; - // Ground truth object type for object of ground_truth_type MovingObject, should not be set otherwise. - // + // Ground truth object type for object of ground_truth_type \c MovingObject, + // should not be set otherwise. optional MovingObject.Type moving_object_type = 4; - // Ground truth object type for object of ground_truth_type StationaryObject, should not be set otherwise. - // + // Ground truth object type for object of ground_truth_type + // \c StationaryObject, should not be set otherwise. optional StationaryObject.Type stationary_object_type = 5; // Definition of object types in ground truth. @@ -44,23 +44,23 @@ message ModelInternalObject // OBJECT_TYPE_OTHER = 1; - // Object of type Vehicle. + // Object of type \c Vehicle. // OBJECT_TYPE_VEHICLE = 2; - // Object of type MovingObject. + // Object of type \c MovingObject. // OBJECT_TYPE_MOVING = 3; - // Object of type StationaryObject. + // Object of type \c StationaryObject. // OBJECT_TYPE_STATIONARY = 4; - // Object of type TrafficSign. + // Object of type \c TrafficSign. // OBJECT_TYPE_TRAFFIC_SIGN = 5; - // Object of type TrafficLight. + // Object of type \c TrafficLight. // OBJECT_TYPE_TRAFFIC_LIGHT = 6; } diff --git a/osi_object.proto b/osi_object.proto index 36ab52a16..7241f57ea 100644 --- a/osi_object.proto +++ b/osi_object.proto @@ -57,7 +57,7 @@ message Vehicle // // \note Might be multiple if the vehicle is switching lanes or moving from // one lane into another following lane. - repeated Identifier assigned_lane = 7; + repeated Identifier assigned_lanes = 7; // Flag defining whether the vehicle has an attached trailer. // @@ -80,7 +80,7 @@ message Vehicle // conditions. In object coordinates. optional Vector3d bbcenter_to_front = 11; - // Static minimal distance in [m] of underbody plane to ground + // Static minimal distance in [m] of under-body plane to ground // surface plane (i.e. disregarding driving dynamic effects or road // surface effects) under neutral load conditions. Can be useful to // approximate the clear area under a vehicle that a sensor can see @@ -236,7 +236,7 @@ message Vehicle // // \brief A simulated object that is neither a moving object (vehicle) nor a -// stationary object (traffic sign, traffic light, StationaryObject). +// stationary object (traffic sign, traffic light, \c StationaryObject). // // MovingObject excludes vehicles // From 84fa5462d1b8f93f724983d269fe1f0bcfa80642 Mon Sep 17 00:00:00 2001 From: Carsten Kuebler Date: Thu, 22 Mar 2018 16:41:50 +0100 Subject: [PATCH 02/29] Regularized the Doxygen comments. --- osi_sensorview.proto | 70 +++++++++++++++++++++++++------------------- 1 file changed, 40 insertions(+), 30 deletions(-) diff --git a/osi_sensorview.proto b/osi_sensorview.proto index 442836e0a..019da5ee8 100644 --- a/osi_sensorview.proto +++ b/osi_sensorview.proto @@ -28,32 +28,34 @@ message SensorView // notional simulation time the data applies to and the time it was sent // (there is no inherent latency for sensor view data, as opposed to // sensor data). + // optional Timestamp timestamp = 2; - // Radar-Specific SensorView + // Radar-Specific SensorView. // optional RadarSensorView radar_sensor_view = 1000; - // Lidar-Specific SensorView + // Lidar-Specific SensorView. // optional LidarSensorView lidar_sensor_view = 1001; - // Camera-Specific SensorView + // Camera-Specific SensorView. // optional CameraSensorView camera_sensor_view = 1002; - // Ultrasonic-Specific SensorView + // Ultrasonic-Specific SensorView. // optional UltrasonicSensorView ultrasonic_sensor_view = 1003; } // -// \brief Radar Sensor View +// \brief Definition of the radar sensor view. +// +// Radar specific sensor view data. // -// Radar-Specific Sensor View Data message RadarSensorView { - // Radar Input Configuration valid at the time the data was created + // Radar Input Configuration valid at the time the data was created. // optional RadarSensorInputConfiguration radar_sensor_input_configuration = 1; @@ -65,11 +67,11 @@ message RadarSensorView repeated Reflection reflections = 2; // - // \brief The radar reflection. + // \brief Definition of the radar reflection. // message Reflection { - // Relative signal level of the reflection + // Relative signal level of the reflection. // // This takes the combined_antenna_diagram (losses in TX and RX) // as well as the signal losses due to scattering and absorption @@ -77,45 +79,51 @@ message RadarSensorView // actual RX power. // // Unit: [dB] + // optional double signal_strength = 1; - // Time of flight + // Time of flight. // // This is the time of flight of the reflection, which is directly // proportional to the distance traveled. // // Unit: [s] + // optional double time_of_flight = 2; - // Doppler shift + // Doppler shift. // - // Shift in frequency based on the specified TX frequency + // Shift in frequency based on the specified TX frequency. // // Unit: [Hz] + // optional double doppler_shift = 3; - // TX horizontal angle (azimuth) + // TX horizontal angle (azimuth). // // Horizontal angle of incidence of the source of the reflection // at the TX antenna. // // Unit: [rad] + // optional double source_horizontal_angle = 4; - // TX vertical angle (elevation) + // TX vertical angle (elevation). // // Vertical angle of incidence of the source of the reflection // at the TX antenna. // // Unit: [rad] + // optional double source_vertical_angle = 5; } } // -// \brief Lidar Sensor View +// \brief Definition of the lidar sensor view. +// +// Lidar specific sensor view data. // -// Lidar-Specific Sensor View Data message LidarSensorView { // Lidar Input Configuration valid at the time the data was created @@ -130,11 +138,11 @@ message LidarSensorView repeated Reflection reflections = 2; // - // \brief The lidar reflection. + // \brief Definition of the lidar reflection. // message Reflection { - // Relative signal level of the reflection + // Relative signal level of the reflection. // // This takes the combined_antenna_diagram (losses in TX and RX) // as well as the signal losses due to scattering and absorption @@ -142,33 +150,36 @@ message LidarSensorView // actual RX power. // // Unit: [dB] + // optional double signal_strength = 1; - // Time of flight + // Time of flight. // // This is the time of flight of the reflection, which is directly // proportional to the distance traveled. // // Unit: [s] + // optional double time_of_flight = 2; - // Doppler shift + // Doppler shift. // - // Shift in frequency based on the specified TX frequency + // Shift in frequency based on the specified TX frequency. // // Unit: [Hz] + // optional double doppler_shift = 3; } } // -// \brief Camera Sensor View +// \brief Definition of the camera sensor view. +// +// Camera specific sensor view data. // -// Camera-Specific Sensor View Data message CameraSensorView -{ - - // Camera Input Configuration valid at the time the data was created +{ + // Camera Input Configuration valid at the time the data was created. // optional CameraSensorInputConfiguration camera_sensor_input_configuration = 1; @@ -181,13 +192,12 @@ message CameraSensorView } // -// \brief Ultrasonic Sensor View +// \brief Definition of the ultrasonic sensor view. // -// Ultrasonic-Specific Sensor View Data +// Ultrasonic specific sensor view data. message UltrasonicSensorView { - - // Ultrasonic Input Configuration valid at the time the data was created + // Ultrasonic Input Configuration valid at the time the data was created. // optional UltrasonicSensorInputConfiguration ultrasonic_sensor_input_configuration = 1; From c4e4fec042e979284f10c729809888710a9d9c4f Mon Sep 17 00:00:00 2001 From: Carsten Kuebler Date: Thu, 22 Mar 2018 16:57:43 +0100 Subject: [PATCH 03/29] Regularized the Doxygen comments. --- osi_featuredata.proto | 6 +- osi_sensordata.proto | 29 +++--- osi_sensorinputconfiguration.proto | 149 +++++++++++++++++------------ osi_sensorspecific.proto | 4 + 4 files changed, 116 insertions(+), 72 deletions(-) diff --git a/osi_featuredata.proto b/osi_featuredata.proto index 99c08298e..208025e0c 100644 --- a/osi_featuredata.proto +++ b/osi_featuredata.proto @@ -53,11 +53,10 @@ message SensorDetectionHeader // optional uint64 cycle_counter = 3; - // Mounting position of the sensor (origin and orientation of the sensor // frame). Both origin and orientation are given in and with respect to the // host vehicle coordinate system (see: \c Vehicle vehicle reference - // point). + // point) [1]. // // The sensor frame's x-axis is pointing in the central viewing direction of // the sensor. It is the angle bisector of the sensor's horizontal and @@ -74,6 +73,9 @@ message SensorDetectionHeader // identical to sensor detection frame's origin. Detections are defined in // the sensor detection frame which uses e.g. spherical coordinates. // + // \par References: + // [1] DIN ISO 8855:2013-11 + // optional MountingPosition mounting_position = 4; // The origin/orientation of the sensor frame represents the current diff --git a/osi_sensordata.proto b/osi_sensordata.proto index b55b70130..36957373a 100644 --- a/osi_sensordata.proto +++ b/osi_sensordata.proto @@ -81,22 +81,29 @@ message SensorData // optional Identifier host_vehicle_id = 5; - // The mounting position of the sensor (origin and orientation of the sensor coordinate system) - // given in vehicle coordinates [1]. + // Mounting position of the sensor (origin and orientation of the sensor + // frame). Both origin and orientation are given in and with respect to the + // host vehicle coordinate system (see: \c Vehicle vehicle reference + // point) [1]. // - // \arg \b x-direction of sensor coordinate system: sensor viewing direction - // \arg \b z-direction of sensor coordinate system: sensor (up) - // \arg \b y-direction of sensor coordinate system: perpendicular to x and z right hand system + // The sensor frame's x-axis is pointing in the central viewing direction of + // the sensor. It is the angle bisector of the sensor's horizontal and + // vertical field of view. The terms horizontal and vertical must be + // understood as names for the two principal planes of the sensor's field of + // view (relative to the sensor frame's orientation), which do not have to + // be horizontal or vertical in the strict sense of being parallel or + // perpendicular to the local gravitational vector. The horizontal field + // of view defines the sensor frame's xy-plane and the vertical field + // of view defines the xz-plane. The sensor frame is right-handed and the + // z-axis is pointing in an upward direction. + // + // The sensor frame uses cartesian coordinates. The sensor frame's origin is + // identical to sensor detection frame's origin. Detections are defined in + // the sensor detection frame which uses e.g. spherical coordinates. // // \par References: // [1] DIN ISO 8855:2013-11 // - // \note This field is usually static during the simulation. - // \note The origin of vehicle's coordinate system in world frame is - // ( \c Vehicle::base.position + Inverse_Rotation_yaw_pitch_roll(\c Vehicle::base.orientation) * \c Vehicle::bbcenter_to_rear) . - // The orientation of the vehicle's coordinate system is equal to the orientation - // of the vehicle's bounding box \c Vehicle::base.orientation. - // optional MountingPosition mounting_position = 6; // The root mean squared error of the mounting position. diff --git a/osi_sensorinputconfiguration.proto b/osi_sensorinputconfiguration.proto index 25f91bd2a..2374a83d7 100644 --- a/osi_sensorinputconfiguration.proto +++ b/osi_sensorinputconfiguration.proto @@ -12,7 +12,7 @@ package osi; // // This message can be provided by the sensor model to the environment // simulation, in which case it describes the input configuration that -// is desired by the sensor model. In response the environment simulation +// is desired by the sensor model. In response the environment simulation // will configure the input and provide a new message of this type, which // describes the actual configuration that it is going to employ. The two // can and will differ, when either the environment simulation does not @@ -37,7 +37,7 @@ package osi; // suitable data. The specified details are not directly related to // sensor details, but rather provide the necessary base machinery // setup so that the data provided is suitable to model the sensor to -// a sufficient degree of fidelity internally. For example the number +// a sufficient degree of fidelity internally. For example the number // of rays parameters for the Lidar configuration does not match one to // one with the number of laser rays a lidar sensor might cast, but // rather specifies the number of rays being cast by a ray @@ -46,7 +46,7 @@ package osi; // // This also implies that for sensors that have dynamically varying // characteristics (e.g. switching between wide and narrow focus, -// switching update rates, etc.), the basic approach is to specify +// switching update rates etc.), the basic approach is to specify // the maximum amount of data needed at all times here, and internally // select the data that is needed at any point in time. // @@ -63,69 +63,76 @@ package osi; // message SensorInputConfiguration { - // The mounting position of the sensor (origin and orientation of the sensor - // coordinate system) given in vehicle coordinates [1]. + // Mounting position of the sensor (origin and orientation of the sensor + // frame). Both origin and orientation are given in and with respect to the + // host vehicle coordinate system (see: \c Vehicle vehicle reference + // point) [1]. // - // \arg \b x-direction of sensor coordinate system: sensor viewing direction - // \arg \b z-direction of sensor coordinate system: sensor (up) - // \arg \b y-direction of sensor coordinate system: perpendicular to x and z - // right hand system + // The sensor frame's x-axis is pointing in the central viewing direction of + // the sensor. It is the angle bisector of the sensor's horizontal and + // vertical field of view. The terms horizontal and vertical must be + // understood as names for the two principal planes of the sensor's field of + // view (relative to the sensor frame's orientation), which do not have to + // be horizontal or vertical in the strict sense of being parallel or + // perpendicular to the local gravitational vector. The horizontal field + // of view defines the sensor frame's xy-plane and the vertical field + // of view defines the xz-plane. The sensor frame is right-handed and the + // z-axis is pointing in an upward direction. + // + // The sensor frame uses cartesian coordinates. The sensor frame's origin is + // identical to sensor detection frame's origin. Detections are defined in + // the sensor detection frame which uses e.g. spherical coordinates. // // \par References: // [1] DIN ISO 8855:2013-11 // - // \note The origin of vehicle's coordinate system in world frame is - // ( \c Vehicle::base.position + Inverse_Rotation_yaw_pitch_roll( - // \c Vehicle::base.orientation) * \c Vehicle::bbcenter_to_rear ). - // The orientation of the vehicle's coordinate system is equal to the - // orientation of the vehicle's bounding box \c Vehicle::base.orientation. - // \note A default position can be provided by the sensor model (e.g. to - // indicate the position the model was validated for), - // but this is optional; the environment simulation must provide a valid - // mounting position (based on the vehicle configuration) when setting the - // input configuration. - // optional MountingPosition mounting_position = 1; - // Field of View in horizontal orientation of the sensor + // Field of View in horizontal orientation of the sensor. // // This determines the limit of the cone of interest of ground truth // that the simulation environment has to provide. // Viewing range: [-field_of_view_horizontal/2, field_of_view_horizontal/2] - // azimuth in the sensor frame as defined in \c OSI:Spherical3d. + // azimuth in the sensor frame as defined in \c Spherical3d. + // // Unit: [rad] + // optional double field_of_view_horizontal = 2; - // Field of View in vertical orientation of the sensor + // Field of View in vertical orientation of the sensor. // // This determines the limit of the cone of interest of ground truth // that the simulation environment has to provide. // Viewing range: [-field_of_view_vertical/2, field_of_view_vertical/2] // elevation in the sensor frame at zero azimuth as defined in - // \c OSI:Spherical3d. + // \c Spherical3d. // // Unit: [rad] + // optional double field_of_view_vertical = 3; - // Maximum range of the sensor + // Maximum range of the sensor. // // This determines the limit of the cone of interest of ground truth // that the simulation environment has to provide. // // Unit: [m] + // optional double range = 4; - // The update cycle time of the sensor model + // The update cycle time of the sensor model. // // This specifies the rate at which the sensor model is provided with // new input data. // // Unit: [s] + // // \note In the case of FMU packaging this will correspond to the // communication step size. + // optional double update_cycle_time = 5; - // Initial update cycle offset of the sensor model + // Initial update cycle offset of the sensor model. // // This specifies the initial offset (i.e. initial delay) of the // sensor model update cycle that the simulation should take into @@ -140,30 +147,36 @@ message SensorInputConfiguration // update to the sensor input should happen at 0.048s, or 0.018s // after simulation start. This convention is needed to ensure // stable phase position of the offset in the case of changing - // simulation start times, e.g. for partial resimulation. + // simulation start times, e.g. for partial re-simulation. // // Unit: [s] + // optional double update_cycle_offset = 6; - // Simulation Start time + // Simulation Start time. // // This specifies the simulation start time that the Simulation // has chosen. This field has no defined meaning if provided by // the sensor model. // // Unit: [s] + // optional double simulation_start_time = 7; // Radar-specific Sensor Input Configuration. + // optional RadarSensorInputConfiguration radar_sensor_input_configuration = 1000; // Lidar-specific Sensor Input Configuration. + // optional LidarSensorInputConfiguration lidar_sensor_input_configuration = 1001; // Camera-specific Sensor Input Configuration. + // optional CameraSensorInputConfiguration camera_sensor_input_configuration = 1002; // Ultrasonic-specific Sensor Input Configuration. + // optional UltrasonicSensorInputConfiguration ultrasonic_sensor_input_configuration = 1003; } @@ -173,25 +186,28 @@ message SensorInputConfiguration // message RadarSensorInputConfiguration { - // Number of rays to cast across horizontal field of view (azimuth) + // Number of rays to cast across horizontal field of view (azimuth). // // \note This is a characteristic of the ray tracing engine of the // environment simulation, not a direct characteristic of the sensor. + // optional uint32 number_of_rays_horizontal = 1; - // Number of rays to cast across vertical field of view (elevation) + // Number of rays to cast across vertical field of view (elevation). // // \note This is a characteristic of the ray tracing engine of the // environment simulation, not a direct characteristic of the sensor. + // optional uint32 number_of_rays_vertical = 2; - // Maximum number of interactions to take into account + // Maximum number of interactions to take into account. // // \note This is a characteristic of the ray tracing engine of the // environment simulation, not a direct characteristic of the sensor. + // optional uint32 max_number_of_interactions = 3; - // Emitter Frequency + // Emitter Frequency. // // This information can be used by a ray tracing engine to calculate // doppler shift information and take into account differences in @@ -202,35 +218,43 @@ message RadarSensorInputConfiguration // purposes the frequency is also relevant. // // Unit: [Hz] + // optional double emitter_frequency = 4; - // This represents the TX antenna diagram + // This represents the TX antenna diagram. + // repeated AntennaDiagramEntry tx_antenna_diagram = 5; - // This represents the RX antenna diagram + // This represents the RX antenna diagram. + // repeated AntennaDiagramEntry rx_antenna_diagram = 6; // // \brief The radar antenna diagram. // - // \note Rotation is defined analog OSI:Spherical3d - message AntennaDiagramEntry { + // \note Rotation is defined analog \c Spherical3d. + // + message AntennaDiagramEntry + { // Horizontal deflection (azimuth) of entry in sensor/antenna - // coordinates + // coordinates. // // Unit: [rad] + // optional double horizontal_angle = 1; // Vertical deflection (elevation) of entry in sensor/antenna - // coordinates + // coordinates. // // Unit: [rad] + // optional double vertical_angle = 2; // Combined response of emitter and receiver antenna at this - // point (positive dB is gain, negative dB is attenuation) + // point (positive dB is gain, negative dB is attenuation). // // Unit: [dB] + // optional double response = 3; } } @@ -241,25 +265,28 @@ message RadarSensorInputConfiguration // message LidarSensorInputConfiguration { - // Number of rays to cast across horizontal field of view + // Number of rays to cast across horizontal field of view. // // \note This is a characteristic of the ray tracing engine of the // environment simulation, not a direct characteristic of the sensor. + // optional uint32 number_of_rays_horizontal = 1; - // Number of rays to cast across vertical field of view + // Number of rays to cast across vertical field of view. // // \note This is a characteristic of the ray tracing engine of the // environment simulation, not a direct characteristic of the sensor. + // optional uint32 number_of_rays_vertical = 2; - // Maximum number of interactions to take into account + // Maximum number of interactions to take into account. // // \note This is a characteristic of the ray tracing engine of the // environment simulation, not a direct characteristic of the sensor. + // optional uint32 max_number_of_interactions = 3; - // Emitter Frequency + // Emitter Frequency. // // This information can be used by a ray tracing engine to calculate // doppler shift information and take into account differences in @@ -270,6 +297,7 @@ message LidarSensorInputConfiguration // purposes the frequency is also relevant. // // Unit: [Hz] + // optional double emitter_frequency = 4; } @@ -279,19 +307,21 @@ message LidarSensorInputConfiguration // message CameraSensorInputConfiguration { - // Number of pixels to produce across horizontal field of view + // Number of pixels to produce across horizontal field of view. // // \note This is a characteristic of the rendering engine of the // environment simulation, not a direct characteristic of the sensor. + // optional uint32 number_of_pixels_horizontal = 1; - // Number of pixels to produce across horizontal field of view + // Number of pixels to produce across horizontal field of view. // // \note This is a characteristic of the rendering engine of the // environment simulation, not a direct characteristic of the sensor. + // optional uint32 number_of_pixels_vertical = 2; - // Format for image data (includes number, kind and format of channels) + // Format for image data (includes number, kind and format of channels). // // In the message provided by the sensor model, this field can // be repeated and all values are acceptable to the model, with @@ -304,6 +334,7 @@ message CameraSensorInputConfiguration // be one of the values the sensor model requested - or there // must be no value, indicating that the simulation environment // cannot provide image data in one of the requested formats. + // repeated ChannelFormat channel_format = 3; enum ChannelFormat { @@ -311,51 +342,51 @@ message CameraSensorInputConfiguration // FORMAT_UNKNOWN = 0; - // Single Luminance Channel UINT8 Linear + // Single Luminance Channel UINT8 Linear. // FORMAT_MONO_U8_LIN = 1; - // Single Luminance Channel UINT16 Linear + // Single Luminance Channel UINT16 Linear. // FORMAT_MONO_U16_LIN = 2; - // Single Luminance Channel UINT32 Linear + // Single Luminance Channel UINT32 Linear. // FORMAT_MONO_U32_LIN = 3; - // Single Luminance Channel Single Precision FP Linear + // Single Luminance Channel Single Precision FP Linear. // FORMAT_MONO_F32_LIN = 4; - // Packed RGB Channels (no padding) UINT8 Linear + // Packed RGB Channels (no padding) UINT8 Linear. // FORMAT_RGB_U8_LIN = 5; - // Packed RGB Channels (no padding) UINT16 Linear + // Packed RGB Channels (no padding) UINT16 Linear. // FORMAT_RGB_U16_LIN = 6; - // Packed RGB Channels (no padding) UINT32 Linear + // Packed RGB Channels (no padding) UINT32 Linear. // FORMAT_RGB_U32_LIN = 7; - // Packed RGB Channels (no padding) Single Precision FP Linear + // Packed RGB Channels (no padding) Single Precision FP Linear. // FORMAT_RGB_F32_LIN = 8; - // Bayer RGGB Channels UINT8 FP Linear + // Bayer RGGB Channels UINT8 FP Linear. // FORMAT_BAYER_BGGR_U8_LIN = 9; - // Bayer RGGB Channels UINT16 FP Linear + // Bayer RGGB Channels UINT16 FP Linear. // FORMAT_BAYER_BGGR_U16_LIN = 10; - // Bayer RGGB Channels UINT32 FP Linear + // Bayer RGGB Channels UINT32 FP Linear. // FORMAT_BAYER_BGGR_U32_LIN = 11; - // Bayer RGGB Channels Single Precision FP Linear + // Bayer RGGB Channels Single Precision FP Linear. // FORMAT_BAYER_BGGR_F32_LIN = 12; diff --git a/osi_sensorspecific.proto b/osi_sensorspecific.proto index 1f63fd9a1..0f03629f7 100644 --- a/osi_sensorspecific.proto +++ b/osi_sensorspecific.proto @@ -15,6 +15,7 @@ message RadarSpecificObjectData // The radar cross section (RCS) of the detected object. // // Unit: [dB m^2] + // optional double rcs = 1; } @@ -25,6 +26,7 @@ message RadarSpecificObjectData message LidarSpecificObjectData { // currently no fields. + // } // @@ -34,6 +36,7 @@ message LidarSpecificObjectData message CameraSpecificObjectData { // currently no fields. + // } // @@ -43,4 +46,5 @@ message CameraSpecificObjectData message UltrasonicSpecificObjectData { // currently no fields. + // } From cdc331c7b612a65cffe8aa465c74bb3797edb66d Mon Sep 17 00:00:00 2001 From: Carsten Kuebler Date: Thu, 22 Mar 2018 17:21:26 +0100 Subject: [PATCH 04/29] Regularized the Doxygen comments. --- osi_lane.proto | 61 +++++++++++++++++++++++++++++------------ osi_modelinternal.proto | 14 ++++++---- osi_occupant.proto | 6 ++++ 3 files changed, 59 insertions(+), 22 deletions(-) diff --git a/osi_lane.proto b/osi_lane.proto index 501cf4f7e..b4f68e634 100644 --- a/osi_lane.proto +++ b/osi_lane.proto @@ -29,10 +29,12 @@ message Lane // Example: 3 (see reference picture). // // \note Note ID is global unique. + // optional Identifier id = 1; // The type of the lane. - // Example: \c Lane::type = \c Type::TYPE_DRIVING (see reference picture) + // Example: \c #type = \c #TYPE_DRIVING (see reference picture) + // optional Type type = 2; // The lane's center line (as a list of segments). @@ -53,8 +55,9 @@ message Lane // // \image html line_approximation_error.png "Approximation error as green line." // - // \note The center_line is defined only for \c Lane::type = - // \c Type::TYPE_DRIVING and one \c Lane::lane_pairings pair. + // \note The \c #center_line is defined only for \c #type = + // \c #TYPE_DRIVING and one \c #lane_pairings pair. + // repeated Vector3d center_line = 3; // Definition of the intended driving direction. @@ -65,8 +68,9 @@ message Lane // false means driving direction is according to descending storage order of // center line points. // - // \note The center_line_is_driving_direction is defined for \c Lane::type = - // \c Type::TYPE_DRIVING . + // \note The \c #center_line_is_driving_direction is defined for \c #type = + // \c #TYPE_DRIVING . + // optional bool center_line_is_driving_direction = 4; // List of IDs of all lane segments that are directly adjacent to the lane @@ -77,8 +81,9 @@ message Lane // Example: The lane ID 2 is the only left adjacent lane for lane ID 3 in // the reference picture. // - // \note The left_adjacent_lane_id is undefined for \c Lane::type = - // \c Type::TYPE_INTERSECTION . + // \note The \c #left_adjacent_lane_id_list is undefined for \c #type = + // \c #TYPE_INTERSECTION . + // repeated Identifier left_adjacent_lane_id_list = 5; // List of IDs of all lane segments that are directly adjacent to the lane @@ -90,8 +95,9 @@ message Lane // not a right adjacent lane to lane ID 3 as they are separated by lane ID // 7. // - // \note The right_adjacent_lane_id is undefined for \c Lane::type = - // \c Type::TYPE_INTERSECTION . + // \note The \c #right_adjacent_lane_id_list is undefined for \c #type = + // \c #TYPE_INTERSECTION . + // repeated Identifier right_adjacent_lane_id_list = 6; // The antecessor/successor lane pairings of this lane. There can be @@ -100,26 +106,30 @@ message Lane // The antecessor lanes end in the same point that this lane starts from. // The successor lanes start in the same point that this lane ends in. // Example: + // repeated LanePairing lane_pairings = 7; // The ID of the right boundary ID of the right lane ID w.r.t. the driving // direction. Empty for intersections. // - // \note The right_lane_boundary_id is undefined for \c Lane::type = - // \c Type::TYPE_INTERSECTION . + // \note The \c #right_lane_boundary_id_list is undefined for \c #type = + // \c #TYPE_INTERSECTION . + // repeated Identifier right_lane_boundary_id_list = 8; // The ID of the left boundary ID of the left lane ID w.r.t. the driving // direction. Empty for intersections. // - // \note The left_lane_boundary_id is undefined for \c Lane::type = - // \c Type::TYPE_INTERSECTION . + // \note The \c #left_lane_boundary_id_list is undefined for \c #type = + // \c #TYPE_INTERSECTION . + // repeated Identifier left_lane_boundary_id_list = 9; // The ID of the free boundary ID. // - // \note Lanes with \c Lane::type = \c Type::TYPE_INTERSECTION use only free + // \note \c Lanes with \c #type = \c #TYPE_INTERSECTION use only free // lane boundaries. + // repeated Identifier free_lane_boundary_id_list = 10; // A lane framing describes the surroundings of the lane segment. @@ -127,6 +137,7 @@ message Lane optional LaneFraming lane_framing = 11; // The condition of the lane, e.g. influenced by weather. + // optional RoadCondition road_condition = 12; // Definition of available lane types. @@ -143,6 +154,7 @@ message Lane // A normal lane. // Example: lanes with IDs 1, 2, 3, 4 and 7 of the highway_exit image. + // TYPE_DRIVING = 2; // A road where driving is normally not permitted. @@ -187,22 +199,26 @@ message Lane // The temperature of the roads surface in Kelvin. // // Unit: [K] + // optional double surface_temperature = 1; // The height of the water film on top of the surface in mm. // // Unit: [mm] + // optional double surface_water_film = 2; // The temperature where the water on top of the surface would start // to freeze or dew in Kelvin. // // Unit: [K] + // optional double surface_freezing_point = 3; // The percentage of ice covering the road. // // Unit: [%] + // optional double surface_ice = 4; // The coefficient representing the roughness or unevenness of the road. @@ -237,6 +253,7 @@ message Lane // \par References: // [1] SAYERS, M.W.; KARAMIHAS, S.M. Little Book of Profiling, // University of Michigan Transportation Research Institute, 1998. + // optional double surface_roughness = 5; // The surface texture or fine roughness @@ -249,11 +266,12 @@ message Lane // Unit: [m] // // \par References: - // [1] SAYERS, M.W.; KARAMIHAS, S.M. Little Book of Profiling, + // \li [1] SAYERS, M.W.; KARAMIHAS, S.M. Little Book of Profiling, // University of Michigan Transportation Research Institute, 1998. - // [2] SCHNEIDER, R.: Modellierung der Wellenausbreitung für - // ein bildgebendes Kfz-Radar, Dissertation, Universität Karlsruhe, + // \li [2] SCHNEIDER, R.: Modellierung der Wellenausbreitung fuer + // ein bildgebendes Kfz-Radar, Dissertation, Universitaet Karlsruhe, // Mai 1998. + // optional double surface_texture = 6; } } @@ -297,6 +315,7 @@ message LaneBoundary // // \attention For \c BoundaryPoint the same rules regarding maximum // distance and approximation error apply as for \c Lane::center_line. + // repeated BoundaryPoint boundary_line = 2; // The type of the lane boundary. @@ -316,10 +335,12 @@ message LaneBoundary { // 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). @@ -340,10 +361,12 @@ message LaneBoundary // 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. @@ -362,6 +385,7 @@ message LaneBoundary // The color of the lane boundary in case of a lane markings. // Lane markings that alternate in color must be represented by individual // \c LaneBoundary segments. + // enum Color { // Color of marking is unknown. Value must not be used in ground truth. @@ -375,6 +399,7 @@ message LaneBoundary // Marking without color. Used to represent logical boundaries without // actual physical markings at the respective position. // Value may be used in ground truth only. + // COLOR_NONE = 2; // Marking with white color. @@ -418,6 +443,7 @@ message BoundaryPoint // // \note Field need not be set if it is defined previous. // See \c LaneBoundary. + // optional double boundary_width = 2; // The overall height of the lane boundary at the position of the @@ -426,5 +452,6 @@ message BoundaryPoint // // \note Field need not be set if it is defined previous. // See \c LaneBoundary . + // optional double boundary_height = 3; } diff --git a/osi_modelinternal.proto b/osi_modelinternal.proto index 1a6e35eb1..0963401a1 100644 --- a/osi_modelinternal.proto +++ b/osi_modelinternal.proto @@ -8,28 +8,32 @@ import "osi_object.proto"; package osi; // -// \brief Additional internal data and state flags for SensorDataObjects. +// \brief Additional internal data and state flags for \c SensorData objects. // message ModelInternalObject { // Specifies whether this vehicle is seen by the sensor; set by the // field-of-view calculation. + // optional bool is_seen = 1 [default = true]; // The type of the original object in the ground truth. // optional ObjectType ground_truth_type = 2; - // Ground truth vehicle type for object of ground_truth_type \c Vehicle, + // Ground truth vehicle type for object of \c #ground_truth_type \c Vehicle, // should not be set otherwise. + // optional Vehicle.Type vehicle_type = 3; - // Ground truth object type for object of ground_truth_type \c MovingObject, - // should not be set otherwise. + // Ground truth object type for object of \c #ground_truth_type + // \c MovingObject, should not be set otherwise. + // optional MovingObject.Type moving_object_type = 4; - // Ground truth object type for object of ground_truth_type + // Ground truth object type for object of \c #ground_truth_type // \c StationaryObject, should not be set otherwise. + // optional StationaryObject.Type stationary_object_type = 5; // Definition of object types in ground truth. diff --git a/osi_occupant.proto b/osi_occupant.proto index 6543b1de5..55195fae4 100644 --- a/osi_occupant.proto +++ b/osi_occupant.proto @@ -17,6 +17,7 @@ message Occupant // Flag determining whether the person is the driver of the vehicle or a // passenger. + // optional bool is_driver = 2; // Seat position of the vehicle occupant. @@ -25,6 +26,7 @@ message Occupant // Describes the state of the passenger's hands related to the steering // wheel (mostly driver). + // optional SteeringControl steering_control = 4; // Definition of seat positions. @@ -41,10 +43,12 @@ message Occupant // 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. @@ -86,6 +90,7 @@ message Occupant // Other (unspecified but known) hand positioning related to the // steering wheel. + // STEERING_CONTROL_OTHER = 1; // Hands are not on the steering wheel. @@ -97,6 +102,7 @@ message Occupant // // \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. From caa14039760ac9a21de5cf531e62db15fc061592 Mon Sep 17 00:00:00 2001 From: Carsten Kuebler Date: Thu, 22 Mar 2018 17:30:30 +0100 Subject: [PATCH 05/29] Regularized the Doxygen comments. --- osi_common.proto | 2 +- osi_detectedobject.proto | 4 ++-- osi_environment.proto | 18 +++++++++--------- osi_featuredata.proto | 2 +- osi_groundtruth.proto | 4 ++-- osi_lane.proto | 2 +- osi_object.proto | 2 +- osi_sensordata.proto | 2 +- osi_sensorinputconfiguration.proto | 2 +- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/osi_common.proto b/osi_common.proto index de51495ff..1911137ec 100644 --- a/osi_common.proto +++ b/osi_common.proto @@ -143,7 +143,7 @@ message Dimension3d // versions (V2.xx) had an other definition. // // \par References: -// [1] DIN ISO 8855:2013-11 +// \li [1] DIN ISO 8855:2013-11 // message Orientation3d { diff --git a/osi_detectedobject.proto b/osi_detectedobject.proto index 62c772f1e..d573bdb38 100644 --- a/osi_detectedobject.proto +++ b/osi_detectedobject.proto @@ -105,7 +105,7 @@ message DetectedObject // View_normal_base_coord_system = Inverse_Rotation(head_pose)*Unit_vector_x // // \par References: - // [1] https://en.wikipedia.org/wiki/Anatomical_terms_of_location + // \li [1] https://en.wikipedia.org/wiki/Anatomical_terms_of_location optional Orientation3d head_pose = 17; // Pedestrian upper body pose for behaviour prediction. Describes the @@ -118,7 +118,7 @@ message DetectedObject // View_normal_base_coord_system = Inverse_Rotation(upper_body_pose)*Unit_vector_x // // \par References: - // [2] https://en.wikipedia.org/wiki/Anatomical_terms_of_location + // \li [2] https://en.wikipedia.org/wiki/Anatomical_terms_of_location optional Orientation3d upper_body_pose = 18; // Percentage side lane left. diff --git a/osi_environment.proto b/osi_environment.proto index d9ac76e55..ffbab4311 100644 --- a/osi_environment.proto +++ b/osi_environment.proto @@ -44,7 +44,7 @@ message EnvironmentalConditions // (I = Intensity of precipitation in mm per hour [mm/h]) // // \par References: - // [1] PAULAT, Marcus, et al. A gridded dataset of hourly precipitation in Germany: Its construction, climatology and application. Meteorologische Zeitschrift, 2008, 17. Jg. Nr. 6, S. 719-732. + // \li [1] PAULAT, Marcus, et al. A gridded dataset of hourly precipitation in Germany: Its construction, climatology and application. Meteorologische Zeitschrift, 2008, 17. Jg. Nr. 6, S. 719-732. // enum Precipitation { @@ -98,9 +98,9 @@ message EnvironmentalConditions // contrast of a distant object against its background. // // \par References: - // [2] SHEPARD, Frank D. Reduced visibility due to fog on the highway. Transportation Research Board, 1996. - // [3] [StVO §17 chapter 3](https://www.stvo.de/strassenverkehrsordnung/101-17-beleuchtung) - // [4] [Homepage of the Meteorological Office](http://www.metoffice.gov.uk/guide/weather/observations-guide/how-we-measure-visibility) + // \li [2] SHEPARD, Frank D. Reduced visibility due to fog on the highway. Transportation Research Board, 1996. + // \li [3] [StVO 17 chapter 3](https://www.stvo.de/strassenverkehrsordnung/101-17-beleuchtung) + // \li [4] [Homepage of the Meteorological Office](http://www.metoffice.gov.uk/guide/weather/observations-guide/how-we-measure-visibility) // enum Fog { @@ -164,11 +164,11 @@ message EnvironmentalConditions // [6] and standards for required lighting levels on roads [6, 7, 8, 9]. // // \par References: - // [5] [The NIST Reference on Constants, Units, and Uncertainty](https://physics.nist.gov/cuu/Units/units.html) - // [6] [National Optical Astronomy Observatory](https://www.noao.edu/education/QLTkit/ACTIVITY_Documents/Safety/LightLevels_outdoor+indoor.pdf) - // [7] [Standards for required street lighting in the USA](http://www.wsdot.wa.gov/research/reports/fullreports/847.1.pdf) - // [8] [Canadian IES-RP-8 standards for road lighting - municipality of Saint-Gédéon-de-. Beauce](http://sslnet.ca/wp-content/uploads/2011/10/LTE-RT-2011-0076-Anglais.pdf) - // [9] [European standards for road lighting](http://courtneystrong.com/wp-content/uploads/2017/07/css-sl1-class-and-quality-of-street-lighting.pdf) + // \li [5] [The NIST Reference on Constants, Units, and Uncertainty](https://physics.nist.gov/cuu/Units/units.html) + // \li [6] [National Optical Astronomy Observatory](https://www.noao.edu/education/QLTkit/ACTIVITY_Documents/Safety/LightLevels_outdoor+indoor.pdf) + // \li [7] [Standards for required street lighting in the USA](http://www.wsdot.wa.gov/research/reports/fullreports/847.1.pdf) + // \li [8] [Canadian IES-RP-8 standards for road lighting - municipality of Saint-Gedeon-de-. Beauce](http://sslnet.ca/wp-content/uploads/2011/10/LTE-RT-2011-0076-Anglais.pdf) + // \li [9] [European standards for road lighting](http://courtneystrong.com/wp-content/uploads/2017/07/css-sl1-class-and-quality-of-street-lighting.pdf) // enum AmbientIllumination { diff --git a/osi_featuredata.proto b/osi_featuredata.proto index 208025e0c..33b25e59e 100644 --- a/osi_featuredata.proto +++ b/osi_featuredata.proto @@ -74,7 +74,7 @@ message SensorDetectionHeader // the sensor detection frame which uses e.g. spherical coordinates. // // \par References: - // [1] DIN ISO 8855:2013-11 + // \li [1] DIN ISO 8855:2013-11 // optional MountingPosition mounting_position = 4; diff --git a/osi_groundtruth.proto b/osi_groundtruth.proto index da6ee7dfe..c014c2007 100644 --- a/osi_groundtruth.proto +++ b/osi_groundtruth.proto @@ -105,8 +105,8 @@ message GroundTruth // Unit: [] // // \par References: - // [1] [International Standard ISO 3166-1: Codes for the representation of names of countries and their subdivisions – Part 1: Country codes, third ed., 2013] (https://www.iso.org/obp/ui/) - // [2] [Wikipedia ISO 3166/1] (https://en.wikipedia.org/wiki/ISO_3166-1) + // \li [1] [International Standard ISO 3166-1: Codes for the representation of names of countries and their subdivisions - Part 1: Country codes, third ed., 2013] (https://www.iso.org/obp/ui/) + // \li [2] [Wikipedia ISO 3166/1] (https://en.wikipedia.org/wiki/ISO_3166-1) // optional uint32 country_code = 13; } diff --git a/osi_lane.proto b/osi_lane.proto index b4f68e634..c1dabb9a4 100644 --- a/osi_lane.proto +++ b/osi_lane.proto @@ -251,7 +251,7 @@ message Lane // Unit: [mm/m] // // \par References: - // [1] SAYERS, M.W.; KARAMIHAS, S.M. Little Book of Profiling, + // \li [1] SAYERS, M.W.; KARAMIHAS, S.M. Little Book of Profiling, // University of Michigan Transportation Research Institute, 1998. // optional double surface_roughness = 5; diff --git a/osi_object.proto b/osi_object.proto index 7241f57ea..340f45468 100644 --- a/osi_object.proto +++ b/osi_object.proto @@ -24,7 +24,7 @@ package osi; // Therefore the positive y-axis points to the left of the vehicle. // // \par References: -// [1] DIN ISO 8855:2013-11 +// \li [1] DIN ISO 8855:2013-11 // message Vehicle { diff --git a/osi_sensordata.proto b/osi_sensordata.proto index 36957373a..33cc1ab3d 100644 --- a/osi_sensordata.proto +++ b/osi_sensordata.proto @@ -102,7 +102,7 @@ message SensorData // the sensor detection frame which uses e.g. spherical coordinates. // // \par References: - // [1] DIN ISO 8855:2013-11 + // \li [1] DIN ISO 8855:2013-11 // optional MountingPosition mounting_position = 6; diff --git a/osi_sensorinputconfiguration.proto b/osi_sensorinputconfiguration.proto index 2374a83d7..bc3b0615d 100644 --- a/osi_sensorinputconfiguration.proto +++ b/osi_sensorinputconfiguration.proto @@ -84,7 +84,7 @@ message SensorInputConfiguration // the sensor detection frame which uses e.g. spherical coordinates. // // \par References: - // [1] DIN ISO 8855:2013-11 + // \li [1] DIN ISO 8855:2013-11 // optional MountingPosition mounting_position = 1; From 3f4abab5681ebef189090c2c9a4ec5434266f2b7 Mon Sep 17 00:00:00 2001 From: Carsten Kuebler Date: Thu, 22 Mar 2018 17:41:48 +0100 Subject: [PATCH 06/29] Bugfix Typos removed again... --- osi_featuredata.proto | 4 ++-- osi_sensordata.proto | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/osi_featuredata.proto b/osi_featuredata.proto index 33b25e59e..61e38802a 100644 --- a/osi_featuredata.proto +++ b/osi_featuredata.proto @@ -101,8 +101,8 @@ message SensorDetectionHeader // The ID of the sensor at host vehicle's mounting_position. // - // This ID can equal \c SensorData::sensor_id, if SensorData hold only data - // from one sensor/sensor model. + // This ID can equal \c SensorData::sensor_id, if \c SensorData holds only + // data from one sensor/sensor model. // optional Identifier sensor_id = 8; diff --git a/osi_sensordata.proto b/osi_sensordata.proto index 33cc1ab3d..607d7422d 100644 --- a/osi_sensordata.proto +++ b/osi_sensordata.proto @@ -28,8 +28,8 @@ message SensorData { // The ID of the sensor at host vehicle's mounting_position. // - // This ID can equal \c DetectionHeader::sensor_id, if SensorData holds only - // data from one sensor/sensor model. + // This ID can equal \c DetectionHeader::sensor_id, if \c SensorData holds + // only data from one sensor/sensor model. // optional Identifier sensor_id = 1; From a2051e292999838c385376c60db546e250952d79 Mon Sep 17 00:00:00 2001 From: Carsten Kuebler Date: Thu, 22 Mar 2018 17:46:55 +0100 Subject: [PATCH 07/29] Fix links. Fix doxygen links. --- osi_environment.proto | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osi_environment.proto b/osi_environment.proto index ffbab4311..f26a0f98e 100644 --- a/osi_environment.proto +++ b/osi_environment.proto @@ -183,7 +183,7 @@ message EnvironmentalConditions // Level 1 illumination in ]0.001, 0.01[ [lx] // E.g. Night with no artificial light. // - // \note Use \c AMBIENT_ILLUMINATION_LEVEL1 if illumination is less than + // \note Use \c #AMBIENT_ILLUMINATION_LEVEL1 if illumination is less than // 0.001 [lx] // AMBIENT_ILLUMINATION_LEVEL1 = 2; @@ -231,7 +231,7 @@ message EnvironmentalConditions // Level 9 illumination in [10000, 120000[ [lx] // E.g. Full daylight to intense sunlight. // - // \note Use \c AMBIENT_ILLUMINATION_LEVEL9 if illumination is more than + // \note Use \c #AMBIENT_ILLUMINATION_LEVEL9 if illumination is more than // 120000 [lx] // AMBIENT_ILLUMINATION_LEVEL9 = 10; From 86c57f36763b776dc396f13e4045b57dffcc81cb Mon Sep 17 00:00:00 2001 From: Carsten Kuebler Date: Thu, 22 Mar 2018 18:03:24 +0100 Subject: [PATCH 08/29] Regularized the Doxygen comments. --- osi_detectedlandmark.proto | 5 ++- osi_detectedlane.proto | 16 ++++--- osi_detectedobject.proto | 89 +++++++++++++++++++++++++++++++------- osi_sensorview.proto | 2 +- 4 files changed, 86 insertions(+), 26 deletions(-) diff --git a/osi_detectedlandmark.proto b/osi_detectedlandmark.proto index 8ab30c958..a61cf80f0 100644 --- a/osi_detectedlandmark.proto +++ b/osi_detectedlandmark.proto @@ -51,7 +51,7 @@ message DetectedTrafficSign // The root mean squared error of the base parameters of the detected // traffic sign. \c TrafficSign::base has to be identical for - // all \c #candidate_sign traffic signs. + // all \c #candidate_signs traffic signs. // optional BaseStationary base_rmse = 9; @@ -190,7 +190,8 @@ message CandidateSupplementarySign optional SupplementarySign sign = 1; // The estimated probability that this candidate is the true value. - // The sum of all \c #candidate_probability must be one. + // The sum of all \c #candidate_probability of one supplementary sign must + // be one. // // Range: [0,1] // diff --git a/osi_detectedlane.proto b/osi_detectedlane.proto index 17b211d48..f08ba5dbb 100644 --- a/osi_detectedlane.proto +++ b/osi_detectedlane.proto @@ -50,8 +50,9 @@ message DetectedLane // A list of sensors which detected this detected entity. // - // If SensorData has detected entities and all detections are missing, then - // e.g. the number of sensors can confirm the existence_probability. + // If \c SensorData has detected entities and all detections are missing, + // then e.g. the number of sensors can confirm the + // \c #existence_probability. // // \note This information can be determined via the detected entities' // detections ( \c ...Detection::object_id = 'this detected entity' ) and @@ -66,13 +67,13 @@ message DetectedLane message DetectedLaneBoundary { // Specific ID of the detected lane boundary as assigned by the sensor - // internally. Need not match with ground_truth_id. + // internally. Need not match with \c #ground_truth_id. // optional Identifier tracking_id = 2; - // The ID of the original LaneBoundary in the ground truth. + // The ID of the original \c LaneBoundary in the ground truth. // - // \note In case of a ghost LaneBoundary (no corresponding ground truth), + // \note In case of a ghost \c LaneBoundary (no corresponding ground truth), // this field should be unset. // optional Identifier ground_truth_id = 3; @@ -125,8 +126,9 @@ message DetectedLaneBoundary // A list of sensors which detected this detected entity. // - // If SensorData has detected entities and all detections are missing, then - // e.g. the number of sensors can confirm the \c #existence_probability. + // If \c SensorData has detected entities and all detections are missing, + // then e.g. the number of sensors can confirm the + // \c #existence_probability. // // \note This information can be determined via the detected entities' // detections ( \c ...Detection::object_id = 'this detected entity' ) and diff --git a/osi_detectedobject.proto b/osi_detectedobject.proto index d573bdb38..46728ee0f 100644 --- a/osi_detectedobject.proto +++ b/osi_detectedobject.proto @@ -16,15 +16,19 @@ 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; // The ID of the original object in the ground truth list of vehicles / // objects etc. Multiple entries if detected object is a merge of multiple // ground truth objects. + // repeated Identifier ground_truth_id = 2; // The amount of time that this object has been currently observed/tracked. + // // Unit: [s] + // optional double age = 3; // The measurement state of the detected object. @@ -33,10 +37,12 @@ message DetectedObject // Base parameters of the object. object.position is the middle of the // bounding box of the target object. + // optional BaseMoving object = 5; // The root mean squared error of the base parameters in object (cross // correlations are currently neglected). + // optional BaseMoving object_rmse = 6; // Reference point location specification of the sensor measurement @@ -46,6 +52,7 @@ message DetectedObject // \note Note that the value of this field has no impact on the value of // object.position, which always references the center of the object / // bounding box. + // optional ReferencePoint reference_point = 7; // Actual movement state w.r.t. the moving object history. @@ -57,10 +64,12 @@ message DetectedObject // // \note Use as confidence measure where a low value means less confidence // and a high value indicates strong confidence. + // optional double existence_probability = 9; // Current state of lights as perceived by sensor, only relevant if the // object is estimated to be an object that has lights. + // optional Vehicle.LightState light_state = 10; // Additional internal data and state flags required and used by the @@ -69,27 +78,32 @@ message DetectedObject // // \note optional. List of used detections to recognize this object. // Detections have also an identifier to reference to the detected object. + // optional ModelInternalObject model_internal_object = 11; // Additional data that is specific to radar sensors. // // \note Field need not be set if simulated sensor is not a radar sensor. + // optional RadarSpecificObjectData radar_specifics = 12; // Additional data that is specific to lidar sensors. // // \note Field need not be set if simulated sensor is not a lidar sensor. + // optional LidarSpecificObjectData lidar_specifics = 13; // Additional data that is specific to camera sensors. // // \note Field need not be set if simulated sensor is not a camera sensor. + // optional CameraSpecificObjectData camera_specifics = 14; // Additional data that is specific to ultrasonic sensors. // // \note Field need not be set if simulated sensor is not an ultrasonic // sensor. + // optional UltrasonicSpecificObjectData ultrasonic_specifics = 15; // The estimated probabilities for the object to belong to a specific class. @@ -106,6 +120,7 @@ message DetectedObject // // \par References: // \li [1] https://en.wikipedia.org/wiki/Anatomical_terms_of_location + // optional Orientation3d head_pose = 17; // Pedestrian upper body pose for behaviour prediction. Describes the @@ -119,16 +134,19 @@ message DetectedObject // // \par References: // \li [2] https://en.wikipedia.org/wiki/Anatomical_terms_of_location + // optional Orientation3d upper_body_pose = 18; // Percentage side lane left. // // Percentage value of the object width in the corresponding lane. + // optional double percentage_side_lane_left = 19; // Percentage side lane right. // // Percentage value of the object width in the corresponding lane. + // optional double percentage_side_lane_right = 20; // A list of sensors which detected this detected entity. @@ -139,6 +157,7 @@ message DetectedObject // \note This information can be determined via the detected entities' // detections ( \c ...Detection::object_id = 'this detected entity' ) and // the sensors (their IDs) to which these detections belong. + // repeated Identifier sensor_id = 21; // Definition of available reference points. Left/middle/right and @@ -155,6 +174,7 @@ message DetectedObject // 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. @@ -220,6 +240,7 @@ message DetectedObject // Object movement was detected in tracking history, but object is // currently not moving. + // MOVEMENT_STATE_STOPPED = 4; } @@ -229,72 +250,106 @@ message DetectedObject // message ClassProbability { - // Probability that the object has unknown type. Range [0,1]. + // Probability that the object has unknown type. + // + // Range [0,1]. // optional double prob_unknown = 1; - // Probablility that the object is unspecified but known. Range [0,1]. + // Probability that the object is unspecified but known. + // + // Range [0,1]. // optional double prob_other = 2; - // Probability that the object is a car. Range [0,1]. + // Probability that the object is a car. + // + // Range [0,1]. // optional double prob_car = 3; - // Probability that the object is a heavy truck. Range [0,1]. + // Probability that the object is a heavy truck. + // + // Range [0,1]. // optional double prob_heavy_truck = 4; - // Probablility that the object is a van. Range [0,1]. + // Probability that the object is a van. + // + // Range [0,1]. // optional double prob_van = 5; - // Probability that the object is a bus. Range [0,1]. + // Probability that the object is a bus. + // + // Range [0,1]. // optional double prob_bus = 6; - // Probability that the object is a trailer. Range [0,1]. + // Probability that the object is a trailer. + // + // Range [0,1]. // optional double prob_trailer = 7; - // Probability that the object is a semitrailer. Range [0,1]. + // Probability that the object is a semitrailer. + // + // Range [0,1]. // optional double prob_semitrailer = 8; - // Probability that the object is a tram. Range [0,1]. + // Probability that the object is a tram. + // + // Range [0,1]. // optional double prob_tram = 9; - // Probability that the object is a train. Range [0,1]. + // Probability that the object is a train. + // + // Range [0,1]. // // \note Can also be used for underground railway. + // optional double prob_train = 10; - // Probability that the object is a motorbike. Range [0,1]. + // Probability that the object is a motorbike. + // + // Range [0,1]. // optional double prob_motorbike = 11; - // Probability that the object is a bicycle. Range [0,1]. + // Probability that the object is a bicycle. + // + // Range [0,1]. // optional double prob_bicycle = 12; - // Probability that the object is a pedestrian. Range [0,1]. + // Probability that the object is a pedestrian. + // + // Range [0,1]. // optional double prob_pedestrian = 13; - // Probability that the object is a wheelchair. Range [0,1]. + // Probability that the object is a wheelchair. + // + // Range [0,1]. // optional double prob_wheelchair = 14; - // Probability that the object is an animal. Range [0,1]. + // Probability that the object is an animal. + // + // Range [0,1]. // optional double prob_animal = 15; - // Probability that the object is a stationary object. Range [0,1]. + // Probability that the object is a stationary object. + // + // Range [0,1]. // optional double prob_stationary = 16; // Probability that the object is an unspecified but known vehicle. + // // Range [0,1]. // optional double prob_other_vehicle = 17; @@ -311,6 +366,7 @@ enum MeasurementState // Measurement state is unspecified (but known, i.e. value is not part of // this enum list). + // MEASUREMENT_STATE_OTHER = 1; // Entity has been measured by the sensor in the current timestep. @@ -319,5 +375,6 @@ enum MeasurementState // Entity has not been measured by the sensor in the current timestep. // Values provided by tracking only. + // MEASUREMENT_STATE_PREDICTED = 3; } diff --git a/osi_sensorview.proto b/osi_sensorview.proto index 019da5ee8..d17e22759 100644 --- a/osi_sensorview.proto +++ b/osi_sensorview.proto @@ -183,7 +183,7 @@ message CameraSensorView // optional CameraSensorInputConfiguration camera_sensor_input_configuration = 1; - // Raw Image Data + // Raw Image Data. // // The raw image data in the memory layout and order specified by the // camera sensor input configuration. From 5383b0295b02ba5a0a462fc021c5d62dfd349aa4 Mon Sep 17 00:00:00 2001 From: Carsten Kuebler Date: Thu, 22 Mar 2018 18:09:48 +0100 Subject: [PATCH 09/29] Regularized the Doxygen comments. --- osi_detectedlandmark.proto | 7 ++++--- osi_detectedobject.proto | 34 +++++++++++++++++----------------- osi_detectedoccupant.proto | 4 ++-- 3 files changed, 23 insertions(+), 22 deletions(-) diff --git a/osi_detectedlandmark.proto b/osi_detectedlandmark.proto index a61cf80f0..5d6708944 100644 --- a/osi_detectedlandmark.proto +++ b/osi_detectedlandmark.proto @@ -375,14 +375,15 @@ message DetectedRoadMarking // The root mean squared error of the base parameters of the detected road // marking. \c RoadMarking::base has to be identical for - // all \c #candidate_road_marking road markings. + // all \c #candidate_road_markings road markings. // optional BaseStationary base_rmse = 8; // A list of sensors which detected this detected entity. // - // If SensorData has detected entities and all detections are missing, then - // e.g. the number of sensors can confirm the #existence_probability. + // If \c SensorData has detected entities and all detections are missing, + // then e.g. the number of sensors can confirm the + // \c #existence_probability. // // \note This information can be determined via the detected entities' // detections ( \c ...Detection::object_id = 'this detected entity' ) and diff --git a/osi_detectedobject.proto b/osi_detectedobject.proto index 46728ee0f..bb49dafc6 100644 --- a/osi_detectedobject.proto +++ b/osi_detectedobject.proto @@ -252,61 +252,61 @@ message DetectedObject { // Probability that the object has unknown type. // - // Range [0,1]. + // Range: [0,1] // optional double prob_unknown = 1; // Probability that the object is unspecified but known. // - // Range [0,1]. + // Range: [0,1] // optional double prob_other = 2; // Probability that the object is a car. // - // Range [0,1]. + // Range: [0,1] // optional double prob_car = 3; // Probability that the object is a heavy truck. // - // Range [0,1]. + // Range: [0,1] // optional double prob_heavy_truck = 4; // Probability that the object is a van. // - // Range [0,1]. + // Range: [0,1] // optional double prob_van = 5; // Probability that the object is a bus. // - // Range [0,1]. + // Range: [0,1] // optional double prob_bus = 6; // Probability that the object is a trailer. // - // Range [0,1]. + // Range: [0,1] // optional double prob_trailer = 7; // Probability that the object is a semitrailer. // - // Range [0,1]. + // Range: [0,1] // optional double prob_semitrailer = 8; // Probability that the object is a tram. // - // Range [0,1]. + // Range: [0,1] // optional double prob_tram = 9; // Probability that the object is a train. // - // Range [0,1]. + // Range: [0,1] // // \note Can also be used for underground railway. // @@ -314,43 +314,43 @@ message DetectedObject // Probability that the object is a motorbike. // - // Range [0,1]. + // Range: [0,1] // optional double prob_motorbike = 11; // Probability that the object is a bicycle. // - // Range [0,1]. + // Range: [0,1] // optional double prob_bicycle = 12; // Probability that the object is a pedestrian. // - // Range [0,1]. + // Range: [0,1] // optional double prob_pedestrian = 13; // Probability that the object is a wheelchair. // - // Range [0,1]. + // Range: [0,1] // optional double prob_wheelchair = 14; // Probability that the object is an animal. // - // Range [0,1]. + // Range: [0,1] // optional double prob_animal = 15; // Probability that the object is a stationary object. // - // Range [0,1]. + // Range: [0,1] // optional double prob_stationary = 16; // Probability that the object is an unspecified but known vehicle. // - // Range [0,1]. + // Range: [0,1] // optional double prob_other_vehicle = 17; } diff --git a/osi_detectedoccupant.proto b/osi_detectedoccupant.proto index 8ecfe229b..f24c87904 100644 --- a/osi_detectedoccupant.proto +++ b/osi_detectedoccupant.proto @@ -20,7 +20,7 @@ message DetectedOccupant // The ID of the original vehicle occupant in the ground truth. // - optional Identifier ground_truth_occupant_id = 4; + optional Identifier ground_truth_id = 4; // The amount of time that this detected object has been currently // observed/tracked. @@ -33,7 +33,7 @@ message DetectedOccupant // optional MeasurementState measurement_state = 6; - // The detected vehicle occupant + // The detected vehicle occupant. // optional Occupant occupant = 3; From 47e34456767cf3e377a90a59f84bb977d08e11e2 Mon Sep 17 00:00:00 2001 From: Carsten Kuebler Date: Thu, 22 Mar 2018 18:12:28 +0100 Subject: [PATCH 10/29] Fix doxygen links. --- osi_detectedlandmark.proto | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/osi_detectedlandmark.proto b/osi_detectedlandmark.proto index 5d6708944..ab232dc15 100644 --- a/osi_detectedlandmark.proto +++ b/osi_detectedlandmark.proto @@ -61,8 +61,9 @@ message DetectedTrafficSign // A list of sensors which detected this detected entity. // - // If SensorData has detected entities and all detections are missing, then - // e.g. the number of sensors can confirm the #existence_probability. + // If \c SensorData has detected entities and all detections are missing, + // then e.g. the number of sensors can confirm the + // \c #existence_probability. // // \note This information can be determined via the detected entities' // detections ( \c ...Detection::object_id = 'this detected entity' ) and @@ -227,7 +228,7 @@ message DetectedTrafficLight // The root mean squared error of the base parameters of the detected // traffic light's geometry. \c TrafficLight::base has to be identical for - // all \c #candidate_traffic_light traffic lights. + // all \c #candidate_traffic_lights traffic lights. // optional BaseStationary base_rmse = 5; @@ -253,8 +254,9 @@ message DetectedTrafficLight // A list of sensors which detected this detected entity. // - // If SensorData has detected entities and all detections are missing, then - // e.g. the number of sensors can confirm the #existence_probability. + // If \c SensorData has detected entities and all detections are missing, + // then e.g. the number of sensors can confirm the + // \c #existence_probability. // // \note This information can be determined via the detected entities' // detections ( \c ...Detection::object_id = 'this detected entity' ) and From b0afb29bc414be668c09effcc8c6c526b9284290 Mon Sep 17 00:00:00 2001 From: Carsten Kuebler Date: Thu, 22 Mar 2018 18:35:38 +0100 Subject: [PATCH 11/29] Regularized the Doxygen comments. --- osi_common.proto | 2 +- osi_datarecording.proto | 6 +++--- osi_landmark.proto | 11 +++++++---- osi_object.proto | 4 ++-- osi_sensordata.proto | 10 +++++----- osi_sensorinputconfiguration.proto | 2 +- osi_sensorview.proto | 12 ++++++------ 7 files changed, 25 insertions(+), 22 deletions(-) diff --git a/osi_common.proto b/osi_common.proto index 1911137ec..236410b6a 100644 --- a/osi_common.proto +++ b/osi_common.proto @@ -136,7 +136,7 @@ message Dimension3d // // Rotation_yaw_pitch_roll = Rotation_roll*Rotation_pitch*Rotation_yaw // -// vector_global_coord_system := Inverse_Rotation_yaw_pitch_roll(Orientation3d)*(vector_local_coord_system) + local_origin.position +// vector_global_coord_system := Inverse_Rotation_yaw_pitch_roll(Orientation3d)*(vector_local_coord_system) + local_origin.position // // \attention This definition changed in OSI version 3.0.0. Previous OSI diff --git a/osi_datarecording.proto b/osi_datarecording.proto index 84ba9476d..aa4dfe2c6 100644 --- a/osi_datarecording.proto +++ b/osi_datarecording.proto @@ -7,7 +7,7 @@ import "osi_sensordata.proto"; package osi; // -// \brief (Time) Series of SensorData messages that may be used for data +// \brief (Time) Series of \c SensorData messages that may be used for data // recording or internal buffering by some sensor models. // message SensorDataSeries @@ -18,7 +18,7 @@ message SensorDataSeries } // -// \brief List of SensorData interface copies, one for each sensor in the +// \brief List of \c SensorData interface copies, one for each sensor in the // vehicle. // // Can be used to bundle output of multiple sensors in one transmission. @@ -32,7 +32,7 @@ message SensorDataList // // \brief List of sensors where each element contains a time series of -// SensorData messages. +// \c SensorData messages. // message SensorDataSeriesList { diff --git a/osi_landmark.proto b/osi_landmark.proto index d5425848d..04a857b11 100644 --- a/osi_landmark.proto +++ b/osi_landmark.proto @@ -1260,21 +1260,24 @@ message TrafficLight // ICON_COUNTDOWN_PERCENT = 21; - // This traffic light is valid for trams. + // This traffic light is valid for + // trams. // // \note There is no detailed traffic light specification for trams and // buses at the moment. // ICON_TRAM = 22; - // This traffic light is valid for buses. + // This traffic light is valid for + // buses. // // \note There is no detailed traffic light specification for trams and // buses at the moment. // ICON_BUS = 23; - // This traffic light is valid for buses and trams. + // This traffic light is valid for + // buses and trams. // // \note There is no detailed traffic light specification for trams and // buses at the moment. @@ -1316,7 +1319,7 @@ message TrafficLight // \brief A road surface marking. // // Lane markings are excluded and defined as \c LaneBoundary messages -// as part of the \c Lanes . +// as part of \c Lane. // // All coordinates and orientations are relative to the global ground truth // coordinate system. diff --git a/osi_object.proto b/osi_object.proto index 340f45468..affd11b25 100644 --- a/osi_object.proto +++ b/osi_object.proto @@ -238,7 +238,7 @@ message Vehicle // \brief A simulated object that is neither a moving object (vehicle) nor a // stationary object (traffic sign, traffic light, \c StationaryObject). // -// MovingObject excludes vehicles +// \c MovingObject excludes vehicles. // message MovingObject { @@ -280,7 +280,7 @@ message MovingObject // \c MovingObject e.g. pedestrian or animal) nor a stationary object // (traffic sign, traffic light). // -// StationaryObject excludes traffic lights and traffic signs +// \c StationaryObject excludes traffic lights and traffic signs // message StationaryObject { diff --git a/osi_sensordata.proto b/osi_sensordata.proto index 607d7422d..b8b393fe4 100644 --- a/osi_sensordata.proto +++ b/osi_sensordata.proto @@ -28,8 +28,8 @@ message SensorData { // The ID of the sensor at host vehicle's mounting_position. // - // This ID can equal \c DetectionHeader::sensor_id, if \c SensorData holds - // only data from one sensor/sensor model. + // This ID can equal \c SensorDetectionHeader::sensor_id, if \c SensorData + // holds only data from one sensor/sensor model. // optional Identifier sensor_id = 1; @@ -46,17 +46,17 @@ message SensorData // applied on top of this, if needed. // // The time that the actual measurement was performed (which will usually - // correspond with the timestamp of the GroundTruth the sensor model + // correspond with the timestamp of the \c GroundTruth the sensor model // processed to arrive at these results) can be found in the additional // field \c SensorData::last_measurement_time. // // For an ideal zero latency sensor the two timestamps would be the same - // and would correspond with the timestamp from the current GroundTruth + // and would correspond with the timestamp from the current \c GroundTruth // message. // // For a sensor model that does not know its own internal latencies (e.g. // a dumb sensor with no internal time concept), the two timestamps might - // also be identical, but delayed from the GroundTruth timestamp. + // also be identical, but delayed from the \c GroundTruth timestamp. // optional Timestamp timestamp = 2; diff --git a/osi_sensorinputconfiguration.proto b/osi_sensorinputconfiguration.proto index bc3b0615d..1a0af5f35 100644 --- a/osi_sensorinputconfiguration.proto +++ b/osi_sensorinputconfiguration.proto @@ -52,7 +52,7 @@ package osi; // // In order to optimize the workload and bandwidth needed for sensor // simulation, OSI packaging mechanisms can specify the ability to -// exchange SensorInputConfiguration messages not only prior to +// exchange \c SensorInputConfiguration messages not only prior to // simulation startup, but also dynamically during simulation runs, // thereby allowing dynamic input configuration switching to only // request data that is needed in the current sensor mode. However diff --git a/osi_sensorview.proto b/osi_sensorview.proto index d17e22759..8d036be71 100644 --- a/osi_sensorview.proto +++ b/osi_sensorview.proto @@ -31,19 +31,19 @@ message SensorView // optional Timestamp timestamp = 2; - // Radar-Specific SensorView. + // Radar-Specific \c SensorView. // optional RadarSensorView radar_sensor_view = 1000; - // Lidar-Specific SensorView. + // Lidar-Specific \c SensorView. // optional LidarSensorView lidar_sensor_view = 1001; - // Camera-Specific SensorView. + // Camera-Specific \c SensorView. // optional CameraSensorView camera_sensor_view = 1002; - // Ultrasonic-Specific SensorView. + // Ultrasonic-Specific \c SensorView. // optional UltrasonicSensorView ultrasonic_sensor_view = 1003; } @@ -126,11 +126,11 @@ message RadarSensorView // message LidarSensorView { - // Lidar Input Configuration valid at the time the data was created + // Lidar Input Configuration valid at the time the data was created. // optional LidarSensorInputConfiguration lidar_sensor_input_configuration = 1; - // Ray Tracing Data + // Ray Tracing Data. // // This field includes one entry for each ray, in left-to-right, // top-to-bottom order (think scan lines in a TV). From ca262984e7a593cd2293862ad9e72b270c9bac31 Mon Sep 17 00:00:00 2001 From: Carsten Kuebler Date: Fri, 23 Mar 2018 15:58:05 +0100 Subject: [PATCH 12/29] Removed typo. --- osi_landmark.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osi_landmark.proto b/osi_landmark.proto index 65a60a644..0808792a0 100644 --- a/osi_landmark.proto +++ b/osi_landmark.proto @@ -1483,7 +1483,7 @@ message RoadMarking // message Landmark { - // The ID of the road marking. + // The ID of the landmark. // optional Identifier id = 1; From e6b0e76d094a0ea4d61e360ba0b69d1e7911b471 Mon Sep 17 00:00:00 2001 From: Carsten Kuebler Date: Fri, 23 Mar 2018 16:38:28 +0100 Subject: [PATCH 13/29] Correct Documentation for BaseStationary and BaseMoving messages. --- osi_common.proto | 12 ++++++++---- osi_detectedobject.proto | 4 ++-- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/osi_common.proto b/osi_common.proto index 236410b6a..8a0071cde 100644 --- a/osi_common.proto +++ b/osi_common.proto @@ -247,8 +247,10 @@ message Spherical3d // This includes the \c StationaryObject , \c TrafficSign , // \c TrafficLight , \c RoadMarking messages. // -// All coordinates and orientations are relative to the global ground truth -// coordinate system. +// All coordinates and orientations from ground truth objects are relative to +// the global ground truth frame. All coordinates and orientations +// from detected objects are relative to the host vehicle frame (see: \c Vehicle +// vehicle reference point). // message BaseStationary { @@ -299,8 +301,10 @@ message BaseStationary // // This includes the \c MovingObject messages. // -// All coordinates and orientations are relative to the global ground truth -// coordinate system. +// All coordinates and orientations from ground truth objects are relative to +// the global ground truth frame. All coordinates and orientations +// from detected objects are relative to the host vehicle frame (see: \c Vehicle +// vehicle reference point). // message BaseMoving { diff --git a/osi_detectedobject.proto b/osi_detectedobject.proto index bb49dafc6..dec12fe54 100644 --- a/osi_detectedobject.proto +++ b/osi_detectedobject.proto @@ -110,7 +110,7 @@ message DetectedObject // optional ClassProbability class_probability = 16; - // Pedestrian head pose for behaviour prediction. Describes the head + // Pedestrian head pose for behavior prediction. Describes the head // orientation w.r.t. the host vehicle orientation. // The x-axis of the right-handed head frame is pointing along the // pedestrian's straight ahead viewing direction and the z-axis is pointing @@ -123,7 +123,7 @@ message DetectedObject // optional Orientation3d head_pose = 17; - // Pedestrian upper body pose for behaviour prediction. Describes the + // Pedestrian upper body pose for behavior prediction. Describes the // upper body orientation w.r.t. the host vehicle orientation. // The x-axis of the right-handed upper body frame is pointing along the // pedestrian's upper body ventral direction [2] (i.e. usually pedestrian's From 1335a831070ca0677c0e02861ad84ab1a207a3f9 Mon Sep 17 00:00:00 2001 From: carsten-kuebler <32508295+carsten-kuebler@users.noreply.github.com> Date: Mon, 26 Mar 2018 12:58:29 +0200 Subject: [PATCH 14/29] Naming conventions --- osi_detectedlandmark.proto | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/osi_detectedlandmark.proto b/osi_detectedlandmark.proto index bef727b11..c9b5a2f65 100644 --- a/osi_detectedlandmark.proto +++ b/osi_detectedlandmark.proto @@ -31,7 +31,7 @@ message DetectedTrafficSign // A list of candidates for (a) possible supplementary sign(s) as estimated // by the sensor. // - repeated CandidateSupplementarySigns candidate_multiple_supplementary_signs = 5; + repeated CandidateSupplementarySignList candidate_supplementary_sign_lists = 5; // The detected geometry of the traffic sign. // @@ -168,12 +168,12 @@ message CandidateSign // \brief Candidates for all detected supplementary signs of one traffic sign // as estimated by the sensor. // -message CandidateSupplementarySigns +message CandidateSupplementarySignList { // The definition of one of more supplementary signs that together define // this candidate. // - repeated CandidateSupplementarySign candidate_signs = 1; + repeated CandidateSupplementarySign candidate_supplementary_signs = 1; // The root mean squared error of the base parameters of the detected // supplementary traffic sign. \c #candidate_signs From 1e0ba3455528322c6af9271f82a15a4be42f5a44 Mon Sep 17 00:00:00 2001 From: carsten-kuebler <32508295+carsten-kuebler@users.noreply.github.com> Date: Mon, 26 Mar 2018 13:01:06 +0200 Subject: [PATCH 15/29] Duplicated MeasurementState removed --- osi_detectedlandmark.proto | 4 ---- 1 file changed, 4 deletions(-) diff --git a/osi_detectedlandmark.proto b/osi_detectedlandmark.proto index c9b5a2f65..2b11d6551 100644 --- a/osi_detectedlandmark.proto +++ b/osi_detectedlandmark.proto @@ -45,10 +45,6 @@ message DetectedTrafficSign // optional double existence_probability = 7; - // The measurement state. - // - optional MeasurementState measurement_state = 8; - // The root mean squared error of the base parameters of the detected // traffic sign. \c TrafficSign::base has to be identical for // all \c #candidate_signs traffic signs. From 74dd76d7b4895424629c8f3782b3ab5332414694 Mon Sep 17 00:00:00 2001 From: carsten-kuebler <32508295+carsten-kuebler@users.noreply.github.com> Date: Mon, 26 Mar 2018 18:21:41 +0200 Subject: [PATCH 16/29] Review Introduce new message MainSign. Messages for TrafficSign and DetectedXXX messages nested. Rename _id_list -> _ids. Rename fields and messages in FeatureData.proto. Restructure DetectedOccupant similar to DetectedLandmark.proto messages. --- osi_detectedlandmark.proto | 550 ++++++----- osi_detectedlane.proto | 8 +- osi_detectedoccupant.proto | 68 +- osi_featuredata.proto | 20 +- osi_landmark.proto | 1816 ++++++++++++++++++------------------ osi_lane.proto | 18 +- 6 files changed, 1290 insertions(+), 1190 deletions(-) diff --git a/osi_detectedlandmark.proto b/osi_detectedlandmark.proto index 2b11d6551..7c8c9edd0 100644 --- a/osi_detectedlandmark.proto +++ b/osi_detectedlandmark.proto @@ -24,33 +24,22 @@ message DetectedTrafficSign // optional Identifier ground_truth_id = 3; - // A list of candidates for this traffic sign as estimated by the sensor. - // - repeated CandidateSign candidate_signs = 4; - - // A list of candidates for (a) possible supplementary sign(s) as estimated - // by the sensor. + // The main sign as estimated by the sensor. // - repeated CandidateSupplementarySignList candidate_supplementary_sign_lists = 5; - - // The detected geometry of the traffic sign. - // - optional Geometry geometry = 6; + optional EssentialMainSign main_sign = 4; + + // A list of additional supplementary sign(s) as estimated by the sensor. + // + repeated EssentialSupplementarySign supplementary_signs = 5; - // The estimated probability that this traffic sign really exists, not based - // on history. + // The estimated probability that this traffic sign with all supplementary + // signs really exists, not based on history. // // \note Use as confidence measure where a low value means less confidence // and a high value indicates strong confidence. // optional double existence_probability = 7; - // The root mean squared error of the base parameters of the detected - // traffic sign. \c TrafficSign::base has to be identical for - // all \c #candidate_signs traffic signs. - // - optional BaseStationary base_rmse = 9; - // Links to the corresponding lanes. // repeated RelevantLane relevant_lanes = 10; @@ -65,149 +54,179 @@ message DetectedTrafficSign // detections ( \c ...Detection::object_id = 'this detected entity' ) and // the sensors (their IDs) to which these detections belong. // - repeated Identifier sensor_id_list = 11; + repeated Identifier sensor_ids = 11; - // Definition of traffic sign geometries. // - enum Geometry + // \brief Candidates for a detected sign as estimated by the sensor. + // + message EssentialMainSign { - // Geometry of the traffic sign is unknown (must not be used in ground - // truth). - // - GEOMETRY_UNKNOWN = 0; - - // Geometry of the traffic sign is unspecified (but known). + // A list of candidates for this traffic sign as estimated by the + // sensor. // - GEOMETRY_OTHER = 1; - - // Traffic sign has a triangular geometry pointing to the top. - // - GEOMETRY_TRIANGLE_TOP = 2; - - //Traffic sign has a triangular geometry pointing down. - // - GEOMETRY_TRIANGLE_DOWN = 3; - - // Traffic sign has a circular geometry. - // - GEOMETRY_CIRCLE = 4; - - // Traffic sign has a square geometry. - // - GEOMETRY_SQUARE = 5; - - // Traffic sign has a diamond geometry. - // - GEOMETRY_DIAMOND = 6; - - // Traffic sign has an octagon geometry. - // - GEOMETRY_OCTAGON = 7; - - // Traffic sign has a geometry of an arrow pointing to the left. - // - GEOMETRY_ARROW_LEFT = 8; - - // Traffic sign has a geometry of an arrow pointing to the right. - // - GEOMETRY_ARROW_RIGHT = 9; - - // Traffic sign has a rectangle geometry. (width is bigger than height) - // E.g. one-way + repeated CandidateSign candidates = 1; + + // The root mean squared error of the base parameters of the detected + // traffic sign. \c TrafficSign::base has to be identical for + // all \c #candidates traffic signs. // - GEOMETRY_RECTANGLE = 10; - - // Traffic sign that has a pole geometry. (height is bigger than width) - // E.g. pole indicating highways exit in xx m. + optional BaseStationary base_rmse = 2; + + // The detected geometry of the traffic sign. + // + optional Geometry geometry = 3; + // - GEOMETRY_POLE = 11; - - // Traffic sign that has an oversize rectangle geometry. - // E.g. direction plates on highway or city signs. + // \brief A candidate for a detected traffic sign as estimated by the + // sensor. // - GEOMETRY_PLATE = 12; - } -} + message CandidateSign + { + // The definition of the candidate's properties. + // The sign.id values of all CandidateSigns within one + // \c DetectedTrafficSign correspond to the tracking ID and must be + // identical. + // + optional TrafficSign.MainSign sign = 1; -// -// \brief A candidate for a detected traffic sign as estimated by the sensor. -// -message CandidateSign -{ - // The definition of the candidate's properties. - // The sign.id values of all CandidateSigns within one - // \c DetectedTrafficSign correspond to the tracking ID and must be - // identical. - // - optional TrafficSign sign = 1; + // The estimated probability that this candidate is the true value. + // The sum of all \c #candidate_probability must be one. + // + // Range: [0,1] + // + optional double candidate_probability = 2; - // The estimated probability that this candidate is the true value. - // The sum of all \c #candidate_probability must be one. - // - // Range: [0,1] - // - optional double candidate_probability = 2; + // The amount of time that this detected object has been currently + // observed/tracked. + // + // Unit: [s] + // + optional double age = 3; - // The amount of time that this detected object has been currently - // observed/tracked. - // - // Unit: [s] - // - optional double age = 3; + // The measurement state. + // + optional MeasurementState measurement_state = 4; + } - // The measurement state. - // - optional MeasurementState measurement_state = 4; -} + // 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 of the traffic sign is unspecified (but known). + // + GEOMETRY_OTHER = 1; + + // Traffic sign has a triangular geometry pointing to the top. + // + GEOMETRY_TRIANGLE_TOP = 2; + + //Traffic sign has a triangular geometry pointing down. + // + GEOMETRY_TRIANGLE_DOWN = 3; + + // Traffic sign has a circular geometry. + // + GEOMETRY_CIRCLE = 4; + + // Traffic sign has a square geometry. + // + GEOMETRY_SQUARE = 5; + + // Traffic sign has a diamond geometry. + // + GEOMETRY_DIAMOND = 6; + + // Traffic sign has an octagon geometry. + // + GEOMETRY_OCTAGON = 7; + + // Traffic sign has a geometry of an arrow pointing to the left. + // + GEOMETRY_ARROW_LEFT = 8; + + // Traffic sign has a geometry of an arrow pointing to the right. + // + GEOMETRY_ARROW_RIGHT = 9; + + // Traffic sign has a rectangle geometry. (width is bigger than + // height e.g. one-way) + // + GEOMETRY_RECTANGLE = 10; + + // Traffic sign that has a pole geometry. (height is bigger than + // width e.g. pole indicating highways exit in xx [m]). + // + GEOMETRY_POLE = 11; + + // Traffic sign that has an oversize rectangle geometry. + // E.g. direction plates on highway or city signs. + // + GEOMETRY_PLATE = 12; + } + } -// -// \brief Candidates for all detected supplementary signs of one traffic sign -// as estimated by the sensor. -// -message CandidateSupplementarySignList -{ - // The definition of one of more supplementary signs that together define - // this candidate. // - repeated CandidateSupplementarySign candidate_supplementary_signs = 1; - - // The root mean squared error of the base parameters of the detected - // supplementary traffic sign. \c #candidate_signs - // \c SupplementarySign::base has to be identical for all - // \c #candidate_sign supplementary traffic signs. + // \brief Candidates for all detected supplementary signs of one traffic + // sign as estimated by the sensor. // - optional BaseStationary base_rmse = 9; -} + message EssentialSupplementarySign + { + // The definition of one of more supplementary signs that together + // define this candidate. + // + repeated CandidateSupplementarySign candidates = 1; -// -// \brief A candidate for a detected supplementary sign as estimated by the -// sensor. -// -message CandidateSupplementarySign -{ - // The definition of one of more supplementary signs that together define - // this candidate. - // - optional SupplementarySign sign = 1; + // The root mean squared error of the base parameters of the detected + // supplementary traffic sign. \c #candidates + // \c SupplementarySign::base has to be identical for all + // \c #candidates supplementary traffic signs. + // + optional BaseStationary base_rmse = 2; - // The estimated probability that this candidate is the true value. - // The sum of all \c #candidate_probability of one supplementary sign must - // be one. - // - // Range: [0,1] - // - optional double candidate_probability = 2; + // The estimated probability that this supplementary sign really + // exists, not based on history. + // + // \note Use as confidence measure where a low value means less + // confidence and a high value indicates strong confidence. + // + optional double existence_probability = 3; - // The amount of time that this detected object has been currently - // observed/tracked. - // - // Unit: [s] - // - optional double age = 3; + // + // \brief A candidate for a detected supplementary sign as estimated by + // the sensor. + // + message CandidateSupplementarySign + { + // The definition of one of more supplementary signs that together + // define this candidate. + // + optional TrafficSign.SupplementarySign sign = 1; - // The measurement state. - // - optional MeasurementState measurement_state = 4; + // The estimated probability that this candidate is the true value. + // The sum of all \c #candidate_probability of one supplementary + // sign must be one. + // + // Range: [0,1] + // + optional double candidate_probability = 2; + + // The amount of time that this detected object has been currently + // observed/tracked. + // + // Unit: [s] + // + optional double age = 3; + + // The measurement state. + // + optional MeasurementState measurement_state = 4; + } + } } // @@ -226,15 +245,9 @@ message DetectedTrafficLight // optional Identifier ground_truth_id = 3; - // A list of candidates for this traffic light as estimated by the sensor. + // The main sign as estimated by the sensor. // - repeated CandidateTrafficLight candidate_traffic_lights = 4; - - // The root mean squared error of the base parameters of the detected - // traffic light's geometry. \c TrafficLight::base has to be identical for - // all \c #candidate_traffic_lights traffic lights. - // - optional BaseStationary base_rmse = 5; + optional EssentialTrafficLight traffic_light = 4; // Determines for which directions the traffic light applies. // @@ -262,7 +275,53 @@ message DetectedTrafficLight // detections ( \c ...Detection::object_id = 'this detected entity' ) and // the sensors (their IDs) to which these detections belong. // - repeated Identifier sensor_id_list = 10; + repeated Identifier sensor_ids = 10; + + // + // \brief Candidates for a detected traffic light as estimated by the + // sensor. + // + message EssentialTrafficLight + { + // A list of candidates for this traffic light as estimated by the + // sensor. + // + repeated CandidateTrafficLight candidates = 1; + + // The root mean squared error of the base parameters of the detected + // traffic light's geometry. \c TrafficLight::base has to be identical + // for all \c #candidates traffic lights. + // + optional BaseStationary base_rmse = 2; + + // + // \brief A candidate for a detected traffic light as estimated by + // the sensor. + // + message CandidateTrafficLight + { + // The definition of one traffic light that define this candidate. + // + optional TrafficLight traffic_light = 1; + + // The estimated probability that this candidate is the true value. + // The sum of all \c #candidate_probability must be one. + // + // Range: [0,1] + // + optional double candidate_probability = 2; + + // The amount of time that this detected object has been currently + // observed/tracked. + // + // Unit: [s] + optional double age = 3; + + // The measurement state. + // + optional MeasurementState measurement_state = 4; + } + } // // \brief Further specifies the relevant directions of the traffic light. @@ -306,34 +365,6 @@ message DetectedTrafficLight } } -// -// \brief A candidate for (a) detected traffic light(s) as estimated by the -// sensor. -// -message CandidateTrafficLight -{ - // The definition of one traffic light that define this candidate. - // - optional TrafficLight traffic_light = 1; - - // The estimated probability that this candidate is the true value. - // The sum of all \c #candidate_probability must be one. - // - // Range: [0,1] - // - optional double candidate_probability = 2; - - // The amount of time that this detected object has been currently - // observed/tracked. - // - // Unit: [s] - optional double age = 3; - - // The measurement state. - // - optional MeasurementState measurement_state = 4; -} - // // \brief Further specifies the relevant lane of a detected object. // @@ -365,9 +396,9 @@ message DetectedRoadMarking // optional Identifier ground_truth_id = 3; - // A list of candidates for this road marking as estimated by the sensor. + // The road marking as estimated by the sensor. // - repeated CandidateRoadMarking candidate_road_markings = 4; + optional EssentialRoadMarking road_marking = 4; // The estimated probability that this road marking really exists, not based // on history. @@ -380,12 +411,6 @@ message DetectedRoadMarking // Links to the corresponding lanes. // repeated RelevantLane relevant_lanes = 6; - - // The root mean squared error of the base parameters of the detected road - // marking. \c RoadMarking::base has to be identical for - // all \c #candidate_road_markings road markings. - // - optional BaseStationary base_rmse = 8; // A list of sensors which detected this detected entity. // @@ -397,35 +422,53 @@ message DetectedRoadMarking // detections ( \c ...Detection::object_id = 'this detected entity' ) and // the sensors (their IDs) to which these detections belong. // - repeated Identifier sensor_id_list = 11; -} + repeated Identifier sensor_ids = 11; -// -// \brief A candidate for a detected road marking as estimated by the sensor. -// -message CandidateRoadMarking -{ - // The description of the road marking. // - optional RoadMarking road_marking = 1; - - // The estimated probability that this candidate is the true value. - // The sum of all \c #candidate_probability must be one. + // \brief Candidates for a detected traffic light as estimated by the + // sensor. // - // Range: [0,1] - // - optional double candidate_probability = 2; + message EssentialRoadMarking + { + // A list of candidates for this road marking as estimated by the + // sensor. + // + repeated CandidateRoadMarking candidates = 1; + + // The root mean squared error of the base parameters of the detected + // road marking. \c RoadMarking::base has to be identical for + // all \c #candidates road markings. + // + optional BaseStationary base_rmse = 2; + + // + // \brief A candidate for a detected road marking as estimated by the sensor. + // + message CandidateRoadMarking + { + // The description of the road marking. + // + optional RoadMarking road_marking = 1; - // The amount of time that this detected object has been currently - // observed/tracked. - // - // Unit: [s] - // - optional double age = 3; + // The estimated probability that this candidate is the true value. + // The sum of all \c #candidate_probability must be one. + // + // Range: [0,1] + // + optional double candidate_probability = 2; - // The measurement state. - // - optional MeasurementState measurement_state = 4; + // The amount of time that this detected object has been currently + // observed/tracked. + // + // Unit: [s] + // + optional double age = 3; + + // The measurement state. + // + optional MeasurementState measurement_state = 4; + } + } } // @@ -434,7 +477,7 @@ message CandidateRoadMarking message DetectedLandmark { // Specific ID of the landmark as assigned by the sensor internally. - // Need not match with \c #ground_truth_id_list. + // Need not match with \c #ground_truth_ids. // optional Identifier tracking_id = 1; @@ -442,11 +485,11 @@ message DetectedLandmark // In case of a ghost detection (no corresponding ground truth), this field // should be unset. // - repeated Identifier ground_truth_id_list = 2; + repeated Identifier ground_truth_ids = 2; - // A list of candidates for this landmark as estimated by the sensor. + // The landmark as estimated by the sensor. // - repeated CandidateLandmark candidate_landmarks = 3; + optional EssentialLandmark landmark = 3; // The estimated probability that this landmark really exists, not based // on history. @@ -455,13 +498,7 @@ message DetectedLandmark // and a high value indicates strong confidence. // optional double existence_probability = 4; - - // The root mean squared error of the base parameters of the detected - // landmark. \c RoadMarking::base has to be identical for - // all \c #candidate_landmarks landmarks. - // - optional BaseStationary base_rmse = 5; - + // A list of sensors which detected this detected entity. // // If \c SensorData has detected entities and all detections are missing, @@ -471,33 +508,50 @@ message DetectedLandmark // detections ( \c ...Detection::object_id = 'this detected entity' ) and // the sensors (their IDs) to which these detections belong. // - repeated Identifier sensor_id_list = 6; -} - -// -// \brief A candidate for a detected landmark as estimated by the sensor. -// -message CandidateLandmark -{ - // The description of the landmark. - // - optional Landmark landmark = 1; + repeated Identifier sensor_ids = 6; - // The estimated probability that this candidate is the true value. - // The sum of all \c #candidate_probability must be one. // - // Range: [0,1] + // \brief Candidates for a detected Landmark as estimated by the + // sensor. // - optional double candidate_probability = 2; + message EssentialLandmark + { + // A list of candidates for this landmark as estimated by the sensor. + // + repeated CandidateLandmark candidates = 1; + + // The root mean squared error of the base parameters of the detected + // landmark. \c Landmark::base has to be identical for + // all \c #candidates landmark. + // + optional BaseStationary base_rmse = 2; + + // + // \brief A candidate for a detected landmark as estimated by the sensor. + // + message CandidateLandmark + { + // The description of the landmark. + // + optional Landmark landmark = 1; - // The amount of time that this detected object has been currently - // observed/tracked. - // - // Unit: [s] - // - optional double age = 3; + // The estimated probability that this candidate is the true value. + // The sum of all \c #candidate_probability must be one. + // + // Range: [0,1] + // + optional double candidate_probability = 2; - // The measurement state. - // - optional MeasurementState measurement_state = 4; + // The amount of time that this detected object has been currently + // observed/tracked. + // + // Unit: [s] + // + optional double age = 3; + + // The measurement state. + // + optional MeasurementState measurement_state = 4; + } + } } diff --git a/osi_detectedlane.proto b/osi_detectedlane.proto index f08ba5dbb..1f2b66bbc 100644 --- a/osi_detectedlane.proto +++ b/osi_detectedlane.proto @@ -14,7 +14,7 @@ package osi; message DetectedLane { // Specific ID of the detected lane as assigned by the sensor internally. - // Need not match with \c #ground_truth_id_list IDs. + // Need not match with \c #ground_truth_ids IDs. // optional Identifier tracking_id = 2; @@ -23,7 +23,7 @@ message DetectedLane // ground truth (as lane segment definitions may vary between sensor and // ground truth). // - repeated Identifier ground_truth_id_list = 3; + repeated Identifier ground_truth_ids = 3; // The amount of time that this detected object has been currently // observed/tracked. @@ -58,7 +58,7 @@ message DetectedLane // detections ( \c ...Detection::object_id = 'this detected entity' ) and // the sensors (their IDs) to which these detections belong. // - repeated Identifier sensor_id_list = 6; + repeated Identifier sensor_ids = 6; } // @@ -134,5 +134,5 @@ message DetectedLaneBoundary // detections ( \c ...Detection::object_id = 'this detected entity' ) and // the sensors (their IDs) to which these detections belong. // - repeated Identifier sensor_id_list = 11; + repeated Identifier sensor_ids = 11; } diff --git a/osi_detectedoccupant.proto b/osi_detectedoccupant.proto index f24c87904..bba97a9da 100644 --- a/osi_detectedoccupant.proto +++ b/osi_detectedoccupant.proto @@ -22,28 +22,17 @@ message DetectedOccupant // optional Identifier ground_truth_id = 4; - // The amount of time that this detected object has been currently - // observed/tracked. - // - // Unit: [s] - // - optional double age = 1000; - - // The measurement state. + // The occupant as estimated by the sensor. // - optional MeasurementState measurement_state = 6; + optional EssentialOccupant occupant = 5; - // The detected vehicle occupant. - // - optional Occupant occupant = 3; - - // The estimated probability that this occupant really exists, not based on - // history. + // The estimated probability that this occupant really exists, not + // based on history. // // \note Use as confidence measure where a low value means less confidence // and a high value indicates strong confidence. // - optional double existence_probability = 5; + optional double existence_probability = 6; // A list of sensors which detected this detected entity. // @@ -54,5 +43,50 @@ message DetectedOccupant // detections ( \c ...Detection::object_id = 'this detected entity' ) and // the sensors (their IDs) to which these detections belong. // - repeated Identifier sensor_id_list = 7; + repeated Identifier sensor_ids = 7; + + // + // \brief Candidates for a detected occupant as estimated by the sensor. + // + message EssentialOccupant + { + // A list of candidates for this occupant as estimated by the + // sensor. + // + repeated CandidateOccupant candidates = 4; + + // The root mean squared error of the base parameters of the detected + // occupant's geometry. \c Occupant::base has to be identical + // for all \c #candidates occupants. + // + optional BaseStationary base_rmse = 5; + + // + // \brief A candidate for a detected occupant as estimated by + // the sensor. + // + message CandidateOccupant + { + // The detected vehicle occupant. + // + optional Occupant occupant = 1; + + // The estimated probability that this candidate is the true value. + // The sum of all \c #candidate_probability must be one. + // + // Range: [0,1] + // + optional double candidate_probability = 2; + + // The amount of time that this detected object has been currently + // observed/tracked. + // + // Unit: [s] + optional double age = 3; + + // The measurement state. + // + optional MeasurementState measurement_state = 4; + } + } } diff --git a/osi_featuredata.proto b/osi_featuredata.proto index 61e38802a..5a3a40230 100644 --- a/osi_featuredata.proto +++ b/osi_featuredata.proto @@ -18,13 +18,13 @@ package osi; // message FeatureData { - // Lidar detection list for multiple lidar sensors. + // Lidar detections for multiple lidar sensors (sensor fusion). // - repeated LidarDetectionList multiple_lidar_detections = 1; + repeated LidarDetectionData lidar_sensors = 1; - // Radar detection list for multiple radar sensors. + // Radar detections for multiple radar sensors (sensor fusion). // - repeated RadarDetectionList multiple_radar_detections = 2; + repeated RadarDetectionData radar_sensors = 2; } // @@ -33,7 +33,7 @@ message FeatureData message SensorDetectionHeader { // Version number of used detection list messages (\c SensorDetectionHeader, - // \c LidarDetection, \c LidarDetectionList etc.). + // \c LidarDetection, \c LidarDetectionData etc.). // optional DetectionInterfaceVersion version = 1; @@ -142,7 +142,7 @@ message SensorDetectionHeader // // \brief Version of detection messages ( \c SensorDetectionHeader, - // \c LidarDetection, \c LidarDetectionList etc.). + // \c LidarDetection, \c LidarDetectionData etc.). // message DetectionInterfaceVersion { @@ -161,9 +161,9 @@ message SensorDetectionHeader } // -// \brief A list of lidar detection from one sensor. +// \brief Data from one lidar sensor including a list of detections. // -message LidarDetectionList +message LidarDetectionData { // Header attributes of lidar detection from one lidar sensor. // @@ -235,9 +235,9 @@ message LidarDetection } // -// \brief A list of radar detections from one sensor. +// \brief Data from one radar sensor including a list of detections. // -message RadarDetectionList +message RadarDetectionData { // Header attributes of radar detection from one radar sensor. // diff --git a/osi_landmark.proto b/osi_landmark.proto index 0808792a0..ac1dc6233 100644 --- a/osi_landmark.proto +++ b/osi_landmark.proto @@ -18,61 +18,13 @@ message TrafficSign // optional Identifier id = 1; - // The base parameters of the traffic sign. - // - // The orientation of the bounding box \c #base - // ( \c BaseStationary::orientation ) is defined as follows: - // The z-axis of the given \c BaseStationary::orientation is the vector - // from the bottom to the top of the traffic sign's 2D image plate. - // (Normally it is equal to the ground truth z-axis.) - // The x-axis of the given \c BaseStationary::orientation is view - // normal of the traffic sign's image. - // This x-axis points from the traffic sign's image in the direction from - // where a 'viewer' could see the traffic sign image. - // - optional BaseStationary base = 2; - - // The type of the traffic sign. - // - optional Type type = 3; - - // Additional value associated with the traffic sign, e.g. value of the - // speed limit. - // - // \note Field need not be set if traffic sign type does not require it. - // Unit of field \c #value is defined by field \c #value_unit. - // - optional double value = 4; - - // Unit for additional value. - // - optional Unit value_unit = 5; - // Variability // optional Variability variability = 6; - - // Some traffic signs have an additional arrow symbol as an additional - // constraint for their scope (e.g. no parking to the right). - // The arrow direction is given relative to the sign's 2D image plane, i.e. - // as a viewer standing right in front of the sign and looking straight - // towards it would interpret the arrow. - // - // The definition for left and right is according to the following - // temporarily constructed right-handed local coordinate system: - // Set z-axis to match the z-axis of the ground truth coordinate system. - // Set x-axis to the view normal of the traffic sign's image - // (\c #base \c BaseStationary::orientation x-axis). - // Right: direction of the local coordinate system's positive y-axis. - // Left: opposite direction of the local coordinate system's y-axis i.e. - // negative y-axis', - // - // \note If a traffic sign image is on the ground (there is no definition - // for right or left). Normally, this is a road marking and not a traffic - // sign. Actual traffic signs lying on the ground might have been - // intentionally unmounted and, hence, not be in effect. + + // Main sign, e.g. speed limit 30 [km/h] // - optional DirectionScope direction_scope = 7; + optional MainSign main_sign = 7; // Additional supplementary signs, e.g. time limits, modifying the traffic // sign. @@ -84,654 +36,6 @@ message TrafficSign // repeated Identifier assigned_lanes = 9; - // Definition of traffic sign types. - // Numbers are given according to German StVO. - // - // For an overview see: - // \arg https://www.dvr.de/publikationen/downloads/verkehrszeichen.html (Images) - // \arg https://www.gesetze-im-internet.de/stvo_2013/anlage_1.html (Allgemeine und Besondere Gefahrenzeichen) - // \arg https://www.gesetze-im-internet.de/stvo_2013/anlage_2.html (Vorschriftzeichen) - // \arg https://www.gesetze-im-internet.de/stvo_2013/anlage_3.html (Richtzeichen) - // \arg https://www.gesetze-im-internet.de/stvo_2013/anlage_4.html (Verkehrseinrichtungen) - // \arg https://traffic-rules.com/ - // - 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) \c TrafficSign::value and - // \c TrafficSign::value_unit . - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/274-60.png - // - TYPE_SPEED_LIMIT_BEGIN = 2; - - // End of speed limit (StVO 278) \c TrafficSign::value and - // \c TrafficSign::value_unit . - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/278-60.png - // - TYPE_SPEED_LIMIT_END = 3; - - // Town entrance - // (StVO 310). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/310.png - // - TYPE_TOWN_BEGIN = 4; - - // Town exit - // (StVO 311). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/311.png - // - TYPE_TOWN_END = 5; - - // Start of zone with speed limit (StVO 274.1) \c TrafficSign::value and - // \c TrafficSign::value_unit . - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/274.1.png - // - TYPE_SPEED_LIMIT_ZONE_BEGIN = 6; - - // End of zone with speed limit (StVO 274.2) \c TrafficSign::value and - // \c TrafficSign::value_unit . - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/274.2.png - // - TYPE_SPEED_LIMIT_ZONE_END = 7; - - // Start of mandatory minimum speed (StVO 275) \c TrafficSign::value and - // \c TrafficSign::value_unit . - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/275.png - // - TYPE_MINIMUM_SPEED_BEGIN = 8; - - // End of mandatory minimum speed (StVO 279) \c TrafficSign::value and - // \c TrafficSign::value_unit . - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/279.png - // - TYPE_MINIMUM_SPEED_END = 9; - - // Start of area with calmed / reduced traffic - // (verkehrsberuhigter Bereich - StVO 325.1). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/325.1.png - // - TYPE_TRAFFIC_CALMED_DISTRICT_BEGIN = 10; - - // End of area with calmed / reduced traffic - // (verkehrsberuhigter Bereich - StVO 325.2). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/325.2.png - // - TYPE_TRAFFIC_CALMED_DISTRICT_END = 11; - - // Start of area without traffic to reduce harmful air pollution - // (StVO 270.1). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/270.1.png - // - TYPE_ENVIRONMENTAL_ZONE_BEGIN = 12; - - // End of area without traffic to reduce harmful air pollution - // (StVO 270.2). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/270.2.png - // - TYPE_ENVIRONMENTAL_ZONE_END = 13; - - // Start of overtaking ban - // (StVO 276). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/276.png - // - TYPE_OVERTAKING_BAN_BEGIN = 14; - - // End of overtaking ban - // (StVO 280). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/280.png - // - TYPE_OVERTAKING_BAN_END = 15; - - // Start of overtaking ban for trucks - // (StVO 277). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/277.png - // - TYPE_OVERTAKING_BAN_FOR_TRUCKS_BEGIN = 16; - - // End of overtaking ban for trucks - // (StVO 281). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/281.png - // - TYPE_OVERTAKING_BAN_FOR_TRUCKS_END = 17; - - // End of all speed and overtaking restrictions - // (StVO 282). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/282.png - // - TYPE_ALL_RESTRICTIONS_END = 18; - - // Begin of priority road with right of way - // (StVO 306). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/306.png - // - TYPE_RIGHT_OF_WAY_BEGIN = 19; - - // End of priority road with right of way - // (StVO 307). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/307.png - // - TYPE_RIGHT_OF_WAY_END = 20; - - // Right of way at the next intersection - // (StVO 301). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/301.png - // - TYPE_RIGHT_OF_WAY_NEXT_INTERSECTION = 21; - - // "Right before left" rule at the next intersection - // (StVO 102). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/102.png - // - TYPE_RIGHT_BEFORE_LEFT_NEXT_INTERSECTION = 22; - - // Begin of no parking zone - // (StVO 290.1). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/290.1.png - // - TYPE_NO_PARKING_ZONE_BEGIN = 23; - - // End of no parking zone - // (StVO 290.2). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/290.2.png - // - TYPE_NO_PARKING_ZONE_END = 24; - - // No parking sign - // (StVO 286). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/286.png - // - TYPE_NO_PARKING = 25; - - // No stopping sign - // (StVO 283). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/283.png - // - TYPE_NO_STOPPING = 26; - - // Begin of parking zone - // (StVO 314.1). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/314.1.png - // - TYPE_CAR_PARKING_ZONE_BEGIN = 27; - - // End of parking zone - // (StVO 314.2). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/314.2.png - // - TYPE_CAR_PARKING_ZONE_END = 28; - - // Parking space - // (StVO 314). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/314.png - // - TYPE_CAR_PARKING = 29; - - // Give way sign - // (StVO 205). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/205.png - // - TYPE_GIVE_WAY = 30; - - // Stop sign - // (StVO 206). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/206.png - // - TYPE_STOP = 31; - - // Danger sign - // (StVO 101). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/101.png - // - TYPE_DANGER_SPOT = 32; - - // Road works sign - // (StVO 123) - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/123.png - // - TYPE_ROAD_WORKS = 33; - - // Steep hill downwards (StVO 108) \c TrafficSign::value and - // \c TrafficSign::value_unit . - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/108-10.png - // - TYPE_HILL_DOWNWARDS = 34; - - // Steep hill upwards (StVO 110) \c TrafficSign::value and - // \c TrafficSign::value_unit . - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/110-12.png - // - TYPE_HILL_UPWARDS = 35; - - // Prescribed left turn - // (StVO 209.1). - // - // See e.g.: - // - TYPE_PRESCRIBED_LEFT_TURN = 36; - - // Prescribed right turn - // (StVO 209.2). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/209.png - // - TYPE_PRESCRIBED_RIGHT_TURN = 37; - - // Prescribed driving straight ahead - // (StVO 209.3). - // - // See e.g.: - // - TYPE_PRESCRIBED_STRAIGHT_AHEAD = 38; - - // Prescribed left way - // (StVO 211.1). - // - // See e.g.: - // - TYPE_PRESCRIBED_LEFT_WAY = 39; - - // Prescribed right way - // (StVO 211.2). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/211.png - // - TYPE_PRESCRIBED_RIGHT_WAY = 40; - - // Prescribed left turn and driving straight ahead - // (StVO 214.1). - // - // See e.g.: - // - TYPE_PRESCRIBED_LEFT_TURN_AND_STRAIGHT_AHEAD = 41; - - // Prescribed right turn and driving straight ahead - // (StVO 214.2). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/214.png - // - TYPE_PRESCRIBED_RIGHT_TURN_AND_STRAIGHT_AHEAD = 42; - - // Prescribed left and right turn - // (StVO 214.3). - // - // See e.g.: - // - TYPE_PRESCRIBED_LEFT_TURN_AND_RIGHT_TURN = 43; - - // Prescribed left turn, right turn and driving straight ahead (required - // for logical signs as road marking). - // - // See e.g.: - // - TYPE_PRESCRIBED_LEFT_TURN_RIGHT_TURN_AND_STRAIGHT_AHEAD = 44; - - // One-way road to the left - // (StVO 220.1). - // - // See e.g.: - // - TYPE_ONEWAY_LEFT = 45; - - // One-way road to the right - // (StVO 220.2). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/220-20.png - // - TYPE_ONEWAY_RIGHT = 46; - - // Entry not allowed - // (StVO 267). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/267.png - // - TYPE_DO_NOT_ENTER = 47; - - // No U turn left - // (StVO 272). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/272.png - // - TYPE_NO_U_TURN_LEFT = 48; - - // No U turn right (). - // - TYPE_NO_U_TURN_RIGHT = 49; - - // Prescribed U turn left (). - // - TYPE_PRESCRIBED_U_TURN_LEFT = 50; - - // Prescribed U turn right (). - // - TYPE_PRESCRIBED_U_TURN_RIGHT = 51; - - // End of left lane - // (StVO 531.2x). - // - // See e.g.: - // - // \note No speed limitation - // - TYPE_ANNOUNCE_LEFT_LANE_END = 52; - - // End of right lane - // (StVO 531.1x). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/531-10.png - // - // \note No speed limitation - // - TYPE_ANNOUNCE_RIGHT_LANE_END = 53; - - // Roundabout - // (StVO 215). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/215.png - // - TYPE_ROUNDABOUT = 54; - - // Bus only lane begin (). - // - TYPE_BUS_LANE_BEGIN = 55; - - // Bus only lane end (). - // - TYPE_BUS_LANE_END = 56; - - // Entry prohibited for all vehicle types - // (StVO 250). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/250.png - // - TYPE_PROHIBITED_FOR_ALL = 57; - - // Entry prohibited for all motor vehicles - // (StVO 251). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/251.png - // - TYPE_PROHIBITED_FOR_MOTOR_VEHICLES = 58; - - // Entry prohibited for trucks - // (StVO 253). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/253.png - // - TYPE_PROHIBITED_FOR_TRUCKS = 59; - - // Entry prohibited for bicycles - // (StVO 254). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/254.png - // - TYPE_PROHIBITED_FOR_BICYCLES = 60; - - // Entry prohibited for motor bikes - // (StVO 255). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/255.png - // - TYPE_PROHIBITED_FOR_MOTOR_AND_BIKES = 61; - - // Entry prohibited for pedestrians - // (StVO 259). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/259.png - // - TYPE_PROHIBITED_FOR_PEDESTRIANS = 62; - - // Entry prohibited for all motor vehicles and bikes - // (StVO 260). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/260.png - // - TYPE_PROHIBITED_FOR_MOTOR_VEHICLES_BIKES = 63; - - // Begin of highway - // (StVO 330.1). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/330.1.png - // - TYPE_HIGHWAY_BEGIN = 64; - - // End of highway - // (StVO 330.2). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/330.2.png - // - TYPE_HIGHWAY_END = 65; - - // Highway exit sign - // (StVO 333). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/333.png - // - TYPE_HIGHWAY_EXIT = 66; - - // Pole indicating highways exit in e.g. 100m (StVO 450). - // \c TrafficSign::value and \c TrafficSign::value_unit . - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/450-51.png - // - TYPE_POLE_EXIT = 67; - - // Pole for warning and guiding purposes - // (red/white stripes - StVO 605). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/605-10.png - // - TYPE_POLE_WARNING = 68; - - // Begin of expressway for motor vehicles - // (StVO 331.1). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/331.1.png - // - TYPE_EXPRESSWAY_BEGIN = 69; - - // End of expressways for motor vehicles - // (StVO 331.2). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/331.2.png - // - TYPE_EXPRESSWAY_END = 70; - - // Priority must be given to vehicles from the opposite direction - // (StVO 208). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/208.png - // - TYPE_PRIORITY_TO_OPPOSITE_DIRECTION = 71; - - // Traffic has priority over vehicles from the opposite direction - // (StVO 308). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/308.png - // - TYPE_PRIORITY_OVER_OPPOSITE_DIRECTION = 72; - - // Priority must be given to vehicles from the opposite direction - // (StVO 208 Upside down). - // - // See e.g.: - // - TYPE_PRIORITY_TO_OPPOSITE_DIRECTION_UPSIDE_DOWN = 73; - - // Traffic has priority over vehicles from the opposite direction - // (StVO 308 Upside down). - // - // See e.g.: - // - TYPE_PRIORITY_OVER_OPPOSITE_DIRECTION_UPSIDE_DOWN = 74; - - // Minimum safety distance for trucks (StVO 273). - // \c TrafficSign::value and \c TrafficSign::value_unit . - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/273.png - // - TYPE_MINIMUM_DISTANCE_FOR_TRUCKS = 75; - - // Traffic light ahead sign - // (StVO 131). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/131.png - // - TYPE_ATTENTION_TRAFFIC_LIGHT = 76; - - // Pedestrian crossing - // (StVO 350) - crosswalk. - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/350-10.png - // - TYPE_PEDESTRIAN_CROSSING_INFO = 77; - - // Warning sign for a left turn - // (StVO 103.1). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/103-10.png - // - TYPE_TURN_LEFT = 78; - - // Warning sign for a right turn - // (StVO 103.2). - // - // See e.g.: - // - TYPE_TURN_RIGHT = 79; - - // Warning sign for a double turn (first left turn) - // (StVO 105.1). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/105-10.png - // - TYPE_DOUBLE_TURN_LEFT = 80; - - // Warning sign for a double turn (first right turn) - // (StVO 105.2). - // - // See e.g.: - // - TYPE_DOUBLE_TURN_RIGHT = 81; - - // Drive past on the left side - // (StVO 222.1). - // - // See e.g.: - // - TYPE_PASS_LEFT = 82; - - // Drive past on the right side - // (StVO 222.2). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/222.png - // - TYPE_PASS_RIGHT = 83; - - // Tunnel ahead - // (StVO 327). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/327.png - // - TYPE_TUNNEL = 84; - - // Emergency stopping place left - // (). - // - // See e.g.: - // - TYPE_EMERGENCY_STOPPING_LEFT = 85; - - // Emergency stopping place right - // (StVO 328). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/328.png - // - TYPE_EMERGENCY_STOPPING_RIGHT = 86; - - // Warning for two-way-traffic (after one-way lane) - // (StVO 125). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/125.png - // - TYPE_WARNING_TWO_WAY_TRAFFIC = 87; - - // Warning for road narrowing - // (StVO 120). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/120.png - // - TYPE_WARNING_ROAD_NARROWING = 88; - - // Warning for road narrowing on the left - // (StVO 121.2). - // - // See e.g.: - // - TYPE_WARNING_ROAD_NARROWING_LEFT = 89; - - // Warning for road narrowing on the right - // (StVO 121.1). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/121-10.png - // - TYPE_WARNING_ROAD_NARROWING_RIGHT = 90; - - // Lane for buses - // (StVO 245). - // - // See e.g.: https://www.dvr.de/bilder/stvo/gt/245.png - // - TYPE_BUS_LANE = 91; - - // Green arrow sign at a traffic light - // (StVO 720). - // - // See e.g.: - // - TYPE_TRAFFIC_LIGHT_GREEN_ARROW = 92; - } - // Definition of the variability of the traffic sign. // enum Variability @@ -754,39 +58,8 @@ message TrafficSign VARIABILITY_VARIABLE = 3; } - // Definition of the direction of the traffic sign's scope. - // Signs marked with additional arrows. (E.g. No parking sign (StVO 286) to - // the left.) - // - enum DirectionScope - { - // Direction of the sign's scope is unknown (must not be used in ground - // truth). - // - DIRECTION_SCOPE_UNKNOWN = 0; - - // Other (unspecified but known) direction of the sign's scope. - // - DIRECTION_SCOPE_OTHER = 1; - - // Direction of the sign's scope is not specified. - // - DIRECTION_SCOPE_NO_DIRECTION = 2; - - // Direction of the sign's scope for its viewer is left. - // - DIRECTION_SCOPE_LEFT = 3; - - // Direction of the sign's scope for its viewer is right. - // - DIRECTION_SCOPE_RIGHT = 4; - - // Direction of the sign's scope for its viewer is to both sides. - // - DIRECTION_SCOPE_LEFT_RIGHT = 5; - } - // Unit for values on traffic signs + // Unit for values on traffic sign // enum Unit { @@ -890,189 +163,928 @@ message TrafficSign // UNIT_PERCENTAGE = 14; } -} - -// -// \brief Additional, supplementary sign modifying a parent traffic sign. -// -message SupplementarySign -{ - // The base parameters of the supplementary traffic sign. - // - // The orientation of the bounding box \c SupplementarySign::base - // ( \c BaseStationary::orientation ) is defined as follows: - // The z-axis of the given \c BaseStationary::orientation is the vector - // from the bottom to the top of the supplementary traffic sign's 2D image - // plate. (Normally it is equal to the ground truth z-axis.) - // The x-axis of the given \c BaseStationary::orientation is view - // normal of the supplementary traffic sign's image. - // This x-axis points from the supplementary traffic sign's image in the - // direction from where a 'viewer' could see the supplementary traffic sign image. - // - optional BaseStationary base = 1000; - - // Type of the supplementary sign. - // - 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; - - // Unit for first optional value. - // - optional TrafficSign.Unit value_1_unit = 3; - - // Optional second value defining additional properties, e.g. end time in - // time range. - // - optional double value_2 = 4; - - // Unit for second optional value. - // - optional TrafficSign.Unit value_2_unit = 5; - - // Optional third value defining additional properties, e.g. day of the - // week start. - // - optional double value_3 = 6; - - // Unit for third optional value. - // - optional TrafficSign.Unit value_3_unit = 7; - - // Optional fourth value defining additional properties, e.g. day of the - // week end. - // - optional double value_4 = 8; - - // Unit for fourth optional value. + // - optional TrafficSign.Unit value_4_unit = 9; - - // Definition of supplementary sign types. - // See \c TrafficSign::Type for further information. + // \brief Additional, supplementary sign modifying a parent traffic sign. // - enum Type + message MainSign { - // 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 \c #value_1 in - // e.g. meter - \c #value_1_unit). + // The base parameters of the traffic sign. // - TYPE_VALID_FOR_DISTANCE = 3; - - // Distance to the start of validity of the traffic sign (given by - // \c #value_1 in e.g. meter - \c #value_1_unit). + // The orientation of the bounding box \c #base + // ( \c BaseStationary::orientation ) is defined as follows: + // The z-axis of the given \c BaseStationary::orientation is the vector + // from the bottom to the top of the traffic sign's 2D image plate. + // (Normally it is equal to the ground truth z-axis.) + // The x-axis of the given \c BaseStationary::orientation is view + // normal of the traffic sign's image. + // This x-axis points from the traffic sign's image in the direction from + // where a 'viewer' could see the traffic sign image. // - TYPE_VALID_IN_DISTANCE = 4; - - // Time range for validity of traffic sign (starting from \c #value_1 - // and ending with \c #value_2, both defining e.g. time of day in - // minutes since midnight - \c #value_1_unit and \c #value_2_unit). - // Day of the week starting from \c #value_3 and ending with - // \c #value_4 with \c #value_3_unit and \c #value_4_unit). - // - TYPE_TIME_RANGE = 5; - - // Restriction of the validity of the traffic sign depending on the - // vehicle's weight (more than \c #value_1 e.g. in kilogram - - // \c #value_1_unit). - // - 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 \c #TYPE_RAIN and \c #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. + optional BaseStationary base = 1; + + // The type of the traffic sign. // - TYPE_LEFT_BEND_ARROW = 13; - - // Direction of potential danger, right-pointing. + optional Type type = 2; + + // Additional value associated with the traffic sign, e.g. value of the + // speed limit. // - TYPE_RIGHT_BEND_ARROW = 14; - - // Valid for heavy trucks. + // \note Field need not be set if traffic sign type does not require it. + // Unit of field \c #value is defined by field \c #value_unit. // - TYPE_TRUCK = 15; - - // Passing, only tractors allowed. + optional double value = 3; + + // Unit for additional value. // - TYPE_TRACTORS_MAY_BE_PASSED = 16; - - // Hazardous. + optional Unit value_unit = 4; + + // Some traffic signs have an additional arrow symbol as an additional + // constraint for their scope (e.g. no parking to the right). + // The arrow direction is given relative to the sign's 2D image plane, i.e. + // as a viewer standing right in front of the sign and looking straight + // towards it would interpret the arrow. // - TYPE_HAZARDOUS = 17; - - // Valid for vehicle with trailers. + // The definition for left and right is according to the following + // temporarily constructed right-handed local coordinate system: + // Set z-axis to match the z-axis of the ground truth coordinate system. + // Set x-axis to the view normal of the traffic sign's image + // (\c #base \c BaseStationary::orientation x-axis). + // Right: direction of the local coordinate system's positive y-axis. + // Left: opposite direction of the local coordinate system's y-axis i.e. + // negative y-axis', // - TYPE_TRAILER = 18; - - // Valid at night. + // \note If a traffic sign image is on the ground (there is no definition + // for right or left). Normally, this is a road marking and not a traffic + // sign. Actual traffic signs lying on the ground might have been + // intentionally unmounted and, hence, not be in effect. // - TYPE_NIGHT = 19; - - // Zone. + optional DirectionScope direction_scope = 5; + + // Definition of traffic sign types. + // Numbers are given according to German StVO. // - TYPE_ZONE = 20; - - // Stop 4 way. - // - TYPE_STOP_4_WAY = 21; - - // Valid for motorcycles. - // - TYPE_MOTORCYCLE = 22; - - // Only motorcycles allowed. - // - TYPE_MOTORCYCLE_ALLOWED = 23; - - // Valid for cars. - // - TYPE_CAR = 24; - - // Ends in e.g. .. meter (given by \c #value_1 in e.g. meter - - // \c #value_1_unit). - // - TYPE_STOP_IN = 25; + // For an overview see: + // \arg https://www.dvr.de/publikationen/downloads/verkehrszeichen.html (Images) + // \arg https://www.gesetze-im-internet.de/stvo_2013/anlage_1.html (Allgemeine und Besondere Gefahrenzeichen) + // \arg https://www.gesetze-im-internet.de/stvo_2013/anlage_2.html (Vorschriftzeichen) + // \arg https://www.gesetze-im-internet.de/stvo_2013/anlage_3.html (Richtzeichen) + // \arg https://www.gesetze-im-internet.de/stvo_2013/anlage_4.html (Verkehrseinrichtungen) + // \arg https://traffic-rules.com/ + // + 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) \c TrafficSign::value and + // \c TrafficSign::value_unit . + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/274-60.png + // + TYPE_SPEED_LIMIT_BEGIN = 2; + + // End of speed limit (StVO 278) \c TrafficSign::value and + // \c TrafficSign::value_unit . + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/278-60.png + // + TYPE_SPEED_LIMIT_END = 3; + + // Town entrance + // (StVO 310). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/310.png + // + TYPE_TOWN_BEGIN = 4; + + // Town exit + // (StVO 311). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/311.png + // + TYPE_TOWN_END = 5; + + // Start of zone with speed limit (StVO 274.1) \c TrafficSign::value and + // \c TrafficSign::value_unit . + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/274.1.png + // + TYPE_SPEED_LIMIT_ZONE_BEGIN = 6; + + // End of zone with speed limit (StVO 274.2) \c TrafficSign::value and + // \c TrafficSign::value_unit . + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/274.2.png + // + TYPE_SPEED_LIMIT_ZONE_END = 7; + + // Start of mandatory minimum speed (StVO 275) \c TrafficSign::value and + // \c TrafficSign::value_unit . + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/275.png + // + TYPE_MINIMUM_SPEED_BEGIN = 8; + + // End of mandatory minimum speed (StVO 279) \c TrafficSign::value and + // \c TrafficSign::value_unit . + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/279.png + // + TYPE_MINIMUM_SPEED_END = 9; + + // Start of area with calmed / reduced traffic + // (verkehrsberuhigter Bereich - StVO 325.1). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/325.1.png + // + TYPE_TRAFFIC_CALMED_DISTRICT_BEGIN = 10; + + // End of area with calmed / reduced traffic + // (verkehrsberuhigter Bereich - StVO 325.2). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/325.2.png + // + TYPE_TRAFFIC_CALMED_DISTRICT_END = 11; + + // Start of area without traffic to reduce harmful air pollution + // (StVO 270.1). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/270.1.png + // + TYPE_ENVIRONMENTAL_ZONE_BEGIN = 12; + + // End of area without traffic to reduce harmful air pollution + // (StVO 270.2). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/270.2.png + // + TYPE_ENVIRONMENTAL_ZONE_END = 13; + + // Start of overtaking ban + // (StVO 276). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/276.png + // + TYPE_OVERTAKING_BAN_BEGIN = 14; + + // End of overtaking ban + // (StVO 280). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/280.png + // + TYPE_OVERTAKING_BAN_END = 15; + + // Start of overtaking ban for trucks + // (StVO 277). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/277.png + // + TYPE_OVERTAKING_BAN_FOR_TRUCKS_BEGIN = 16; + + // End of overtaking ban for trucks + // (StVO 281). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/281.png + // + TYPE_OVERTAKING_BAN_FOR_TRUCKS_END = 17; + + // End of all speed and overtaking restrictions + // (StVO 282). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/282.png + // + TYPE_ALL_RESTRICTIONS_END = 18; + + // Begin of priority road with right of way + // (StVO 306). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/306.png + // + TYPE_RIGHT_OF_WAY_BEGIN = 19; + + // End of priority road with right of way + // (StVO 307). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/307.png + // + TYPE_RIGHT_OF_WAY_END = 20; + + // Right of way at the next intersection + // (StVO 301). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/301.png + // + TYPE_RIGHT_OF_WAY_NEXT_INTERSECTION = 21; + + // "Right before left" rule at the next intersection + // (StVO 102). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/102.png + // + TYPE_RIGHT_BEFORE_LEFT_NEXT_INTERSECTION = 22; + + // Begin of no parking zone + // (StVO 290.1). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/290.1.png + // + TYPE_NO_PARKING_ZONE_BEGIN = 23; + + // End of no parking zone + // (StVO 290.2). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/290.2.png + // + TYPE_NO_PARKING_ZONE_END = 24; + + // No parking sign + // (StVO 286). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/286.png + // + TYPE_NO_PARKING = 25; + + // No stopping sign + // (StVO 283). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/283.png + // + TYPE_NO_STOPPING = 26; + + // Begin of parking zone + // (StVO 314.1). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/314.1.png + // + TYPE_CAR_PARKING_ZONE_BEGIN = 27; + + // End of parking zone + // (StVO 314.2). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/314.2.png + // + TYPE_CAR_PARKING_ZONE_END = 28; + + // Parking space + // (StVO 314). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/314.png + // + TYPE_CAR_PARKING = 29; + + // Give way sign + // (StVO 205). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/205.png + // + TYPE_GIVE_WAY = 30; + + // Stop sign + // (StVO 206). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/206.png + // + TYPE_STOP = 31; + + // Danger sign + // (StVO 101). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/101.png + // + TYPE_DANGER_SPOT = 32; + + // Road works sign + // (StVO 123) + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/123.png + // + TYPE_ROAD_WORKS = 33; + + // Steep hill downwards (StVO 108) \c TrafficSign::value and + // \c TrafficSign::value_unit . + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/108-10.png + // + TYPE_HILL_DOWNWARDS = 34; + + // Steep hill upwards (StVO 110) \c TrafficSign::value and + // \c TrafficSign::value_unit . + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/110-12.png + // + TYPE_HILL_UPWARDS = 35; + + // Prescribed left turn + // (StVO 209.1). + // + // See e.g.: + // + TYPE_PRESCRIBED_LEFT_TURN = 36; + + // Prescribed right turn + // (StVO 209.2). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/209.png + // + TYPE_PRESCRIBED_RIGHT_TURN = 37; + + // Prescribed driving straight ahead + // (StVO 209.3). + // + // See e.g.: + // + TYPE_PRESCRIBED_STRAIGHT_AHEAD = 38; + + // Prescribed left way + // (StVO 211.1). + // + // See e.g.: + // + TYPE_PRESCRIBED_LEFT_WAY = 39; + + // Prescribed right way + // (StVO 211.2). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/211.png + // + TYPE_PRESCRIBED_RIGHT_WAY = 40; + + // Prescribed left turn and driving straight ahead + // (StVO 214.1). + // + // See e.g.: + // + TYPE_PRESCRIBED_LEFT_TURN_AND_STRAIGHT_AHEAD = 41; + + // Prescribed right turn and driving straight ahead + // (StVO 214.2). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/214.png + // + TYPE_PRESCRIBED_RIGHT_TURN_AND_STRAIGHT_AHEAD = 42; + + // Prescribed left and right turn + // (StVO 214.3). + // + // See e.g.: + // + TYPE_PRESCRIBED_LEFT_TURN_AND_RIGHT_TURN = 43; + + // Prescribed left turn, right turn and driving straight ahead (required + // for logical signs as road marking). + // + // See e.g.: + // + TYPE_PRESCRIBED_LEFT_TURN_RIGHT_TURN_AND_STRAIGHT_AHEAD = 44; + + // One-way road to the left + // (StVO 220.1). + // + // See e.g.: + // + TYPE_ONEWAY_LEFT = 45; + + // One-way road to the right + // (StVO 220.2). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/220-20.png + // + TYPE_ONEWAY_RIGHT = 46; + + // Entry not allowed + // (StVO 267). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/267.png + // + TYPE_DO_NOT_ENTER = 47; + + // No U turn left + // (StVO 272). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/272.png + // + TYPE_NO_U_TURN_LEFT = 48; + + // No U turn right (). + // + TYPE_NO_U_TURN_RIGHT = 49; + + // Prescribed U turn left (). + // + TYPE_PRESCRIBED_U_TURN_LEFT = 50; + + // Prescribed U turn right (). + // + TYPE_PRESCRIBED_U_TURN_RIGHT = 51; + + // End of left lane + // (StVO 531.2x). + // + // See e.g.: + // + // \note No speed limitation + // + TYPE_ANNOUNCE_LEFT_LANE_END = 52; + + // End of right lane + // (StVO 531.1x). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/531-10.png + // + // \note No speed limitation + // + TYPE_ANNOUNCE_RIGHT_LANE_END = 53; + + // Roundabout + // (StVO 215). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/215.png + // + TYPE_ROUNDABOUT = 54; + + // Bus only lane begin (). + // + TYPE_BUS_LANE_BEGIN = 55; + + // Bus only lane end (). + // + TYPE_BUS_LANE_END = 56; + + // Entry prohibited for all vehicle types + // (StVO 250). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/250.png + // + TYPE_PROHIBITED_FOR_ALL = 57; + + // Entry prohibited for all motor vehicles + // (StVO 251). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/251.png + // + TYPE_PROHIBITED_FOR_MOTOR_VEHICLES = 58; + + // Entry prohibited for trucks + // (StVO 253). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/253.png + // + TYPE_PROHIBITED_FOR_TRUCKS = 59; + + // Entry prohibited for bicycles + // (StVO 254). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/254.png + // + TYPE_PROHIBITED_FOR_BICYCLES = 60; + + // Entry prohibited for motor bikes + // (StVO 255). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/255.png + // + TYPE_PROHIBITED_FOR_MOTOR_AND_BIKES = 61; + + // Entry prohibited for pedestrians + // (StVO 259). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/259.png + // + TYPE_PROHIBITED_FOR_PEDESTRIANS = 62; + + // Entry prohibited for all motor vehicles and bikes + // (StVO 260). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/260.png + // + TYPE_PROHIBITED_FOR_MOTOR_VEHICLES_BIKES = 63; + + // Begin of highway + // (StVO 330.1). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/330.1.png + // + TYPE_HIGHWAY_BEGIN = 64; + + // End of highway + // (StVO 330.2). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/330.2.png + // + TYPE_HIGHWAY_END = 65; + + // Highway exit sign + // (StVO 333). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/333.png + // + TYPE_HIGHWAY_EXIT = 66; + + // Pole indicating highways exit in e.g. 100m (StVO 450). + // \c TrafficSign::value and \c TrafficSign::value_unit . + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/450-51.png + // + TYPE_POLE_EXIT = 67; + + // Pole for warning and guiding purposes + // (red/white stripes - StVO 605). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/605-10.png + // + TYPE_POLE_WARNING = 68; + + // Begin of expressway for motor vehicles + // (StVO 331.1). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/331.1.png + // + TYPE_EXPRESSWAY_BEGIN = 69; + + // End of expressways for motor vehicles + // (StVO 331.2). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/331.2.png + // + TYPE_EXPRESSWAY_END = 70; + + // Priority must be given to vehicles from the opposite direction + // (StVO 208). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/208.png + // + TYPE_PRIORITY_TO_OPPOSITE_DIRECTION = 71; + + // Traffic has priority over vehicles from the opposite direction + // (StVO 308). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/308.png + // + TYPE_PRIORITY_OVER_OPPOSITE_DIRECTION = 72; + + // Priority must be given to vehicles from the opposite direction + // (StVO 208 Upside down). + // + // See e.g.: + // + TYPE_PRIORITY_TO_OPPOSITE_DIRECTION_UPSIDE_DOWN = 73; + + // Traffic has priority over vehicles from the opposite direction + // (StVO 308 Upside down). + // + // See e.g.: + // + TYPE_PRIORITY_OVER_OPPOSITE_DIRECTION_UPSIDE_DOWN = 74; + + // Minimum safety distance for trucks (StVO 273). + // \c TrafficSign::value and \c TrafficSign::value_unit . + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/273.png + // + TYPE_MINIMUM_DISTANCE_FOR_TRUCKS = 75; + + // Traffic light ahead sign + // (StVO 131). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/131.png + // + TYPE_ATTENTION_TRAFFIC_LIGHT = 76; + + // Pedestrian crossing + // (StVO 350) - crosswalk. + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/350-10.png + // + TYPE_PEDESTRIAN_CROSSING_INFO = 77; + + // Warning sign for a left turn + // (StVO 103.1). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/103-10.png + // + TYPE_TURN_LEFT = 78; + + // Warning sign for a right turn + // (StVO 103.2). + // + // See e.g.: + // + TYPE_TURN_RIGHT = 79; + + // Warning sign for a double turn (first left turn) + // (StVO 105.1). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/105-10.png + // + TYPE_DOUBLE_TURN_LEFT = 80; + + // Warning sign for a double turn (first right turn) + // (StVO 105.2). + // + // See e.g.: + // + TYPE_DOUBLE_TURN_RIGHT = 81; + + // Drive past on the left side + // (StVO 222.1). + // + // See e.g.: + // + TYPE_PASS_LEFT = 82; + + // Drive past on the right side + // (StVO 222.2). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/222.png + // + TYPE_PASS_RIGHT = 83; + + // Tunnel ahead + // (StVO 327). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/327.png + // + TYPE_TUNNEL = 84; + + // Emergency stopping place left + // (). + // + // See e.g.: + // + TYPE_EMERGENCY_STOPPING_LEFT = 85; + + // Emergency stopping place right + // (StVO 328). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/328.png + // + TYPE_EMERGENCY_STOPPING_RIGHT = 86; + + // Warning for two-way-traffic (after one-way lane) + // (StVO 125). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/125.png + // + TYPE_WARNING_TWO_WAY_TRAFFIC = 87; + + // Warning for road narrowing + // (StVO 120). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/120.png + // + TYPE_WARNING_ROAD_NARROWING = 88; + + // Warning for road narrowing on the left + // (StVO 121.2). + // + // See e.g.: + // + TYPE_WARNING_ROAD_NARROWING_LEFT = 89; + + // Warning for road narrowing on the right + // (StVO 121.1). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/121-10.png + // + TYPE_WARNING_ROAD_NARROWING_RIGHT = 90; + + // Lane for buses + // (StVO 245). + // + // See e.g.: https://www.dvr.de/bilder/stvo/gt/245.png + // + TYPE_BUS_LANE = 91; + + // Green arrow sign at a traffic light + // (StVO 720). + // + // See e.g.: + // + TYPE_TRAFFIC_LIGHT_GREEN_ARROW = 92; + } + + // Definition of the direction of the traffic sign's scope. + // Signs marked with additional arrows. (E.g. No parking sign (StVO 286) to + // the left.) + // + enum DirectionScope + { + // Direction of the sign's scope is unknown (must not be used in ground + // truth). + // + DIRECTION_SCOPE_UNKNOWN = 0; + + // Other (unspecified but known) direction of the sign's scope. + // + DIRECTION_SCOPE_OTHER = 1; + + // Direction of the sign's scope is not specified. + // + DIRECTION_SCOPE_NO_DIRECTION = 2; + + // Direction of the sign's scope for its viewer is left. + // + DIRECTION_SCOPE_LEFT = 3; + + // Direction of the sign's scope for its viewer is right. + // + DIRECTION_SCOPE_RIGHT = 4; + + // Direction of the sign's scope for its viewer is to both sides. + // + DIRECTION_SCOPE_LEFT_RIGHT = 5; + } + } + + + // + // \brief Additional, supplementary sign modifying a parent traffic sign. + // + message SupplementarySign + { + // The base parameters of the supplementary traffic sign. + // + // The orientation of the bounding box \c SupplementarySign::base + // ( \c BaseStationary::orientation ) is defined as follows: + // The z-axis of the given \c BaseStationary::orientation is the vector + // from the bottom to the top of the supplementary traffic sign's 2D image + // plate. (Normally it is equal to the ground truth z-axis.) + // The x-axis of the given \c BaseStationary::orientation is view + // normal of the supplementary traffic sign's image. + // This x-axis points from the supplementary traffic sign's image in the + // direction from where a 'viewer' could see the supplementary traffic sign image. + // + optional BaseStationary base = 1000; + + // Type of the supplementary sign. + // + 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; + + // Unit for first optional value. + // + optional Unit value_1_unit = 3; + + // Optional second value defining additional properties, e.g. end time in + // time range. + // + optional double value_2 = 4; + + // Unit for second optional value. + // + optional Unit value_2_unit = 5; + + // Optional third value defining additional properties, e.g. day of the + // week start. + // + optional double value_3 = 6; + + // Unit for third optional value. + // + optional Unit value_3_unit = 7; + + // Optional fourth value defining additional properties, e.g. day of the + // week end. + // + optional double value_4 = 8; + + // Unit for fourth optional value. + // + optional Unit value_4_unit = 9; + + // Definition of supplementary sign types. + // See \c 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 \c #value_1 in + // e.g. meter - \c #value_1_unit). + // + TYPE_VALID_FOR_DISTANCE = 3; + + // Distance to the start of validity of the traffic sign (given by + // \c #value_1 in e.g. meter - \c #value_1_unit). + // + TYPE_VALID_IN_DISTANCE = 4; + + // Time range for validity of traffic sign (starting from \c #value_1 + // and ending with \c #value_2, both defining e.g. time of day in + // minutes since midnight - \c #value_1_unit and \c #value_2_unit). + // Day of the week starting from \c #value_3 and ending with + // \c #value_4 with \c #value_3_unit and \c #value_4_unit). + // + TYPE_TIME_RANGE = 5; + + // Restriction of the validity of the traffic sign depending on the + // vehicle's weight (more than \c #value_1 e.g. in kilogram - + // \c #value_1_unit). + // + 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 \c #TYPE_RAIN and \c #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 heavy trucks. + // + TYPE_TRUCK = 15; + + // Passing, only tractors allowed. + // + TYPE_TRACTORS_MAY_BE_PASSED = 16; + + // Hazardous. + // + TYPE_HAZARDOUS = 17; + + // Valid for vehicle with trailers. + // + TYPE_TRAILER = 18; + + // Valid at night. + // + TYPE_NIGHT = 19; + + // Zone. + // + TYPE_ZONE = 20; + + // Stop 4 way. + // + TYPE_STOP_4_WAY = 21; + + // Valid for motorcycles. + // + TYPE_MOTORCYCLE = 22; + + // Only motorcycles allowed. + // + TYPE_MOTORCYCLE_ALLOWED = 23; + + // Valid for cars. + // + TYPE_CAR = 24; + + // Ends in e.g. .. meter (given by \c #value_1 in e.g. meter - + // \c #value_1_unit). + // + TYPE_STOP_IN = 25; + } } } @@ -1363,7 +1375,7 @@ message RoadMarking // \note Field need not be set (or set to \c #TYPE_OTHER) // if road marking type (\c #type) does not require it. // - optional TrafficSign.Type traffic_sign_type = 4; + optional TrafficSign.MainSign.Type traffic_sign_type = 4; // The monochrome color of the road marking. // \note Field need not be set (or set to \c #COLOR_OTHER) diff --git a/osi_lane.proto b/osi_lane.proto index c1dabb9a4..8eb939a9b 100644 --- a/osi_lane.proto +++ b/osi_lane.proto @@ -81,10 +81,10 @@ message Lane // Example: The lane ID 2 is the only left adjacent lane for lane ID 3 in // the reference picture. // - // \note The \c #left_adjacent_lane_id_list is undefined for \c #type = + // \note The \c #left_adjacent_lane_ids is undefined for \c #type = // \c #TYPE_INTERSECTION . // - repeated Identifier left_adjacent_lane_id_list = 5; + repeated Identifier left_adjacent_lane_ids = 5; // List of IDs of all lane segments that are directly adjacent to the lane // on the right side (w.r.t. intended driving direction). Note that lengths @@ -95,10 +95,10 @@ message Lane // not a right adjacent lane to lane ID 3 as they are separated by lane ID // 7. // - // \note The \c #right_adjacent_lane_id_list is undefined for \c #type = + // \note The \c #right_adjacent_lane_ids is undefined for \c #type = // \c #TYPE_INTERSECTION . // - repeated Identifier right_adjacent_lane_id_list = 6; + repeated Identifier right_adjacent_lane_ids = 6; // The antecessor/successor lane pairings of this lane. There can be // multiple pairings with the same antecessor and different successor lanes @@ -112,25 +112,25 @@ message Lane // The ID of the right boundary ID of the right lane ID w.r.t. the driving // direction. Empty for intersections. // - // \note The \c #right_lane_boundary_id_list is undefined for \c #type = + // \note The \c #right_lane_boundary_ids is undefined for \c #type = // \c #TYPE_INTERSECTION . // - repeated Identifier right_lane_boundary_id_list = 8; + repeated Identifier right_lane_boundary_ids = 8; // The ID of the left boundary ID of the left lane ID w.r.t. the driving // direction. Empty for intersections. // - // \note The \c #left_lane_boundary_id_list is undefined for \c #type = + // \note The \c #left_lane_boundary_ids is undefined for \c #type = // \c #TYPE_INTERSECTION . // - repeated Identifier left_lane_boundary_id_list = 9; + repeated Identifier left_lane_boundary_ids = 9; // The ID of the free boundary ID. // // \note \c Lanes with \c #type = \c #TYPE_INTERSECTION use only free // lane boundaries. // - repeated Identifier free_lane_boundary_id_list = 10; + repeated Identifier free_lane_boundary_ids = 10; // A lane framing describes the surroundings of the lane segment. // From 5d09b973eb005fb46d5c0865cdc844bdec890c00 Mon Sep 17 00:00:00 2001 From: carsten-kuebler <32508295+carsten-kuebler@users.noreply.github.com> Date: Mon, 26 Mar 2018 19:08:22 +0200 Subject: [PATCH 17/29] Review Remove plural s for repeated messages. Add note for documentation. Remove space at end of line. Remove typos. --- osi_common.proto | 90 +++--- osi_datarecording.proto | 12 +- osi_detectedlandmark.proto | 222 ++++++++------- osi_detectedlane.proto | 40 +-- osi_detectedobject.proto | 122 +++++---- osi_detectedoccupant.proto | 26 +- osi_environment.proto | 50 ++-- osi_featuredata.proto | 126 +++++---- osi_groundtruth.proto | 54 ++-- osi_hostvehicledata.proto | 2 +- osi_landmark.proto | 542 +++++++++++++++++++------------------ osi_lane.proto | 108 ++++---- osi_modelinternal.proto | 12 +- osi_object.proto | 84 +++--- osi_occupant.proto | 32 +-- osi_sensordata.proto | 104 ++++--- osi_sensorview.proto | 8 +- 17 files changed, 878 insertions(+), 756 deletions(-) diff --git a/osi_common.proto b/osi_common.proto index 8a0071cde..6516ce5b7 100644 --- a/osi_common.proto +++ b/osi_common.proto @@ -9,7 +9,7 @@ package osi; // \brief A cartesian 3D vector for positions, velocities or accelerations or // its uncertainties. // -// The coordinate system is defined as right-handed. +// The coordinate system is defined as right-handed. // // Units are [m] for positions, [m/s] for velocities and [m/s^2] for // accelerations. @@ -59,24 +59,24 @@ message Vector2d // // \brief A timestamp. -// -// Names and types of fields are chosen in accordance to -// google/protobuf/timestamp.proto to allow a possible switch in the future. +// +// Names and types of fields are chosen in accordance to +// google/protobuf/timestamp.proto to allow a possible switch in the future. // There is no definition of the zero point in time neither it is the Unix // epoch. A simulation may start at the zero point in time but it is not // mandatory. // message Timestamp { - // The number of seconds since the start of e.g. the simulation / system / - // vehicle. + // The number of seconds since the start of e.g. the simulation / system / + // vehicle. // // Unit: [s] // optional int64 seconds = 1; - // The number of nanoseconds since the start of the last second. - // + // The number of nanoseconds since the start of the last second. + // // Range: [0, 999.999.999] // // Unit: [ns] @@ -91,8 +91,8 @@ message Timestamp // The dimensions are positive. Uncertainties are negative or positive. // // Dimension is defined in the specified reference coordinate frame along the -// x-axis (=length), y-axis (=width) and z-axis (=height). -// +// x-axis (=length), y-axis (=width) and z-axis (=height). +// message Dimension3d { // The length of the box. @@ -100,13 +100,13 @@ message Dimension3d // Unit: [m] // optional double length = 1; - + // The width of the box. // // Unit: [m] // optional double width = 2; - + // The height of the box. // // Unit: [m] @@ -115,19 +115,19 @@ message Dimension3d } // -// \brief A 3D orientation, orientation rate or orientation acceleration (i.e. +// \brief A 3D orientation, orientation rate or orientation acceleration (i.e. // derivatives) or its uncertainties denoted in euler angles. -// -// Units are [rad] for orientation [rad/s] for rates and [rad/s^2] for +// +// Units are [rad] for orientation [rad/s] for rates and [rad/s^2] for // accelerations -// -// The preferred angular range is (-pi, pi]. The coordinate system is defined as -// right-handed. +// +// The preferred angular range is (-pi, pi]. The coordinate system is defined as +// right-handed. // For the sense of each rotation, the right-hand rule applies. -// -// The rotations are to be performed \b yaw \b first (around the z-axis), -// \b pitch \b second (around the new y-axis) and \b roll \b third (around the -// new x-axis) to follow the definition according to [1] (Tait-Bryan / Euler +// +// The rotations are to be performed \b yaw \b first (around the z-axis), +// \b pitch \b second (around the new y-axis) and \b roll \b third (around the +// new x-axis) to follow the definition according to [1] (Tait-Bryan / Euler // convention z-y'-x''). // // Roll/Pitch are 0 if the objects xy-plane is parallel to its parent's @@ -142,7 +142,7 @@ message Dimension3d // \attention This definition changed in OSI version 3.0.0. Previous OSI // versions (V2.xx) had an other definition. // -// \par References: +// \par References: // \li [1] DIN ISO 8855:2013-11 // message Orientation3d @@ -152,13 +152,13 @@ message Orientation3d // Unit: [rad] [rad/s] or [rad/s^2] // optional double roll = 1; - + // The pitch angle/rate/acceleration. // // Unit: [rad] [rad/s] or [rad/s^2] // optional double pitch = 2; - + // The yaw angle/rate/acceleration. // // Unit: [rad] [rad/s] or [rad/s^2] @@ -168,7 +168,7 @@ message Orientation3d // // \brief A common identifier (ID), represented as an integer. -// +// // Has to be unique among all simulated items at any given time. For ground // truth, the identifier of an item (object, lane, sign, etc.) must remain // stable over its lifetime. \c Identifier values may be only be reused if the @@ -176,8 +176,8 @@ message Orientation3d // use for several timesteps. Sensor specific tracking IDs have no restrictions // and should behave according to the sensor specifications. // -// The value MAX(uint64) = 2^(64) -1 = -// 0b1111111111111111111111111111111111111111111111111111111111111111 is +// The value MAX(uint64) = 2^(64) -1 = +// 0b1111111111111111111111111111111111111111111111111111111111111111 is // reserved and indicates an invalid ID or error. // message Identifier @@ -188,8 +188,8 @@ message Identifier } // -// \brief Specifies the mounting position of a sensor. -// +// \brief Specifies the mounting position of a sensor. +// // Details are specified in each instance where \c MountingPosition is used. // message MountingPosition @@ -209,12 +209,12 @@ message MountingPosition // \brief A spherical representation for a point or vector in 3D space. // // Used e.g., for low level representations of radar detections. -// -// Azimuth and elevation are defined as the rotations that would have to be -// applied to the local frame (e.g sensor frame definition in +// +// Azimuth and elevation are defined as the rotations that would have to be +// applied to the local frame (e.g sensor frame definition in // \c SensorDetectionHeader) to make its x-axis point towards the referenced point // or to align it with the referenced vector. The rotations are to be performed -// \b azimuth \b first (around the z-axis) and \b elevation \b second (around +// \b azimuth \b first (around the z-axis) and \b elevation \b second (around // the new y-axis) to follow the definition of \c Orientation3D. For the // sense of each rotation, the right-hand rule applies. // @@ -243,7 +243,7 @@ message Spherical3d // // \brief The base attributes of a stationary object or entity. -// +// // This includes the \c StationaryObject , \c TrafficSign , // \c TrafficLight , \c RoadMarking messages. // @@ -269,16 +269,16 @@ message BaseStationary // // Origin_base_stationary_entity := Rotation_yaw_pitch_roll(#orientation)*(Origin_parent_coordinate_system - #position) // - // \note There may be some constraints how to align the orientation w.r.t. + // \note There may be some constraints how to align the orientation w.r.t. // to some stationary object's or entity's definition. // optional Orientation3d orientation = 3; - + // Usage as ground truth: // The two dimensional (flat) contour of the object. This is an extension of // the concept of a bounding box as defined by \c Dimension3d. The contour is // the projection of the object's outline onto the z-plane in the object - // frame (independent of its current position and orientation). + // frame (independent of its current position and orientation). // // Usage as sensor data: // The polygon describes the visible part of the object's contour. @@ -287,8 +287,8 @@ message BaseStationary // The polygon is defined in the local object frame: x pointing forward and // y to the left. // The origin is the center of the bounding box. - // As ground truth, the polygon is closed by connecting the last with the - // first point. Therefore these two points must be different. The polygon + // As ground truth, the polygon is closed by connecting the last with the + // first point. Therefore these two points must be different. The polygon // must consist of at least three points. // As sensor data, however, the polygon is open. // The polygon is defined counter-clockwise. @@ -298,7 +298,7 @@ message BaseStationary // // \brief The base attributes of each object that is moving. -// +// // This includes the \c MovingObject messages. // // All coordinates and orientations from ground truth objects are relative to @@ -354,12 +354,12 @@ message BaseMoving // \note #orientation (t) is \b not equal #orientation (t-dt)+#orientation_rate *dt // optional Orientation3d orientation_rate = 6; - + // Usage as ground truth: // The two dimensional (flat) contour of the object. This is an extension of // the concept of a bounding box as defined by \c Dimension3d. The contour is // the projection of the object's outline onto the z-plane in the object - // frame (independent of its current position and orientation). + // frame (independent of its current position and orientation). // // Usage as sensor data: // The polygon describes the visible part of the object's contour. @@ -369,9 +369,9 @@ message BaseMoving // y to the left. The origin is the center of the bounding box. // As ground truth, the polygon is closed by connecting the last with the // first point. Therefore these two points must be different. The polygon - // must consist of at least three points. As sensor data, however, the + // must consist of at least three points. As sensor data, however, the // polygon is open. // The polygon is defined counter-clockwise. // - repeated Vector2d base_polygon = 7; + repeated Vector2d base_polygon = 7; } diff --git a/osi_datarecording.proto b/osi_datarecording.proto index aa4dfe2c6..ebdcf6437 100644 --- a/osi_datarecording.proto +++ b/osi_datarecording.proto @@ -14,7 +14,9 @@ message SensorDataSeries { // List of sensor data messages for subsequent timesteps. // - repeated SensorData sensor_data_list = 1; + // \note OSI uses singular instead of plural for repeated field names. + // + repeated SensorData sensor_data = 1; } // @@ -27,7 +29,9 @@ message SensorDataList { // List of sensor data for multiple sensors at a specific timestep. // - repeated SensorData sensors = 1; + // \note OSI uses singular instead of plural for repeated field names. + // + repeated SensorData sensor = 1; } // @@ -38,5 +42,7 @@ message SensorDataSeriesList { // List of sensor data for multiple sensors at subsequent timesteps. // - repeated SensorDataSeries sensors = 1; + // \note OSI uses singular instead of plural for repeated field names. + // + repeated SensorDataSeries sensor = 1; } diff --git a/osi_detectedlandmark.proto b/osi_detectedlandmark.proto index 7c8c9edd0..ef553be56 100644 --- a/osi_detectedlandmark.proto +++ b/osi_detectedlandmark.proto @@ -26,11 +26,13 @@ message DetectedTrafficSign // The main sign as estimated by the sensor. // - optional EssentialMainSign main_sign = 4; - + optional EstimatedMainSign main_sign = 4; + // A list of additional supplementary sign(s) as estimated by the sensor. // - repeated EssentialSupplementarySign supplementary_signs = 5; + // \note OSI uses singular instead of plural for repeated field names. + // + repeated EstimatedSupplementarySign supplementary_sign = 5; // The estimated probability that this traffic sign with all supplementary // signs really exists, not based on history. @@ -41,43 +43,49 @@ message DetectedTrafficSign optional double existence_probability = 7; // Links to the corresponding lanes. - // - repeated RelevantLane relevant_lanes = 10; - + // + // \note OSI uses singular instead of plural for repeated field names. + // + repeated RelevantLane relevant_lane_id = 10; + // A list of sensors which detected this detected entity. // - // If \c SensorData has detected entities and all detections are missing, - // then e.g. the number of sensors can confirm the + // If \c SensorData has detected entities and all detections are missing, + // then e.g. the number of sensors can confirm the // \c #existence_probability. - // + // // \note This information can be determined via the detected entities' // detections ( \c ...Detection::object_id = 'this detected entity' ) and // the sensors (their IDs) to which these detections belong. // - repeated Identifier sensor_ids = 11; + // \note OSI uses singular instead of plural for repeated field names. + // + repeated Identifier sensor_id = 11; // // \brief Candidates for a detected sign as estimated by the sensor. // - message EssentialMainSign + message EstimatedMainSign { // A list of candidates for this traffic sign as estimated by the // sensor. - // - repeated CandidateSign candidates = 1; + // + // \note OSI uses singular instead of plural for repeated field names. + // + repeated CandidateSign candidate = 1; // The root mean squared error of the base parameters of the detected // traffic sign. \c TrafficSign::base has to be identical for - // all \c #candidates traffic signs. + // all \c #candidate traffic signs. // optional BaseStationary base_rmse = 2; // The detected geometry of the traffic sign. - // + // optional Geometry geometry = 3; // - // \brief A candidate for a detected traffic sign as estimated by the + // \brief A candidate for a detected traffic sign as estimated by the // sensor. // message CandidateSign @@ -96,9 +104,9 @@ message DetectedTrafficSign // optional double candidate_probability = 2; - // The amount of time that this detected object has been currently + // The amount of time that this detected object has been currently // observed/tracked. - // + // // Unit: [s] // optional double age = 3; @@ -112,57 +120,57 @@ message DetectedTrafficSign // enum Geometry { - // Geometry of the traffic sign is unknown (must not be used in + // Geometry of the traffic sign is unknown (must not be used in // ground truth). // GEOMETRY_UNKNOWN = 0; - + // Geometry of the traffic sign is unspecified (but known). - // + // GEOMETRY_OTHER = 1; - + // Traffic sign has a triangular geometry pointing to the top. - // + // GEOMETRY_TRIANGLE_TOP = 2; - + //Traffic sign has a triangular geometry pointing down. - // + // GEOMETRY_TRIANGLE_DOWN = 3; - + // Traffic sign has a circular geometry. - // + // GEOMETRY_CIRCLE = 4; - + // Traffic sign has a square geometry. - // + // GEOMETRY_SQUARE = 5; - + // Traffic sign has a diamond geometry. - // + // GEOMETRY_DIAMOND = 6; - + // Traffic sign has an octagon geometry. - // + // GEOMETRY_OCTAGON = 7; - + // Traffic sign has a geometry of an arrow pointing to the left. - // + // GEOMETRY_ARROW_LEFT = 8; - + // Traffic sign has a geometry of an arrow pointing to the right. - // + // GEOMETRY_ARROW_RIGHT = 9; - + // Traffic sign has a rectangle geometry. (width is bigger than // height e.g. one-way) // GEOMETRY_RECTANGLE = 10; - + // Traffic sign that has a pole geometry. (height is bigger than // width e.g. pole indicating highways exit in xx [m]). // GEOMETRY_POLE = 11; - + // Traffic sign that has an oversize rectangle geometry. // E.g. direction plates on highway or city signs. // @@ -174,17 +182,19 @@ message DetectedTrafficSign // \brief Candidates for all detected supplementary signs of one traffic // sign as estimated by the sensor. // - message EssentialSupplementarySign + message EstimatedSupplementarySign { // The definition of one of more supplementary signs that together // define this candidate. // - repeated CandidateSupplementarySign candidates = 1; + // \note OSI uses singular instead of plural for repeated field names. + // + repeated CandidateSupplementarySign candidate = 1; // The root mean squared error of the base parameters of the detected - // supplementary traffic sign. \c #candidates - // \c SupplementarySign::base has to be identical for all - // \c #candidates supplementary traffic signs. + // supplementary traffic sign. \c #candidate + // \c SupplementarySign::base has to be identical for all + // \c #candidate supplementary traffic signs. // optional BaseStationary base_rmse = 2; @@ -215,9 +225,9 @@ message DetectedTrafficSign // optional double candidate_probability = 2; - // The amount of time that this detected object has been currently + // The amount of time that this detected object has been currently // observed/tracked. - // + // // Unit: [s] // optional double age = 3; @@ -247,15 +257,19 @@ message DetectedTrafficLight // The main sign as estimated by the sensor. // - optional EssentialTrafficLight traffic_light = 4; + optional EstimatedTrafficLight traffic_light = 4; // Determines for which directions the traffic light applies. // - repeated RelevantDirection relevant_directions = 6; + // \note OSI uses singular instead of plural for repeated field names. + // + repeated RelevantDirection relevant_direction = 6; // Links to the corresponding lanes. // - repeated RelevantLane relevant_lanes = 7; + // \note OSI uses singular instead of plural for repeated field names. + // + repeated RelevantLane relevant_lane = 7; // The estimated probability that this traffic light really exists, not // based on history. @@ -264,36 +278,40 @@ message DetectedTrafficLight // and a high value indicates strong confidence. // optional double existence_probability = 8; - + // A list of sensors which detected this detected entity. // - // If \c SensorData has detected entities and all detections are missing, - // then e.g. the number of sensors can confirm the + // If \c SensorData has detected entities and all detections are missing, + // then e.g. the number of sensors can confirm the // \c #existence_probability. - // + // // \note This information can be determined via the detected entities' // detections ( \c ...Detection::object_id = 'this detected entity' ) and // the sensors (their IDs) to which these detections belong. // - repeated Identifier sensor_ids = 10; + // \note OSI uses singular instead of plural for repeated field names. + // + repeated Identifier sensor_id = 10; // - // \brief Candidates for a detected traffic light as estimated by the + // \brief Candidates for a detected traffic light as estimated by the // sensor. // - message EssentialTrafficLight + message EstimatedTrafficLight { - // A list of candidates for this traffic light as estimated by the + // A list of candidates for this traffic light as estimated by the // sensor. // - repeated CandidateTrafficLight candidates = 1; + // \note OSI uses singular instead of plural for repeated field names. + // + repeated CandidateTrafficLight candidate = 1; // The root mean squared error of the base parameters of the detected // traffic light's geometry. \c TrafficLight::base has to be identical - // for all \c #candidates traffic lights. + // for all \c #candidate traffic lights. // optional BaseStationary base_rmse = 2; - + // // \brief A candidate for a detected traffic light as estimated by // the sensor. @@ -304,16 +322,16 @@ message DetectedTrafficLight // optional TrafficLight traffic_light = 1; - // The estimated probability that this candidate is the true value. + // The estimated probability that this candidate is the true value. // The sum of all \c #candidate_probability must be one. // // Range: [0,1] // optional double candidate_probability = 2; - // The amount of time that this detected object has been currently + // The amount of time that this detected object has been currently // observed/tracked. - // + // // Unit: [s] optional double age = 3; @@ -332,7 +350,7 @@ message DetectedTrafficLight // optional Direction direction = 1; - // Relevance probability. + // Relevance probability. // // Range: [0,1] // @@ -374,7 +392,7 @@ message RelevantLane // optional Identifier lane_id = 1; - // Relevance probability. + // Relevance probability. // // Range: [0,1] optional double relevance_probability = 2; @@ -398,7 +416,7 @@ message DetectedRoadMarking // The road marking as estimated by the sensor. // - optional EssentialRoadMarking road_marking = 4; + optional EstimatedRoadMarking road_marking = 4; // The estimated probability that this road marking really exists, not based // on history. @@ -410,37 +428,43 @@ message DetectedRoadMarking // Links to the corresponding lanes. // - repeated RelevantLane relevant_lanes = 6; - + // \note OSI uses singular instead of plural for repeated field names. + // + repeated RelevantLane relevant_lane = 6; + // A list of sensors which detected this detected entity. // // If \c SensorData has detected entities and all detections are missing, - // then e.g. the number of sensors can confirm the + // then e.g. the number of sensors can confirm the // \c #existence_probability. - // + // // \note This information can be determined via the detected entities' // detections ( \c ...Detection::object_id = 'this detected entity' ) and // the sensors (their IDs) to which these detections belong. // - repeated Identifier sensor_ids = 11; + // \note OSI uses singular instead of plural for repeated field names. + // + repeated Identifier sensor_id = 11; // - // \brief Candidates for a detected traffic light as estimated by the + // \brief Candidates for a detected traffic light as estimated by the // sensor. // - message EssentialRoadMarking + message EstimatedRoadMarking { - // A list of candidates for this road marking as estimated by the + // A list of candidates for this road marking as estimated by the // sensor. // - repeated CandidateRoadMarking candidates = 1; - + // \note OSI uses singular instead of plural for repeated field names. + // + repeated CandidateRoadMarking candidate = 1; + // The root mean squared error of the base parameters of the detected // road marking. \c RoadMarking::base has to be identical for - // all \c #candidates road markings. + // all \c #candidate road markings. // optional BaseStationary base_rmse = 2; - + // // \brief A candidate for a detected road marking as estimated by the sensor. // @@ -457,9 +481,9 @@ message DetectedRoadMarking // optional double candidate_probability = 2; - // The amount of time that this detected object has been currently + // The amount of time that this detected object has been currently // observed/tracked. - // + // // Unit: [s] // optional double age = 3; @@ -477,7 +501,7 @@ message DetectedRoadMarking message DetectedLandmark { // Specific ID of the landmark as assigned by the sensor internally. - // Need not match with \c #ground_truth_ids. + // Need not match with \c #ground_truth_id. // optional Identifier tracking_id = 1; @@ -485,11 +509,13 @@ message DetectedLandmark // In case of a ghost detection (no corresponding ground truth), this field // should be unset. // - repeated Identifier ground_truth_ids = 2; + // \note OSI uses singular instead of plural for repeated field names. + // + repeated Identifier ground_truth_id = 2; // The landmark as estimated by the sensor. // - optional EssentialLandmark landmark = 3; + optional EstimatedLandmark landmark = 3; // The estimated probability that this landmark really exists, not based // on history. @@ -498,34 +524,38 @@ message DetectedLandmark // and a high value indicates strong confidence. // optional double existence_probability = 4; - + // A list of sensors which detected this detected entity. // - // If \c SensorData has detected entities and all detections are missing, + // If \c SensorData has detected entities and all detections are missing, // then e.g. the number of sensors can confirm the #existence_probability. - // + // // \note This information can be determined via the detected entities' // detections ( \c ...Detection::object_id = 'this detected entity' ) and // the sensors (their IDs) to which these detections belong. // - repeated Identifier sensor_ids = 6; + // \note OSI uses singular instead of plural for repeated field names. + // + repeated Identifier sensor_id = 6; // - // \brief Candidates for a detected Landmark as estimated by the + // \brief Candidates for a detected Landmark as estimated by the // sensor. // - message EssentialLandmark + message EstimatedLandmark { // A list of candidates for this landmark as estimated by the sensor. // - repeated CandidateLandmark candidates = 1; - + // \note OSI uses singular instead of plural for repeated field names. + // + repeated CandidateLandmark candidate = 1; + // The root mean squared error of the base parameters of the detected // landmark. \c Landmark::base has to be identical for - // all \c #candidates landmark. + // all \c #candidate landmark. // optional BaseStationary base_rmse = 2; - + // // \brief A candidate for a detected landmark as estimated by the sensor. // @@ -542,9 +572,9 @@ message DetectedLandmark // optional double candidate_probability = 2; - // The amount of time that this detected object has been currently + // The amount of time that this detected object has been currently // observed/tracked. - // + // // Unit: [s] // optional double age = 3; diff --git a/osi_detectedlane.proto b/osi_detectedlane.proto index 1f2b66bbc..8f69a02dd 100644 --- a/osi_detectedlane.proto +++ b/osi_detectedlane.proto @@ -14,7 +14,7 @@ package osi; message DetectedLane { // Specific ID of the detected lane as assigned by the sensor internally. - // Need not match with \c #ground_truth_ids IDs. + // Need not match with \c #ground_truth_id IDs. // optional Identifier tracking_id = 2; @@ -23,19 +23,21 @@ message DetectedLane // ground truth (as lane segment definitions may vary between sensor and // ground truth). // - repeated Identifier ground_truth_ids = 3; + // \note OSI uses singular instead of plural for repeated field names. + // + repeated Identifier ground_truth_id = 3; - // The amount of time that this detected object has been currently + // The amount of time that this detected object has been currently // observed/tracked. - // + // // Unit: [s] // optional double age = 1000; - + // The measurement state of the detected object. // optional MeasurementState measurement_state = 1001; - + // The detected lane. // optional Lane lane = 4; @@ -47,18 +49,20 @@ message DetectedLane // and a high value indicates strong confidence. // optional double existence_probability = 5; - + // A list of sensors which detected this detected entity. // // If \c SensorData has detected entities and all detections are missing, // then e.g. the number of sensors can confirm the // \c #existence_probability. - // + // // \note This information can be determined via the detected entities' // detections ( \c ...Detection::object_id = 'this detected entity' ) and // the sensors (their IDs) to which these detections belong. // - repeated Identifier sensor_ids = 6; + // \note OSI uses singular instead of plural for repeated field names. + // + repeated Identifier sensor_id = 6; } // @@ -78,9 +82,9 @@ message DetectedLaneBoundary // optional Identifier ground_truth_id = 3; - // The amount of time that this detected object has been currently + // The amount of time that this detected object has been currently // observed/tracked. - // + // // Unit: [s] // optional double age = 1000; @@ -110,29 +114,31 @@ message DetectedLaneBoundary // optional double color_confidence = 8; - // The root mean squared error of the \c BoundaryPoint information from a + // The root mean squared error of the \c BoundaryPoint information from a // \c LaneBoundary. // For each \c #lane_boundary \c LaneBoundary::boundary_line point exact // one \c #boundary_line_points_rmse rmse information exist. // repeated BoundaryPoint boundary_line_points_rmse = 9; - // Confidence of the segments of the \c BoundaryPoint information from a + // Confidence of the segments of the \c BoundaryPoint information from a // \c LaneBoundary. // For each \c #lane_boundary \c LaneBoundary::boundary_line point exact // one \c #boundary_line_points_confidences confidence value is specified. // repeated double boundary_line_points_confidences = 10; - + // A list of sensors which detected this detected entity. // // If \c SensorData has detected entities and all detections are missing, - // then e.g. the number of sensors can confirm the + // then e.g. the number of sensors can confirm the // \c #existence_probability. - // + // // \note This information can be determined via the detected entities' // detections ( \c ...Detection::object_id = 'this detected entity' ) and // the sensors (their IDs) to which these detections belong. // - repeated Identifier sensor_ids = 11; + // \note OSI uses singular instead of plural for repeated field names. + // + repeated Identifier sensor_id = 11; } diff --git a/osi_detectedobject.proto b/osi_detectedobject.proto index dec12fe54..d20a6712a 100644 --- a/osi_detectedobject.proto +++ b/osi_detectedobject.proto @@ -15,7 +15,7 @@ package osi; message DetectedObject { // Specific ID of the object as assigned by the sensor internally. Need not - // match with ground_truth_id. + // match with \c #ground_truth_id. // optional Identifier tracking_id = 1; @@ -23,6 +23,8 @@ message DetectedObject // objects etc. Multiple entries if detected object is a merge of multiple // ground truth objects. // + // \note OSI uses singular instead of plural for repeated field names. + // repeated Identifier ground_truth_id = 2; // The amount of time that this object has been currently observed/tracked. @@ -40,7 +42,7 @@ message DetectedObject // optional BaseMoving object = 5; - // The root mean squared error of the base parameters in object (cross + // The root mean squared error of the base parameters in object (cross // correlations are currently neglected). // optional BaseMoving object_rmse = 6; @@ -49,7 +51,7 @@ message DetectedObject // (required to decouple sensor measurement, position and bounding box // estimation) as used by the sensor (model). // - // \note Note that the value of this field has no impact on the value of + // \note Note that the value of this field has no impact on the value of // object.position, which always references the center of the object / // bounding box. // @@ -73,10 +75,10 @@ message DetectedObject optional Vehicle.LightState light_state = 10; // Additional internal data and state flags required and used by the - // sensor-models, should not be used by subscribers to SensorData. Generally + // sensor-models, should not be used by subscribers to SensorData. Generally // this field should be cleared after internal processing. // - // \note optional. List of used detections to recognize this object. + // \note optional. List of used detections to recognize this object. // Detections have also an identifier to reference to the detected object. // optional ModelInternalObject model_internal_object = 11; @@ -101,7 +103,7 @@ message DetectedObject // Additional data that is specific to ultrasonic sensors. // - // \note Field need not be set if simulated sensor is not an ultrasonic + // \note Field need not be set if simulated sensor is not an ultrasonic // sensor. // optional UltrasonicSpecificObjectData ultrasonic_specifics = 15; @@ -109,30 +111,30 @@ message DetectedObject // The estimated probabilities for the object to belong to a specific class. // optional ClassProbability class_probability = 16; - + // Pedestrian head pose for behavior prediction. Describes the head // orientation w.r.t. the host vehicle orientation. - // The x-axis of the right-handed head frame is pointing along the - // pedestrian's straight ahead viewing direction and the z-axis is pointing + // The x-axis of the right-handed head frame is pointing along the + // pedestrian's straight ahead viewing direction and the z-axis is pointing // upwards (cranial direction [1] i.e. to pedestrian's skull cap). // - // View_normal_base_coord_system = Inverse_Rotation(head_pose)*Unit_vector_x + // View_normal_base_coord_system = Inverse_Rotation(head_pose)*Unit_vector_x // - // \par References: + // \par References: // \li [1] https://en.wikipedia.org/wiki/Anatomical_terms_of_location // optional Orientation3d head_pose = 17; // Pedestrian upper body pose for behavior prediction. Describes the // upper body orientation w.r.t. the host vehicle orientation. - // The x-axis of the right-handed upper body frame is pointing along the - // pedestrian's upper body ventral direction [2] (i.e. usually pedestrian's - // intended moving direction) and the z-axis is pointing upwards (to + // The x-axis of the right-handed upper body frame is pointing along the + // pedestrian's upper body ventral direction [2] (i.e. usually pedestrian's + // intended moving direction) and the z-axis is pointing upwards (to // pedestrian's head). // - // View_normal_base_coord_system = Inverse_Rotation(upper_body_pose)*Unit_vector_x + // View_normal_base_coord_system = Inverse_Rotation(upper_body_pose)*Unit_vector_x // - // \par References: + // \par References: // \li [2] https://en.wikipedia.org/wiki/Anatomical_terms_of_location // optional Orientation3d upper_body_pose = 18; @@ -148,71 +150,73 @@ message DetectedObject // Percentage value of the object width in the corresponding lane. // optional double percentage_side_lane_right = 20; - + // A list of sensors which detected this detected entity. // - // If SensorData has detected entities and all detections are missing, then + // If SensorData has detected entities and all detections are missing, then // e.g. the number of sensors can confirm the existence_probability. - // + // // \note This information can be determined via the detected entities' // detections ( \c ...Detection::object_id = 'this detected entity' ) and // the sensors (their IDs) to which these detections belong. // - repeated Identifier sensor_id = 21; - - // Definition of available reference points. Left/middle/right and - // front/middle/rear indicate the position in y- and x-direction + // \note OSI uses singular instead of plural for repeated field names. + // + repeated Identifier sensor_id = 21; + + // Definition of available reference points. Left/middle/right and + // front/middle/rear indicate the position in y- and x-direction // respectively. The z position is always considered as middle. // enum ReferencePoint { - // Reference point is unknown, i.e. sensor does not report a reference + // Reference point is unknown, i.e. sensor does not report a reference // point for the position coordinate. // Value must not be used in ground truth data. - // Usually this means that the reference point for the given position - // coordinates is a largely arbitrary point 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 + // Usually this means that the reference point for the given position + // coordinates is a largely arbitrary point 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; @@ -245,12 +249,12 @@ message DetectedObject } // - // \brief Probabilities for the classification of the object as perceived by + // \brief Probabilities for the classification of the object as perceived by // the sensor. // message ClassProbability { - // Probability that the object has unknown type. + // Probability that the object has unknown type. // // Range: [0,1] // @@ -267,44 +271,44 @@ message DetectedObject // Range: [0,1] // optional double prob_car = 3; - - // Probability that the object is a heavy truck. + + // Probability that the object is a heavy truck. // // Range: [0,1] // optional double prob_heavy_truck = 4; - - // Probability that the object is a van. + + // Probability that the object is a van. // // Range: [0,1] // optional double prob_van = 5; - // Probability that the object is a bus. + // Probability that the object is a bus. // // Range: [0,1] // optional double prob_bus = 6; - // Probability that the object is a trailer. + // Probability that the object is a trailer. // // Range: [0,1] // optional double prob_trailer = 7; - // Probability that the object is a semitrailer. + // Probability that the object is a semitrailer. // // Range: [0,1] // optional double prob_semitrailer = 8; - // Probability that the object is a tram. + // Probability that the object is a tram. // // Range: [0,1] // optional double prob_tram = 9; - // Probability that the object is a train. + // Probability that the object is a train. // // Range: [0,1] // @@ -312,43 +316,43 @@ message DetectedObject // optional double prob_train = 10; - // Probability that the object is a motorbike. + // Probability that the object is a motorbike. // // Range: [0,1] // optional double prob_motorbike = 11; - - // Probability that the object is a bicycle. + + // Probability that the object is a bicycle. // // Range: [0,1] // optional double prob_bicycle = 12; - - // Probability that the object is a pedestrian. + + // Probability that the object is a pedestrian. // // Range: [0,1] // optional double prob_pedestrian = 13; - // Probability that the object is a wheelchair. + // Probability that the object is a wheelchair. // // Range: [0,1] // optional double prob_wheelchair = 14; - - // Probability that the object is an animal. + + // Probability that the object is an animal. // // Range: [0,1] // optional double prob_animal = 15; - // Probability that the object is a stationary object. + // Probability that the object is a stationary object. // // Range: [0,1] // optional double prob_stationary = 16; - // Probability that the object is an unspecified but known vehicle. + // Probability that the object is an unspecified but known vehicle. // // Range: [0,1] // diff --git a/osi_detectedoccupant.proto b/osi_detectedoccupant.proto index bba97a9da..48d13f361 100644 --- a/osi_detectedoccupant.proto +++ b/osi_detectedoccupant.proto @@ -24,7 +24,7 @@ message DetectedOccupant // The occupant as estimated by the sensor. // - optional EssentialOccupant occupant = 5; + optional EstimatedOccupant occupant = 5; // The estimated probability that this occupant really exists, not // based on history. @@ -36,31 +36,35 @@ message DetectedOccupant // A list of sensors which detected this detected entity. // - // If SensorData has detected entities and all detections are missing, then + // If SensorData has detected entities and all detections are missing, then // e.g. the number of sensors can confirm the existence_probability. - // + // // \note This information can be determined via the detected entities' // detections ( \c ...Detection::object_id = 'this detected entity' ) and // the sensors (their IDs) to which these detections belong. // - repeated Identifier sensor_ids = 7; + // \note OSI uses singular instead of plural for repeated field names. + // + repeated Identifier sensor_id = 7; // // \brief Candidates for a detected occupant as estimated by the sensor. // - message EssentialOccupant + message EstimatedOccupant { // A list of candidates for this occupant as estimated by the // sensor. - // - repeated CandidateOccupant candidates = 4; + // + // \note OSI uses singular instead of plural for repeated field names. + // + repeated CandidateOccupant candidate = 4; // The root mean squared error of the base parameters of the detected // occupant's geometry. \c Occupant::base has to be identical // for all \c #candidates occupants. // optional BaseStationary base_rmse = 5; - + // // \brief A candidate for a detected occupant as estimated by // the sensor. @@ -71,16 +75,16 @@ message DetectedOccupant // optional Occupant occupant = 1; - // The estimated probability that this candidate is the true value. + // The estimated probability that this candidate is the true value. // The sum of all \c #candidate_probability must be one. // // Range: [0,1] // optional double candidate_probability = 2; - // The amount of time that this detected object has been currently + // The amount of time that this detected object has been currently // observed/tracked. - // + // // Unit: [s] optional double age = 3; diff --git a/osi_environment.proto b/osi_environment.proto index f26a0f98e..c98f58c48 100644 --- a/osi_environment.proto +++ b/osi_environment.proto @@ -17,7 +17,7 @@ message EnvironmentalConditions // The time of day. // - optional TimeOfDay time_of_day = 2; + optional TimeOfDay time_of_day = 2; // Atmospheric pressure in Pascal at z=0.0 in world frame (about 101325 // [Pa]). @@ -39,11 +39,11 @@ message EnvironmentalConditions // Description of the fog. // optional Fog fog = 6; - + // Definition of discretized precipitation states according to [1]. // (I = Intensity of precipitation in mm per hour [mm/h]) // - // \par References: + // \par References: // \li [1] PAULAT, Marcus, et al. A gridded dataset of hourly precipitation in Germany: Its construction, climatology and application. Meteorologische Zeitschrift, 2008, 17. Jg. Nr. 6, S. 719-732. // enum Precipitation @@ -87,19 +87,19 @@ message EnvironmentalConditions } // Definition of discretized fog states according to [2]. - // The bandwidth of thick and dense fog was adjusted to fit the German StVO + // The bandwidth of thick and dense fog was adjusted to fit the German StVO // regarding rear fog lights [3]. - // (V = Visibility in meters [m]) + // (V = Visibility in meters [m]) // - // Visibility is defined as the length of the atmosphere over which a beam - // of light travels before its luminous flux is reduced to 5% of its - // original value (definition used by the Meteorological Office [4]). - // This is approximately equivalent to visibility measured in terms of the + // Visibility is defined as the length of the atmosphere over which a beam + // of light travels before its luminous flux is reduced to 5% of its + // original value (definition used by the Meteorological Office [4]). + // This is approximately equivalent to visibility measured in terms of the // contrast of a distant object against its background. // - // \par References: + // \par References: // \li [2] SHEPARD, Frank D. Reduced visibility due to fog on the highway. Transportation Research Board, 1996. - // \li [3] [StVO 17 chapter 3](https://www.stvo.de/strassenverkehrsordnung/101-17-beleuchtung) + // \li [3] [StVO 17 chapter 3](https://www.stvo.de/strassenverkehrsordnung/101-17-beleuchtung) // \li [4] [Homepage of the Meteorological Office](http://www.metoffice.gov.uk/guide/weather/observations-guide/how-we-measure-visibility) // enum Fog @@ -150,18 +150,18 @@ message EnvironmentalConditions // Ambient light is any light in the vehicle's environment that is not // emitted by the vehicle itself. It can include sun/moon light, light from // other cars, street lights etc. - // + // // Lux [lx] is the SI unit of luminance or illumination of an area of exact - // one square meter, which is equal to one lumen per square meter 1 [lx] = + // one square meter, which is equal to one lumen per square meter 1 [lx] = // 1 [lm/m^2] [5]. // The lumen [lm] is the SI derived unit of luminous flux and a measure of - // the total quantity of visible light emitted by a source. The lumen is - // defined in relation to the candela [cd] as 1 [lm] =1 [cd sr] where [sr] - // denotes steradian, the unit of solid angle used in 3D geometry analogous - // to the radian. + // the total quantity of visible light emitted by a source. The lumen is + // defined in relation to the candela [cd] as 1 [lm] =1 [cd sr] where [sr] + // denotes steradian, the unit of solid angle used in 3D geometry analogous + // to the radian. // - // Categorization is done based on natural day/night time illuminance levels - // [6] and standards for required lighting levels on roads [6, 7, 8, 9]. + // Categorization is done based on natural day/night time illuminance levels + // [6] and standards for required lighting levels on roads [6, 7, 8, 9]. // // \par References: // \li [5] [The NIST Reference on Constants, Units, and Uncertainty](https://physics.nist.gov/cuu/Units/units.html) @@ -194,26 +194,26 @@ message EnvironmentalConditions AMBIENT_ILLUMINATION_LEVEL2 = 3; // Level 3 illumination in [1, 3[ [lx] - // E.g. Deep to average twilight / Minimum lighting on local low + // E.g. Deep to average twilight / Minimum lighting on local low // pedestrian conflict roads. // AMBIENT_ILLUMINATION_LEVEL3 = 4; // Level 4 illumination in [3, 10[ [lx] // E.g. Average to full twilight / Minimum lighting on collector roads / - // Minimum lighting on major and expressway roads with low to average + // Minimum lighting on major and expressway roads with low to average // pedestrian conflict. // AMBIENT_ILLUMINATION_LEVEL4 = 5; // Level 5 illumination in [10, 20[ [lx] - // E.g. Minimum lighting on major and expressway roads with high + // E.g. Minimum lighting on major and expressway roads with high // pedestrian conflict. // AMBIENT_ILLUMINATION_LEVEL5 = 6; // Level 6 illumination in [20, 400[ [lx] - // E.g. Roads with more lighting / Very dark overcast day to sunrise or + // E.g. Roads with more lighting / Very dark overcast day to sunrise or // sunset on a clear day. // AMBIENT_ILLUMINATION_LEVEL6 = 7; @@ -243,10 +243,10 @@ message EnvironmentalConditions message TimeOfDay { // The number of seconds [s] that have passed since midnight local time. - // Used for determining the current state of the circadian rhythm of a + // Used for determining the current state of the circadian rhythm of a // driver. // - // \note No changes of daylight saving time or time zones are + // \note No changes of daylight saving time or time zones are // considered. // optional uint32 seconds_since_midnight = 1; diff --git a/osi_featuredata.proto b/osi_featuredata.proto index 5a3a40230..d89b1e31b 100644 --- a/osi_featuredata.proto +++ b/osi_featuredata.proto @@ -7,24 +7,28 @@ import "osi_common.proto"; package osi; // -// \brief Interface for sensor data, in contrast to interpreted data after +// \brief Interface for sensor data, in contrast to interpreted data after // object hypothesis and tracking. // -// All information regarding the environment is given with respect to the sensor -// coordinate system specified in \c SensorDetectionHeader::mounting_position. -// When simulating multiple sensors, each sensor has an individual copy of -// \c FeatureData in its own reference frame. This allows an independent +// All information regarding the environment is given with respect to the sensor +// coordinate system specified in \c SensorDetectionHeader::mounting_position. +// When simulating multiple sensors, each sensor has an individual copy of +// \c FeatureData in its own reference frame. This allows an independent // treatment of the sensors. // message FeatureData { // Lidar detections for multiple lidar sensors (sensor fusion). // - repeated LidarDetectionData lidar_sensors = 1; + // \note OSI uses singular instead of plural for repeated field names. + // + repeated LidarDetectionData lidar_sensor = 1; // Radar detections for multiple radar sensors (sensor fusion). // - repeated RadarDetectionData radar_sensors = 2; + // \note OSI uses singular instead of plural for repeated field names. + // + repeated RadarDetectionData radar_sensor = 2; } // @@ -32,9 +36,9 @@ message FeatureData // message SensorDetectionHeader { - // Version number of used detection list messages (\c SensorDetectionHeader, + // Version number of used detection list messages (\c SensorDetectionHeader, // \c LidarDetection, \c LidarDetectionData etc.). - // + // optional DetectionInterfaceVersion version = 1; // Time stamp at which the measurement was taken (not the time at which it @@ -42,38 +46,38 @@ message SensorDetectionHeader // time. // // \note See \c SensorData::timestamp and - // \c SensorData::last_measurement_time for detailed discussions on the + // \c SensorData::last_measurement_time for detailed discussions on the // semantics of time-related fields. // optional Timestamp measurement_time = 2; - // Monotonous counter to identify the exact cycle. - // Generally the detection function is called periodic and + // Monotonous counter to identify the exact cycle. + // Generally the detection function is called periodic and // \c #cycle_counter corresponds to the number of periods. // optional uint64 cycle_counter = 3; - // Mounting position of the sensor (origin and orientation of the sensor - // frame). Both origin and orientation are given in and with respect to the + // Mounting position of the sensor (origin and orientation of the sensor + // frame). Both origin and orientation are given in and with respect to the // host vehicle coordinate system (see: \c Vehicle vehicle reference // point) [1]. // - // The sensor frame's x-axis is pointing in the central viewing direction of - // the sensor. It is the angle bisector of the sensor's horizontal and - // vertical field of view. The terms horizontal and vertical must be - // understood as names for the two principal planes of the sensor's field of + // The sensor frame's x-axis is pointing in the central viewing direction of + // the sensor. It is the angle bisector of the sensor's horizontal and + // vertical field of view. The terms horizontal and vertical must be + // understood as names for the two principal planes of the sensor's field of // view (relative to the sensor frame's orientation), which do not have to - // be horizontal or vertical in the strict sense of being parallel or + // be horizontal or vertical in the strict sense of being parallel or // perpendicular to the local gravitational vector. The horizontal field // of view defines the sensor frame's xy-plane and the vertical field - // of view defines the xz-plane. The sensor frame is right-handed and the + // of view defines the xz-plane. The sensor frame is right-handed and the // z-axis is pointing in an upward direction. // // The sensor frame uses cartesian coordinates. The sensor frame's origin is - // identical to sensor detection frame's origin. Detections are defined in + // identical to sensor detection frame's origin. Detections are defined in // the sensor detection frame which uses e.g. spherical coordinates. // - // \par References: + // \par References: // \li [1] DIN ISO 8855:2013-11 // optional MountingPosition mounting_position = 4; @@ -84,21 +88,21 @@ message SensorDetectionHeader // given with the corresponding 6D root mean squared error. The estimation // of the current origin does not include effects due to short-time // dynamics, such as pitch angles from braking, but includes long-time - // calibration values, such as pitch angles from luggage in the trunk. + // calibration values, such as pitch angles from luggage in the trunk. // optional MountingPosition mounting_position_rmse = 5; - // Data Qualifier expresses to what extent the content of this event can be + // Data Qualifier expresses to what extent the content of this event can be // relied on. // optional DataQualifier data_qualifier = 6; // The current number of valid detections in the detections list. // - // \note This value has to be set if the list contains invalid detections. + // \note This value has to be set if the list contains invalid detections. // optional uint32 number_of_valid_detections = 7; - + // The ID of the sensor at host vehicle's mounting_position. // // This ID can equal \c SensorData::sensor_id, if \c SensorData holds only @@ -106,7 +110,7 @@ message SensorDetectionHeader // optional Identifier sensor_id = 8; - // \brief Data qualifier communicates the overall availability of the + // \brief Data qualifier communicates the overall availability of the // interface. // enum DataQualifier @@ -118,7 +122,7 @@ message SensorDetectionHeader // Other (unspecified but known). // DATA_QUALIFIER_OTHER = 1; - + // Data is available. // DATA_QUALIFIER_AVAILABLE = 2; @@ -141,7 +145,7 @@ message SensorDetectionHeader } // - // \brief Version of detection messages ( \c SensorDetectionHeader, + // \brief Version of detection messages ( \c SensorDetectionHeader, // \c LidarDetection, \c LidarDetectionData etc.). // message DetectionInterfaceVersion @@ -149,11 +153,11 @@ message SensorDetectionHeader // Major version number. // optional uint32 version_major = 1; - + // Minor version number. // optional uint32 version_minor = 2; - + // Patch version number. // optional uint32 version_patch = 3; @@ -171,7 +175,9 @@ message LidarDetectionData // List of lidar detections. // - repeated LidarDetection detections = 2; + // \note OSI uses singular instead of plural for repeated field names. + // + repeated LidarDetection detection = 2; } // @@ -179,21 +185,21 @@ message LidarDetectionData // message LidarDetection { - // Existence probability of the detection not based on history. Value does + // Existence probability of the detection not based on history. Value does // not depend on any past experience with similar detections. // - // \note Used as confidence measure where a low value means less confidence + // \note Used as confidence measure where a low value means less confidence // and a high value indicates strong confidence. // optional double existence_probability = 1; // ID of the detected object this detection is associated to. - // + // // \note ID = MAX(uint64) indicates no reference to an object. // optional Identifier object_id = 2; - // Measured position of the detection, given in spherical coordinates in the + // Measured position of the detection, given in spherical coordinates in the // sensor coordinate system. // optional Spherical3d position = 3; @@ -202,7 +208,7 @@ message LidarDetection // optional Spherical3d position_rmse = 4; - // Height value, which is required when multiple scan points are vertically + // Height value, which is required when multiple scan points are vertically // clustered. Only vertical clustering is allowed (z-axis). // // Unit: [m] @@ -221,31 +227,33 @@ message LidarDetection // optional double intensity = 7; - // The free space probability in the range [0.0, 1.0] from the origin of the + // The free space probability in the range [0.0, 1.0] from the origin of the // sensor up to this detection, as given by the distance. - // + // // Range: [0.0, 1.0] // optional double free_space_probability = 8; // Basic classification of the detection. - // + // optional DetectionClassification classification = 9; - + } // // \brief Data from one radar sensor including a list of detections. // message RadarDetectionData -{ +{ // Header attributes of radar detection from one radar sensor. // optional SensorDetectionHeader header = 1; // List of radar detections constituting the radar detection list. // - repeated RadarDetection detections = 2; + // \note OSI uses singular instead of plural for repeated field names. + // + repeated RadarDetection detection = 2; } // @@ -253,16 +261,16 @@ message RadarDetectionData // message RadarDetection { - // Existence probability of the detection not based on history. Value does + // Existence probability of the detection not based on history. Value does // not depend on any past experience with similar detections. // - // \note Use as confidence measure where a low value means less confidence + // \note Use as confidence measure where a low value means less confidence // and a high value indicates strong confidence. // optional double existence_probability = 1; // ID of the detected object this detection is associated to. - // + // // \note ID = MAX(uint64) indicates no reference to an object. // optional Identifier object_id = 2; @@ -273,17 +281,17 @@ message RadarDetection optional Spherical3d position = 3; // Root mean squared error of the measured position of the detection. - // + // optional Spherical3d position_rmse = 4; // Absolute radial (in direction to the sensor) velocity of the detection. - // + // // Unit: [m/s] // optional double radial_velocity = 5; // Root mean squared error of the object measured radial velocity. - // + // // Unit: [m/s] // optional double radial_velocity_rmse = 6; @@ -300,26 +308,26 @@ message RadarDetection // optional double snr = 8; - // Describes the possibility whether more than one object may have led to + // Describes the possibility whether more than one object may have led to // this detection. - // + // optional double point_target_probability = 9; - // Ambiguity Information: - // Each ambiguous measurement generates one Ambiguity ID. Ambiguity is - // indicated by an identical ambiguity ID. - // + // Ambiguity Information: + // Each ambiguous measurement generates one Ambiguity ID. Ambiguity is + // indicated by an identical ambiguity ID. + // // \note Unambiguous measurements have the ambiguity ID 0. // optional Identifier ambiguity_id = 10; // Basic classification of the detection. - // + // optional DetectionClassification classification = 11; } -// Definition of a basic detection classifications. -// +// Definition of a basic detection classifications. +// enum DetectionClassification { // Detection is unknown (must not be used in ground truth). @@ -330,7 +338,7 @@ enum DetectionClassification // DETECTION_CLASSIFICATION_OTHER = 1; - // Invalid detection, not to be used for object tracking, of unspecified + // Invalid detection, not to be used for object tracking, of unspecified // type (none of the other types applies). // DETECTION_CLASSIFICATION_INVALID = 2; diff --git a/osi_groundtruth.proto b/osi_groundtruth.proto index df9299c14..8067129ef 100644 --- a/osi_groundtruth.proto +++ b/osi_groundtruth.proto @@ -18,7 +18,7 @@ package osi; // This ground truth information is supposed to describe the whole simulated // environment around any simulated vehicle. For each simulated host vehicle // (there may be one or multiple), define an area around the vehicle which -// is greater than the combined field of views (FOV) of all obstructed sensors +// is greater than the combined field of views (FOV) of all obstructed sensors // in the vehicle. The ground truth data is supposed to describe the convex // hull of all such areas w.r.t. a global simulation coordinate system. // @@ -44,10 +44,10 @@ message GroundTruth optional InterfaceVersion version = 1; // The data timestamp of the simulation environment. The zero time point is - // arbitrary but must be identical for all messages. + // arbitrary but must be identical for all messages. // Recommendation: Zero time point for start point of the simulation. // - // \note Zero time point does not need to coincide with the UNIX epoch. + // \note Zero time point does not need to coincide with the UNIX epoch. // // \note For ground truth data this timestamp coincides both with the // notional simulation time the data applies to and the time it was sent @@ -58,59 +58,79 @@ message GroundTruth // The list of (host) vehicles. // - repeated Vehicle vehicles = 3; + // \note OSI uses singular instead of plural for repeated field names. + // + repeated Vehicle vehicle = 3; // The list of all other moving objects (i.e. excluding vehicles). // - repeated MovingObject moving_objects = 4; + // \note OSI uses singular instead of plural for repeated field names. + // + repeated MovingObject moving_object = 4; // The list of stationary objects (excluding traffic signs and traffic // lights). // - repeated StationaryObject stationary_objects = 5; + // \note OSI uses singular instead of plural for repeated field names. + // + repeated StationaryObject stationary_object = 5; // The list of traffic signs. // - repeated TrafficSign traffic_signs = 6; + // \note OSI uses singular instead of plural for repeated field names. + // + repeated TrafficSign traffic_sign = 6; // The list of traffic lights. // - repeated TrafficLight traffic_lights = 7; + // \note OSI uses singular instead of plural for repeated field names. + // + repeated TrafficLight traffic_light = 7; // The list of road surface markings (lane markings are excluded and // defined as \c LaneBoundary). // - repeated RoadMarking road_markings = 8; + // \note OSI uses singular instead of plural for repeated field names. + // + repeated RoadMarking road_marking = 8; // The list of lanes forming a road network. // - repeated Lane lanes = 9; + // \note OSI uses singular instead of plural for repeated field names. + // + repeated Lane lane = 9; // The list of lane boundaries. // - repeated LaneBoundary lane_boundaries = 10; + // \note OSI uses singular instead of plural for repeated field names. + // + repeated LaneBoundary lane_boundary = 10; // The list of landmarks. // - repeated Landmark landmarks = 1000; + // \note OSI uses singular instead of plural for repeated field names. + // + repeated Landmark landmark = 1000; // The list of passengers in the (host) vehicle(s). // - repeated Occupant occupants = 11; + // \note OSI uses singular instead of plural for repeated field names. + // + repeated Occupant occupant = 11; // Conditions of the environment. // optional EnvironmentalConditions environmental_conditions = 12; // The ISO country code in 3 digit numeric format according to: - // ISO Code 3166/1 [1,2]. + // ISO Code 3166/1 [1,2]. // E.g. Germany = 276, USA = 840. // // Unit: [] // - // \par References: - // \li [1] [International Standard ISO 3166-1: Codes for the representation of names of countries and their subdivisions - Part 1: Country codes, third ed., 2013] (https://www.iso.org/obp/ui/) - // \li [2] [Wikipedia ISO 3166/1] (https://en.wikipedia.org/wiki/ISO_3166-1) + // \par References: + // \li [1] [International Standard ISO 3166-1: Codes for the representation of names of countries and their subdivisions - Part 1: Country codes, third ed., 2013] (https://www.iso.org/obp/ui/) + // \li [2] [Wikipedia ISO 3166/1] (https://en.wikipedia.org/wiki/ISO_3166-1) // optional uint32 country_code = 13; } diff --git a/osi_hostvehicledata.proto b/osi_hostvehicledata.proto index b300ff4a1..77461d7df 100644 --- a/osi_hostvehicledata.proto +++ b/osi_hostvehicledata.proto @@ -21,7 +21,7 @@ message HostVehicleData // optional BaseMoving location = 1; - // Current estimated location error based on GPS- and related navigation + // Current estimated location error based on GPS- and related navigation // sensors. // // \note Note that dimension and base_polygon need not be set. diff --git a/osi_landmark.proto b/osi_landmark.proto index ac1dc6233..186232072 100644 --- a/osi_landmark.proto +++ b/osi_landmark.proto @@ -21,20 +21,24 @@ message TrafficSign // Variability // optional Variability variability = 6; - + // Main sign, e.g. speed limit 30 [km/h] // optional MainSign main_sign = 7; - + // Additional supplementary signs, e.g. time limits, modifying the traffic // sign. // - repeated SupplementarySign supplementary_signs = 8; + // \note OSI uses singular instead of plural for repeated field names. + // + repeated SupplementarySign supplementary_sign = 8; // The IDs of the lanes that the traffic sign is assigned to. // May be multiple if the traffic sign is valid for multiple lanes. // - repeated Identifier assigned_lanes = 9; + // \note OSI uses singular instead of plural for repeated field names. + // + repeated Identifier assigned_lane_id = 9; // Definition of the variability of the traffic sign. // @@ -44,21 +48,21 @@ message TrafficSign // 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; } - + // Unit for values on traffic sign // enum Unit @@ -149,7 +153,7 @@ message TrafficSign // UNIT_MINUTES = 12; - // Day of the week. + // Day of the week. // Days since Monday. Monday = 0; Tuesday = 1; ... // // Unit: [] @@ -163,7 +167,7 @@ message TrafficSign // UNIT_PERCENTAGE = 14; } - + // // \brief Additional, supplementary sign modifying a parent traffic sign. // @@ -172,14 +176,14 @@ message TrafficSign // The base parameters of the traffic sign. // // The orientation of the bounding box \c #base - // ( \c BaseStationary::orientation ) is defined as follows: + // ( \c BaseStationary::orientation ) is defined as follows: // The z-axis of the given \c BaseStationary::orientation is the vector - // from the bottom to the top of the traffic sign's 2D image plate. + // from the bottom to the top of the traffic sign's 2D image plate. // (Normally it is equal to the ground truth z-axis.) - // The x-axis of the given \c BaseStationary::orientation is view - // normal of the traffic sign's image. + // The x-axis of the given \c BaseStationary::orientation is view + // normal of the traffic sign's image. // This x-axis points from the traffic sign's image in the direction from - // where a 'viewer' could see the traffic sign image. + // where a 'viewer' could see the traffic sign image. // optional BaseStationary base = 1; @@ -190,7 +194,7 @@ message TrafficSign // Additional value associated with the traffic sign, e.g. value of the // speed limit. // - // \note Field need not be set if traffic sign type does not require it. + // \note Field need not be set if traffic sign type does not require it. // Unit of field \c #value is defined by field \c #value_unit. // optional double value = 3; @@ -199,224 +203,224 @@ message TrafficSign // optional Unit value_unit = 4; - // Some traffic signs have an additional arrow symbol as an additional - // constraint for their scope (e.g. no parking to the right). - // The arrow direction is given relative to the sign's 2D image plane, i.e. - // as a viewer standing right in front of the sign and looking straight + // Some traffic signs have an additional arrow symbol as an additional + // constraint for their scope (e.g. no parking to the right). + // The arrow direction is given relative to the sign's 2D image plane, i.e. + // as a viewer standing right in front of the sign and looking straight // towards it would interpret the arrow. // - // The definition for left and right is according to the following - // temporarily constructed right-handed local coordinate system: + // The definition for left and right is according to the following + // temporarily constructed right-handed local coordinate system: // Set z-axis to match the z-axis of the ground truth coordinate system. // Set x-axis to the view normal of the traffic sign's image // (\c #base \c BaseStationary::orientation x-axis). // Right: direction of the local coordinate system's positive y-axis. - // Left: opposite direction of the local coordinate system's y-axis i.e. + // Left: opposite direction of the local coordinate system's y-axis i.e. // negative y-axis', // // \note If a traffic sign image is on the ground (there is no definition - // for right or left). Normally, this is a road marking and not a traffic + // for right or left). Normally, this is a road marking and not a traffic // sign. Actual traffic signs lying on the ground might have been // intentionally unmounted and, hence, not be in effect. // optional DirectionScope direction_scope = 5; - + // Definition of traffic sign types. // Numbers are given according to German StVO. - // - // For an overview see: + // + // For an overview see: // \arg https://www.dvr.de/publikationen/downloads/verkehrszeichen.html (Images) // \arg https://www.gesetze-im-internet.de/stvo_2013/anlage_1.html (Allgemeine und Besondere Gefahrenzeichen) // \arg https://www.gesetze-im-internet.de/stvo_2013/anlage_2.html (Vorschriftzeichen) // \arg https://www.gesetze-im-internet.de/stvo_2013/anlage_3.html (Richtzeichen) // \arg https://www.gesetze-im-internet.de/stvo_2013/anlage_4.html (Verkehrseinrichtungen) - // \arg https://traffic-rules.com/ + // \arg https://traffic-rules.com/ // 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) \c TrafficSign::value and // \c TrafficSign::value_unit . // // See e.g.: https://www.dvr.de/bilder/stvo/gt/274-60.png // TYPE_SPEED_LIMIT_BEGIN = 2; - - // End of speed limit (StVO 278) \c TrafficSign::value and + + // End of speed limit (StVO 278) \c TrafficSign::value and // \c TrafficSign::value_unit . // // See e.g.: https://www.dvr.de/bilder/stvo/gt/278-60.png // TYPE_SPEED_LIMIT_END = 3; - + // Town entrance // (StVO 310). // // See e.g.: https://www.dvr.de/bilder/stvo/gt/310.png // TYPE_TOWN_BEGIN = 4; - + // Town exit // (StVO 311). // // See e.g.: https://www.dvr.de/bilder/stvo/gt/311.png // TYPE_TOWN_END = 5; - - // Start of zone with speed limit (StVO 274.1) \c TrafficSign::value and + + // Start of zone with speed limit (StVO 274.1) \c TrafficSign::value and // \c TrafficSign::value_unit . // // See e.g.: https://www.dvr.de/bilder/stvo/gt/274.1.png // TYPE_SPEED_LIMIT_ZONE_BEGIN = 6; - - // End of zone with speed limit (StVO 274.2) \c TrafficSign::value and + + // End of zone with speed limit (StVO 274.2) \c TrafficSign::value and // \c TrafficSign::value_unit . // // See e.g.: https://www.dvr.de/bilder/stvo/gt/274.2.png // TYPE_SPEED_LIMIT_ZONE_END = 7; - - // Start of mandatory minimum speed (StVO 275) \c TrafficSign::value and + + // Start of mandatory minimum speed (StVO 275) \c TrafficSign::value and // \c TrafficSign::value_unit . // // See e.g.: https://www.dvr.de/bilder/stvo/gt/275.png // TYPE_MINIMUM_SPEED_BEGIN = 8; - - // End of mandatory minimum speed (StVO 279) \c TrafficSign::value and + + // End of mandatory minimum speed (StVO 279) \c TrafficSign::value and // \c TrafficSign::value_unit . // // See e.g.: https://www.dvr.de/bilder/stvo/gt/279.png // TYPE_MINIMUM_SPEED_END = 9; - + // Start of area with calmed / reduced traffic // (verkehrsberuhigter Bereich - StVO 325.1). // // See e.g.: https://www.dvr.de/bilder/stvo/gt/325.1.png // TYPE_TRAFFIC_CALMED_DISTRICT_BEGIN = 10; - + // End of area with calmed / reduced traffic // (verkehrsberuhigter Bereich - StVO 325.2). // // See e.g.: https://www.dvr.de/bilder/stvo/gt/325.2.png // TYPE_TRAFFIC_CALMED_DISTRICT_END = 11; - + // Start of area without traffic to reduce harmful air pollution // (StVO 270.1). // // See e.g.: https://www.dvr.de/bilder/stvo/gt/270.1.png // TYPE_ENVIRONMENTAL_ZONE_BEGIN = 12; - + // End of area without traffic to reduce harmful air pollution // (StVO 270.2). // // See e.g.: https://www.dvr.de/bilder/stvo/gt/270.2.png // TYPE_ENVIRONMENTAL_ZONE_END = 13; - + // Start of overtaking ban // (StVO 276). // // See e.g.: https://www.dvr.de/bilder/stvo/gt/276.png // TYPE_OVERTAKING_BAN_BEGIN = 14; - + // End of overtaking ban // (StVO 280). // // See e.g.: https://www.dvr.de/bilder/stvo/gt/280.png // TYPE_OVERTAKING_BAN_END = 15; - + // Start of overtaking ban for trucks // (StVO 277). // // See e.g.: https://www.dvr.de/bilder/stvo/gt/277.png // TYPE_OVERTAKING_BAN_FOR_TRUCKS_BEGIN = 16; - + // End of overtaking ban for trucks // (StVO 281). // // See e.g.: https://www.dvr.de/bilder/stvo/gt/281.png // TYPE_OVERTAKING_BAN_FOR_TRUCKS_END = 17; - + // End of all speed and overtaking restrictions // (StVO 282). // // See e.g.: https://www.dvr.de/bilder/stvo/gt/282.png // TYPE_ALL_RESTRICTIONS_END = 18; - + // Begin of priority road with right of way // (StVO 306). // // See e.g.: https://www.dvr.de/bilder/stvo/gt/306.png // TYPE_RIGHT_OF_WAY_BEGIN = 19; - + // End of priority road with right of way // (StVO 307). // // See e.g.: https://www.dvr.de/bilder/stvo/gt/307.png // TYPE_RIGHT_OF_WAY_END = 20; - + // Right of way at the next intersection // (StVO 301). // // See e.g.: https://www.dvr.de/bilder/stvo/gt/301.png // TYPE_RIGHT_OF_WAY_NEXT_INTERSECTION = 21; - + // "Right before left" rule at the next intersection // (StVO 102). // // See e.g.: https://www.dvr.de/bilder/stvo/gt/102.png // TYPE_RIGHT_BEFORE_LEFT_NEXT_INTERSECTION = 22; - + // Begin of no parking zone // (StVO 290.1). // // See e.g.: https://www.dvr.de/bilder/stvo/gt/290.1.png // TYPE_NO_PARKING_ZONE_BEGIN = 23; - + // End of no parking zone // (StVO 290.2). // // See e.g.: https://www.dvr.de/bilder/stvo/gt/290.2.png // TYPE_NO_PARKING_ZONE_END = 24; - + // No parking sign // (StVO 286). // // See e.g.: https://www.dvr.de/bilder/stvo/gt/286.png // TYPE_NO_PARKING = 25; - + // No stopping sign // (StVO 283). // // See e.g.: https://www.dvr.de/bilder/stvo/gt/283.png // TYPE_NO_STOPPING = 26; - + // Begin of parking zone // (StVO 314.1). // @@ -437,116 +441,116 @@ message TrafficSign // See e.g.: https://www.dvr.de/bilder/stvo/gt/314.png // TYPE_CAR_PARKING = 29; - + // Give way sign // (StVO 205). // // See e.g.: https://www.dvr.de/bilder/stvo/gt/205.png // TYPE_GIVE_WAY = 30; - + // Stop sign // (StVO 206). // // See e.g.: https://www.dvr.de/bilder/stvo/gt/206.png // TYPE_STOP = 31; - + // Danger sign // (StVO 101). // // See e.g.: https://www.dvr.de/bilder/stvo/gt/101.png // TYPE_DANGER_SPOT = 32; - + // Road works sign // (StVO 123) // // See e.g.: https://www.dvr.de/bilder/stvo/gt/123.png // TYPE_ROAD_WORKS = 33; - - // Steep hill downwards (StVO 108) \c TrafficSign::value and + + // Steep hill downwards (StVO 108) \c TrafficSign::value and // \c TrafficSign::value_unit . // // See e.g.: https://www.dvr.de/bilder/stvo/gt/108-10.png // TYPE_HILL_DOWNWARDS = 34; - - // Steep hill upwards (StVO 110) \c TrafficSign::value and + + // Steep hill upwards (StVO 110) \c TrafficSign::value and // \c TrafficSign::value_unit . // // See e.g.: https://www.dvr.de/bilder/stvo/gt/110-12.png // TYPE_HILL_UPWARDS = 35; - - // Prescribed left turn + + // Prescribed left turn // (StVO 209.1). // // See e.g.: // TYPE_PRESCRIBED_LEFT_TURN = 36; - + // Prescribed right turn // (StVO 209.2). // // See e.g.: https://www.dvr.de/bilder/stvo/gt/209.png // TYPE_PRESCRIBED_RIGHT_TURN = 37; - + // Prescribed driving straight ahead // (StVO 209.3). // - // See e.g.: + // See e.g.: // TYPE_PRESCRIBED_STRAIGHT_AHEAD = 38; - + // Prescribed left way // (StVO 211.1). // - // See e.g.: + // See e.g.: // TYPE_PRESCRIBED_LEFT_WAY = 39; - + // Prescribed right way // (StVO 211.2). // // See e.g.: https://www.dvr.de/bilder/stvo/gt/211.png // TYPE_PRESCRIBED_RIGHT_WAY = 40; - + // Prescribed left turn and driving straight ahead // (StVO 214.1). // - // See e.g.: + // See e.g.: // TYPE_PRESCRIBED_LEFT_TURN_AND_STRAIGHT_AHEAD = 41; - + // Prescribed right turn and driving straight ahead // (StVO 214.2). // // See e.g.: https://www.dvr.de/bilder/stvo/gt/214.png // TYPE_PRESCRIBED_RIGHT_TURN_AND_STRAIGHT_AHEAD = 42; - + // Prescribed left and right turn // (StVO 214.3). // - // See e.g.: + // See e.g.: // TYPE_PRESCRIBED_LEFT_TURN_AND_RIGHT_TURN = 43; // Prescribed left turn, right turn and driving straight ahead (required // for logical signs as road marking). // - // See e.g.: + // See e.g.: // TYPE_PRESCRIBED_LEFT_TURN_RIGHT_TURN_AND_STRAIGHT_AHEAD = 44; // One-way road to the left // (StVO 220.1). // - // See e.g.: + // See e.g.: // TYPE_ONEWAY_LEFT = 45; @@ -584,16 +588,16 @@ message TrafficSign TYPE_PRESCRIBED_U_TURN_RIGHT = 51; // End of left lane - // (StVO 531.2x). + // (StVO 531.2x). // - // See e.g.: + // See e.g.: // // \note No speed limitation // TYPE_ANNOUNCE_LEFT_LANE_END = 52; // End of right lane - // (StVO 531.1x). + // (StVO 531.1x). // // See e.g.: https://www.dvr.de/bilder/stvo/gt/531-10.png // @@ -608,245 +612,245 @@ message TrafficSign // TYPE_ROUNDABOUT = 54; - // Bus only lane begin (). + // Bus only lane begin (). // TYPE_BUS_LANE_BEGIN = 55; - // Bus only lane end (). + // Bus only lane end (). // TYPE_BUS_LANE_END = 56; - + // Entry prohibited for all vehicle types // (StVO 250). // // See e.g.: https://www.dvr.de/bilder/stvo/gt/250.png // TYPE_PROHIBITED_FOR_ALL = 57; - + // Entry prohibited for all motor vehicles // (StVO 251). // // See e.g.: https://www.dvr.de/bilder/stvo/gt/251.png // TYPE_PROHIBITED_FOR_MOTOR_VEHICLES = 58; - + // Entry prohibited for trucks // (StVO 253). // // See e.g.: https://www.dvr.de/bilder/stvo/gt/253.png // TYPE_PROHIBITED_FOR_TRUCKS = 59; - + // Entry prohibited for bicycles // (StVO 254). // // See e.g.: https://www.dvr.de/bilder/stvo/gt/254.png // TYPE_PROHIBITED_FOR_BICYCLES = 60; - + // Entry prohibited for motor bikes // (StVO 255). // // See e.g.: https://www.dvr.de/bilder/stvo/gt/255.png // TYPE_PROHIBITED_FOR_MOTOR_AND_BIKES = 61; - + // Entry prohibited for pedestrians // (StVO 259). // // See e.g.: https://www.dvr.de/bilder/stvo/gt/259.png // TYPE_PROHIBITED_FOR_PEDESTRIANS = 62; - + // Entry prohibited for all motor vehicles and bikes // (StVO 260). // // See e.g.: https://www.dvr.de/bilder/stvo/gt/260.png // TYPE_PROHIBITED_FOR_MOTOR_VEHICLES_BIKES = 63; - + // Begin of highway // (StVO 330.1). // // See e.g.: https://www.dvr.de/bilder/stvo/gt/330.1.png // TYPE_HIGHWAY_BEGIN = 64; - + // End of highway // (StVO 330.2). // // See e.g.: https://www.dvr.de/bilder/stvo/gt/330.2.png // TYPE_HIGHWAY_END = 65; - + // Highway exit sign // (StVO 333). // // See e.g.: https://www.dvr.de/bilder/stvo/gt/333.png // TYPE_HIGHWAY_EXIT = 66; - + // Pole indicating highways exit in e.g. 100m (StVO 450). // \c TrafficSign::value and \c TrafficSign::value_unit . // // See e.g.: https://www.dvr.de/bilder/stvo/gt/450-51.png // TYPE_POLE_EXIT = 67; - + // Pole for warning and guiding purposes // (red/white stripes - StVO 605). // // See e.g.: https://www.dvr.de/bilder/stvo/gt/605-10.png // TYPE_POLE_WARNING = 68; - + // Begin of expressway for motor vehicles // (StVO 331.1). // // See e.g.: https://www.dvr.de/bilder/stvo/gt/331.1.png // TYPE_EXPRESSWAY_BEGIN = 69; - + // End of expressways for motor vehicles // (StVO 331.2). // // See e.g.: https://www.dvr.de/bilder/stvo/gt/331.2.png // TYPE_EXPRESSWAY_END = 70; - + // Priority must be given to vehicles from the opposite direction // (StVO 208). // // See e.g.: https://www.dvr.de/bilder/stvo/gt/208.png // TYPE_PRIORITY_TO_OPPOSITE_DIRECTION = 71; - + // Traffic has priority over vehicles from the opposite direction // (StVO 308). // // See e.g.: https://www.dvr.de/bilder/stvo/gt/308.png // TYPE_PRIORITY_OVER_OPPOSITE_DIRECTION = 72; - + // Priority must be given to vehicles from the opposite direction // (StVO 208 Upside down). // - // See e.g.: + // See e.g.: // TYPE_PRIORITY_TO_OPPOSITE_DIRECTION_UPSIDE_DOWN = 73; - + // Traffic has priority over vehicles from the opposite direction // (StVO 308 Upside down). // - // See e.g.: + // See e.g.: // TYPE_PRIORITY_OVER_OPPOSITE_DIRECTION_UPSIDE_DOWN = 74; - + // Minimum safety distance for trucks (StVO 273). // \c TrafficSign::value and \c TrafficSign::value_unit . // // See e.g.: https://www.dvr.de/bilder/stvo/gt/273.png // TYPE_MINIMUM_DISTANCE_FOR_TRUCKS = 75; - + // Traffic light ahead sign // (StVO 131). // // See e.g.: https://www.dvr.de/bilder/stvo/gt/131.png // TYPE_ATTENTION_TRAFFIC_LIGHT = 76; - + // Pedestrian crossing // (StVO 350) - crosswalk. // // See e.g.: https://www.dvr.de/bilder/stvo/gt/350-10.png // TYPE_PEDESTRIAN_CROSSING_INFO = 77; - + // Warning sign for a left turn // (StVO 103.1). // // See e.g.: https://www.dvr.de/bilder/stvo/gt/103-10.png // TYPE_TURN_LEFT = 78; - + // Warning sign for a right turn // (StVO 103.2). // - // See e.g.: + // See e.g.: // TYPE_TURN_RIGHT = 79; - + // Warning sign for a double turn (first left turn) // (StVO 105.1). // // See e.g.: https://www.dvr.de/bilder/stvo/gt/105-10.png // TYPE_DOUBLE_TURN_LEFT = 80; - + // Warning sign for a double turn (first right turn) // (StVO 105.2). // - // See e.g.: + // See e.g.: // TYPE_DOUBLE_TURN_RIGHT = 81; - + // Drive past on the left side // (StVO 222.1). // - // See e.g.: + // See e.g.: // TYPE_PASS_LEFT = 82; - + // Drive past on the right side // (StVO 222.2). // // See e.g.: https://www.dvr.de/bilder/stvo/gt/222.png // TYPE_PASS_RIGHT = 83; - + // Tunnel ahead // (StVO 327). // // See e.g.: https://www.dvr.de/bilder/stvo/gt/327.png // TYPE_TUNNEL = 84; - + // Emergency stopping place left // (). // - // See e.g.: + // See e.g.: // TYPE_EMERGENCY_STOPPING_LEFT = 85; - + // Emergency stopping place right // (StVO 328). // // See e.g.: https://www.dvr.de/bilder/stvo/gt/328.png // TYPE_EMERGENCY_STOPPING_RIGHT = 86; - + // Warning for two-way-traffic (after one-way lane) // (StVO 125). // // See e.g.: https://www.dvr.de/bilder/stvo/gt/125.png // TYPE_WARNING_TWO_WAY_TRAFFIC = 87; - + // Warning for road narrowing // (StVO 120). // // See e.g.: https://www.dvr.de/bilder/stvo/gt/120.png // TYPE_WARNING_ROAD_NARROWING = 88; - + // Warning for road narrowing on the left // (StVO 121.2). // - // See e.g.: + // See e.g.: // TYPE_WARNING_ROAD_NARROWING_LEFT = 89; - + // Warning for road narrowing on the right // (StVO 121.1). // @@ -855,21 +859,21 @@ message TrafficSign TYPE_WARNING_ROAD_NARROWING_RIGHT = 90; // Lane for buses - // (StVO 245). + // (StVO 245). // // See e.g.: https://www.dvr.de/bilder/stvo/gt/245.png // TYPE_BUS_LANE = 91; - // Green arrow sign at a traffic light + // Green arrow sign at a traffic light // (StVO 720). // - // See e.g.: + // See e.g.: // TYPE_TRAFFIC_LIGHT_GREEN_ARROW = 92; } - // Definition of the direction of the traffic sign's scope. + // Definition of the direction of the traffic sign's scope. // Signs marked with additional arrows. (E.g. No parking sign (StVO 286) to // the left.) // @@ -879,23 +883,23 @@ message TrafficSign // truth). // DIRECTION_SCOPE_UNKNOWN = 0; - + // Other (unspecified but known) direction of the sign's scope. // DIRECTION_SCOPE_OTHER = 1; - + // Direction of the sign's scope is not specified. // DIRECTION_SCOPE_NO_DIRECTION = 2; - + // Direction of the sign's scope for its viewer is left. // DIRECTION_SCOPE_LEFT = 3; - + // Direction of the sign's scope for its viewer is right. // DIRECTION_SCOPE_RIGHT = 4; - + // Direction of the sign's scope for its viewer is to both sides. // DIRECTION_SCOPE_LEFT_RIGHT = 5; @@ -911,14 +915,14 @@ message TrafficSign // The base parameters of the supplementary traffic sign. // // The orientation of the bounding box \c SupplementarySign::base - // ( \c BaseStationary::orientation ) is defined as follows: + // ( \c BaseStationary::orientation ) is defined as follows: // The z-axis of the given \c BaseStationary::orientation is the vector // from the bottom to the top of the supplementary traffic sign's 2D image // plate. (Normally it is equal to the ground truth z-axis.) - // The x-axis of the given \c BaseStationary::orientation is view - // normal of the supplementary traffic sign's image. + // The x-axis of the given \c BaseStationary::orientation is view + // normal of the supplementary traffic sign's image. // This x-axis points from the supplementary traffic sign's image in the - // direction from where a 'viewer' could see the supplementary traffic sign image. + // direction from where a 'viewer' could see the supplementary traffic sign image. // optional BaseStationary base = 1000; @@ -971,25 +975,25 @@ message TrafficSign // 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 \c #value_1 in // e.g. meter - \c #value_1_unit). // TYPE_VALID_FOR_DISTANCE = 3; - + // Distance to the start of validity of the traffic sign (given by // \c #value_1 in e.g. meter - \c #value_1_unit). // TYPE_VALID_IN_DISTANCE = 4; - + // Time range for validity of traffic sign (starting from \c #value_1 // and ending with \c #value_2, both defining e.g. time of day in // minutes since midnight - \c #value_1_unit and \c #value_2_unit). @@ -997,90 +1001,90 @@ message TrafficSign // \c #value_4 with \c #value_3_unit and \c #value_4_unit). // TYPE_TIME_RANGE = 5; - + // Restriction of the validity of the traffic sign depending on the - // vehicle's weight (more than \c #value_1 e.g. in kilogram - + // vehicle's weight (more than \c #value_1 e.g. in kilogram - // \c #value_1_unit). // 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 + // snowy conditions denoted by a single supplementary sign (instead of // two signs of \c #TYPE_RAIN and \c #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 heavy trucks. // TYPE_TRUCK = 15; - + // Passing, only tractors allowed. // TYPE_TRACTORS_MAY_BE_PASSED = 16; - + // Hazardous. // TYPE_HAZARDOUS = 17; - + // Valid for vehicle with trailers. // TYPE_TRAILER = 18; - + // Valid at night. // TYPE_NIGHT = 19; - + // Zone. - // + // TYPE_ZONE = 20; - + // Stop 4 way. // TYPE_STOP_4_WAY = 21; - + // Valid for motorcycles. // TYPE_MOTORCYCLE = 22; - + // Only motorcycles allowed. // TYPE_MOTORCYCLE_ALLOWED = 23; - + // Valid for cars. // TYPE_CAR = 24; - - // Ends in e.g. .. meter (given by \c #value_1 in e.g. meter - + + // Ends in e.g. .. meter (given by \c #value_1 in e.g. meter - // \c #value_1_unit). // TYPE_STOP_IN = 25; @@ -1102,18 +1106,18 @@ message TrafficLight // The base parameters of the traffic light. // - // \c BaseStationary::orientation x-axis is view normal of the traffic - // light's icon. + // \c BaseStationary::orientation x-axis is view normal of the traffic + // light's icon. // optional BaseStationary base = 2; - + // The color of the traffic light. // // \note If the color of the traffic light is known (from history or // geometrical arrangement) and the state \c #mode is - // \c MODE_OFF then \c #color could remain unchanged. + // \c MODE_OFF then \c #color could remain unchanged. // If traffic light displays images in different colors and traffic light - // is off ( \c #mode = \c #MODE_OFF), then + // is off ( \c #mode = \c #MODE_OFF), then // \c #color = \c #COLOR_OTHER . // optional Color color = 3; @@ -1121,23 +1125,25 @@ message TrafficLight // The icon of the traffic light. // optional Icon icon = 4; - + // The operating mode of the traffic light. // optional Mode mode = 5; - + // The value of the countdown counter. - // Unit: [%] or [s] - // + // Unit: [%] or [s] + // // \note Set value only if traffic light bulb is a countdown counter. // optional double counter = 6; - + // The IDs of the lanes that the traffic light is assigned to. // Might be multiple if the traffic light is valid for multiple driving // lanes. // - repeated Identifier assigned_lanes = 7; + // \note OSI uses singular instead of plural for repeated field names. + // + repeated Identifier assigned_lane_id = 7; // Definition of colors for traffic lights. // @@ -1146,7 +1152,7 @@ message TrafficLight // Color is unknown (must not be used in ground truth). // COLOR_UNKNOWN = 0; - + // Other (unspecified but known) color. // COLOR_OTHER = 1; @@ -1154,11 +1160,11 @@ message TrafficLight // Red light. // COLOR_RED = 2; - + // Orange-yellow light. // COLOR_YELLOW = 3; - + // Green light. // COLOR_GREEN = 4; @@ -1179,119 +1185,119 @@ message TrafficLight // Unknown icon of traffic light (must not be used in ground truth). // ICON_UNKNOWN = 0; - + // Other (unspecified but known) icon of traffic light. // ICON_OTHER = 1; - + // This is a normal traffic light without specification of e.g. // direction. // ICON_NONE = 2; - + // This traffic light applies to the lane straight ahead. // ICON_ARROW_STRAIGHT_AHEAD = 3; - + // This traffic light applies to left turns. // ICON_ARROW_LEFT = 4; - + // This traffic light applies to diagonal left turns. // ICON_ARROW_DIAG_LEFT = 5; - + // This traffic light applies to a lane allowing to drive straight ahead // or to turn left. // ICON_ARROW_STRAIGHT_AHEAD_LEFT = 6; - + // This traffic light applies to right turns. // ICON_ARROW_RIGHT = 7; - + // This traffic light applies to diagonal right turns. // ICON_ARROW_DIAG_RIGHT = 8; - + // This traffic light applies to a lane allowing to drive straight ahead // or to turn right. // ICON_ARROW_STRAIGHT_AHEAD_RIGHT = 9; - + // This traffic light applies to a lane allowing to turn left or right. // ICON_ARROW_LEFT_RIGHT = 10; - + // This traffic light indicates that the assigned lane is open for // driving. // ICON_ARROW_DOWN = 11; - + // This traffic light indicates a necessary lane change to the left // ahead. // ICON_ARROW_DOWN_LEFT = 12; - + // This traffic light indicates a necessary lane change to the right // ahead. // ICON_ARROW_DOWN_RIGHT = 13; - + // This traffic light indicates that the assigned lane is not open for // driving. // ICON_ARROW_CROSS = 14; - + // This traffic light is valid for pedestrians. // ICON_PEDESTRIAN = 15; - + // This traffic light is valid for pedestrians with letters 'walk'. // ICON_WALK = 16; - + // This traffic light is valid for pedestrians with letters 'don't // walk'. // ICON_DONT_WALK = 17; - - // This traffic light is valid for bicyclists. + + // This traffic light is valid for bicyclists. // ICON_BICYCLE = 18; - - // This traffic light is valid for pedestrians and bicyclists. + + // This traffic light is valid for pedestrians and bicyclists. // ICON_PEDESTRIAN_AND_BICYCLE = 19; - - // This traffic light counter in second. + + // This traffic light counter in second. // ICON_COUNTDOWN_SECONDS = 20; - - // This traffic light counter in percent. + + // This traffic light counter in percent. // ICON_COUNTDOWN_PERCENT = 21; - + // This traffic light is valid for - // trams. - // - // \note There is no detailed traffic light specification for trams and + // trams. + // + // \note There is no detailed traffic light specification for trams and // buses at the moment. // ICON_TRAM = 22; - + // This traffic light is valid for - // buses. + // buses. // - // \note There is no detailed traffic light specification for trams and + // \note There is no detailed traffic light specification for trams and // buses at the moment. // ICON_BUS = 23; - + // This traffic light is valid for - // buses and trams. + // buses and trams. // - // \note There is no detailed traffic light specification for trams and + // \note There is no detailed traffic light specification for trams and // buses at the moment. // ICON_BUS_AND_TRAM = 24; @@ -1304,23 +1310,23 @@ message TrafficLight // 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. // MODE_OFF = 2; - + // Light is on and not flashing. // MODE_CONSTANT = 3; - + // Light is flashing. // MODE_FLASHING = 4; - + // Light is counting. // MODE_COUNTING = 5; @@ -1329,8 +1335,8 @@ message TrafficLight // // \brief A road surface marking. -// -// Lane markings are excluded and defined as \c LaneBoundary messages +// +// Lane markings are excluded and defined as \c LaneBoundary messages // as part of \c Lane. // // All coordinates and orientations are relative to the global ground truth @@ -1344,18 +1350,18 @@ message RoadMarking // The base parameters of the road marking. // - // The orientation of the bounding box \c #base + // The orientation of the bounding box \c #base // \c BaseStationary::orientation is defined as follows: - // The z-axis of the \c BaseStationary::orientation is the vector from the + // The z-axis of the \c BaseStationary::orientation is the vector from the // 'bottom' to the 'top' of the road marking's (i.e. painted traffic sign) - // 2D image area. + // 2D image area. // (Normally it is in the ground truth xy-plain.) - // The x-axis of the \c BaseStationary::orientation is the view normal of - // the road marking's 2D image area. + // The x-axis of the \c BaseStationary::orientation is the view normal of + // the road marking's 2D image area. // Normally this x-axis points to the sky. - // - // \note If a valid unidirectional road marking is assigned to the host - // vehicle's current lane and the driving direction of the latter roughly + // + // \note If a valid unidirectional road marking is assigned to the host + // vehicle's current lane and the driving direction of the latter roughly // matches the z-axis of the \c #base \c BaseStationary::orientation then // the road marking is of relevance to (i.e. in effect for) the host // vehicle. @@ -1365,11 +1371,11 @@ message RoadMarking // The type of the road marking. // optional Type type = 3; - + // Traffic sign as road marking (color image, monochrome image or character // string). // - // \note Field is set if ( \c #type == \c #TYPE_PAINTED_TRAFFIC_SIGN or + // \note Field is set if ( \c #type == \c #TYPE_PAINTED_TRAFFIC_SIGN or // \c #TYPE_SYMBOLIC_TRAFFIC_SIGN or \c #TYPE_TEXTUAL_TRAFFIC_SIGN ). // // \note Field need not be set (or set to \c #TYPE_OTHER) @@ -1378,16 +1384,16 @@ message RoadMarking optional TrafficSign.MainSign.Type traffic_sign_type = 4; // The monochrome color of the road marking. - // \note Field need not be set (or set to \c #COLOR_OTHER) + // \note Field need not be set (or set to \c #COLOR_OTHER) // if road marking type does not require it (e.g. for \c #type == // \c #TYPE_PAINTED_TRAFFIC_SIGN). // optional Color monochrome_color = 5; - // Additional value associated with the road marking, e.g. value of the + // Additional value associated with the road marking, e.g. value of the // speed limit. // - // \note This field needs not be set if the road marking's type does not + // \note This field needs not be set if the road marking's type does not // require it. // optional double value = 6; @@ -1395,7 +1401,7 @@ message RoadMarking // Unit for optional value. // optional TrafficSign.Unit value_unit = 7; - + // Additional text value as road marking, e.g. BUS, TAXI etc. // // \note Field need not be set if road marking type does not require it. @@ -1405,7 +1411,9 @@ message RoadMarking // The ID(s) of the lane(s) that the road marking is assigned to. // May be multiple if the road marking goes across multiple lanes. // - repeated Identifier assigned_lanes = 9; + // \note OSI uses singular instead of plural for repeated field names. + // + repeated Identifier assigned_lane_id = 9; // Definition of road marking types. // @@ -1414,34 +1422,34 @@ message RoadMarking // 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; - + // Paint on the road surface indicating a color image of a traffic sign. // TYPE_PAINTED_TRAFFIC_SIGN = 2; - + // Paint on the road surface indicating a monochrome logical symbol of a - // traffic sign (e.g. digits 50 as start of speed limit 50 or stop line + // traffic sign (e.g. digits 50 as start of speed limit 50 or stop line // for stop sign). // TYPE_SYMBOLIC_TRAFFIC_SIGN = 3; - - // Paint on the road surface as a character string (e.g. BUS as bus only + + // Paint on the road surface as a character string (e.g. BUS as bus only // lane). // TYPE_TEXTUAL_TRAFFIC_SIGN = 4; - + // Paint on the road surface indicating a generic symbol. // TYPE_GENERIC_SYMBOL = 5; - + // Paint on the road surface indicating a generic line. // TYPE_GENERIC_LINE = 6; - + // Paint on the road surface indicating a generic character string. // TYPE_GENERIC_TEXT = 7; @@ -1454,19 +1462,19 @@ message RoadMarking // 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; @@ -1487,7 +1495,7 @@ message RoadMarking // // \brief A landmark. -// +// // Landmarks for example the pole of a traffic light or traffic sign. // // All coordinates and orientations are relative to the global ground truth @@ -1514,33 +1522,33 @@ message Landmark // Type of landmark is unknown (must not be used in ground truth). // TYPE_UNKNOWN = 0; - + // Other (unspecified but known) type of landmark. // TYPE_OTHER = 1; - - // Landmarks corresponding to vertical structures in the environment, + + // Landmarks corresponding to vertical structures in the environment, // like poles. // TYPE_VERTICAL_STRUCTURE = 2; - + // Landmarks corresponding to rectangular structures in the environment, // like walls. // TYPE_RECTANGULAR_STRUCTURE = 3; - - // Landmarks corresponding to overhead structures in the environment, + + // Landmarks corresponding to overhead structures in the environment, // like sign bridges. // TYPE_OVERHEAD_STRUCTURE = 4; - - // Landmarks corresponding to light sources or reflective structures in - // the environment, like street lights or reflective poles on the road + + // Landmarks corresponding to light sources or reflective structures in + // the environment, like street lights or reflective poles on the road // boarder. // TYPE_REFLECTIVE_STRUCTURE = 5; - - // Landmarks corresponding to construction site elements in the + + // Landmarks corresponding to construction site elements in the // environment, like cones or beacons. // TYPE_CONSTRUCTION_SITE_ELEMENT = 6; diff --git a/osi_lane.proto b/osi_lane.proto index 8eb939a9b..bd56531dd 100644 --- a/osi_lane.proto +++ b/osi_lane.proto @@ -10,7 +10,7 @@ package osi; // \brief A lane in the road network. // // A lane is part of a road and mainly characterized by its center line. It also -// knows about any adjacent lanes, antecessor and successor lanes. +// knows about any adjacent lanes, antecessor and successor lanes. // The following image will be referred to by later comments. We'll use the lane // with ID 3 as reference if not mentioned otherwise. // @@ -56,7 +56,7 @@ message Lane // \image html line_approximation_error.png "Approximation error as green line." // // \note The \c #center_line is defined only for \c #type = - // \c #TYPE_DRIVING and one \c #lane_pairings pair. + // \c #TYPE_DRIVING and one \c #lane_pairing pair. // repeated Vector3d center_line = 3; @@ -73,7 +73,7 @@ message Lane // optional bool center_line_is_driving_direction = 4; - // List of IDs of all lane segments that are directly adjacent to the lane + // List of IDs of all lane segments that are directly adjacent to the lane // on the left side (w.r.t. intended driving direction). Note that lengths // of lane segments are not synchronized and therefore there are multiple // adjacent segments if there is a split/merge point in the adjacent lane. @@ -81,24 +81,28 @@ message Lane // Example: The lane ID 2 is the only left adjacent lane for lane ID 3 in // the reference picture. // - // \note The \c #left_adjacent_lane_ids is undefined for \c #type = + // \note The \c #left_adjacent_lane_id is undefined for \c #type = // \c #TYPE_INTERSECTION . // - repeated Identifier left_adjacent_lane_ids = 5; + // \note OSI uses singular instead of plural for repeated field names. + // + repeated Identifier left_adjacent_lane_id = 5; // List of IDs of all lane segments that are directly adjacent to the lane // on the right side (w.r.t. intended driving direction). Note that lengths // of lane segments are not synchronized and therefore there are multiple // adjacent segments if there is a split/merge point in the adjacent lane. // Example: The lane IDs 4 and 7 are the right adjacent lane segments for - // lane ID 3 in the reference picture due to the lane split. Lane ID 6 is - // not a right adjacent lane to lane ID 3 as they are separated by lane ID + // lane ID 3 in the reference picture due to the lane split. Lane ID 6 is + // not a right adjacent lane to lane ID 3 as they are separated by lane ID // 7. // - // \note The \c #right_adjacent_lane_ids is undefined for \c #type = + // \note The \c #right_adjacent_lane_id is undefined for \c #type = // \c #TYPE_INTERSECTION . // - repeated Identifier right_adjacent_lane_ids = 6; + // \note OSI uses singular instead of plural for repeated field names. + // + repeated Identifier right_adjacent_lane_id = 6; // The antecessor/successor lane pairings of this lane. There can be // multiple pairings with the same antecessor and different successor lanes @@ -107,36 +111,44 @@ message Lane // The successor lanes start in the same point that this lane ends in. // Example: // - repeated LanePairing lane_pairings = 7; + // \note OSI uses singular instead of plural for repeated field names. + // + repeated LanePairing lane_pairing = 7; // The ID of the right boundary ID of the right lane ID w.r.t. the driving // direction. Empty for intersections. // - // \note The \c #right_lane_boundary_ids is undefined for \c #type = + // \note The \c #right_lane_boundary_id is undefined for \c #type = // \c #TYPE_INTERSECTION . // - repeated Identifier right_lane_boundary_ids = 8; + // \note OSI uses singular instead of plural for repeated field names. + // + repeated Identifier right_lane_boundary_id = 8; // The ID of the left boundary ID of the left lane ID w.r.t. the driving // direction. Empty for intersections. // - // \note The \c #left_lane_boundary_ids is undefined for \c #type = + // \note The \c #left_lane_boundary_id is undefined for \c #type = // \c #TYPE_INTERSECTION . // - repeated Identifier left_lane_boundary_ids = 9; + // \note OSI uses singular instead of plural for repeated field names. + // + repeated Identifier left_lane_boundary_id = 9; // The ID of the free boundary ID. // // \note \c Lanes with \c #type = \c #TYPE_INTERSECTION use only free // lane boundaries. // - repeated Identifier free_lane_boundary_ids = 10; + // \note OSI uses singular instead of plural for repeated field names. + // + repeated Identifier free_lane_boundary_id = 10; // A lane framing describes the surroundings of the lane segment. // optional LaneFraming lane_framing = 11; - // The condition of the lane, e.g. influenced by weather. + // The condition of the lane, e.g. influenced by weather. // optional RoadCondition road_condition = 12; @@ -147,11 +159,11 @@ message Lane // 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. // Example: lanes with IDs 1, 2, 3, 4 and 7 of the highway_exit image. // @@ -173,19 +185,19 @@ message Lane // 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 a tunnel. // LANE_FRAMING_TUNNEL = 3; - + // The lane segment is on a bridge. // LANE_FRAMING_BRIDGE = 4; @@ -224,7 +236,7 @@ message Lane // The coefficient representing the roughness or unevenness of the road. // International Roughness Index (IRI) [1] values range from 0 = smooth // ground (equivalent to driving on a plate of glass) up to > 20 mm/m - // (a very rough road). + // (a very rough road). // // Estimated value ranges (IRI): // 0.0 [mm/m] absolutely perfect evenness @@ -250,12 +262,12 @@ message Lane // // Unit: [mm/m] // - // \par References: + // \par References: // \li [1] SAYERS, M.W.; KARAMIHAS, S.M. Little Book of Profiling, // University of Michigan Transportation Research Institute, 1998. // optional double surface_roughness = 5; - + // The surface texture or fine roughness // // Whereas the IRI-based roughness or unevenness measure only takes @@ -265,7 +277,7 @@ message Lane // // Unit: [m] // - // \par References: + // \par References: // \li [1] SAYERS, M.W.; KARAMIHAS, S.M. Little Book of Profiling, // University of Michigan Transportation Research Institute, 1998. // \li [2] SCHNEIDER, R.: Modellierung der Wellenausbreitung fuer @@ -310,10 +322,10 @@ message LaneBoundary // reused from the previous \c BoundaryPoint in the sequence or set to // default values if there is none or it was never set. For dashed lines, // one \c BoundaryPoint has to be at the start and another at the end - // of each dashed line segment. For Botts' dots lines, one + // of each dashed line segment. For Botts' dots lines, one // \c BoundaryPoint position has to define each Botts' dot. // - // \attention For \c BoundaryPoint the same rules regarding maximum + // \attention For \c BoundaryPoint the same rules regarding maximum // distance and approximation error apply as for \c Lane::center_line. // repeated BoundaryPoint boundary_line = 2; @@ -327,7 +339,7 @@ message LaneBoundary optional Color color = 4; // The lane boundary type. - // There is no special representation for double lines, e.g. solid / solid + // There is no special representation for double lines, e.g. solid / solid // or dashed / solid. In such cases, each lane will define its own side of // the lane boundary. // @@ -337,46 +349,46 @@ message LaneBoundary // 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 (multiple 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; @@ -391,33 +403,33 @@ message LaneBoundary // 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 // actual physical markings at the respective position. // 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; @@ -441,7 +453,7 @@ message BoundaryPoint // \c BoundaryPoint . // Used for lines forming lane markings. // - // \note Field need not be set if it is defined previous. + // \note Field need not be set if it is defined previous. // See \c LaneBoundary. // optional double boundary_width = 2; diff --git a/osi_modelinternal.proto b/osi_modelinternal.proto index 0963401a1..093c702e2 100644 --- a/osi_modelinternal.proto +++ b/osi_modelinternal.proto @@ -43,27 +43,27 @@ message ModelInternalObject // 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 \c Vehicle. // OBJECT_TYPE_VEHICLE = 2; - + // Object of type \c MovingObject. // OBJECT_TYPE_MOVING = 3; - + // Object of type \c StationaryObject. // OBJECT_TYPE_STATIONARY = 4; - + // Object of type \c TrafficSign. // OBJECT_TYPE_TRAFFIC_SIGN = 5; - + // Object of type \c TrafficLight. // OBJECT_TYPE_TRAFFIC_LIGHT = 6; diff --git a/osi_object.proto b/osi_object.proto index affd11b25..dd122e26a 100644 --- a/osi_object.proto +++ b/osi_object.proto @@ -14,16 +14,16 @@ package osi; // coordinates is calculated as: base.position + R * bbcenter_to_rear (front) // for the host vehicle (R rotates from vehicle to world frame, i.e. inverse // orientation of base.orientation). -// +// // For all vehicles, including host vehicles, the position given in // base.position points to the center of the vehicle's bounding box. // -// The vehicle object coordinates are defined as x-axis is the direction from -// rear to front of the vehicle, y-axis corresponds to rear axle and z-axis +// The vehicle object coordinates are defined as x-axis is the direction from +// rear to front of the vehicle, y-axis corresponds to rear axle and z-axis // points to vehicle ceiling [1]. The coordinate system is right-handed. -// Therefore the positive y-axis points to the left of the vehicle. +// Therefore the positive y-axis points to the left of the vehicle. // -// \par References: +// \par References: // \li [1] DIN ISO 8855:2013-11 // message Vehicle @@ -49,15 +49,19 @@ message Vehicle optional bool host_vehicle = 5; // The vector pointing from the bounding box center point (base.position) to - // the middle (in x, y and z) of the rear axle under neutral load + // the middle (in x, y and z) of the rear axle under neutral load // conditions. In object coordinates. + // optional Vector3d bbcenter_to_rear = 6; // The IDs of the lanes that this vehicle is assigned to. // - // \note Might be multiple if the vehicle is switching lanes or moving from + // \note Might be multiple if the vehicle is switching lanes or moving from // one lane into another following lane. - repeated Identifier assigned_lanes = 7; + // + // \note OSI uses singular instead of plural for repeated field names. + // + repeated Identifier assigned_lane = 7; // Flag defining whether the vehicle has an attached trailer. // @@ -74,12 +78,12 @@ message Vehicle // \note Field need not be set if host_vehicle is set to false or use value // for non valid id. optional Identifier driver = 10; - + // The vector pointing from the bounding box center point (base.position) to - // the middle (in x, y and z) of the front axle under neutral load + // the middle (in x, y and z) of the front axle under neutral load // conditions. In object coordinates. optional Vector3d bbcenter_to_front = 11; - + // Static minimal distance in [m] of under-body plane to ground // surface plane (i.e. disregarding driving dynamic effects or road // surface effects) under neutral load conditions. Can be useful to @@ -94,27 +98,27 @@ message Vehicle // 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; - + // Vehicle is a truck, bus, or large van. // TYPE_TRUCK = 3; - + // Vehicle is a motorbike or moped. // TYPE_MOTORBIKE = 4; - + // Vehicle is a bicycle (without motor and specific lights). // TYPE_BICYCLE = 5; - + // Vehicle is a trailer (possibly attached to another vehicle). // TYPE_TRAILER = 6; @@ -164,23 +168,23 @@ message Vehicle // 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; - + // Indicators are off. // INDICATOR_STATE_OFF = 2; - + // Left indicator is on. // INDICATOR_STATE_LEFT = 3; - + // Right indicator is on. // INDICATOR_STATE_RIGHT = 4; - + // Hazard/warning light, i.e. both indicators, are on. // INDICATOR_STATE_WARNING = 5; @@ -193,15 +197,15 @@ message Vehicle // Light state is unknown (must not be used in ground truth). // GENERIC_LIGHT_STATE_UNKNOWN = 0; - + // Other (unspecified but known) state of light. // GENERIC_LIGHT_STATE_OTHER = 1; - + // Light is off. // GENERIC_LIGHT_STATE_OFF = 2; - + // Light is on. // GENERIC_LIGHT_STATE_ON = 3; @@ -214,19 +218,19 @@ message Vehicle // 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 lights are on with extra bright intensity (indicating // stronger braking). BRAKE_LIGHT_STATE_STRONG = 4; @@ -260,15 +264,15 @@ message MovingObject // 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; - + // Object is a pedestrian. // TYPE_PEDESTRIAN = 2; - + // Object is an animal. // TYPE_ANIMAL = 3; @@ -276,8 +280,8 @@ message MovingObject } // -// \brief A simulated object that is neither a moving object (vehicle or -// \c MovingObject e.g. pedestrian or animal) nor a stationary object +// \brief A simulated object that is neither a moving object (vehicle or +// \c MovingObject e.g. pedestrian or animal) nor a stationary object // (traffic sign, traffic light). // // \c StationaryObject excludes traffic lights and traffic signs @@ -303,27 +307,27 @@ message StationaryObject // 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 55195fae4..f4dea97f8 100644 --- a/osi_occupant.proto +++ b/osi_occupant.proto @@ -36,45 +36,45 @@ message Occupant // 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 position is in the back row, left seat. // SEAT_BACK_LEFT = 5; - + // Seat position is in the back row, right seat. // SEAT_BACK_RIGHT = 6; - + // Seat position is in the back row, middle seat. // 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 position is in the third row, middle seat. // SEAT_THIRD_ROW_MIDDLE = 10; @@ -87,16 +87,16 @@ message Occupant // 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; - + // Hands are not on the steering wheel. // STEERING_CONTROL_NO_HAND = 2; - + // One hand is on the steering wheel. Whether it is the left or right // hand is unspecified or unknown. // @@ -104,15 +104,15 @@ message Occupant // steering wheel, this value should be used. // STEERING_CONTROL_ONE_HAND = 3; - + // Both hands are on the steering wheel. // STEERING_CONTROL_BOTH_HANDS = 4; - + // Only left hand is on the steering wheel. // STEERING_CONTROL_LEFT_HAND = 5; - + // Only right hand is on the steering wheel. // STEERING_CONTROL_RIGHT_HAND = 6; diff --git a/osi_sensordata.proto b/osi_sensordata.proto index 900aa1003..de3d5cec7 100644 --- a/osi_sensordata.proto +++ b/osi_sensordata.proto @@ -15,17 +15,17 @@ import "osi_hostvehicledata.proto"; package osi; // -// \brief The virtual sensor information derived from \c GroundTruth and +// \brief The virtual sensor information derived from \c GroundTruth and // potentially processed by sensor-models. // -// The virtual sensor information is supposed to imitate the output of a real -// sensor. All information regarding the environment is given with respect to -// the sensor coordinate system specified in \c SensorData::mounting_position. -// When simulating multiple sensors, each sensor has an individual copy of the +// The virtual sensor information is supposed to imitate the output of a real +// sensor. All information regarding the environment is given with respect to +// the sensor coordinate system specified in \c SensorData::mounting_position. +// When simulating multiple sensors, each sensor has an individual copy of the // \c SensorData interface. This allows an independent treatment of the sensors. // message SensorData -{ +{ // The ID of the sensor at host vehicle's mounting_position. // // This ID can equal \c SensorDetectionHeader::sensor_id, if \c SensorData @@ -65,43 +65,43 @@ message SensorData // This is the ground truth that is provided to the sensor model by the // simulation environment. // \note Should be used as constant in the sensor models. - // + // optional GroundTruth global_ground_truth = 3; - + // Sensor view w.r.t. the sensor coordinate system // // This provides additional data to the sensor model as configured in // the sensor input configuration. All data is relative to the sensor // both in terms of the coordinate system, as well as the content. // \note Should be used as constant in the sensor models. - // + // optional SensorView sensor_view = 4; - + // The ID of the host vehicle in the ground_truth data. - // + // optional Identifier host_vehicle_id = 5; - - // Mounting position of the sensor (origin and orientation of the sensor - // frame). Both origin and orientation are given in and with respect to the + + // Mounting position of the sensor (origin and orientation of the sensor + // frame). Both origin and orientation are given in and with respect to the // host vehicle coordinate system (see: \c Vehicle vehicle reference // point) [1]. // - // The sensor frame's x-axis is pointing in the central viewing direction of - // the sensor. It is the angle bisector of the sensor's horizontal and - // vertical field of view. The terms horizontal and vertical must be - // understood as names for the two principal planes of the sensor's field of + // The sensor frame's x-axis is pointing in the central viewing direction of + // the sensor. It is the angle bisector of the sensor's horizontal and + // vertical field of view. The terms horizontal and vertical must be + // understood as names for the two principal planes of the sensor's field of // view (relative to the sensor frame's orientation), which do not have to - // be horizontal or vertical in the strict sense of being parallel or + // be horizontal or vertical in the strict sense of being parallel or // perpendicular to the local gravitational vector. The horizontal field // of view defines the sensor frame's xy-plane and the vertical field - // of view defines the xz-plane. The sensor frame is right-handed and the + // of view defines the xz-plane. The sensor frame is right-handed and the // z-axis is pointing in an upward direction. // // The sensor frame uses cartesian coordinates. The sensor frame's origin is - // identical to sensor detection frame's origin. Detections are defined in + // identical to sensor detection frame's origin. Detections are defined in // the sensor detection frame which uses e.g. spherical coordinates. // - // \par References: + // \par References: // \li [1] DIN ISO 8855:2013-11 // optional MountingPosition mounting_position = 6; @@ -116,79 +116,95 @@ message SensorData // \c SensorData::timestamp for a detailed discussion. This value is also // the upper bound to the \c DetectedObjectHeader::measurement_time and the // feature data \c SensorDetectionHeader::measurement_time fields. - // + // optional Timestamp last_measurement_time = 8; // General information about the \c DetectedObject . - // + // optional DetectedEntityHeader object_header = 100; - + // The list of objects detected by the sensor as perceived by the sensor. // + // \note OSI uses singular instead of plural for repeated field names. + // repeated DetectedObject object = 9; - + // General information about the \c DetectedTrafficSign . - // + // optional DetectedEntityHeader traffic_sign_header = 101; // The list of traffic signs detected by the sensor // + // \note OSI uses singular instead of plural for repeated field names. + // repeated DetectedTrafficSign traffic_sign = 10; - + // General information about the \c DetectedTrafficLight . - // + // optional DetectedEntityHeader traffic_light_header = 102; // The list of traffic lights detected by the sensor - // + // + // \note OSI uses singular instead of plural for repeated field names. + // repeated DetectedTrafficLight traffic_light = 11; // General information about the \c DetectedRoadMarking . - // + // optional DetectedEntityHeader road_marking_header = 103; // The list of road marking detected by the sensor. // This excludes lane boundary markings. // + // \note OSI uses singular instead of plural for repeated field names. + // repeated DetectedRoadMarking road_marking = 12; - + // General information about the \c DetectedLane . - // + // optional DetectedEntityHeader lane_header = 104; // The list of lane detected by the sensor - // + // + // \note OSI uses singular instead of plural for repeated field names. + // repeated DetectedLane lane = 13; - + // General information about the \c DetectedLaneBoundary . - // + // optional DetectedEntityHeader lane_boundary_header = 105; // The list of lane boundary markings detected by the sensor. // + // \note OSI uses singular instead of plural for repeated field names. + // repeated DetectedLaneBoundary lane_boundary = 14; // General information about the \c DetectedLandmark . - // - optional DetectedEntityHeader landmarks_header = 1000; + // + optional DetectedEntityHeader landmark_header = 1000; // The list of landmarks detected by the sensor. // - repeated DetectedLandmark landmarks = 1001; - + // \note OSI uses singular instead of plural for repeated field names. + // + repeated DetectedLandmark landmark = 1001; + // General information about the \c DetectedOccupant . - // + // optional DetectedEntityHeader occupant_header = 106; // The list of occupants of the host vehicle - // + // + // \note OSI uses singular instead of plural for repeated field names. + // repeated DetectedOccupant occupant = 16; // The ID of the lane the host vehicle travels on in the DetectedLane data, // relative to the sensor. // optional Identifier host_vehicle_lane_id = 15; - + // Low level feature data interface. // // Low Level feature data is optionally provided by sensor models that @@ -196,7 +212,7 @@ message SensorData // object hypothesis and tracking. // optional FeatureData feature_data = 17; - + // Host Vehicle Data // // Host vehicle data is data that the host vehicle knows about itself, diff --git a/osi_sensorview.proto b/osi_sensorview.proto index 8d036be71..4a97683d7 100644 --- a/osi_sensorview.proto +++ b/osi_sensorview.proto @@ -64,7 +64,9 @@ message RadarSensorView // This field includes one entry for each ray, in left-to-right, // top-to-bottom order (think scan lines in a TV). // - repeated Reflection reflections = 2; + // \note OSI uses singular instead of plural for repeated field names. + // + repeated Reflection reflection = 2; // // \brief Definition of the radar reflection. @@ -135,7 +137,9 @@ message LidarSensorView // This field includes one entry for each ray, in left-to-right, // top-to-bottom order (think scan lines in a TV). // - repeated Reflection reflections = 2; + // \note OSI uses singular instead of plural for repeated field names. + // + repeated Reflection reflection = 2; // // \brief Definition of the lidar reflection. From 8c7c9460dbe9fc93a8b8de9ff2192bc707069dc3 Mon Sep 17 00:00:00 2001 From: carsten-kuebler <32508295+carsten-kuebler@users.noreply.github.com> Date: Tue, 27 Mar 2018 08:54:16 +0200 Subject: [PATCH 18/29] All Identifier field names with postfix _id Missing postfix _id added. --- osi_object.proto | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osi_object.proto b/osi_object.proto index dd122e26a..b216645ac 100644 --- a/osi_object.proto +++ b/osi_object.proto @@ -61,7 +61,7 @@ message Vehicle // // \note OSI uses singular instead of plural for repeated field names. // - repeated Identifier assigned_lane = 7; + repeated Identifier assigned_lane_id = 7; // Flag defining whether the vehicle has an attached trailer. // @@ -77,7 +77,7 @@ message Vehicle // // \note Field need not be set if host_vehicle is set to false or use value // for non valid id. - optional Identifier driver = 10; + optional Identifier driver_id = 10; // The vector pointing from the bounding box center point (base.position) to // the middle (in x, y and z) of the front axle under neutral load From d02b5a105fa33724aa782d3c94185418755eb32c Mon Sep 17 00:00:00 2001 From: carsten-kuebler <32508295+carsten-kuebler@users.noreply.github.com> Date: Tue, 27 Mar 2018 13:12:31 +0200 Subject: [PATCH 19/29] Rename EstimatedXXX messages to DetectedXXXData. --- osi_datarecording.proto | 6 ++---- osi_detectedlandmark.proto | 30 +++++++++++++++--------------- osi_detectedoccupant.proto | 6 +++--- 3 files changed, 20 insertions(+), 22 deletions(-) diff --git a/osi_datarecording.proto b/osi_datarecording.proto index ebdcf6437..fd8380135 100644 --- a/osi_datarecording.proto +++ b/osi_datarecording.proto @@ -29,9 +29,7 @@ message SensorDataList { // List of sensor data for multiple sensors at a specific timestep. // - // \note OSI uses singular instead of plural for repeated field names. - // - repeated SensorData sensor = 1; + repeated SensorData sensor_data = 1; } // @@ -44,5 +42,5 @@ message SensorDataSeriesList // // \note OSI uses singular instead of plural for repeated field names. // - repeated SensorDataSeries sensor = 1; + repeated SensorDataSeries sensor_data_series = 1; } diff --git a/osi_detectedlandmark.proto b/osi_detectedlandmark.proto index ef553be56..e3b11c01b 100644 --- a/osi_detectedlandmark.proto +++ b/osi_detectedlandmark.proto @@ -24,15 +24,15 @@ message DetectedTrafficSign // optional Identifier ground_truth_id = 3; - // The main sign as estimated by the sensor. + // The main sign as detected by the sensor. // - optional EstimatedMainSign main_sign = 4; + optional DetectedMainSignData main_sign = 4; - // A list of additional supplementary sign(s) as estimated by the sensor. + // A list of additional supplementary sign(s) as detected by the sensor. // // \note OSI uses singular instead of plural for repeated field names. // - repeated EstimatedSupplementarySign supplementary_sign = 5; + repeated DetectedSupplementarySignData supplementary_sign = 5; // The estimated probability that this traffic sign with all supplementary // signs really exists, not based on history. @@ -65,7 +65,7 @@ message DetectedTrafficSign // // \brief Candidates for a detected sign as estimated by the sensor. // - message EstimatedMainSign + message DetectedMainSignData { // A list of candidates for this traffic sign as estimated by the // sensor. @@ -182,7 +182,7 @@ message DetectedTrafficSign // \brief Candidates for all detected supplementary signs of one traffic // sign as estimated by the sensor. // - message EstimatedSupplementarySign + message DetectedSupplementarySignData { // The definition of one of more supplementary signs that together // define this candidate. @@ -255,9 +255,9 @@ message DetectedTrafficLight // optional Identifier ground_truth_id = 3; - // The main sign as estimated by the sensor. + // The main sign as detected by the sensor. // - optional EstimatedTrafficLight traffic_light = 4; + optional DetectedTrafficLightData traffic_light = 4; // Determines for which directions the traffic light applies. // @@ -297,7 +297,7 @@ message DetectedTrafficLight // \brief Candidates for a detected traffic light as estimated by the // sensor. // - message EstimatedTrafficLight + message DetectedTrafficLightData { // A list of candidates for this traffic light as estimated by the // sensor. @@ -414,9 +414,9 @@ message DetectedRoadMarking // optional Identifier ground_truth_id = 3; - // The road marking as estimated by the sensor. + // The road marking as detected by the sensor. // - optional EstimatedRoadMarking road_marking = 4; + optional DetectedRoadMarkingData road_marking = 4; // The estimated probability that this road marking really exists, not based // on history. @@ -450,7 +450,7 @@ message DetectedRoadMarking // \brief Candidates for a detected traffic light as estimated by the // sensor. // - message EstimatedRoadMarking + message DetectedRoadMarkingData { // A list of candidates for this road marking as estimated by the // sensor. @@ -513,9 +513,9 @@ message DetectedLandmark // repeated Identifier ground_truth_id = 2; - // The landmark as estimated by the sensor. + // The landmark as detected by the sensor. // - optional EstimatedLandmark landmark = 3; + optional DetectedLandmarkData landmark = 3; // The estimated probability that this landmark really exists, not based // on history. @@ -542,7 +542,7 @@ message DetectedLandmark // \brief Candidates for a detected Landmark as estimated by the // sensor. // - message EstimatedLandmark + message DetectedLandmarkData { // A list of candidates for this landmark as estimated by the sensor. // diff --git a/osi_detectedoccupant.proto b/osi_detectedoccupant.proto index 48d13f361..0b3721ca8 100644 --- a/osi_detectedoccupant.proto +++ b/osi_detectedoccupant.proto @@ -22,9 +22,9 @@ message DetectedOccupant // optional Identifier ground_truth_id = 4; - // The occupant as estimated by the sensor. + // The occupant as detected by the sensor. // - optional EstimatedOccupant occupant = 5; + optional DetectedOccupantData occupant = 5; // The estimated probability that this occupant really exists, not // based on history. @@ -50,7 +50,7 @@ message DetectedOccupant // // \brief Candidates for a detected occupant as estimated by the sensor. // - message EstimatedOccupant + message DetectedOccupantData { // A list of candidates for this occupant as estimated by the // sensor. From 672deb8d3d9330b732a8ea032b00ad2feb69279d Mon Sep 17 00:00:00 2001 From: carsten-kuebler <32508295+carsten-kuebler@users.noreply.github.com> Date: Tue, 27 Mar 2018 17:07:33 +0200 Subject: [PATCH 20/29] More DetectedXXX messages unified And documentation review. --- osi_datarecording.proto | 4 +- osi_detectedlandmark.proto | 74 +++++++++++-------- osi_detectedlane.proto | 110 +++++++++++++++++++---------- osi_detectedoccupant.proto | 15 ++-- osi_environment.proto | 4 +- osi_lane.proto | 96 +++++++++++++------------ osi_sensordata.proto | 20 +++--- osi_sensorinputconfiguration.proto | 26 +++---- 8 files changed, 207 insertions(+), 142 deletions(-) diff --git a/osi_datarecording.proto b/osi_datarecording.proto index fd8380135..44fef0704 100644 --- a/osi_datarecording.proto +++ b/osi_datarecording.proto @@ -29,7 +29,7 @@ message SensorDataList { // List of sensor data for multiple sensors at a specific timestep. // - repeated SensorData sensor_data = 1; + repeated SensorData sensor = 1; } // @@ -42,5 +42,5 @@ message SensorDataSeriesList // // \note OSI uses singular instead of plural for repeated field names. // - repeated SensorDataSeries sensor_data_series = 1; + repeated SensorDataSeries sensor = 1; } diff --git a/osi_detectedlandmark.proto b/osi_detectedlandmark.proto index e3b11c01b..b10733b08 100644 --- a/osi_detectedlandmark.proto +++ b/osi_detectedlandmark.proto @@ -26,13 +26,13 @@ message DetectedTrafficSign // The main sign as detected by the sensor. // - optional DetectedMainSignData main_sign = 4; + optional EstimatedMainSign main_sign = 4; // A list of additional supplementary sign(s) as detected by the sensor. // // \note OSI uses singular instead of plural for repeated field names. // - repeated DetectedSupplementarySignData supplementary_sign = 5; + repeated EstimatedSupplementarySign supplementary_sign = 5; // The estimated probability that this traffic sign with all supplementary // signs really exists, not based on history. @@ -65,14 +65,14 @@ message DetectedTrafficSign // // \brief Candidates for a detected sign as estimated by the sensor. // - message DetectedMainSignData + message EstimatedMainSign { // A list of candidates for this traffic sign as estimated by the // sensor. // // \note OSI uses singular instead of plural for repeated field names. // - repeated CandidateSign candidate = 1; + repeated CandidateMainSign candidate = 1; // The root mean squared error of the base parameters of the detected // traffic sign. \c TrafficSign::base has to be identical for @@ -88,21 +88,21 @@ message DetectedTrafficSign // \brief A candidate for a detected traffic sign as estimated by the // sensor. // - message CandidateSign + message CandidateMainSign { - // The definition of the candidate's properties. - // The sign.id values of all CandidateSigns within one - // \c DetectedTrafficSign correspond to the tracking ID and must be - // identical. + // The definition of one main sign that defines this candidate. // - optional TrafficSign.MainSign sign = 1; + // \note IDs, which are referenced in this message, usually + // reference to \c DetectedXXX::tracking_id IDs. + // + optional TrafficSign.MainSign main_sign = 1; // The estimated probability that this candidate is the true value. - // The sum of all \c #candidate_probability must be one. + // The sum of all \c #probability must be one. // // Range: [0,1] // - optional double candidate_probability = 2; + optional double probability = 2; // The amount of time that this detected object has been currently // observed/tracked. @@ -182,7 +182,7 @@ message DetectedTrafficSign // \brief Candidates for all detected supplementary signs of one traffic // sign as estimated by the sensor. // - message DetectedSupplementarySignData + message EstimatedSupplementarySign { // The definition of one of more supplementary signs that together // define this candidate. @@ -215,15 +215,18 @@ message DetectedTrafficSign // The definition of one of more supplementary signs that together // define this candidate. // - optional TrafficSign.SupplementarySign sign = 1; + // \note IDs, which are referenced in this message, usually + // reference to \c DetectedXXX::tracking_id IDs. + // + optional TrafficSign.SupplementarySign supplementary_sign = 1; // The estimated probability that this candidate is the true value. - // The sum of all \c #candidate_probability of one supplementary + // The sum of all \c #probability of one supplementary // sign must be one. // // Range: [0,1] // - optional double candidate_probability = 2; + optional double probability = 2; // The amount of time that this detected object has been currently // observed/tracked. @@ -257,7 +260,7 @@ message DetectedTrafficLight // The main sign as detected by the sensor. // - optional DetectedTrafficLightData traffic_light = 4; + optional EstimatedTrafficLight traffic_light = 4; // Determines for which directions the traffic light applies. // @@ -297,7 +300,7 @@ message DetectedTrafficLight // \brief Candidates for a detected traffic light as estimated by the // sensor. // - message DetectedTrafficLightData + message EstimatedTrafficLight { // A list of candidates for this traffic light as estimated by the // sensor. @@ -320,14 +323,17 @@ message DetectedTrafficLight { // The definition of one traffic light that define this candidate. // + // \note IDs, which are referenced in this message, usually + // reference to \c DetectedXXX::tracking_id IDs. + // optional TrafficLight traffic_light = 1; // The estimated probability that this candidate is the true value. - // The sum of all \c #candidate_probability must be one. + // The sum of all \c #probability must be one. // // Range: [0,1] // - optional double candidate_probability = 2; + optional double probability = 2; // The amount of time that this detected object has been currently // observed/tracked. @@ -416,7 +422,7 @@ message DetectedRoadMarking // The road marking as detected by the sensor. // - optional DetectedRoadMarkingData road_marking = 4; + optional EstimatedRoadMarking road_marking = 4; // The estimated probability that this road marking really exists, not based // on history. @@ -450,7 +456,7 @@ message DetectedRoadMarking // \brief Candidates for a detected traffic light as estimated by the // sensor. // - message DetectedRoadMarkingData + message EstimatedRoadMarking { // A list of candidates for this road marking as estimated by the // sensor. @@ -466,20 +472,24 @@ message DetectedRoadMarking optional BaseStationary base_rmse = 2; // - // \brief A candidate for a detected road marking as estimated by the sensor. + // \brief A candidate for a detected road marking as estimated by the + // sensor. // message CandidateRoadMarking { // The description of the road marking. // + // \note IDs, which are referenced in this message, usually + // reference to \c DetectedXXX::tracking_id IDs. + // optional RoadMarking road_marking = 1; // The estimated probability that this candidate is the true value. - // The sum of all \c #candidate_probability must be one. + // The sum of all \c #probability must be one. // // Range: [0,1] // - optional double candidate_probability = 2; + optional double probability = 2; // The amount of time that this detected object has been currently // observed/tracked. @@ -515,7 +525,7 @@ message DetectedLandmark // The landmark as detected by the sensor. // - optional DetectedLandmarkData landmark = 3; + optional EstimatedLandmark landmark = 3; // The estimated probability that this landmark really exists, not based // on history. @@ -542,7 +552,7 @@ message DetectedLandmark // \brief Candidates for a detected Landmark as estimated by the // sensor. // - message DetectedLandmarkData + message EstimatedLandmark { // A list of candidates for this landmark as estimated by the sensor. // @@ -557,20 +567,24 @@ message DetectedLandmark optional BaseStationary base_rmse = 2; // - // \brief A candidate for a detected landmark as estimated by the sensor. + // \brief A candidate for a detected landmark as estimated by the + // sensor. // message CandidateLandmark { // The description of the landmark. // + // \note IDs, which are referenced in this message, usually + // reference to \c DetectedXXX::tracking_id IDs. + // optional Landmark landmark = 1; // The estimated probability that this candidate is the true value. - // The sum of all \c #candidate_probability must be one. + // The sum of all \c #probability must be one. // // Range: [0,1] // - optional double candidate_probability = 2; + optional double probability = 2; // The amount of time that this detected object has been currently // observed/tracked. diff --git a/osi_detectedlane.proto b/osi_detectedlane.proto index 8f69a02dd..25d4daae7 100644 --- a/osi_detectedlane.proto +++ b/osi_detectedlane.proto @@ -40,6 +40,9 @@ message DetectedLane // The detected lane. // + // \note IDs, which is referenced in this message, usually reference to + // \c DetectedXXX::tracking_id IDs. + // optional Lane lane = 4; // The estimated probability that this lane really exists, not based on @@ -82,21 +85,9 @@ message DetectedLaneBoundary // optional Identifier ground_truth_id = 3; - // The amount of time that this detected object has been currently - // observed/tracked. - // - // Unit: [s] - // - optional double age = 1000; - - // State of the measurement. Lane boundary measured in the current image or - // lane boundary predicted (no measurement in current image). - // - optional MeasurementState measurement_state = 5; - - // The basic measured lane boundary. + // The lane boundary as detected by the sensor. // - optional LaneBoundary lane_boundary = 4; + optional EstimatedLaneBoundary lane_boundary = 4; // The estimated probability that this lane boundary really exists, not // based on history. @@ -106,28 +97,6 @@ message DetectedLaneBoundary // optional double existence_probability = 6; - // Confidence of the classified lane boundary type. - // - optional double type_confidence = 7; - - // Confidence of the classified lane marker color. - // - optional double color_confidence = 8; - - // The root mean squared error of the \c BoundaryPoint information from a - // \c LaneBoundary. - // For each \c #lane_boundary \c LaneBoundary::boundary_line point exact - // one \c #boundary_line_points_rmse rmse information exist. - // - repeated BoundaryPoint boundary_line_points_rmse = 9; - - // Confidence of the segments of the \c BoundaryPoint information from a - // \c LaneBoundary. - // For each \c #lane_boundary \c LaneBoundary::boundary_line point exact - // one \c #boundary_line_points_confidences confidence value is specified. - // - repeated double boundary_line_points_confidences = 10; - // A list of sensors which detected this detected entity. // // If \c SensorData has detected entities and all detections are missing, @@ -141,4 +110,73 @@ message DetectedLaneBoundary // \note OSI uses singular instead of plural for repeated field names. // repeated Identifier sensor_id = 11; + + // + // \brief Candidates for a detected lane boundary as estimated by the + // sensor. + // + message EstimatedLaneBoundary + { + // A list of candidates for this lane boundary as estimated by the + // sensor. + // + // \note OSI uses singular instead of plural for repeated field names. + // + repeated CandidateLaneBoundary candidate = 1; + + // The root mean squared error of the \c LaneBoundary.BoundaryPoint + // information from a \c LaneBoundary. + // For each \c #lane_boundary \c LaneBoundary::boundary_line point exact + // one \c #boundary_line_points_rmse rmse information exist. + // + repeated LaneBoundary.BoundaryPoint boundary_line_points_rmse = 2; + + // Confidence of the segments of the \c LaneBoundary.BoundaryPoint + // information from a \c LaneBoundary. + // For each \c #lane_boundary \c LaneBoundary::boundary_line point exact + // one \c #boundary_line_points_confidences confidence value is + // specified. + // + repeated double boundary_line_points_confidences = 3; + + // + // \brief A candidate for a detected traffic sign as estimated by the + // sensor. + // + message CandidateLaneBoundary + { + // The definition of one lane boundary that defines this candidate. + // + // \note IDs, which are referenced in this message, usually + // reference to \c DetectedXXX::tracking_id IDs. + // + optional LaneBoundary lane_boundary = 1; + + // The estimated probability that this candidate is the true value. + // The sum of all \c #probability must be one. + // + // Range: [0,1] + // + optional double probability = 2; + + // The amount of time that this detected object has been currently + // observed/tracked. + // + // Unit: [s] + // + optional double age = 3; + + // The measurement state. + // + optional MeasurementState measurement_state = 4; + + // Confidence of the classified lane boundary type. + // + optional double type_confidence = 5; + + // Confidence of the classified lane marker color. + // + optional double color_confidence = 6; + } + } } diff --git a/osi_detectedoccupant.proto b/osi_detectedoccupant.proto index 0b3721ca8..61da11fc8 100644 --- a/osi_detectedoccupant.proto +++ b/osi_detectedoccupant.proto @@ -24,7 +24,7 @@ message DetectedOccupant // The occupant as detected by the sensor. // - optional DetectedOccupantData occupant = 5; + optional EstimatedOccupant occupant = 5; // The estimated probability that this occupant really exists, not // based on history. @@ -50,20 +50,20 @@ message DetectedOccupant // // \brief Candidates for a detected occupant as estimated by the sensor. // - message DetectedOccupantData + message EstimatedOccupant { // A list of candidates for this occupant as estimated by the // sensor. // // \note OSI uses singular instead of plural for repeated field names. // - repeated CandidateOccupant candidate = 4; + repeated CandidateOccupant candidate = 1; // The root mean squared error of the base parameters of the detected // occupant's geometry. \c Occupant::base has to be identical // for all \c #candidates occupants. // - optional BaseStationary base_rmse = 5; + optional BaseStationary base_rmse = 2; // // \brief A candidate for a detected occupant as estimated by @@ -73,14 +73,17 @@ message DetectedOccupant { // The detected vehicle occupant. // + // \note IDs, which are referenced in this message, usually + // reference to \c DetectedXXX::tracking_id IDs. + // optional Occupant occupant = 1; // The estimated probability that this candidate is the true value. - // The sum of all \c #candidate_probability must be one. + // The sum of all \c #probability must be one. // // Range: [0,1] // - optional double candidate_probability = 2; + optional double probability = 2; // The amount of time that this detected object has been currently // observed/tracked. diff --git a/osi_environment.proto b/osi_environment.proto index c98f58c48..5ee3c07d5 100644 --- a/osi_environment.proto +++ b/osi_environment.proto @@ -44,7 +44,9 @@ message EnvironmentalConditions // (I = Intensity of precipitation in mm per hour [mm/h]) // // \par References: - // \li [1] PAULAT, Marcus, et al. A gridded dataset of hourly precipitation in Germany: Its construction, climatology and application. Meteorologische Zeitschrift, 2008, 17. Jg. Nr. 6, S. 719-732. + // \li [1] PAULAT, Marcus, et al. A gridded dataset of hourly precipitation + // in Germany: Its construction, climatology and application. + // Meteorologische Zeitschrift, 2008, 17. Jg. Nr. 6, S. 719-732. // enum Precipitation { diff --git a/osi_lane.proto b/osi_lane.proto index bd56531dd..91e46400c 100644 --- a/osi_lane.proto +++ b/osi_lane.proto @@ -55,10 +55,10 @@ message Lane // // \image html line_approximation_error.png "Approximation error as green line." // - // \note The \c #center_line is defined only for \c #type = + // \note The \c #centerline is defined only for \c #type = // \c #TYPE_DRIVING and one \c #lane_pairing pair. // - repeated Vector3d center_line = 3; + repeated Vector3d centerline = 3; // Definition of the intended driving direction. // @@ -68,10 +68,10 @@ message Lane // false means driving direction is according to descending storage order of // center line points. // - // \note The \c #center_line_is_driving_direction is defined for \c #type = + // \note The \c #centerline_is_driving_direction is defined for \c #type = // \c #TYPE_DRIVING . // - optional bool center_line_is_driving_direction = 4; + optional bool centerline_is_driving_direction = 4; // List of IDs of all lane segments that are directly adjacent to the lane // on the left side (w.r.t. intended driving direction). Note that lengths @@ -115,8 +115,12 @@ message Lane // repeated LanePairing lane_pairing = 7; - // The ID of the right boundary ID of the right lane ID w.r.t. the driving - // direction. Empty for intersections. + // The right adjacent lane boundaries \c #right_lane_boundary_id may only be + // shared with/as the left adjacent lane boundaries + // \c #left_lane_boundary_id of the nearest right adjacent lane + // \c #right_adjacent_lane_id. + // + // \note Empty for intersections. // // \note The \c #right_lane_boundary_id is undefined for \c #type = // \c #TYPE_INTERSECTION . @@ -125,8 +129,12 @@ message Lane // repeated Identifier right_lane_boundary_id = 8; - // The ID of the left boundary ID of the left lane ID w.r.t. the driving - // direction. Empty for intersections. + // The left adjacent lane boundaries \c #left_lane_boundary_id may only be + // shared with/as the right adjacent lane boundaries + // \c #right_lane_boundary_id of the nearest left adjacent lane + // \c #left_adjacent_lane_id. + // + // \note Empty for intersections. // // \note The \c #left_lane_boundary_id is undefined for \c #type = // \c #TYPE_INTERSECTION . @@ -135,7 +143,7 @@ message Lane // repeated Identifier left_lane_boundary_id = 9; - // The ID of the free boundary ID. + // The free boundaries which have no/unknown assignment to left/right. // // \note \c Lanes with \c #type = \c #TYPE_INTERSECTION use only free // lane boundaries. @@ -286,19 +294,19 @@ message Lane // optional double surface_texture = 6; } -} -// \brief The lane ID pairings of antecessor and successor lanes. -// -message LanePairing -{ - // The antecessor lane ID. + // \brief The lane ID pairings of antecessor and successor lanes. // - optional Identifier antecessor_lane_id = 1; + message LanePairing + { + // The antecessor lane ID. + // + optional Identifier antecessor_lane_id = 1; - // The successor lane ID. - // - optional Identifier successor_lane_id = 2; + // The successor lane ID. + // + optional Identifier successor_lane_id = 2; + } } // @@ -326,7 +334,7 @@ message LaneBoundary // \c BoundaryPoint position has to define each Botts' dot. // // \attention For \c BoundaryPoint the same rules regarding maximum - // distance and approximation error apply as for \c Lane::center_line. + // distance and approximation error apply as for \c Lane::centerline. // repeated BoundaryPoint boundary_line = 2; @@ -438,32 +446,32 @@ message LaneBoundary // COLOR_VIOLET = 8; } -} - -// -// \brief A single point of a lane boundary. -// -message BoundaryPoint -{ - // The position of the \c BoundaryPoint. - // - optional Vector3d position = 1; - // The overall width of the lane boundary at the position of the - // \c BoundaryPoint . - // Used for lines forming lane markings. // - // \note Field need not be set if it is defined previous. - // See \c LaneBoundary. + // \brief A single point of a lane boundary. // - optional double boundary_width = 2; + message BoundaryPoint + { + // The position of the \c BoundaryPoint. + // + optional Vector3d position = 1; - // The overall height of the lane boundary at the position of the - // \c BoundaryPoint . - // Used for guard rails, curbstone, or similar. - // - // \note Field need not be set if it is defined previous. - // See \c LaneBoundary . - // - optional double boundary_height = 3; + // The overall width of the lane boundary at the position of the + // \c BoundaryPoint . + // Used for lines forming lane markings. + // + // \note Field need not be set if it is defined previous. + // See \c LaneBoundary. + // + optional double width = 2; + + // The overall height of the lane boundary at the position of the + // \c BoundaryPoint . + // Used for guard rails, curbstone, or similar. + // + // \note Field need not be set if it is defined previous. + // See \c LaneBoundary . + // + optional double height = 3; + } } diff --git a/osi_sensordata.proto b/osi_sensordata.proto index de3d5cec7..0811eca12 100644 --- a/osi_sensordata.proto +++ b/osi_sensordata.proto @@ -60,7 +60,7 @@ message SensorData // optional Timestamp timestamp = 2; - // Ground truth w.r.t. global coordinate system + // Ground truth w.r.t. global coordinate system. // // This is the ground truth that is provided to the sensor model by the // simulation environment. @@ -68,7 +68,7 @@ message SensorData // optional GroundTruth global_ground_truth = 3; - // Sensor view w.r.t. the sensor coordinate system + // Sensor view w.r.t. the sensor coordinate system. // // This provides additional data to the sensor model as configured in // the sensor input configuration. All data is relative to the sensor @@ -111,9 +111,9 @@ message SensorData optional MountingPosition mounting_position_rmse = 7; // The timestamp of the last real-world measurement (e.g. GT input) that - // this set of sensor data takes into account. This in effect is the last + // this set of sensor data takes into account. This in effect is the last // time instance of reality the measurements correspond to. See field - // \c SensorData::timestamp for a detailed discussion. This value is also + // \c SensorData::timestamp for a detailed discussion. This value is also // the upper bound to the \c DetectedObjectHeader::measurement_time and the // feature data \c SensorDetectionHeader::measurement_time fields. // @@ -133,7 +133,7 @@ message SensorData // optional DetectedEntityHeader traffic_sign_header = 101; - // The list of traffic signs detected by the sensor + // The list of traffic signs detected by the sensor. // // \note OSI uses singular instead of plural for repeated field names. // @@ -143,7 +143,7 @@ message SensorData // optional DetectedEntityHeader traffic_light_header = 102; - // The list of traffic lights detected by the sensor + // The list of traffic lights detected by the sensor. // // \note OSI uses singular instead of plural for repeated field names. // @@ -153,7 +153,7 @@ message SensorData // optional DetectedEntityHeader road_marking_header = 103; - // The list of road marking detected by the sensor. + // The list of road markings detected by the sensor. // This excludes lane boundary markings. // // \note OSI uses singular instead of plural for repeated field names. @@ -164,7 +164,7 @@ message SensorData // optional DetectedEntityHeader lane_header = 104; - // The list of lane detected by the sensor + // The list of lanes detected by the sensor. // // \note OSI uses singular instead of plural for repeated field names. // @@ -194,7 +194,7 @@ message SensorData // optional DetectedEntityHeader occupant_header = 106; - // The list of occupants of the host vehicle + // The list of occupants of the host vehicle. // // \note OSI uses singular instead of plural for repeated field names. // @@ -213,7 +213,7 @@ message SensorData // optional FeatureData feature_data = 17; - // Host Vehicle Data + // Host Vehicle Data. // // Host vehicle data is data that the host vehicle knows about itself, // e.g. from location sensors, internal sensors and ECU bus data, etc., diff --git a/osi_sensorinputconfiguration.proto b/osi_sensorinputconfiguration.proto index 1a0af5f35..b789774cd 100644 --- a/osi_sensorinputconfiguration.proto +++ b/osi_sensorinputconfiguration.proto @@ -340,55 +340,55 @@ message CameraSensorInputConfiguration enum ChannelFormat { // Type of channel format is unknown (must not be used). // - FORMAT_UNKNOWN = 0; + CHANNEL_FORMAT_UNKNOWN = 0; // Single Luminance Channel UINT8 Linear. // - FORMAT_MONO_U8_LIN = 1; + CHANNEL_FORMAT_MONO_U8_LIN = 1; // Single Luminance Channel UINT16 Linear. // - FORMAT_MONO_U16_LIN = 2; + CHANNEL_FORMAT_MONO_U16_LIN = 2; // Single Luminance Channel UINT32 Linear. // - FORMAT_MONO_U32_LIN = 3; + CHANNEL_FORMAT_MONO_U32_LIN = 3; // Single Luminance Channel Single Precision FP Linear. // - FORMAT_MONO_F32_LIN = 4; + CHANNEL_FORMAT_MONO_F32_LIN = 4; // Packed RGB Channels (no padding) UINT8 Linear. // - FORMAT_RGB_U8_LIN = 5; + CHANNEL_FORMAT_RGB_U8_LIN = 5; // Packed RGB Channels (no padding) UINT16 Linear. // - FORMAT_RGB_U16_LIN = 6; + CHANNEL_FORMAT_RGB_U16_LIN = 6; // Packed RGB Channels (no padding) UINT32 Linear. // - FORMAT_RGB_U32_LIN = 7; + CHANNEL_FORMAT_RGB_U32_LIN = 7; // Packed RGB Channels (no padding) Single Precision FP Linear. // - FORMAT_RGB_F32_LIN = 8; + CHANNEL_FORMAT_RGB_F32_LIN = 8; // Bayer RGGB Channels UINT8 FP Linear. // - FORMAT_BAYER_BGGR_U8_LIN = 9; + CHANNEL_FORMAT_BAYER_BGGR_U8_LIN = 9; // Bayer RGGB Channels UINT16 FP Linear. // - FORMAT_BAYER_BGGR_U16_LIN = 10; + CHANNEL_FORMAT_BAYER_BGGR_U16_LIN = 10; // Bayer RGGB Channels UINT32 FP Linear. // - FORMAT_BAYER_BGGR_U32_LIN = 11; + CHANNEL_FORMAT_BAYER_BGGR_U32_LIN = 11; // Bayer RGGB Channels Single Precision FP Linear. // - FORMAT_BAYER_BGGR_F32_LIN = 12; + CHANNEL_FORMAT_BAYER_BGGR_F32_LIN = 12; // TBD: Further channel permutations and padding (e.g. RGBZ, // BGR, BAYER_RGGB/GBRG/GRBG/...), non-BAYER filters, non-linear From 179d4d8b8723aa8138f2efffd4340fe9c73bb304 Mon Sep 17 00:00:00 2001 From: Carlo van Driesten Date: Tue, 27 Mar 2018 18:37:42 +0200 Subject: [PATCH 21/29] removed tabs in osi_sensordata.proto --- osi_sensordata.proto | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/osi_sensordata.proto b/osi_sensordata.proto index 8ece442fe..f718b9eaf 100644 --- a/osi_sensordata.proto +++ b/osi_sensordata.proto @@ -147,7 +147,7 @@ message SensorData optional DetectedEntityHeader traffic_light_header = 12; // The list of traffic lights detected by the sensor. - // + // // \note OSI uses singular instead of plural for repeated field names. // repeated DetectedTrafficLight traffic_light = 13; @@ -159,7 +159,7 @@ message SensorData // The list of road markings detected by the sensor. // This excludes lane boundary markings. // - // \note OSI uses singular instead of plural for repeated field names. + // \note OSI uses singular instead of plural for repeated field names. // repeated DetectedRoadMarking road_marking = 15; @@ -169,7 +169,7 @@ message SensorData // The list of lane detected by the sensor // - // \note OSI uses singular instead of plural for repeated field names. + // \note OSI uses singular instead of plural for repeated field names. // repeated DetectedLane lane = 17; @@ -184,7 +184,7 @@ message SensorData // The list of lane boundary markings detected by the sensor. // - // \note OSI uses singular instead of plural for repeated field names. + // \note OSI uses singular instead of plural for repeated field names. // repeated DetectedLaneBoundary lane_boundary = 20; @@ -194,7 +194,7 @@ message SensorData // The list of landmarks detected by the sensor. // - // \note OSI uses singular instead of plural for repeated field names. + // \note OSI uses singular instead of plural for repeated field names. // repeated DetectedLandmark landmark = 22; @@ -204,7 +204,7 @@ message SensorData // The list of occupants of the host vehicle // - // \note OSI uses singular instead of plural for repeated field names. + // \note OSI uses singular instead of plural for repeated field names. // repeated DetectedOccupant occupant = 24; From 70d5b010cb661953781e1fdd3c3078cc9ca39629 Mon Sep 17 00:00:00 2001 From: Carlo van Driesten Date: Tue, 27 Mar 2018 18:58:25 +0200 Subject: [PATCH 22/29] fixed merge conflict in osi_sensorview.proto --- osi_sensorview.proto | 102 +++---------------------------------------- 1 file changed, 5 insertions(+), 97 deletions(-) diff --git a/osi_sensorview.proto b/osi_sensorview.proto index 3313c20fc..cc2823c66 100644 --- a/osi_sensorview.proto +++ b/osi_sensorview.proto @@ -49,13 +49,8 @@ message SensorView // sensor data). // optional Timestamp timestamp = 2; -<<<<<<< HEAD - - // Radar-Specific \c SensorView. -======= // The ID of the sensor at host vehicle's mounting_position. ->>>>>>> master // // This is the ID of the virtual sensor, to be used in its detected // object output; it is distinct from the IDs of its physical detectors, @@ -63,9 +58,6 @@ message SensorView // optional Identifier sensor_id = 3; -<<<<<<< HEAD - // Lidar-Specific \c SensorView. -======= // The virtual mounting position of the sensor (origin and orientation // of the sensor coordinate system) given in vehicle coordinates [1]. // The virtual position pertains to the sensor as a whole, regardless @@ -79,7 +71,6 @@ message SensorView // \arg \b x-direction of sensor coordinate system: sensor viewing direction // \arg \b z-direction of sensor coordinate system: sensor (up) // \arg \b y-direction of sensor coordinate system: perpendicular to x and z right hand system ->>>>>>> master // // \par References: // [1] DIN ISO 8855:2013-11 @@ -92,19 +83,11 @@ message SensorView // optional MountingPosition mounting_position = 4; -<<<<<<< HEAD - // Camera-Specific \c SensorView. -======= // The root mean squared error of the mounting position. ->>>>>>> master // optional MountingPosition mounting_position_rmse = 5; -<<<<<<< HEAD - // Ultrasonic-Specific \c SensorView. -======= // Host Vehicle Data ->>>>>>> master // // Host vehicle data is data that the host vehicle knows about itself, // e.g. from location sensors, internal sensors and ECU bus data, etc., @@ -150,16 +133,9 @@ message SensorView // // Radar specific sensor view data. // -<<<<<<< HEAD message RadarSensorView { // Radar Input Configuration valid at the time the data was created. -======= -// Radar-Specific Sensor View Data -message RadarSensorView -{ - // Radar View Configuration valid at the time the data was created ->>>>>>> master // optional RadarSensorViewConfiguration view_configuration = 1; @@ -173,15 +149,9 @@ message RadarSensorView repeated Reflection reflection = 2; // -<<<<<<< HEAD // \brief Definition of the radar reflection. // message Reflection -======= - // \brief The radar reflection. - // - message Reflection ->>>>>>> master { // Relative signal level of the reflection. // @@ -193,13 +163,8 @@ message RadarSensorView // Unit: [dB] // optional double signal_strength = 1; -<<<<<<< HEAD // Time of flight. -======= - - // Time of flight ->>>>>>> master // // This is the time of flight of the reflection, which is directly // proportional to the distance traveled. @@ -207,26 +172,16 @@ message RadarSensorView // Unit: [s] // optional double time_of_flight = 2; -<<<<<<< HEAD // Doppler shift. -======= - - // Doppler shift ->>>>>>> master // // Shift in frequency based on the specified TX frequency. // // Unit: [Hz] // optional double doppler_shift = 3; -<<<<<<< HEAD // TX horizontal angle (azimuth). -======= - - // TX horizontal angle (azimuth) ->>>>>>> master // // Horizontal angle of incidence of the source of the reflection // at the TX antenna. @@ -234,13 +189,8 @@ message RadarSensorView // Unit: [rad] // optional double source_horizontal_angle = 4; -<<<<<<< HEAD // TX vertical angle (elevation). -======= - - // TX vertical angle (elevation) ->>>>>>> master // // Vertical angle of incidence of the source of the reflection // at the TX antenna. @@ -256,24 +206,13 @@ message RadarSensorView // // Lidar specific sensor view data. // -<<<<<<< HEAD message LidarSensorView { - // Lidar Input Configuration valid at the time the data was created. + // Lidar View Configuration valid at the time the data was created. // - optional LidarSensorInputConfiguration lidar_sensor_input_configuration = 1; + optional LidarSensorViewConfiguration view_configuration = 1; // Ray Tracing Data. -======= -// Lidar-Specific Sensor View Data -message LidarSensorView -{ - // Lidar View Configuration valid at the time the data was created - // - optional LidarSensorViewConfiguration view_configuration = 1; - - // Ray Tracing Data ->>>>>>> master // // This field includes one entry for each ray, in left-to-right, // top-to-bottom order (think scan lines in a TV). @@ -297,13 +236,8 @@ message LidarSensorView // Unit: [dB] // optional double signal_strength = 1; -<<<<<<< HEAD // Time of flight. -======= - - // Time of flight ->>>>>>> master // // This is the time of flight of the reflection, which is directly // proportional to the distance traveled. @@ -311,13 +245,8 @@ message LidarSensorView // Unit: [s] // optional double time_of_flight = 2; -<<<<<<< HEAD // Doppler shift. -======= - - // Doppler shift ->>>>>>> master // // Shift in frequency based on the specified TX frequency. // @@ -332,25 +261,13 @@ message LidarSensorView // // Camera specific sensor view data. // -<<<<<<< HEAD message CameraSensorView { - // Camera Input Configuration valid at the time the data was created. + // Camera View Configuration valid at the time the data was created. // - optional CameraSensorInputConfiguration camera_sensor_input_configuration = 1; + optional CameraSensorViewConfiguration view_configuration = 1; // Raw Image Data. -======= -// Camera-Specific Sensor View Data -message CameraSensorView -{ - - // Camera View Configuration valid at the time the data was created - // - optional CameraSensorViewConfiguration view_configuration = 1; - - // Raw Image Data ->>>>>>> master // // The raw image data in the memory layout and order specified by the // camera sensor input configuration. @@ -361,19 +278,10 @@ message CameraSensorView // // \brief Definition of the ultrasonic sensor view. // -<<<<<<< HEAD // Ultrasonic specific sensor view data. message UltrasonicSensorView { // Ultrasonic Input Configuration valid at the time the data was created. -======= -// Ultrasonic-Specific Sensor View Data -message UltrasonicSensorView -{ - - // Ultrasonic View Configuration valid at the time the data was created ->>>>>>> master // optional UltrasonicSensorViewConfiguration view_configuration = 1; - -} +} \ No newline at end of file From 56d0c150c85ca618de88fed9798f398a7dd29b57 Mon Sep 17 00:00:00 2001 From: Carlo van Driesten Date: Tue, 27 Mar 2018 20:00:03 +0200 Subject: [PATCH 23/29] Fixed enum style, unknow=, other=, etc, --- osi_modelinternal.proto | 8 ++++++-- osi_object.proto | 3 ++- osi_sensorviewconfiguration.proto | 29 +++++++++++++++++------------ 3 files changed, 25 insertions(+), 15 deletions(-) diff --git a/osi_modelinternal.proto b/osi_modelinternal.proto index 093c702e2..aa760ca4e 100644 --- a/osi_modelinternal.proto +++ b/osi_modelinternal.proto @@ -40,9 +40,9 @@ message ModelInternalObject // enum ObjectType { - // Object is a ghost object and does not exist in ground truth. + // The object type is unknown. Value must not be used in ground truth. // - OBJECT_TYPE_GHOST = 0; + OBJECT_TYPE_UNKNOWN = 0; // Other (unspecified but known) type of object. // @@ -67,5 +67,9 @@ message ModelInternalObject // Object of type \c TrafficLight. // OBJECT_TYPE_TRAFFIC_LIGHT = 6; + + // Object is a ghost object and does not exist in ground truth. + // + OBJECT_TYPE_GHOST = 7; } } diff --git a/osi_object.proto b/osi_object.proto index b216645ac..d5891aab4 100644 --- a/osi_object.proto +++ b/osi_object.proto @@ -260,7 +260,8 @@ message MovingObject // Definition of object types. // - enum Type { + enum Type + { // Type of the object is unknown (must not be used in ground truth). // TYPE_UNKNOWN = 0; diff --git a/osi_sensorviewconfiguration.proto b/osi_sensorviewconfiguration.proto index 1a2168f3e..67eb05eed 100644 --- a/osi_sensorviewconfiguration.proto +++ b/osi_sensorviewconfiguration.proto @@ -508,54 +508,59 @@ message CameraSensorViewConfiguration // Type of channel format is unknown (must not be used). // FORMAT_UNKNOWN = 0; + + // Unspecified but known channel format. + // Consider proposing an additional format if using FORMAT_OTHER. + // + FORMAT_OTHER = 1; // Single Luminance Channel UINT8 Linear // - FORMAT_MONO_U8_LIN = 1; + FORMAT_MONO_U8_LIN = 2; // Single Luminance Channel UINT16 Linear // - FORMAT_MONO_U16_LIN = 2; + FORMAT_MONO_U16_LIN = 3; // Single Luminance Channel UINT32 Linear // - FORMAT_MONO_U32_LIN = 3; + FORMAT_MONO_U32_LIN = 4; // Single Luminance Channel Single Precision FP Linear // - FORMAT_MONO_F32_LIN = 4; + FORMAT_MONO_F32_LIN = 5; // Packed RGB Channels (no padding) UINT8 Linear // - FORMAT_RGB_U8_LIN = 5; + FORMAT_RGB_U8_LIN = 6; // Packed RGB Channels (no padding) UINT16 Linear // - FORMAT_RGB_U16_LIN = 6; + FORMAT_RGB_U16_LIN = 7; // Packed RGB Channels (no padding) UINT32 Linear // - FORMAT_RGB_U32_LIN = 7; + FORMAT_RGB_U32_LIN = 8; // Packed RGB Channels (no padding) Single Precision FP Linear // - FORMAT_RGB_F32_LIN = 8; + FORMAT_RGB_F32_LIN = 9; // Bayer RGGB Channels UINT8 FP Linear // - FORMAT_BAYER_BGGR_U8_LIN = 9; + FORMAT_BAYER_BGGR_U8_LIN = 10; // Bayer RGGB Channels UINT16 FP Linear // - FORMAT_BAYER_BGGR_U16_LIN = 10; + FORMAT_BAYER_BGGR_U16_LIN = 11; // Bayer RGGB Channels UINT32 FP Linear // - FORMAT_BAYER_BGGR_U32_LIN = 11; + FORMAT_BAYER_BGGR_U32_LIN = 12; // Bayer RGGB Channels Single Precision FP Linear // - FORMAT_BAYER_BGGR_F32_LIN = 12; + FORMAT_BAYER_BGGR_F32_LIN = 13; // TBD: Further channel permutations and padding (e.g. RGBZ, // BGR, BAYER_RGGB/GBRG/GRBG/...), non-BAYER filters, non-linear From 5d7725df442b00a6811a966ecf9350e857d082f2 Mon Sep 17 00:00:00 2001 From: carsten-kuebler <32508295+carsten-kuebler@users.noreply.github.com> Date: Tue, 27 Mar 2018 20:10:34 +0200 Subject: [PATCH 24/29] Reviewed Merge --- osi_sensordata.proto | 2 +- osi_sensorview.proto | 32 +++--- osi_sensorviewconfiguration.proto | 171 +++++++++++++++--------------- 3 files changed, 101 insertions(+), 104 deletions(-) diff --git a/osi_sensordata.proto b/osi_sensordata.proto index f718b9eaf..8f2f032a2 100644 --- a/osi_sensordata.proto +++ b/osi_sensordata.proto @@ -167,7 +167,7 @@ message SensorData // optional DetectedEntityHeader lane_header = 16; - // The list of lane detected by the sensor + // The list of lanes detected by the sensor // // \note OSI uses singular instead of plural for repeated field names. // diff --git a/osi_sensorview.proto b/osi_sensorview.proto index cc2823c66..108866cb3 100644 --- a/osi_sensorview.proto +++ b/osi_sensorview.proto @@ -29,7 +29,7 @@ package osi; // treatment of the sensors. // // Alternatively combined sensor models can also consume one combined -// \c SensorView, with either combined or seperate \c SensorData outputs, +// \c SensorView, with either combined or separate \c SensorData outputs, // depending on model architecture. // message SensorView @@ -133,7 +133,7 @@ message SensorView // // Radar specific sensor view data. // -message RadarSensorView +message RadarSensorView { // Radar Input Configuration valid at the time the data was created. // @@ -150,8 +150,8 @@ message RadarSensorView // // \brief Definition of the radar reflection. - // - message Reflection + // + message Reflection { // Relative signal level of the reflection. // @@ -163,7 +163,7 @@ message RadarSensorView // Unit: [dB] // optional double signal_strength = 1; - + // Time of flight. // // This is the time of flight of the reflection, which is directly @@ -172,7 +172,7 @@ message RadarSensorView // Unit: [s] // optional double time_of_flight = 2; - + // Doppler shift. // // Shift in frequency based on the specified TX frequency. @@ -180,7 +180,7 @@ message RadarSensorView // Unit: [Hz] // optional double doppler_shift = 3; - + // TX horizontal angle (azimuth). // // Horizontal angle of incidence of the source of the reflection @@ -189,7 +189,7 @@ message RadarSensorView // Unit: [rad] // optional double source_horizontal_angle = 4; - + // TX vertical angle (elevation). // // Vertical angle of incidence of the source of the reflection @@ -206,12 +206,12 @@ message RadarSensorView // // Lidar specific sensor view data. // -message LidarSensorView +message LidarSensorView { // Lidar View Configuration valid at the time the data was created. // optional LidarSensorViewConfiguration view_configuration = 1; - + // Ray Tracing Data. // // This field includes one entry for each ray, in left-to-right, @@ -236,7 +236,7 @@ message LidarSensorView // Unit: [dB] // optional double signal_strength = 1; - + // Time of flight. // // This is the time of flight of the reflection, which is directly @@ -245,7 +245,7 @@ message LidarSensorView // Unit: [s] // optional double time_of_flight = 2; - + // Doppler shift. // // Shift in frequency based on the specified TX frequency. @@ -261,12 +261,12 @@ message LidarSensorView // // Camera specific sensor view data. // -message CameraSensorView -{ +message CameraSensorView +{ // Camera View Configuration valid at the time the data was created. // optional CameraSensorViewConfiguration view_configuration = 1; - + // Raw Image Data. // // The raw image data in the memory layout and order specified by the @@ -279,7 +279,7 @@ message CameraSensorView // \brief Definition of the ultrasonic sensor view. // // Ultrasonic specific sensor view data. -message UltrasonicSensorView +message UltrasonicSensorView { // Ultrasonic Input Configuration valid at the time the data was created. // diff --git a/osi_sensorviewconfiguration.proto b/osi_sensorviewconfiguration.proto index 67eb05eed..7ce0a8e8f 100644 --- a/osi_sensorviewconfiguration.proto +++ b/osi_sensorviewconfiguration.proto @@ -8,14 +8,14 @@ import "osi_version.proto"; package osi; // -// \brief The configuration settings for the SensorView to be provided +// \brief The configuration settings for the \c SensorView to be provided // by the environment simulation. // // This message can be provided by the sensor model to the environment // simulation, in which case it describes the input configuration that -// is desired by the sensor model. In response the environment simulation +// is desired by the sensor model. In response the environment simulation // will configure the input and provide a new message of this type, which -// describes the actual configuration that it is going to employ. The two +// describes the actual configuration that it is going to employ. The two // can and will differ, when either the environment simulation does not // support a given requested configuration, and/or when the requested // configuration allowed for multiple alternatives, in which case the set @@ -28,7 +28,7 @@ package osi; // Mechanisms to parametrize sensor models are currently packaging-specific, // i.e. they depend on the packaging mechanism chosen: For FMU-packaging // the parametrization can be implemented using normal FMU parameters, -// and the requested SensorViewConfiguration can depend on those parameter +// and the requested \c SensorViewConfiguration can depend on those parameter // values by being defined as a calculatedParameter. // // The sensor-technology specific configurations are intended to allow @@ -38,7 +38,7 @@ package osi; // suitable data. The specified details are not directly related to // sensor details, but rather provide the necessary base machinery // setup so that the data provided is suitable to model the sensor to -// a sufficient degree of fidelity internally. For example the number +// a sufficient degree of fidelity internally. For example the number // of rays parameters for the Lidar configuration does not match one to // one with the number of laser rays a lidar sensor might cast, but // rather specifies the number of rays being cast by a ray @@ -53,10 +53,10 @@ package osi; // // In order to optimize the workload and bandwidth needed for sensor // simulation, OSI packaging mechanisms can specify the ability to -// exchange SensorViewConfiguration messages not only prior to +// exchange \c SensorViewConfiguration messages not only prior to // simulation startup, but also dynamically during simulation runs, // thereby allowing dynamic input configuration switching to only -// request data that is needed in the current sensor mode. However +// request data that is needed in the current sensor mode. However // this is more or less only a resource optimization strategy, and // since providing fine-grained information like this can reveal // internal characteristics of the sensor and/or sensor model, will @@ -84,7 +84,7 @@ message SensorViewConfiguration // The virtual position pertains to the sensor as a whole, regardless // of the actual position of individual physical detectors, and governs // the sensor-relative coordinates in detected objects of the sensor - // as a whole. Individual features detected by individual physical + // as a whole. Individual features detected by individual physical // detectors are governed by the actual physical mounting positions // of the detectors, as indicated in the technology-specific sub-views // and sub-view configurations. @@ -114,22 +114,22 @@ message SensorViewConfiguration // optional MountingPosition mounting_position_rmse = 4; - // Field of View in horizontal orientation of the sensor + // Field of View in horizontal orientation of the sensor. // // This determines the limit of the cone of interest of ground truth // that the simulation environment has to provide. // Viewing range: [-field_of_view_horizontal/2, field_of_view_horizontal/2] - // azimuth in the sensor frame as defined in \c OSI:Spherical3d. + // azimuth in the sensor frame as defined in \c Spherical3d. // Unit: [rad] optional double field_of_view_horizontal = 5; - // Field of View in vertical orientation of the sensor + // Field of View in vertical orientation of the sensor. // // This determines the limit of the cone of interest of ground truth // that the simulation environment has to provide. // Viewing range: [-field_of_view_vertical/2, field_of_view_vertical/2] // elevation in the sensor frame at zero azimuth as defined in - // \c OSI:Spherical3d. + // \c Spherical3d. // // Unit: [rad] optional double field_of_view_vertical = 6; @@ -142,7 +142,7 @@ message SensorViewConfiguration // Unit: [m] optional double range = 7; - // The update cycle time of the sensor model + // The update cycle time of the sensor model. // // This specifies the rate at which the sensor model is provided with // new input data. @@ -152,7 +152,7 @@ message SensorViewConfiguration // communication step size. optional double update_cycle_time = 8; - // Initial update cycle offset of the sensor model + // Initial update cycle offset of the sensor model. // // This specifies the initial offset (i.e. initial delay) of the // sensor model update cycle that the simulation should take into @@ -165,7 +165,7 @@ message SensorViewConfiguration // added on top of the start time: e.g. if the simulation starts at // 0.030s, and the update cycle time is 0.020s, then the first // update to the sensor input should happen at 0.048s, or 0.018s - // after simulation start. This convention is needed to ensure + // after simulation start. This convention is needed to ensure // stable phase position of the offset in the case of changing // simulation start times, e.g. for partial resimulation. // @@ -181,16 +181,16 @@ message SensorViewConfiguration // Unit: [s] optional double simulation_start_time = 10; - // Radar-specific SensorView Configuration(s). + // Radar-specific \c SensorView Configuration(s). repeated RadarSensorViewConfiguration radar_sensor_view_configuration = 1000; - // Lidar-specific SensorView Configuration(s). + // Lidar-specific \c SensorView Configuration(s). repeated LidarSensorViewConfiguration lidar_sensor_view_configuration = 1001; - // Camera-specific SensorView Configuration(s). + // Camera-specific \c SensorView Configuration(s). repeated CameraSensorViewConfiguration camera_sensor_view_configuration = 1002; - // Ultrasonic-specific SensorView Configuration(s). + // Ultrasonic-specific \c SensorView Configuration(s). repeated UltrasonicSensorViewConfiguration ultrasonic_sensor_view_configuration = 1003; } @@ -241,78 +241,80 @@ message RadarSensorViewConfiguration // optional MountingPosition mounting_position_rmse = 3; - // Field of View in horizontal orientation of the physical sensor + // Field of View in horizontal orientation of the physical sensor. // // Viewing range: [-field_of_view_horizontal/2, field_of_view_horizontal/2] - // azimuth in the sensor frame as defined in \c OSI:Spherical3d. + // azimuth in the sensor frame as defined in \c Spherical3d. // Unit: [rad] optional double field_of_view_horizontal = 4; - // Field of View in vertical orientation of the physical sensor + // Field of View in vertical orientation of the physical sensor. // // Viewing range: [-field_of_view_vertical/2, field_of_view_vertical/2] // elevation in the sensor frame at zero azimuth as defined in - // \c OSI:Spherical3d. + // \c Spherical3d. // // Unit: [rad] optional double field_of_view_vertical = 5; - // Number of rays to cast across horizontal field of view (azimuth) + // Number of rays to cast across horizontal field of view (azimuth). // // \note This is a characteristic of the ray tracing engine of the // environment simulation, not a direct characteristic of the sensor. optional uint32 number_of_rays_horizontal = 6; - // Number of rays to cast across vertical field of view (elevation) + // Number of rays to cast across vertical field of view (elevation). // // \note This is a characteristic of the ray tracing engine of the // environment simulation, not a direct characteristic of the sensor. optional uint32 number_of_rays_vertical = 7; - // Maximum number of interactions to take into account + // Maximum number of interactions to take into account. // // \note This is a characteristic of the ray tracing engine of the // environment simulation, not a direct characteristic of the sensor. optional uint32 max_number_of_interactions = 8; - // Emitter Frequency + // Emitter Frequency. // // This information can be used by a ray tracing engine to calculate // doppler shift information and take into account differences in - // refraction and reflection. For doppler shift calculations the + // refraction and reflection. For doppler shift calculations the // sensor model can of course always provide a nominal frequency and // adjust the resulting doppler shift information to actual frequency - // through frequency adjustments. For material and geometry interaction + // through frequency adjustments. For material and geometry interaction // purposes the frequency is also relevant. // // Unit: [Hz] optional double emitter_frequency = 9; - // This represents the TX antenna diagram + // This represents the TX antenna diagram. + // repeated AntennaDiagramEntry tx_antenna_diagram = 10; - // This represents the RX antenna diagram + // This represents the RX antenna diagram. + // repeated AntennaDiagramEntry rx_antenna_diagram = 11; // // \brief The radar antenna diagram. // - // \note Rotation is defined analog OSI:Spherical3d + // \note Rotation is defined analog Spherical3d message AntennaDiagramEntry { // Horizontal deflection (azimuth) of entry in sensor/antenna - // coordinates + // coordinates. // // Unit: [rad] optional double horizontal_angle = 1; // Vertical deflection (elevation) of entry in sensor/antenna - // coordinates + // coordinates. // // Unit: [rad] optional double vertical_angle = 2; // Combined response of emitter and receiver antenna at this - // point (positive dB is gain, negative dB is attenuation) + // point (positive dB is gain, negative dB is attenuation). // // Unit: [dB] optional double response = 3; @@ -366,48 +368,48 @@ message LidarSensorViewConfiguration // optional MountingPosition mounting_position_rmse = 3; - // Field of View in horizontal orientation of the physical sensor + // Field of View in horizontal orientation of the physical sensor. // // Viewing range: [-field_of_view_horizontal/2, field_of_view_horizontal/2] - // azimuth in the sensor frame as defined in \c OSI:Spherical3d. + // azimuth in the sensor frame as defined in \c Spherical3d. // Unit: [rad] optional double field_of_view_horizontal = 4; - // Field of View in vertical orientation of the physical sensor + // Field of View in vertical orientation of the physical sensor. // // Viewing range: [-field_of_view_vertical/2, field_of_view_vertical/2] // elevation in the sensor frame at zero azimuth as defined in - // \c OSI:Spherical3d. + // \c Spherical3d. // // Unit: [rad] optional double field_of_view_vertical = 5; - // Number of rays to cast across horizontal field of view + // Number of rays to cast across horizontal field of view. // // \note This is a characteristic of the ray tracing engine of the // environment simulation, not a direct characteristic of the sensor. optional uint32 number_of_rays_horizontal = 6; - // Number of rays to cast across vertical field of view + // Number of rays to cast across vertical field of view. // // \note This is a characteristic of the ray tracing engine of the // environment simulation, not a direct characteristic of the sensor. optional uint32 number_of_rays_vertical = 7; - // Maximum number of interactions to take into account + // Maximum number of interactions to take into account. // // \note This is a characteristic of the ray tracing engine of the // environment simulation, not a direct characteristic of the sensor. optional uint32 max_number_of_interactions = 8; - // Emitter Frequency + // Emitter Frequency. // // This information can be used by a ray tracing engine to calculate // doppler shift information and take into account differences in - // refraction and reflection. For doppler shift calculations the + // refraction and reflection. For doppler shift calculations the // sensor model can of course always provide a nominal frequency and // adjust the resulting doppler shift information to actual frequency - // through frequency adjustments. For material and geometry interaction + // through frequency adjustments. For material and geometry interaction // purposes the frequency is also relevant. // // Unit: [Hz] @@ -461,35 +463,35 @@ message CameraSensorViewConfiguration // optional MountingPosition mounting_position_rmse = 3; - // Field of View in horizontal orientation of the physical sensor + // Field of View in horizontal orientation of the physical sensor. // // Viewing range: [-field_of_view_horizontal/2, field_of_view_horizontal/2] - // azimuth in the sensor frame as defined in \c OSI:Spherical3d. + // azimuth in the sensor frame as defined in \c Spherical3d. // Unit: [rad] optional double field_of_view_horizontal = 4; - // Field of View in vertical orientation of the physical sensor + // Field of View in vertical orientation of the physical sensor. // // Viewing range: [-field_of_view_vertical/2, field_of_view_vertical/2] // elevation in the sensor frame at zero azimuth as defined in - // \c OSI:Spherical3d. + // \c Spherical3d. // // Unit: [rad] optional double field_of_view_vertical = 5; - // Number of pixels to produce across horizontal field of view + // Number of pixels to produce across horizontal field of view. // // \note This is a characteristic of the rendering engine of the // environment simulation, not a direct characteristic of the sensor. optional uint32 number_of_pixels_horizontal = 6; - // Number of pixels to produce across horizontal field of view + // Number of pixels to produce across horizontal field of view. // // \note This is a characteristic of the rendering engine of the // environment simulation, not a direct characteristic of the sensor. optional uint32 number_of_pixels_vertical = 7; - // Format for image data (includes number, kind and format of channels) + // Format for image data (includes number, kind and format of channels). // // In the message provided by the sensor model, this field can // be repeated and all values are acceptable to the model, with @@ -507,60 +509,55 @@ message CameraSensorViewConfiguration enum ChannelFormat { // Type of channel format is unknown (must not be used). // - FORMAT_UNKNOWN = 0; - - // Unspecified but known channel format. - // Consider proposing an additional format if using FORMAT_OTHER. - // - FORMAT_OTHER = 1; + CHANNEL_FORMAT_UNKNOWN = 0; - // Single Luminance Channel UINT8 Linear + // Single Luminance Channel UINT8 Linear. // - FORMAT_MONO_U8_LIN = 2; + CHANNEL_FORMAT_MONO_U8_LIN = 1; - // Single Luminance Channel UINT16 Linear + // Single Luminance Channel UINT16 Linear. // - FORMAT_MONO_U16_LIN = 3; + CHANNEL_FORMAT_MONO_U16_LIN = 2; - // Single Luminance Channel UINT32 Linear + // Single Luminance Channel UINT32 Linear. // - FORMAT_MONO_U32_LIN = 4; + CHANNEL_FORMAT_MONO_U32_LIN = 3; - // Single Luminance Channel Single Precision FP Linear + // Single Luminance Channel Single Precision FP Linear. // - FORMAT_MONO_F32_LIN = 5; + CHANNEL_FORMAT_MONO_F32_LIN = 4; - // Packed RGB Channels (no padding) UINT8 Linear + // Packed RGB Channels (no padding) UINT8 Linear. // - FORMAT_RGB_U8_LIN = 6; + CHANNEL_FORMAT_RGB_U8_LIN = 5; - // Packed RGB Channels (no padding) UINT16 Linear + // Packed RGB Channels (no padding) UINT16 Linear. // - FORMAT_RGB_U16_LIN = 7; + CHANNEL_FORMAT_RGB_U16_LIN = 6; - // Packed RGB Channels (no padding) UINT32 Linear + // Packed RGB Channels (no padding) UINT32 Linear. // - FORMAT_RGB_U32_LIN = 8; + CHANNEL_FORMAT_RGB_U32_LIN = 7; - // Packed RGB Channels (no padding) Single Precision FP Linear + // Packed RGB Channels (no padding) Single Precision FP Linear. // - FORMAT_RGB_F32_LIN = 9; + CHANNEL_FORMAT_RGB_F32_LIN = 8; - // Bayer RGGB Channels UINT8 FP Linear + // Bayer RGGB Channels UINT8 FP Linear. // - FORMAT_BAYER_BGGR_U8_LIN = 10; + CHANNEL_FORMAT_BAYER_BGGR_U8_LIN = 9; - // Bayer RGGB Channels UINT16 FP Linear + // Bayer RGGB Channels UINT16 FP Linear. // - FORMAT_BAYER_BGGR_U16_LIN = 11; + CHANNEL_FORMAT_BAYER_BGGR_U16_LIN = 10; - // Bayer RGGB Channels UINT32 FP Linear + // Bayer RGGB Channels UINT32 FP Linear. // - FORMAT_BAYER_BGGR_U32_LIN = 12; + CHANNEL_FORMAT_BAYER_BGGR_U32_LIN = 11; - // Bayer RGGB Channels Single Precision FP Linear + // Bayer RGGB Channels Single Precision FP Linear. // - FORMAT_BAYER_BGGR_F32_LIN = 13; + CHANNEL_FORMAT_BAYER_BGGR_F32_LIN = 12; // TBD: Further channel permutations and padding (e.g. RGBZ, // BGR, BAYER_RGGB/GBRG/GRBG/...), non-BAYER filters, non-linear @@ -617,21 +614,21 @@ message UltrasonicSensorViewConfiguration // optional MountingPosition mounting_position_rmse = 3; - // Field of View in horizontal orientation of the physical sensor + // Field of View in horizontal orientation of the physical sensor. // // Viewing range: [-field_of_view_horizontal/2, field_of_view_horizontal/2] - // azimuth in the sensor frame as defined in \c OSI:Spherical3d. + // azimuth in the sensor frame as defined in \c Spherical3d. // Unit: [rad] optional double field_of_view_horizontal = 4; - // Field of View in vertical orientation of the physical sensor + // Field of View in vertical orientation of the physical sensor. // // Viewing range: [-field_of_view_vertical/2, field_of_view_vertical/2] // elevation in the sensor frame at zero azimuth as defined in - // \c OSI:Spherical3d. + // \c Spherical3d. // // Unit: [rad] optional double field_of_view_vertical = 5; - // TBD: Ultrasonic Sensor specific configuration + // TBD: Ultrasonic Sensor specific configuration. } From a4fe010a53f4164b2e1b4f1d4ccff1be88a85689 Mon Sep 17 00:00:00 2001 From: carsten-kuebler <32508295+carsten-kuebler@users.noreply.github.com> Date: Tue, 27 Mar 2018 20:15:19 +0200 Subject: [PATCH 25/29] Review... --- osi_sensorviewconfiguration.proto | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/osi_sensorviewconfiguration.proto b/osi_sensorviewconfiguration.proto index 7ce0a8e8f..c1292b5c4 100644 --- a/osi_sensorviewconfiguration.proto +++ b/osi_sensorviewconfiguration.proto @@ -510,54 +510,59 @@ message CameraSensorViewConfiguration // Type of channel format is unknown (must not be used). // CHANNEL_FORMAT_UNKNOWN = 0; - + + // Unspecified but known channel format. + // Consider proposing an additional format if using #CHANNEL_FORMAT_OTHER. + // + CHANNEL_FORMAT_OTHER = 1; + // Single Luminance Channel UINT8 Linear. // - CHANNEL_FORMAT_MONO_U8_LIN = 1; + CHANNEL_FORMAT_MONO_U8_LIN = 2; // Single Luminance Channel UINT16 Linear. // - CHANNEL_FORMAT_MONO_U16_LIN = 2; + CHANNEL_FORMAT_MONO_U16_LIN = 3; // Single Luminance Channel UINT32 Linear. // - CHANNEL_FORMAT_MONO_U32_LIN = 3; + CHANNEL_FORMAT_MONO_U32_LIN = 4; // Single Luminance Channel Single Precision FP Linear. // - CHANNEL_FORMAT_MONO_F32_LIN = 4; + CHANNEL_FORMAT_MONO_F32_LIN = 5; // Packed RGB Channels (no padding) UINT8 Linear. // - CHANNEL_FORMAT_RGB_U8_LIN = 5; + CHANNEL_FORMAT_RGB_U8_LIN = 6; // Packed RGB Channels (no padding) UINT16 Linear. // - CHANNEL_FORMAT_RGB_U16_LIN = 6; + CHANNEL_FORMAT_RGB_U16_LIN = 7; // Packed RGB Channels (no padding) UINT32 Linear. // - CHANNEL_FORMAT_RGB_U32_LIN = 7; + CHANNEL_FORMAT_RGB_U32_LIN = 8; // Packed RGB Channels (no padding) Single Precision FP Linear. // - CHANNEL_FORMAT_RGB_F32_LIN = 8; + CHANNEL_FORMAT_RGB_F32_LIN = 9; // Bayer RGGB Channels UINT8 FP Linear. // - CHANNEL_FORMAT_BAYER_BGGR_U8_LIN = 9; + CHANNEL_FORMAT_BAYER_BGGR_U8_LIN = 10; // Bayer RGGB Channels UINT16 FP Linear. // - CHANNEL_FORMAT_BAYER_BGGR_U16_LIN = 10; + CHANNEL_FORMAT_BAYER_BGGR_U16_LIN = 11; // Bayer RGGB Channels UINT32 FP Linear. // - CHANNEL_FORMAT_BAYER_BGGR_U32_LIN = 11; + CHANNEL_FORMAT_BAYER_BGGR_U32_LIN = 12; // Bayer RGGB Channels Single Precision FP Linear. // - CHANNEL_FORMAT_BAYER_BGGR_F32_LIN = 12; + CHANNEL_FORMAT_BAYER_BGGR_F32_LIN = 13; // TBD: Further channel permutations and padding (e.g. RGBZ, // BGR, BAYER_RGGB/GBRG/GRBG/...), non-BAYER filters, non-linear From 27c9921645e6134bc195016ebf21a98862d7fefc Mon Sep 17 00:00:00 2001 From: carsten-kuebler <32508295+carsten-kuebler@users.noreply.github.com> Date: Tue, 27 Mar 2018 20:17:26 +0200 Subject: [PATCH 26/29] Reviewed... --- osi_modelinternal.proto | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/osi_modelinternal.proto b/osi_modelinternal.proto index aa760ca4e..8da961b0b 100644 --- a/osi_modelinternal.proto +++ b/osi_modelinternal.proto @@ -40,7 +40,7 @@ message ModelInternalObject // enum ObjectType { - // The object type is unknown. Value must not be used in ground truth. + // The object type is unknown. Value must not be used in ground truth. // OBJECT_TYPE_UNKNOWN = 0; @@ -67,8 +67,8 @@ message ModelInternalObject // Object of type \c TrafficLight. // OBJECT_TYPE_TRAFFIC_LIGHT = 6; - - // Object is a ghost object and does not exist in ground truth. + + // Object is a ghost object and does not exist in ground truth. // OBJECT_TYPE_GHOST = 7; } From e519f52f5774de0124bbf306a401a5cd38746a3c Mon Sep 17 00:00:00 2001 From: Carlo van Driesten Date: Tue, 27 Mar 2018 20:21:01 +0200 Subject: [PATCH 27/29] checked for plural forms and added notice for singular usage --- osi_detectedlane.proto | 8 ++++---- osi_sensordata.proto | 2 ++ osi_sensorview.proto | 8 ++++++++ osi_sensorviewconfiguration.proto | 18 ++++++++++++++++++ 4 files changed, 32 insertions(+), 4 deletions(-) diff --git a/osi_detectedlane.proto b/osi_detectedlane.proto index 25d4daae7..3961b74d2 100644 --- a/osi_detectedlane.proto +++ b/osi_detectedlane.proto @@ -127,17 +127,17 @@ message DetectedLaneBoundary // The root mean squared error of the \c LaneBoundary.BoundaryPoint // information from a \c LaneBoundary. // For each \c #lane_boundary \c LaneBoundary::boundary_line point exact - // one \c #boundary_line_points_rmse rmse information exist. + // one \c #boundary_line_rmse rmse information exist. // - repeated LaneBoundary.BoundaryPoint boundary_line_points_rmse = 2; + repeated LaneBoundary.BoundaryPoint boundary_line_rmse = 2; // Confidence of the segments of the \c LaneBoundary.BoundaryPoint // information from a \c LaneBoundary. // For each \c #lane_boundary \c LaneBoundary::boundary_line point exact - // one \c #boundary_line_points_confidences confidence value is + // one \c #boundary_line_confidences confidence value is // specified. // - repeated double boundary_line_points_confidences = 3; + repeated double boundary_line_confidences = 3; // // \brief A candidate for a detected traffic sign as estimated by the diff --git a/osi_sensordata.proto b/osi_sensordata.proto index f718b9eaf..49ca0e1bd 100644 --- a/osi_sensordata.proto +++ b/osi_sensordata.proto @@ -110,6 +110,8 @@ message SensorData // This provides a copy of the \c SensorView data received by the sensor // for reference purposes. For complex sensors or logic models this // can be multiple copies. + // + // \note OSI uses singular instead of plural for repeated field names. // repeated SensorView sensor_view = 6; diff --git a/osi_sensorview.proto b/osi_sensorview.proto index cc2823c66..cff4e9071 100644 --- a/osi_sensorview.proto +++ b/osi_sensorview.proto @@ -112,18 +112,26 @@ message SensorView optional Identifier host_vehicle_id = 8; // Radar-Specific SensorView(s) + // + // \note OSI uses singular instead of plural for repeated field names. // repeated RadarSensorView radar_sensor_view = 1000; // Lidar-Specific SensorView(s) + // + // \note OSI uses singular instead of plural for repeated field names. // repeated LidarSensorView lidar_sensor_view = 1001; // Camera-Specific SensorView(s) + // + // \note OSI uses singular instead of plural for repeated field names. // repeated CameraSensorView camera_sensor_view = 1002; // Ultrasonic-Specific SensorView(s) + // + // \note OSI uses singular instead of plural for repeated field names. // repeated UltrasonicSensorView ultrasonic_sensor_view = 1003; } diff --git a/osi_sensorviewconfiguration.proto b/osi_sensorviewconfiguration.proto index 67eb05eed..ab77f523f 100644 --- a/osi_sensorviewconfiguration.proto +++ b/osi_sensorviewconfiguration.proto @@ -182,15 +182,27 @@ message SensorViewConfiguration optional double simulation_start_time = 10; // Radar-specific SensorView Configuration(s). + // + // \note OSI uses singular instead of plural for repeated field names. + // repeated RadarSensorViewConfiguration radar_sensor_view_configuration = 1000; // Lidar-specific SensorView Configuration(s). + // + // \note OSI uses singular instead of plural for repeated field names. + // repeated LidarSensorViewConfiguration lidar_sensor_view_configuration = 1001; // Camera-specific SensorView Configuration(s). + // + // \note OSI uses singular instead of plural for repeated field names. + // repeated CameraSensorViewConfiguration camera_sensor_view_configuration = 1002; // Ultrasonic-specific SensorView Configuration(s). + // + // \note OSI uses singular instead of plural for repeated field names. + // repeated UltrasonicSensorViewConfiguration ultrasonic_sensor_view_configuration = 1003; } @@ -289,9 +301,15 @@ message RadarSensorViewConfiguration optional double emitter_frequency = 9; // This represents the TX antenna diagram + // + // \note OSI uses singular instead of plural for repeated field names. + // repeated AntennaDiagramEntry tx_antenna_diagram = 10; // This represents the RX antenna diagram + // + // \note OSI uses singular instead of plural for repeated field names. + // repeated AntennaDiagramEntry rx_antenna_diagram = 11; // From 8fc200434a7fd504429343a1bd36c6d14b982313 Mon Sep 17 00:00:00 2001 From: carsten-kuebler <32508295+carsten-kuebler@users.noreply.github.com> Date: Tue, 27 Mar 2018 20:24:32 +0200 Subject: [PATCH 28/29] Reviewed --- osi_object.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osi_object.proto b/osi_object.proto index d5891aab4..bb753d6a9 100644 --- a/osi_object.proto +++ b/osi_object.proto @@ -261,7 +261,7 @@ message MovingObject // Definition of object types. // enum Type - { + { // Type of the object is unknown (must not be used in ground truth). // TYPE_UNKNOWN = 0; From 7327dd76bfb1ac7cc2eb84fb4b0ac345847c22e6 Mon Sep 17 00:00:00 2001 From: carsten-kuebler <32508295+carsten-kuebler@users.noreply.github.com> Date: Tue, 27 Mar 2018 20:39:41 +0200 Subject: [PATCH 29/29] Spaces and Tabs removed --- osi_detectedlandmark.proto | 4 ++-- osi_environment.proto | 4 ++-- osi_lane.proto | 12 ++++++------ osi_sensordata.proto | 2 +- osi_sensorspecific.proto | 2 +- osi_sensorview.proto | 8 ++++---- osi_sensorviewconfiguration.proto | 28 ++++++++++++++-------------- 7 files changed, 30 insertions(+), 30 deletions(-) diff --git a/osi_detectedlandmark.proto b/osi_detectedlandmark.proto index b10733b08..7aad06749 100644 --- a/osi_detectedlandmark.proto +++ b/osi_detectedlandmark.proto @@ -472,7 +472,7 @@ message DetectedRoadMarking optional BaseStationary base_rmse = 2; // - // \brief A candidate for a detected road marking as estimated by the + // \brief A candidate for a detected road marking as estimated by the // sensor. // message CandidateRoadMarking @@ -567,7 +567,7 @@ message DetectedLandmark optional BaseStationary base_rmse = 2; // - // \brief A candidate for a detected landmark as estimated by the + // \brief A candidate for a detected landmark as estimated by the // sensor. // message CandidateLandmark diff --git a/osi_environment.proto b/osi_environment.proto index c88963712..969214c03 100644 --- a/osi_environment.proto +++ b/osi_environment.proto @@ -53,8 +53,8 @@ message EnvironmentalConditions // (I = Intensity of precipitation in mm per hour [mm/h]) // // \par References: - // \li [1] PAULAT, Marcus, et al. A gridded dataset of hourly precipitation - // in Germany: Its construction, climatology and application. + // \li [1] PAULAT, Marcus, et al. A gridded dataset of hourly precipitation + // in Germany: Its construction, climatology and application. // Meteorologische Zeitschrift, 2008, 17. Jg. Nr. 6, S. 719-732. // enum Precipitation diff --git a/osi_lane.proto b/osi_lane.proto index 91e46400c..b1797ae8c 100644 --- a/osi_lane.proto +++ b/osi_lane.proto @@ -115,10 +115,10 @@ message Lane // repeated LanePairing lane_pairing = 7; - // The right adjacent lane boundaries \c #right_lane_boundary_id may only be + // The right adjacent lane boundaries \c #right_lane_boundary_id may only be // shared with/as the left adjacent lane boundaries - // \c #left_lane_boundary_id of the nearest right adjacent lane - // \c #right_adjacent_lane_id. + // \c #left_lane_boundary_id of the nearest right adjacent lane + // \c #right_adjacent_lane_id. // // \note Empty for intersections. // @@ -129,10 +129,10 @@ message Lane // repeated Identifier right_lane_boundary_id = 8; - // The left adjacent lane boundaries \c #left_lane_boundary_id may only be + // The left adjacent lane boundaries \c #left_lane_boundary_id may only be // shared with/as the right adjacent lane boundaries - // \c #right_lane_boundary_id of the nearest left adjacent lane - // \c #left_adjacent_lane_id. + // \c #right_lane_boundary_id of the nearest left adjacent lane + // \c #left_adjacent_lane_id. // // \note Empty for intersections. // diff --git a/osi_sensordata.proto b/osi_sensordata.proto index 72f8ffb3f..32501cf3a 100644 --- a/osi_sensordata.proto +++ b/osi_sensordata.proto @@ -111,7 +111,7 @@ message SensorData // for reference purposes. For complex sensors or logic models this // can be multiple copies. // - // \note OSI uses singular instead of plural for repeated field names. + // \note OSI uses singular instead of plural for repeated field names. // repeated SensorView sensor_view = 6; diff --git a/osi_sensorspecific.proto b/osi_sensorspecific.proto index 0f03629f7..b1dc5cf54 100644 --- a/osi_sensorspecific.proto +++ b/osi_sensorspecific.proto @@ -12,7 +12,7 @@ package osi; // message RadarSpecificObjectData { - // The radar cross section (RCS) of the detected object. + // The radar cross section (RCS) of the detected object. // // Unit: [dB m^2] // diff --git a/osi_sensorview.proto b/osi_sensorview.proto index 82c8e07cc..6100f9d83 100644 --- a/osi_sensorview.proto +++ b/osi_sensorview.proto @@ -113,25 +113,25 @@ message SensorView // Radar-Specific SensorView(s) // - // \note OSI uses singular instead of plural for repeated field names. + // \note OSI uses singular instead of plural for repeated field names. // repeated RadarSensorView radar_sensor_view = 1000; // Lidar-Specific SensorView(s) // - // \note OSI uses singular instead of plural for repeated field names. + // \note OSI uses singular instead of plural for repeated field names. // repeated LidarSensorView lidar_sensor_view = 1001; // Camera-Specific SensorView(s) // - // \note OSI uses singular instead of plural for repeated field names. + // \note OSI uses singular instead of plural for repeated field names. // repeated CameraSensorView camera_sensor_view = 1002; // Ultrasonic-Specific SensorView(s) // - // \note OSI uses singular instead of plural for repeated field names. + // \note OSI uses singular instead of plural for repeated field names. // repeated UltrasonicSensorView ultrasonic_sensor_view = 1003; } diff --git a/osi_sensorviewconfiguration.proto b/osi_sensorviewconfiguration.proto index 78b5826f3..7eec04c21 100644 --- a/osi_sensorviewconfiguration.proto +++ b/osi_sensorviewconfiguration.proto @@ -182,26 +182,26 @@ message SensorViewConfiguration optional double simulation_start_time = 10; // Radar-specific SensorView Configuration(s). - // - // \note OSI uses singular instead of plural for repeated field names. + // + // \note OSI uses singular instead of plural for repeated field names. // repeated RadarSensorViewConfiguration radar_sensor_view_configuration = 1000; // Lidar-specific SensorView Configuration(s). - // - // \note OSI uses singular instead of plural for repeated field names. + // + // \note OSI uses singular instead of plural for repeated field names. // repeated LidarSensorViewConfiguration lidar_sensor_view_configuration = 1001; // Camera-specific SensorView Configuration(s). - // - // \note OSI uses singular instead of plural for repeated field names. + // + // \note OSI uses singular instead of plural for repeated field names. // repeated CameraSensorViewConfiguration camera_sensor_view_configuration = 1002; // Ultrasonic-specific SensorView Configuration(s). - // - // \note OSI uses singular instead of plural for repeated field names. + // + // \note OSI uses singular instead of plural for repeated field names. // repeated UltrasonicSensorViewConfiguration ultrasonic_sensor_view_configuration = 1003; } @@ -301,14 +301,14 @@ message RadarSensorViewConfiguration optional double emitter_frequency = 9; // This represents the TX antenna diagram - // - // \note OSI uses singular instead of plural for repeated field names. + // + // \note OSI uses singular instead of plural for repeated field names. // repeated AntennaDiagramEntry tx_antenna_diagram = 10; // This represents the RX antenna diagram - // - // \note OSI uses singular instead of plural for repeated field names. + // + // \note OSI uses singular instead of plural for repeated field names. // repeated AntennaDiagramEntry rx_antenna_diagram = 11; @@ -526,12 +526,12 @@ message CameraSensorViewConfiguration // Type of channel format is unknown (must not be used). // CHANNEL_FORMAT_UNKNOWN = 0; - + // Unspecified but known channel format. // Consider proposing an additional format if using #CHANNEL_FORMAT_OTHER. // CHANNEL_FORMAT_OTHER = 1; - + // Single Luminance Channel UINT8 Linear. // CHANNEL_FORMAT_MONO_U8_LIN = 2;