Skip to content
Snippets Groups Projects
Commit 314ad948 authored by Andreas Rauschert's avatar Andreas Rauschert
Browse files

Handle case when neither rad or deg is set


Signed-off-by: default avatarAndreas Rauschert <andreas.rb.rauschert@bmw.de>
parent 1c421fe6
No related branches found
No related tags found
1 merge request!149Support lat lon in degree for GeoPosition
Pipeline #26789 passed
......@@ -73,19 +73,34 @@ mantle_api::Pose ConvertRoadPosition(const mantle_api::IEnvironment& environment
mantle_api::Pose ConvertGeoPosition(const mantle_api::IEnvironment& environment,
const NET_ASAM_OPENSCENARIO::v1_2::IGeoPosition& geo_position)
{
mantle_api::LatLonPosition lat_lon_position{
units::angle::radian_t(geo_position.GetLatitude()),
units::angle::radian_t(geo_position.GetLongitude())};
mantle_api::LatLonPosition lat_lon_position{};
// lat/lon in degree has higher priority since lat/lon in rad was deprecated in OSC1.2
if (geo_position.IsSetLatitudeDeg())
{
lat_lon_position.latitude = units::angle::degree_t(geo_position.GetLatitudeDeg());
}
else if (geo_position.IsSetLatitude())
{
lat_lon_position.latitude = units::angle::radian_t(geo_position.GetLatitude());
}
else
{
throw std::runtime_error("GeoPosition has neither latitudeDeg nor latitude defined. Please adjust the scenario.");
}
if (geo_position.IsSetLongitudeDeg())
{
lat_lon_position.longitude = units::angle::degree_t(geo_position.GetLongitudeDeg());
}
else if (geo_position.IsSetLongitude())
{
lat_lon_position.longitude = units::angle::radian_t(geo_position.GetLongitude());
}
else
{
throw std::runtime_error("GeoPosition has neither longitudeDeg nor longitude defined. Please adjust the scenario.");
}
mantle_api::Pose pose{};
pose.position = environment.GetConverter()->Convert(lat_lon_position);
......
......@@ -196,6 +196,13 @@ TEST_F(ConvertScenarioPositionTest,
ASSERT_EQ(expected_position_, pose->position);
}
TEST_F(ConvertScenarioPositionTest,
GivenGeoPositionWithoutLatLon_WhenConverting_ThenThrow)
{
auto pos = GetGeoPosition(std::nullopt, NET_ASAM_OPENSCENARIO::v1_2::ReferenceContext::ABSOLUTE, false, false);
EXPECT_ANY_THROW(OPENSCENARIO::ConvertScenarioPosition(mockEnvironment, pos));
}
TEST_F(ConvertScenarioPositionTest,
GivenGeoPositionWithAbsoluteOrientation_WhenConverting_ThenOrientationIsReturnedUnchanged)
{
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment