编译命令：
powershell -NoProfile -ExecutionPolicy Bypass -File .\build-and-package.ps1


1. TrajectoryPoint.cs       已完成
2. Trajectory2D.cs          下一步
3. TrajectoryProjection.cs  定义一次投影结果
4. TrajectoryProjector.cs   实现连续线段投影
5. TrajectoryBuilder.cs     原始离散点转标准轨迹

1. VehicleState.cs
        ↓
2. FirstOrderLowPassFilter.cs
        ↓
3. VelocityEstimator2D.cs
        ↓
4. IVehicleStateProvider.cs
        ↓
5. DetourVehicleStateProvider.cs


private const double LinearVelocityFilterTimeConstantSeconds =
    0.15;

private const double AngularVelocityFilterTimeConstantSeconds =
    0.20;

PathTrackingContext.cs
LateralControlCommand.cs
ILateralController.cs
ILongitudinalController.cs
GcpMotionCommand.cs
AckermannGcpAllocator.cs
StanleyLateralController.cs
PidLongitudinalController.cs
GcpCommandExecutor.cs
ParkingGeometricController.cs


轨迹投影没有进度连续性
[TrajectoryProjector.cs (line 33)](/D:/Users/Desktop/入职培训/停车机器人/MyParking/MultiWheelC/Trajectory/TrajectoryProjector.cs:33) 每个控制周期都会遍历整条轨迹并选择全局最近线段。
当前4 m直线、圆弧、普通 S 曲线一般没有问题；但以后遇到自交、回环、相邻平行路径或 Detour 跳变时，投影可能突然跳到另一段轨迹。
建议在开始复杂曲线测试前增加：
上一次投影线段索引
有限前向搜索窗口
少量允许回退范围
现阶段测试直线不需要马上改。

通用轨迹动作没有起点航向保护
当前直线测试以实时 Detour 位姿作为起点，因此起点位置和航向天然匹配，没有问题。
但 [TrajectoryTrackingMovement.cs (line 119)](/D:/Users/Desktop/入职培训/停车机器人/MyParking/MultiWheelC/Movements/TrajectoryTrackingMovement.cs:119) 本身允许传入任意世界坐标轨迹。如果将来传入的轨迹起点航向和车辆实际航向差别很大，车辆会直接边走边纠正。
后续至少应选择一种：
规划层保证起点位姿和实际车辆一致；
控制器检查初始航向误差，超限则拒绝启动；
增加起步航向对齐状态。
第一阶段建议采用第二种，简单、安全。

把前后GCP转角分解成两个模态：
共同转角 = (前GCP转角 + 后GCP转角) / 2
差动转角 = (前GCP转角 - 后GCP转角) / 2




