2026-06-28 15:04:55 +08:00
|
|
|
|
# Tutorial Medulla / Clumsy 插件
|
2026-06-19 23:12:05 +08:00
|
|
|
|
|
2026-06-28 15:04:55 +08:00
|
|
|
|
本仓库提供 **差速** 与 **多舵轮** 两套最小可用示例,每种底盘各含 Medulla (M) 与 Clumsy (C) 插件。多舵轮示例包含 **双车联动(MultiVehicleSync)** 的手动与自动轨迹跟踪演示。
|
2026-06-19 23:12:05 +08:00
|
|
|
|
|
|
|
|
|
|
## 目录结构
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
Tutorial/
|
|
|
|
|
|
Tutorial.sln
|
2026-06-28 15:04:55 +08:00
|
|
|
|
DiffWheel/
|
|
|
|
|
|
DiffWheelM/ 差速 Medulla 插件
|
|
|
|
|
|
DiffWheelC/ 差速 Clumsy 插件
|
|
|
|
|
|
MultiWheel/
|
|
|
|
|
|
MultiWheelM/ 多舵轮 Medulla 插件
|
|
|
|
|
|
MultiWheelC/ 多舵轮 Clumsy 插件(含双车联动)
|
|
|
|
|
|
deploy/ Clumsy/Medulla 配置模板
|
|
|
|
|
|
docs/ 算法原理、修复记录、部署说明
|
|
|
|
|
|
build/ 本地运行目录(gitignore)
|
2026-06-19 23:12:05 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
2026-06-28 15:04:55 +08:00
|
|
|
|
## 依赖
|
2026-06-19 23:12:05 +08:00
|
|
|
|
|
2026-06-28 15:04:55 +08:00
|
|
|
|
统一引用 `D:\MDCS\Release`:
|
2026-06-19 23:12:05 +08:00
|
|
|
|
|
2026-06-28 15:04:55 +08:00
|
|
|
|
- `Release\Medulla\RefCartActivator.dll` 等
|
|
|
|
|
|
- `Release\Clumsy\RefClumsyCore.dll`、`RefClumsyDance.dll`
|
|
|
|
|
|
- `Release\CommonUsage.dll`
|
|
|
|
|
|
- `Release\MDCSToolBox.dll`(需先编译 `D:\MDCS\Source\Products\mdcstoolbox`)
|
2026-06-19 23:12:05 +08:00
|
|
|
|
|
2026-06-28 15:04:55 +08:00
|
|
|
|
```powershell
|
|
|
|
|
|
dotnet build D:\MDCS\Source\Products\mdcstoolbox\MDCSToolBox.csproj -c Release
|
|
|
|
|
|
dotnet build .\Tutorial.sln
|
|
|
|
|
|
```
|
2026-06-19 23:12:05 +08:00
|
|
|
|
|
2026-06-28 15:04:55 +08:00
|
|
|
|
默认输出:
|
2026-06-19 23:12:05 +08:00
|
|
|
|
|
2026-06-28 15:04:55 +08:00
|
|
|
|
- M 插件 → `build\Medulla\plugins\`
|
|
|
|
|
|
- C 插件 → `build\Clumsy\`、`build\Clumsy_AGV2\`(多舵轮)
|
|
|
|
|
|
- 差速 C 插件 → `build\Clumsy_diff\`
|
2026-06-19 23:12:05 +08:00
|
|
|
|
|
2026-06-28 15:04:55 +08:00
|
|
|
|
## DiffWheelM / DiffWheelC
|
2026-06-19 23:12:05 +08:00
|
|
|
|
|
2026-06-28 15:04:55 +08:00
|
|
|
|
差速底盘最小 IO:
|
2026-06-19 23:12:05 +08:00
|
|
|
|
|
2026-06-28 15:04:55 +08:00
|
|
|
|
- `SpeedLeft` / `SpeedRight`:下发速度
|
|
|
|
|
|
- `ActualSpeedLeft` / `ActualSpeedRight`:反馈(M 侧 MotorRoutine 镜像)
|
2026-06-19 23:12:05 +08:00
|
|
|
|
|
2026-06-28 15:04:55 +08:00
|
|
|
|
遥控器:`Up,Down,Left,Right` + `Q,W` 速度比例。
|
2026-06-19 23:12:05 +08:00
|
|
|
|
|
2026-06-28 15:04:55 +08:00
|
|
|
|
Clumsy 侧提供 **差速-前进2秒**、**差速-原地旋转2秒** MovementTest。
|
2026-06-19 23:12:05 +08:00
|
|
|
|
|
2026-06-28 15:04:55 +08:00
|
|
|
|
## MultiWheelM / MultiWheelC
|
2026-06-19 23:12:05 +08:00
|
|
|
|
|
2026-06-28 15:04:55 +08:00
|
|
|
|
多舵轮底盘 IO 与 `CommonUsage.Chassis.MultiWheelChassis` 几何一致。M 侧 `MotorRoutine` 将下发速度/角度镜像到反馈,便于仿真观察。
|
2026-06-19 23:12:05 +08:00
|
|
|
|
|
2026-06-28 15:04:55 +08:00
|
|
|
|
遥控器模式:`R` 旋转、`C` 横移、`S` 斜行、`A,D` 车头偏置、**`F` 车队联动**。
|
2026-06-19 23:12:05 +08:00
|
|
|
|
|
2026-06-28 15:04:55 +08:00
|
|
|
|
### 双车联动
|
2026-06-19 23:12:05 +08:00
|
|
|
|
|
2026-06-28 15:04:55 +08:00
|
|
|
|
- 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)。
|
2026-06-19 23:12:05 +08:00
|
|
|
|
|
2026-06-28 15:04:55 +08:00
|
|
|
|
## M 与 C 如何通信
|
2026-06-19 23:12:05 +08:00
|
|
|
|
|
2026-06-28 15:04:55 +08:00
|
|
|
|
两者不直接调用,而是通过 **CartActivator DObject 共享内存**(相同 IO 字段名 + `SetShareObjectTag`)。Clumsy 写轮速/舵角 UpperIO,Medulla 读并下发;Medulla 写反馈 LowerIO,Clumsy 读用于 ghost/控制。
|
2026-06-19 23:12:05 +08:00
|
|
|
|
|
2026-06-28 15:04:55 +08:00
|
|
|
|
## 构建与忽略
|
2026-06-19 23:12:05 +08:00
|
|
|
|
|
2026-06-28 15:04:55 +08:00
|
|
|
|
`build/`、`obj/`、`.vs/` 已在 `.gitignore` 中忽略。配置模板在 `deploy/`,首次运行 Clumsy 时可复制到 `build\Clumsy*`。
|