chore: save current workspace progress
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
using System;
|
||||
using MultiWheelC.TrajectoryPlanning.CoarsePath;
|
||||
using MultiWheelC.TrajectoryPlanning.CoarsePath.Vehicle;
|
||||
using MultiWheelC.TrajectoryPlanning.Utils;
|
||||
|
||||
namespace MultiWheelC.TrajectoryPlanning.PathSmoothing.Validation;
|
||||
|
||||
internal static class CurvatureLimitPolicy
|
||||
{
|
||||
internal static bool TryGetAllowedMaximumVehicleCurvaturePerMeter(
|
||||
VehicleParameters vehicle,
|
||||
double radiusToleranceMeters,
|
||||
out double allowedMaximumCurvaturePerMeter)
|
||||
{
|
||||
allowedMaximumCurvaturePerMeter = 0d;
|
||||
if (!NumericGuard.IsFinite(radiusToleranceMeters) || radiusToleranceMeters < 0d ||
|
||||
!VehicleKinematics.TryGetMaximumCurvaturePerMeter(vehicle, out double nominalMaximumCurvature))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
double nominalMinimumRadius = 1d / nominalMaximumCurvature;
|
||||
double toleratedMinimumRadius = nominalMinimumRadius - radiusToleranceMeters;
|
||||
if (!NumericGuard.IsPositiveFinite(toleratedMinimumRadius)) return false;
|
||||
|
||||
allowedMaximumCurvaturePerMeter = 1d / toleratedMinimumRadius;
|
||||
return NumericGuard.IsPositiveFinite(allowedMaximumCurvaturePerMeter);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user