新增倒车以及项目结构优化
This commit is contained in:
@@ -9,16 +9,54 @@ using MyParking.Shared;
|
||||
|
||||
namespace MultiWheelC
|
||||
{
|
||||
// C层测试准备:停车并等待四个舵轮稳定回到车体前向0°。
|
||||
/// <summary>
|
||||
/// 停车并等待四个舵轮稳定回到车体前向0°。
|
||||
/// </summary>
|
||||
public class PrepareWheelsForward : MovementDefinition
|
||||
{
|
||||
public float ToleranceDegrees = 2f;
|
||||
public float StableSeconds = 0.3f;
|
||||
public float TimeoutSeconds = 10f;
|
||||
/// <summary>
|
||||
/// 获取或设置本次动作的回正到位容差覆盖值,单位为deg;为空时读取车辆配置。
|
||||
/// </summary>
|
||||
public float? ToleranceDegrees;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置本次动作的稳定确认时间覆盖值,单位为s;为空时读取车辆配置。
|
||||
/// </summary>
|
||||
public float? StableSeconds;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置本次动作的超时覆盖值,单位为s;为空时读取车辆配置,0表示关闭超时。
|
||||
/// </summary>
|
||||
public float? TimeoutSeconds;
|
||||
|
||||
public bool Completed { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// 读取一次有效配置并等待全部舵轮在容差内稳定保持车体前向0°。
|
||||
/// </summary>
|
||||
public override IEnumerable<bool> Get()
|
||||
{
|
||||
var config = PilotDefinition.Conf;
|
||||
var toleranceDegrees =
|
||||
ToleranceDegrees ??
|
||||
config.ParkingWheelForwardToleranceDegrees;
|
||||
var stableSeconds =
|
||||
StableSeconds ??
|
||||
config.ParkingWheelForwardStableSeconds;
|
||||
var timeoutSeconds =
|
||||
TimeoutSeconds ??
|
||||
config.ParkingWheelForwardTimeoutSeconds;
|
||||
|
||||
NumericGuard.EnsureFiniteNonNegative(
|
||||
toleranceDegrees,
|
||||
nameof(ToleranceDegrees));
|
||||
NumericGuard.EnsureFiniteNonNegative(
|
||||
stableSeconds,
|
||||
nameof(StableSeconds));
|
||||
NumericGuard.EnsureFiniteNonNegative(
|
||||
timeoutSeconds,
|
||||
nameof(TimeoutSeconds));
|
||||
|
||||
var chassis =
|
||||
PilotDefinition.Chassis as MultiWheelChassis;
|
||||
if (chassis == null)
|
||||
@@ -32,7 +70,7 @@ namespace MultiWheelC
|
||||
PilotDefinition.Self.CarNum);
|
||||
adapter.ResetToBodyFrame();
|
||||
var toleranceRadians =
|
||||
AngleMath.DegreesToRadians(ToleranceDegrees);
|
||||
AngleMath.DegreesToRadians(toleranceDegrees);
|
||||
var startTime = DateTime.UtcNow;
|
||||
DateTime? alignedSince = null;
|
||||
|
||||
@@ -59,7 +97,7 @@ namespace MultiWheelC
|
||||
|
||||
if ((DateTime.UtcNow -
|
||||
alignedSince.Value).TotalSeconds >=
|
||||
StableSeconds)
|
||||
stableSeconds)
|
||||
{
|
||||
Completed = true;
|
||||
yield break;
|
||||
@@ -70,12 +108,12 @@ namespace MultiWheelC
|
||||
alignedSince = null;
|
||||
}
|
||||
|
||||
if (TimeoutSeconds > 0f &&
|
||||
if (timeoutSeconds > 0f &&
|
||||
(DateTime.UtcNow - startTime).TotalSeconds >
|
||||
TimeoutSeconds)
|
||||
timeoutSeconds)
|
||||
{
|
||||
throw new TimeoutException(
|
||||
$"舵轮回正超过{TimeoutSeconds:F1}s," +
|
||||
$"舵轮回正超过{timeoutSeconds:F1}s," +
|
||||
"测试已经取消。");
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user