Files
ruifeng.zhouandCursor 235c6c70ac Add Clumsy plugins and dual-vehicle fleet sync demo.
Restructure into DiffWheel/MultiWheel folders, add DiffWheelC and MultiWheelC with MovementTests, FleetRemote multi-vehicle manual sync, deploy templates, and documentation. Update dependency paths to D:\MDCS\Release and mirror motor feedback in MotorRoutine for simulation.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-28 15:04:55 +08:00

5.3 KiB
Raw Permalink Blame History

多车联动问题修复记录

对照产品源 StandardMultiWheelLifterC/PilotDefinition.csTutorial MultiWheelC 中已修复或规避的问题如下。

1. CenterTh 弧度/角度混用

说明
位置 产品源约 L534536
问题 Math.Sin(v.Th) / Math.Cos(v.Th)v.Th 为角度(deg),但 Sin/Cos 需要弧度,导致车队中心航向错误
影响 自动/定位补偿模式下 fleet 中心朝向偏差,联动走形异常
修复 改为 Math.Sin(v.Th * Math.PI / 180.0)

2. 空 fleet 上调用 Average()

说明
位置 产品源约 L531535
问题 主车在把自己写入 fleet 之前MultiVehicleFleet.Values 求平均,早期 tick 可能为空
影响 可能抛 InvalidOperationExceptionsync 线程崩溃
修复 先写入主车自身,再 Count > 0 时才 Average

3. 阻塞式 HTTP (.Result)

说明
位置 产品源约 L484, L778, L802
问题 50ms 循环内 hc.GetStringAsync(...).Result 阻塞,超时 2s
影响 sync 线程卡顿,motion 与 notify 延迟累积
修复 改为 FireAndForgetRegister/NotifyContinueWith 记录失败

4. if(true)/if(false) 死分支

说明
位置 产品源约 L674679
问题 fleet 数量门控与预对齐阶段被硬编码关闭
影响 未齐套也 SendMotion;对齐逻辑永不执行
修复 恢复 fleetReady = Count == MultiVehicleFleetNum 门控后再 SendMotion

5. _accumulateTh 积分 dt 异常

说明
位置 产品源约 L547550
问题 _lastThTime 初值为 MinValue 或 >1s 重置导致首帧/恢复后 dt 异常
影响 手动编队转向突变或几乎不动
修复 初始化 _lastThTime = Nowdt 上限 0.2s

6. 主车 HTTP 通知自身

说明
位置 产品源约 L770778
问题 notify 循环包含主车自己的 IP
影响 冗余自调用、handler 重入
修复 ip == Conf.SimpleIp 时 skip

7. 从车覆盖全局 Conf

说明
位置 产品源约 L585596
问题 从 notification 写回 Conf.TestCarSyncTh 等全局配置
影响 网络数据污染本地配置,难以调试
修复 使用局部变量 syncTh/syncDistance/...,不修改 Conf

8. ChassisController API 名称/签名错误

说明
位置 产品源 ChassisController.cs L95117
问题 使用 MultiVehicleGetCenterPos(不存在)及 3 参 MultiVehicleSendMotion
影响 自动联动可能无法编译或静默失效
修复 使用 MultiVehicleGetFleetPos + 5 参 Action<float,float,float,Vector2,float>

9. VehicleSyncInfo JSON 反序列化

说明
位置 产品源 DTO 定义
问题 只读字段 + 有参构造,Newtonsoft 默认难反序列化
影响 register/notify 解析失败 → HTTP 500
修复 改为可写属性 + [JsonProperty](见 VehicleSyncModels.cs

10. 手动联动未接线(产品层)

说明
位置 StandardMultiWheelLifterM/Remote.csMultiWheelRemote.MultiVehicleModeChassisLogic 为空
问题 MultiVehicleManual* LowerIO 从未被 M 插件赋值
影响 遥控器无法驱动 fleet
修复 Tutorial MultiWheelMFleetMode 开关 + MultiVehicleManual* UpperIO 字段

11. MultiVehicleManualVy 未使用(产品源)

说明
位置 产品源声明但未读
问题 横移联动未实现
Tutorial 状态 保留字段,当前手动模式仅 Vx + Vth;Vy 固定为 0

12. 产品源仍存在的已知限制(Tutorial 未改框架)

  • 激光两腿检测联动 → 已上移到 MDCSToolBox 接口;Tutorial 默认不启用检测,产品在插件内实现 DetectNeighborBias
  • ClumsyLite 与 Medulla share-object tag 的绑定机制依赖运行时 CartActivator 配置,需与 startup.iocmdSetShareObjectTag 一致

13. 同机多 Detour/Clumsy 串台(2026-06

说明
问题 写死 DObject("DetourPos")、Detour HTTP 127.0.0.1:4321、同步 HTTP :8008,同 PC 双实例互相覆盖
修复 Detour shareObjectTag + Clumsy soTagClumsy detourHost/detourPortWebAPI.port + VehicleSyncInfo.Port;主车端点 MultiVehicleMasterEndpointip:port
配置 deploy/clumsy_agv*/clumsyconsole.jsondetour.json

14. 车队中心取平均(2026-06

说明
问题 旧逻辑对全部车位姿取平均,且假设每台都有 Detour
修复 固定 slot 表 + 仅对 PosAvailable 车反推中心;有效车集合运行中可变
位置 MultiWheelPilotDefinition.MultiVehicle.csTryInferFleetCenter

15. 同步引擎重复实现(2026-06)

说明
问题 Tutorial 与 StandardMultiWheelLifterC 各维护一套 register/notify/loop
修复 统一到 MDCSToolBox 基类 InitMultiVehicleCoordination();子类仅配置 + DetectNeighborBias 重写