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