namespace MultiWheelC.TrajectoryPlanning.PathSmoothing; /// 一条原始或平滑路径的不可变质量指标。 public sealed class PathQualityMetrics { /// 创建全零、不可行的质量指标。 public PathQualityMetrics() : this(false, 0d, 0d, 0d, 0d, 0d, 0d, 0d, 0d, 0d, 0d) { } /// 创建完整的质量指标快照。 public PathQualityMetrics( bool isFeasible, double pathLengthMeters, double maximumAbsoluteVehicleCurvaturePerMeter, double rootMeanSquareVehicleCurvaturePerMeter, double totalAbsoluteCurvatureVariationPerMeter, double curvatureVariationEnergy, double minimumBodyClearanceMeters, double lengthChangePercent, double peakCurvatureChangePercent, double curvatureVariationChangePercent, double minimumClearanceChangeMeters) { IsFeasible = isFeasible; PathLengthMeters = pathLengthMeters; MaximumAbsoluteVehicleCurvaturePerMeter = maximumAbsoluteVehicleCurvaturePerMeter; RootMeanSquareVehicleCurvaturePerMeter = rootMeanSquareVehicleCurvaturePerMeter; TotalAbsoluteCurvatureVariationPerMeter = totalAbsoluteCurvatureVariationPerMeter; CurvatureVariationEnergy = curvatureVariationEnergy; MinimumBodyClearanceMeters = minimumBodyClearanceMeters; LengthChangePercent = lengthChangePercent; PeakCurvatureChangePercent = peakCurvatureChangePercent; CurvatureVariationChangePercent = curvatureVariationChangePercent; MinimumClearanceChangeMeters = minimumClearanceChangeMeters; } /// 该路径是否通过完整安全和运动学复核。 public bool IsFeasible { get; } /// 路径总弧长,单位 m。 public double PathLengthMeters { get; } /// 绝对车辆曲率峰值,单位 1/m。 public double MaximumAbsoluteVehicleCurvaturePerMeter { get; } /// 车辆曲率均方根,单位 1/m。 public double RootMeanSquareVehicleCurvaturePerMeter { get; } /// 逐方向段累加的绝对曲率变化,单位 1/m。 public double TotalAbsoluteCurvatureVariationPerMeter { get; } /// 逐方向段计算的曲率变化能量。 public double CurvatureVariationEnergy { get; } /// 完整扩大车体的最小保守净空,单位 m。 public double MinimumBodyClearanceMeters { get; } /// 相对原始粗路径的长度变化百分比。 public double LengthChangePercent { get; } /// 相对原始粗路径的峰值曲率变化百分比。 public double PeakCurvatureChangePercent { get; } /// 相对原始粗路径的曲率变化百分比。 public double CurvatureVariationChangePercent { get; } /// 相对原始粗路径的最小净空变化,单位 m。 public double MinimumClearanceChangeMeters { get; } }