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

74 lines
3.6 KiB
C#

namespace MultiWheelC.TrajectoryPlanning.EMPlanner;
/// <summary>
/// EM 规划的触发节奏、预测窗口、离散上限和发布样本上限配置;默认值由 <see cref="EmPlannerConfiguration.CreateDefault"/> 为低速泊车协调。
/// </summary>
public sealed class SchedulingConfiguration
{
/// <summary>
/// 两次规划触发之间的周期;单位 s,默认值 0.20,必须为正有限值。
/// </summary>
public double ReplanPeriodSeconds { get; set; }
/// <summary>
/// 单次优化覆盖的预测时间窗口;单位 s,默认值 6,必须为正有限值。
/// </summary>
public double TimeHorizonSeconds { get; set; }
/// <summary>
/// 单次优化覆盖的最大参考线距离;单位 m,默认值 500,必须为正有限值;滚动规划时还须覆盖制动距离及一个重规划周期内的行程。
/// </summary>
public double DistanceHorizonMeters { get; set; }
/// <summary>
/// 发布轨迹相邻样本的时间间隔;单位 s,默认值 0.05,必须为正有限值。
/// </summary>
public double OutputTimeStepSeconds { get; set; }
/// <summary>
/// 单次求解允许使用的超时预算;单位 s,默认值 0.10,必须为正有限值。
/// </summary>
public double SolverTimeoutSeconds { get; set; }
/// <summary>
/// 与已发布轨迹交接时向前查看的时长;单位 s,默认值 0.30,必须为正有限值。
/// </summary>
public double HandoffLookaheadSeconds { get; set; }
/// <summary>
/// 接受车辆状态输入的最大时效;单位 s,默认值 0.20,必须为正有限值。
/// </summary>
public double MaximumVehicleStateAgeSeconds { get; set; }
/// <summary>
/// 纵向优化结点允许的最大时间间距;单位 s,默认值 0.20,必须为正有限值。
/// </summary>
public double MaximumOptimizationTimeStepSeconds { get; set; }
/// <summary>
/// 横向或走廊优化结点允许的最大空间间距;单位 m,默认值 0.10,必须为正有限值。
/// </summary>
public double MaximumOptimizationSpatialStepMeters { get; set; }
/// <summary>
/// 一次优化允许的最大结点数量;单位为结点数,默认值 401,必须为不小于 3 的整数。
/// </summary>
public int MaximumOptimizationKnotCount { get; set; }
/// <summary>
/// 一条发布轨迹允许的最大样本数量;单位为样本数,默认值 5001,必须为不小于 2 的整数。
/// </summary>
public int MaximumPublishedSampleCount { get; set; }
/// <summary>
/// 复制当前调度配置;输入为当前标量限制,输出为无共享可变状态的标量快照,不对数值作校验且不产生失败状态。
/// </summary>
internal SchedulingConfiguration Copy()
{
return new SchedulingConfiguration
{
ReplanPeriodSeconds = ReplanPeriodSeconds,
TimeHorizonSeconds = TimeHorizonSeconds,
DistanceHorizonMeters = DistanceHorizonMeters,
OutputTimeStepSeconds = OutputTimeStepSeconds,
SolverTimeoutSeconds = SolverTimeoutSeconds,
HandoffLookaheadSeconds = HandoffLookaheadSeconds,
MaximumVehicleStateAgeSeconds = MaximumVehicleStateAgeSeconds,
MaximumOptimizationTimeStepSeconds = MaximumOptimizationTimeStepSeconds,
MaximumOptimizationSpatialStepMeters = MaximumOptimizationSpatialStepMeters,
MaximumOptimizationKnotCount = MaximumOptimizationKnotCount,
MaximumPublishedSampleCount = MaximumPublishedSampleCount,
};
}
}