75 lines
2.6 KiB
C#
75 lines
2.6 KiB
C#
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!;
|
|
}
|
|
|