using RobotNet.VDA5050.Order; using RobotNet10.RobotApp.Detection; using RobotNet10.RobotApp.Shared.Enums; namespace RobotNet10.RobotApp.Interfaces; public enum NavigationState { None, Idle, Initializing, Waiting, Moving, Rotating, Docking, FinePositioning, MovingStraight, Completed, Canceled, Paused, Error, SafetyStop } public interface INavigation { event Action? OnNavigationFinished; bool IsReady { get; } bool Driving { get; } double VelocityX { get; } double VelocityY { get; } double Omega { get; } NavigationState State { get; } void Move(OrderMsg order, bool hasLoad = false); void MoveStraight(double x, double y, bool hasLoad = false, RobotDirection? direction = null); void Rotate(double angle); void DockTo(IDetectSession session, bool hasLoad = false, RobotDirection? direction = null); void Pause(); void Resume(); void UpdateOrder(string lastBaseNodeId); void RefreshOrder(Node[] nodes, Edge[] edges); void Refresh(); void SafetyStop(); void CancelMovement(); void SetSpeed(double speed); void Start(); void Stop(); }