using Flyshot.Core.Domain; namespace Flyshot.Runtime.Common; /// /// 定义控制器运行时的最小状态与执行契约,供兼容层在不关心底层 Socket 细节的情况下调度轨迹。 /// public interface IControllerRuntime { /// /// 重置当前机器人模型并清空控制器运行时状态。 /// /// 当前机器人配置。 /// 兼容层传入的机器人名称。 void ResetRobot(RobotProfile robot, string robotName); /// /// 建立到控制器 IP 的连接。 /// /// 控制器 IP。 void Connect(string robotIp); /// /// 断开当前控制器连接。 /// void Disconnect(); /// /// 使能机器人并记录底层缓冲区大小。 /// /// 运行时缓冲区大小。 void EnableRobot(int bufferSize); /// /// 关闭机器人使能。 /// void DisableRobot(); /// /// 停止当前运动。 /// void StopMove(); /// /// 获取当前速度倍率。 /// /// 速度倍率。 double GetSpeedRatio(); /// /// 设置当前速度倍率。 /// /// 目标速度倍率。 void SetSpeedRatio(double ratio); /// /// 获取当前 TCP 坐标。 /// /// TCP 三维坐标。 IReadOnlyList GetTcp(); /// /// 设置当前 TCP 坐标。 /// /// TCP X。 /// TCP Y。 /// TCP Z。 void SetTcp(double x, double y, double z); /// /// 读取指定 IO 端口。 /// /// IO 端口。 /// IO 类型。 /// IO 当前值。 bool GetIo(int port, string ioType); /// /// 写入指定 IO 端口。 /// /// IO 端口。 /// 目标 IO 值。 /// IO 类型。 void SetIo(int port, bool value, string ioType); /// /// 获取当前关节位置。 /// /// 当前关节位置。 IReadOnlyList GetJointPositions(); /// /// 获取当前末端位姿。 /// /// 当前末端位姿。 IReadOnlyList GetPose(); /// /// 获取当前运行时状态快照。 /// /// 控制器状态快照。 ControllerStateSnapshot GetSnapshot(); /// /// 执行一条已经完成规划的轨迹,并更新最终关节位置。 /// /// 规划结果。 /// 轨迹执行结束后的关节位置。 void ExecuteTrajectory(TrajectoryResult result, IReadOnlyList finalJointPositions); /// /// 执行一条已经完成规划的直角坐标轨迹,并更新最终 TCP 位姿。 /// /// 规划结果,必须包含稠密直角坐标轨迹。 /// 轨迹执行结束后的 [x,y,z,w,p,r] 位姿。 void ExecuteCartesianTrajectory(TrajectoryResult result, IReadOnlyList finalPose); }