diff --git a/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Contracts/LocalG2QuinticOptions.cs b/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Contracts/LocalG2QuinticOptions.cs
index 7bc1e64..a6b88af 100644
--- a/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Contracts/LocalG2QuinticOptions.cs
+++ b/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Contracts/LocalG2QuinticOptions.cs
@@ -1,15 +1,24 @@
namespace MultiWheelC.TrajectoryPlanning.PathSmoothing;
-/// 局部 G2 五次过渡的可配置阈值。
+/// 局部 G2 五次过渡窗口、候选数量和改进阈值的可配置快照;长度单位为 m,曲率跳变单位为 1/m。
public sealed class LocalG2QuinticOptions
{
+ /// 允许候选窗口的最小弧长,单位 m。
public double MinimumWindowLengthMeters { get; set; } = 0.20d;
+ /// 优先尝试的窗口弧长,单位 m。
public double PreferredWindowLengthMeters { get; set; } = 0.50d;
+ /// 允许候选窗口的最大弧长,单位 m。
public double MaximumWindowLengthMeters { get; set; } = 0.80d;
+ /// 候选相对原始路径允许的最大几何偏移,单位 m。
public double MaximumDeviationMeters { get; set; } = 0.10d;
+ /// 识别曲率跳变的绝对下限,单位 1/m。
public double AbsoluteCurvatureJumpFloorPerMeter { get; set; } = 0.001d;
+ /// 曲率跳变相对车辆最大允许曲率的比例阈值。
public double CurvatureJumpRatioOfMaximum { get; set; } = 0.05d;
+ /// 接受候选所需的峰值曲率导数最小改善比例。
public double MinimumPeakGradientImprovementRatio { get; set; } = 0.20d;
+ /// 候选相对原路径允许的曲率变化代价最大退化比例。
public double MaximumVariationCostRegressionRatio { get; set; } = 0.02d;
+ /// 每个局部区域允许评估的候选数量上限。
public int MaximumCandidatesPerRegion { get; set; } = 12;
}
diff --git a/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Contracts/PathQualityMetrics.cs b/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Contracts/PathQualityMetrics.cs
index 251b387..22b7b09 100644
--- a/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Contracts/PathQualityMetrics.cs
+++ b/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Contracts/PathQualityMetrics.cs
@@ -9,7 +9,18 @@ public sealed class PathQualityMetrics
{
}
- /// 创建完整的质量指标快照。
+ /// 创建不显式提供曲率导数峰值的完整质量指标快照;曲率导数峰值按 0 处理。
+ /// 是否通过完整安全和运动学复核。
+ /// 路径总弧长,单位 m。
+ /// 绝对车辆曲率峰值,单位 1/m。
+ /// 车辆曲率均方根,单位 1/m。
+ /// 按方向段累计的绝对曲率变化,单位 1/m。
+ /// 无单位的曲率变化能量/代价。
+ /// 扩大车体的最小保守净空,单位 m。
+ /// 相对原始粗路径的长度变化百分比。
+ /// 相对原始粗路径的峰值曲率变化百分比。
+ /// 相对原始粗路径的曲率变化百分比。
+ /// 相对原始粗路径的最小净空变化,单位 m。
public PathQualityMetrics(
bool isFeasible,
double pathLengthMeters,
@@ -38,7 +49,19 @@ public sealed class PathQualityMetrics
{
}
- /// 创建带有曲率导数峰值的完整质量指标快照。
+ /// 创建包含曲率导数峰值的完整质量指标快照。
+ /// 是否通过完整安全和运动学复核。
+ /// 路径总弧长,单位 m。
+ /// 绝对车辆曲率峰值,单位 1/m。
+ /// 绝对车辆曲率导数峰值,单位 1/m²。
+ /// 车辆曲率均方根,单位 1/m。
+ /// 按方向段累计的绝对曲率变化,单位 1/m。
+ /// 无单位的曲率变化能量/代价。
+ /// 扩大车体的最小保守净空,单位 m。
+ /// 相对原始粗路径的长度变化百分比。
+ /// 相对原始粗路径的峰值曲率变化百分比。
+ /// 相对原始粗路径的曲率变化百分比。
+ /// 相对原始粗路径的最小净空变化,单位 m。
public PathQualityMetrics(
bool isFeasible,
double pathLengthMeters,
diff --git a/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Contracts/PathSmoothingRegionFailureReason.cs b/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Contracts/PathSmoothingRegionFailureReason.cs
index 91b5bf2..f763cb0 100644
--- a/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Contracts/PathSmoothingRegionFailureReason.cs
+++ b/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Contracts/PathSmoothingRegionFailureReason.cs
@@ -1,17 +1,28 @@
namespace MultiWheelC.TrajectoryPlanning.PathSmoothing;
-/// 局部 G2 区域未替换原始路径的稳定原因。
+/// 局部 G2 区域未替换原始路径的稳定原因;该枚举解释保留原始几何,而非发布未验证候选。
public enum PathSmoothingRegionFailureReason
{
+ /// 区域已改进或无需拒绝原因。
None,
+ /// 无法在同一方向段内构造满足长度约束的窗口。
WindowUnavailable,
+ /// 候选曲线无法生成或不满足基本几何条件。
CandidateGenerationFailed,
+ /// 候选车体或扫掠与地图障碍发生碰撞。
Collision,
+ /// 候选未达到所需最小净空,单位要求见配置。
InsufficientClearance,
+ /// 候选车辆曲率超过最大允许值,单位 1/m。
CurvatureExceeded,
+ /// 候选在连续采样或拼接处出现曲率超限。
CurvatureOvershoot,
+ /// 候选相对原始路径的偏移超过最大限制,单位 m。
DeviationExceeded,
+ /// 候选未满足峰值梯度改善阈值。
InsufficientImprovement,
+ /// 候选曲率变化代价相对原始路径退化超过允许比例。
VariationCostRegression,
+ /// 局部候选通过但整条路径独立复核失败,已回滚到原始几何。
GlobalValidationRollback,
}
diff --git a/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Contracts/PathSmoothingRegionReport.cs b/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Contracts/PathSmoothingRegionReport.cs
index 4004314..bee5b37 100644
--- a/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Contracts/PathSmoothingRegionReport.cs
+++ b/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Contracts/PathSmoothingRegionReport.cs
@@ -6,6 +6,26 @@ namespace MultiWheelC.TrajectoryPlanning.PathSmoothing;
/// 单个局部 G2 平滑区域的不可变发布报告。
public sealed class PathSmoothingRegionReport
{
+ /// 创建单个局部 G2 区域的不可变处理报告。
+ /// 所属方向段的从零开始索引。
+ /// 区域在完整路径上的起始弧长,单位 m。
+ /// 区域在完整路径上的结束弧长,单位 m。
+ /// 触发该区域的曲率跳变只读副本,单位 1/m。
+ /// 规划窗口长度,单位 m。
+ /// 实际参与平滑的窗口长度,单位 m。
+ /// 锚点左侧窗口长度,单位 m。
+ /// 锚点右侧窗口长度,单位 m。
+ /// 已评估候选数量。
+ /// 改进时选中候选索引;未改进时结果固定为 -1。
+ /// 区域是替换为改进候选还是保留原始几何。
+ /// 未替换原始几何时的稳定拒绝原因。
+ /// 原始峰值曲率导数,单位 1/m²。
+ /// 结果峰值曲率导数,单位 1/m²。
+ /// 原始曲率变化代价。
+ /// 结果曲率变化代价。
+ /// 候选相对原始路径最大偏移,单位 m。
+ /// 扩大车体最小保守净空,单位 m。
+ /// 绝对车辆曲率峰值,单位 1/m。
public PathSmoothingRegionReport(
int segmentIndex,
double startArcLengthMeters,
diff --git a/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Contracts/PathSmoothingRegionStatus.cs b/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Contracts/PathSmoothingRegionStatus.cs
index 752d3ef..2ec5cbe 100644
--- a/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Contracts/PathSmoothingRegionStatus.cs
+++ b/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Contracts/PathSmoothingRegionStatus.cs
@@ -1,8 +1,10 @@
namespace MultiWheelC.TrajectoryPlanning.PathSmoothing;
-/// 单个局部 G2 平滑区域的处理结果。
+/// 单个局部 G2 平滑区域的处理结果;原始几何被保留时仍是稳定且可发布的选择。
public enum PathSmoothingRegionStatus
{
+ /// 已选择并验证一个改进候选替换区域原始几何。
Improved,
+ /// 没有安全且足够改进的候选,保留原始几何。
RetainedOriginal,
}
diff --git a/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Contracts/SmoothedPathPoint.cs b/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Contracts/SmoothedPathPoint.cs
index b0a3c8a..532c9d3 100644
--- a/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Contracts/SmoothedPathPoint.cs
+++ b/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Contracts/SmoothedPathPoint.cs
@@ -5,6 +5,20 @@ namespace MultiWheelC.TrajectoryPlanning.PathSmoothing;
/// 平滑空间路径上的不可变采样点;位置和长度单位为 m,航向为 rad,曲率为 1/m。
public sealed class SmoothedPathPoint
{
+ ///
+ /// 创建不显式提供曲率导数的不可变平滑路径点;曲率对弧长导数按 0 处理。
+ ///
+ /// 世界 X 坐标,单位 m。
+ /// 世界 Y 坐标,单位 m。
+ /// 规范化车辆航向,单位 rad。
+ /// 跨越 ±π 后仍连续的车辆航向,单位 rad。
+ /// 从完整路径起点累计的弧长,单位 m。
+ /// 该点所属方向段的实际行驶方向。
+ /// 几何曲线曲率,单位 1/m。
+ /// 车辆模型使用的有符号曲率,单位 1/m。
+ /// 扩大车体后的保守净空下界,单位 m。
+ /// 为 时表示新方向段开始的精确换向点。
+ /// 该点在平滑流程中的来源枚举。
public SmoothedPathPoint(
double xMeters,
double yMeters,
@@ -33,7 +47,19 @@ public sealed class SmoothedPathPoint
{
}
- /// 创建带有车辆曲率对弧长导数的不可变采样点。
+ /// 创建带有车辆曲率对弧长导数的不可变平滑路径点。
+ /// 世界 X 坐标,单位 m。
+ /// 世界 Y 坐标,单位 m。
+ /// 规范化车辆航向,单位 rad。
+ /// 连续展开的车辆航向,单位 rad。
+ /// 从完整路径起点累计的弧长,单位 m。
+ /// 该点所属的前进或倒车方向。
+ /// 几何曲率,单位 1/m。
+ /// 车辆曲率,单位 1/m。
+ /// 车辆曲率对弧长的导数 dκ/ds,单位 1/m²。
+ /// 扩大车体后的保守净空下界,单位 m。
+ /// 是否为新方向段开始的换向点。
+ /// 该点的平滑来源。
public SmoothedPathPoint(
double xMeters,
double yMeters,
diff --git a/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Contracts/SmoothedPathSegment.cs b/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Contracts/SmoothedPathSegment.cs
index 5ce1d95..93c4777 100644
--- a/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Contracts/SmoothedPathSegment.cs
+++ b/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Contracts/SmoothedPathSegment.cs
@@ -5,6 +5,13 @@ namespace MultiWheelC.TrajectoryPlanning.PathSmoothing;
/// 平滑路径中方向一致的连续点范围;起止索引均包含在内。
public sealed class SmoothedPathSegment
{
+ /// 创建覆盖平滑路径连续索引范围的方向段。
+ /// 从零开始的方向段编号。
+ /// 该段实际行驶方向。
+ /// 该段首点在完整平滑路径中的包含式索引。
+ /// 该段末点在完整平滑路径中的包含式索引。
+ /// 是否从换向后保留的新方向点开始。
+ /// 是否在紧邻下一方向段的换向对之前结束。
public SmoothedPathSegment(
int segmentIndex,
TravelDirection direction,