|
| 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