集中停车控制配置并完善终点逼近和周期诊断

This commit is contained in:
2026-08-11 17:46:52 +08:00
parent 33a33af710
commit 3043febd91
30 changed files with 2946 additions and 30 deletions
@@ -0,0 +1,171 @@
using ClumsyCore;
namespace MultiWheelC;
/// <summary>
/// 定义停车状态估计、轨迹跟踪和原地自转使用的车辆级参数。
/// </summary>
public partial class PilotConfig
{
#region -
[FieldMember(desc = "停车控制:Detour最大合理线速度(m/s)")]
public float ParkingDetourMaximumLinearSpeed = 1.20f;
[FieldMember(desc = "停车控制:Detour最大合理角速度(deg/s)")]
public float ParkingDetourMaximumAngularSpeedDegrees = 45f;
[FieldMember(desc = "停车控制:Detour位置跳变余量(m)")]
public float ParkingDetourPositionJumpMargin = 0.03f;
[FieldMember(desc = "停车控制:Detour航向跳变余量(deg)")]
public float ParkingDetourHeadingJumpMarginDegrees = 5f;
[FieldMember(desc = "停车控制:Detour速度预测位置残差(m)")]
public float ParkingDetourVelocityPositionResidual = 0.04f;
[FieldMember(desc = "停车控制:Detour速度预测航向残差(deg)")]
public float ParkingDetourVelocityHeadingResidualDegrees = 5f;
[FieldMember(desc = "停车控制:Detour静止确认时间(s)")]
public float ParkingDetourStationaryConfirmationSeconds = 0.35f;
[FieldMember(desc = "停车控制:Detour线速度滤波时间常数(s)")]
public float ParkingDetourLinearVelocityFilterSeconds = 0.15f;
[FieldMember(desc = "停车控制:Detour角速度滤波时间常数(s)")]
public float ParkingDetourAngularVelocityFilterSeconds = 0.20f;
[FieldMember(desc = "停车控制:电机反馈速度滤波时间常数(s)")]
public float ParkingWheelVelocityFilterSeconds = 0.10f;
#endregion
#region -Stanley
[FieldMember(desc = "停车控制:Stanley横向误差增益(1/s)")]
public float ParkingStanleyCrossTrackGain = 0.4f;
[FieldMember(desc = "停车控制:Stanley航向误差增益")]
public float ParkingStanleyHeadingGain = 1.0f;
[FieldMember(desc = "停车控制:Stanley最低分母速度(m/s)")]
public float ParkingStanleyMinimumSpeed = 0.15f;
[FieldMember(desc = "停车控制:Stanley使用电机实际速度")]
public bool ParkingStanleyUseActualSpeed = true;
[FieldMember(desc = "停车控制:Stanley横向修正上限(deg)")]
public float ParkingMaximumCrossTrackCorrectionDegrees = 10f;
[FieldMember(desc = "停车控制:Stanley航向修正上限(deg)")]
public float ParkingMaximumHeadingCorrectionDegrees = 10f;
#endregion
#region -PID
[FieldMember(desc = "停车控制:纵向速度Kp")]
public float ParkingLongitudinalKp = 0.5f;
[FieldMember(desc = "停车控制:纵向速度Ki(1/s)")]
public float ParkingLongitudinalKi = 0f;
[FieldMember(desc = "停车控制:纵向速度Kd(s)")]
public float ParkingLongitudinalKd = 0f;
[FieldMember(desc = "停车控制:纵向积分修正上限(m/s)")]
public float ParkingMaximumIntegralCorrection = 0.05f;
[FieldMember(desc = "停车控制:纵向速度误差死区(m/s)")]
public float ParkingLongitudinalSpeedErrorDeadband = 0.025f;
[FieldMember(desc = "停车控制:最大命令速度(m/s)")]
public float ParkingMaximumCommandSpeed = 0.50f;
#endregion
#region -
[FieldMember(desc = "停车控制:原地自转Kp")]
public float InPlaceRotateKp = 1.05f;
[FieldMember(desc = "停车控制:原地自转Ki")]
public float InPlaceRotateKi = 0f;
[FieldMember(desc = "停车控制:原地自转Kd")]
public float InPlaceRotateKd = 0f;
[FieldMember(desc = "停车控制:原地自转积分限幅")]
public float InPlaceRotateMaxI = 0f;
[FieldMember(desc = "停车控制:原地自转到位角度容差(deg)")]
public float InPlaceRotateArriveDeg = 1.5f;
[FieldMember(desc = "停车控制:原地自转起转前舵轮对齐容差(deg)")]
public float InPlaceRotateWheelAlignDeg = 2f;
[FieldMember(desc = "停车控制:原地自转最小有效角速度(deg/s)")]
public float InPlaceRotateMinimumSpeed = 1f;
[FieldMember(desc = "停车控制:原地自转最大角速度(deg/s)")]
public float InPlaceRotateMaxSpeed = 47.5f;
[FieldMember(desc = "停车控制:原地自转角加速度(deg/s²)")]
public float InPlaceRotateAcc = 60f;
[FieldMember(desc = "停车控制:原地自转超时(s)")]
public float InPlaceRotateTimeoutSec = 15f;
#endregion
#region -
[FieldMember(desc = "停车控制:舵轮回正到位容差(deg)")]
public float ParkingWheelForwardToleranceDegrees = 2f;
[FieldMember(desc = "停车控制:舵轮回正稳定确认时间(s)")]
public float ParkingWheelForwardStableSeconds = 0.3f;
[FieldMember(desc = "停车控制:舵轮回正超时(s0关闭)")]
public float ParkingWheelForwardTimeoutSeconds = 10f;
#endregion
#region -GCP与完成条件
[FieldMember(desc = "停车控制:最大GCP转角(deg)")]
public float ParkingMaximumGcpAngleDegrees = 45f;
[FieldMember(desc = "停车控制:最大GCP转角速度(deg/s)")]
public float ParkingMaximumGcpAngleRateDegreesPerSecond = 15f;
[FieldMember(desc = "停车控制:终点距离容差(m)")]
public float ParkingFinishDistance = 0.03f;
[FieldMember(desc = "停车控制:终点速度容差(m/s)")]
public float ParkingFinishSpeed = 0.02f;
[FieldMember(desc = "停车控制:终点航向容差(deg)")]
public float ParkingFinishHeadingToleranceDegrees = 3f;
[FieldMember(desc = "停车控制:终点制动预瞄距离(m)")]
public float ParkingTerminalBrakingPreview = 0.02f;
[FieldMember(desc = "停车控制:终点单向逼近范围(m)")]
public float ParkingTerminalApproachDistance = 0.10f;
[FieldMember(desc = "停车控制:终点单向逼近增益(1/s)")]
public float ParkingTerminalApproachGain = 0.8f;
[FieldMember(desc = "停车控制:终点单向逼近最大速度(m/s)")]
public float ParkingTerminalMaximumApproachSpeed = 0.05f;
[FieldMember(desc = "停车控制:最大轨迹偏离距离(m)")]
public float ParkingMaximumDistanceToTrajectory = 0.30f;
[FieldMember(desc = "停车控制:轨迹执行超时(s)")]
public float ParkingExecutionTimeoutSeconds = 120f;
#endregion
}