Skip to content

Commit cf17a7d

Browse files
authored
Merge pull request #179 from OpenSimulationInterface/feature/sensorview-emancipation
Seperate SensorView from SensorData
2 parents 3588e69 + 0700eab commit cf17a7d

File tree

6 files changed

+858
-505
lines changed

6 files changed

+858
-505
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: 105 additions & 87 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,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

Comments
 (0)