feat: 发布 EM 轨迹规划首个版本

This commit is contained in:
2026-08-11 20:35:59 +08:00
parent 569de5f13c
commit 1903e71fc1
522 changed files with 4188 additions and 119188 deletions
@@ -6,8 +6,16 @@ using MultiWheelC.TrajectoryPlanning.PathSmoothing;
namespace MultiWheelC.TrajectoryPlanning.EMPlanner;
/// <summary>
/// 平滑参考路径中单一前进或倒车方向段的只读视图;EM 规划和投影不得跨越该段的精确换向边界。
/// </summary>
public sealed class DirectionSegmentView
{
/// <summary>
/// 创建一个已重基到局部 S=0 的方向段只读视图。
/// 参数:points 的 ArcLength 为 m 且方向必须一致,边界与 sourceStartArcLength 为 m;首点与起边界必须位于局部 S=0,终边界须在 1e-12 m 内匹配末点。
/// 返回:防御性复制的不可变段;索引、方向、边界或弧长不一致时引发异常。
/// </summary>
public DirectionSegmentView(
int segmentIndex,
TravelDirection direction,
@@ -48,17 +56,38 @@ public sealed class DirectionSegmentView
SourceStartArcLength = sourceStartArcLength;
}
/// <summary>
/// 在原始平滑路径方向段序列中的零基索引。
/// </summary>
public int SegmentIndex { get; }
/// <summary>
/// 全段唯一的行驶方向;投影和优化不得在本视图内切换方向。
/// </summary>
public TravelDirection Direction { get; }
/// <summary>
/// 局部弧长已重基、按 S(m)非递减排列的平滑参考点只读副本。
/// </summary>
public IReadOnlyList<SmoothedPathPoint> Points { get; }
/// <summary>
/// 局部 S=0 的起始边界,含换向离开语义(若有)。
/// </summary>
public ReferenceBoundary StartBoundary { get; }
/// <summary>
/// 局部段末端的边界,含目标或换向接近语义(若有)。
/// </summary>
public ReferenceBoundary EndBoundary { get; }
/// <summary>
/// 本段局部 S=0 在原始平滑路径中的累计弧长,单位 m。
/// </summary>
public double SourceStartArcLength { get; }
/// <summary>
/// 本段从局部 S=0 到终边界的长度,单位 m。
/// </summary>
public double LengthMeters { get { return EndBoundary.SegmentLocalS; } }
}