using RobotNet10.Shared.Geometry;
namespace RobotNet10.RobotApp.Motion;
///
/// Interface cho Odometry Estimator - tính toán tọa độ odometry từ vị trí các bánh xe
///
public interface IOdometryEstimator
{
///
/// Lấy pose hiện tại của robot (odometry)
///
Pose CurrentPose { get; }
///
/// Tần suất cập nhật odometry (Hz), dùng cho UI/telemetry tương thích ngược.
///
double UpdateFrequency => 0;
///
/// Reset odometry về vị trí ban đầu
///
void Reset();
///
/// Reset odometry về một pose cụ thể
///
/// Pose để reset về
void Reset(Pose pose);
///
/// Alias tương thích ngược cho các call site cũ.
///
void ResetOdometry() => Reset();
///
/// Alias tương thích ngược cho các call site cũ.
///
/// Pose để reset về
void ResetOdometry(Pose pose) => Reset(pose);
///
/// Cập nhật odometry từ vị trí encoder của các bánh xe
///
/// Vị trí encoder bánh trái (encoder counts)
/// Vị trí encoder bánh phải (encoder counts)
void Update(int leftWheelPosition, int rightWheelPosition);
}