feat: add complete jerk-limited stopping math

This commit is contained in:
梁薄云
2026-08-05 17:07:54 +08:00
parent 6c2f4066c8
commit e56220fc29
5 changed files with 268 additions and 69 deletions
@@ -205,9 +205,13 @@ public sealed class SequentialLongitudinalOptimizer
double horizon = times[knotCount - 1];
double requestedSpeed = Math.Min(input.DirectionMaximumSpeedMetersPerSecond,
Math.Max(0d, input.TerminalPathS / horizon));
LongitudinalStoppingProfile terminalStop = LongitudinalStoppingMath.Calculate(requestedSpeed, 0d,
input.Configuration.Longitudinal.MaximumDecelerationMetersPerSecondSquared,
input.Configuration.Longitudinal.MaximumJerkMetersPerSecondCubed);
if (!JerkLimitedStoppingMath.TryCalculate(requestedSpeed, 0d,
input.Configuration.Longitudinal.MaximumDecelerationMetersPerSecondSquared,
input.Configuration.Longitudinal.MaximumJerkMetersPerSecondCubed,
out JerkLimitedStoppingProfile terminalStop, out _))
{
throw new ArgumentOutOfRangeException(nameof(input));
}
double cruiseDistance = Math.Max(0d, input.TerminalPathS - terminalStop.DistanceMeters);
for (int index = 0; index < knotCount; index++)
{