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>
This commit is contained in:
2026-06-28 15:04:55 +08:00
co-authored by Cursor
parent e5aeae9c33
commit 235c6c70ac
40 changed files with 2750 additions and 99 deletions
+61 -58
View File
@@ -1,72 +1,75 @@
# Tutorial Medulla Plugins
# Tutorial Medulla / Clumsy 插件
本仓库用于放置最小 Medulla 插件示例,方便从产品化项目中抽离出底盘 IO 与遥控器逻辑。示例不引用 `MDCSToolBox`;其中 `MultiWheelM` 为了使用底盘几何模型,会额外引用 `CommonUsage`
本仓库提供 **差速****多舵轮** 两套最小可用示例,每种底盘各含 Medulla (M) 与 Clumsy (C) 插件。多舵轮示例包含 **双车联动(MultiVehicleSync** 的手动与自动轨迹跟踪演示
## 目录结构
```text
Tutorial/
Tutorial.sln
DiffWheelM/
差速底盘最小 Medulla 插件
MultiWheelM/
多舵轮底盘最小 Medulla 插件
```
`build/``obj/``.vs/` 是本地构建或调试输出,已在 `.gitignore` 中忽略。
## DiffWheelM
`DiffWheelM` 参考 `StandardKivaM`,保留差速底盘最小 IO
- `SpeedLeft` / `SpeedRight`: 左右轮下发速度,`AsUpperIO`,超时自动复位
- `ActualSpeedLeft` / `ActualSpeedRight`: 左右轮实际速度反馈,`AsLowerIO`
- `MaxManualSpeed`: 手动最大轮速初始化参数,默认 `0.3m/s`
遥控器使用 `Up,Down,Left,Right` 控制前后与转向,`Q,W` 控制速度比例。
## MultiWheelM
`MultiWheelM` 参考 `StandardMultiWheelLifterM`,保留多舵轮底盘最小 IO
- 四个舵轮速度:`SpeedLeftFront``SpeedLeftRear``SpeedRightFront``SpeedRightRear`
- 四个舵轮转角:`ThLeftFront``ThLeftRear``ThRightFront``ThRightRear`
- 对应的实际速度与实际转角反馈
- `MaxManualSpeed``MaxManualAngularSpeed``MaxManualTheta` 初始化参数
- 舵轮几何参数:`WheelBaseHalfLength``WheelTrackHalfWidth``WheelAngleLowerLimit``WheelAngleUpperLimit`
遥控器支持普通转向、旋转、横移和斜行几个最小模式:
- `Up,Down,Left,Right`: 速度摇杆
- `Q,W`: 速度比例
- `R`: 旋转模式
- `C`: 横移模式
- `S`: 斜行模式
- `A,D`: 车头方向偏置
当前多舵轮示例使用 `CommonUsage.Chassis.MultiWheelChassis` 做遥控几何分解,不接真实下位机,`MotorRoutine` 会把下发速度/角度镜像到实际反馈变量,便于 Medulla UI 或 Clumsy 侧观察。
## 构建
```powershell
dotnet build .\Tutorial.sln
```
默认输出目录:
```text
build\Medulla\plugins\
DiffWheel/
DiffWheelM/ 差速 Medulla 插件
DiffWheelC/ 差速 Clumsy 插件
MultiWheel/
MultiWheelM/ 多舵轮 Medulla 插件
MultiWheelC/ 多舵轮 Clumsy 插件(含双车联动)
deploy/ Clumsy/Medulla 配置模板
docs/ 算法原理、修复记录、部署说明
build/ 本地运行目录(gitignore
```
## 依赖
两个插件都只引用
统一引用 `D:\MDCS\Release`
- `D:\MDCS\Dependencies\Medulla\RefCartActivator.dll`
- `D:\MDCS\Dependencies\Medulla\RefMedullaCore.dll`
- `D:\MDCS\Dependencies\Medulla\RefMedulla2.dll`
- `D:\MDCS\Dependencies\deps\RefFundamentalLib.dll`
- `Release\Medulla\RefCartActivator.dll`
- `Release\Clumsy\RefClumsyCore.dll``RefClumsyDance.dll`
- `Release\CommonUsage.dll`
- `Release\MDCSToolBox.dll`(需先编译 `D:\MDCS\Source\Products\mdcstoolbox`
`MultiWheelM` 额外引用:
```powershell
dotnet build D:\MDCS\Source\Products\mdcstoolbox\MDCSToolBox.csproj -c Release
dotnet build .\Tutorial.sln
```
- `D:\MDCS\Dependencies\Commons\CommonUsage.dll`
默认输出:
- M 插件 → `build\Medulla\plugins\`
- C 插件 → `build\Clumsy\``build\Clumsy_AGV2\`(多舵轮)
- 差速 C 插件 → `build\Clumsy_diff\`
## DiffWheelM / DiffWheelC
差速底盘最小 IO
- `SpeedLeft` / `SpeedRight`:下发速度
- `ActualSpeedLeft` / `ActualSpeedRight`:反馈(M 侧 MotorRoutine 镜像)
遥控器:`Up,Down,Left,Right` + `Q,W` 速度比例。
Clumsy 侧提供 **差速-前进2秒**、**差速-原地旋转2秒** MovementTest。
## MultiWheelM / MultiWheelC
多舵轮底盘 IO 与 `CommonUsage.Chassis.MultiWheelChassis` 几何一致。M 侧 `MotorRoutine` 将下发速度/角度镜像到反馈,便于仿真观察。
遥控器模式:`R` 旋转、`C` 横移、`S` 斜行、`A,D` 车头偏置、**`F` 车队联动**。
### 双车联动
- AGV1`build\Medulla`tag `Multi1`+ `build\Clumsy`(主车,`MultiVehicleMasterIp="/"`
- AGV2`build\Medulla_AGV2`tag `Multi2`+ `build\Clumsy_AGV2`(从车)
主从通过 HTTP `:8008` 同步;详见 [docs/MultiVehicleSync.md](docs/MultiVehicleSync.md)。
产品源已知问题及 Tutorial 修复说明:[docs/BugFixes.md](docs/BugFixes.md)。
运行步骤:[docs/RunAndDeploy.md](docs/RunAndDeploy.md)。
## M 与 C 如何通信
两者不直接调用,而是通过 **CartActivator DObject 共享内存**(相同 IO 字段名 + `SetShareObjectTag`)。Clumsy 写轮速/舵角 UpperIOMedulla 读并下发;Medulla 写反馈 LowerIOClumsy 读用于 ghost/控制。
## 构建与忽略
`build/``obj/``.vs/` 已在 `.gitignore` 中忽略。配置模板在 `deploy/`,首次运行 Clumsy 时可复制到 `build\Clumsy*`