打通新版Stanley轨迹跟踪闭环并补充实验测试与数据分析脚本

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-06 15:14:12 +08:00
co-authored by Cursor
parent 47973cc94b
commit 19b1e49189
27 changed files with 3482 additions and 22 deletions
@@ -1,9 +1,67 @@
// 表示发送给底盘前的中间命令
// public readonly struct GcpMotionCommand
// {
// public double SpeedMetersPerSecond { get; }
using System;
// public double FrontAngleRadians { get; }
namespace MultiWheelC.Control.Allocation
{
/// <summary>
/// 表示发送给旧版多舵轮四轮解算前的有符号速度和前后GCP角度命令。
/// </summary>
public readonly struct GcpMotionCommand
{
/// <summary>
/// 创建统一使用m/s和rad的前后几何控制点运动命令。
/// </summary>
public GcpMotionCommand(
double speedMetersPerSecond,
double frontAngleRadians,
double rearAngleRadians)
{
EnsureFinite(
speedMetersPerSecond,
nameof(speedMetersPerSecond));
EnsureFinite(
frontAngleRadians,
nameof(frontAngleRadians));
EnsureFinite(
rearAngleRadians,
nameof(rearAngleRadians));
// public double RearAngleRadians { get; }
// }
SpeedMetersPerSecond =
speedMetersPerSecond;
FrontAngleRadians =
frontAngleRadians;
RearAngleRadians =
rearAngleRadians;
}
/// <summary>
/// 获取准备交给底盘的有符号纵向速度,单位为m/s,正值表示前进。
/// </summary>
public double SpeedMetersPerSecond { get; }
/// <summary>
/// 获取前几何控制点相对车体X轴的目标方向,单位为rad,逆时针为正。
/// </summary>
public double FrontAngleRadians { get; }
/// <summary>
/// 获取后几何控制点相对车体X轴的目标方向,单位为rad,逆时针为正。
/// </summary>
public double RearAngleRadians { get; }
/// <summary>
/// 检查底盘中间命令是否为有限值。
/// </summary>
private static void EnsureFinite(
double value,
string parameterName)
{
if (double.IsNaN(value) ||
double.IsInfinity(value))
{
throw new ArgumentOutOfRangeException(
parameterName,
"GCP运动命令必须由有限值组成。");
}
}
}
}