diff --git a/.gitignore b/.gitignore index 5db5dddb4..019172fbd 100644 --- a/.gitignore +++ b/.gitignore @@ -30,3 +30,5 @@ version.py __pycache__/ *.py[cod] proto2cpp.log +.clang-format +githooks/pre-commit diff --git a/doc/images/OSI_BaseStationary.jpg b/doc/images/OSI_BaseStationary.jpg new file mode 100644 index 000000000..a512becc7 Binary files /dev/null and b/doc/images/OSI_BaseStationary.jpg differ diff --git a/doc/images/OSI_DetectedMainTrafficSign.jpg b/doc/images/OSI_DetectedMainTrafficSign.jpg new file mode 100644 index 000000000..2e2c565f2 Binary files /dev/null and b/doc/images/OSI_DetectedMainTrafficSign.jpg differ diff --git a/doc/images/OSI_DetectedRoadMarking.jpg b/doc/images/OSI_DetectedRoadMarking.jpg new file mode 100644 index 000000000..61fa7c595 Binary files /dev/null and b/doc/images/OSI_DetectedRoadMarking.jpg differ diff --git a/doc/images/OSI_DetectedStatObject.jpg b/doc/images/OSI_DetectedStatObject.jpg new file mode 100644 index 000000000..05c9ca69d Binary files /dev/null and b/doc/images/OSI_DetectedStatObject.jpg differ diff --git a/doc/images/OSI_DetectedSuppSign.jpg b/doc/images/OSI_DetectedSuppSign.jpg new file mode 100644 index 000000000..a3b948db5 Binary files /dev/null and b/doc/images/OSI_DetectedSuppSign.jpg differ diff --git a/doc/images/OSI_DetectedTrafficLight.jpg b/doc/images/OSI_DetectedTrafficLight.jpg new file mode 100644 index 000000000..e8911bf93 Binary files /dev/null and b/doc/images/OSI_DetectedTrafficLight.jpg differ diff --git a/doc/images/OSI_DetectedTrafficSigns.jpg b/doc/images/OSI_DetectedTrafficSigns.jpg new file mode 100644 index 000000000..a8f7043cc Binary files /dev/null and b/doc/images/OSI_DetectedTrafficSigns.jpg differ diff --git a/doc/images/OSI_Dimension3d.jpg b/doc/images/OSI_Dimension3d.jpg new file mode 100644 index 000000000..8791e44fb Binary files /dev/null and b/doc/images/OSI_Dimension3d.jpg differ diff --git a/doc/images/OSI_HostVehicle.jpg b/doc/images/OSI_HostVehicle.jpg new file mode 100644 index 000000000..233f7088c Binary files /dev/null and b/doc/images/OSI_HostVehicle.jpg differ diff --git a/doc/images/OSI_MainTrafficSign.jpg b/doc/images/OSI_MainTrafficSign.jpg new file mode 100644 index 000000000..a1355353c Binary files /dev/null and b/doc/images/OSI_MainTrafficSign.jpg differ diff --git a/doc/images/OSI_RoadMarking.jpg b/doc/images/OSI_RoadMarking.jpg new file mode 100644 index 000000000..df7c953ab Binary files /dev/null and b/doc/images/OSI_RoadMarking.jpg differ diff --git a/doc/images/OSI_StatObject.jpg b/doc/images/OSI_StatObject.jpg new file mode 100644 index 000000000..54f5b546c Binary files /dev/null and b/doc/images/OSI_StatObject.jpg differ diff --git a/doc/images/OSI_SuppSign.jpg b/doc/images/OSI_SuppSign.jpg new file mode 100644 index 000000000..1578d9dbe Binary files /dev/null and b/doc/images/OSI_SuppSign.jpg differ diff --git a/doc/images/OSI_TrafficLight.jpg b/doc/images/OSI_TrafficLight.jpg new file mode 100644 index 000000000..ae6fb2dc4 Binary files /dev/null and b/doc/images/OSI_TrafficLight.jpg differ diff --git a/doc/images/OSI_TrafficSigns.jpg b/doc/images/OSI_TrafficSigns.jpg new file mode 100644 index 000000000..687ee130e Binary files /dev/null and b/doc/images/OSI_TrafficSigns.jpg differ diff --git a/doc/images/images.zip b/doc/images/images.zip new file mode 100644 index 000000000..85af6cba2 Binary files /dev/null and b/doc/images/images.zip differ diff --git a/osi_common.proto b/osi_common.proto index 118cf28a8..fe2e088da 100644 --- a/osi_common.proto +++ b/osi_common.proto @@ -87,6 +87,8 @@ message Timestamp // \brief The dimension of a 3D box, e.g. the size of a 3D bounding box or its // uncertainties. // +// \image html OSI_Dimension3d.jpg +// // The dimensions are positive. Uncertainties are negative or positive. // // Dimension is defined in the specified reference coordinate frame along the @@ -135,7 +137,9 @@ 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 // versions (V2.xx) had an other definition. @@ -198,7 +202,9 @@ message MountingPosition // Orientation offset relative to the specified reference coordinate system. // - // Origin_sensor := Rotation_yaw_pitch_roll(#orientation)*(Origin_reference_coordinate_system - #position) + // Origin_sensor := + // Rotation_yaw_pitch_roll(#orientation)*(Origin_reference_coordinate_system + // - #position) // optional Orientation3d orientation = 2; } @@ -210,13 +216,14 @@ message MountingPosition // // 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 -// the new y-axis) to follow the definition of \c Orientation3d. For the +// \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 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 { @@ -245,8 +252,10 @@ message Spherical3d // This includes the \c StationaryObject , \c TrafficSign , // \c TrafficLight , \c RoadMarking messages. // +// \image html OSI_BaseStationary.jpg +// // All coordinates and orientations from ground truth objects are relative to -// the global ground truth frame. All coordinates and orientations +// the global ground truth frame (see image). All coordinates and orientations // from detected objects are relative to the host vehicle frame (see: // \c MovingObject::Vehicle vehicle reference point). // @@ -265,7 +274,9 @@ message BaseStationary // The relative orientation of the stationary object w.r.t. its parent // frame. // - // Origin_base_stationary_entity := Rotation_yaw_pitch_roll(#orientation)*(Origin_parent_coordinate_system - #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. @@ -274,8 +285,8 @@ message BaseStationary // 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 + // 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). The height // is the same as the height of the bounding box. // @@ -318,7 +329,9 @@ message BaseMoving // The relative orientation of the moving object w.r.t. its parent frame. // - // Origin_base_moving_entity := Rotation_yaw_pitch_roll(#orientation)*(Origin_parent_coordinate_system - #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. @@ -338,7 +351,8 @@ message BaseMoving // The acceleration becomes global/absolute if the parent frame is not // accelerating. // - // #position (t) := #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 // @@ -348,16 +362,19 @@ message BaseMoving // frame and parent orientation rate in the center point of the bounding box // (origin of the bounding box frame). // - // Rotation_yaw_pitch_roll(#orientation (t)) := Rotation_yaw_pitch_roll(#orientation_rate *dt)*Rotation_yaw_pitch_roll(#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 #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 + // 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). The height // is the same as the height of the bounding box. // diff --git a/osi_detectedlane.proto b/osi_detectedlane.proto index 98a6315d7..1987949ae 100644 --- a/osi_detectedlane.proto +++ b/osi_detectedlane.proto @@ -70,12 +70,13 @@ message DetectedLaneBoundary // attribute has to be set for each instance. All other values will be // 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 LaneBoundary::BoundaryPoint has to be at the start and another at the end - // of each dashed line segment. For Botts' dots lines, one - // \c LaneBoundary::BoundaryPoint position has to define each Botts' dot. + // one \c LaneBoundary::BoundaryPoint has to be at the start and another at + // the end of each dashed line segment. For Botts' dots lines, one \c + // LaneBoundary::BoundaryPoint position has to define each Botts' dot. // - // \attention For \c LaneBoundary::BoundaryPoint the same rules regarding maximum - // distance and approximation error apply as for \c Lane::Classification::centerline. + // \attention For \c LaneBoundary::BoundaryPoint the same rules regarding + // maximum distance and approximation error apply as for \c + // Lane::Classification::centerline. // repeated LaneBoundary.BoundaryPoint boundary_line = 3; diff --git a/osi_detectedobject.proto b/osi_detectedobject.proto index 52ef0670d..754040dc8 100644 --- a/osi_detectedobject.proto +++ b/osi_detectedobject.proto @@ -71,8 +71,8 @@ message DetectedItemHeader // MEASUREMENT_STATE_UNKNOWN = 0; - // Measurement state is unspecified (but known, i.e. value is not part of - // this enum list). + // Measurement state is unspecified (but known, i.e. value is not part + // of this enum list). // MEASUREMENT_STATE_OTHER = 1; @@ -91,6 +91,8 @@ message DetectedItemHeader // \brief A stationary object (e.g. landmark) in the environment as detected by // the sensor. // +// \image html OSI_DetectedStatObject.jpg +// message DetectedStationaryObject { // Common information of one detected item. @@ -242,18 +244,20 @@ message DetectedMovingObject // Specific information about the classification of the vehicle. // // - // \note This field is mandatory if the \c CandidateMovingObject::type is - // \c MovingObject::TYPE_VEHICLE . + // \note This field is mandatory if the \c CandidateMovingObject::type + // is \c MovingObject::TYPE_VEHICLE . // optional MovingObject.VehicleClassification vehicle_classification = 3; // 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 - // upwards (cranial direction [1] i.e. to pedestrian's skull cap). + // 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 // // \note This field is mandatory if the \c CandidateMovingObject.type is // \c MovingObject::TYPE_PEDESTRIAN @@ -266,14 +270,15 @@ message DetectedMovingObject // 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 - // pedestrian's head). + // 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 // - // \note This field is mandatory if the \c CandidateMovingObject::type is - // \c MovingObject::TYPE_PEDESTRIAN + // \note This field is mandatory if the \c CandidateMovingObject::type + // is \c MovingObject::TYPE_PEDESTRIAN // // \par References: // - [2] https://en.wikipedia.org/wiki/Anatomical_terms_of_location diff --git a/osi_detectedroadmarking.proto b/osi_detectedroadmarking.proto index 789c13e6d..906b6c790 100644 --- a/osi_detectedroadmarking.proto +++ b/osi_detectedroadmarking.proto @@ -11,6 +11,8 @@ package osi3; // // \brief A road marking in the environment as detected by the sensor. // +// \image html OSI_DetectedRoadMarking.jpg +// message DetectedRoadMarking { // Common information of one detected item. diff --git a/osi_detectedtrafficlight.proto b/osi_detectedtrafficlight.proto index 91509c528..cb062c6a5 100644 --- a/osi_detectedtrafficlight.proto +++ b/osi_detectedtrafficlight.proto @@ -11,6 +11,8 @@ package osi3; // // \brief A traffic light in the environment as detected by the sensor. // +// \image html OSI_DetectedTrafficLight.jpg +// message DetectedTrafficLight { // Common information of one detected item. diff --git a/osi_detectedtrafficsign.proto b/osi_detectedtrafficsign.proto index 24904e9aa..a527e2d74 100644 --- a/osi_detectedtrafficsign.proto +++ b/osi_detectedtrafficsign.proto @@ -11,6 +11,8 @@ package osi3; // // \brief A traffic sign in the environment as detected by the sensor. // +// \image html OSI_DetectedTrafficSigns.jpg +// message DetectedTrafficSign { // Common information of one detected item. @@ -30,6 +32,8 @@ message DetectedTrafficSign // // \brief Candidates for a detected main sign as estimated by the sensor. // + // \image html OSI_DetectedMainTrafficSign.jpg + // message DetectedMainSign { // A list of candidates for this traffic sign as estimated by the @@ -48,8 +52,8 @@ message DetectedTrafficSign // (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. + // 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; @@ -71,9 +75,9 @@ message DetectedTrafficSign { // The estimated probability that this candidate is the true value. // - // \note The sum of all \c #probability must be one. This probability is - // given under the condition of - // \c DetectedItemHeader::existence_probability. + // \note The sum of all \c #probability must be one. This + // probability is given under the condition of \c + // DetectedItemHeader::existence_probability. // // Range: [0,1] // @@ -104,11 +108,12 @@ message DetectedTrafficSign // GEOMETRY_CIRCLE = 2; - // Traffic sign has a triangular geometry pointing to the top. (3 corners) + // Traffic sign has a triangular geometry pointing to the top. (3 + // corners) // GEOMETRY_TRIANGLE_TOP = 3; - //Traffic sign has a triangular geometry pointing down. (3 corners) + // Traffic sign has a triangular geometry pointing down. (3 corners) // GEOMETRY_TRIANGLE_DOWN = 4; @@ -135,11 +140,13 @@ message DetectedTrafficSign // GEOMETRY_DIAMOND = 9; - // Traffic sign has a geometry of an arrow pointing to the left. (5 corners) + // Traffic sign has a geometry of an arrow pointing to the left. (5 + // corners) // GEOMETRY_ARROW_LEFT = 10; - // Traffic sign has a geometry of an arrow pointing to the right. (5 corners) + // Traffic sign has a geometry of an arrow pointing to the right. (5 + // corners) // GEOMETRY_ARROW_RIGHT = 11; @@ -153,6 +160,8 @@ message DetectedTrafficSign // \brief Candidates for all detected supplementary signs of one traffic // sign as estimated by the sensor. // + // \image html OSI_DetectedSuppSign.jpg + // message DetectedSupplementarySign { // The definition of one of more supplementary signs that together @@ -167,12 +176,12 @@ message DetectedTrafficSign // 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. + // 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 = 2; @@ -191,21 +200,22 @@ message DetectedTrafficSign { // The estimated probability that this candidate is the true value. // - // \note The sum of all \c #probability must be one. This probability is - // given under the condition of - // \c DetectedItemHeader::existence_probability. + // \note The sum of all \c #probability must be one. This + // probability is given under the condition of \c + // DetectedItemHeader::existence_probability. // // Range: [0,1] // optional double probability = 1; - // The classification of one of more supplementary signs that together - // define this candidate. + // The classification of one of more supplementary signs that + // together define this candidate. // // \note IDs, which are referenced in this message, usually // reference to \c DetectedXXX::tracking_id IDs. // - optional TrafficSign.SupplementarySign.Classification classification = 2; + optional TrafficSign.SupplementarySign.Classification + classification = 2; } } } diff --git a/osi_environment.proto b/osi_environment.proto index 00d61a854..0f3e01b12 100644 --- a/osi_environment.proto +++ b/osi_environment.proto @@ -109,9 +109,12 @@ 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) + // - [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 { @@ -175,11 +178,17 @@ 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-Gedeon-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) + // - [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-Gedeon-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 { @@ -194,8 +203,8 @@ 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; @@ -242,8 +251,8 @@ 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 - // 120000 [lx] + // \note Use \c #AMBIENT_ILLUMINATION_LEVEL9 if illumination is more + // than 120000 [lx] // AMBIENT_ILLUMINATION_LEVEL9 = 10; } diff --git a/osi_groundtruth.proto b/osi_groundtruth.proto index 428faa991..96dd27025 100644 --- a/osi_groundtruth.proto +++ b/osi_groundtruth.proto @@ -125,7 +125,9 @@ 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/) + // - [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_hostvehicledata.proto b/osi_hostvehicledata.proto index 957ddb8ff..3aa6f4a7b 100644 --- a/osi_hostvehicledata.proto +++ b/osi_hostvehicledata.proto @@ -10,6 +10,8 @@ package osi3; // \brief Interface for host vehicle data that is available to sensors and // other functions due to host vehicle's internal communication. // +// \image html OSI_HostVehicle.jpg +// // All coordinates and orientations are relative to the global ground truth // coordinate system. // diff --git a/osi_lane.proto b/osi_lane.proto index ac7fc8e85..f51650a90 100644 --- a/osi_lane.proto +++ b/osi_lane.proto @@ -45,7 +45,7 @@ message Lane // Example: \c #type = \c #TYPE_DRIVING (see reference picture) // optional Type type = 1; - + // Indicates that the host vehicle travels on this particular lane. // The host vehicle may travel on more than one lane at once. This does // also apply for the \c CanditateLane in the \c DetectedLane . @@ -54,21 +54,22 @@ message Lane // The lane's center line (as a list of segments). // - // This is the line, that a typical vehicle is supposed to follow. Thus, if - // the road narrows (e.g. at a construction site) this line is supposed to - // describe the trajectory that the vehicle should follow. The intended - // direction of travel on the lane is given by the direction defined by the - // sequence of points forming the center line. + // This is the line, that a typical vehicle is supposed to follow. Thus, + // if the road narrows (e.g. at a construction site) this line is + // supposed to describe the trajectory that the vehicle should follow. + // The intended direction of travel on the lane is given by the + // direction defined by the sequence of points forming the center line. // // \image html highway_exit.png "Center lines as yellow dotted lines." // // \attention The points describing the center line might be set at - // arbitrary distances. When the points are pairwise linearly connected, the - // lateral distance to the real ideal line (as used by the simulation - // environment internally) must not exceed 5cm. As shown in the following - // image: + // arbitrary distances. When the points are pairwise linearly connected, + // the lateral distance to the real ideal line (as used by the + // simulation environment internally) must not exceed 5cm. As shown in + // the following image: // - // \image html line_approximation_error.png "Approximation error as green line." + // \image html line_approximation_error.png "Approximation error as + // green line." // // \note The \c #centerline is defined only for \c #type = // \c #TYPE_DRIVING and one \c #lane_pairing pair. @@ -78,23 +79,23 @@ message Lane // Definition of the intended driving direction. // // Defined and used for driving lanes. - // 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. + // 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 \c #centerline_is_driving_direction is defined for \c #type = - // \c #TYPE_DRIVING . + // \note The \c #centerline_is_driving_direction is defined for \c #type + // = \c #TYPE_DRIVING . // 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 - // of lane segments are not synchronized and therefore there are multiple - // adjacent segments if there is a split/merge point in the adjacent 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. // - // Example: The lane ID 2 is the only left adjacent lane for lane ID 3 in - // the reference picture. + // 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 is undefined for \c #type = // \c #TYPE_INTERSECTION . @@ -103,14 +104,14 @@ message Lane // 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 - // 7. + // 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 7. // // \note The \c #right_adjacent_lane_id is undefined for \c #type = // \c #TYPE_INTERSECTION . @@ -120,20 +121,19 @@ message Lane 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 - // and vice versa. - // 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: + // multiple pairings with the same antecessor and different successor + // lanes and vice versa. 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: // // \note OSI uses singular instead of plural for repeated field names. // repeated LanePairing lane_pairing = 7; - // 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. + // 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. // @@ -144,10 +144,10 @@ message Lane // repeated Identifier right_lane_boundary_id = 8; - // 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. + // 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. // @@ -184,7 +184,8 @@ message Lane TYPE_OTHER = 1; // A normal lane. - // Example: lanes with IDs 1, 2, 3, 4 and 7 of the highway_exit image. + // Example: lanes with IDs 1, 2, 3, 4 and 7 of the highway_exit + // image. // TYPE_DRIVING = 2; @@ -227,10 +228,10 @@ message Lane // optional double surface_ice = 4; - // 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). + // 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). // // Estimated value ranges (IRI): // 0.0 [mm/m] absolutely perfect evenness @@ -265,9 +266,10 @@ message Lane // The surface texture or fine roughness // // Whereas the IRI-based roughness or unevenness measure only takes - // into account road wavelengths around 0.5m - 100m, the surface texture - // or fine roughness [2] measures only wavelengths below 0.5m. - // It is given as the standard height deviation of fine roughness + // into account road wavelengths around 0.5m - 100m, the surface + // texture or fine roughness [2] measures only wavelengths below + // 0.5m. It is given as the standard height deviation of fine + // roughness // // Unit: [m] // @@ -315,13 +317,13 @@ message LaneBoundary // Since a \c BoundaryPoint is part of a sequence, only the position // attribute has to be set for each instance. All other values will be // reused from the previous \c BoundaryPoint in the sequence or set to - // default values if there is none or it was never set. + // default values if there is none or it was never set. // // \note For dashed lines, one \c BoundaryPoint has to be at the start and - // another at the end of each dashed line segment. The first + // another at the end of each dashed line segment. The first // \c BoundaryPoint defines the beginning of the first dashed lane marking. - // The last \c BoundaryPoint defines the end of the last dashed lane - // marking. For example, the area between the second and third + // The last \c BoundaryPoint defines the end of the last dashed lane + // marking. For example, the area between the second and third // \c BoundaryPoint has no lane marking, and so on. // \note For Botts' dots lines, one \c BoundaryPoint position has to define // each Botts' dot. @@ -383,9 +385,9 @@ message LaneBoundary repeated Identifier limiting_structure_id = 3; // The lane boundary type. - // 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. + // 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. // enum Type { @@ -451,12 +453,13 @@ 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. + // 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. + // Color of marking is unknown. Value must not be used in ground + // truth. // COLOR_UNKNOWN = 0; @@ -464,8 +467,8 @@ message LaneBoundary // COLOR_OTHER = 1; - // Marking without color. Used to represent logical boundaries without - // actual physical markings at the respective position. + // 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; diff --git a/osi_object.proto b/osi_object.proto index e11f9c89b..91b26cc1f 100644 --- a/osi_object.proto +++ b/osi_object.proto @@ -11,6 +11,8 @@ package osi3; // \c MovingObject e.g. pedestrian, animal, or vehicle) nor a traffic related // object (\c TrafficLight, \c TrafficSign). // +// \image html OSI_StatObject.jpg +// // \c StationaryObject excludes traffic lights, traffic signs and road marking // message StationaryObject @@ -100,23 +102,24 @@ message StationaryObject // TYPE_WALL = 11; - // Landmarks corresponding to vertical structures in the environment. + // Landmarks corresponding to vertical structures in the + // environment. // TYPE_VERTICAL_STRUCTURE = 12; - // Landmarks corresponding to rectangular structures in the environment, - // like walls. + // Landmarks corresponding to rectangular structures in the + // environment, like walls. // TYPE_RECTANGULAR_STRUCTURE = 13; - // Landmarks corresponding to overhead structures in the environment, - // like sign bridges. + // Landmarks corresponding to overhead structures in the + // environment, like sign bridges. // TYPE_OVERHEAD_STRUCTURE = 14; - // Landmarks corresponding to light sources or reflective structures in - // the environment, like street lights or reflective poles on the road - // boarder. + // Landmarks corresponding to light sources or reflective structures + // in the environment, like street lights or reflective poles on the + // road boarder. // TYPE_REFLECTIVE_STRUCTURE = 15; @@ -130,7 +133,8 @@ message StationaryObject // enum Material { - // Type of the material is unknown (must not be used in ground truth). + // Type of the material is unknown (must not be used in ground + // truth). // MATERIAL_UNKNOWN = 0; @@ -167,12 +171,12 @@ message StationaryObject MATERIAL_MUD = 8; } - // Definition of material density types. // enum Density { - // Type of the material density is unknown (must not be used in ground truth). + // Type of the material density is unknown (must not be used in + // ground truth). // DENSITY_UNKNOWN = 0; @@ -331,17 +335,20 @@ message MovingObject // This is an extension to the \c MovingObject with additional attributes, // such as type and lights. The origin of the rear (front) axis coordinate // system in world coordinates is calculated as: - // \c MovingObject::base . \c BaseMoving::position + R * \c MovingObject::VehicleAttributes::bbcenter_to_rear (front) - // for the host vehicle (R rotates from vehicle to world frame, i.e. inverse - // orientation of \c MovingObject::base . \c BaseMoving::orientation). + // \c MovingObject::base . \c BaseMoving::position + R * \c + // MovingObject::VehicleAttributes::bbcenter_to_rear (front) for the host + // vehicle (R rotates from vehicle to world frame, i.e. inverse orientation + // of \c MovingObject::base . \c BaseMoving::orientation). // // For all vehicles, including host vehicles, the position given in - // \c MovingObject::base . \c BaseMoving::position points to the center of the vehicle's bounding box. + // \c MovingObject::base . \c BaseMoving::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 - // points to vehicle ceiling [1]. The coordinate system is right-handed. - // Therefore the positive y-axis points to the left of the vehicle. + // 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. // // \par References: // - [1] DIN ISO 8855:2013-11 @@ -350,8 +357,8 @@ message MovingObject { // The ID of the driver of the (host) vehicle. // - // \note Field need not be set if host_vehicle is set to false or use value - // for non valid id. + // \note Field need not be set if host_vehicle is set to false or use + // value for non valid id. // optional Identifier driver_id = 1; @@ -368,15 +375,17 @@ message MovingObject // optional uint32 number_wheels = 3; - // The vector pointing from the bounding box center point (\c MovingObject::base . \c BaseMoving::position) to - // the middle (in x, y and z) of the rear axle under neutral load - // conditions. In object coordinates. + // The vector pointing from the bounding box center point (\c + // MovingObject::base . \c BaseMoving::position) to the middle (in x, y + // and z) of the rear axle under neutral load conditions. In object + // coordinates. // optional Vector3d bbcenter_to_rear = 4; - // The vector pointing from the bounding box center point (\c MovingObject::base . \c BaseMoving::position) to - // the middle (in x, y and z) of the front axle under neutral load - // conditions. In object coordinates. + // The vector pointing from the bounding box center point (\c + // MovingObject::base . \c BaseMoving::position) to the middle (in x, y + // and z) of the front axle under neutral load conditions. In object + // coordinates. // optional Vector3d bbcenter_to_front = 5; @@ -409,8 +418,8 @@ message MovingObject // Id of the attached trailer. // - // \note Field need not be set if has_Trailer is set to false or use value - // for non valid id. + // \note Field need not be set if has_Trailer is set to false or use + // value for non valid id. // optional Identifier trailer_id = 4; @@ -534,7 +543,8 @@ message MovingObject // enum IndicatorState { - // Indicator state is unknown (must not be used in ground truth). + // Indicator state is unknown (must not be used in ground + // truth). // INDICATOR_STATE_UNKNOWN = 0; @@ -559,7 +569,8 @@ message MovingObject INDICATOR_STATE_WARNING = 5; } - // Definition of generic light states for light that may be on or off. + // Definition of generic light states for light that may be on or + // off. // enum GenericLightState { @@ -584,7 +595,8 @@ message MovingObject // enum BrakeLightState { - // Brake light state is unknown (must not be used in ground truth). + // Brake light state is unknown (must not be used in ground + // truth). // BRAKE_LIGHT_STATE_UNKNOWN = 0; diff --git a/osi_occupant.proto b/osi_occupant.proto index e1a7380cf..10d2f04b7 100644 --- a/osi_occupant.proto +++ b/osi_occupant.proto @@ -106,11 +106,11 @@ message Occupant // STEERING_CONTROL_NO_HAND = 2; - // One hand is on the steering wheel. Whether it is the left or right - // hand is unspecified or unknown. + // One hand is on the steering wheel. Whether it is the left or + // right hand is unspecified or unknown. // - // \note If there is no differentiation between one or both hands on the - // steering wheel, this value should be used. + // \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; diff --git a/osi_roadmarking.proto b/osi_roadmarking.proto index c866690f5..cbe760106 100644 --- a/osi_roadmarking.proto +++ b/osi_roadmarking.proto @@ -10,11 +10,14 @@ package osi3; // // \brief A road surface marking. // -// Lane markings are excluded and defined as \c LaneBoundary messages -// as part of \c Lane. +// \image html OSI_RoadMarking.jpg // // All coordinates and orientations are relative to the global ground truth // coordinate system. +// +// Lane markings are excluded and defined as \c LaneBoundary messages +// as part of \c Lane. + // message RoadMarking { @@ -55,8 +58,8 @@ message RoadMarking // optional Type type = 1; - // Traffic sign as road marking (color image, monochrome image or character - // string). + // 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 // \c #TYPE_SYMBOLIC_TRAFFIC_SIGN or \c #TYPE_TEXTUAL_TRAFFIC_SIGN ). @@ -64,7 +67,8 @@ 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.MainSign.Classification.Type traffic_main_sign_type = 2; + optional TrafficSign.MainSign.Classification.Type + traffic_main_sign_type = 2; // The monochrome color of the road marking. // \note Field need not be set (or set to \c #COLOR_OTHER) @@ -97,7 +101,7 @@ message RoadMarking // enum Type { - // Type of road marking is unknown (must not be used in ground + // Type of road marking is unknown (must not be used in ground // truth). // TYPE_UNKNOWN = 0; @@ -106,7 +110,8 @@ message RoadMarking // TYPE_OTHER = 1; - // Paint on the road surface indicating a color image of a traffic sign. + // Paint on the road surface indicating a color image of a traffic + // sign. // TYPE_PAINTED_TRAFFIC_SIGN = 2; @@ -116,8 +121,8 @@ message RoadMarking // 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; @@ -138,7 +143,8 @@ message RoadMarking // enum Color { - // Color of road marking is unknown (must not be used in ground truth). + // Color of road marking is unknown (must not be used in ground + // truth). // COLOR_UNKNOWN = 0; diff --git a/osi_sensordata.proto b/osi_sensordata.proto index 250303cd1..e2c6b714a 100644 --- a/osi_sensordata.proto +++ b/osi_sensordata.proto @@ -24,8 +24,9 @@ message DetectedEntityHeader // was processed or at which it is transmitted) in the global synchronized // time. // - // \note See \c SensorData::timestamp and \c SensorData::last_measurement_time - // for detailed discussions on the semantics of time-related fields. + // \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 = 1; @@ -165,19 +166,21 @@ message SensorData // // \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 + // \arg \b y-direction of sensor coordinate system: perpendicular to x and z + // right hand system // // \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 MovingObject::base . \c BaseMoving::position + Inverse_Rotation_yaw_pitch_roll( - // \c MovingObject::base . \c BaseMoving::orientation) * - // \c MovingObject::VehicleAttributes::bbcenter_to_rear) . - // The orientation of the vehicle's coordinate system is equal to the - // orientation of the vehicle's bounding box \c MovingObject::base . - // \c BaseMoving::orientation. + // ( \c MovingObject::base . \c BaseMoving::position + + // Inverse_Rotation_yaw_pitch_roll( \c MovingObject::base . \c + // BaseMoving::orientation) * \c + // MovingObject::VehicleAttributes::bbcenter_to_rear) . The orientation of + // the vehicle's coordinate system is equal to the orientation of the + // vehicle's bounding box \c MovingObject::base . \c + // BaseMoving::orientation. // optional MountingPosition mounting_position = 6; diff --git a/osi_sensorview.proto b/osi_sensorview.proto index f9e4c916e..95b966996 100644 --- a/osi_sensorview.proto +++ b/osi_sensorview.proto @@ -70,19 +70,21 @@ 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 + // \arg \b y-direction of sensor coordinate system: perpendicular to x and z + // right hand system // // \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 MovingObject::base . \c BaseMoving::position + Inverse_Rotation_yaw_pitch_roll( - // \c MovingObject::base . \c BaseMoving::orientation) * - // \c MovingObject::VehicleAttributes::bbcenter_to_rear) . - // The orientation of the vehicle's coordinate system is equal to the - // orientation of the vehicle's bounding box \c MovingObject::base . - // \c BaseMoving::orientation. + // ( \c MovingObject::base . \c BaseMoving::position + + // Inverse_Rotation_yaw_pitch_roll( \c MovingObject::base . \c + // BaseMoving::orientation) * \c + // MovingObject::VehicleAttributes::bbcenter_to_rear) . The orientation of + // the vehicle's coordinate system is equal to the orientation of the + // vehicle's bounding box \c MovingObject::base . \c + // BaseMoving::orientation. // optional MountingPosition mounting_position = 4; diff --git a/osi_sensorviewconfiguration.proto b/osi_sensorviewconfiguration.proto index 4a3df1e10..2899f338b 100644 --- a/osi_sensorviewconfiguration.proto +++ b/osi_sensorviewconfiguration.proto @@ -98,14 +98,14 @@ message SensorViewConfiguration // - [1] DIN ISO 8855:2013-11 // // \note The origin of vehicle's coordinate system in world frame is - // ( \c MovingObject::base . \c BaseMoving::position + Inverse_Rotation_yaw_pitch_roll( - // \c MovingObject::base . \c BaseMoving::orientation) * - // \c MovingObject::VehicleAttributes::bbcenter_to_rear) . - // The orientation of the vehicle's coordinate system is equal to the - // orientation of the vehicle's bounding box \c MovingObject::base . - // \c BaseMoving::orientation. - // \note A default position can be provided by the sensor model (e.g. to - // indicate the position the model was validated for), + // ( \c MovingObject::base . \c BaseMoving::position + + // Inverse_Rotation_yaw_pitch_roll( \c MovingObject::base . \c + // BaseMoving::orientation) * \c + // MovingObject::VehicleAttributes::bbcenter_to_rear) . The orientation of + // the vehicle's coordinate system is equal to the orientation of the + // vehicle's bounding box \c MovingObject::base . \c + // BaseMoving::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 // view configuration. @@ -120,18 +120,18 @@ message SensorViewConfiguration // // This determines the limit of the cone of interest of ground truth // that the simulation environment has to provide. - // Viewing range: [- \c #field_of_view_horizontal/2, \c #field_of_view_horizontal/2] - // azimuth in the sensor frame as defined in \c Spherical3d. - // Unit: [rad] + // Viewing range: [- \c #field_of_view_horizontal/2, \c + // #field_of_view_horizontal/2] 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. // // This determines the limit of the cone of interest of ground truth // that the simulation environment has to provide. - // Viewing range: [- \c #field_of_view_vertical/2, \c #field_of_view_vertical/2] - // elevation in the sensor frame at zero azimuth as defined in - // \c Spherical3d. + // Viewing range: [- \c #field_of_view_vertical/2, \c + // #field_of_view_vertical/2] elevation in the sensor frame at zero azimuth + // as defined in \c Spherical3d. // // Unit: [rad] optional double field_of_view_vertical = 6; @@ -187,31 +187,36 @@ message SensorViewConfiguration // // \note OSI uses singular instead of plural for repeated field names. // - repeated GenericSensorViewConfiguration generic_sensor_view_configuration = 1000; + repeated GenericSensorViewConfiguration generic_sensor_view_configuration = + 1000; // Radar-specific Sensor View Configuration(s). // // \note OSI uses singular instead of plural for repeated field names. // - repeated RadarSensorViewConfiguration radar_sensor_view_configuration = 1001; + repeated RadarSensorViewConfiguration radar_sensor_view_configuration = + 1001; // Lidar-specific Sensor View Configuration(s). // // \note OSI uses singular instead of plural for repeated field names. // - repeated LidarSensorViewConfiguration lidar_sensor_view_configuration = 1002; + repeated LidarSensorViewConfiguration lidar_sensor_view_configuration = + 1002; // Camera-specific Sensor View Configuration(s). // // \note OSI uses singular instead of plural for repeated field names. // - repeated CameraSensorViewConfiguration camera_sensor_view_configuration = 1003; + repeated CameraSensorViewConfiguration camera_sensor_view_configuration = + 1003; // Ultrasonic-specific Sensor View Configuration(s). // // \note OSI uses singular instead of plural for repeated field names. // - repeated UltrasonicSensorViewConfiguration ultrasonic_sensor_view_configuration = 1004; + repeated UltrasonicSensorViewConfiguration + ultrasonic_sensor_view_configuration = 1004; } // @@ -245,14 +250,14 @@ message GenericSensorViewConfiguration // - [1] DIN ISO 8855:2013-11 // // \note The origin of vehicle's coordinate system in world frame is - // ( \c MovingObject::base . \c BaseMoving::position + Inverse_Rotation_yaw_pitch_roll( - // \c MovingObject::base . \c BaseMoving::orientation) * - // \c MovingObject::VehicleAttributes::bbcenter_to_rear) . - // The orientation of the vehicle's coordinate system is equal to the - // orientation of the vehicle's bounding box \c MovingObject::base . - // \c BaseMoving::orientation. - // \note A default position can be provided by the sensor model (e.g. to - // indicate the position the model was validated for), + // ( \c MovingObject::base . \c BaseMoving::position + + // Inverse_Rotation_yaw_pitch_roll( \c MovingObject::base . \c + // BaseMoving::orientation) * \c + // MovingObject::VehicleAttributes::bbcenter_to_rear) . The orientation of + // the vehicle's coordinate system is equal to the orientation of the + // vehicle's bounding box \c MovingObject::base . \c + // BaseMoving::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 // view configuration. @@ -265,17 +270,18 @@ message GenericSensorViewConfiguration // Field of View in horizontal orientation of the physical sensor. // - // Viewing range: [- \c #field_of_view_horizontal/2, \c #field_of_view_horizontal/2] - // azimuth in the sensor frame as defined in \c Spherical3d. + // Viewing range: [- \c #field_of_view_horizontal/2, \c + // #field_of_view_horizontal/2] 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. // - // Viewing range: [- \c #field_of_view_vertical/2, \c #field_of_view_vertical/2] - // elevation in the sensor frame at zero azimuth as defined in - // \c Spherical3d. + // Viewing range: [- \c #field_of_view_vertical/2, \c + // #field_of_view_vertical/2] elevation in the sensor frame at zero azimuth + // as defined in \c Spherical3d. // // Unit: [rad] optional double field_of_view_vertical = 5; @@ -315,14 +321,14 @@ message RadarSensorViewConfiguration // - [1] DIN ISO 8855:2013-11 // // \note The origin of vehicle's coordinate system in world frame is - // ( \c MovingObject::base . \c BaseMoving::position + Inverse_Rotation_yaw_pitch_roll( - // \c MovingObject::base . \c BaseMoving::orientation) * - // \c MovingObject::VehicleAttributes::bbcenter_to_rear) . - // The orientation of the vehicle's coordinate system is equal to the - // orientation of the vehicle's bounding box \c MovingObject::base . - // \c BaseMoving::orientation. - // \note A default position can be provided by the sensor model (e.g. to - // indicate the position the model was validated for), + // ( \c MovingObject::base . \c BaseMoving::position + + // Inverse_Rotation_yaw_pitch_roll( \c MovingObject::base . \c + // BaseMoving::orientation) * \c + // MovingObject::VehicleAttributes::bbcenter_to_rear) . The orientation of + // the vehicle's coordinate system is equal to the orientation of the + // vehicle's bounding box \c MovingObject::base . \c + // BaseMoving::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 // view configuration. @@ -335,17 +341,18 @@ message RadarSensorViewConfiguration // Field of View in horizontal orientation of the physical sensor. // - // Viewing range: [- \c #field_of_view_horizontal/2, \c #field_of_view_horizontal/2] - // azimuth in the sensor frame as defined in \c Spherical3d. + // Viewing range: [- \c #field_of_view_horizontal/2, \c + // #field_of_view_horizontal/2] 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. // - // Viewing range: [- \c #field_of_view_vertical/2, \c #field_of_view_vertical/2] - // elevation in the sensor frame at zero azimuth as defined in - // \c Spherical3d. + // Viewing range: [- \c #field_of_view_vertical/2, \c + // #field_of_view_vertical/2] elevation in the sensor frame at zero azimuth + // as defined in \c Spherical3d. // // Unit: [rad] optional double field_of_view_vertical = 5; @@ -397,7 +404,8 @@ message RadarSensorViewConfiguration // \brief The radar antenna diagram. // // \note Rotation is defined analog Spherical3d - message AntennaDiagramEntry { + message AntennaDiagramEntry + { // Horizontal deflection (azimuth) of entry in sensor/antenna // coordinates. // @@ -449,14 +457,14 @@ message LidarSensorViewConfiguration // - [1] DIN ISO 8855:2013-11 // // \note The origin of vehicle's coordinate system in world frame is - // ( \c MovingObject::base . \c BaseMoving::position + Inverse_Rotation_yaw_pitch_roll( - // \c MovingObject::base . \c BaseMoving::orientation) * - // \c MovingObject::VehicleAttributes::bbcenter_to_rear) . - // The orientation of the vehicle's coordinate system is equal to the - // orientation of the vehicle's bounding box \c MovingObject::base . - // \c BaseMoving::orientation. - // \note A default position can be provided by the sensor model (e.g. to - // indicate the position the model was validated for), + // ( \c MovingObject::base . \c BaseMoving::position + + // Inverse_Rotation_yaw_pitch_roll( \c MovingObject::base . \c + // BaseMoving::orientation) * \c + // MovingObject::VehicleAttributes::bbcenter_to_rear) . The orientation of + // the vehicle's coordinate system is equal to the orientation of the + // vehicle's bounding box \c MovingObject::base . \c + // BaseMoving::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 // view configuration. @@ -469,17 +477,18 @@ message LidarSensorViewConfiguration // Field of View in horizontal orientation of the physical sensor. // - // Viewing range: [- \c #field_of_view_horizontal/2, \c #field_of_view_horizontal/2] - // azimuth in the sensor frame as defined in \c Spherical3d. + // Viewing range: [- \c #field_of_view_horizontal/2, \c + // #field_of_view_horizontal/2] 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. // - // Viewing range: [- \c #field_of_view_vertical/2, \c #field_of_view_vertical/2] - // elevation in the sensor frame at zero azimuth as defined in - // \c Spherical3d. + // Viewing range: [- \c #field_of_view_vertical/2, \c + // #field_of_view_vertical/2] elevation in the sensor frame at zero azimuth + // as defined in \c Spherical3d. // // Unit: [rad] optional double field_of_view_vertical = 5; @@ -547,14 +556,14 @@ message CameraSensorViewConfiguration // - [1] DIN ISO 8855:2013-11 // // \note The origin of vehicle's coordinate system in world frame is - // ( \c MovingObject::base . \c BaseMoving::position + Inverse_Rotation_yaw_pitch_roll( - // \c MovingObject::base . \c BaseMoving::orientation) * - // \c MovingObject::VehicleAttributes::bbcenter_to_rear) . - // The orientation of the vehicle's coordinate system is equal to the - // orientation of the vehicle's bounding box \c MovingObject::base . - // \c BaseMoving::orientation. - // \note A default position can be provided by the sensor model (e.g. to - // indicate the position the model was validated for), + // ( \c MovingObject::base . \c BaseMoving::position + + // Inverse_Rotation_yaw_pitch_roll( \c MovingObject::base . \c + // BaseMoving::orientation) * \c + // MovingObject::VehicleAttributes::bbcenter_to_rear) . The orientation of + // the vehicle's coordinate system is equal to the orientation of the + // vehicle's bounding box \c MovingObject::base . \c + // BaseMoving::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 // view configuration. @@ -567,17 +576,18 @@ message CameraSensorViewConfiguration // Field of View in horizontal orientation of the physical sensor. // - // Viewing range: [- \c #field_of_view_horizontal/2, \c #field_of_view_horizontal/2] - // azimuth in the sensor frame as defined in \c Spherical3d. + // Viewing range: [- \c #field_of_view_horizontal/2, \c + // #field_of_view_horizontal/2] 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. // - // Viewing range: [- \c #field_of_view_vertical/2, \c #field_of_view_vertical/2] - // elevation in the sensor frame at zero azimuth as defined in - // \c Spherical3d. + // Viewing range: [- \c #field_of_view_vertical/2, \c + // #field_of_view_vertical/2] elevation in the sensor frame at zero azimuth + // as defined in \c Spherical3d. // // Unit: [rad] optional double field_of_view_vertical = 5; @@ -712,14 +722,14 @@ message UltrasonicSensorViewConfiguration // - [1] DIN ISO 8855:2013-11 // // \note The origin of vehicle's coordinate system in world frame is - // ( \c MovingObject::base . \c BaseMoving::position + Inverse_Rotation_yaw_pitch_roll( - // \c MovingObject::base . \c BaseMoving::orientation) * - // \c MovingObject::VehicleAttributes::bbcenter_to_rear) . - // The orientation of the vehicle's coordinate system is equal to the - // orientation of the vehicle's bounding box \c MovingObject::base . - // \c BaseMoving::orientation. - // \note A default position can be provided by the sensor model (e.g. to - // indicate the position the model was validated for), + // ( \c MovingObject::base . \c BaseMoving::position + + // Inverse_Rotation_yaw_pitch_roll( \c MovingObject::base . \c + // BaseMoving::orientation) * \c + // MovingObject::VehicleAttributes::bbcenter_to_rear) . The orientation of + // the vehicle's coordinate system is equal to the orientation of the + // vehicle's bounding box \c MovingObject::base . \c + // BaseMoving::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 // view configuration. @@ -732,17 +742,18 @@ message UltrasonicSensorViewConfiguration // Field of View in horizontal orientation of the physical sensor. // - // Viewing range: [- \c #field_of_view_horizontal/2, \c #field_of_view_horizontal/2] - // azimuth in the sensor frame as defined in \c Spherical3d. + // Viewing range: [- \c #field_of_view_horizontal/2, \c + // #field_of_view_horizontal/2] 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. // - // Viewing range: [- \c #field_of_view_vertical/2, \c #field_of_view_vertical/2] - // elevation in the sensor frame at zero azimuth as defined in - // \c Spherical3d. + // Viewing range: [- \c #field_of_view_vertical/2, \c + // #field_of_view_vertical/2] elevation in the sensor frame at zero azimuth + // as defined in \c Spherical3d. // // Unit: [rad] optional double field_of_view_vertical = 5; diff --git a/osi_trafficlight.proto b/osi_trafficlight.proto index 230a308c7..ab7b607e7 100644 --- a/osi_trafficlight.proto +++ b/osi_trafficlight.proto @@ -9,6 +9,8 @@ package osi3; // // \brief A traffic light. // +// \image html OSI_TrafficLight.jpg +// // One traffic light message defines a single 'bulb' and not a box of several // bulbs, e.g. red, yellow, green are three separate traffic lights. // @@ -39,9 +41,9 @@ message TrafficLight // \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. - // If traffic light displays images in different colors and traffic light - // is off ( \c #mode = \c #MODE_OFF), then - // \c #color = \c #COLOR_OTHER . + // If traffic light displays images in different colors and traffic + // light is off ( \c #mode = \c #MODE_OFF), then \c #color = \c + // #COLOR_OTHER . // optional Color color = 1; @@ -130,8 +132,8 @@ 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; @@ -143,12 +145,13 @@ 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; @@ -167,8 +170,8 @@ message TrafficLight // 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; @@ -204,24 +207,24 @@ message TrafficLight // This traffic light is valid for // trams. // - // \note There is no detailed traffic light specification for trams and - // buses at the moment. + // \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. + // \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. + // \note There is no detailed traffic light specification for trams + // and buses at the moment. // ICON_BUS_AND_TRAM = 24; } diff --git a/osi_trafficsign.proto b/osi_trafficsign.proto index a624dbf73..6303cdf64 100644 --- a/osi_trafficsign.proto +++ b/osi_trafficsign.proto @@ -130,6 +130,8 @@ message TrafficSignValue // // \brief A traffic sign. // +// \image html OSI_TrafficSigns.jpg +// // All coordinates and orientations are relative to the global ground truth // coordinate system. // @@ -153,6 +155,8 @@ message TrafficSign // // \brief Main sign of the traffic sign. // + // \image html OSI_MainTrafficSign.jpg + // message MainSign { // The base parameters of the traffic sign. @@ -164,8 +168,8 @@ message TrafficSign // (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. + // 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 = 1; @@ -187,39 +191,42 @@ message TrafficSign // optional Type type = 2; - // Additional value associated with the traffic sign, e.g. value of the - // speed limit. + // 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. // optional TrafficSignValue value = 3; - // 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. + // 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 + // 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', + // 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. + // \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 = 4; // The IDs of the lanes that the sign is assigned to. // May be multiple if the sign is valid for multiple lanes. // - // \note OSI uses singular instead of plural for repeated field names. + // \note OSI uses singular instead of plural for repeated field + // names. // repeated Identifier assigned_lane_id = 5; @@ -227,16 +234,22 @@ message TrafficSign // 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/ + // \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 of traffic sign is unknown (must not be used in ground + // truth). // TYPE_UNKNOWN = 0; @@ -286,8 +299,8 @@ message TrafficSign // TYPE_DOUBLE_TURN_RIGHT = 7; - // Steep hill downwards (StVO 108) \c TrafficSignValue::value and - // \c TrafficSignValue::value_unit . + // Steep hill downwards (StVO 108) \c TrafficSignValue::value + // and \c TrafficSignValue::value_unit . // // See e.g.: https://www.dvr.de/bilder/stvo/gt/108-10.png // @@ -368,15 +381,17 @@ message TrafficSign // TYPE_STOP = 17; - // Priority must be given to vehicles from the opposite direction - // (StVO 208). Or: \c #TYPE_PRIORITY_OVER_OPPOSITE_DIRECTION + // Priority must be given to vehicles from the opposite + // direction (StVO 208). Or: \c + // #TYPE_PRIORITY_OVER_OPPOSITE_DIRECTION // // See e.g.: https://www.dvr.de/bilder/stvo/gt/208.png // TYPE_PRIORITY_TO_OPPOSITE_DIRECTION = 18; - // Priority must be given to vehicles from the opposite direction - // (StVO 208 Upside down). Or: \c #TYPE_PRIORITY_TO_OPPOSITE_DIRECTION + // Priority must be given to vehicles from the opposite + // direction (StVO 208 Upside down). Or: \c + // #TYPE_PRIORITY_TO_OPPOSITE_DIRECTION // // See e.g.: // @@ -436,7 +451,8 @@ message TrafficSign TYPE_PRESCRIBED_RIGHT_WAY = 24; // Prescribed left turn and driving straight ahead - // (StVO 214.1). Right: \c #TYPE_PRESCRIBED_RIGHT_TURN_AND_STRAIGHT_AHEAD + // (StVO 214.1). Right: \c + // #TYPE_PRESCRIBED_RIGHT_TURN_AND_STRAIGHT_AHEAD // // See e.g.: // @@ -449,7 +465,8 @@ message TrafficSign TYPE_PRESCRIBED_LEFT_TURN_AND_STRAIGHT_AHEAD = 25; // Prescribed right turn and driving straight ahead - // (StVO 214.2). Left: \c #TYPE_PRESCRIBED_LEFT_TURN_AND_RIGHT_TURN + // (StVO 214.2). Left: \c + // #TYPE_PRESCRIBED_LEFT_TURN_AND_RIGHT_TURN // // See e.g.: https://www.dvr.de/bilder/stvo/gt/214.png // @@ -474,8 +491,8 @@ message TrafficSign // TYPE_PRESCRIBED_LEFT_TURN_AND_RIGHT_TURN = 27; - // Prescribed left turn, right turn and driving straight ahead (required - // for logical signs as road marking). + // Prescribed left turn, right turn and driving straight ahead + // (required for logical signs as road marking). // // See e.g.: // @@ -632,35 +649,40 @@ message TrafficSign TYPE_PRESCRIBED_U_TURN_RIGHT = 50; // Minimum safety distance for trucks (StVO 273). - // \c TrafficSignValue::value and \c TrafficSignValue::value_unit . + // \c TrafficSignValue::value and \c + // TrafficSignValue::value_unit . // // See e.g.: https://www.dvr.de/bilder/stvo/gt/273.png // TYPE_MINIMUM_DISTANCE_FOR_TRUCKS = 51; - // Start of speed limit (StVO 274) \c TrafficSignValue::value and - // \c TrafficSignValue::value_unit . End: \c #TYPE_SPEED_LIMIT_END + // Start of speed limit (StVO 274) \c TrafficSignValue::value + // and \c TrafficSignValue::value_unit . End: \c + // #TYPE_SPEED_LIMIT_END // // See e.g.: https://www.dvr.de/bilder/stvo/gt/274-60.png // TYPE_SPEED_LIMIT_BEGIN = 52; - // Start of zone with speed limit (StVO 274.1) \c TrafficSignValue::value and - // \c TrafficSignValue::value_unit . End: \c #TYPE_SPEED_LIMIT_ZONE_END + // Start of zone with speed limit (StVO 274.1) \c + // TrafficSignValue::value and \c TrafficSignValue::value_unit . + // End: \c #TYPE_SPEED_LIMIT_ZONE_END // // See e.g.: https://www.dvr.de/bilder/stvo/gt/274.1.png // TYPE_SPEED_LIMIT_ZONE_BEGIN = 53; - // End of zone with speed limit (StVO 274.2) \c TrafficSignValue::value and - // \c TrafficSignValue::value_unit . Begin: \c #TYPE_SPEED_LIMIT_ZONE_BEGIN + // End of zone with speed limit (StVO 274.2) \c + // TrafficSignValue::value and \c TrafficSignValue::value_unit . + // Begin: \c #TYPE_SPEED_LIMIT_ZONE_BEGIN // // See e.g.: https://www.dvr.de/bilder/stvo/gt/274.2.png // TYPE_SPEED_LIMIT_ZONE_END = 54; - // Start of mandatory minimum speed (StVO 275) \c TrafficSignValue::value and - // \c TrafficSignValue::value_unit . End: \c #TYPE_MINIMUM_SPEED_END + // Start of mandatory minimum speed (StVO 275) \c + // TrafficSignValue::value and \c TrafficSignValue::value_unit . + // End: \c #TYPE_MINIMUM_SPEED_END // // See e.g.: https://www.dvr.de/bilder/stvo/gt/275.png // @@ -681,14 +703,16 @@ message TrafficSign TYPE_OVERTAKING_BAN_FOR_TRUCKS_BEGIN = 57; // End of speed limit (StVO 278) \c TrafficSignValue::value and - // \c TrafficSignValue::value_unit . Begin: \c #TYPE_SPEED_LIMIT_BEGIN + // \c TrafficSignValue::value_unit . Begin: \c + // #TYPE_SPEED_LIMIT_BEGIN // // See e.g.: https://www.dvr.de/bilder/stvo/gt/278-60.png // TYPE_SPEED_LIMIT_END = 58; - // End of mandatory minimum speed (StVO 279) \c TrafficSignValue::value and - // \c TrafficSignValue::value_unit . Begin: \c #TYPE_MINIMUM_SPEED_BEGIN + // End of mandatory minimum speed (StVO 279) \c + // TrafficSignValue::value and \c TrafficSignValue::value_unit . + // Begin: \c #TYPE_MINIMUM_SPEED_BEGIN // // See e.g.: https://www.dvr.de/bilder/stvo/gt/279.png // @@ -775,15 +799,17 @@ message TrafficSign // TYPE_RIGHT_OF_WAY_END = 69; - // Traffic has priority over vehicles from the opposite direction - // (StVO 308). Or: \c #TYPE_PRIORITY_TO_OPPOSITE_DIRECTION + // Traffic has priority over vehicles from the opposite + // direction (StVO 308). Or: \c + // #TYPE_PRIORITY_TO_OPPOSITE_DIRECTION // // See e.g.: https://www.dvr.de/bilder/stvo/gt/308.png // TYPE_PRIORITY_OVER_OPPOSITE_DIRECTION = 70; - // Traffic has priority over vehicles from the opposite direction - // (StVO 308 Upside down). Or: \c #TYPE_PRIORITY_OVER_OPPOSITE_DIRECTION + // Traffic has priority over vehicles from the opposite + // direction (StVO 308 Upside down). Or: \c + // #TYPE_PRIORITY_OVER_OPPOSITE_DIRECTION // // See e.g.: // @@ -909,9 +935,10 @@ message TrafficSign // TYPE_PEDESTRIAN_CROSSING_INFO = 87; - // Pole indicating highways exit in e.g. 100m (StVO 450, + // Pole indicating highways exit in e.g. 100m (StVO 450, // StVO 451, StVO 452). - // \c TrafficSignValue::value and \c TrafficSignValue::value_unit . + // \c TrafficSignValue::value and \c + // TrafficSignValue::value_unit . // // See e.g.: https://www.dvr.de/bilder/stvo/gt/450-51.png // @@ -926,7 +953,7 @@ message TrafficSign // \c RoadMarking::Classification::TYPE_SYMBOLIC_TRAFFIC_SIGN // (StVO 297.1-21) // - // See e.g.: + // See e.g.: // // \note No speed limitation // @@ -941,7 +968,7 @@ message TrafficSign // \c RoadMarking::Classification::TYPE_SYMBOLIC_TRAFFIC_SIGN // (StVO 297.1-21) // - // See e.g.: + // See e.g.: // // \note No speed limitation // @@ -963,13 +990,13 @@ 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.) + // 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 of the sign's scope is unknown (must not be used in + // ground truth). // DIRECTION_SCOPE_UNKNOWN = 0; @@ -989,7 +1016,8 @@ 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; } @@ -999,6 +1027,8 @@ message TrafficSign // // \brief Additional supplementary sign modifying the main sign. // + // \image html OSI_SuppSign.jpg + // message SupplementarySign { // The base parameters of the supplementary traffic sign. @@ -1006,12 +1036,12 @@ message TrafficSign // 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. + // 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 = 1; @@ -1032,19 +1062,22 @@ message TrafficSign // optional Type type = 2; - // Additional value(s) associated with the traffic sign, e.g. length, mass - // or starting time in time range. + // Additional value(s) associated with the traffic sign, e.g. + // length, mass or starting time in time range. // - // \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. // - // \note OSI uses singular instead of plural for repeated field names. + // \note OSI uses singular instead of plural for repeated field + // names. // repeated TrafficSignValue value = 3; // The IDs of the lanes that the sign is assigned to. // May be multiple if the sign is valid for multiple lanes. // - // \note OSI uses singular instead of plural for repeated field names. + // \note OSI uses singular instead of plural for repeated field + // names. // repeated Identifier assigned_lane_id = 4; @@ -1053,8 +1086,8 @@ message TrafficSign // enum Type { - // Type of supplementary sign is unknown (must not be used in ground - // truth). + // Type of supplementary sign is unknown (must not be used in + // ground truth). // TYPE_UNKNOWN = 0; @@ -1062,51 +1095,61 @@ message TrafficSign // TYPE_OTHER = 1; - // There is no supplementary sign (must not be used in ground truth). + // 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 TrafficSignValue::value in - // e.g. meter - \c TrafficSignValue::value_unit). + // Traffic sign is valid for a certain distance (given by \c + // TrafficSignValue::value in e.g. meter - \c + // TrafficSignValue::value_unit). // TYPE_VALID_FOR_DISTANCE = 3; - // Distance to the start of validity of the traffic sign (given by - // \c TrafficSignValue::value in e.g. meter - \c TrafficSignValue::value_unit). + // Distance to the start of validity of the traffic sign (given + // by \c TrafficSignValue::value in e.g. meter - \c + // TrafficSignValue::value_unit). // TYPE_VALID_IN_DISTANCE = 4; - // Time range for validity of traffic sign (starting from first \c TrafficSignValue::value - // and ending with second \c TrafficSignValue::value, both defining e.g. time of day in - // minutes since midnight - first \c TrafficSignValue::value_unit and second \c TrafficSignValue::value_unit). - // Day of the week starting from third \c TrafficSignValue::value and ending with - // fourth \c TrafficSignValue::value with third \c TrafficSignValue::value_unit and fourth \c TrafficSignValue::value_unit). + // Time range for validity of traffic sign (starting from first + // \c TrafficSignValue::value and ending with second \c + // TrafficSignValue::value, both defining e.g. time of day in + // minutes since midnight - first \c + // TrafficSignValue::value_unit and second \c + // TrafficSignValue::value_unit). Day of the week starting from + // third \c TrafficSignValue::value and ending with fourth \c + // TrafficSignValue::value with third \c + // TrafficSignValue::value_unit and fourth \c + // TrafficSignValue::value_unit). // TYPE_TIME_RANGE = 5; - // Restriction of the validity of the traffic sign depending on the - // vehicle's weight (more than \c TrafficSignValue::value e.g. in kilogram - - // \c TrafficSignValue::value_unit). + // Restriction of the validity of the traffic sign depending on + // the vehicle's weight (more than \c TrafficSignValue::value + // e.g. in kilogram - \c TrafficSignValue::value_unit). // TYPE_WEIGHT = 6; - // Restriction of the validity of the traffic sign to wet / rainy - // conditions. + // 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. + // 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. + // 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). + // 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; @@ -1166,8 +1209,8 @@ message TrafficSign // TYPE_CAR = 24; - // Ends in e.g. .. meter (given by \c TrafficSignValue::value in e.g. meter - - // \c TrafficSignValue::value_unit). + // Ends in e.g. .. meter (given by \c TrafficSignValue::value in + // e.g. meter - \c TrafficSignValue::value_unit). // TYPE_STOP_IN = 25; } diff --git a/test_cases.py b/test_cases.py index 1ea69c54b..6f4d448d6 100644 --- a/test_cases.py +++ b/test_cases.py @@ -14,6 +14,7 @@ noComment = 0 hasBrief = False hasNewLine = True + saveStatement = "" for line in fin: i = i + 1 @@ -56,9 +57,15 @@ state = 1 # -------------------------------------------------------------- + # Test case 9 is checking if there is '__' + if line.find("__") != -1: + print(file + " in line " + str(i) + ": not permitted use of '__' ") + state = 1 + + # -------------------------------------------------------------- + # Divide statement and comment. Concatenate multi line statements. - # Search for comment ("//") and add one more slash character ("/") to the comment - # block to make Doxygen detect it. + # Search for comment ("//"). matchComment = re.search("//", line) if matchComment is not None: statement = line[:matchComment.start()] @@ -66,11 +73,24 @@ else: statement = line comment = "" - + + # Add part of the statement from last line. + statement = saveStatement + " " + statement + saveStatement = "" + # New line is not necessary. Remove for a better output. statement = statement.replace("\n", "") comment = comment.replace("\n", "") + # Is statement complete + matchSep = re.search(r"[{};]", statement) + if matchSep is None: + saveStatement = statement + statement = "" + else: + saveStatement = statement[matchSep.end():] + statement = statement[:matchSep.end()] + # -------------------------------------------------------------- # Test case 6-8 camelcase for enums and check enum name? @@ -112,12 +132,6 @@ def convert(name): s1 = re.sub(r'(.)([A-Z][a-z]+)', r'\1_\2', name) return re.sub(r'([a-z0-9])([A-Z])', r'\1_\2', s1).upper() - # -------------------------------------------------------------- - # Test case 9 is checking if there is '__' - if line.find("__") != -1: - print(file + " in line " + str(i) + ": not permitted use of '__' ") - state = 1 - # -------------------------------------------------------------- # Test case 10-12,18 check message name, field type and field name # @@ -176,11 +190,11 @@ def convert(name): # -------------------------------------------------------------- # Test case 13-17 is checking comment - if line.find("//") != -1: + if matchComment is not None: noComment += 1; if comment.find("\\brief") != -1: hasBrief = True; - else: + elif len(saveStatement) == 0: # Test case 13 is checking if comment is min. 2 lines if noComment == 1: print(file + " in line " + str(i-1) + ": short comment - min. 2 lines.") @@ -207,7 +221,8 @@ def convert(name): # Test case 17 every statement has a comment print(file + " in line " + str(i) + ": comment is missing for: '"+statement+"'") state = 1 - + + noComment = 0 hasBrief = False