Add MultiWheelS Simple scheduling plugin for fleet sync

Introduce the MultiWheelS (SimpleComposer host) plugin with the
MultiVehicleCar definition so fleet auto-sync is driven via Simple
dispatch instead of the hand-rolled AGV.FleetGo path. Simplify
MultiWheelC.AGV to BasicInterface, drop the obsolete FleetGo helper
and FleetStraightMovementTest, wire MultiWheelS into Tutorial.sln,
and update RunAndDeploy docs plus add the MultiVehicleAutoSyncReview
notes.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-28 23:12:23 +08:00
co-authored by Cursor
parent d3abf0fb02
commit d935e847ec
7 changed files with 317 additions and 47 deletions
+2 -23
View File
@@ -1,30 +1,9 @@
using System;
using MDCSToolBox.Clumsy.AgvInterfaces;
using MDCSToolBox.Clumsy.MotionControllers;
namespace MultiWheelC;
public class AGV : MultiWheelInterface
public class AGV : BasicInterface
{
public override AbstractGeometricController GetController()
{
return new ChassisController().Get();
}
public override MultiWheelMagTracker GetMagController()
{
throw new NotImplementedException("Tutorial MultiWheelC does not implement magnetic tracking.");
}
public override NaiveMagnetController GetNaiveMagnetController()
{
throw new NotImplementedException("Tutorial MultiWheelC does not implement naive magnetic tracking.");
}
public void FleetGo(float srcX, float srcY, int srcId, float dstX, float dstY, int dstId, int trackId,
float speed = -1, bool reverse = false, float carDirectionBias = 0)
{
BasicGo(srcX, srcY, srcId, dstX, dstY, dstId, trackId, speed, reverse, carDirectionBias,
multiVehicleSync: true);
}
public override AbstractGeometricController GetController() => new ChassisController().Get();
}
-21
View File
@@ -218,24 +218,3 @@ public class WebApiMotionPauseTest : MovementTest
{
}
}
[MovementTest(name = "多舵轮-车队直线1m")]
public class FleetStraightMovementTest : MovementTest
{
public override void Test()
{
if (PilotDefinition.Conf.MultiVehicleMasterEndpoint != "/")
{
Hedingben.ToastText("仅主车可发起车队轨迹", "FleetGo");
return;
}
var pos = DetourInterface.getCartLocation();
var agv = new AGV();
agv.FleetGo((float)pos.x, (float)pos.y, 1, (float)pos.x + 1000f, (float)pos.y, 2, 10001, 0.2f);
}
public override void TestStop()
{
}
}