Files
ParkingRobot/ClumsyPilot/ParkrobTrajplanner/EMPlanner/Configuration/LateralConfiguration.cs
T

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