@@ -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
28- {
29- // The ID of the sensor at host vehicle's mounting_position.
30- //
31- // This ID can equal \c DetectionHeader::sensor_id, if SensorData holds only
32- // data from one sensor/sensor model.
39+ {
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,143 +68,153 @@ message SensorData
6068 //
6169 optional Timestamp timestamp = 2 ;
6270
63- // Ground truth w.r.t. global coordinate system
71+ // The ID of the sensor at host vehicle's mounting_position.
6472 //
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
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.
7276 //
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.
77- //
78- optional SensorView sensor_view = 4 ;
79-
80- // The ID of the host vehicle in the ground_truth data.
81- //
82- optional Identifier host_vehicle_id = 5 ;
83-
84- // The mounting position of the sensor (origin and orientation of the sensor coordinate system)
85- // given in vehicle coordinates [1].
77+ optional Identifier sensor_id = 3 ;
78+
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.
8688 //
8789 // \arg \b x-direction of sensor coordinate system: sensor viewing direction
8890 // \arg \b z-direction of sensor coordinate system: sensor (up)
8991 // \arg \b y-direction of sensor coordinate system: perpendicular to x and z right hand system
9092 //
91- // \par References:
93+ // \par References:
9294 // [1] DIN ISO 8855:2013-11
9395 //
9496 // \note This field is usually static during the simulation.
95- // \note The origin of vehicle's coordinate system in world frame is
97+ // \note The origin of vehicle's coordinate system in world frame is
9698 // ( \c Vehicle::base.position + Inverse_Rotation_yaw_pitch_roll(\c Vehicle::base.orientation) * \c Vehicle::bbcenter_to_rear) .
97- // The orientation of the vehicle's coordinate system is equal to the orientation
99+ // The orientation of the vehicle's coordinate system is equal to the orientation
98100 // of the vehicle's bounding box \c Vehicle::base.orientation.
99101 //
100- optional MountingPosition mounting_position = 6 ;
102+ optional MountingPosition mounting_position = 4 ;
101103
102104 // The root mean squared error of the mounting position.
103105 //
104- 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.
112+ //
113+ optional SensorView sensor_view = 6 ;
105114
106115 // The timestamp of the last real-world measurement (e.g. GT input) that
107116 // this set of sensor data takes into account. This in effect is the last
108117 // time instance of reality the measurements correspond to. See field
109118 // \c SensorData::timestamp for a detailed discussion. This value is also
110119 // the upper bound to the \c DetectedObjectHeader::measurement_time and the
111120 // feature data \c SensorDetectionHeader::measurement_time fields.
112- //
113- optional Timestamp last_measurement_time = 8 ;
121+ //
122+ optional Timestamp last_measurement_time = 7 ;
114123
115124 // General information about the \c DetectedObject .
116- //
117- optional DetectedEntityHeader object_header = 100 ;
118-
125+ //
126+ optional DetectedEntityHeader object_header = 8 ;
127+
119128 // The list of objects detected by the sensor as perceived by the sensor.
120129 //
121130 repeated DetectedObject object = 9 ;
122-
131+
123132 // General information about the \c DetectedTrafficSign .
124- //
125- optional DetectedEntityHeader traffic_sign_header = 101 ;
133+ //
134+ optional DetectedEntityHeader traffic_sign_header = 10 ;
126135
127136 // The list of traffic signs detected by the sensor
128137 //
129- repeated DetectedTrafficSign traffic_sign = 10 ;
130-
138+ repeated DetectedTrafficSign traffic_sign = 11 ;
139+
131140 // General information about the \c DetectedTrafficLight .
132- //
133- optional DetectedEntityHeader traffic_light_header = 102 ;
141+ //
142+ optional DetectedEntityHeader traffic_light_header = 12 ;
134143
135144 // The list of traffic lights detected by the sensor
136- //
137- repeated DetectedTrafficLight traffic_light = 11 ;
145+ //
146+ repeated DetectedTrafficLight traffic_light = 13 ;
138147
139148 // General information about the \c DetectedRoadMarking .
140- //
141- optional DetectedEntityHeader road_marking_header = 103 ;
149+ //
150+ optional DetectedEntityHeader road_marking_header = 14 ;
142151
143152 // The list of road marking detected by the sensor.
144153 // This excludes lane boundary markings.
145154 //
146- repeated DetectedRoadMarking road_marking = 12 ;
147-
155+ repeated DetectedRoadMarking road_marking = 15 ;
156+
148157 // General information about the \c DetectedLane .
149- //
150- optional DetectedEntityHeader lane_header = 104 ;
158+ //
159+ optional DetectedEntityHeader lane_header = 16 ;
151160
152161 // The list of lane detected by the sensor
153- //
154- repeated DetectedLane lane = 13 ;
155-
162+ //
163+ repeated DetectedLane lane = 17 ;
164+
165+ // The ID of the lane the host vehicle travels on in the DetectedLane data,
166+ // relative to the sensor.
167+ //
168+ optional Identifier host_vehicle_lane_id = 18 ;
169+
156170 // General information about the \c DetectedLaneBoundary .
157- //
158- optional DetectedEntityHeader lane_boundary_header = 105 ;
171+ //
172+ optional DetectedEntityHeader lane_boundary_header = 19 ;
159173
160174 // The list of lane boundary markings detected by the sensor.
161175 //
162- repeated DetectedLaneBoundary lane_boundary = 14 ;
176+ repeated DetectedLaneBoundary lane_boundary = 20 ;
163177
164178 // General information about the \c DetectedLandmark .
165- //
166- optional DetectedEntityHeader landmarks_header = 1000 ;
179+ //
180+ optional DetectedEntityHeader landmarks_header = 21 ;
167181
168182 // The list of landmarks detected by the sensor.
169183 //
170- repeated DetectedLandmark landmarks = 1001 ;
171-
184+ repeated DetectedLandmark landmarks = 22 ;
185+
172186 // General information about the \c DetectedOccupant .
173- //
174- optional DetectedEntityHeader occupant_header = 106 ;
187+ //
188+ optional DetectedEntityHeader occupant_header = 23 ;
175189
176190 // The list of occupants of the host vehicle
177- //
178- repeated DetectedOccupant occupant = 16 ;
179-
180- // The ID of the lane the host vehicle travels on in the DetectedLane data,
181- // relative to the sensor.
182191 //
183- optional Identifier host_vehicle_lane_id = 15 ;
184-
192+ repeated DetectedOccupant occupant = 24 ;
193+
185194 // Low level feature data interface.
186195 //
187196 // Low Level feature data is optionally provided by sensor models that
188197 // model sensors giving access to this low level data, i.e. data prior to
189198 // object hypothesis and tracking.
190199 //
191- optional FeatureData feature_data = 17 ;
192-
193- // Host Vehicle Data
200+ optional FeatureData feature_data = 25 ;
201+
202+ // The sensors estimated location of the host vehicle
203+ //
204+ // \note This value is only set by sensors that are able to
205+ // provide an own estimation of the host vehicle location.
206+ // \note Note that dimension and base_polygon need not be set.
194207 //
195- // Host vehicle data is data that the host vehicle knows about itself,
196- // e.g. from location sensors, internal sensors and ECU bus data, etc.,
197- // that is made available to sensors as input.
208+ optional BaseMoving host_vehicle_location = 26 ;
209+
210+ // The sensors estimated location error of the host vehicle
198211 //
199- optional HostVehicleData host_vehicle_data_id = 18 ;
212+ // \note This value is only set by sensors that are able to
213+ // provide an own estimation of the host vehicle location.
214+ // \note Note that dimension and base_polygon need not be set.
215+ //
216+ optional BaseMoving host_vehicle_location_rmse = 27 ;
217+
200218}
201219
202220//
0 commit comments