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:
@@ -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 写轮速/舵角 UpperIO,Medulla 读并下发;Medulla 写反馈 LowerIO,Clumsy 读用于 ghost/控制。
|
||||
|
||||
## 构建与忽略
|
||||
|
||||
`build/`、`obj/`、`.vs/` 已在 `.gitignore` 中忽略。配置模板在 `deploy/`,首次运行 Clumsy 时可复制到 `build\Clumsy*`。
|
||||
|
||||
Reference in New Issue
Block a user