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);
}
}