ICalibrationService.cs 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. using System;
  2. using System.Collections.Generic;
  3. using TeamAAS.Robot.Enums;
  4. using TeamAAS.Vision.Calibration.Models;
  5. namespace TeamAAS.Vision.Calibration.Interfaces
  6. {
  7. /// <summary>
  8. /// 标定信息管理 CRUD + 运行时像素→机器人坐标换算接口。
  9. /// 实现类封装数据存储细节,并在 Dispose 中释放相关资源。
  10. /// </summary>
  11. public interface ICalibrationService : IDisposable
  12. {
  13. /// <summary>获取所有已知的校准信息,只读集合(不为 null,可为空)。</summary>
  14. IReadOnlyCollection<CalibrationInfo> GetAllCalibrations();
  15. /// <summary>根据标识获取校准信息;不存在返回 null。</summary>
  16. CalibrationInfo GetCalibration(Guid id);
  17. /// <summary>新增或更新校准信息,返回保存后的实例。</summary>
  18. CalibrationInfo AddOrUpdateCalibration(CalibrationInfo calib);
  19. /// <summary>删除指定标识对应的校准信息;成功返回 true。</summary>
  20. bool RemoveCalibration(Guid id);
  21. /// <summary>从持久化存储加载所有校准信息,替换当前内存集合。</summary>
  22. void LoadAll();
  23. /// <summary>将当前内存中的所有校准信息保存到持久化存储。</summary>
  24. void SaveAll();
  25. /// <summary>
  26. /// 校准转换:根据像素坐标与机器人当前坐标换算目标位姿。
  27. /// </summary>
  28. /// <param name="pixelCoord">像素坐标(X, Y, angle)。</param>
  29. /// <param name="robotCoord">机器人当前坐标 [X, Y, U]。</param>
  30. /// <param name="calib">标定配置。</param>
  31. /// <param name="robotBrand">机器人品牌(影响角度符号等)。</param>
  32. (bool IsSucceed, double X, double Y, double U) ConvertPixelToPosition(
  33. (double X, double Y, double angle) pixelCoord,
  34. double[] robotCoord,
  35. CalibrationInfo calib,
  36. RobotBrand robotBrand = RobotBrand.Default);
  37. /// <summary>校准转换:根据标定 ID 获取配置并换算目标位姿。</summary>
  38. (bool IsSucceed, double X, double Y, double U) ConvertPixelToPosition(
  39. (double X, double Y, double angle) pixelCoord,
  40. double[] robotCoord,
  41. Guid calibId,
  42. RobotBrand robotBrand = RobotBrand.Default);
  43. }
  44. }