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,24 @@
using RobotNet.VDA5050.Type;
using System.ComponentModel.DataAnnotations;
using System.Text.Json.Serialization;
namespace RobotNet.VDA5050.Factsheet;
public class ActionParameter
{
[Required]
[JsonPropertyName("key")]
public string Key { get; set; } = string.Empty;
[Required]
[JsonPropertyName("valueDataType")]
[JsonConverter(typeof(JsonStringEnumConverter))]
public ValueDataType ValueDataType { get; set; }
[JsonPropertyName("description")]
public string Description { get; set; } = string.Empty;
[JsonPropertyName("isOptional")]
public bool IsOptional { get; set; }
}

View File

@@ -0,0 +1,30 @@
using RobotNet.VDA5050.Type;
using System.ComponentModel.DataAnnotations;
using System.Text.Json.Serialization;
namespace RobotNet.VDA5050.Factsheet;
public class AgvAction
{
[Required]
[JsonPropertyName("actionType")]
public string ActionType { get; set; } = string.Empty;
[JsonPropertyName("actionDescription")]
public string ActionDescription { get; set; } = string.Empty;
[Required]
[JsonPropertyName("actionScopes")]
[JsonConverter(typeof(JsonStringEnumConverter))]
public ActionScope[] ActionScopes { get; set; } = [];
[JsonPropertyName("actionParameters")]
public ActionParameter[] ActionParameters { get; set; } = [];
[JsonPropertyName("resultDescription")]
public string ResultDescription { get; set; } = string.Empty;
[JsonPropertyName("blockingTypes")]
[JsonConverter(typeof(JsonStringEnumConverter))]
public BlockingType[] BlockingTypes { get; set; } = [];
}

View File

@@ -0,0 +1,16 @@
using System.Text.Json.Serialization;
namespace RobotNet.VDA5050.Factsheet;
public class AgvGeometry
{
[JsonPropertyName("wheelDefinitions")]
public WheelDefinition[] WheelDefinitions { get; set; } = [];
[JsonPropertyName("envelopes2d")]
public Envelopes2d[] Envelopes2d { get; set; } = [];
[JsonPropertyName("envelopes3d")]
public Envelopes3d[] Envelopes3d { get; set; } = [];
}

View File

@@ -0,0 +1,23 @@
using System.ComponentModel.DataAnnotations;
using System.Text.Json.Serialization;
namespace RobotNet.VDA5050.Factsheet;
public class BoundingBoxReference
{
[Required]
[JsonPropertyName("x")]
public double X { get; set; }
[Required]
[JsonPropertyName("y")]
public double Y { get; set; }
[Required]
[JsonPropertyName("z")]
public double Z { get; set; }
[JsonPropertyName("theta")]
public double Theta { get; set; }
}

View File

@@ -0,0 +1,29 @@
using System.ComponentModel.DataAnnotations;
using System.Text.Json.Serialization;
namespace RobotNet.VDA5050.Factsheet;
public class PolygonPoint
{
[Required]
[JsonPropertyName("x")]
public double X { get; set; }
[JsonPropertyName("y")]
[Required]
public double Y { get; set; }
}
public class Envelopes2d
{
[JsonPropertyName("set")]
[Required]
public string Set { get; set; } = string.Empty;
[JsonPropertyName("polygonPoints")]
[Required]
public PolygonPoint[] PolygonPoints { get; set; } = [];
[JsonPropertyName("description")]
public string Description { get; set; } = string.Empty;
}

View File

@@ -0,0 +1,24 @@
using System.ComponentModel.DataAnnotations;
using System.Text.Json.Serialization;
namespace RobotNet.VDA5050.Factsheet;
public class Envelopes3d
{
[Required]
[JsonPropertyName("set")]
public string Set { get; set; } = string.Empty;
[Required]
[JsonPropertyName("format")]
public string Format { get; set; } = string.Empty;
[JsonPropertyName("data")]
public object? Data { get; set; }
[JsonPropertyName("url")]
public string Url { get; set; } = string.Empty;
[JsonPropertyName("description")]
public string Description { get; set; } = string.Empty;
}

View File

@@ -0,0 +1,54 @@
using System.ComponentModel.DataAnnotations;
using System.Text.Json.Serialization;
namespace RobotNet.VDA5050.Factsheet;
public class FactSheetMsg
{
[JsonPropertyName("headerId")]
public uint HeaderId { get; set; }
[JsonPropertyName("timestamp")]
[JsonConverter(typeof(DateTimeConverter))]
public DateTime Timestamp { get; set; }
[Required]
[JsonPropertyName("version")]
public string Version { get; set; } = string.Empty;
[Required]
[JsonPropertyName("manufacturer")]
public string Manufacturer { get; set; } = string.Empty;
[Required]
[JsonPropertyName("serialNumber")]
public string SerialNumber { get; set; } = string.Empty;
[Required]
[JsonPropertyName("typeSpecification")]
public TypeSpecification TypeSpecification { get; set; } = new();
[Required]
[JsonPropertyName("physicalParameters")]
public PhysicalParameter PhysicalParameters { get; set; } = new();
[Required]
[JsonPropertyName("protocolLimits")]
public ProtocolLimits ProtocolLimits { get; set; } = new();
[Required]
[JsonPropertyName("protocolFeatures")]
public ProtocolFeatures ProtocolFeatures { get; set; } = new();
[Required]
[JsonPropertyName("agvGeometry")]
public AgvGeometry AgvGeometry { get; set; } = new();
[Required]
[JsonPropertyName("loadSpecification")]
public LoadSpecification LoadSpecification { get; set; } = new();
[JsonPropertyName("vehicleConfig")]
public VehicleConfig VehicleConfig { get; set; } = new();
}

View File

@@ -0,0 +1,19 @@
using System.ComponentModel.DataAnnotations;
using System.Text.Json.Serialization;
namespace RobotNet.VDA5050.Factsheet;
public class LoadDimensions
{
[Required]
[JsonPropertyName("length")]
public double Length { get; set; }
[Required]
[JsonPropertyName("width")]
public double Width { get; set; }
[JsonPropertyName("height")]
public double Height { get; set; }
}

View File

@@ -0,0 +1,61 @@
using System.Text.Json.Serialization;
namespace RobotNet.VDA5050.Factsheet;
public class LoadSet
{
[JsonPropertyName("setName")]
public string SetName { get; set; } = string.Empty;
[JsonPropertyName("loadType")]
public string LoadType { get; set; } = string.Empty;
[JsonPropertyName("loadPositions")]
public string[] LoadPositions { get; set; } = [];
[JsonPropertyName("boundingBoxReference")]
public BoundingBoxReference BoundingBoxReference { get; set; } = new();
[JsonPropertyName("loadDimensions")]
public LoadDimensions LoadDimensions { get; set; } = new();
[JsonPropertyName("maxWeight")]
public double MaxWeigth { get; set; }
[JsonPropertyName("minLoadhandlingHeight")]
public double MinLoadhandlingHeight { get; set; }
[JsonPropertyName("maxLoadhandlingHeight")]
public double MaxLoadhandlingHeight { get; set; }
[JsonPropertyName("minLoadhandlingDepth")]
public double MinLoadhandlingDepth { get; set; }
[JsonPropertyName("maxLoadhandlingDepth")]
public double MaxLoadhandlingDepth { get; set; }
[JsonPropertyName("minLoadhandlingTilt")]
public double MinLoadhandlingTilt { get; set; }
[JsonPropertyName("maxLoadhandlingTilt")]
public double MaxLoadhandlingTilt { get; set; }
[JsonPropertyName("agvSpeedLimit")]
public double AgvSpeedLimit { get; set; }
[JsonPropertyName("agvAccelerationLimit")]
public double AgvAccelerationLimit { get; set; }
[JsonPropertyName("agvDecelerationLimit")]
public double AgvDecelerationLimit { get; set; }
[JsonPropertyName("pickTime")]
public double PickTime { get; set; }
[JsonPropertyName("dropTime")]
public double DropTime { get; set; }
[JsonPropertyName("description")]
public string Description { get; set; } = string.Empty;
}

View File

@@ -0,0 +1,13 @@
using System.Text.Json.Serialization;
namespace RobotNet.VDA5050.Factsheet;
public class LoadSpecification
{
[JsonPropertyName("loadPositions")]
public string[] LoadPositions { get; set; } = [];
[JsonPropertyName("loadSets")]
public LoadSet[] LoadSets { get; set; } = [];
}

View File

@@ -0,0 +1,95 @@
using System.Text.Json.Serialization;
namespace RobotNet.VDA5050.Factsheet;
public class OrderMaxArrayLens
{
[JsonPropertyName("nodes")]
public int Nodes { get; set; }
[JsonPropertyName("edges")]
public int Edges { get; set; }
}
public class NodeMaxArrayLens
{
[JsonPropertyName("actions")]
public int Actions { get; set; }
}
public class EdgeMaxArrayLens
{
[JsonPropertyName("actions")]
public int Actions { get; set; }
}
public class ActionMaxArrayLens
{
[JsonPropertyName("actionsParameters")]
public int ActionsParameters { get; set; }
}
public class TrajectoryMaxArrayLens
{
[JsonPropertyName("knotVector")]
public int KnotVector { get; set; }
[JsonPropertyName("controlPoints")]
public int ControlPoints { get; set; }
}
public class StateMaxArrayLens
{
[JsonPropertyName("nodeStates")]
public int NodeStates { get; set; }
[JsonPropertyName("edgeStates")]
public int EdgeStates { get; set; }
[JsonPropertyName("loads")]
public int Loads { get; set; }
[JsonPropertyName("actionStates")]
public int ActionStates { get; set; }
[JsonPropertyName("errors")]
public int Errors { get; set; }
[JsonPropertyName("information")]
public int Information { get; set; }
[JsonPropertyName("errorReferences")]
public int ErrorReferences { get; set; }
}
public class InformationMaxArrayLens
{
[JsonPropertyName("infoReferences")]
public int InfoReferences { get; set; }
}
public class MaxArrayLens
{
[JsonPropertyName("order")]
public OrderMaxArrayLens Order { get; set; } = new();
[JsonPropertyName("node")]
public NodeMaxArrayLens Node { get; set; } = new();
[JsonPropertyName("edge")]
public EdgeMaxArrayLens Edge { get; set; } = new();
[JsonPropertyName("action")]
public ActionMaxArrayLens Action { get; set; } = new();
[JsonPropertyName("instantActions")]
public int InstantActions { get; set; }
[JsonPropertyName("trajectory")]
public TrajectoryMaxArrayLens Trajectory { get; set; } = new();
[JsonPropertyName("state")]
public StateMaxArrayLens State { get; set; } = new();
[JsonPropertyName("information")]
public InformationMaxArrayLens Information { get; set; } = new();
}

View File

@@ -0,0 +1,27 @@
using System.Text.Json.Serialization;
namespace RobotNet.VDA5050.Factsheet;
public class MaxStringLens
{
[JsonPropertyName("msgLen")]
public int MsgLen { get; set; }
[JsonPropertyName("topicSerialLen")]
public int TopicSerialLen { get; set; }
[JsonPropertyName("topicElemLen")]
public int TopicElemLen { get; set; }
[JsonPropertyName("idLen")]
public int IdLen { get; set; }
[JsonPropertyName("idNumericalOnly")]
public bool IdNumericalOnly { get; set; }
[JsonPropertyName("enumLen")]
public int EnumLen { get; set; }
[JsonPropertyName("loadIdLen")]
public int LoadIdLen { get; set; }
}

View File

@@ -0,0 +1,21 @@
using RobotNet.VDA5050.Type;
using System.ComponentModel.DataAnnotations;
using System.Text.Json.Serialization;
namespace RobotNet.VDA5050.Factsheet;
public class OptionalParameter
{
[Required]
[JsonPropertyName("parameter")]
public string Parameter { get; set; } = string.Empty;
[Required]
[JsonPropertyName("support")]
[JsonConverter(typeof(JsonStringEnumConverter))]
public Support Support { get; set; }
[JsonPropertyName("description")]
public string Description { get; set; } = string.Empty;
}

View File

@@ -0,0 +1,44 @@
using System.ComponentModel.DataAnnotations;
using System.Text.Json.Serialization;
namespace RobotNet.VDA5050.Factsheet;
public class PhysicalParameter
{
[Required]
[JsonPropertyName("speedMin")]
public double SpeedMin { get; set; }
[Required]
[JsonPropertyName("speedMax")]
public double SpeedMax { get; set; }
[JsonPropertyName("angularSpeedMin")]
public double AngularSpeedMin { get; set; }
[JsonPropertyName("angularSpeedMax")]
public double AngularSpeedMax { get; set; }
[Required]
[JsonPropertyName("accelerationMax")]
public double AccelerationMax { get; set; }
[Required]
[JsonPropertyName("decelerationMax")]
public double DecelerationMax { get; set; }
[JsonPropertyName("heightMin")]
public double HeightMin { get; set; }
[Required]
[JsonPropertyName("heightMax")]
public double HeightMax { get; set; }
[Required]
[JsonPropertyName("width")]
public double Width { get; set; }
[Required]
[JsonPropertyName("length")]
public double Length { get; set; }
}

View File

@@ -0,0 +1,16 @@
using System.ComponentModel.DataAnnotations;
using System.Text.Json.Serialization;
namespace RobotNet.VDA5050.Factsheet;
public class ProtocolFeatures
{
[Required]
[JsonPropertyName("optionalParameters")]
public OptionalParameter[] OptionalParameters { get; set; } = [];
[Required]
[JsonPropertyName("agvActions")]
public AgvAction[] AgvActions { get; set; } = [];
}

View File

@@ -0,0 +1,19 @@
using System.ComponentModel.DataAnnotations;
using System.Text.Json.Serialization;
namespace RobotNet.VDA5050.Factsheet;
public class ProtocolLimits
{
[Required]
[JsonPropertyName("maxStringLens")]
public MaxStringLens MaxStringLens { get; set; } = new();
[Required]
[JsonPropertyName("maxArrayLens")]
public MaxArrayLens MaxArrayLens { get; set; } = new();
[Required]
[JsonPropertyName("timing")]
public Timing Timing { get; set; } = new();
}

View File

@@ -0,0 +1,21 @@
using System.ComponentModel.DataAnnotations;
using System.Text.Json.Serialization;
namespace RobotNet.VDA5050.Factsheet;
public class Timing
{
[Required]
[JsonPropertyName("minOrderInterval")]
public double MinOrderInterval { get; set; }
[Required]
[JsonPropertyName("minStateInterval")]
public double MinStateInterval { get; set; }
[JsonPropertyName("defaultStateInterval")]
public double DefaultStateInterval { get; set; }
[JsonPropertyName("visualizationInterval")]
public double VisualizationInterval { get; set; }
}

View File

@@ -0,0 +1,39 @@
using RobotNet.VDA5050.Type;
using System.ComponentModel.DataAnnotations;
using System.Text.Json.Serialization;
namespace RobotNet.VDA5050.Factsheet;
public class TypeSpecification
{
[Required]
[JsonPropertyName("seriesName")]
public string SeriesName { get; set; } = string.Empty;
[JsonPropertyName("seriesDescription")]
public string SeriesDescription { get; set; } = string.Empty;
[Required]
[JsonPropertyName("agvKinematic")]
[JsonConverter(typeof(JsonStringEnumConverter))]
public AgvKinematic AgvKinematic { get; set; }
[Required]
[JsonPropertyName("agvClass")]
[JsonConverter(typeof(JsonStringEnumConverter))]
public AgvClass AgvClass { get; set; }
[Required]
[JsonPropertyName("maxLoadMass")]
public double MaxLoadMass { get; set; }
[Required]
[JsonPropertyName("localizationTypes")]
[JsonConverter(typeof(JsonStringEnumConverter))]
public LocalizationType[] LocalizationTypes { get; set; } = [];
[Required]
[JsonPropertyName("navigationTypes")]
[JsonConverter(typeof(JsonStringEnumConverter))]
public NavigationType[] NavigationTypes { get; set; } = [];
}

View File

@@ -0,0 +1,39 @@
using System.Text.Json.Serialization;
namespace RobotNet.VDA5050.Factsheet;
public class Version
{
[JsonPropertyName("key")]
public string Key { get; set; } = string.Empty;
[JsonPropertyName("value")]
public string Value { get; set; } = string.Empty;
}
public class Network
{
[JsonPropertyName("dnsServers")]
public string[] DnsServers { get; set; } = [];
[JsonPropertyName("ntpServers")]
public string[] NtpServers { get; set; } = [];
[JsonPropertyName("localIpAddress")]
public string LocalIpAddress { get; set; } = string.Empty;
[JsonPropertyName("netmask")]
public string Netmask { get; set; } = string.Empty;
[JsonPropertyName("defaultGateway")]
public string DefaultGateway { get; set; } = string.Empty;
}
public class VehicleConfig
{
[JsonPropertyName("versions")]
public Version[] Versions { get; set; } = [];
[JsonPropertyName("network")]
public Network Network { get; set; } = new();
}

View File

@@ -0,0 +1,53 @@
using RobotNet.VDA5050.Type;
using System.ComponentModel.DataAnnotations;
using System.Text.Json.Serialization;
namespace RobotNet.VDA5050.Factsheet;
public class WheelDefinitionsPosition
{
[Required]
[JsonPropertyName("x")]
public double X { get; set; }
[JsonPropertyName("y")]
[Required]
public double Y { get; set; }
[JsonPropertyName("theta")]
public double Theta { get; set; }
}
public class WheelDefinition
{
[Required]
[JsonPropertyName("type")]
[JsonConverter(typeof(JsonStringEnumConverter))]
public WheelDefinitionsType Type { get; set; }
[Required]
[JsonPropertyName("isActiveDriven")]
public bool IsActiveDriven { get; set; }
[Required]
[JsonPropertyName("isActiveSteered")]
public bool IsActiveSteered { get; set; }
[Required]
[JsonPropertyName("position")]
public WheelDefinitionsPosition Position { get; set; } = new();
[Required]
[JsonPropertyName("diameter")]
public double Diameter { get; set; }
[Required]
[JsonPropertyName("width")]
public double Width { get; set; }
[JsonPropertyName("centerDisplacement")]
public double CenterDisplacement { get; set; }
[JsonPropertyName("constraints")]
public string Constraints { get; set; } = string.Empty;
}