diff --git a/osi_detectedlandmark.proto b/osi_detectedlandmark.proto index a0991e44f..74d555917 100644 --- a/osi_detectedlandmark.proto +++ b/osi_detectedlandmark.proto @@ -4,6 +4,7 @@ option optimize_for = SPEED; import "osi_common.proto"; import "osi_landmark.proto"; +import "osi_detectedobject.proto"; package osi; @@ -12,40 +13,49 @@ package osi; // message DetectedTrafficSign { + // Header attributes of detected traffic sign. + // + optional DetectedObjectHeader header = 1; + + // Specific id of the traffic sign as assigned by the sensor internally. Need not match with ground_truth_id. + // + optional Identifier tracking_id = 2; + // The id of the original traffic sign in the ground truth. // In case of a ghost sign (no corresponding ground truth), this field should be unset. - optional Identifier ground_truth_id = 1; + optional Identifier ground_truth_id = 3; // A list of candidates for this traffic sign as estimated by the sensor. // - repeated CandidateSign candidate_sign = 2; + repeated CandidateSign candidate_sign = 4; // A list of candidates for (a) possible supplementary sign(s) as estimated by the sensor. // - repeated CandidateSupplementarySign candidate_supplementary_sign = 3; + repeated CandidateSupplementarySign candidate_supplementary_sign = 5; // The detected geometry of the traffic sign. // - optional Geometry geometry = 4; + optional Geometry geometry = 6; - // The estimated probability that this traffic sign really exists. Range [0,1]. - // - optional double existence_probability = 5; - - // The measurement state of the traffic sign. - // - optional MeasurementState measurement_state = 6; + // The estimated probability that this traffic sign really exists, not based on history. + // + // \note Use as confidence measure where a low value means less confidence and a high value indicates + // strong confidence. + optional double existence_probability = 7; - // The standard deviation of the base parameters of the detected traffic sign. - // - optional BaseStationary standard_deviation = 7; + // The measurement state. + // + optional MeasurementState measurement_state = 8; + // The root mean square error of the base parameters of the detected traffic sign. + // + optional BaseStationary rmse = 9; // Links to the corresponding lanes. // - repeated RelevantLane relevant_lane = 8; + repeated RelevantLane relevant_lane = 10; // Definition of traffic sign geometries. - // + // enum Geometry { // Geometry of the traffic sign is unknown (must not be used in ground truth). @@ -68,27 +78,6 @@ message DetectedTrafficSign // GEOMETRY_SQUARE = 4; } - - // Definition of measurement states. - // - enum MeasurementState - { - // Measurement state is unknown (must not be used in ground truth). - // - MEASUREMENT_STATE_UNKNOWN = 0; - - // Measurement state is unspecified (but known, i.e. value is not part of this enum list). - // - MEASUREMENT_STATE_OTHER = 1; - - // Traffic sign has been measured by the sensor in the current timestep. - // - MEASUREMENT_STATE_MEASURED = 2; - - // Traffic sign has not been measured by the sensor in the current timestep. Values provided by tracking only. - // - MEASUREMENT_STATE_PREDICTED = 3; - } } // @@ -125,29 +114,42 @@ message CandidateSupplementarySign // message DetectedTrafficLight { + // Header attributes of detected traffic light. + // + optional DetectedObjectHeader header = 1; + + // Specific id of the traffic light as assigned by the sensor internally. Need not match with ground_truth_id. + // + optional Identifier tracking_id = 2; + // The id of the original traffic light in the ground truth. // In case of a ghost detection (no corresponding ground truth), this field should be unset. - optional Identifier ground_truth_id = 1; + optional Identifier ground_truth_id = 3; // Description of the detected traffic light. // - optional TrafficLight traffic_light = 2; + optional TrafficLight traffic_light = 4; // Determines for which directions the traffic light applies. // - repeated RelevantDirection relevant_direction = 3; + repeated RelevantDirection relevant_direction = 5; // Links to the corresponding lanes. // - repeated RelevantLane relevant_lane = 4; + repeated RelevantLane relevant_lane = 6; - // Existence probability. Range [0,1]. + // The estimated probability that this traffic light really exists, not based on history. // - optional double existence_probability = 5; + // \note Use as confidence measure where a low value means less confidence and a high value indicates + // strong confidence. + optional double existence_probability = 7; - // The standard deviation of the base parameters of the detected traffic light. + // The measurement state. + // + optional MeasurementState measurement_state = 8; + // The root mean square error of the base parameters of the detected traffic light. // - optional BaseStationary standard_deviation = 6; + optional BaseStationary rmse = 9; // // \brief Further specifies the relevant directions of the traffic light. @@ -204,29 +206,38 @@ message RelevantLane // message DetectedRoadMarking { - // Tracking id of the road marking. + // Header attributes of detected road marking. // - optional Identifier tracking_id = 1; + optional DetectedObjectHeader header = 1; + + // Specific id of the road marking as assigned by the sensor internally. Need not match with ground_truth_id. + // + optional Identifier tracking_id = 2; // The id of the original road marking in the ground truth. // In case of a ghost detection (no corresponding ground truth), this field should be unset. - optional Identifier ground_truth_id = 2; + optional Identifier ground_truth_id = 3; // A list of candidates for this road marking as estimated by the sensor. // - repeated CandidateRoadMarking candidate_road_marking = 3; + repeated CandidateRoadMarking candidate_road_marking = 4; - // Existence probability. Range [0,1]. + // The estimated probability that this road marking really exists, not based on history. // - optional double existence_probability = 4; + // \note Use as confidence measure where a low value means less confidence and a high value indicates + // strong confidence. + optional double existence_probability = 5; // Links to the corresponding lanes. // - repeated RelevantLane relevant_lane = 5; + repeated RelevantLane relevant_lane = 6; - // The standard deviation of the base parameters of the detected road marking. + // The measurement state. + // + optional MeasurementState measurement_state = 7; + // The root mean square error of the base parameters of the detected road marking. // - optional BaseStationary standard_deviation = 6; + optional BaseStationary rmse = 8; } // diff --git a/osi_detectedlane.proto b/osi_detectedlane.proto index d4ec99cdc..cfb5456b5 100644 --- a/osi_detectedlane.proto +++ b/osi_detectedlane.proto @@ -4,7 +4,7 @@ option optimize_for = SPEED; import "osi_common.proto"; import "osi_lane.proto"; -import "osi_detectedlandmark.proto"; +import "osi_detectedobject.proto"; package osi; @@ -13,22 +13,28 @@ package osi; // message DetectedLane { + // Header attributes of detected lane. + // + optional DetectedObjectHeader header = 1; + + // Specific id of the detected lane as assigned by the sensor internally. Need not match with ground_truth_id. + // + optional Identifier tracking_id = 2; + // The id of the original lane in the ground truth. // Multiple entries if the detected lane is a merge of multiple lanes in ground truth (as lane segment definitions // may vary between sensor and ground truth). - repeated Identifier ground_truth_id = 1; + repeated Identifier ground_truth_id = 3; // The detected lane. // - optional Lane lane = 2; + optional Lane lane = 4; - // Estimated probability that this lane really exists. Range [0,1]. + // The estimated probability that this lane really exists, not based on history. // - optional double existence_probability = 3; - - // The measurement state of the detected lane. - // - optional DetectedTrafficSign.MeasurementState measurement_state = 4; + // \note Use as confidence measure where a low value means less confidence and a high value indicates + // strong confidence. + optional double existence_probability = 5; } // @@ -46,7 +52,7 @@ message DetectedLaneBoundary // State of the measurement. Lane boundary measured in the current image or Lane boundary predicted (no measurement in current image). // - optional DetectedTrafficSign.MeasurementState measurement_state = 3; + optional MeasurementState measurement_state = 3; // Probability of the detection that the lane exists. // @@ -68,4 +74,3 @@ message DetectedLaneBoundary // repeated double boundary_line_confidence = 8; } - diff --git a/osi_detectedobject.proto b/osi_detectedobject.proto index b640702ad..f606d35b6 100644 --- a/osi_detectedobject.proto +++ b/osi_detectedobject.proto @@ -14,66 +14,96 @@ package osi; // message DetectedObject { + // Header attributes of detected object. + // + optional DetectedObjectHeader header = 1; + // Specific id of the object as assigned by the sensor internally. Need not match with ground_truth_id. // - optional Identifier tracking_id = 1; + optional Identifier tracking_id = 2; - // The id of the original object in the ground truth list of vehicles / objects / .. + // The id of the original object in the ground truth list of vehicles / objects / etc. // Multiple entries if detected object is a merge of multiple ground truth objects. - repeated Identifier ground_truth_id = 2; + repeated Identifier ground_truth_id = 3; + + // The amount of time that this object has been currently observed/tracked. + // Unit: [s] + optional double age = 4; + + // The measurement state of the detected object. + // + optional MeasurementState measurement_state = 5; // Base parameters of the object. object.position is the middle of the bounding box of the target object. // - optional BaseMoving object = 3; + optional BaseMoving object = 6; - // The standard deviations of the base parameters in object (cross correlations are currently neglected). + // The root mean square error of the base parameters in object (cross correlations are currently neglected). // - optional BaseMoving standard_deviation = 4; + optional BaseMoving object_rmse = 7; - // The estimated probabilities for the object to belong to a specific class. + // Kinematic point of the objects rotation. // - optional ClassProbability class_probability = 5; + optional Vector3d kinematic_point = 8; - // The estimated probability that this object really exists. Range [0,1]. + // The relative orientation rate of the moving object w.r.t. its kinematic point. // - optional double existence_probability = 6; + optional Orientation3d kinematic_orientation_rate = 9; + + // Actual movement state w.r.t. the moving object history. + // + optional MovementState movement_state = 10; + + // The estimated probability that this object really exists, not based on history. + // + // \note Use as confidence measure where a low value means less confidence and a high value indicates + // strong confidence. + optional double existence_probability = 11; // Current state of lights as perceived by sensor, only relevant if the object is estimated to be an object that // has lights. - optional Vehicle.LightState light_state = 7; + optional Vehicle.LightState light_state = 12; - // Reference point location specification of the sensor measurement (required to decouple sensor measurement, position and bounding box estimation) as used by - // the sensor (model). + // Reference point location specification of the sensor measurement (required to decouple sensor measurement, + // position and bounding box estimation) as used by the sensor (model). // - // \note Note that the value of this field has no impact on the value of object.position, which always references the - // center of the object / bounding box. - optional ReferencePoint reference_point = 8; + // \note Note that the value of this field has no impact on the value of object.position, which always references + // the center of the object / bounding box. + optional ReferencePoint reference_point = 13; // Additional internal data and state flags required and used by the sensor-models, should not be used by // subscribers to SensorData. Generally this field should be cleared after internal processing. - optional ModelInternalObject model_internal_object = 9; + // + // \note optional. List of used detections to recognize this object. Detections have also an identifier to + // reference to the detected object. + optional ModelInternalObject model_internal_object = 14; // Additional data that is specific to radar sensors. // // \note Field need not be set if simulated sensor is not a radar sensor. - optional RadarSpecificObjectData radar_specifics = 10; + optional RadarSpecificObjectData radar_specifics = 15; // Additional data that is specific to lidar sensors. // // \note Field need not be set if simulated sensor is not a lidar sensor. - optional LidarSpecificObjectData lidar_specifics = 11; + optional LidarSpecificObjectData lidar_specifics = 16; // Additional data that is specific to camera sensors. // // \note Field need not be set if simulated sensor is not a camera sensor. - optional CameraSpecificObjectData camera_specifics = 12; + optional CameraSpecificObjectData camera_specifics = 17; // Additional data that is specific to ultrasonic sensors. // // \note Field need not be set if simulated sensor is not an ultrasonic sensor. - optional UltrasonicSpecificObjectData ultrasonic_specifics = 13; + optional UltrasonicSpecificObjectData ultrasonic_specifics = 18; - // Definition of available reference points. + // The estimated probabilities for the object to belong to a specific class. + // + optional ClassProbability class_probability = 19; + + // Definition of available reference points. Left/middle/right and front/middle/rear indicate the position in y and + // x direction respectively. The z position is always considered as middle. // enum ReferencePoint { @@ -125,6 +155,31 @@ message DetectedObject REFERENCE_POINT_FRONT_RIGHT = 10; } + // Information about a possible movement of the object during tracking. + // + enum MovementState + { + // Movement state is unknown. + // + MOVEMENT_STATE_UNKNOWN = 0; + + // Other (unspecified but known). + // + MOVEMENT_STATE_OTHER = 1; + + // Until now no object movement was detected in tracking history. + // + MOVEMENT_STATE_STATIONARY = 2; + + // Object moves currently. + // + MOVEMENT_STATE_MOVING = 3; + + // Object movement was detected in tracking history, but object is currently not moving. + // + MOVEMENT_STATE_STOPPED = 4; + } + // // \brief Probabilities for the classification of the object as perceived by the sensor. // @@ -133,37 +188,164 @@ message DetectedObject // Probability that the object has unknown type. Range [0,1]. // optional double prob_unknown = 1; - + + // Probablility that the object is unspecified but known. Range [0,1]. + // + optional double prob_other = 2; + // Probability that the object is a car. Range [0,1]. // - optional double prob_car = 2; + optional double prob_car = 3; - // Probability that the object is a truck. Range [0,1]. + // Probability that the object is a heavy truck. Range [0,1]. // - optional double prob_truck = 3; + optional double prob_truck = 4; + // Probablility that the object is a van. Range [0,1]. + // + optional double prob_van = 5; + + // Probability that the object is a bus. Range [0,1]. + // + optional double prob_bus = 6; + + // Probability that the object is a trailer. Range [0,1]. + // + optional double prob_trailer = 7; + + // Probability that the object is a semitrailer. Range [0,1]. + // + optional double prob_semitrailer = 8; + + // Probability that the object is a tram. Range [0,1]. + // + optional double prob_tram = 9; + + // Probability that the object is a train. Range [0,1]. + // + // \note Can also be used for underground railway. + optional double prob_train = 10; + // Probability that the object is a motorbike. Range [0,1]. // - optional double prob_motorbike = 4; + optional double prob_motorbike = 11; // Probability that the object is a bicycle. Range [0,1]. // - optional double prob_bicycle = 5; + optional double prob_bicycle = 12; // Probability that the object is a pedestrian. Range [0,1]. // - optional double prob_pedestrian = 6; + optional double prob_pedestrian = 13; + + // Probability that the object is a wheelchair. Range [0,1]. + // + optional double prob_wheelchair = 14; + // Probability that the object is an animal. Range [0,1]. + // + optional double prob_animal = 15; + // Probability that the object is a stationary object. Range [0,1]. // - optional double prob_stationary = 7; - - // Probability that the object is a vehicle (except a car or a truck). Range [0,1]. + optional double prob_stationary = 16; + + // Probability that the object is an unspecified but known vehicle. Range [0,1]. // - optional double prob_other_vehicle = 8; - - // Probability that the object is an animal. Range [0,1]. + optional double prob_other_vehicle = 17; + } +} + +// +// \brief The header attributes of each detected object. +// +message DetectedObjectHeader +{ + // Version number of used detected object messages (DetectedObject etc.). + // + optional InterfaceVersion version = 1; + + // Time stamp at which the measurement was taken (not the time at which it was processed or at which it is + // transmitted) in the global synchronized time. + optional Timestamp timestamp = 2; + + // Continuous up counter to identify the cycle. + // + optional uint32 cycle_counter = 3; + + // Data Qualifier expresses whether the content of this event can be used or not. + // + optional DataQualifier data_qualifier = 4; + + // \brief Data qualifier communicates the overall availability of the interface. + // + enum DataQualifier + { + // Unknown (must not be used in ground truth). + // + DATA_QUALIFIER_UNKNOWN = 0; + + // Other (unspecified but known). + // + DATA_QUALIFIER_OTHER = 1; + + // Data is available. + // + DATA_QUALIFIER_AVAILABLE = 2; + + // Reduced data is available. + // + DATA_QUALIFIER_AVAILABLE_REDUCED = 3; + + // Data is not available. // - optional double prob_animal = 9; + DATA_QUALIFIER_NOT_AVAILABLE = 4; + + // Sensor is blind. + // + DATA_QUALIFIER_BLINDNESS = 5; + + // Sensor temporary available. + // + DATA_QUALIFIER_TEMPORARY_AVAILABLE = 6; } + + // + // \brief Version of detected object messages (DetectionObject etc.). + // + message InterfaceVersion + { + // Major version number. + // + optional uint32 version_major = 1; + + // Minor version number. + // + optional uint32 version_minor = 2; + + // Patch version number. + // + optional uint32 version_patch = 3; + } +} + +// Definition of measurement states. +// +enum MeasurementState +{ + // Measurement state is unknown (must not be used in ground truth). + // + MEASUREMENT_STATE_UNKNOWN = 0; + + // Measurement state is unspecified (but known, i.e. value is not part of this enum list). + // + MEASUREMENT_STATE_OTHER = 1; + + // Entity has been measured by the sensor in the current timestep. + // + MEASUREMENT_STATE_MEASURED = 2; + + // Entity has not been measured by the sensor in the current timestep. Values provided by tracking only. + // + MEASUREMENT_STATE_PREDICTED = 3; } diff --git a/osi_detectedoccupant.proto b/osi_detectedoccupant.proto index 3c0deb677..612ff9986 100644 --- a/osi_detectedoccupant.proto +++ b/osi_detectedoccupant.proto @@ -4,6 +4,7 @@ option optimize_for = SPEED; import "osi_common.proto"; import "osi_occupant.proto"; +import "osi_detectedobject.proto"; package osi; @@ -12,11 +13,29 @@ package osi; // message DetectedOccupant { + // Header attributes of detected occupant. + // + optional DetectedObjectHeader header = 1; + + // Specific id of the occupant as assigned by the sensor internally. Need not match with ground_truth_id. + // + optional Identifier tracking_id = 2; + // The detected vehicle occupant // - optional Occupant occupant = 1; + optional Occupant occupant = 3; // The id of the original vehicle occupant in the ground truth. // - optional Identifier ground_truth_occupant_id = 2; + optional Identifier ground_truth_occupant_id = 4; + + // The estimated probability that this occupant really exists, not based on history. + // + // \note Use as confidence measure where a low value means less confidence and a high value indicates + // strong confidence. + optional double existence_probability = 5; + + // The measurement state. + // + optional MeasurementState measurement_state = 6; } diff --git a/osi_sensorspecific.proto b/osi_sensorspecific.proto index 9c06acb6b..be9749ac1 100644 --- a/osi_sensorspecific.proto +++ b/osi_sensorspecific.proto @@ -2,6 +2,8 @@ syntax = "proto2"; option optimize_for = SPEED; +import "osi_common.proto"; + package osi; // @@ -10,6 +12,7 @@ package osi; message RadarSpecificObjectData { // The radar cross section (RCS) of the detected object. Unit: [dB m^2]. + // optional double rcs = 1; } @@ -26,7 +29,13 @@ message LidarSpecificObjectData // message CameraSpecificObjectData { - // currently no fields. + // Pedestrian head pose for behaviour prediction. Describes the head orientation w.r.t. the ego vehicle orientation. + // + optional Orientation3d head_pose = 1; + + // Pedestrian upper body pose for behaviour prediction. Describes the upper body orientation w.r.t. the ego vehicle orientation. + // + optional Orientation3d upper_body_pose = 2; } //