Skip to content

Commit 95ea2b2

Browse files
0815-codeThomasNaderBMW
authored andcommitted
Add HostVehicleData to SensorData #480
Signed-off-by: Schlömicher Thomas <thomas.schloemicher@avl.com> Signed-off-by: Schloemicher, Thomas AVL,AT <thomas.schloemicher@avl.com>
1 parent 4b31b9d commit 95ea2b2

File tree

1 file changed

+328
-0
lines changed

1 file changed

+328
-0
lines changed

osi_sensordata.proto.orig

Lines changed: 328 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,328 @@
1+
syntax = "proto2";
2+
3+
option optimize_for = SPEED;
4+
5+
import "osi_version.proto";
6+
import "osi_common.proto";
7+
import "osi_detectedtrafficsign.proto";
8+
import "osi_detectedtrafficlight.proto";
9+
import "osi_detectedroadmarking.proto";
10+
import "osi_detectedlane.proto";
11+
import "osi_detectedobject.proto";
12+
import "osi_detectedoccupant.proto";
13+
import "osi_sensorview.proto";
14+
import "osi_featuredata.proto";
15+
<<<<<<< HEAD
16+
import "osi_logicaldetectiondata.proto";
17+
=======
18+
import "osi_hostvehicledata.proto"
19+
>>>>>>> Add HostVehicleData to SensorData #480
20+
21+
package osi3;
22+
23+
//
24+
// \brief The header attributes of each detected entity.
25+
//
26+
message DetectedEntityHeader
27+
{
28+
// Time stamp at which the measurement was taken (not the time at which it
29+
// was processed or at which it is transmitted) in the global synchronized
30+
// time.
31+
//
32+
// \note See \c SensorData::timestamp and \c
33+
// SensorData::last_measurement_time for detailed discussions on the
34+
// semantics of time-related fields.
35+
//
36+
optional Timestamp measurement_time = 1;
37+
38+
// Continuous up counter to identify the cycle.
39+
//
40+
optional uint64 cycle_counter = 2;
41+
42+
// Data Qualifier expresses to what extent the content of this event can be
43+
// relied on.
44+
//
45+
optional DataQualifier data_qualifier = 3;
46+
47+
//
48+
// Data qualifier communicates the overall availability of the
49+
// interface.
50+
//
51+
enum DataQualifier
52+
{
53+
// Unknown (must not be used in ground truth).
54+
//
55+
DATA_QUALIFIER_UNKNOWN = 0;
56+
57+
// Other (unspecified but known).
58+
//
59+
DATA_QUALIFIER_OTHER = 1;
60+
61+
// Data is available.
62+
//
63+
DATA_QUALIFIER_AVAILABLE = 2;
64+
65+
// Reduced data is available.
66+
//
67+
DATA_QUALIFIER_AVAILABLE_REDUCED = 3;
68+
69+
// Data is not available.
70+
//
71+
DATA_QUALIFIER_NOT_AVAILABLE = 4;
72+
73+
// Sensor is blind.
74+
//
75+
DATA_QUALIFIER_BLINDNESS = 5;
76+
77+
// Sensor temporary available.
78+
//
79+
DATA_QUALIFIER_TEMPORARY_AVAILABLE = 6;
80+
}
81+
}
82+
83+
//
84+
// \brief The sensor information derived from \c GroundTruth and processed by
85+
// sensor-models.
86+
//
87+
// The sensor information is supposed to imitate the output of real sensors.
88+
// All information regarding the environment is given with respect to
89+
// the virtual sensor coordinate system specified in
90+
// \c SensorData::mounting_position, except for feature data, which is given
91+
// with respect to the physical sensor coordinate system specified in the
92+
// corresponding physical sensor's coordinate system.
93+
//
94+
// When simulating multiple distinct sensors, each sensor can produce an
95+
// individual copy of the \c SensorData interface. This allows an independent
96+
// treatment of the sensors.
97+
//
98+
// Sensor fusion models can consolidate multiple \c SensorData interfaces into
99+
// one consolidated \c SensorData interface. This can happen either in
100+
// separate logical models, consuming and producing \c SensorData interfaces,
101+
// or it can happen as part of a combined sensor/logical model, that consumes
102+
// \c SensorView interfaces and directly produces one consolidated \c SensorData
103+
// output.
104+
//
105+
message SensorData
106+
{
107+
// The interface version used by the sender.
108+
//
109+
optional InterfaceVersion version = 1;
110+
111+
// The timestamp of the sensor data. Zero time is arbitrary but must be
112+
// identical for all messages. Zero time does not need to coincide with
113+
// the unix epoch. Recommended is the starting time point of the
114+
// simulation.
115+
//
116+
// \note This is the point in time that the sensor data message becomes
117+
// available to the rest of the system (i.e. the driving functions), so
118+
// it corresponds with the sending time and thus takes the latency of
119+
// internal processing of the sensor into account. Latencies of bus
120+
// communications, etc., that occur after the sensor output have to be
121+
// applied on top of this, if needed.
122+
//
123+
// The time that the actual measurement was performed (which will usually
124+
// correspond with the timestamp of the \c GroundTruth the sensor model
125+
// processed to arrive at these results) can be found in the additional
126+
// field \c SensorData::last_measurement_time.
127+
//
128+
// For an ideal zero latency sensor the two timestamps would be the same
129+
// and would correspond with the timestamp from the current \c GroundTruth
130+
// message.
131+
//
132+
// For a sensor model that does not know its own internal latencies (e.g.
133+
// a dumb sensor with no internal time concept), the two timestamps might
134+
// also be identical, but delayed from the \c GroundTruth timestamp.
135+
//
136+
optional Timestamp timestamp = 2;
137+
138+
// Deprecated: Will be removed in next major release. Moved to HostVehicleData.VehiclePositionAndKinematics.
139+
// The sensors estimated location of the host vehicle
140+
//
141+
// \note This value is only set by sensors that are able to
142+
// provide an own estimation of the host vehicle location.
143+
// \note Note that dimension and base_polygon need not be set.
144+
// \note The parent frame of \c host_vehicle_location is the sensor frame.
145+
//
146+
optional BaseMoving host_vehicle_location = 3;
147+
148+
// Deprecated: Will be removed in next major release. Moved to HostVehicleData.VehiclePositionAndKinematics.
149+
// The sensors estimated location error of the host vehicle
150+
//
151+
// \note This value is only set by sensors that are able to
152+
// provide an own estimation of the host vehicle location.
153+
// \note Note that dimension and base_polygon need not be set.
154+
// \note The parent frame of \c host_vehicle_location_rmse is the sensor
155+
// frame.
156+
//
157+
optional BaseMoving host_vehicle_location_rmse = 4;
158+
159+
// The ID of the sensor at host vehicle's mounting_position.
160+
//
161+
// This is the ID of the virtual sensor, to be used in its detected
162+
// object output; it is distinct from the IDs of its physical detectors,
163+
// which are used in the detected features.
164+
//
165+
optional Identifier sensor_id = 5;
166+
167+
// The virtual mounting position of the sensor (origin and orientation
168+
// of the sensor coordinate system) given in vehicle coordinates [1].
169+
// The virtual position pertains to the sensor as a whole, regardless
170+
// of the actual position of individual physical detectors, and governs
171+
// the sensor-relative coordinates in detected objects of the sensor
172+
// as a whole. Individual features detected by individual physical
173+
// detectors are governed by the actual physical mounting positions
174+
// of the detectors, as indicated in the technology-specific sub-views
175+
// and sub-view configurations.
176+
//
177+
// \arg \b x-direction of sensor coordinate system: sensor viewing direction
178+
// \arg \b z-direction of sensor coordinate system: sensor (up)
179+
// \arg \b y-direction of sensor coordinate system: perpendicular to x and z
180+
// right hand system
181+
//
182+
// \par Reference:
183+
// [1] DIN Deutsches Institut fuer Normung e. V. (2013). <em>DIN ISO 8855 Strassenfahrzeuge - Fahrzeugdynamik und Fahrverhalten - Begriffe</em>. (DIN ISO 8855:2013-11). Berlin, Germany.
184+
//
185+
// \note This field is usually static during the simulation.
186+
// \note The origin of vehicle's coordinate system in world frame is
187+
// ( \c MovingObject::base . \c BaseMoving::position +
188+
// Inverse_Rotation_yaw_pitch_roll( \c MovingObject::base . \c
189+
// BaseMoving::orientation) * \c
190+
// MovingObject::VehicleAttributes::bbcenter_to_rear) . The orientation of
191+
// the vehicle's coordinate system is equal to the orientation of the
192+
// vehicle's bounding box \c MovingObject::base . \c
193+
// BaseMoving::orientation.
194+
//
195+
optional MountingPosition mounting_position = 6;
196+
197+
// The root mean squared error of the mounting position.
198+
//
199+
optional MountingPosition mounting_position_rmse = 7;
200+
201+
// Sensor view w.r.t. the sensor coordinate system
202+
//
203+
// This provides a copy of the \c SensorView data received by the sensor
204+
// for reference purposes. For complex sensors or logic models this
205+
// can be multiple copies.
206+
//
207+
// \note OSI uses singular instead of plural for repeated field names.
208+
//
209+
repeated SensorView sensor_view = 8;
210+
211+
// The timestamp of the last real-world measurement (e.g. GT input) that
212+
// this set of sensor data takes into account. This in effect is the last
213+
// time instance of reality the measurements correspond to. See field
214+
// \c SensorData::timestamp for a detailed discussion. This value is also
215+
// the upper bound to the \c DetectedEntityHeader::measurement_time and the
216+
// feature data \c SensorDetectionHeader::measurement_time fields.
217+
//
218+
optional Timestamp last_measurement_time = 9;
219+
220+
// General information about the \c DetectedStationaryObject .
221+
//
222+
optional DetectedEntityHeader stationary_object_header = 10;
223+
224+
// The list of stationary objects (e.g. landmarks) detected by the sensor.
225+
//
226+
repeated DetectedStationaryObject stationary_object = 11;
227+
228+
// General information about the \c DetectedMovingObject .
229+
//
230+
optional DetectedEntityHeader moving_object_header = 12;
231+
232+
// The list of moving objects detected by the sensor as perceived by
233+
// the sensor.
234+
//
235+
// \note OSI uses singular instead of plural for repeated field names.
236+
//
237+
repeated DetectedMovingObject moving_object = 13;
238+
239+
// General information about the \c DetectedTrafficSign .
240+
//
241+
optional DetectedEntityHeader traffic_sign_header = 14;
242+
243+
// The list of traffic signs detected by the sensor.
244+
//
245+
// \note OSI uses singular instead of plural for repeated field names.
246+
//
247+
repeated DetectedTrafficSign traffic_sign = 15;
248+
249+
// General information about the \c DetectedTrafficLight .
250+
//
251+
optional DetectedEntityHeader traffic_light_header = 16;
252+
253+
// The list of traffic lights detected by the sensor.
254+
//
255+
// \note OSI uses singular instead of plural for repeated field names.
256+
//
257+
repeated DetectedTrafficLight traffic_light = 17;
258+
259+
// General information about the \c DetectedRoadMarking .
260+
//
261+
optional DetectedEntityHeader road_marking_header = 18;
262+
263+
// The list of road markings detected by the sensor.
264+
// This excludes lane boundary markings.
265+
//
266+
// \note OSI uses singular instead of plural for repeated field names.
267+
//
268+
repeated DetectedRoadMarking road_marking = 19;
269+
270+
// General information about the \c DetectedLaneBoundary .
271+
//
272+
optional DetectedEntityHeader lane_boundary_header = 20;
273+
274+
// The list of lane boundary markings detected by the sensor.
275+
//
276+
// \note OSI uses singular instead of plural for repeated field names.
277+
//
278+
repeated DetectedLaneBoundary lane_boundary = 21;
279+
280+
// General information about the \c DetectedLane .
281+
//
282+
optional DetectedEntityHeader lane_header = 22;
283+
284+
// The list of lanes detected by the sensor
285+
//
286+
// \note OSI uses singular instead of plural for repeated field names.
287+
//
288+
repeated DetectedLane lane = 23;
289+
290+
// General information about the \c DetectedOccupant .
291+
//
292+
optional DetectedEntityHeader occupant_header = 24;
293+
294+
// The list of occupants of the host vehicle
295+
//
296+
// \note OSI uses singular instead of plural for repeated field names.
297+
//
298+
repeated DetectedOccupant occupant = 25;
299+
300+
// Low level feature data interface.
301+
//
302+
// Low Level feature data is optionally provided by sensor models that
303+
// model sensors giving access to this low level data, i.e. data prior to
304+
// object hypothesis and tracking.
305+
//
306+
optional FeatureData feature_data = 26;
307+
308+
<<<<<<< HEAD
309+
// Logical detection data interface.
310+
//
311+
// Logical detection data are provided by a transformation
312+
// (and optional sensor fusion)
313+
// performed by a sensor model or a logical model
314+
// that fuses multiple sensors and/or sensor types
315+
// into a single reference frame
316+
// of the so called logical/virtual sensor.
317+
// Therefore, all information is given with respect to
318+
// the reference frame of the logical/virtual sensor
319+
// \c SensorView::mounting_position (e.g. center of rear axle of the ego car)
320+
// in cartesian coordinates.
321+
//
322+
optional LogicalDetectionData logical_detection_data = 27;
323+
=======
324+
// Host vehicle data measured by the sensors.
325+
//
326+
optional HostVehicleData host_vehicle = 27;
327+
>>>>>>> Add HostVehicleData to SensorData #480
328+
}

0 commit comments

Comments
 (0)