using System; namespace MultiWheelC.Control.Abstractions { /// /// 表示横向控制器生成的车体中心目标曲率命令。 /// public readonly struct LateralControlCommand { /// /// 创建统一使用SI单位和左转为正约定的横向控制命令。 /// public LateralControlCommand( double targetCurvaturePerMeter) { EnsureFinite( targetCurvaturePerMeter, nameof(targetCurvaturePerMeter)); TargetCurvaturePerMeter = targetCurvaturePerMeter; } /// /// 获取车体中心目标轨迹曲率,单位为1/m,左转为正、右转为负。 /// public double TargetCurvaturePerMeter { get; } /// /// 创建保持直线行驶的零曲率命令。 /// public static LateralControlCommand Straight => new LateralControlCommand(0.0); /// /// 检查横向曲率命令是否为有限值。 /// private static void EnsureFinite( double value, string parameterName) { if (double.IsNaN(value) || double.IsInfinity(value)) { throw new ArgumentOutOfRangeException( parameterName, "横向控制目标曲率必须是有限值。"); } } } }