using System; using System.Collections.Generic; using TeamAAS.Robot.Enums; using TeamAAS.Vision.Calibration.Models; namespace TeamAAS.Vision.Calibration.Interfaces { /// /// 标定信息管理 CRUD + 运行时像素→机器人坐标换算接口。 /// 实现类封装数据存储细节,并在 Dispose 中释放相关资源。 /// public interface ICalibrationService : IDisposable { /// 获取所有已知的校准信息,只读集合(不为 null,可为空)。 IReadOnlyCollection GetAllCalibrations(); /// 根据标识获取校准信息;不存在返回 null。 CalibrationInfo GetCalibration(Guid id); /// 新增或更新校准信息,返回保存后的实例。 CalibrationInfo AddOrUpdateCalibration(CalibrationInfo calib); /// 删除指定标识对应的校准信息;成功返回 true。 bool RemoveCalibration(Guid id); /// 从持久化存储加载所有校准信息,替换当前内存集合。 void LoadAll(); /// 将当前内存中的所有校准信息保存到持久化存储。 void SaveAll(); /// /// 校准转换:根据像素坐标与机器人当前坐标换算目标位姿。 /// /// 像素坐标(X, Y, angle)。 /// 机器人当前坐标 [X, Y, U]。 /// 标定配置。 /// 机器人品牌(影响角度符号等)。 (bool IsSucceed, double X, double Y, double U) ConvertPixelToPosition( (double X, double Y, double angle) pixelCoord, double[] robotCoord, CalibrationInfo calib, RobotBrand robotBrand = RobotBrand.Default); /// 校准转换:根据标定 ID 获取配置并换算目标位姿。 (bool IsSucceed, double X, double Y, double U) ConvertPixelToPosition( (double X, double Y, double angle) pixelCoord, double[] robotCoord, Guid calibId, RobotBrand robotBrand = RobotBrand.Default); } }