@@ -2,36 +2,44 @@ syntax = "proto2";
22
33option optimize_for = SPEED ;
44
5+ import "osi_version.proto" ;
56import "osi_common.proto" ;
67import "osi_detectedlandmark.proto" ;
78import "osi_detectedlane.proto" ;
89import "osi_detectedobject.proto" ;
910import "osi_detectedoccupant.proto" ;
10- import "osi_groundtruth.proto" ;
1111import "osi_sensorview.proto" ;
1212import "osi_featuredata.proto" ;
13- import "osi_hostvehicledata.proto" ;
1413
1514package osi ;
1615
1716//
18- // \brief The virtual sensor information derived from \c GroundTruth and
19- // potentially processed by sensor-models.
17+ // \brief The sensor information derived from \c GroundTruth and processed by
18+ // sensor-models.
2019//
21- // The virtual sensor information is supposed to imitate the output of a real
22- // sensor. All information regarding the environment is given with respect to
23- // the sensor coordinate system specified in \c SensorData::mounting_position.
24- // When simulating multiple sensors, each sensor has an individual copy of the
25- // \c SensorData interface. This allows an independent treatment of the sensors.
20+ // The sensor information is supposed to imitate the output of real sensors.
21+ // All information regarding the environment is given with respect to
22+ // the virtual sensor coordinate system specified in
23+ // \c SensorData::mounting_position, except for feature data, which is given
24+ // with respect to the physical sensor coordinate system specified in the
25+ // corresponding physical sensor's coordinate system.
26+ //
27+ // When simulating multiple distinct sensors, each sensor can produce an
28+ // individual copy of the \c SensorData interface. This allows an independent
29+ // treatment of the sensors.
30+ //
31+ // Sensor fusion models can consolidate multiple \c SensorData interfaces into
32+ // one consolidated \c SensorData interface. This can happen either in
33+ // seperate logical models, consuming and producing \c SensorData interfaces,
34+ // or it can happen as part of a combined sensor/logical model, that consumes
35+ // \c SensorView interfaces and directly produces one consolidated \c SensorData
36+ // output.
2637//
2738message SensorData
2839{
29- // The ID of the sensor at host vehicle's mounting_position.
30- //
31- // This ID can equal \c SensorDetectionHeader::sensor_id, if \c SensorData
32- // holds only data from one sensor/sensor model.
40+ // The interface version used by the sender.
3341 //
34- optional Identifier sensor_id = 1 ;
42+ optional InterfaceVersion version = 1 ;
3543
3644 // The timestamp of the sensor data. Zero time is arbitrary but must be
3745 // identical for all messages. Zero time does not need to coincide with
@@ -60,55 +68,50 @@ message SensorData
6068 //
6169 optional Timestamp timestamp = 2 ;
6270
63- // Ground truth w.r.t. global coordinate system.
64- //
65- // This is the ground truth that is provided to the sensor model by the
66- // simulation environment.
67- // \note Should be used as constant in the sensor models.
68- //
69- optional GroundTruth global_ground_truth = 3 ;
70-
71- // Sensor view w.r.t. the sensor coordinate system.
72- //
73- // This provides additional data to the sensor model as configured in
74- // the sensor input configuration. All data is relative to the sensor
75- // both in terms of the coordinate system, as well as the content.
76- // \note Should be used as constant in the sensor models.
71+ // The ID of the sensor at host vehicle's mounting_position.
7772 //
78- optional SensorView sensor_view = 4 ;
79-
80- // The ID of the host vehicle in the ground_truth data .
73+ // This is the ID of the virtual sensor, to be used in its detected
74+ // object output; it is distinct from the IDs of its physical detectors,
75+ // which are used in the detected features .
8176 //
82- optional Identifier host_vehicle_id = 5 ;
77+ optional Identifier sensor_id = 3 ;
8378
84- // Mounting position of the sensor (origin and orientation of the sensor
85- // frame). Both origin and orientation are given in and with respect to the
86- // host vehicle coordinate system (see: \c Vehicle vehicle reference
87- // point) [1].
79+ // The virtual mounting position of the sensor (origin and orientation
80+ // of the sensor coordinate system) given in vehicle coordinates [1].
81+ // The virtual position pertains to the sensor as a whole, regardless
82+ // of the actual position of individual physical detectors, and governs
83+ // the sensor-relative coordinates in detected objects of the sensor
84+ // as a whole. Individual features detected by individual physical
85+ // detectors are governed by the actual physical mounting positions
86+ // of the detectors, as indicated in the technology-specific sub-views
87+ // and sub-view configurations.
8888 //
89- // The sensor frame's x-axis is pointing in the central viewing direction of
90- // the sensor. It is the angle bisector of the sensor's horizontal and
91- // vertical field of view. The terms horizontal and vertical must be
92- // understood as names for the two principal planes of the sensor's field of
93- // view (relative to the sensor frame's orientation), which do not have to
94- // be horizontal or vertical in the strict sense of being parallel or
95- // perpendicular to the local gravitational vector. The horizontal field
96- // of view defines the sensor frame's xy-plane and the vertical field
97- // of view defines the xz-plane. The sensor frame is right-handed and the
98- // z-axis is pointing in an upward direction.
99- //
100- // The sensor frame uses cartesian coordinates. The sensor frame's origin is
101- // identical to sensor detection frame's origin. Detections are defined in
102- // the sensor detection frame which uses e.g. spherical coordinates.
89+ // \arg \b x-direction of sensor coordinate system: sensor viewing direction
90+ // \arg \b z-direction of sensor coordinate system: sensor (up)
91+ // \arg \b y-direction of sensor coordinate system: perpendicular to x and z right hand system
10392 //
10493 // \par References:
105- // \li [1] DIN ISO 8855:2013-11
94+ // [1] DIN ISO 8855:2013-11
95+ //
96+ // \note This field is usually static during the simulation.
97+ // \note The origin of vehicle's coordinate system in world frame is
98+ // ( \c Vehicle::base.position + Inverse_Rotation_yaw_pitch_roll(\c Vehicle::base.orientation) * \c Vehicle::bbcenter_to_rear) .
99+ // The orientation of the vehicle's coordinate system is equal to the orientation
100+ // of the vehicle's bounding box \c Vehicle::base.orientation.
106101 //
107- optional MountingPosition mounting_position = 6 ;
102+ optional MountingPosition mounting_position = 4 ;
108103
109104 // The root mean squared error of the mounting position.
110105 //
111- optional MountingPosition mounting_position_rmse = 7 ;
106+ optional MountingPosition mounting_position_rmse = 5 ;
107+
108+ // Sensor view w.r.t. the sensor coordinate system
109+ //
110+ // This provides a copy of the \c SensorView data received by the sensor
111+ // for reference purposes. For complex sensors or logic models this
112+ // can be multiple copies.
113+ //
114+ repeated SensorView sensor_view = 6 ;
112115
113116 // The timestamp of the last real-world measurement (e.g. GT input) that
114117 // this set of sensor data takes into account. This in effect is the last
@@ -117,11 +120,11 @@ message SensorData
117120 // the upper bound to the \c DetectedObjectHeader::measurement_time and the
118121 // feature data \c SensorDetectionHeader::measurement_time fields.
119122 //
120- optional Timestamp last_measurement_time = 8 ;
123+ optional Timestamp last_measurement_time = 7 ;
121124
122125 // General information about the \c DetectedObject .
123126 //
124- optional DetectedEntityHeader object_header = 100 ;
127+ optional DetectedEntityHeader object_header = 8 ;
125128
126129 // The list of objects detected by the sensor as perceived by the sensor.
127130 //
@@ -131,95 +134,103 @@ message SensorData
131134
132135 // General information about the \c DetectedTrafficSign .
133136 //
134- optional DetectedEntityHeader traffic_sign_header = 101 ;
137+ optional DetectedEntityHeader traffic_sign_header = 10 ;
135138
136139 // The list of traffic signs detected by the sensor.
137140 //
138141 // \note OSI uses singular instead of plural for repeated field names.
139142 //
140- repeated DetectedTrafficSign traffic_sign = 10 ;
143+ repeated DetectedTrafficSign traffic_sign = 11 ;
141144
142145 // General information about the \c DetectedTrafficLight .
143146 //
144- optional DetectedEntityHeader traffic_light_header = 102 ;
147+ optional DetectedEntityHeader traffic_light_header = 12 ;
145148
146149 // The list of traffic lights detected by the sensor.
147- //
150+ //
148151 // \note OSI uses singular instead of plural for repeated field names.
149152 //
150- repeated DetectedTrafficLight traffic_light = 11 ;
153+ repeated DetectedTrafficLight traffic_light = 13 ;
151154
152155 // General information about the \c DetectedRoadMarking .
153156 //
154- optional DetectedEntityHeader road_marking_header = 103 ;
157+ optional DetectedEntityHeader road_marking_header = 14 ;
155158
156159 // The list of road markings detected by the sensor.
157160 // This excludes lane boundary markings.
158161 //
159- // \note OSI uses singular instead of plural for repeated field names.
162+ // \note OSI uses singular instead of plural for repeated field names.
160163 //
161- repeated DetectedRoadMarking road_marking = 12 ;
164+ repeated DetectedRoadMarking road_marking = 15 ;
162165
163166 // General information about the \c DetectedLane .
164167 //
165- optional DetectedEntityHeader lane_header = 104 ;
168+ optional DetectedEntityHeader lane_header = 16 ;
166169
167- // The list of lanes detected by the sensor.
170+ // The list of lane detected by the sensor
168171 //
169- // \note OSI uses singular instead of plural for repeated field names.
172+ // \note OSI uses singular instead of plural for repeated field names.
173+ //
174+ repeated DetectedLane lane = 17 ;
175+
176+ // The ID of the lane the host vehicle travels on in the DetectedLane data,
177+ // relative to the sensor.
170178 //
171- repeated DetectedLane lane = 13 ;
179+ optional Identifier host_vehicle_lane_id = 18 ;
172180
173181 // General information about the \c DetectedLaneBoundary .
174182 //
175- optional DetectedEntityHeader lane_boundary_header = 105 ;
183+ optional DetectedEntityHeader lane_boundary_header = 19 ;
176184
177185 // The list of lane boundary markings detected by the sensor.
178186 //
179- // \note OSI uses singular instead of plural for repeated field names.
187+ // \note OSI uses singular instead of plural for repeated field names.
180188 //
181- repeated DetectedLaneBoundary lane_boundary = 14 ;
189+ repeated DetectedLaneBoundary lane_boundary = 20 ;
182190
183191 // General information about the \c DetectedLandmark .
184192 //
185- optional DetectedEntityHeader landmark_header = 1000 ;
193+ optional DetectedEntityHeader landmark_header = 21 ;
186194
187195 // The list of landmarks detected by the sensor.
188196 //
189- // \note OSI uses singular instead of plural for repeated field names.
197+ // \note OSI uses singular instead of plural for repeated field names.
190198 //
191- repeated DetectedLandmark landmark = 1001 ;
199+ repeated DetectedLandmark landmark = 22 ;
192200
193201 // General information about the \c DetectedOccupant .
194202 //
195- optional DetectedEntityHeader occupant_header = 106 ;
203+ optional DetectedEntityHeader occupant_header = 23 ;
196204
197- // The list of occupants of the host vehicle.
205+ // The list of occupants of the host vehicle
198206 //
199- // \note OSI uses singular instead of plural for repeated field names.
200- //
201- repeated DetectedOccupant occupant = 16 ;
202-
203- // The ID of the lane the host vehicle travels on in the DetectedLane data,
204- // relative to the sensor.
207+ // \note OSI uses singular instead of plural for repeated field names.
205208 //
206- optional Identifier host_vehicle_lane_id = 15 ;
209+ repeated DetectedOccupant occupant = 24 ;
207210
208211 // Low level feature data interface.
209212 //
210213 // Low Level feature data is optionally provided by sensor models that
211214 // model sensors giving access to this low level data, i.e. data prior to
212215 // object hypothesis and tracking.
213216 //
214- optional FeatureData feature_data = 17 ;
217+ optional FeatureData feature_data = 25 ;
218+
219+ // The sensors estimated location of the host vehicle
220+ //
221+ // \note This value is only set by sensors that are able to
222+ // provide an own estimation of the host vehicle location.
223+ // \note Note that dimension and base_polygon need not be set.
224+ //
225+ optional BaseMoving host_vehicle_location = 26 ;
215226
216- // Host Vehicle Data.
227+ // The sensors estimated location error of the host vehicle
217228 //
218- // Host vehicle data is data that the host vehicle knows about itself,
219- // e.g. from location sensors, internal sensors and ECU bus data, etc.,
220- // that is made available to sensors as input .
229+ // \note This value is only set by sensors that are able to
230+ // provide an own estimation of the host vehicle location.
231+ // \note Note that dimension and base_polygon need not be set .
221232 //
222- optional HostVehicleData host_vehicle_data_id = 18 ;
233+ optional BaseMoving host_vehicle_location_rmse = 27 ;
223234}
224235
225236//
0 commit comments