From 2748bff006299eef913c0993482c4ac0c1c81ead Mon Sep 17 00:00:00 2001 From: Carsten Kuebler Date: Fri, 19 Jan 2018 17:43:45 +0100 Subject: [PATCH 1/4] Detected objects adapted to real sensor structures DetectedObject is adapted to standardised real sensor output structures. Other detected objects (like traffic sign/light etc.) are prepared. --- osi_detectedlandmark.proto | 106 +++++++++++---------- osi_detectedlane.proto | 23 +++-- osi_detectedobject.proto | 184 ++++++++++++++++++++++++++++++++++--- osi_detectedoccupant.proto | 13 ++- osi_sensorspecific.proto | 9 +- 5 files changed, 259 insertions(+), 76 deletions(-) diff --git a/osi_detectedlandmark.proto b/osi_detectedlandmark.proto index a0991e44f..0acd68cdd 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,48 @@ package osi; // message DetectedTrafficSign { + // Header attributes of detected traffic sign. + // + optional DetectedObject.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; + optional double existence_probability = 7; - // The measurement state of the traffic sign. - // - optional MeasurementState measurement_state = 6; + // The measurement state. + // + optional DetectedObject.MeasurementState measurement_state = 8; - // The standard deviation of the base parameters of the detected traffic sign. - // - optional BaseStationary standard_deviation = 7; + // 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 +77,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 +113,41 @@ message CandidateSupplementarySign // message DetectedTrafficLight { + // Header attributes of detected traffic light. + // + optional DetectedObject.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]. // - optional double existence_probability = 5; + optional double existence_probability = 7; + + // The measurement state. + // + optional DetectedObject.MeasurementState measurement_state = 8; - // The standard deviation of the base parameters of the detected traffic light. + // 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 +204,37 @@ message RelevantLane // message DetectedRoadMarking { - // Tracking id of the road marking. + // Header attributes of detected road marking. + // + optional DetectedObject.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 = 1; + 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]. // - optional double existence_probability = 4; + optional double existence_probability = 5; // Links to the corresponding lanes. // - repeated RelevantLane relevant_lane = 5; + repeated RelevantLane relevant_lane = 6; + + // The measurement state. + // + optional DetectedObject.MeasurementState measurement_state = 7; - // The standard deviation of the base parameters of the detected road marking. + // 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..7c7c92b7f 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,26 @@ package osi; // message DetectedLane { + // Header attributes of detected lane. + // + optional DetectedObject.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]. // - optional double existence_probability = 3; - - // The measurement state of the detected lane. - // - optional DetectedTrafficSign.MeasurementState measurement_state = 4; + optional double existence_probability = 5; } // @@ -46,7 +50,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 DetectedObject.MeasurementState measurement_state = 3; // Probability of the detection that the lane exists. // @@ -68,4 +72,3 @@ message DetectedLaneBoundary // repeated double boundary_line_confidence = 8; } - diff --git a/osi_detectedobject.proto b/osi_detectedobject.proto index b640702ad..a229ae687 100644 --- a/osi_detectedobject.proto +++ b/osi_detectedobject.proto @@ -14,59 +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 / .. // 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 Vector3d kinematic_point = 8; + + // The relative orientation rate of the moving object w.r.t. its kinematic point. // - optional ClassProbability class_probability = 5; + 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. Range [0,1]. // - optional double existence_probability = 6; + // \note Field need not be set if false_positive_rate and false_negative_rate is defined. + optional double existence_probability = 11; + + // False positive rate. + // + // \note Field need not be set if existence_probability is defined. + optional double false_positive_rate = 12; + + // False negative rate. + // + // \note Field need not be set if existence_probability is defined. + optional double false_negative_rate = 13; // 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 = 14; // 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; + optional ReferencePoint reference_point = 15; // 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 = 16; // 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 = 17; // 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 = 18; // 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 = 19; + + // The estimated probabilities for the object to belong to a specific class. + // + optional ClassProbability class_probability = 20; // Additional data that is specific to ultrasonic sensors. // @@ -125,6 +162,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 movment was detected in tracking history. + // + MOVEMENT_STATE_STOPPED = 4; + } + // // \brief Probabilities for the classification of the object as perceived by the sensor. // @@ -166,4 +228,98 @@ message DetectedObject // optional double prob_animal = 9; } + + // 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; + } + + // + // \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 cylcle_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. + // + 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; + } + } } diff --git a/osi_detectedoccupant.proto b/osi_detectedoccupant.proto index 3c0deb677..ed1817e93 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,19 @@ package osi; // message DetectedOccupant { + // Header attributes of detected occupant. + // + optional DetectedObject.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; } diff --git a/osi_sensorspecific.proto b/osi_sensorspecific.proto index 9c06acb6b..fd5cb3d70 100644 --- a/osi_sensorspecific.proto +++ b/osi_sensorspecific.proto @@ -10,6 +10,7 @@ package osi; message RadarSpecificObjectData { // The radar cross section (RCS) of the detected object. Unit: [dB m^2]. + // optional double rcs = 1; } @@ -26,7 +27,13 @@ message LidarSpecificObjectData // message CameraSpecificObjectData { - // currently no fields. + // Pedestrian head pose for behaviour prediction. Describes the yaw angle w.r.t. the ego vehicle orientation. + // + optional double head_pose = 1; + + // Pedestrian upper body pose for behaviour prediction. Describes the yaw angle w.r.t. the ego vehicle orientation. + // + optional double upper_body_pose = 2; } // From 8bff0e27378b72939581ce32e7165e74a853eab7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carsten=C2=A0Kuebler?= Date: Wed, 31 Jan 2018 12:06:15 +0100 Subject: [PATCH 2/4] Further refactoring of DetectedObject DetectedObjectHeader message moved out of DetectedObject message. Enum MovementState moved out of DetectedObject message. Remove Typos and adjust documentation. Include suggestions from issue #49. --- osi_detectedlandmark.proto | 29 +++-- osi_detectedlane.proto | 8 +- osi_detectedobject.proto | 252 ++++++++++++++++++++----------------- osi_detectedoccupant.proto | 12 +- 4 files changed, 171 insertions(+), 130 deletions(-) diff --git a/osi_detectedlandmark.proto b/osi_detectedlandmark.proto index 0acd68cdd..74d555917 100644 --- a/osi_detectedlandmark.proto +++ b/osi_detectedlandmark.proto @@ -15,7 +15,7 @@ message DetectedTrafficSign { // Header attributes of detected traffic sign. // - optional DetectedObject.DetectedObjectHeader header = 1; + optional DetectedObjectHeader header = 1; // Specific id of the traffic sign as assigned by the sensor internally. Need not match with ground_truth_id. // @@ -37,14 +37,15 @@ message DetectedTrafficSign // optional Geometry geometry = 6; - // The estimated probability that this traffic sign really exists. Range [0,1]. - // + // 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 measurement state. // - optional DetectedObject.MeasurementState measurement_state = 8; - + optional MeasurementState measurement_state = 8; // The root mean square error of the base parameters of the detected traffic sign. // optional BaseStationary rmse = 9; @@ -115,7 +116,7 @@ message DetectedTrafficLight { // Header attributes of detected traffic light. // - optional DetectedObject.DetectedObjectHeader header = 1; + optional DetectedObjectHeader header = 1; // Specific id of the traffic light as assigned by the sensor internally. Need not match with ground_truth_id. // @@ -137,14 +138,15 @@ message DetectedTrafficLight // repeated RelevantLane relevant_lane = 6; - // Existence probability. Range [0,1]. + // The estimated probability that this traffic light 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 measurement state. // - optional DetectedObject.MeasurementState measurement_state = 8; - + optional MeasurementState measurement_state = 8; // The root mean square error of the base parameters of the detected traffic light. // optional BaseStationary rmse = 9; @@ -206,7 +208,7 @@ message DetectedRoadMarking { // Header attributes of detected road marking. // - optional DetectedObject.DetectedObjectHeader header = 1; + optional DetectedObjectHeader header = 1; // Specific id of the road marking as assigned by the sensor internally. Need not match with ground_truth_id. // @@ -220,8 +222,10 @@ message DetectedRoadMarking // repeated CandidateRoadMarking candidate_road_marking = 4; - // Existence probability. Range [0,1]. + // The estimated probability that this road marking 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; // Links to the corresponding lanes. @@ -230,8 +234,7 @@ message DetectedRoadMarking // The measurement state. // - optional DetectedObject.MeasurementState measurement_state = 7; - + optional MeasurementState measurement_state = 7; // The root mean square error of the base parameters of the detected road marking. // optional BaseStationary rmse = 8; diff --git a/osi_detectedlane.proto b/osi_detectedlane.proto index 7c7c92b7f..cfb5456b5 100644 --- a/osi_detectedlane.proto +++ b/osi_detectedlane.proto @@ -15,7 +15,7 @@ message DetectedLane { // Header attributes of detected lane. // - optional DetectedObject.DetectedObjectHeader header = 1; + optional DetectedObjectHeader header = 1; // Specific id of the detected lane as assigned by the sensor internally. Need not match with ground_truth_id. // @@ -30,8 +30,10 @@ message DetectedLane // 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. // + // \note Use as confidence measure where a low value means less confidence and a high value indicates + // strong confidence. optional double existence_probability = 5; } @@ -50,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 DetectedObject.MeasurementState measurement_state = 3; + optional MeasurementState measurement_state = 3; // Probability of the detection that the lane exists. // diff --git a/osi_detectedobject.proto b/osi_detectedobject.proto index a229ae687..368b8eaf3 100644 --- a/osi_detectedobject.proto +++ b/osi_detectedobject.proto @@ -22,7 +22,7 @@ message DetectedObject // 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 = 3; @@ -54,63 +54,56 @@ message DetectedObject // optional MovementState movement_state = 10; - // The estimated probability that this object really exists. Range [0,1]. + // The estimated probability that this object really exists, not based on history. // - // \note Field need not be set if false_positive_rate and false_negative_rate is defined. + // \note Use as confidence measure where a low value means less confidence and a high value indicates + // strong confidence. optional double existence_probability = 11; - // False positive rate. - // - // \note Field need not be set if existence_probability is defined. - optional double false_positive_rate = 12; - - // False negative rate. - // - // \note Field need not be set if existence_probability is defined. - optional double false_negative_rate = 13; - // 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 = 14; + 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 = 15; + // \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. // - // \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 = 16; + // \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 = 17; + 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 = 18; + 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 = 19; - - // The estimated probabilities for the object to belong to a specific class. - // - optional ClassProbability class_probability = 20; + 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 { @@ -182,7 +175,7 @@ message DetectedObject // MOVEMENT_STATE_MOVING = 3; - // Object movment was detected in tracking history. + // Object movement was detected in tracking history, but object is currently not moving. // MOVEMENT_STATE_STOPPED = 4; } @@ -195,131 +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; - - // 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_pedestrian = 13; + + // Probability that the object is a wheelchair. Range [0,1]. // - optional double prob_other_vehicle = 8; + optional double prob_wheelchair = 14; // Probability that the object is an animal. Range [0,1]. // - optional double prob_animal = 9; - } + optional double prob_animal = 15; - // Definition of measurement states. - // - enum MeasurementState - { - // Measurement state is unknown (must not be used in ground truth). + // Probability that the object is a stationary object. Range [0,1]. // - MEASUREMENT_STATE_UNKNOWN = 0; + optional double prob_stationary = 16; - // Measurement state is unspecified (but known, i.e. value is not part of this enum list). + // Probability that the object is an unspecified but known vehicle. Range [0,1]. // - MEASUREMENT_STATE_OTHER = 1; + optional double prob_other_vehicle = 17; + } +} - // Traffic sign has been measured by the sensor in the current timestep. - // - MEASUREMENT_STATE_MEASURED = 2; +// +// \brief The header attributes of each detected object. +// +message DetectedObjectHeader +{ + // Version number of used detected object messages (DetectedObject etc.). + // + optional InterfaceVersion version = 1; - // Traffic sign has not been measured by the sensor in the current timestep. Values provided by tracking only. - // - MEASUREMENT_STATE_PREDICTED = 3; - } + // 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. // - // \brief The header attributes of each detected object. + optional DataQualifier data_qualifier = 4; + + // \brief Data qualifier communicates the overall availability of the interface. // - message DetectedObjectHeader + enum DataQualifier { - // Version number of used detected object messages (DetectedObject etc.). + // Unknown (must not be used in ground truth). // - optional InterfaceVersion version = 1; + DATA_QUALIFIER_UNKNOWN = 0; - // 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. + // Other (unspecified but known). // - optional Timestamp timestamp = 2; + DATA_QUALIFIER_OTHER = 1; - // Continuous up counter to identify the cycle. + // Data is available. // - optional uint32 cylcle_counter = 3; + DATA_QUALIFIER_AVAILABLE = 2; - // Data Qualifier expresses whether the content of this event can be used or not. + // Reduced data is available. // - optional DataQualifier data_qualifier = 4; + DATA_QUALIFIER_AVAILABLE_REDUCED = 3; - // \brief Data qualifier communicates the overall availability of the interface. + // Data is not available. // - enum DataQualifier - { - // Unknown (must not be used in ground truth). - // - DATA_QUALIFIER_UNKNOWN = 0; + DATA_QUALIFIER_NOT_AVAILABLE = 4; - // Other (unspecified but known). - // - DATA_QUALIFIER_OTHER = 1; + // Sensor is blind. + // + DATA_QUALIFIER_BLINDNESS = 5; - // Data is available. - // - DATA_QUALIFIER_AVAILABLE = 2; + // Sensor temporary available. + // + DATA_QUALIFIER_TEMPORARY_AVAILABLE = 6; + } - // Reduced data is available. - // - DATA_QUALIFIER_AVAILABLE_REDUCED = 3; + // + // \brief Version of detected object messages (DetectionObject etc.). + // + message InterfaceVersion + { + // Major version number. + // + optional uint32 version_major = 1; - // Data is not available. - // - DATA_QUALIFIER_NOT_AVAILABLE = 4; + // Minor version number. + // + optional uint32 version_minor = 2; - // Sensor is blind. - // - DATA_QUALIFIER_BLINDNESS = 5; + // Patch version number. + // + optional uint32 version_patch = 3; + } +} - // Sensor temporary available. - // - DATA_QUALIFIER_TEMPORARY_AVAILABLE = 6; - } +// Definition of measurement states. +// +enum MeasurementState +{ + // Measurement state is unknown (must not be used in ground truth). + // + MEASUREMENT_STATE_UNKNOWN = 0; - // - // \brief Version of detected object messages (DetectionObject etc.). - // - message InterfaceVersion - { - // Major version number. - // - optional uint32 version_major = 1; + // Measurement state is unspecified (but known, i.e. value is not part of this enum list). + // + MEASUREMENT_STATE_OTHER = 1; - // Minor version number. - // - optional uint32 version_minor = 2; + // Traffic sign has been measured by the sensor in the current timestep. + // + MEASUREMENT_STATE_MEASURED = 2; - // Patch version number. - // - optional uint32 version_patch = 3; - } - } + // Traffic sign 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 ed1817e93..612ff9986 100644 --- a/osi_detectedoccupant.proto +++ b/osi_detectedoccupant.proto @@ -15,7 +15,7 @@ message DetectedOccupant { // Header attributes of detected occupant. // - optional DetectedObject.DetectedObjectHeader header = 1; + optional DetectedObjectHeader header = 1; // Specific id of the occupant as assigned by the sensor internally. Need not match with ground_truth_id. // @@ -28,4 +28,14 @@ message DetectedOccupant // The id of the original vehicle occupant in the ground truth. // 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; } From 613bc6cc4b4f04fd2fd0b10955eefdd1255fb481 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carsten=C2=A0Kuebler?= Date: Wed, 31 Jan 2018 14:56:32 +0100 Subject: [PATCH 3/4] Extended representation of body poses Change specification of body poses from yaw angle to 3d orientation. --- osi_sensorspecific.proto | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/osi_sensorspecific.proto b/osi_sensorspecific.proto index fd5cb3d70..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; // @@ -27,13 +29,13 @@ message LidarSpecificObjectData // message CameraSpecificObjectData { - // Pedestrian head pose for behaviour prediction. Describes the yaw angle w.r.t. the ego vehicle orientation. + // Pedestrian head pose for behaviour prediction. Describes the head orientation w.r.t. the ego vehicle orientation. // - optional double head_pose = 1; + optional Orientation3d head_pose = 1; - // Pedestrian upper body pose for behaviour prediction. Describes the yaw angle w.r.t. the ego vehicle orientation. + // Pedestrian upper body pose for behaviour prediction. Describes the upper body orientation w.r.t. the ego vehicle orientation. // - optional double upper_body_pose = 2; + optional Orientation3d upper_body_pose = 2; } // From 994012b8c219b204b0714156832866e048e3a460 Mon Sep 17 00:00:00 2001 From: "Pierre R. Mai" Date: Tue, 6 Feb 2018 03:26:28 +0100 Subject: [PATCH 4/4] Minor measurement state documentation cleanup --- osi_detectedobject.proto | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osi_detectedobject.proto b/osi_detectedobject.proto index 368b8eaf3..f606d35b6 100644 --- a/osi_detectedobject.proto +++ b/osi_detectedobject.proto @@ -341,11 +341,11 @@ enum MeasurementState // MEASUREMENT_STATE_OTHER = 1; - // Traffic sign has been measured by the sensor in the current timestep. + // Entity 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. + // Entity has not been measured by the sensor in the current timestep. Values provided by tracking only. // MEASUREMENT_STATE_PREDICTED = 3; }