Files
ParkingRobot/MultiWheelC/Control/Abstractions/LateralControlCommand.cs
T

52 lines
1.5 KiB
C#

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