Skip to content

Commit 2625821

Browse files
committed
Seperate SensorView from SensorData
This commit completely seperates SensorView as the new input interface for sensor models from SensorData as the output interface for sensor models. It also regularizes sensor_id and mounting_position treatment and adds support for virtual sensors that contain multiple physical detectors (actual physical sensors). All potential top-level messages now also contain a proper interface version field.
1 parent 52d2e7b commit 2625821

File tree

6 files changed

+844
-507
lines changed

6 files changed

+844
-507
lines changed

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ set(OSI_PROTO_FILES
6262
osi_object.proto
6363
osi_occupant.proto
6464
osi_sensordata.proto
65-
osi_sensorinputconfiguration.proto
65+
osi_sensorviewconfiguration.proto
6666
osi_sensorspecific.proto
6767
osi_sensorview.proto
6868
)

osi_sensordata.proto

Lines changed: 91 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -2,36 +2,44 @@ syntax = "proto2";
22

33
option optimize_for = SPEED;
44

5+
import "osi_version.proto";
56
import "osi_common.proto";
67
import "osi_detectedlandmark.proto";
78
import "osi_detectedlane.proto";
89
import "osi_detectedobject.proto";
910
import "osi_detectedoccupant.proto";
10-
import "osi_groundtruth.proto";
1111
import "osi_sensorview.proto";
1212
import "osi_featuredata.proto";
13-
import "osi_hostvehicledata.proto";
1413

1514
package 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
//
2738
message 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,137 @@ 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
194-
//
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.
198-
//
199-
optional HostVehicleData host_vehicle_data_id = 18;
200+
optional FeatureData feature_data = 25;
201+
200202
}
201203

202204
//

0 commit comments

Comments
 (0)