using Flyshot.Core.Domain; namespace Flyshot.ControllerClientCompat; /// /// 定义 HTTP-only 兼容层对外暴露的 ControllerClient 语义服务接口。 /// public interface IControllerClientCompatService { /// /// 获取当前兼容层对外报告的服务端版本号。 /// string ServerVersion { get; } /// /// 获取当前是否已经完成机器人初始化。 /// bool IsSetUp { get; } /// /// 保存当前调用方期望连接的 replacement 服务端地址。 /// /// 客户端传入的服务端 IP。 /// 客户端传入的服务端端口。 void ConnectServer(string serverIp, int port); /// /// 获取兼容服务端版本号。 /// /// 服务端版本号。 string GetServerVersion(); /// /// 获取兼容客户端版本号。 /// /// 客户端版本号。 string GetClientVersion(); /// /// 根据旧客户端使用的机器人名称完成机器人初始化。 /// /// 机器人名称。 void SetUpRobot(string robotName); /// /// 根据旧客户端传入的环境文件完成机器人初始化。 /// /// 环境文件路径。 void SetUpRobotFromEnv(string envFile); /// /// 设置是否显示 TCP 坐标轴。 /// /// 是否显示 TCP。 /// 坐标轴长度。 /// 坐标轴线宽。 void SetShowTcp(bool isShow, double axisLength, int axisSize); /// /// 记录当前激活的控制器类型。 /// /// 是否为仿真控制器。 void SetActiveController(bool sim); /// /// 记录当前控制器已经建立连接。 /// /// 控制器 IP。 void Connect(string robotIp); /// /// 记录当前控制器已经断开。 /// void Disconnect(); /// /// 记录当前机器人进入使能态。 /// /// 缓冲区大小。 void EnableRobot(int bufferSize); /// /// 记录当前机器人退出使能态。 /// void DisableRobot(); /// /// 停止当前运动状态。 /// void StopMove(); /// /// 读取当前控制器运行时状态快照。 /// /// 控制器运行时状态快照。 ControllerStateSnapshot GetControllerSnapshot(); /// /// 获取当前速度倍率。 /// /// 当前速度倍率。 double GetSpeedRatio(); /// /// 更新当前速度倍率。 /// /// 目标速度倍率。 void SetSpeedRatio(double ratio); /// /// 写入兼容层缓存的 IO 数值。 /// /// IO 端口号。 /// IO 值。 /// IO 类型。 void SetIo(int port, bool value, string ioType); /// /// 读取兼容层缓存的 IO 数值。 /// /// IO 端口号。 /// IO 类型。 /// 缓存中的 IO 值。 bool GetIo(int port, string ioType); /// /// 按给定位姿和 seed 计算最近 IK。 /// /// 目标位姿数组。 /// IK seed 关节数组。 /// IK 结果关节数组。 IReadOnlyList GetNearestIk(IReadOnlyList pose, IReadOnlyList seed); /// /// 设置当前 TCP 三维坐标。 /// /// TCP X。 /// TCP Y。 /// TCP Z。 void SetTcp(double x, double y, double z); /// /// 读取当前 TCP 三维坐标。 /// /// TCP 数组。 IReadOnlyList GetTcp(); /// /// 读取当前关节位置。 /// /// 关节位置数组。 IReadOnlyList GetJointPositions(); /// /// 更新当前关节位置。 /// /// 目标关节位置。 void MoveJoint(IReadOnlyList jointPositions); /// /// 执行普通轨迹。 /// /// 轨迹路点集合。 /// 执行参数。 void ExecuteTrajectory(IReadOnlyList> waypoints, TrajectoryExecutionOptions? options = null); /// /// 读取当前末端位姿快照。 /// /// 位姿数组。 IReadOnlyList GetPose(); /// /// 上传一条飞拍轨迹。 /// /// 飞拍轨迹。 void UploadTrajectory(ControllerClientCompatUploadedTrajectory trajectory); /// /// 列出当前已上传的飞拍轨迹名称。 /// /// 轨迹名称列表。 IReadOnlyList ListTrajectoryNames(); /// /// 执行指定名称的飞拍轨迹。 /// /// 轨迹名称。 /// 飞拍执行参数。 void ExecuteTrajectoryByName(string name, FlyshotExecutionOptions? options = null); /// /// 保存指定飞拍轨迹的轨迹信息。 /// /// 轨迹名称。 /// 轨迹生成方法。 void SaveTrajectoryInfo(string name, string method = "icsp"); /// /// 检查指定飞拍轨迹是否可执行。 /// /// 输出规划轨迹总时长。 /// 轨迹名称。 /// 轨迹生成方法。 /// 是否保存轨迹信息。 /// 轨迹是否有效。 bool IsFlyshotTrajectoryValid(out TimeSpan duration, string name, string method = "icsp", bool saveTrajectory = false); /// /// 删除指定名称的飞拍轨迹。 /// /// 轨迹名称。 void DeleteTrajectory(string name); /// /// 读取当前配置过的机器人名称。 /// /// 机器人名称。 string GetRobotName(); /// /// 读取当前机器人自由度。 /// /// 机器人自由度。 int GetDegreesOfFreedom(); }