namespace MultiWheelC.TrajectoryPlanning.EMPlanner; /// /// ST 纵向优化的速度、舒适性和终端保持限制配置;所有数值由 提供低速泊车默认值。 /// public sealed class LongitudinalConfiguration { /// /// 前进方向允许的最大速度;单位 m/s,默认值 1,必须为正有限值。 /// public double MaximumForwardSpeedMetersPerSecond { get; set; } /// /// 倒车方向允许的最大速度;单位 m/s,默认值 0.5,必须为正有限值。 /// public double MaximumReverseSpeedMetersPerSecond { get; set; } /// /// 前进方向的目标巡航速度;单位 m/s,默认值 1,必须为正有限值且不得超过 。 /// public double DesiredForwardSpeedMetersPerSecond { get; set; } /// /// 倒车方向的目标巡航速度;单位 m/s,默认值 0.5,必须为正有限值且不得超过 。 /// public double DesiredReverseSpeedMetersPerSecond { get; set; } /// /// 允许的最大纵向加速度;单位 m/s²,默认值 0.20,必须为正有限值。 /// public double MaximumAccelerationMetersPerSecondSquared { get; set; } /// /// 允许的最大纵向减速度幅值;单位 m/s²,默认值 0.30,必须为正有限值。 /// public double MaximumDecelerationMetersPerSecondSquared { get; set; } /// /// 允许的最大纵向加加速度幅值;单位 m/s³,默认值 0.50,必须为正有限值。 /// public double MaximumJerkMetersPerSecondCubed { get; set; } /// /// 由速度和曲率共同施加的最大横向加速度;单位 m/s²,默认值 0.20,必须为正有限值。 /// public double MaximumLateralAccelerationMetersPerSecondSquared { get; set; } /// /// 车辆曲率随时间变化的上限;单位 1/(m·s),默认值 0.50,必须为正有限值。 /// public double MaximumCurvatureRatePerMeterPerSecond { get; set; } /// /// 将进度速度视为停止的容差;单位 m/s,默认值 0.01,必须为非负有限值。 /// public double StopSpeedToleranceMetersPerSecond { get; set; } /// /// 到达零速度后需保持的时长;单位 s,默认值 0.20,必须为正有限值。 /// public double ZeroSpeedHoldSeconds { get; set; } /// /// 纵向 QP 目标函数的权重集合;无直接单位,必须非空且其每项为非负有限值,默认值为新的 对象。 /// public LongitudinalWeights Weights { get; set; } /// /// 复制当前纵向配置;输入为当前标量和权重引用,输出为不共享非空权重对象的可修改快照,权重为 null 时保持为空且不产生失败状态。 /// internal LongitudinalConfiguration Copy() { return new LongitudinalConfiguration { MaximumForwardSpeedMetersPerSecond = MaximumForwardSpeedMetersPerSecond, MaximumReverseSpeedMetersPerSecond = MaximumReverseSpeedMetersPerSecond, DesiredForwardSpeedMetersPerSecond = DesiredForwardSpeedMetersPerSecond, DesiredReverseSpeedMetersPerSecond = DesiredReverseSpeedMetersPerSecond, MaximumAccelerationMetersPerSecondSquared = MaximumAccelerationMetersPerSecondSquared, MaximumDecelerationMetersPerSecondSquared = MaximumDecelerationMetersPerSecondSquared, MaximumJerkMetersPerSecondCubed = MaximumJerkMetersPerSecondCubed, MaximumLateralAccelerationMetersPerSecondSquared = MaximumLateralAccelerationMetersPerSecondSquared, MaximumCurvatureRatePerMeterPerSecond = MaximumCurvatureRatePerMeterPerSecond, StopSpeedToleranceMetersPerSecond = StopSpeedToleranceMetersPerSecond, ZeroSpeedHoldSeconds = ZeroSpeedHoldSeconds, Weights = Weights == null ? null : Weights.Copy(), }; } }