Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 13 additions & 17 deletions osi_common.proto
Original file line number Diff line number Diff line change
@@ -1,21 +1,19 @@
// define the proto language version
syntax = "proto2";
// optimize for speed

option optimize_for = SPEED;

// OSI - Open Simulation Interface
package osi;

/**
* The interface version number.
*/
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];
}

/**
Expand All @@ -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
{
Expand Down Expand Up @@ -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
{
Expand All @@ -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
{
Expand Down
5 changes: 1 addition & 4 deletions osi_datarecording.proto
Original file line number Diff line number Diff line change
@@ -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;

/**
Expand Down
5 changes: 1 addition & 4 deletions osi_detectedlandmark.proto
Original file line number Diff line number Diff line change
@@ -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;

/**
Expand Down
5 changes: 1 addition & 4 deletions osi_detectedlane.proto
Original file line number Diff line number Diff line change
@@ -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;

/**
Expand Down
7 changes: 2 additions & 5 deletions osi_detectedobject.proto
Original file line number Diff line number Diff line change
@@ -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;

/**
Expand Down
5 changes: 1 addition & 4 deletions osi_detectedoccupant.proto
Original file line number Diff line number Diff line change
@@ -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;

/**
Expand Down
4 changes: 1 addition & 3 deletions osi_environment.proto
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
// define the proto language version
syntax = "proto2";
// optimize for speed

option optimize_for = SPEED;

// OSI - Open Simulation Interface
package osi;

/**
Expand Down
19 changes: 8 additions & 11 deletions osi_groundtruth.proto
Original file line number Diff line number Diff line change
@@ -1,35 +1,32 @@
// 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.
*
* 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.
*/
Expand Down
12 changes: 3 additions & 9 deletions osi_landmark.proto
Original file line number Diff line number Diff line change
@@ -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;

/**
Expand All @@ -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
Expand Down Expand Up @@ -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
{
Expand Down
26 changes: 15 additions & 11 deletions osi_lane.proto
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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).
Expand Down Expand Up @@ -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
Expand Down
15 changes: 6 additions & 9 deletions osi_lowleveldata.proto
Original file line number Diff line number Diff line change
@@ -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
{
Expand All @@ -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.
Expand Down
8 changes: 3 additions & 5 deletions osi_modelinternal.proto
Original file line number Diff line number Diff line change
@@ -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
Expand Down
20 changes: 8 additions & 12 deletions osi_object.proto
Original file line number Diff line number Diff line change
@@ -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
{
Expand Down
Loading