Initial commit
This commit is contained in:
@@ -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!;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user