泛化轨迹工厂参数并新增组合运动计划执行器与复合测试
This commit is contained in:
@@ -1,90 +1,90 @@
|
||||
|
||||
|
||||
using System;
|
||||
using ClumsyCore;
|
||||
using ClumsyCore.Pilot;
|
||||
using FundamentalLib;
|
||||
using MDCSToolBox.Clumsy.Movements;
|
||||
using MDCSToolBox.Clumsy.Pilot;
|
||||
// using System;
|
||||
// using ClumsyCore;
|
||||
// using ClumsyCore.Pilot;
|
||||
// using FundamentalLib;
|
||||
// using MDCSToolBox.Clumsy.Movements;
|
||||
// using MDCSToolBox.Clumsy.Pilot;
|
||||
|
||||
namespace MultiWheelC
|
||||
{
|
||||
public abstract class ClampMovementTestBase : MovementTest
|
||||
{
|
||||
public float TimeoutSeconds = 30f; // 动作超时时间,单位s。
|
||||
// namespace MultiWheelC
|
||||
// {
|
||||
// public abstract class ClampMovementTestBase : MovementTest
|
||||
// {
|
||||
// public float TimeoutSeconds = 30f; // 动作超时时间,单位s。
|
||||
|
||||
private DriveTask _task;
|
||||
protected abstract bool Close { get; }
|
||||
// private DriveTask _task;
|
||||
// protected abstract bool Close { get; }
|
||||
|
||||
// 根据派生测试类型驱动左右夹臂同步夹紧或打开。
|
||||
public override void Test()
|
||||
{
|
||||
var leftTarget = Close
|
||||
? PilotDefinition.Self.LeftArmUpperPos
|
||||
: PilotDefinition.Self.LeftArmLowerPos;
|
||||
var rightTarget = Close
|
||||
? PilotDefinition.Self.RightArmUpperPos
|
||||
: PilotDefinition.Self.RightArmLowerPos;
|
||||
// // 根据派生测试类型驱动左右夹臂同步夹紧或打开。
|
||||
// public override void Test()
|
||||
// {
|
||||
// var leftTarget = Close
|
||||
// ? PilotDefinition.Self.LeftArmUpperPos
|
||||
// : PilotDefinition.Self.LeftArmLowerPos;
|
||||
// var rightTarget = Close
|
||||
// ? PilotDefinition.Self.RightArmUpperPos
|
||||
// : PilotDefinition.Self.RightArmLowerPos;
|
||||
|
||||
if (float.IsNaN(leftTarget) ||
|
||||
float.IsInfinity(leftTarget) ||
|
||||
float.IsNaN(rightTarget) ||
|
||||
float.IsInfinity(rightTarget))
|
||||
{
|
||||
Console.WriteLine(
|
||||
"夹臂目标位置无效,取消夹臂运动测试。");
|
||||
return;
|
||||
}
|
||||
// if (float.IsNaN(leftTarget) ||
|
||||
// float.IsInfinity(leftTarget) ||
|
||||
// float.IsNaN(rightTarget) ||
|
||||
// float.IsInfinity(rightTarget))
|
||||
// {
|
||||
// Console.WriteLine(
|
||||
// "夹臂目标位置无效,取消夹臂运动测试。");
|
||||
// return;
|
||||
// }
|
||||
|
||||
// 防止重复点击时上一项夹臂任务仍在运行。
|
||||
TestStop();
|
||||
Console.WriteLine(
|
||||
$"开始夹臂{(Close ? "夹紧" : "打开")}测试:" +
|
||||
$"左目标={leftTarget},右目标={rightTarget}");
|
||||
// // 防止重复点击时上一项夹臂任务仍在运行。
|
||||
// TestStop();
|
||||
// Console.WriteLine(
|
||||
// $"开始夹臂{(Close ? "夹紧" : "打开")}测试:" +
|
||||
// $"左目标={leftTarget},右目标={rightTarget}");
|
||||
|
||||
var task = new DriveTask(
|
||||
new ClampToTarget
|
||||
{
|
||||
LeftClampTarget = leftTarget,
|
||||
RightClampTarget = rightTarget,
|
||||
TimeoutSeconds = TimeoutSeconds
|
||||
}.Get());
|
||||
_task = task;
|
||||
// var task = new DriveTask(
|
||||
// new ClampToTarget
|
||||
// {
|
||||
// LeftClampTarget = leftTarget,
|
||||
// RightClampTarget = rightTarget,
|
||||
// TimeoutSeconds = TimeoutSeconds
|
||||
// }.Get());
|
||||
// _task = task;
|
||||
|
||||
try
|
||||
{
|
||||
task.Wait();
|
||||
}
|
||||
finally
|
||||
{
|
||||
PilotDefinition.Self.SpeedLeftArm = 0f;
|
||||
PilotDefinition.Self.SpeedRightArm = 0f;
|
||||
if (ReferenceEquals(_task, task))
|
||||
_task = null;
|
||||
}
|
||||
}
|
||||
// try
|
||||
// {
|
||||
// task.Wait();
|
||||
// }
|
||||
// finally
|
||||
// {
|
||||
// PilotDefinition.Self.SpeedLeftArm = 0f;
|
||||
// PilotDefinition.Self.SpeedRightArm = 0f;
|
||||
// if (ReferenceEquals(_task, task))
|
||||
// _task = null;
|
||||
// }
|
||||
// }
|
||||
|
||||
// 停止夹臂任务并立即清零左右夹臂下发速度。
|
||||
public override void TestStop()
|
||||
{
|
||||
_task?.Stop();
|
||||
_task = null;
|
||||
PilotDefinition.Self.SpeedLeftArm = 0f;
|
||||
PilotDefinition.Self.SpeedRightArm = 0f;
|
||||
}
|
||||
}
|
||||
// // 停止夹臂任务并立即清零左右夹臂下发速度。
|
||||
// public override void TestStop()
|
||||
// {
|
||||
// _task?.Stop();
|
||||
// _task = null;
|
||||
// PilotDefinition.Self.SpeedLeftArm = 0f;
|
||||
// PilotDefinition.Self.SpeedRightArm = 0f;
|
||||
// }
|
||||
// }
|
||||
|
||||
[MovementTest(name = "夹臂关闭测试")]
|
||||
public sealed class TestClampCloseMovement
|
||||
: ClampMovementTestBase
|
||||
{
|
||||
protected override bool Close => false;
|
||||
}
|
||||
// [MovementTest(name = "夹臂关闭测试")]
|
||||
// public sealed class TestClampCloseMovement
|
||||
// : ClampMovementTestBase
|
||||
// {
|
||||
// protected override bool Close => false;
|
||||
// }
|
||||
|
||||
[MovementTest(name = "夹臂启动测试")]
|
||||
public sealed class TestClampOpenMovement
|
||||
: ClampMovementTestBase
|
||||
{
|
||||
protected override bool Close => true;
|
||||
}
|
||||
}
|
||||
// [MovementTest(name = "夹臂启动测试")]
|
||||
// public sealed class TestClampOpenMovement
|
||||
// : ClampMovementTestBase
|
||||
// {
|
||||
// protected override bool Close => true;
|
||||
// }
|
||||
// }
|
||||
|
||||
Reference in New Issue
Block a user