Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
191 changes: 178 additions & 13 deletions osi_environment.proto
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,10 @@ message EnvironmentalConditions
// The time of day at the host vehicles location.
//
optional TimeOfDay time_of_day = 2;


// The unix timestamp describes the time and date at the host vehicle's
// location, referring to UTC.
//
// The Unix epoch (or Unix time or POSIX time or Unix timestamp) is
// the number of seconds that have elapsed since January 1, 1970
// (midnight UTC/GMT [1]), not counting leap seconds [2].
Expand All @@ -31,7 +34,7 @@ message EnvironmentalConditions
// is Unix time 0 (midnight 1/1/1970), but 'epoch' is often used as
// a synonym for 'Unix time'. Many Unix systems store epoch dates as
// a signed 32-bit integer, which might cause problems on January 19,
// 2038 (known as the Year 2038 problem or Y2038).
// 2038 (known as the Year 2038 problem or Y2038).
//
// \note You can convert the timestamp using the following [routines
// sorted by languages](https://www.epochconverter.com/#code).
Expand Down Expand Up @@ -90,7 +93,7 @@ message EnvironmentalConditions

// Optional external reference to the environmental condition sources.
//
// \note For OpenDRIVE and OpenSECNARIO there is no direct counterpart.
// \note For OpenDRIVE and OpenSCENARIO there is no direct counterpart.
//
// \note For non-ASAM standards, it is implementation-specific how
// source_reference is resolved.
Expand All @@ -101,6 +104,18 @@ message EnvironmentalConditions
//
repeated ExternalReference source_reference = 9;

// Description of the clouds.
//
optional CloudLayer clouds = 10;

// Description of the wind.
//
optional Wind wind = 11;

// Description of the sun.
//
optional Sun sun = 12;

// Definition of discretized precipitation states according to [1].
// (I = Intensity of precipitation in mm per hour mm/h)
//
Expand Down Expand Up @@ -242,55 +257,55 @@ message EnvironmentalConditions
//
AMBIENT_ILLUMINATION_OTHER = 1;

// Level 1 illumination in ]0.001, 0.01[ lx
// Level 1 illumination in ]0.001, 0.01[ lx. \n
// E.g. Night with no artificial light.
//
// \note Use \c #AMBIENT_ILLUMINATION_LEVEL1 if illumination is less
// than 0.001 lx
// than 0.001 lx.
//
AMBIENT_ILLUMINATION_LEVEL1 = 2;

// Level 2 illumination in [0.01, 1[ lx
// Level 2 illumination in [0.01, 1[ lx. \n
// E.g. Night full moon / Deep twilight.
//
AMBIENT_ILLUMINATION_LEVEL2 = 3;

// Level 3 illumination in [1, 3[ lx
// Level 3 illumination in [1, 3[ lx. \n
// E.g. Deep to average twilight / Minimum lighting on local low
// pedestrian conflict roads.
//
AMBIENT_ILLUMINATION_LEVEL3 = 4;

// Level 4 illumination in [3, 10[ lx
// Level 4 illumination in [3, 10[ lx. \n
// E.g. Average to full twilight / Minimum lighting on collector roads /
// Minimum lighting on major and expressway roads with low to average
// pedestrian conflict.
//
AMBIENT_ILLUMINATION_LEVEL4 = 5;

// Level 5 illumination in [10, 20[ lx
// Level 5 illumination in [10, 20[ lx. \n
// E.g. Minimum lighting on major and expressway roads with high
// pedestrian conflict.
//
AMBIENT_ILLUMINATION_LEVEL5 = 6;

// Level 6 illumination in [20, 400[ lx
// Level 6 illumination in [20, 400[ lx. \n
// E.g. Roads with more lighting / Very dark overcast day to sunrise or
// sunset on a clear day.
//
AMBIENT_ILLUMINATION_LEVEL6 = 7;

// Level 7 illumination in [400, 1000[ lx
// Level 7 illumination in [400, 1000[ lx. \n
// E.g. Sunrise or sunset on a clear day / Overcast day.
//
AMBIENT_ILLUMINATION_LEVEL7 = 8;

// Level 8 illumination in [1000, 10000[ lx
// Level 8 illumination in [1000, 10000[ lx. \n
// E.g. Average to full daylight.
//
AMBIENT_ILLUMINATION_LEVEL8 = 9;

// Level 9 illumination in [10000, 120000[ lx
// Level 9 illumination in [10000, 120000[ lx. \n
// E.g. Full daylight to intense sunlight.
//
// \note Use \c #AMBIENT_ILLUMINATION_LEVEL9 if illumination is more
Expand Down Expand Up @@ -324,4 +339,154 @@ message EnvironmentalConditions
//
optional uint32 seconds_since_midnight = 1;
}

//
// \brief Description of a cloud layer.
//
message CloudLayer
{
// Properties of a cloud layer given by fractional cloud cover levels.
//
optional FractionalCloudCover fractional_cloud_cover = 1;

// Defines the fractional cloud cover [1] given by observation of total cloud amount in eights (oktas) of the sky.
//
// For visual alignment please see reference [2].
//
// The total degree of coverage indicates how much of the sky is covered with clouds altogether.
// 0 oktas means that there are no traces of clouds in the sky,
// 8 oktas means that the sky is completely covered with clouds and no sky blue can be recognized.
//
// \par References:
// [1] CIE engl. International Commission on Illumination. (2020). <em>CIE S017:2020 ILV: Intl. Lighitng Vocabulary, 2nd edn.</em>. Retrieved March 8, 2022, from https://cie.co.at/eilvterm/17-29-116 \n
// [2] UBC The University of British Columbia. (2018). <em>ATSC 113 Weather for Sailing, Flying & Snow Sports</em>. Retrieved March 8, 2022, from https://www.eoas.ubc.ca/courses/atsc113/flying/met_concepts/01-met_concepts/01c-cloud_coverage/index.html
//
enum FractionalCloudCover
{
// Fractional cloud cover level is unknown (must not be used in ground truth).
//
FRACTIONAL_CLOUD_COVER_UNKNOWN = 0;

// Other (unspecified but known) fractional cloud cover level.
//
FRACTIONAL_CLOUD_COVER_OTHER = 1;

// 0/8 of the sky is covered with clouds.
//
FRACTIONAL_CLOUD_COVER_ZERO_OKTAS = 2;

// 1/8 of the sky is covered with clouds.
//
FRACTIONAL_CLOUD_COVER_ONE_OKTAS = 3;

// 2/8 of the sky is covered with clouds.
//
FRACTIONAL_CLOUD_COVER_TWO_OKTAS = 4;

// 3/8 of the sky is covered with clouds.
//
FRACTIONAL_CLOUD_COVER_THREE_OKTAS = 5;

// 4/8 of the sky is covered with clouds.
//
FRACTIONAL_CLOUD_COVER_FOUR_OKTAS = 6;

// 5/8 of the sky is covered with clouds.
//
FRACTIONAL_CLOUD_COVER_FIVE_OKTAS = 7;

// 6/8 of the sky is covered with clouds.
//
FRACTIONAL_CLOUD_COVER_SIX_OKTAS = 8;

// 7/8 of the sky is covered with clouds.
//
FRACTIONAL_CLOUD_COVER_SEVEN_OKTAS = 9;

// 8/8 of the sky is covered with clouds.
//
FRACTIONAL_CLOUD_COVER_EIGHT_OKTAS = 10;

// Sky obscured, describes situations where the sky is not perceivable, e.g. in dense fog.
//
FRACTIONAL_CLOUD_COVER_SKY_OBSCURED = 11;
}
}

//
// \brief Defines wind properties.
//
message Wind
{
// The origin direction of the wind (not the target direction) in the ground/xy-plane of the
// world coordinate system. Corresponds to the heading/yaw angle, counted counterclockwise.
// 0 pointing north. If north is not explicitly defined via \c #osi3::GroundTruth::proj_string,
// then north is pointing in y-axis direction. The default orientation (x, y, z) is easting, northing, up [1].
//
// \note 0: north; +pi/2: west; pi: south, 3/2 pi: east.
//
// Unit: rad
//
// The preferred angular range is [0, 2pi].
//
// \par References:
// [1] PROJ contributors. (2019). <em>PROJ coordinate transformation software library</em>. Open Source Geospatial Foundation. Retrieved January 25, 2019, from https://proj.org/usage/projections.html
//
optional double origin_direction = 1;

// The wind speed.
//
// Unit: m/s
//
// \rules
// is_greater_than_or_equal_to: 0
// \endrules
//
optional double speed = 2;
}

//
// \brief Properties of the sun.
//
message Sun
{
// Azimuth of the sun, counted counterclockwise.
// 0 pointing north. If north is not explicitly defined via \c #osi3::GroundTruth::proj_string,
// then north is pointing in y-axis direction. The default orientation (x, y, z) is easting, northing, up [1].
// The point of observation is defined to be the global coordinate system's origin.
//
// \note 0: north; +pi/2: west; pi: south, 3/2 pi: east.
//
// Unit: rad
//
// The preferred angular range is [0, 2pi].
//
// \par References:
// [1] PROJ contributors. (2019). <em>PROJ coordinate transformation software library</em>. Open Source Geospatial Foundation. Retrieved January 25, 2019, from https://proj.org/usage/projections.html
//
optional double azimuth = 1;

// Solar elevation angle.
// The elevation angle is positive when the sun is above the xy-plane, negative when
// the sun is below the xy-plane.
// The point of observation is defined to be the global coordinate system's origin.
//
// \note 0: xy-plane; +pi/2: zenith; -pi/2: nadir.
//
// Unit: rad
//
// The preferred angular range is [-pi/2, +pi/2].
//
optional double elevation = 2;

// Illuminance of the sun, direct sunlight is around 100000 lx.
//
// Unit: lx
//
// \rules
// is_greater_than_or_equal_to: 0
// \endrules
//
optional double intensity = 3;
}
}