Skip to content
Snippets Groups Projects

fix: Error message unsupported trajectory shape

Merged Luis Gressenbuch requested to merge error_message_unsupported_trajectory_type into main
All threads resolved!
Files
5
@@ -19,6 +19,7 @@
#include "Conversion/OscToMantle/ConvertScenarioClothoidSpline.h"
#include "Conversion/OscToMantle/ConvertScenarioPosition.h"
#include "Utils/Logger.h"
namespace OpenScenarioEngine::v1_3
{
@@ -46,7 +47,7 @@ std::shared_ptr<NET_ASAM_OPENSCENARIO::v1_3::ITrajectory> OpenScenarioToMantle(c
{
return ConvertCatalogReferenceToTrajectory(catalogReference);
}
throw std::runtime_error("convertScenarioRoute: Either trajectorReference or catalogReference must be set");
throw std::runtime_error("ConvertScenarioTrajectoryRef: Either trajectorReference or catalogReference must be set. Note: Deprecated element Trajectory is not supported.");
}
mantle_api::TrajectoryReferencePoint ParseTrajectoryReferencePoint(const std::shared_ptr<NET_ASAM_OPENSCENARIO::v1_3::ITrajectory>& follow_trajectory_action_trajectory)
@@ -100,31 +101,9 @@ mantle_api::Trajectory ConvertPolyline(const std::shared_ptr<NET_ASAM_OPENSCENAR
{
mantle_api::PolyLinePoint poly_line_point;
// TODO CK Separate method to parse position, which can be used anywhere in the openScenarioEngine
auto poly_line_vertex_position = poly_line_vertex->GetPosition();
auto pose = ConvertScenarioPosition(environment, poly_line_vertex_position);
poly_line_point.pose = pose.value();
// if (poly_line_vertex_position->GetWorldPosition())
// {
// auto world_position = poly_line_vertex_position->GetWorldPosition();
// mantle_api::Vec3<units::length::meter_t> position;
// position.x = units::length::meter_t(world_position->GetX());
// position.y = units::length::meter_t(world_position->GetY());
// position.z = units::length::meter_t(world_position->GetZ());
// mantle_api::Orientation3<units::angle::radian_t> orientation;
// orientation.yaw = units::angle::radian_t(world_position->GetH());
// orientation.pitch = units::angle::radian_t(world_position->GetP());
// orientation.roll = units::angle::radian_t(world_position->GetR());
// poly_line_point.pose = {position, orientation};
// }
// else
// {
// Logger::Warning("FollowTrajectoryAction currently does not support other Position types than "
// "WorldPosition in Polyline shape");
// }
poly_line_point.time = poly_line_vertex->IsSetTime() ? std::make_optional<units::time::second_t>(poly_line_vertex->GetTime()) : std::nullopt;
@@ -141,18 +120,20 @@ TrajectoryRef ConvertScenarioTrajectoryRef(const std::shared_ptr<mantle_api::IEn
const std::shared_ptr<NET_ASAM_OPENSCENARIO::v1_3::ITrajectoryRef>& trajectoryRef,
const std::shared_ptr<NET_ASAM_OPENSCENARIO::v1_3::ICatalogReference>& catalogReference)
{
auto follow_trajectory_action_trajectory = detail::OpenScenarioToMantle(trajectoryRef, catalogReference);
const auto trajectory = detail::OpenScenarioToMantle(trajectoryRef, catalogReference);
const auto shape = trajectory->GetShape();
auto follow_trajectory_action_trajectory_shape = follow_trajectory_action_trajectory->GetShape();
if (follow_trajectory_action_trajectory_shape->GetPolyline())
if (shape->IsSetPolyline())
{
return detail::ConvertPolyline(follow_trajectory_action_trajectory, environment);
return detail::ConvertPolyline(trajectory, environment);
}
else if (follow_trajectory_action_trajectory_shape->GetClothoidSpline())
if (shape->IsSetClothoidSpline())
{
return detail::ConvertClothoidShape(follow_trajectory_action_trajectory);
return detail::ConvertClothoidShape(trajectory);
}
Logger::Error("ConvertScenarioTrajectoryRef: Unsupported trajectory shape for trajectory '" + trajectory->GetName() + "'. Only Polyline and ClothoidSpline are supported!");
return std::nullopt;
}
Loading