From 235498e0cda1e6b45aa78358ddc5ef4aa61b7281 Mon Sep 17 00:00:00 2001 From: "@lukas.elster" Date: Wed, 3 Feb 2021 16:31:05 +0100 Subject: [PATCH 1/9] Added emitting structure for types of stationary object classes. Signed-off-by: @lukas.elster --- osi_object.proto | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/osi_object.proto b/osi_object.proto index 5a430e092..3e56bdf41 100644 --- a/osi_object.proto +++ b/osi_object.proto @@ -163,8 +163,8 @@ message StationaryObject // TYPE_OVERHEAD_STRUCTURE = 14; - // Landmarks corresponding to light sources or reflective structures - // in the environment, like street lights or reflective poles on the + // Landmarks corresponding to reflective structures + // in the environment, like reflective poles on the // road boarder. // TYPE_REFLECTIVE_STRUCTURE = 15; @@ -177,6 +177,11 @@ message StationaryObject // Object is a speed bump. // TYPE_SPEED_BUMP = 17; + + // Landmarks corresponding to sources of electromagnetic waves + // in the environment, like street lights. + // + TYPE_EMITTING_STRUCTURE = 18; } // Definition of material types. From 5a91980137544872263f0c26621303fc9c4554f0 Mon Sep 17 00:00:00 2001 From: "@lukas.elster" Date: Wed, 3 Feb 2021 17:13:01 +0100 Subject: [PATCH 2/9] Proposal for the attributes of emitting structures. Signed-off-by: @lukas.elster --- osi_object.proto | 50 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/osi_object.proto b/osi_object.proto index 3e56bdf41..2b8ef94d8 100644 --- a/osi_object.proto +++ b/osi_object.proto @@ -96,6 +96,10 @@ message StationaryObject // optional Color color = 4; + // The attributes of the emitting structure if stationary object is classified as such. + // + optional EmittingStructureAttribute emitting_structure_attribute = 5; + // Definition of object types. // enum Type @@ -308,6 +312,52 @@ message StationaryObject // COLOR_WHITE = 10; } + + // + // Attributes of type emitting structure + // + message EmittingStructureAttribute + { + // Maximum wavelength of emitted electromagnetic wave + // + // Unit: m + // + optional double max_wavelength = 0; + + // Minimum wavelength of emitted electromagnetic wave + // + // Unit: m + // + optional double min_wavelength = 1; + + // Step size for emitted electromagnetic wave + // + // Unit: m + // + optional double wavelength_step = 2; + + // Intensities of emitted electromagnetic wave + // + // Unit: % + // + // \note size = (max_wavelength - min_wavelength) / wavelength_step + // + repeated double intensity_per_wavelength = 3; + + // Beam angles of emitted electromagnetic wave + // + // Unit: rad + // + repeated Orientation3d beam_angle = 4; + + // Intensities of emitted electromagnetic wave per beam + // + // Unit: % + // + // \note size = size of beam_angle + // + repeated double intensity_per_beam = 5; + } } } From 0c8c03e8c24d9d7b06fecc1559fbb3981521e35d Mon Sep 17 00:00:00 2001 From: "@lukas.elster" Date: Thu, 18 Feb 2021 11:25:58 +0100 Subject: [PATCH 3/9] Updated version of the emitting object message based on the discussion in the SensorModeling Bi-Weekly on 05.02.21. Signed-off-by: @lukas.elster --- osi_object.proto | 37 +++++++++++++------------------------ 1 file changed, 13 insertions(+), 24 deletions(-) diff --git a/osi_object.proto b/osi_object.proto index 2b8ef94d8..61127d210 100644 --- a/osi_object.proto +++ b/osi_object.proto @@ -318,45 +318,34 @@ message StationaryObject // message EmittingStructureAttribute { - // Maximum wavelength of emitted electromagnetic wave + // In use-cases where a spectral ray-tracer is used, this message + // determines the range of the wavelength and its desired number + // of samples. // - // Unit: m - // - optional double max_wavelength = 0; - - // Minimum wavelength of emitted electromagnetic wave - // - // Unit: m - // - optional double min_wavelength = 1; - - // Step size for emitted electromagnetic wave - // - // Unit: m - // - optional double wavelength_step = 2; + repeated WavelengthData wavelength_data = 1; - // Intensities of emitted electromagnetic wave + // Intensities of emitted electromagnetic wave referred to a discrete + // wavelength defined in WavelengthData. // // Unit: % // - // \note size = (max_wavelength - min_wavelength) / wavelength_step + // \note The size of the message has to be equal to the the size of WavelengthData samples_number // - repeated double intensity_per_wavelength = 3; + repeated double intensity_per_wavelength = 2; - // Beam angles of emitted electromagnetic wave + // The beam angle of emitted electromagnetic wave in azimuth and elevation // // Unit: rad // - repeated Orientation3d beam_angle = 4; + repeated Spherical2d beam_angle = 3; - // Intensities of emitted electromagnetic wave per beam + // Intensities of emitted electromagnetic wave referred to beam_angle. // // Unit: % // - // \note size = size of beam_angle + // \note The size of the message has to be equal to the discretization in beam_angle. // - repeated double intensity_per_beam = 5; + repeated double intensity_per_beam = 4; } } } From 6331140c3aaed01a18b893d19748bead7cb5b7d1 Mon Sep 17 00:00:00 2001 From: "@lukas.elster" Date: Mon, 1 Mar 2021 13:00:38 +0100 Subject: [PATCH 4/9] New Proposal for emitting objects. Added Distribution into common for e.g. radar antenna pattern and changed osi_object.proto accordingly. Signed-off-by: @lukas.elster --- osi_common.proto | 73 ++++++++++++++++++++++++++++++++++++++++++++++++ osi_object.proto | 8 +++--- 2 files changed, 77 insertions(+), 4 deletions(-) diff --git a/osi_common.proto b/osi_common.proto index 9a2c2868b..8abf8d372 100644 --- a/osi_common.proto +++ b/osi_common.proto @@ -579,3 +579,76 @@ message WavelengthData // optional double samples_number = 3; } + +// +// \brief Distribution of data points and data values +// +// Defines the breakpoints of the corresponding distribution and the corresponding distribution values. +// +message DistributionData +{ + // Defines the type of the breakpoints for the distribution function. + // + optional Breakpoints breakpoints = 1; + + // Defines the value of breakpoints of the distribution function for continuous or not equally distributed cases. + // + repeated double points = 2; + + // Defines the start value, end value and the sample number if distribution has equally discretized breakpoints. + // In case of BREAKPOINTS_SPHERICAL the first one is azimuth and the second is elevation direction. + // In case of BREAKPOINTS_RECTANGULAR the first one is x and the second is y direction + // + repeated double WaveLengthData = 3; + + // Defines the type of the distribution. + // + optional Distribution distribution = 4; + + // Defines the normalized value of the distribution. + // In case of DISTRIBUTION_EQUAL the value of all points is equal to the double data. + // In case of DISTRIBUTION_GAUSSIAN there has to be two values in the following order: + // expected value, variance + // If the type is DISTRIBUTION_CUSTOM data corresponds to a Lookup-Table with points + // defined in the same message: + // E.g. osi_object.proto: Spherical2d is defined before DistributionData and the number + // of elements in data is equal to the discretization in Spheical2d. + // + // Unit: % + // + repeated double data = 5; + + // Definition of distribution types. The values of the data distribution is defined in the field data. + // + enum Breakpoints + { + // The data points of the distribution is user-defined (e.g. breakpoints Lookup-Table). + // + BREAKPOINTS_CUSTOM = 0; + + // The distribution corresponds to an equal distribution. + // + BREAKPOINTS_SPHERICAL = 1; + + // The distribution corresponds to a Gaussian distribution. + // + BREAKPOINTS_RECTANGULAR = 2; + } + + // Definition of distribution types. The values of the data distribution is defined in the field data. + // + enum Distribution + { + // The distribution corresponds to a user-defined distribution (e.g. Lookup-Table). + // + DISTRIBUTION_CUSTOM = 0; + + // The distribution corresponds to an equal distribution. + // + DISTRIBUTION_EQUAL = 1; + + // The distribution corresponds to a Gaussian distribution. + // + DISTRIBUTION_GAUSSIAN = 2; + } +} diff --git a/osi_object.proto b/osi_object.proto index 61127d210..034bf0319 100644 --- a/osi_object.proto +++ b/osi_object.proto @@ -324,10 +324,10 @@ message StationaryObject // repeated WavelengthData wavelength_data = 1; - // Intensities of emitted electromagnetic wave referred to a discrete - // wavelength defined in WavelengthData. + // Original intensities of emitted electromagnetic wave referred to a discrete + // wavelength defined in WavelengthData. This maximum value is weighted based on the DistributionData. // - // Unit: % + // Unit: W/m^2 // // \note The size of the message has to be equal to the the size of WavelengthData samples_number // @@ -345,7 +345,7 @@ message StationaryObject // // \note The size of the message has to be equal to the discretization in beam_angle. // - repeated double intensity_per_beam = 4; + repeated DistributionData EDF = 4; } } } From db3c35fe5ecbc8a3b03e63bfaf783653bb6bc522 Mon Sep 17 00:00:00 2001 From: "@lukas.elster" Date: Fri, 5 Mar 2021 08:18:30 +0100 Subject: [PATCH 5/9] Minor changes in plausibility and comments. Signed-off-by: @lukas.elster --- osi_common.proto | 16 ++++++++-------- osi_object.proto | 10 +--------- 2 files changed, 9 insertions(+), 17 deletions(-) diff --git a/osi_common.proto b/osi_common.proto index 8abf8d372..6a0ef83fe 100644 --- a/osi_common.proto +++ b/osi_common.proto @@ -597,11 +597,11 @@ message DistributionData // Defines the start value, end value and the sample number if distribution has equally discretized breakpoints. // In case of BREAKPOINTS_SPHERICAL the first one is azimuth and the second is elevation direction. - // In case of BREAKPOINTS_RECTANGULAR the first one is x and the second is y direction + // In case of BREAKPOINTS_RECTANGULAR the first one is x- and the second is y-direction. // repeated double WaveLengthData = 3; - // Defines the type of the distribution. + // Defines the type of the data distribution. // optional Distribution distribution = 4; @@ -610,9 +610,9 @@ message DistributionData // In case of DISTRIBUTION_GAUSSIAN there has to be two values in the following order: // expected value, variance // If the type is DISTRIBUTION_CUSTOM data corresponds to a Lookup-Table with points - // defined in the same message: - // E.g. osi_object.proto: Spherical2d is defined before DistributionData and the number - // of elements in data is equal to the discretization in Spheical2d. + // defined via the breakpoints. + // The maximum value of the distribution is defined in the osi message, in which this + // message is used. // // Unit: % // @@ -622,15 +622,15 @@ message DistributionData // enum Breakpoints { - // The data points of the distribution is user-defined (e.g. breakpoints Lookup-Table). + // The breakpoints of the distribution is user-defined (e.g. breakpoints Lookup-Table). // BREAKPOINTS_CUSTOM = 0; - // The distribution corresponds to an equal distribution. + // The breakpoints of the distribution are in azimuth and elevation (spherical shape). // BREAKPOINTS_SPHERICAL = 1; - // The distribution corresponds to a Gaussian distribution. + // The breakpoints of the distribution are in x- and y-coordinates (rectangular shape). // BREAKPOINTS_RECTANGULAR = 2; } diff --git a/osi_object.proto b/osi_object.proto index 034bf0319..eae474356 100644 --- a/osi_object.proto +++ b/osi_object.proto @@ -333,18 +333,10 @@ message StationaryObject // repeated double intensity_per_wavelength = 2; - // The beam angle of emitted electromagnetic wave in azimuth and elevation - // - // Unit: rad - // - repeated Spherical2d beam_angle = 3; - - // Intensities of emitted electromagnetic wave referred to beam_angle. + // Intensities of emitted electromagnetic wave. // // Unit: % // - // \note The size of the message has to be equal to the discretization in beam_angle. - // repeated DistributionData EDF = 4; } } From b833f5d4035563bb3c4541bda417989fe18d261f Mon Sep 17 00:00:00 2001 From: "@lukas.elster" Date: Fri, 28 May 2021 08:15:14 +0200 Subject: [PATCH 6/9] Changes in osi_common reversed and new structure in osi_object to specify emitting objects. Signed-off-by: @lukas.elster --- osi_common.proto | 73 ------------------------------------------------ osi_object.proto | 44 ++++++++++++++++++++++------- 2 files changed, 34 insertions(+), 83 deletions(-) diff --git a/osi_common.proto b/osi_common.proto index 6a0ef83fe..9a2c2868b 100644 --- a/osi_common.proto +++ b/osi_common.proto @@ -579,76 +579,3 @@ message WavelengthData // optional double samples_number = 3; } - -// -// \brief Distribution of data points and data values -// -// Defines the breakpoints of the corresponding distribution and the corresponding distribution values. -// -message DistributionData -{ - // Defines the type of the breakpoints for the distribution function. - // - optional Breakpoints breakpoints = 1; - - // Defines the value of breakpoints of the distribution function for continuous or not equally distributed cases. - // - repeated double points = 2; - - // Defines the start value, end value and the sample number if distribution has equally discretized breakpoints. - // In case of BREAKPOINTS_SPHERICAL the first one is azimuth and the second is elevation direction. - // In case of BREAKPOINTS_RECTANGULAR the first one is x- and the second is y-direction. - // - repeated double WaveLengthData = 3; - - // Defines the type of the data distribution. - // - optional Distribution distribution = 4; - - // Defines the normalized value of the distribution. - // In case of DISTRIBUTION_EQUAL the value of all points is equal to the double data. - // In case of DISTRIBUTION_GAUSSIAN there has to be two values in the following order: - // expected value, variance - // If the type is DISTRIBUTION_CUSTOM data corresponds to a Lookup-Table with points - // defined via the breakpoints. - // The maximum value of the distribution is defined in the osi message, in which this - // message is used. - // - // Unit: % - // - repeated double data = 5; - - // Definition of distribution types. The values of the data distribution is defined in the field data. - // - enum Breakpoints - { - // The breakpoints of the distribution is user-defined (e.g. breakpoints Lookup-Table). - // - BREAKPOINTS_CUSTOM = 0; - - // The breakpoints of the distribution are in azimuth and elevation (spherical shape). - // - BREAKPOINTS_SPHERICAL = 1; - - // The breakpoints of the distribution are in x- and y-coordinates (rectangular shape). - // - BREAKPOINTS_RECTANGULAR = 2; - } - - // Definition of distribution types. The values of the data distribution is defined in the field data. - // - enum Distribution - { - // The distribution corresponds to a user-defined distribution (e.g. Lookup-Table). - // - DISTRIBUTION_CUSTOM = 0; - - // The distribution corresponds to an equal distribution. - // - DISTRIBUTION_EQUAL = 1; - - // The distribution corresponds to a Gaussian distribution. - // - DISTRIBUTION_GAUSSIAN = 2; - } -} diff --git a/osi_object.proto b/osi_object.proto index eae474356..b67634197 100644 --- a/osi_object.proto +++ b/osi_object.proto @@ -314,30 +314,54 @@ message StationaryObject } // - // Attributes of type emitting structure + // \brief Attributes of type emitting structure // message EmittingStructureAttribute { - // In use-cases where a spectral ray-tracer is used, this message - // determines the range of the wavelength and its desired number - // of samples. + // This message determines the range of the wavelength and its + // desired number of samples. // repeated WavelengthData wavelength_data = 1; // Original intensities of emitted electromagnetic wave referred to a discrete - // wavelength defined in WavelengthData. This maximum value is weighted based on the DistributionData. + // wavelength defined in WavelengthData. This maximum value is weighted based on the IntensityDistribution. // // Unit: W/m^2 // - // \note The size of the message has to be equal to the the size of WavelengthData samples_number + // \note max_intensity_per_wavelength.size() = WavelengthData.samples_number.size() // - repeated double intensity_per_wavelength = 2; + repeated double max_intensity_per_wavelength = 2; - // Intensities of emitted electromagnetic wave. + // Distribution of the emitted electromagnetic wave's intensity based on the intensity_per_wavelength as + // maximum value. // - // Unit: % + repeated IntensityDistribution emitted_intensity_distribution = 3; + + // + // \brief Definition of a intensity distribution with a horizontal and a vertical angle + // and the corresponding intensity // - repeated DistributionData EDF = 4; + message IntensityDistribution + { + // Horizontal deflection (azimuth) of emission in emitting object + // coordinates. + // + // Unit: rad + optional double horizontal_angle = 1; + + // Vertical deflection (elevation) of emission in emitting object + // coordinates. + // + // Unit: rad + optional double vertical_angle = 2; + + // Emitted intensity of emitting object at this point for one specific wavelength. + // The value corresponds to the intensity defined in max_intensity_per_wavelength. + // + // Unit: dB + // + optional double intensity = 3; + } } } } From 3bb77565f604ab7ffc3dca10aa841f1508f68781 Mon Sep 17 00:00:00 2001 From: "@lukas.elster" Date: Fri, 28 May 2021 09:26:22 +0200 Subject: [PATCH 7/9] Minor changes due to discussion in working group. Signed-off-by: @lukas.elster --- osi_object.proto | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/osi_object.proto b/osi_object.proto index b67634197..2890c3f75 100644 --- a/osi_object.proto +++ b/osi_object.proto @@ -344,13 +344,13 @@ message StationaryObject message IntensityDistribution { // Horizontal deflection (azimuth) of emission in emitting object - // coordinates. + // coordinate system. // // Unit: rad optional double horizontal_angle = 1; // Vertical deflection (elevation) of emission in emitting object - // coordinates. + // coordinate system. // // Unit: rad optional double vertical_angle = 2; @@ -358,9 +358,8 @@ message StationaryObject // Emitted intensity of emitting object at this point for one specific wavelength. // The value corresponds to the intensity defined in max_intensity_per_wavelength. // - // Unit: dB - // - optional double intensity = 3; + // Unit: % + optional double relative_intensity = 3; } } } From da3cb7ee1c6594dd8c52771b7f95be78c5ccb5b8 Mon Sep 17 00:00:00 2001 From: "@lukas.elster" Date: Mon, 14 Jun 2021 09:00:25 +0200 Subject: [PATCH 8/9] Changes in the description based on the CCB review. Signed-off-by: @lukas.elster --- osi_object.proto | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/osi_object.proto b/osi_object.proto index 2890c3f75..767f03a08 100644 --- a/osi_object.proto +++ b/osi_object.proto @@ -314,17 +314,21 @@ message StationaryObject } // - // \brief Attributes of type emitting structure + // \brief Attributes of type emitting structure. The horizontal_angle and the vertical_angle in + // emitted_spatial_intensity are symmetrical across the normal, which is defined by the mounting position + // of the emitting structure. // message EmittingStructureAttribute { - // This message determines the range of the wavelength and its + // This message determines the range of the emitted wavelength and its // desired number of samples. // repeated WavelengthData wavelength_data = 1; // Original intensities of emitted electromagnetic wave referred to a discrete - // wavelength defined in WavelengthData. This maximum value is weighted based on the IntensityDistribution. + // wavelength defined in WavelengthData. This maximum value is weighted based + // on the emitted spatial intensity. The size of max_intensitiy_per_wavelength has to be + // equal to the samples in wavelength_data. // // Unit: W/m^2 // @@ -332,33 +336,39 @@ message StationaryObject // repeated double max_intensity_per_wavelength = 2; - // Distribution of the emitted electromagnetic wave's intensity based on the intensity_per_wavelength as - // maximum value. + // Spatial distribution of the emitted electromagnetic wave's intensity based on the intensity_per_wavelength as + // maximum value. For every sample in wavelength_data an emitted_spatial_intensity has to be defined. // - repeated IntensityDistribution emitted_intensity_distribution = 3; + // \note emitted_spatial_intensity.size() = WavelengthData.samples_number.size() + // + repeated SpatialIntensity emitted_spatial_intensity = 3; // - // \brief Definition of a intensity distribution with a horizontal and a vertical angle - // and the corresponding intensity + // \brief Definition of a spatial intensity distribution with a horizontal and a vertical angle + // and the corresponding intensity related to a maximum intensity. // - message IntensityDistribution + message SpatialIntensity { // Horizontal deflection (azimuth) of emission in emitting object // coordinate system. // // Unit: rad + // optional double horizontal_angle = 1; // Vertical deflection (elevation) of emission in emitting object // coordinate system. // // Unit: rad + // optional double vertical_angle = 2; - // Emitted intensity of emitting object at this point for one specific wavelength. - // The value corresponds to the intensity defined in max_intensity_per_wavelength. + // Emitted intensity of emitting object at the previously defined horizontal_angle and + // vertical angle for one specific wavelength. The value corresponds to the intensity + // defined in max_intensity_per_wavelength. // // Unit: % + // optional double relative_intensity = 3; } } From 75e73ea471515ea136d062a9b9e4fd7e38c25364 Mon Sep 17 00:00:00 2001 From: "@lukas.elster" Date: Sat, 3 Jul 2021 11:58:16 +0200 Subject: [PATCH 9/9] Moved the distribution definition to osi_common and deleted the max_intensity based on the recommendations of Philipp Rosenberger Signed-off-by: @lukas.elster --- osi_common.proto | 34 ++++++++++++++++++++++++++++++++++ osi_object.proto | 48 ++++-------------------------------------------- 2 files changed, 38 insertions(+), 44 deletions(-) diff --git a/osi_common.proto b/osi_common.proto index 9a2c2868b..0c01afc7e 100644 --- a/osi_common.proto +++ b/osi_common.proto @@ -579,3 +579,37 @@ message WavelengthData // optional double samples_number = 3; } + +// +// \brief Definition of a spatial signal strength distribution +// for an emitting / transmitting / receiving entity +// with a horizontal and a vertical angle +// and the corresponding signal strength in dBm (decibels per milliwatt). +// +message SpatialSignalStrength +{ + // Horizontal angle (azimuth) of emission / transmission / reception + // in the entity's coordinate system. + // + // Unit: rad + // + optional double horizontal_angle = 1; + + // Vertical angle (elevation) of emission / transmission / reception + // in the entity's coordinate system. + // + // Unit: rad + // + optional double vertical_angle = 2; + + // Emitted / transmitted /received signal strength + // of the emitting / transmitting / receiving entity + // at the previously defined horizontal and + // vertical angle for one specific wavelength. + // The value for the signal strength + // is given in dBm (decibels per milliwatt). + // + // Unit: dBm + // + optional double signal_strength = 3; +} diff --git a/osi_object.proto b/osi_object.proto index 767f03a08..af2d9a232 100644 --- a/osi_object.proto +++ b/osi_object.proto @@ -325,52 +325,12 @@ message StationaryObject // repeated WavelengthData wavelength_data = 1; - // Original intensities of emitted electromagnetic wave referred to a discrete - // wavelength defined in WavelengthData. This maximum value is weighted based - // on the emitted spatial intensity. The size of max_intensitiy_per_wavelength has to be - // equal to the samples in wavelength_data. + // Spatial signal strength distribution of the emitted electromagnetic wave. + // For every sample in wavelength_data an emitted_spatial_signal_strength has to be defined. // - // Unit: W/m^2 + // \note emitted_spatial_signal_strength.size() = WavelengthData.samples_number.size() // - // \note max_intensity_per_wavelength.size() = WavelengthData.samples_number.size() - // - repeated double max_intensity_per_wavelength = 2; - - // Spatial distribution of the emitted electromagnetic wave's intensity based on the intensity_per_wavelength as - // maximum value. For every sample in wavelength_data an emitted_spatial_intensity has to be defined. - // - // \note emitted_spatial_intensity.size() = WavelengthData.samples_number.size() - // - repeated SpatialIntensity emitted_spatial_intensity = 3; - - // - // \brief Definition of a spatial intensity distribution with a horizontal and a vertical angle - // and the corresponding intensity related to a maximum intensity. - // - message SpatialIntensity - { - // Horizontal deflection (azimuth) of emission in emitting object - // coordinate system. - // - // Unit: rad - // - optional double horizontal_angle = 1; - - // Vertical deflection (elevation) of emission in emitting object - // coordinate system. - // - // Unit: rad - // - optional double vertical_angle = 2; - - // Emitted intensity of emitting object at the previously defined horizontal_angle and - // vertical angle for one specific wavelength. The value corresponds to the intensity - // defined in max_intensity_per_wavelength. - // - // Unit: % - // - optional double relative_intensity = 3; - } + repeated SpatialSignalStrength emitted_spatial_signal_strength = 3; } } }