diff --git a/osi_common.proto b/osi_common.proto index f1f5584e6..3262c71f2 100644 --- a/osi_common.proto +++ b/osi_common.proto @@ -1,9 +1,7 @@ -// define the proto language version syntax = "proto2"; -// optimize for speed + option optimize_for = SPEED; -// OSI - Open Simulation Interface package osi; /** @@ -11,11 +9,11 @@ package osi; */ message InterfaceVersion { - // The field containing the version number. Should be left on default, not to be modified by sender. - // Increments will happen as part of changes to the whole interface. + // The field containing the version number. Should be left on default, not to be modified by sender. Increments will + // happen as part of changes to the whole interface. optional uint32 major = 1 [default = 2]; - optional uint32 minor = 2 [default = 0]; - optional uint32 patch = 3 [default = 0]; + optional uint32 minor = 2 [default = 0]; + optional uint32 patch = 3 [default = 0]; } /** @@ -36,8 +34,8 @@ message Vector3d /** * A timestamp. - * Names and types of fields chosen in accordance with google/protobuf/timestamp.proto to allow a possible switch - * in the future. Definition of zero point in time differs and does not use Unix epoch. + * Names and types of fields chosen in accordance with google/protobuf/timestamp.proto to allow a possible switch in the + * future. Definition of zero point in time differs and does not use Unix epoch. */ message Timestamp { @@ -89,11 +87,10 @@ message Orientation3d /** * A common identifier. - * 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 might 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. + * 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 might 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. */ message Identifier { @@ -115,9 +112,8 @@ message MountingPosition /** * A polar representation for a point / vector in 3D space used for low level representations of radar detections. - * Units are [m] for radial distance and [rad] for azimuth and elevation angles. - * If azimuth and elevation are zero, the referenced point is directly in front / vector is pointing - * directly in the central viewing direction of the sensor. + * Units are [m] for radial distance and [rad] for azimuth and elevation angles. If azimuth and elevation are zero, the + * referenced point is directly in front / vector is pointing directly in the central viewing direction of the sensor. */ message Polar3d { diff --git a/osi_datarecording.proto b/osi_datarecording.proto index a039202dd..09fc7ba89 100644 --- a/osi_datarecording.proto +++ b/osi_datarecording.proto @@ -1,12 +1,9 @@ -// define the proto language version syntax = "proto2"; -// optimize for speed + option optimize_for = SPEED; -// imports import "osi_sensordata.proto"; -// OSI - Open Simulation Interface package osi; /** diff --git a/osi_detectedlandmark.proto b/osi_detectedlandmark.proto index ac87ff174..c0f80836c 100644 --- a/osi_detectedlandmark.proto +++ b/osi_detectedlandmark.proto @@ -1,13 +1,10 @@ -// define the proto language version syntax = "proto2"; -// optimize for speed + option optimize_for = SPEED; -// imports import "osi_common.proto"; import "osi_landmark.proto"; -// OSI - Open Simulation Interface package osi; /** diff --git a/osi_detectedlane.proto b/osi_detectedlane.proto index 36079fe78..20d59fc7b 100644 --- a/osi_detectedlane.proto +++ b/osi_detectedlane.proto @@ -1,13 +1,10 @@ -// define the proto language version syntax = "proto2"; -// optimize for speed + option optimize_for = SPEED; -// imports import "osi_common.proto"; import "osi_lane.proto"; -// OSI - Open Simulation Interface package osi; /** diff --git a/osi_detectedobject.proto b/osi_detectedobject.proto index 925e63129..f0a53b469 100644 --- a/osi_detectedobject.proto +++ b/osi_detectedobject.proto @@ -1,15 +1,12 @@ -// define the proto language version syntax = "proto2"; -// optimize for speed + option optimize_for = SPEED; -// imports import "osi_common.proto"; -import "osi_object.proto"; import "osi_modelinternal.proto"; +import "osi_object.proto"; import "osi_sensorspecific.proto"; -// OSI - Open Simulation Interface package osi; /** diff --git a/osi_detectedoccupant.proto b/osi_detectedoccupant.proto index 0984b5e6c..819dd1ade 100644 --- a/osi_detectedoccupant.proto +++ b/osi_detectedoccupant.proto @@ -1,13 +1,10 @@ -// define the proto language version syntax = "proto2"; -// optimize for speed + option optimize_for = SPEED; -// imports import "osi_common.proto"; import "osi_occupant.proto"; -// OSI - Open Simulation Interface package osi; /** diff --git a/osi_environment.proto b/osi_environment.proto index 070057e8e..1a927966a 100644 --- a/osi_environment.proto +++ b/osi_environment.proto @@ -1,9 +1,7 @@ -// define the proto language version syntax = "proto2"; -// optimize for speed + option optimize_for = SPEED; -// OSI - Open Simulation Interface package osi; /** diff --git a/osi_groundtruth.proto b/osi_groundtruth.proto index 9a1ef1892..9e2c144db 100644 --- a/osi_groundtruth.proto +++ b/osi_groundtruth.proto @@ -1,26 +1,23 @@ -// define the proto language version syntax = "proto2"; -// optimize for speed + option optimize_for = SPEED; -// imports import "osi_common.proto"; -import "osi_object.proto"; +import "osi_environment.proto"; import "osi_landmark.proto"; import "osi_lane.proto"; +import "osi_object.proto"; import "osi_occupant.proto"; -import "osi_environment.proto"; -// OSI - Open Simulation Interface package osi; /** * The ground truth information from the simulation environment. + * * This ground truth information is supposed to describe the whole simulated environment around any simulated vehicle. * For each simulated ego vehicle (might only be one, but could also be multiple) define an area around the vehicle - * which is greater than the combined field of views (FOV) of all sensors obstructed 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. + * which is greater than the combined field of views (FOV) of all sensors obstructed 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. * * The simulation coordinate system might change during the simulation if and only if, all coordinates w.r.t. this * coordinate system are also changed. @@ -28,8 +25,8 @@ package osi; * The data has to be sent at a rate defined by the receiving partner. When sending, values with default values might be * left default in order to improve performance. * - * To provide a complete interface, all fields of all messages have to be set, unless specifically stated in the - * field's definition that the field may remain unset. + * To provide a complete interface, all fields of all messages have to be set, unless specifically stated in the field's + * definition that the field may remain unset. * * In enums (e.g. types) the unknown (first / default) value is not allowed to be used in the ground truth interface. */ diff --git a/osi_landmark.proto b/osi_landmark.proto index 241b304b4..a83aa01ac 100644 --- a/osi_landmark.proto +++ b/osi_landmark.proto @@ -1,12 +1,9 @@ -// define the proto language version syntax = "proto2"; -// optimize for speed + option optimize_for = SPEED; -// imports import "osi_common.proto"; -// OSI - Open Simulation Interface package osi; /** @@ -24,8 +21,7 @@ message TrafficSign optional Type type = 3; // Additional value associated with the traffic sign, e.g. value of the speed limit. - // Field need not be set if traffic sign type does not require it. - // Speed (limits) should be given in km/h. + // Field need not be set if traffic sign type does not require it. Speed (limits) should be given in km/h. optional double value = 4; // Variability @@ -320,9 +316,7 @@ message TrafficLight /** * Definition of light state for traffic lights. - * - * This containes the logical information about the - * traffic light and NOT a description of individual light bulbs. + * This containes the logical information about the traffic light and NOT a description of individual light bulbs. */ message LightState { diff --git a/osi_lane.proto b/osi_lane.proto index 95a9a35e6..dff15f1a5 100644 --- a/osi_lane.proto +++ b/osi_lane.proto @@ -1,20 +1,20 @@ -// define the proto language version syntax = "proto2"; -// optimize for speed + option optimize_for = SPEED; -// imports import "osi_common.proto"; -// OSI - Open Simulation Interface package osi; /** * 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. The following image will be referred to by later comments. We'll use the lane - * with id 3 as reference if not mentioned otherwise. + * 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. + * * \image html highway_exit.png + * * For lane a to be the antecessor of lane b, the last point of a's center line has to be identical to the first point * of b's center line (although both points might lie outside the simulated region, the relationship remains). Any lane * starts or ends at such a split/merge point. No lane can ever keep its id after such a split point, i.e. lane 4 has to @@ -31,25 +31,28 @@ message Lane optional Type type = 2; // The lane's center line. + // // This is the line, that a typical vehicle is supposed to follow. Thus, if the road narrows (e.g. 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. + // 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. // // \attention The points might be set at arbitrary distances, but must not be further appart than 5m. 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 // // Example: The yellow dotted line right of the blue 3. repeated Vector3d center_line = 3; // The boundary of the lane. + // // The lane boundaries describe the lane markings or other boundaries delimiting the lane as well as free lines that // might be used e.g. in construction sites. The lane markings do not have to be parallel to the center_line, but // they are the basis for calculating the width of the lane at any given distance. - // Example: The double solid line above the 3, and the dashed line below the 3. (see reference picture) - // There might also be additional free lanes. + // + // Example: The double solid line above the 3, and the dashed line below the 3. (see reference picture) There might + // also be additional free lanes. repeated LaneBoundary lane_boundary = 4; // The lane's left adjacent lanes (w.r.t. intended driving direction). @@ -123,6 +126,7 @@ message Lane message LaneBoundary { // The list of individual points defining the location of the lane boundary. + // // Since a 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 BoundaryPoint in the sequence or set to default values if there is // none or it was never set. For dashed lines, one BoundaryPoint has to be at the start and another at the end of diff --git a/osi_lowleveldata.proto b/osi_lowleveldata.proto index 273daab2b..ce93618cc 100644 --- a/osi_lowleveldata.proto +++ b/osi_lowleveldata.proto @@ -1,20 +1,17 @@ -// define the proto language version syntax = "proto2"; -// optimize for speed + option optimize_for = SPEED; -// imports import "osi_common.proto"; -// OSI - Open Simulation Interface package osi; /** * Interface for low level sensor data, in contrast to high level data after object hypothesis and tracking. + * * All information regarding the environment is given with respect to the sensor coordinate system specified in - * LowLevelData::mounting_position. - * When simulating multiple sensors, each sensor has an individual copy of LowLevelData in its own reference frame. This - * allows an independent treatment of the sensors. + * LowLevelData::mounting_position. When simulating multiple sensors, each sensor has an individual copy of LowLevelData + * in its own reference frame. This allows an independent treatment of the sensors. */ message LowLevelData { @@ -25,8 +22,8 @@ package osi; // course of a simulation run. Recommended zero time is the starting time of the simulation. optional Timestamp timestamp = 2; - // Mounting position of the sensor (origin and orientation of the sensor coordinate system); - // given relative to the middle of the rear axis of the host vehicle. + // Mounting position of the sensor (origin and orientation of the sensor coordinate system); given relative to the + // middle of the rear axis of the host vehicle. optional MountingPosition mounting_position = 3; // Lidar point cloud. diff --git a/osi_modelinternal.proto b/osi_modelinternal.proto index 02f7f7ecd..765346926 100644 --- a/osi_modelinternal.proto +++ b/osi_modelinternal.proto @@ -1,17 +1,15 @@ -// define the proto language version syntax = "proto2"; -// optimize for speed + option optimize_for = SPEED; -// imports -import "osi_object.proto"; import "osi_lowleveldata.proto"; +import "osi_object.proto"; -// OSI - Open Simulation Interface package osi; /** * Internal data and state flags for the sensor model, set and used during modification of the interface data. + * * Content of all ModelInternal* messages may be cleared at the end of the sensor model processing chain and not sent * with the final output of the sensor model. Receiving components must not expect values in ModelInternal* messages to * be set. In particular, the message structures defined in this file must not be used by receiving components outside diff --git a/osi_object.proto b/osi_object.proto index f6351c058..16f59618d 100644 --- a/osi_object.proto +++ b/osi_object.proto @@ -1,25 +1,21 @@ -// define the proto language version syntax = "proto2"; -// optimize for speed + option optimize_for = SPEED; -// imports import "osi_common.proto"; -// OSI - Open Simulation Interface package osi; /** * A vehicle. - * This is basically a BaseObject with additional attributes, such as type and lights. * - * Note that, if this vehicle is a simulated ego vehicle (i.e. ego_vehicle is set to true), relative_ego_origin has - * to be set, defining the offset from the ego vehicle's bounding box center to the center of the vehicle's rear axis. - * This defines the origin of the ego vehicle's rear axis coordinate system and allows calculation of quantities - * relative to this reference frame. The origin of the rear axis coordinate system in world coordinates is calculated - * as (base.position + relative_ego_origin) for the ego vehicle. - * For all vehicles, including ego vehicles, the position given in base.position points to the center of the vehicle's - * bounding box. + * This is basically a BaseObject with additional attributes, such as type and lights. Note that, if this vehicle is a + * simulated ego vehicle (i.e. ego_vehicle is set to true), relative_ego_origin has to be set, defining the offset from + * the ego vehicle's bounding box center to the center of the vehicle's rear axis. This defines the origin of the ego + * vehicle's rear axis coordinate system and allows calculation of quantities relative to this reference frame. The + * origin of the rear axis coordinate system in world coordinates is calculated as (base.position + relative_ego_origin) + * for the ego vehicle. For all vehicles, including ego vehicles, the position given in base.position points to the + * center of the vehicle's bounding box. */ message Vehicle { diff --git a/osi_occupant.proto b/osi_occupant.proto index 1938b169d..2d205143c 100644 --- a/osi_occupant.proto +++ b/osi_occupant.proto @@ -1,12 +1,9 @@ -// define the proto language version syntax = "proto2"; -// optimize for speed + option optimize_for = SPEED; -// imports import "osi_common.proto"; -// OSI - Open Simulation Interface package osi; /** diff --git a/osi_sensordata.proto b/osi_sensordata.proto index c06e065be..fdcb287ff 100644 --- a/osi_sensordata.proto +++ b/osi_sensordata.proto @@ -1,28 +1,23 @@ -// define the proto language version syntax = "proto2"; -// optimize for speed + option optimize_for = SPEED; -// imports import "osi_common.proto"; -import "osi_groundtruth.proto"; -import "osi_detectedobject.proto"; import "osi_detectedlandmark.proto"; import "osi_detectedlane.proto"; +import "osi_detectedobject.proto"; import "osi_detectedoccupant.proto"; +import "osi_groundtruth.proto"; import "osi_modelinternal.proto"; -// OSI - Open Simulation Interface package osi; /** * The virtual sensor information derived from osi::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 - * SensorData::mounting_position. * - * When simulating multiple sensors, each sensor has an individual copy of the SensorData interface. This allows an + * 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 SensorData::mounting_position.When + * simulating multiple sensors, each sensor has an individual copy of the SensorData interface. This allows an * independent treatment of the sensors. */ message SensorData diff --git a/osi_sensorspecific.proto b/osi_sensorspecific.proto index db53b5f79..e3db3beb6 100644 --- a/osi_sensorspecific.proto +++ b/osi_sensorspecific.proto @@ -1,9 +1,7 @@ -// define the proto language version syntax = "proto2"; -// optimize for speed + option optimize_for = SPEED; -// OSI - Open Simulation Interface package osi; /**