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(),
};
}
}