@@ -172,6 +172,57 @@ message GenericSensorView
172172 optional GenericSensorViewConfiguration view_configuration = 1 ;
173173}
174174
175+ //
176+ // \brief Obstruction values for a given object and sensor.
177+ //
178+ // For a given object in the ground truth data, and for a particular sensor, how
179+ // obstructed is that object from the point of view of that sensor.
180+ //
181+ message Obstruction
182+ {
183+ // \brief ID of the object in ground truth data
184+ //
185+ // This field is required as without it the entire message ships
186+ // no useful information.
187+ //
188+ optional Identifier ground_truth_id = 1 ;
189+
190+ // \brief Level of occlusion for the object.
191+ //
192+ // The occlusion level represents a fraction of object volume exposed to the
193+ // sensor assuming the sensor had a full 360 degree field of view (so ignoring
194+ // any truncation of that object).
195+ //
196+ // The possibly occluding objects might be moving ones (other vehicles, pedestrians
197+ // etc) as well as stationary ones (like buildings, trees etc).
198+ //
199+ // Value in range between 0.0 (not occluded) and 1.0 (fully occluded).
200+ //
201+ optional double occlusion = 2 ;
202+
203+ // \brief Level of truncation for the object.
204+ //
205+ // The truncation level represents a fraction of object volume remaining
206+ // outside of sensor's field of view. The truncation value is independent of
207+ // the occlusion value, so something can be fully occluded but not truncated.
208+ //
209+ // The value is in range between 0.0 (fully within FOV) and 1.0 (fully truncated).
210+ //
211+ optional double truncation = 3 ;
212+
213+ // \brief Total visible proportion for the object.
214+ //
215+ // This value combines both truncation and occlusion to provide a indicate how
216+ // visible an object is from the view of a particular sensor.
217+ //
218+ // \note This is not the sum of the occlusion and truncation values as the
219+ // two values are independent, so they may overlap, or they may be distinct.
220+ //
221+ // The value is in the range 0.0 (fully hidden) and 1.0 (fully visible).
222+ //
223+ optional double visible = 4 ;
224+ }
225+
175226//
176227// \brief Definition of the radar sensor view.
177228//
@@ -192,6 +243,12 @@ message RadarSensorView
192243 //
193244 repeated Reflection reflection = 2 ;
194245
246+ // Obstruction level for the objects
247+ //
248+ // \note OSI uses singular instead of plural for repeated field names.
249+ //
250+ repeated Obstruction obstruction = 3 ;
251+
195252 //
196253 // \brief Definition of the radar reflection.
197254 //
@@ -265,6 +322,12 @@ message LidarSensorView
265322 //
266323 repeated Reflection reflection = 2 ;
267324
325+ // Obstruction level for the objects
326+ //
327+ // \note OSI uses singular instead of plural for repeated field names.
328+ //
329+ repeated Obstruction obstruction = 3 ;
330+
268331 //
269332 // \brief Definition of the lidar reflection.
270333 //
@@ -331,6 +394,12 @@ message CameraSensorView
331394 // camera sensor input configuration.
332395 //
333396 optional bytes image_data = 2 ;
397+
398+ // Obstruction level for the objects
399+ //
400+ // \note OSI uses singular instead of plural for repeated field names.
401+ //
402+ repeated Obstruction obstruction = 3 ;
334403}
335404
336405//
0 commit comments