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
+15
View File
@@ -0,0 +1,15 @@
{
"WheelConfig": {
"LeftFront": { "Position": { "X": 525.0, "Y": 200.0 } },
"LeftRear": { "Position": { "X": -525.0, "Y": 200.0 } },
"RightFront": { "Position": { "X": 525.0, "Y": -200.0 } },
"RightRear": { "Position": { "X": -525.0, "Y": -200.0 } }
},
"MaxSpeed": 0.3,
"AccPerSecond": 0.3,
"DeAccPerSecond": 0.5,
"MinTurnSpeedFac": 0.25,
"ControlPointRadius": 500.0,
"GcpThetaPerSecond": 10.0,
"MinimumTurningAngleForAckermann": 60.0
}
+60
View File
@@ -0,0 +1,60 @@
{
"basicSpeed": 0.2,
"DriveTaskInterval": 50,
"script": "MultiWheelC.dll",
"detourHost": "127.0.0.1",
"detourPort": 4321,
"msConf": {
"MultiVehicleMasterEndpoint": "/",
"MultiVehicleFleetNum": 2,
"MultiVehicleSyncInterval": 50,
"TestCarSyncDistance": 2400,
"TestCarSyncTh": 0,
"ManualCarSyncVxFac": 1.0,
"ManualCarSyncVthFac": 1.0,
"SyncThAccPerSec": 30,
"PosAvailable": true,
"SimpleIp": "127.0.0.1",
"CarNum": 1
},
"layout": {
"chassis": {
"width": 1000,
"length": 1550,
"contour": [
750, -500, -750, -500, -750, -300, -800, -280, -800, -220,
-750, -200, -750, 200, -800, 220, -800, 280, -750, 300,
-750, 500, 750, 500
]
},
"components": [
{
"type": "lidar2d",
"options": {
"name": "front_lidar_1",
"x": 700, "y": 0, "yaw": 0, "z": 0, "pitch": 0, "roll": 0,
"isCircle": false, "ignoreDist": 100, "maxDist": 200000,
"filterChassis": true
}
},
{
"type": "lidar2d",
"options": {
"name": "rear_left_lidar_1",
"x": -700, "y": 450, "yaw": 180, "z": 0, "pitch": 0, "roll": 0,
"isCircle": false, "ignoreDist": 100, "maxDist": 200000,
"filterChassis": true
}
},
{
"type": "lidar2d",
"options": {
"name": "rear_right_lidar_1",
"x": -700, "y": -450, "yaw": 180, "z": 0, "pitch": 0, "roll": 0,
"isCircle": false, "ignoreDist": 100, "maxDist": 200000,
"filterChassis": true
}
}
]
}
}
+11
View File
@@ -0,0 +1,11 @@
{
"port": 8008,
"allowMultiple": true,
"soTag": "Multi1",
"detourHost": "127.0.0.1",
"detourPort": 4321,
"HideConsoleOnStart": false,
"FollowCarOnStart": true,
"ShowRobot3dModel": true,
"ShowRobotArrow": true
}
+60
View File
@@ -0,0 +1,60 @@
{
"basicSpeed": 0.2,
"DriveTaskInterval": 50,
"script": "MultiWheelC.dll",
"detourHost": "127.0.0.1",
"detourPort": 4421,
"msConf": {
"MultiVehicleMasterEndpoint": "127.0.0.1:8008",
"MultiVehicleFleetNum": 2,
"MultiVehicleSyncInterval": 50,
"TestCarSyncDistance": 2400,
"TestCarSyncTh": 0,
"ManualCarSyncVxFac": 1.0,
"ManualCarSyncVthFac": 1.0,
"SyncThAccPerSec": 30,
"PosAvailable": true,
"SimpleIp": "127.0.0.1",
"CarNum": 2
},
"layout": {
"chassis": {
"width": 1000,
"length": 1550,
"contour": [
750, -500, -750, -500, -750, -300, -800, -280, -800, -220,
-750, -200, -750, 200, -800, 220, -800, 280, -750, 300,
-750, 500, 750, 500
]
},
"components": [
{
"type": "lidar2d",
"options": {
"name": "front_lidar_2",
"x": 700, "y": 0, "yaw": 0, "z": 0, "pitch": 0, "roll": 0,
"isCircle": false, "ignoreDist": 100, "maxDist": 200000,
"filterChassis": true
}
},
{
"type": "lidar2d",
"options": {
"name": "rear_left_lidar_2",
"x": -700, "y": 450, "yaw": 180, "z": 0, "pitch": 0, "roll": 0,
"isCircle": false, "ignoreDist": 100, "maxDist": 200000,
"filterChassis": true
}
},
{
"type": "lidar2d",
"options": {
"name": "rear_right_lidar_2",
"x": -700, "y": -450, "yaw": 180, "z": 0, "pitch": 0, "roll": 0,
"isCircle": false, "ignoreDist": 100, "maxDist": 200000,
"filterChassis": true
}
}
]
}
}
+11
View File
@@ -0,0 +1,11 @@
{
"port": 8009,
"allowMultiple": true,
"soTag": "Multi2",
"detourHost": "127.0.0.1",
"detourPort": 4421,
"HideConsoleOnStart": false,
"FollowCarOnStart": true,
"ShowRobot3dModel": true,
"ShowRobotArrow": true
}
+17
View File
@@ -0,0 +1,17 @@
{
"basicSpeed": 0.2,
"DriveTaskInterval": 50,
"script": "DiffWheelC.dll",
"msConf": {
"ChassisWidth": 600,
"SimpleIp": "127.0.0.1"
},
"layout": {
"chassis": {
"width": 600,
"length": 900,
"contour": [-450, 300, 450, 300, 450, -300, -450, -300]
},
"components": []
}
}
+9
View File
@@ -0,0 +1,9 @@
@echo off
setlocal
cd /d "%~dp0"
if not exist chassis.json copy /Y ..\..\deploy\chassis.json chassis.json >nul
if not exist clumsy.json copy /Y ..\..\deploy\clumsy_agv1\clumsy.json clumsy.json >nul
if not exist clumsyconsole.json copy /Y ..\..\deploy\clumsy_agv1\clumsyconsole.json clumsyconsole.json >nul
echo [Clumsy AGV1] Master, tag Multi1. Start Medulla build\Medulla first.
ClumsyLite.exe
pause
+9
View File
@@ -0,0 +1,9 @@
@echo off
setlocal
cd /d "%~dp0"
if not exist chassis.json copy /Y ..\..\deploy\chassis.json chassis.json >nul
if not exist clumsy.json copy /Y ..\..\deploy\clumsy_agv2\clumsy.json clumsy.json >nul
if not exist clumsyconsole.json copy /Y ..\..\deploy\clumsy_agv2\clumsyconsole.json clumsyconsole.json >nul
echo [Clumsy AGV2] Slave, tag Multi2. Start Medulla build\Medulla_AGV2 first.
ClumsyLite.exe
pause