diff --git a/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/LocalG2/CurvatureTransition.cs b/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/LocalG2/CurvatureTransition.cs
index 671f3ca..cd45f80 100644
--- a/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/LocalG2/CurvatureTransition.cs
+++ b/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/LocalG2/CurvatureTransition.cs
@@ -6,6 +6,16 @@ namespace MultiWheelC.TrajectoryPlanning.PathSmoothing.LocalG2;
/// 同一方向原语边界两侧车辆曲率的离散跳变。
internal sealed class CurvatureTransition
{
+ /// 记录同一方向段内相邻粗路径采样点之间的车辆曲率跳变。
+ /// 所属方向段在预处理路径中的从零开始索引。
+ /// 跳变左侧粗路径采样点索引。
+ /// 跳变右侧粗路径采样点索引,必须等于左索引加一。
+ /// 跳变位置在方向段内的局部弧长,单位 m。
+ /// 跳变位置世界 X 坐标,单位 m。
+ /// 跳变位置世界 Y 坐标,单位 m。
+ /// 跳变位置的车辆航向,单位 rad。
+ /// 左侧车辆曲率,单位 1/m。
+ /// 右侧车辆曲率,单位 1/m。
internal CurvatureTransition(
int segmentIndex,
int leftCoarsePathIndex,
diff --git a/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/LocalG2/CurvatureTransitionDetector.cs b/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/LocalG2/CurvatureTransitionDetector.cs
index 54d95ba..2cd7b4c 100644
--- a/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/LocalG2/CurvatureTransitionDetector.cs
+++ b/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/LocalG2/CurvatureTransitionDetector.cs
@@ -9,6 +9,13 @@ namespace MultiWheelC.TrajectoryPlanning.PathSmoothing.LocalG2;
/// 从原始粗路径的同向相邻点中识别恒曲率原语边界。
internal sealed class CurvatureTransitionDetector
{
+ /// 检测同一行驶方向内超过阈值的相邻车辆曲率跳变,不跨越换向边界。
+ /// 含粗路径、方向段和配置的平滑请求。
+ /// 车辆允许的最大曲率,单位 1/m。
+ /// 已校验的跳变绝对阈值与相对阈值选项。
+ /// 成功时为只读曲率跳变集合;失败时为空集合。
+ /// 失败原因;成功时为空字符串。
+ /// 输入与检测过程有效时为 ;否则为 。
internal bool TryDetect(
PathSmoothingRequest request,
double maximumVehicleCurvaturePerMeter,
diff --git a/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/LocalG2/LocalG2CandidateBuilder.cs b/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/LocalG2/LocalG2CandidateBuilder.cs
index fdf7756..2f8c0ab 100644
--- a/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/LocalG2/LocalG2CandidateBuilder.cs
+++ b/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/LocalG2/LocalG2CandidateBuilder.cs
@@ -18,6 +18,13 @@ internal sealed class LocalG2CandidateBuilder
private const int MaximumSubdivisionDepth = 32;
private static readonly double[] DerivativeScaleMultipliers = { 1d, 0.85d, 1.15d };
+ /// 按确定的窗口与导数尺度顺序生成有限个五次 Hermite 局部 G2 候选。
+ /// 候选所属、未经替换的单方向预处理段。
+ /// 包含曲率跳变和可用窗口变体的局部平滑区域。
+ /// 候选采样间距,单位 m,必须为正且有限。
+ /// 已校验的局部 G2 窗口、偏差和候选数限制。
+ /// 取消令牌;取消时抛出 。
+ /// 只读的候选几何集合;没有可构造候选时返回空集合而非 。
internal IReadOnlyList Build(
PreparedDirectionSegment originalSegment,
LocalG2SmoothingRegion region,
diff --git a/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/LocalG2/LocalG2CandidateGeometry.cs b/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/LocalG2/LocalG2CandidateGeometry.cs
index 22161f7..11495a2 100644
--- a/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/LocalG2/LocalG2CandidateGeometry.cs
+++ b/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/LocalG2/LocalG2CandidateGeometry.cs
@@ -9,6 +9,19 @@ namespace MultiWheelC.TrajectoryPlanning.PathSmoothing.LocalG2;
/// 一个尚未经过安全和质量评价的局部 G2 替换几何。
internal sealed class LocalG2CandidateGeometry
{
+ /// 创建尚未通过安全与质量门的局部 G2 候选几何快照。
+ /// 区域内候选的稳定从零开始索引。
+ /// 候选所属方向段索引。
+ /// 替换窗口起点弧长,单位 m。
+ /// 替换窗口终点弧长,单位 m。
+ /// 过渡点左侧窗口长度,单位 m。
+ /// 过渡点右侧窗口长度,单位 m。
+ /// 含精确边界端点的候选采样点只读集合。
+ /// 窗口起点车辆曲率,单位 1/m。
+ /// 窗口终点车辆曲率,单位 1/m。
+ /// 窗口起点几何曲率,单位 1/m。
+ /// 窗口终点几何曲率,单位 1/m。
+ /// 候选内部连接是否满足 G2 连续性。
internal LocalG2CandidateGeometry(
int candidateIndex,
int segmentIndex,
diff --git a/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/LocalG2/LocalG2OptionsSnapshot.cs b/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/LocalG2/LocalG2OptionsSnapshot.cs
index 3fddd10..b816723 100644
--- a/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/LocalG2/LocalG2OptionsSnapshot.cs
+++ b/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/LocalG2/LocalG2OptionsSnapshot.cs
@@ -6,6 +6,8 @@ namespace MultiWheelC.TrajectoryPlanning.PathSmoothing.LocalG2;
/// 局部 G2 预平滑一次运行使用的已校验不可变选项。
internal sealed class LocalG2OptionsSnapshot
{
+ /// 从已配置的请求选项提取并校验一次局部 G2 平滑运行所需的不可变阈值。
+ /// 包含 的路径平滑配置。
internal LocalG2OptionsSnapshot(PathSmoothingConfiguration configuration)
{
if (configuration == null) throw new ArgumentNullException(nameof(configuration));
diff --git a/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/LocalG2/LocalG2PathSplicer.cs b/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/LocalG2/LocalG2PathSplicer.cs
index 294efe0..31d5704 100644
--- a/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/LocalG2/LocalG2PathSplicer.cs
+++ b/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/LocalG2/LocalG2PathSplicer.cs
@@ -5,9 +5,15 @@ using MultiWheelC.TrajectoryPlanning.Utils;
namespace MultiWheelC.TrajectoryPlanning.PathSmoothing.LocalG2;
-/// 只替换一个方向段内局部窗口,并保持其余方向拓扑不变。
+/// 将已验证的局部候选替换进同方向预处理路径;保持窗口外点、端点和换向拓扑不变。
internal sealed class LocalG2PathSplicer
{
+ /// 用候选窗口点替换目标方向段的局部弧长区间。
+ /// 当前已接受替换的预处理路径。
+ /// 候选替换几何;位置和局部弧长单位为 m。
+ /// 成功时为保持其他段与边界不变的新预处理路径;失败时为 。
+ /// 失败原因;成功时为空字符串。
+ /// 替换范围、端点和方向拓扑均合法时为 ;否则为 。
internal bool TryReplace(
PreparedPath currentPath,
LocalG2CandidateGeometry candidate,
diff --git a/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/LocalG2/LocalG2SmoothingRegion.cs b/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/LocalG2/LocalG2SmoothingRegion.cs
index e2e102a..cb59af2 100644
--- a/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/LocalG2/LocalG2SmoothingRegion.cs
+++ b/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/LocalG2/LocalG2SmoothingRegion.cs
@@ -8,6 +8,12 @@ namespace MultiWheelC.TrajectoryPlanning.PathSmoothing.LocalG2;
/// 一个局部 G2 候选可替换的弧长窗口。
internal sealed class LocalG2WindowVariant
{
+ /// 创建同一平滑区域内一个可尝试替换的弧长窗口变体。
+ /// 区域内候选的稳定从零开始索引。
+ /// 窗口起点弧长,单位 m。
+ /// 窗口终点弧长,单位 m。
+ /// 过渡点左侧窗口长度,单位 m。
+ /// 过渡点右侧窗口长度,单位 m。
internal LocalG2WindowVariant(int candidateIndex, double startArcLengthMeters, double endArcLengthMeters,
double leftWindowLengthMeters, double rightWindowLengthMeters)
{
@@ -33,6 +39,12 @@ internal sealed class LocalG2WindowVariant
/// 至少存在一个联合合法生成窗口变体的一组曲率过渡。
internal sealed class LocalG2SmoothingRegion
{
+ /// 创建一个包含共同可用窗口变体的局部曲率过渡区域。
+ /// 所属方向段在预处理路径中的从零开始索引。
+ /// 归并到该区域的曲率跳变集合。
+ /// 所有候选允许的最晚窗口起点,单位 m。
+ /// 所有候选允许的最早窗口终点,单位 m。
+ /// 至少一个合法的窗口变体集合。
internal LocalG2SmoothingRegion(
int segmentIndex,
IReadOnlyList transitions,
diff --git a/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/LocalG2/LocalG2WindowPlanner.cs b/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/LocalG2/LocalG2WindowPlanner.cs
index 6b351e0..813e584 100644
--- a/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/LocalG2/LocalG2WindowPlanner.cs
+++ b/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/LocalG2/LocalG2WindowPlanner.cs
@@ -7,11 +7,18 @@ using MultiWheelC.TrajectoryPlanning.Utils;
namespace MultiWheelC.TrajectoryPlanning.PathSmoothing.LocalG2;
-/// 按硬方向边界生成并合并局部 G2 曲率事件的候选窗口。
+/// 在硬方向边界内为局部 G2 曲率事件生成、合并候选窗口;绝不让窗口跨越换向段。
internal sealed class LocalG2WindowPlanner
{
private const double MergeToleranceMeters = 1e-9d;
+ /// 按段索引排序曲率事件并生成每个区域可用的窗口变体。
+ /// 已准备的方向段路径,提供每段局部弧长范围。
+ /// 检测到的曲率过渡事件;局部弧长单位为 m。
+ /// 窗口长度、候选上限和偏移相关的 Local G2 只读选项。
+ /// 成功时为按路径顺序排列的只读平滑区域;失败时为空集合。
+ /// 失败时描述事件、段或窗口长度问题;成功时为空字符串。
+ /// 所有事件可在所属方向段内构造合法窗口时为 ;否则为 。
internal bool TryPlan(
PreparedPath originalPath,
IReadOnlyList transitions,
diff --git a/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/LocalG2/QuinticHermiteCurve2D.cs b/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/LocalG2/QuinticHermiteCurve2D.cs
index 006189f..19503bf 100644
--- a/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/LocalG2/QuinticHermiteCurve2D.cs
+++ b/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/LocalG2/QuinticHermiteCurve2D.cs
@@ -36,6 +36,22 @@ internal sealed class QuinticHermiteCurve2D
_y5 = y5;
}
+ /// 从两个端点的位置、一阶导数和二阶导数创建参数区间 [0, 1] 上的五次 Hermite 曲线。
+ /// 起点 X 坐标,单位 m。
+ /// 起点 Y 坐标,单位 m。
+ /// 起点对参数的 X 一阶导数。
+ /// 起点对参数的 Y 一阶导数。
+ /// 起点对参数的 X 二阶导数。
+ /// 起点对参数的 Y 二阶导数。
+ /// 终点 X 坐标,单位 m。
+ /// 终点 Y 坐标,单位 m。
+ /// 终点对参数的 X 一阶导数。
+ /// 终点对参数的 Y 一阶导数。
+ /// 终点对参数的 X 二阶导数。
+ /// 终点对参数的 Y 二阶导数。
+ /// 成功时为可求值曲线;失败时为 。
+ /// 失败原因;成功时为空字符串。
+ /// 全部边界条件有限且一阶导数非零时为 ;否则为 。
internal static bool TryCreate(
double x0, double y0, double dx0, double dy0, double ddx0, double ddy0,
double x1, double y1, double dx1, double dy1, double ddx1, double ddy1,
@@ -69,6 +85,14 @@ internal sealed class QuinticHermiteCurve2D
return true;
}
+ /// 在归一化参数处求曲线位置及其一阶、二阶导数。
+ /// 闭区间 [0, 1] 内的无量纲曲线参数。
+ /// 返回位置 X,单位 m。
+ /// 返回位置 Y,单位 m。
+ /// 返回 X 对参数的一阶导数。
+ /// 返回 Y 对参数的一阶导数。
+ /// 返回 X 对参数的二阶导数。
+ /// 返回 Y 对参数的二阶导数。
internal void Evaluate(
double u,
out double x, out double y,
diff --git a/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Processing/ArcLengthResampler.cs b/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Processing/ArcLengthResampler.cs
index 1205368..a918758 100644
--- a/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Processing/ArcLengthResampler.cs
+++ b/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Processing/ArcLengthResampler.cs
@@ -11,7 +11,12 @@ public sealed class ArcLengthResampler
{
private const double Tolerance = 1e-10d;
- /// 以目标间距重采样一个方向段;段末锚点始终原样保留。
+ /// 以目标间距重采样单一方向段;段首/段末精确锚点始终原样保留。
+ /// 同一方向段内按严格递增局部弧长排序的点集合;位置和弧长单位为 m,航向为 rad。
+ /// 目标采样间距,单位 m,必须为有限正数。
+ /// 成功时为只读重采样点集合;失败时为空只读集合。
+ /// 失败时描述非法点、退化几何或间距;成功时为空字符串。
+ /// 输入属于一个有效同方向区间且可安全插值时为 ;否则为 。
public bool TryResample(
IReadOnlyList points,
double spacingMeters,
@@ -89,7 +94,12 @@ public sealed class ArcLengthResampler
return true;
}
- /// 重采样一个完整方向段并保留其换向拓扑标记。
+ /// 重采样完整预处理方向段并保留段编号、方向和换向拓扑标记。
+ /// 待重采样的单一前进或倒车方向段。
+ /// 目标局部弧长间距,单位 m。
+ /// 成功时为新不可变预处理方向段;失败时为 。
+ /// 失败原因;成功时为空字符串。
+ /// 底层点集重采样成功时为 ;否则为 。
public bool TryResample(
PreparedDirectionSegment segment,
double spacingMeters,
diff --git a/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Processing/PathGeometryAnalysis.cs b/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Processing/PathGeometryAnalysis.cs
index 4736eca..75919be 100644
--- a/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Processing/PathGeometryAnalysis.cs
+++ b/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Processing/PathGeometryAnalysis.cs
@@ -8,6 +8,16 @@ namespace MultiWheelC.TrajectoryPlanning.PathSmoothing.Processing;
/// 同一几何分析器产生的路径、方向段和未验证质量统计。
public sealed class PathGeometryAnalysis
{
+ /// 创建一次几何重算的只读结果快照。
+ /// 重算后的完整路径点集合。
+ /// 完整覆盖 的方向段集合。
+ /// 路径总弧长,单位 m。
+ /// 车辆曲率绝对值峰值,单位 1/m。
+ /// 车辆曲率导数绝对值峰值,单位 1/m²。
+ /// 车辆曲率均方根,单位 1/m。
+ /// 不跨换向点的累计绝对曲率变化,单位 1/m。
+ /// 不跨换向点的曲率变化代价。
+ /// 输入点携带的最小保守车体净空,单位 m。
internal PathGeometryAnalysis(
IReadOnlyList path,
IReadOnlyList segments,
diff --git a/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Processing/PathGeometryAnalyzer.cs b/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Processing/PathGeometryAnalyzer.cs
index 6153af8..5d51fd0 100644
--- a/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Processing/PathGeometryAnalyzer.cs
+++ b/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Processing/PathGeometryAnalyzer.cs
@@ -12,9 +12,12 @@ public sealed class PathGeometryAnalyzer
private const double MinimumDistanceMeters = 1e-10d;
private const double BoundaryToleranceMeters = 1e-8d;
- ///
- /// 对候选方向段进行确定性几何分析。换向点两侧永不参与同一次差分。
- ///
+ /// 对候选方向段执行确定性几何分析;换向点两侧永不参与同一次航向或曲率差分。
+ /// 按段索引排列的候选前进/倒车段;每段点位置为 m、航向为 rad。
+ /// 最终几何采样间距,单位 m,必须为有限正数。
+ /// 成功时为完整路径、方向段、弧长、曲率、曲率导数和净空统计;失败时为 。
+ /// 失败时描述输入、边界、退化几何或曲率估计问题;成功时为空字符串。
+ /// 所有方向段和换向拓扑可重采样、可分析且总弧长保持严格递增时为 ;否则为 。
public bool TryAnalyze(
IReadOnlyList candidateSegments,
double spacingMeters,
diff --git a/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Processing/PathReferenceInterpolator.cs b/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Processing/PathReferenceInterpolator.cs
index f8cf80b..535ea44 100644
--- a/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Processing/PathReferenceInterpolator.cs
+++ b/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Processing/PathReferenceInterpolator.cs
@@ -8,6 +8,12 @@ namespace MultiWheelC.TrajectoryPlanning.PathSmoothing.Processing;
/// 按方向段局部弧长插值平滑算法的原始路径参考。
internal static class PathReferenceInterpolator
{
+ /// 在同一方向段内按局部弧长线性插值一个几何参考点。
+ /// 弧长非递减的原始段采样点集合。
+ /// 欲查询的局部弧长,单位 m。
+ /// 成功时为插值或精确命中的参考点;失败时为 。
+ /// 失败原因;成功时为空字符串。
+ /// 目标弧长位于有效输入范围内时为 ;否则为 。
internal static bool TryInterpolateByArcLength(
IReadOnlyList points,
double targetArcLength,
diff --git a/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Processing/PathSmoothingPreprocessor.cs b/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Processing/PathSmoothingPreprocessor.cs
index 23aaa63..f3474b0 100644
--- a/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Processing/PathSmoothingPreprocessor.cs
+++ b/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Processing/PathSmoothingPreprocessor.cs
@@ -18,13 +18,18 @@ public sealed class PathSmoothingPreprocessor
{
}
- /// 创建使用指定重采样器的预处理器。
+ /// 创建使用指定确定性弧长重采样器的预处理器。
+ /// 同一方向段内按 m 为单位弧长重采样的组件,不能为 。
public PathSmoothingPreprocessor(ArcLengthResampler resampler)
{
_resampler = resampler ?? throw new ArgumentNullException(nameof(resampler));
}
- /// 将一条粗路径请求校验、按方向拆分并按配置间距重采样。
+ /// 校验粗路径契约、保留换向拓扑,并按配置间距拆分和重采样方向段。
+ /// 不可变平滑请求;粗路径位置/弧长单位为 m、航向为 rad,且必须携带地图、车辆和配置。
+ /// 成功时为包含只读、同方向严格递增弧长段的预处理路径;失败时为 。
+ /// 失败时说明输入、拓扑或采样间距约束;成功时为空字符串。
+ /// 所有输入、方向分段、换向锚点和重采样检查通过时为 ;否则为 且不产生部分路径。
public bool TryPrepare(PathSmoothingRequest request, out PreparedPath preparedPath, out string reason)
{
preparedPath = null;
diff --git a/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Processing/PreparedDirectionSegment.cs b/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Processing/PreparedDirectionSegment.cs
index 0f58727..746ca08 100644
--- a/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Processing/PreparedDirectionSegment.cs
+++ b/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Processing/PreparedDirectionSegment.cs
@@ -9,6 +9,11 @@ namespace MultiWheelC.TrajectoryPlanning.PathSmoothing.Processing;
public sealed class PreparedDirectionSegment
{
/// 创建不可变方向段。
+ /// 在 中从零开始的段索引。
+ /// 本段唯一的车辆行驶方向。
+ /// 本段的非空采样点集合;构造后会复制为只读快照。
+ /// 若首点紧随换向,则为 。
+ /// 若末点紧邻换向,则为 。
public PreparedDirectionSegment(
int segmentIndex,
TravelDirection direction,
@@ -20,6 +25,12 @@ public sealed class PreparedDirectionSegment
}
/// 创建带有真实起始车辆曲率边界状态的不可变方向段。
+ /// 在 中从零开始的段索引。
+ /// 本段唯一的车辆行驶方向。
+ /// 本段的非空采样点集合;构造后会复制为只读快照。
+ /// 若首点紧随换向,则为 。
+ /// 若末点紧邻换向,则为 。
+ /// 物理起点车辆曲率边界,单位 1/m;未知时为 。
public PreparedDirectionSegment(
int segmentIndex,
TravelDirection direction,
diff --git a/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Processing/PreparedPath.cs b/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Processing/PreparedPath.cs
index 379c33c..10e11e9 100644
--- a/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Processing/PreparedPath.cs
+++ b/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Processing/PreparedPath.cs
@@ -8,6 +8,7 @@ namespace MultiWheelC.TrajectoryPlanning.PathSmoothing.Processing;
public sealed class PreparedPath
{
/// 创建不可变预处理路径。
+ /// 按原始行驶顺序排列的非空方向段集合;构造后会复制为只读快照。
public PreparedPath(IReadOnlyList segments)
{
if (segments == null || segments.Count == 0)
@@ -22,10 +23,10 @@ public sealed class PreparedPath
Points = Flatten(Segments);
}
- /// 按原始前进/倒车拓扑排列的方向段。
+ /// 按原始前进/倒车拓扑排列的 只读集合。
public IReadOnlyList Segments { get; }
- /// 将所有方向段顺序拼接后的点;换向重复点保留两次。
+ /// 将所有方向段顺序拼接后的 只读集合;换向重复点保留两次。
public IReadOnlyList Points { get; }
private static IReadOnlyList CopyReadOnly(IReadOnlyList source)
diff --git a/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Processing/SmoothingPoint2D.cs b/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Processing/SmoothingPoint2D.cs
index 1ca0e05..98ce84c 100644
--- a/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Processing/SmoothingPoint2D.cs
+++ b/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Processing/SmoothingPoint2D.cs
@@ -7,6 +7,14 @@ namespace MultiWheelC.TrajectoryPlanning.PathSmoothing.Processing;
public sealed class SmoothingPoint2D
{
/// 创建不可变二维路径点。
+ /// 世界坐标 X,单位 m。
+ /// 世界坐标 Y,单位 m。
+ /// 本方向段内从零开始的累计弧长,单位 m。
+ /// 归一化车辆航向,单位 rad。
+ /// 连续展开的车辆航向,单位 rad。
+ /// 路径点携带的保守车体净空,单位 m。
+ /// 该点是否标记新方向段的换向边界。
+ /// 点在平滑处理流中的来源枚举。
public SmoothingPoint2D(
double xMeters,
double yMeters,