# 项目概览

## 项目定位

`MyParking` 是停车机器人控制软件的当前正式开发版本，主体为 C# 插件工程。项目目标是让多舵轮停车机器人完成底盘运动、车辆状态获取、轨迹跟踪、原地自转和后续停车作业；当前研发重点仍是单车闭环和实车联调，多车协同已有纯计算骨架但尚未形成可运行实现。来源：`README.md`、`MultiWheelC/PilotConfig.cs`、`MultiWheelC/Fleet/`、`Shared/Fleet/`。

项目不是可直接 `dotnet run` 的独立应用：

- `MultiWheelC.dll` 由 Clumsy 宿主加载，提供 C 层动作、控制和 `MovementTest` 入口。
- `MedullaAdapter.dll` 由 Medulla 宿主加载，负责 M 层硬件通信和周期逻辑。
- `CommonUsage.dll` 提供通用底盘模型和四轮几何解算。

对应入口类型为 `MultiWheelC/PilotDefinition.cs::PilotDefinition` 和 `MedullaAdapter/DiverCartDefinition.cs::DiverCartDefinition`；仓库中没有 `Program.Main`。

## 车辆与业务场景

- 代码接口面向四个可转向轮组，并暴露8个驱动电机的位置/速度反馈和4个舵角反馈。M/C IO定义见 `PilotDefinition`、`DiverCartDefinition`。
- 车体支持正常前后行驶、倒车轨迹、任意固定运动方向β下的滚动运动、蟹行和停车后原地自转。主要入口见 `MultiWheelC/Movements/` 和 `MultiWheelC/Experiments/`。
- 夹臂速度、位置、限位和报警IO已经接入，但轮胎识别、自动钻车、释放车辆和完整停车作业状态机尚未在当前新版流程中完成。来源：`PilotConfig.cs`、`PilotDefinition.cs`、`README.md`。
- 多车已具备 `FleetLayout`、`FleetState`、`FleetController` 和 `FleetKinematics` 组成的纯计算链；多车配置仍位于 `PilotConfig.cs` 的 `#if false`，且状态聚合、通信、成员纠偏、安全协调和实体发送尚未接入，因此不能把当前代码视为已支持可运行的多车编队。

## 整体运行流程

典型新版轨迹跟踪流程：

1. Clumsy 宿主通过 `MovementTest` 或动作计划启动 `TrajectoryTrackingMovement`。
2. 动作停车并通过 `PrepareWheelsForward` 将舵轮预对齐到本段运动方向β。
3. `ParkingVehicleStateProviderFactory` 组合 Detour 位姿和轮组反馈速度。
4. `ParkingGeometricController` 完成轨迹投影、横纵向控制、GCP分配和完成条件判断。
5. `GcpCommandExecutor`、`MultiWheelChassisAdapter` 将SI单位命令转换到当前运动坐标系，再调用 `CommonUsage.Chassis.MultiWheelChassis`。
6. M层周期逻辑将底盘和夹臂命令发送到MCU/CAN，并把反馈通过宿主IO返回C层。

详细调用链见 `architecture.md`，接口和坐标语义见 `interfaces.md`。

## 当前阶段

- 单车基本运动、新版轨迹跟踪、倒车直线、45°蟹行直线、原地自转和组合动作均有宿主测试入口。
- 新版控制默认采用 Stanley 横向控制和 PID 纵向控制；轨迹实验和控制周期诊断可输出CSV。
- 当前代码能力不等于完整实车验收，特别是高速、曲线倒车、蟹行曲线、长期稳定性和异常工况仍需单独验证。

## 待确认

- Clumsy/Medulla 宿主的正式版本、插件部署目录和启动顺序。
- `PilotDefinition.Conf` 在实车上的持久化文件位置、加载时机和发布流程。
- 真实车辆最终几何参数、舵轮零位/限位和不同车辆配置的权威来源。
- 完整停车业务的产品流程、安全状态机和验收指标。
