namespace RobotNet10.FleetManager.Script; /// /// Service interface for managing map layouts, nodes, and stations. /// Provides methods to retrieve map elements (nodes, stations) and actions from the layout database. /// public interface ILayoutManager { /// /// Retrieves a station from the specified map by its name. /// /// The identifier of the map/layout. Cannot be null or empty. /// The version of the map. Cannot be null or empty. /// The level identifier within the map. Cannot be null or empty. /// The name of the station to retrieve. Cannot be null or empty. /// /// A task that represents the asynchronous operation. /// The task result contains the matching the specified name within the given map, /// or throws an exception if no such station exists. /// Task GetStation(string layout, string version, string level, string name); /// /// Retrieves a node from the specified map by its name. /// /// /// This method performs an asynchronous operation to locate a node within the specified map. /// Ensure that the map and name parameters are valid and non-empty before calling this method. /// /// The identifier of the map from which to retrieve the node. Cannot be null or empty. /// The version of the map. Cannot be null or empty. /// The level identifier within the map. Cannot be null or empty. /// The name of the node to retrieve. Cannot be null or empty. /// /// A task that represents the asynchronous operation. /// The task result contains the matching the specified name within the given map, /// or throws an exception if no such node exists. /// Task GetNode(string layout, string version, string level, string name); /// /// Retrieves a VDA5050 action configuration for a specific element (node or station) in the map. /// /// The identifier of the map/layout. Cannot be null or empty. /// The version of the map. Cannot be null or empty. /// The level identifier within the map. Cannot be null or empty. /// The name of the element (node or station) for which to retrieve the action. Cannot be null or empty. /// The identifier of the robot that will execute the action. Used for robot-specific action configuration. Cannot be null or empty. /// /// A task that represents the asynchronous operation. /// The task result contains the VDA5050 configured for the specified element and robot, /// or throws an exception if no such action exists. /// Task GetAction(string layout, string version, string level, string name, string robotId); } /// /// Represents a node (waypoint) in the map layout. /// Nodes define points where robots can navigate to or pass through. /// Conforms to VDMA LIF (Logistics Interface Format) standard. /// public interface INode { /// /// Gets or sets the unique identifier of the node. /// public Guid Id { get; set; } /// /// Gets or sets the parent map identifier that contains this node. /// public Guid MapId { get; set; } /// /// Gets or sets the node identifier (VDMA LIF: nodeId). /// This is a required field and must be unique within the level. /// public string NodeId { get; set; } /// /// Gets or sets the node name (VDMA LIF: nodeName). /// This is an optional human-readable name for the node. /// public string? NodeName { get; set; } /// /// Gets or sets the node description (VDMA LIF: nodeDescription). /// This is an optional description providing additional information about the node. /// public string? NodeDescription { get; set; } /// /// Gets or sets the X coordinate of the node position in meters (VDMA LIF: nodePosition.x). /// This is a required field. /// public double X { get; set; } /// /// Gets or sets the Y coordinate of the node position in meters (VDMA LIF: nodePosition.y). /// This is a required field. /// public double Y { get; set; } } /// /// Represents a station (workstation or loading/unloading point) in the map layout. /// Stations are locations where robots can perform pick or drop operations. /// Conforms to VDMA LIF (Logistics Interface Format) standard. /// public interface IStation { /// /// Gets the unique identifier of the station. /// Guid Id { get; } /// /// Gets the identifier of the map that contains this station. /// Guid MapId { get; } /// /// Gets the identifiers of the nodes that this station is linked to. /// A station can be associated with one or more nodes for navigation purposes. /// Guid[] NodeId { get; } /// /// Gets the station identifier (VDMA LIF: stationId). /// This is a required field and must be unique within the level. /// public string StationId { get; } /// /// Gets the station name (VDMA LIF: stationName). /// This is an optional human-readable name for the station. /// public string? StationName { get; } /// /// Gets the station description (VDMA LIF: stationDescription). /// This is an optional description providing additional information about the station. /// public string? StationDescription { get; } /// /// Gets the station height in meters (VDMA LIF: stationHeight). /// This is an optional field indicating the height of the station platform. /// public double? StationHeight { get; } /// /// Gets the X coordinate of the station position in meters (VDMA LIF: stationPosition.x). /// This is a required field. /// public double X { get; } /// /// Gets the Y coordinate of the station position in meters (VDMA LIF: stationPosition.y). /// This is a required field. /// public double Y { get; } /// /// Gets the theta orientation angle in radians (VDMA LIF: stationPosition.theta). /// This is an optional field indicating the orientation of the station. /// Range: [-Pi ... Pi] /// public double? Theta { get; } }