Files
ParkingRobot/docs/progress.md
T

8.5 KiB

当前进展

更新日期:2026-08-25。这里只保存当前状态,不作为完整开发历史。

已完成/已接入

  • 三项目解决方案与统一构建打包脚本:CommonUsageMedullaAdapterMultiWheelC
  • Shared的SI运动模型、坐标变换、角度工具、数值校验和 MultiWheelChassisAdapter
  • 弧长参数化 Trajectory2D、统一插值、轨迹投影窗口和进度连续性。
  • 默认 Stanley 横向 + PID 纵向的新版轨迹控制链,横向控制器可注入替换。
  • 前进4m、倒车4m、45°蟹行4m、直线-左半圆-直线和组合运动宿主测试入口。
  • Detour位姿与轮组反馈组合状态源:位姿来自Detour;轮组估计有效后,控制状态的Vx/Vy/Omega均来自滤波后的轮组反馈,Vw同时用于短时位姿预测和动态航向合理性判断。
  • Detour源 tick/l_step 诊断、跳变候选确认、有限小偏移任务坐标连续化、自转期间禁止自动吸收偏移,以及超时状态不可用保护。
  • 起步释放、曲率前馈预瞄、GCP角速度限制、终点制动预瞄和单向低速收敛。
  • 原地自转舵轮准备、航向PID、超时保护和完成后回正;自转期间位置/航向有效性已分离,到位停车后才恢复完整位姿并决定是否释放下一段。
  • Detour单帧航向异常已增加连续帧/短时预测确认;第六轮实车数据确认前两帧异常由轮组Vw预测承接,持续到第三个异常新帧时才安全终止。
  • 原地自转已增加 RelativeWheelOdometry 模式和不依赖Detour的 TryGetWheelTwist() 接口;第七轮19份记录中17份表现为正常停车回正,轮组积分与Detour原始航向变化绝对差中位数约0.89°、最大约3.07°,但目标角精度尚缺专用字段正式验收。
  • C层轨迹/周期CSV与M层轮速/舵角诊断记录。
  • C层Detour静态诊断入口,记录源时间、l_step、位姿帧差和轮组静态反馈;已有约14分41秒实车静态基线。
  • C层轨迹CSV已补充原始/滤波轮组 Vx/Vy/Vw、轮组与预测时刻、Detour帧间隔、实际/允许创新、候选原因、估计器状态和不可用原因。
  • 停车控制参数集中到 Configuration/PilotConfig.ParkingControl.cs
  • PathTrackingContext 已解除对单车 VehicleState 的依赖;PathTrackingCore 统一单车与车队的投影、保护/终点策略、横纵向控制和GCP分配,ParkingGeometricController 保留单车状态读取与实体命令执行职责。
  • MultiWheelC.Tests 已提供不依赖实车的Stanley前进/倒车横向符号回归,8个场景通过;该项目不进入正式解决方案和打包脚本。
  • Shared/Fleet 已加入不可变 FleetLayout、成员/车队命令模型、确定性 FleetKinematics 及最小 FleetCommand/FleetMemberReport 契约;MultiWheelC/Fleet 已具备布局采集、车队状态估计、固定 β_fleet 中心控制、统一速度缩放、刚体分解、小范围成员纠偏、成员β准备屏障和本车执行边界。
  • 车队安全、通信边界和首版运行链已经贯通:FleetRuntime 按显式本车/主车ID执行主从分支,串联β准备屏障、全员激活、状态缓存、主车安全判定、周期协调、本车直接执行、远端分发、完成/取消和从车本地命令看门狗;IFleetTransport 隔离具体传输,测试项目提供不回环主车命令的内存实现。Fleet相关自动化测试共70个场景通过。
  • 本次建立工作区/项目AGENTS导航和 docs/ 按需知识库。

以上表示代码入口存在,不表示全部实车工况已经验收。

当前进行方向

  • 普通正向/倒车直线、曲线和小范围运动中坐标连续化已基本可用;允许小角度误差的相对自转已有轮组里程计模式,必须对准绝对世界航向时仍受Detour偶发持续退化限制。
  • 暂时冻结普通运动跳变阈值和30°/s、40°/s²自转参数,等待Detour接口语义后再决定是否实施自转结束后的条件化仅位置连续化或调整航向恢复策略。
  • Detour对接最小问题已整理到 docs/detour-information-checklist.md,不要求取得源码。
  • 验证非零β运动系,当前已有45°蟹行直线入口;曲线蟹行仍需设计实验。
  • 多车共同搬运的固定布局滚动任务已在内存传输下完成端到端贯通。当前重点转为真实无线链路和工程接入:确认无线参数与帧格式,实现串口 IFleetTransport,接入公共坐标系成员状态和主车时间轴,再通过静止状态机与低速双车逐级验证。QP/HQP不作为第一版前置条件。
  • 车队状态估计第一版保留“成员状态先经单车状态估计处理、车队层做时间对齐与刚体一致性检查、候选中心等权/圆周平均”的保守方案;暂不重复实现单车Detour跳变逻辑,也不在运行链和实车数据建立前加入复杂鲁棒优化。后续内部融合升级应尽量保持 FleetStateEstimateResultFleetStateMemberErrors 外部接口不变。
  • β在多车中定位为单车执行坐标系而非车队核心优化量:常规、斜行和横移动作先确定车队主要滚动方向,各车按布局朝向换算本地β,停车预对齐并经车队同步屏障统一释放。轨迹级β搜索只作为机械余量或复杂方向变化下的后续增强。

阻塞/待确认

  • Clumsy/Medulla正式宿主、插件部署和配置持久化说明未纳入仓库。
  • 完整停车业务流程和验收指标未确认。
  • 最小内存消息契约已经确定,但真实无线串口的端口参数、帧格式、序列化/校验和跨机时钟换算尚未实现;成员状态实际采集方式、布局原子激活接口、刚体误差实车阈值、夹紧/报警状态来源和故障降级策略仍待确认。
  • 各车经过独立 _controlFromDetour 任务坐标连续化后的位姿如何统一到同一公共车队坐标系仍待验证。车队参考点和纯几何采集方法已经确定,运行布局应在夹紧后生成不可变快照并由上层整体激活。
  • 最新实车实验数据对控制周期与舵轮滞后的结论尚未沉淀为可复核结果。
  • Detour l_step 精确定义、显式重定位/坐标重置状态和部署端MDCS恢复策略待确认;当前不能把 l_step<4 当作唯一有效性条件。
  • Detour getCartLocation() 的位姿坐标系、tick 采样/解算/发布语义、是否已有独立连续里程计或定位状态接口,以及部署版本和实际里程计/SLAM配置待确认。
  • Detour原地自转时 l_step 大幅上升、100~200mm级位置不连续和连续航向创新异常的内部原因待Detour负责人说明;仅凭当前位姿接口无法保证持续航向异常时仍可靠完成绝对角度闭环。
  • Detour源 tick 与本机单调时钟、轮组采样时刻尚无统一时间轴;当前创新比较可能包含数据年龄造成的表观误差。

建议下一步

  1. docs/detour-information-checklist.md 确认 getCartLocation() 字段、tickl_step、定位延迟、重定位行为和质量状态接口。
  2. 在Detour信息返回前不继续全局放宽状态估计边界,也不提高自转角速度/角加速度;现有偶发定位不可用保持安全停车。
  3. 为轮组里程计自转CSV补充请求角度、内部积分角、完成/超时/手动停止原因,按固定目标角重复验证误差和重复性;绝对航向任务继续保留Detour模式,不用轮组积分冒充世界航向。
  4. 为轨迹插值/投影、坐标变换、状态跳变候选和终点策略继续补充不依赖宿主的数学回归测试。
  5. 确认无线模块的Windows COM端口、波特率、数据位、停止位、校验方式、收发模式和模块配置;定义带版本、长度、类型、任务/序列号及CRC的最小字节帧。
  6. 实现串口版 IFleetTransport,先只做主车心跳/命令和从车状态报告的静态通信测试,测量丢包、乱序、延迟和断线;不得绕过现有命令有效期与本车看门狗。
  7. 接入C层正式车队动作入口、成员状态实际来源和主车接收时间轴,保证 FleetMemberReport 位姿处于同一公共世界坐标系,远端采样时间已换算为主车时间后再形成 FleetMemberStateSample[]
  8. 先验证静止布局建立、β准备、全员Ready、统一激活和停止,再进行空载低速双车直线与圆弧;共同搬运前补齐夹紧/报警输入和可立即停车措施。
  9. 记录各成员候选中心、数据年龄、状态来源、布局误差和减速/停车原因。只有数据证明当前等权融合频繁被单成员异常拖累时,再增加车队预测、逐成员门控和鲁棒加权。