Initial commit

This commit is contained in:
2026-07-03 16:31:37 +07:00
commit 899c7c637d
1939 changed files with 641750 additions and 0 deletions

View File

@@ -0,0 +1,170 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using RobotNet.VDA5050.Type;
namespace RobotNet10.MapManager.Data;
/// <summary>
/// Edge vehicle property - Vehicle-specific properties for edges
/// Maps to VDMA LIF: edge.vehicleTypeEdgeProperties[]
/// </summary>
[Table("EdgeVehicleProperties")]
public class EdgeVehicleProperty
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
/// <summary>
/// Edge reference
/// </summary>
[Required]
public Guid EdgeId { get; set; }
/// <summary>
/// Vehicle type reference
/// </summary>
[Required]
public Guid VehicleTypeId { get; set; }
/// <summary>
/// Vehicle orientation while traversing edge (VDMA LIF: vehicleOrientation) - Optional
/// In degrees, range: [0.0 ... 360.0]
/// </summary>
public double? VehicleOrientation { get; set; }
/// <summary>
/// Type of orientation (VDMA LIF: orientationType) - Optional
/// Values: GLOBAL, TANGENTIAL
/// </summary>
public OrientationType? OrientationType { get; set; }
/// <summary>
/// Is rotation allowed while on edge (VDMA LIF: rotationAllowed) - Optional
/// </summary>
public bool? RotationAllowed { get; set; }
/// <summary>
/// Rotation allowed at start node (VDMA LIF: rotationAtStartNodeAllowed) - Optional
/// Values: NONE, CCW, CW, BOTH
/// </summary>
public RotationDirection? RotationAtStartNodeAllowed { get; set; }
/// <summary>
/// Rotation allowed at end node (VDMA LIF: rotationAtEndNodeAllowed) - Optional
/// Values: NONE, CCW, CW, BOTH
/// </summary>
public RotationDirection? RotationAtEndNodeAllowed { get; set; }
/// <summary>
/// Maximum speed allowed on edge (VDMA LIF: maxSpeed) - Optional
/// In meters per second, range: [0.0 ... double.MaxValue]
/// </summary>
public double? MaxSpeed { get; set; }
/// <summary>
/// Maximum rotation speed allowed (VDMA LIF: maxRotationSpeed) - Optional
/// In radians per second, range: [0.0 ... double.MaxValue]
/// </summary>
public double? MaxRotationSpeed { get; set; }
/// <summary>
/// Minimum height of vehicle on edge (VDMA LIF: minHeight) - Optional
/// In meters, range: [0.0 ... double.MaxValue]
/// </summary>
public double? MinHeight { get; set; }
/// <summary>
/// Maximum height of vehicle on edge (VDMA LIF: maxHeight) - Optional
/// In meters, range: [0.0 ... double.MaxValue]
/// </summary>
public double? MaxHeight { get; set; }
/// <summary>
/// Can edge be traversed without load (VDMA LIF: loadRestriction.unloaded) - Optional
/// </summary>
public bool? LoadRestriction_Unloaded { get; set; }
/// <summary>
/// Can edge be traversed with load (VDMA LIF: loadRestriction.loaded) - Optional
/// </summary>
public bool? LoadRestriction_Loaded { get; set; }
/// <summary>
/// Load set names allowed on edge (VDMA LIF: loadRestriction.loadSetNames) - Optional
/// JSON array of strings: ["pallet", "box"]
/// </summary>
public string? LoadRestriction_LoadSetNames { get; set; }
/// <summary>
/// Trajectory degree (NURBS curve degree) - Optional
/// Values: 1 (linear), 2 (quadratic), 3 (cubic)
/// </summary>
public int? TrajectoryDegree { get; set; }
/// <summary>
/// Trajectory control point 1 X coordinate (meters) - Optional
/// Used for degree 2 and 3 curves
/// </summary>
public double? TrajectoryControlPoint1X { get; set; }
/// <summary>
/// Trajectory control point 1 Y coordinate (meters) - Optional
/// Used for degree 2 and 3 curves
/// </summary>
public double? TrajectoryControlPoint1Y { get; set; }
/// <summary>
/// Trajectory control point 2 X coordinate (meters) - Optional
/// Used for degree 3 curves only
/// </summary>
public double? TrajectoryControlPoint2X { get; set; }
/// <summary>
/// Trajectory control point 2 Y coordinate (meters) - Optional
/// Used for degree 3 curves only
/// </summary>
public double? TrajectoryControlPoint2Y { get; set; }
/// <summary>
/// Actions that vehicle can perform at this edge (VDMA LIF: actions) - Optional
/// JSON array format:
/// [
/// {
/// "actionType": "pick",
/// "actionDescription": "...",
/// "requirementType": "REQUIRED",
/// "blockingType": "HARD",
/// "actionParameters": [{"key": "...", "value": "..."}]
/// }
/// ]
/// </summary>
public string? Actions { get; set; }
/// <summary>
/// Corridor left width (meters) - Optional
/// Defines the width of the corridor to the left related to the trajectory
/// </summary>
public double? CorridorLeftWidth { get; set; }
/// <summary>
/// Corridor right width (meters) - Optional
/// Defines the width of the corridor to the right related to the trajectory
/// </summary>
public double? CorridorRightWidth { get; set; }
/// <summary>
/// Corridor reference point (VDA5050: corridorRefPoint) - Optional
/// Defines whether the boundaries are valid for the kinematic center or the contour of the vehicle
/// Values: KINEMATICCENTER, CONTOUR
/// </summary>
public CorridorRefPoint? CorridorRefPoint { get; set; }
// Navigation properties
[ForeignKey(nameof(EdgeId))]
public virtual Edge Edge { get; set; } = null!;
[ForeignKey(nameof(VehicleTypeId))]
public virtual VehicleType VehicleType { get; set; } = null!;
}