Initial commit

This commit is contained in:
2026-07-13 09:25:40 +07:00
parent c08ff54676
commit bccfb156d7
1938 changed files with 641646 additions and 0 deletions

View File

@@ -0,0 +1,74 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace RobotNet10.MapManager.Data;
/// <summary>
/// Node vehicle property - Vehicle-specific properties for nodes
/// Maps to VDMA LIF: node.vehicleTypeNodeProperties[]
/// </summary>
[Table("NodeVehicleProperties")]
public class NodeVehicleProperty
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
/// <summary>
/// Node reference
/// </summary>
[Required]
public Guid NodeId { get; set; }
/// <summary>
/// Vehicle type reference
/// </summary>
[Required]
public Guid VehicleTypeId { get; set; }
/// <summary>
/// Absolute orientation of vehicle on node (VDMA LIF: theta) - Optional
/// In radians, range: [-Pi ... Pi]
/// </summary>
public double? Theta { get; set; }
/// <summary>
/// Actions that vehicle can perform at this node (VDMA LIF: actions) - Optional
/// JSON array format:
/// [
/// {
/// "actionType": "pick",
/// "actionDescription": "...",
/// "requirementType": "REQUIRED",
/// "blockingType": "HARD",
/// "actionParameters": [{"key": "...", "value": "..."}]
/// }
/// ]
/// </summary>
public string? Actions { get; set; }
/// <summary>
/// Allowed deviation radius in meters (VDA5050: allowedDeviationXY) - Optional
/// Indicates how exact an AGV has to drive over a node in order for it to count as traversed.
/// If = 0: no deviation is allowed (no deviation means within the normal tolerance of the AGV manufacturer).
/// If > 0: allowed deviation-radius in meters. If the AGV passes a node within the deviation-radius, the node is considered to have been traversed.
/// Minimum: 0
/// </summary>
public double? AllowedDeviationXY { get; set; }
/// <summary>
/// Allowed deviation of theta angle in radians (VDA5050: allowedDeviationTheta) - Optional
/// Indicates how big the deviation of theta angle can be.
/// The lowest acceptable angle is theta - allowedDeviationTheta and the highest acceptable angle is theta + allowedDeviationTheta.
/// Range: [0.0 ... 3.141592654] (0 to Pi)
/// </summary>
public double? AllowedDeviationTheta { get; set; }
// Navigation properties
[ForeignKey(nameof(NodeId))]
public virtual Node Node { get; set; } = null!;
[ForeignKey(nameof(VehicleTypeId))]
public virtual VehicleType VehicleType { get; set; } = null!;
}