94 lines
2.9 KiB
C#
94 lines
2.9 KiB
C#
using RobotNet10.Shared.Sensor;
|
|
|
|
namespace RobotNet10.RobotApp.Devices;
|
|
|
|
/// <summary>
|
|
/// Interface cho thiết bị LiDAR trong robot AGV (common interface for all Lidar brands)
|
|
/// Không bao gồm các chức năng kết nối vì đã được xử lý trong DeviceBase
|
|
/// </summary>
|
|
public interface ILidar
|
|
{
|
|
// Scan Data Properties (common for all Lidar brands)
|
|
|
|
/// <summary>
|
|
/// Measurement data hiện tại (scan points) - sử dụng LaserScan từ sensor_msgs
|
|
/// </summary>
|
|
LaserScan? CurrentMeasurementData { get; }
|
|
|
|
/// <summary>
|
|
/// Timestamp của scan data gần nhất
|
|
/// </summary>
|
|
DateTime? LastScanDataTimestamp { get; }
|
|
|
|
// Device Specifications (common for all Lidar brands)
|
|
|
|
/// <summary>
|
|
/// Góc quét tối thiểu (radian) - góc bắt đầu của phạm vi quét
|
|
/// </summary>
|
|
double MinAngleRad { get; }
|
|
|
|
/// <summary>
|
|
/// Góc quét tối đa (radian) - góc kết thúc của phạm vi quét
|
|
/// </summary>
|
|
double MaxAngleRad { get; }
|
|
|
|
/// <summary>
|
|
/// Tầm quét tối thiểu (mét) - khoảng cách gần nhất có thể đo được
|
|
/// </summary>
|
|
double MinRangeM { get; }
|
|
|
|
/// <summary>
|
|
/// Tầm quét tối đa (mét) - khoảng cách xa nhất có thể đo được
|
|
/// </summary>
|
|
double MaxRangeM { get; }
|
|
|
|
/// <summary>
|
|
/// Độ phân giải góc (radian) - góc giữa hai điểm scan liên tiếp
|
|
/// </summary>
|
|
double? AngularResolutionRad { get; }
|
|
|
|
/// <summary>
|
|
/// Tần số quét (Hz) - số lần quét trong một giây
|
|
/// </summary>
|
|
double? ScanFrequencyHz { get; }
|
|
|
|
/// <summary>
|
|
/// Góc quét tổng (Field of View - FOV) (radian) - tổng góc quét của thiết bị
|
|
/// </summary>
|
|
double FieldOfViewRad { get; }
|
|
|
|
/// <summary>
|
|
/// Hỗ trợ đo intensity (cường độ phản xạ) hay không
|
|
/// </summary>
|
|
bool SupportsIntensity { get; }
|
|
|
|
/// <summary>
|
|
/// Độ chính xác đo khoảng cách (mét) - sai số đo khoảng cách
|
|
/// </summary>
|
|
double? AccuracyM { get; }
|
|
|
|
// Events
|
|
|
|
/// <summary>
|
|
/// Event được kích hoạt khi có dữ liệu scan mới
|
|
/// </summary>
|
|
event EventHandler<LidarScanDataEventArgs>? ScanDataReceived;
|
|
}
|
|
|
|
/// <summary>
|
|
/// EventArgs cho event ScanDataReceived - common structure for all Lidar brands
|
|
/// </summary>
|
|
public class LidarScanDataEventArgs(DateTime timestamp, LaserScan measurementData) : EventArgs
|
|
{
|
|
/// <summary>
|
|
/// Timestamp khi scan data được nhận
|
|
/// </summary>
|
|
public DateTime Timestamp { get; init; } = timestamp;
|
|
|
|
/// <summary>
|
|
/// Measurement data từ scan (sử dụng LaserScan từ sensor_msgs)
|
|
/// </summary>
|
|
public LaserScan MeasurementData { get; init; } = measurementData;
|
|
}
|
|
|