diff --git a/doc/images/OSI_DetectedTrafficLight.svg b/doc/images/OSI_DetectedTrafficLight.svg new file mode 100644 index 000000000..98f4d2757 --- /dev/null +++ b/doc/images/OSI_DetectedTrafficLight.svg @@ -0,0 +1,6799 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/images/OSI_USSensor.svg b/doc/images/OSI_USSensor.svg new file mode 100644 index 000000000..627954dae --- /dev/null +++ b/doc/images/OSI_USSensor.svg @@ -0,0 +1,1348 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/images/OSI_USSensor_direct.svg b/doc/images/OSI_USSensor_direct.svg new file mode 100644 index 000000000..fb6c84027 --- /dev/null +++ b/doc/images/OSI_USSensor_direct.svg @@ -0,0 +1,1366 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/images/OSI_USSensor_indirect.svg b/doc/images/OSI_USSensor_indirect.svg new file mode 100644 index 000000000..cd6f6853f --- /dev/null +++ b/doc/images/OSI_USSensor_indirect.svg @@ -0,0 +1,1452 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + X + X + + + diff --git a/osi_featuredata.proto b/osi_featuredata.proto index 3db1a575c..7afe5053a 100644 --- a/osi_featuredata.proto +++ b/osi_featuredata.proto @@ -8,8 +8,8 @@ import "osi_common.proto"; package osi3; // -// \brief Interface for sensor data, in contrast to interpreted data after -// object hypothesis and tracking. +// \brief Interface for sensor data containing information without a history +// in contrast to interpreted data after object hypothesis and tracking. // // All information regarding the environment is given with respect to the sensor // coordinate system specified in \c SensorDetectionHeader::mounting_position. @@ -35,6 +35,16 @@ message FeatureData // \note OSI uses singular instead of plural for repeated field names. // repeated LidarDetectionData lidar_sensor = 3; + + // Ultrasonic detections for multiple ultrasonic sensors (sensor fusion). + // + // \note OSI uses singular instead of plural for repeated field names. + // + // \note Required for ultrasonic sensors: Detections will be send by the + // emitting ultrasonic sensor, including all indirect detections received + // by neighbouring sensors. + // + repeated UltrasonicDetectionData ultrasonic_sensor = 4; } // @@ -53,7 +63,7 @@ message SensorDetectionHeader optional Timestamp measurement_time = 1; // Monotonous counter to identify the exact cycle. - // Generally the detection function is called periodic and + // In general the detection function is called periodically and // \c #cycle_counter corresponds to the number of periods. // optional uint64 cycle_counter = 2; @@ -104,14 +114,18 @@ message SensorDetectionHeader // optional uint32 number_of_valid_detections = 6; - // The ID of the sensor at host vehicle's mounting_position. + // The ID of the sensor at host vehicle's \c #mounting_position. // // This ID can equal \c SensorData::sensor_id, if \c SensorData holds only // data from one sensor/sensor model. // optional Identifier sensor_id = 7; + // The extended qualifier describes the reason (not the effect) why the + // event data qualifier, \c #data_qualifier, is reduced or not available. // + optional ExtendedQualifier extended_qualifier = 8; + // Data qualifier communicates the overall availability of the // interface. // @@ -144,6 +158,69 @@ message SensorDetectionHeader // Sensor temporary available. // DATA_QUALIFIER_TEMPORARY_AVAILABLE = 6; + + // Sensor invalid. + // + DATA_QUALIFIER_INVALID = 7; + } + + // The extended qualifier describes the reason (not the effect) why the + // event data qualifier, \c #data_qualifier, is reduced or not available. + // + enum ExtendedQualifier + { + // Unknown (must not be used in ground truth). + // + EXTENDED_QUALIFIER_UNKNOWN = 0; + + // Other (unspecified but known). + // + EXTENDED_QUALIFIER_OTHER = 1; + + // Normal operation mode. + // + EXTENDED_QUALIFIER_NORMAL_OPERATION_MODE = 2; + + // Power up or down. + // + EXTENDED_QUALIFIER_POWER_UP_OR_DOWN = 3; + + // Sensor not calibrated. + // + EXTENDED_QUALIFIER_SENSOR_NOT_CALIBRATED = 4; + + // Sensor blocked. + // + EXTENDED_QUALIFIER_SENSOR_BLOCKED = 5; + + // Sensor misaligned. + // + EXTENDED_QUALIFIER_SENSOR_MISALIGNED = 6; + + // Bad sensor environmental condition (e.g. Darkness for vision). + // + EXTENDED_QUALIFIER_BAD_SENSOR_ENVIRONMENTAL_CONDITION = 7; + + // Reduced field of view. + // + EXTENDED_QUALIFIER_REDUCED_FIELD_OF_VIEW = 8; + + // Input not available. + // + EXTENDED_QUALIFIER_INPUT_NOT_AVAILABLE = 9; + + // Internal reason (e.g. an internal HW or SW error has occurred). + // + EXTENDED_QUALIFIER_INTERNAL_REASON = 10; + + // External disturbance, sensor specific for front radar (e.g. + // Interference of different radar sensors). + // + EXTENDED_QUALIFIER_EXTERNAL_DISTURBANCE = 11; + + // Beginning blockage, sensor specific for front radar. + // + EXTENDED_QUALIFIER_BEGINNING_BLOCKAGE = 12; } } @@ -171,6 +248,8 @@ message RadarDetection // Existence probability of the detection not based on history. Value does // not depend on any past experience with similar detections. // + // Range: [0.0, 1.0] + // // \note Use as confidence measure where a low value means less confidence // and a high value indicates strong confidence. // @@ -182,7 +261,7 @@ message RadarDetection // optional Identifier object_id = 2; - // Measured position of the detection, given in spherical coordinates in the + // Measured position of the detection given in spherical coordinates in the // sensor coordinate system. // optional Spherical3d position = 3; @@ -218,6 +297,8 @@ message RadarDetection // Describes the possibility whether more than one object may have led to // this detection. // + // Range: [0.0, 1.0] + // optional double point_target_probability = 9; // Ambiguity Information: @@ -225,9 +306,10 @@ message RadarDetection // indicated by an identical ambiguity ID. // // \note Unambiguous measurements have the ambiguity ID 0. - // \note Multiple seperate detections from e.g. a large object do not - // on their own necessarily create any ambiguity, i.e. they do not - // usually share an an ambiguity ID. They can however be ambiguous + // + // \note Multiple seperate detections, from e.g. a large object, do not + // necessarily on their own create any ambiguity. Therefore they do not + // usually share an ambiguity ID. They can however be ambiguous // with other detections. // optional Identifier ambiguity_id = 10; @@ -261,6 +343,8 @@ message LidarDetection // Existence probability of the detection not based on history. Value does // not depend on any past experience with similar detections. // + // Range: [0.0, 1.0] + // // \note Used as confidence measure where a low value means less confidence // and a high value indicates strong confidence. // @@ -272,7 +356,7 @@ message LidarDetection // optional Identifier object_id = 2; - // Measured position of the detection, given in spherical coordinates in the + // Measured position of the detection given in spherical coordinates in the // sensor coordinate system. // optional Spherical3d position = 3; @@ -281,8 +365,8 @@ message LidarDetection // optional Spherical3d position_rmse = 4; - // Height value, which is required when multiple scan points are vertically - // clustered. Only vertical clustering is allowed (z-axis). + // The height value which is required when multiple scan points are + // vertically clustered. Only vertical clustering is allowed (z-axis). // // Unit: [m] // @@ -311,12 +395,168 @@ message LidarDetection // optional DetectionClassification classification = 9; - // Lambertian reflectivity + // Lambertian reflectivity. // optional double reflectivity = 10; } // +// \brief Specific header extension for ultrasonic sensors. +// +message UltrasonicDetectionSpecificHeader +{ + // Maximal range of the ultrasonic sensor. + // + // Unit: [m] + // + optional double max_range = 1; + + // The current number of valid indirect detections in the detections list. + // The detections are measured by a virtual sensor (i.e. sender and + // receiver are different sensors). + // + // \note This value has to be set if the list contains invalid detections. + // + optional uint32 number_of_valid_indirect_detections = 2; +} + +// +// \brief Data from one ultrasonic sensor including a list of detections. +// This list is generated by the sending ultrasonic sensor. Indirectly received +// signals from other ultrasonic sensors are included in this message. +// +// Direct detections: +// +// Sending: Ultrasonic Sensor ID 1 +// +// Receiving: +// - Direct: Ultrasonic Sensor ID 1 +// - Indirect: Ultrasonic Sensor ID 2 and 3 +// +// \image html OSI_USSensor.svg +// +// \note Direct detecions lies on circles with the sending sensor as centre. +// +message UltrasonicDetectionData +{ + // Header attributes of ultrasonic detection from one ultrasonic sensor. + // + optional SensorDetectionHeader header = 1; + + // Additional header attributes of ultrasonic detection from one ultrasonic + // sensor. + // + optional UltrasonicDetectionSpecificHeader specific_header = 3; + + // List of ultrasonic detections. + // + // \note OSI uses singular instead of plural for repeated field names. + // + repeated UltrasonicDetection detection = 2; + + // List of ultrasonic indirect detections (sender and receiver sensors are + // not the same). + // + // \note OSI uses singular instead of plural for repeated field names. + // + repeated UltrasonicIndirectDetection indirect_detection = 4; +} + +// +// \brief Ultrasonic detection from the sensor (same sensor as sender and +// receiver). +// +// Direct detections: +// +// Sending: Ultrasonic Sensor ID 1 +// +// Receiving: Ultrasonic Sensor ID 1 +// +// \image html OSI_USSensor_direct.svg +// +// \note Direct detecions lies on circles with the sensor as centre. +// +message UltrasonicDetection +{ + // Existence probability of the detection not based on history. Value does + // not depend on any past experience with similar detections. + // + // Range: [0.0, 1.0] + // + // \note Used as confidence measure where a low value means less confidence + // and a high value indicates strong confidence. + // + optional double existence_probability = 1; + + // ID of the detected object this detection is associated to. + // + // \note ID = MAX(uint64) indicates no reference to an object. + // + optional Identifier object_id = 2; + + // Measured distance (radius) of the detection. + // + // Unit: [m] + // + optional double distance = 3; +} + +// +// \brief Ultrasonic detection received by another ultrasonic sensor (different +// sensors as sender and receiver). +// +// Indirect detections: +// +// Sending: Ultrasonic Sensor ID 1 +// +// Receiving: Ultrasonic Sensor ID 2 and 3 +// +// \image html OSI_USSensor_indirect.svg +// +// \note Indirect detecions lies on ellipses with the sending resp. receiving +// sensor in the focal points. +// +message UltrasonicIndirectDetection +{ + // Existence probability of the detection not based on history. Value does + // not depend on any past experience with similar detections. + // + // Range: [0.0, 1.0] + // + // \note Used as confidence measure where a low value means less confidence + // and a high value indicates strong confidence. + // + optional double existence_probability = 1; + + // ID of the detected object this detection is associated to. + // + // \note ID = MAX(uint64) indicates no reference to an object. + // + optional Identifier object_id = 2; + + // First parameter b of an ellipsoid equation. + // + // Unit: [m] + // + optional double ellipsoid_radial = 3; + + // Second parameter b of an ellipsoid equation. + // + // Unit: [m] + // + optional double ellipsoid_axial = 4; + + // The ID of the sensor's receiver. Sender ID is stored in the header \c + // SensorDetectionHeader. + // + optional Identifier receiver_id = 5; + + // The vector to the receiver's origin in sending ultrasonic sensor frame. + // The vector is also the direction of \c #ellipsoid_axial. + // + optional Vector3d receiver_origin = 6; +} + // Definition of a basic detection classifications. // enum DetectionClassification diff --git a/osi_sensorspecific.proto b/osi_sensorspecific.proto index c6cad1d04..8d8121f5e 100644 --- a/osi_sensorspecific.proto +++ b/osi_sensorspecific.proto @@ -2,6 +2,8 @@ syntax = "proto2"; option optimize_for = SPEED; +import "osi_common.proto"; + package osi3; // @@ -43,6 +45,104 @@ message CameraSpecificObjectData // message UltrasonicSpecificObjectData { - // currently no fields. + // Maximum measured distance from one sensor which leads to the calculation + // of this object. + // + // Unit: [m] + // + optional double maximum_measurement_distance_sensor = 1; + + // This value indicates the propability height for the classification in the + // calculated object. + // + // Unit: [%] + // + optional double probability = 2; + + // This indicates if the detection was calculated based on one or multiple + // sensors. + // + optional TrilaterationStatus trilateration_status = 3; + + // Describes the general moving direction of the detection. + // + optional Trend trend = 4; + + // Ultrasonic signalway. Sender to receiver. + // + // \note This information can also be derived from the corresponding \c + // UltrasonicDetection. \c UltrasonicDetection refer to DetectedXXX by \c + // UltrasonicDetection::object_id. + // + repeated Signalway signalway = 5; + + // + // This indicates if the object was calculated based on one or multiple + // sensors. // + enum TrilaterationStatus + { + // Unknown (must not be used in ground truth). + // + TRILATERATION_STATUS_UNKNOWN = 0; + + // Other (unspecified but known). + // + TRILATERATION_STATUS_OTHER = 1; + + // No trilateration used. + // + TRILATERATION_STATUS_NOT_TRILATERATED = 2; + + // Trilateration used. + // + TRILATERATION_STATUS_TRILATERATED = 3; + } + + // + // Describes the general moving direction of the detection. + // + enum Trend + { + // Unknown (must not be used in ground truth). + // + TREND_UNKNOWN = 0; + + // Other (unspecified but known). + // + TREND_OTHER = 1; + + // Distance (object, sensor) is constant. The object has approached in + // the past before it was constant. + // + TREND_CONSTANT_APPROACHING = 2; + + // Distance (object, sensor) is constant. The object has departed in the + // past before it was constant or there is no history. + // + TREND_CONSTANT = 3; + + // Distance (object, sensor) is decreasing. + // + TREND_APPROACHING = 4; + + // Distance (object, sensor) is increasing. + // + TREND_DEPARTING = 5; + } + + // + // \brief Message encapsulates all data for detected objects that is + // specific to ultrasonic sensors. + // + message Signalway + { + // The ID of the ultrasonic sensor's sender. + // + optional Identifier sender_id = 1; + + // The ID of the ultrasonic sensor's receiver. + // + optional Identifier receiver_id = 2; + } }