using System; namespace MultiWheelC.TrajectoryPlanning.CoarsePath; /// /// Hybrid A* 粗路径搜索的可调配置。 /// 长度和距离使用 m,航向使用 rad,曲率使用 1/m;各项有效范围由规划器在执行前校验。 /// public sealed class HybridAStarConfiguration { /// 创建采用 P0 固定安全边界和代价权重的默认配置。 public HybridAStarConfiguration() { PrimitiveLengthMeters = 0.50d; IntegrationStepMeters = 0.05d; MaximumCollisionCheckStepMeters = 0.025d; HeadingResolutionRadians = Math.PI / 36d; CurvatureLevelCount = 5; GoalPositionToleranceMeters = 0.15d; GoalHeadingToleranceRadians = Math.PI / 36d; MaximumExpandedNodes = 200000; SearchTimeout = TimeSpan.FromSeconds(5d); HeuristicWeight = 1d; ReverseCostMultiplier = 1.5d; GearSwitchPenaltyMeters = 1d; CurvatureMagnitudeWeight = 0.10d; CurvatureChangePenaltyMetersPerLevel = 0.05d; ClearanceCostWeight = 0.20d; ClearanceCostDistanceMeters = 0.50d; AllowReverse = true; } /// 单个恒曲率原语的最大行驶长度,单位 m。 public double PrimitiveLengthMeters { get; set; } /// 原语内部输出积分点之间允许的最大弧长,单位 m。 public double IntegrationStepMeters { get; set; } /// 连续碰撞检查允许的最大车辆中心位移,单位 m;实际值还受地图分辨率限制。 public double MaximumCollisionCheckStepMeters { get; set; } /// 搜索状态离散所使用的航向格宽,单位 rad。 public double HeadingResolutionRadians { get; set; } /// 从最大负曲率到最大正曲率的离散曲率等级数。 public int CurvatureLevelCount { get; set; } /// 终点位置允许的欧氏距离误差,单位 m。 public double GoalPositionToleranceMeters { get; set; } /// 终点车头航向允许的最小环形角度误差,单位 rad。 public double GoalHeadingToleranceRadians { get; set; } /// 单次搜索允许扩展的最大节点数。 public int MaximumExpandedNodes { get; set; } /// 单次搜索允许消耗的最长时间;超出后返回 public TimeSpan SearchTimeout { get; set; } /// 二维绕障启发式的权重;1 表示不额外放大。 public double HeuristicWeight { get; set; } /// 倒车原语长度代价相对前进原语的倍率。 public double ReverseCostMultiplier { get; set; } /// 相邻原语发生换向时增加的等效距离代价,单位 m。 public double GearSwitchPenaltyMeters { get; set; } /// 曲率绝对值对应的无量纲代价权重。 public double CurvatureMagnitudeWeight { get; set; } /// 相邻曲率等级每变化一级增加的等效距离代价,单位 m。 public double CurvatureChangePenaltyMetersPerLevel { get; set; } /// 车体保守净空不足时增加的无量纲代价权重。 public double ClearanceCostWeight { get; set; } /// 计算净空代价时视为足够安全的车体保守净空,单位 m。 public double ClearanceCostDistanceMeters { get; set; } /// 是否允许生成倒车原语;false 时搜索只生成前进原语。 public bool AllowReverse { get; set; } }