44 lines
2.0 KiB
C#
44 lines
2.0 KiB
C#
namespace MultiWheelC.TrajectoryPlanning.EMPlanner;
|
|
|
|
/// <summary>
|
|
/// LS 横向优化的离散、收敛、曲率和边界限制配置。
|
|
/// </summary>
|
|
public sealed class LateralConfiguration
|
|
{
|
|
/// <summary>
|
|
/// 相邻外层迭代横向解之间允许的最大偏移量;单位 m,默认值 0.05,必须为正有限值。
|
|
/// </summary>
|
|
public double MaximumLateralStepPerIterationMeters { get; set; }
|
|
/// <summary>
|
|
/// 横向偏移对弧长的一阶导数上限;无量纲,默认值 0.50,必须为正有限值。
|
|
/// </summary>
|
|
public double MaximumLateralSlope { get; set; }
|
|
/// <summary>
|
|
/// 横向偏移对弧长的二阶导数上限;单位 1/m,默认值 1,必须为正有限值。
|
|
/// </summary>
|
|
public double MaximumLateralSecondDerivativePerMeter { get; set; }
|
|
/// <summary>
|
|
/// 横向偏移对弧长的三阶导数上限;单位 1/m²,默认值 2,必须为正有限值。
|
|
/// </summary>
|
|
public double MaximumLateralThirdDerivativePerSquareMeter { get; set; }
|
|
/// <summary>
|
|
/// 横向 QP 目标函数的权重集合;无直接单位,必须非空且其每项为非负有限值,默认值为新的 <see cref="LateralWeights"/> 对象。
|
|
/// </summary>
|
|
public LateralWeights Weights { get; set; }
|
|
|
|
/// <summary>
|
|
/// 复制当前横向配置;输入为当前标量和权重引用,输出为不共享非空权重对象的可修改快照,权重为 <c>null</c> 时保持为空且不产生失败状态。
|
|
/// </summary>
|
|
internal LateralConfiguration Copy()
|
|
{
|
|
return new LateralConfiguration
|
|
{
|
|
MaximumLateralStepPerIterationMeters = MaximumLateralStepPerIterationMeters,
|
|
MaximumLateralSlope = MaximumLateralSlope,
|
|
MaximumLateralSecondDerivativePerMeter = MaximumLateralSecondDerivativePerMeter,
|
|
MaximumLateralThirdDerivativePerSquareMeter = MaximumLateralThirdDerivativePerSquareMeter,
|
|
Weights = Weights == null ? null : Weights.Copy(),
|
|
};
|
|
}
|
|
}
|