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,404 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "LIF Layout Interchange Format",
"type": "object",
"properties": {
"metaInformation": {
"type": "object",
"description": "Contains metadata about the project and the LIF file.",
"properties": {
"projectIdentification": {
"type": "string",
"description": "Human-readable name of the project (e.g., for display purposes)."
},
"creator": {
"type": "string",
"description": "Creator of the LIF file (e.g., name of company or person)."
},
"exportTimestamp": {
"type": "string",
"format": "date-time",
"description": "The timestamp at which this LIF file was created/updated/modified. Format is ISO8601 in UTC."
},
"lifVersion": {
"type": "string",
"description": "Version of the LIF file format. Follows semantic versioning (Major.Minor.Patch)."
}
},
"required": [
"projectIdentification",
"creator",
"exportTimestamp",
"lifVersion"
]
},
"layouts": {
"type": "array",
"description": "Collection of layouts used in the facility by the driverless transport system. All layouts refer to the same global origin.",
"items": {
"type": "object",
"properties": {
"layoutId": {
"type": "string",
"description": "Unique identifier for the layout."
},
"layoutName": {
"type": "string",
"description": "Name of the layout."
},
"layoutVersion": {
"type": "string",
"description": "Version number of the layout. It is suggested that this be an integer, represented as a string, incremented with each change, starting at 1."
},
"layoutLevelId": {
"type": "string",
"description": "Unique identifier for the layout level."
},
"layoutDescription": {
"type": "string",
"description": "Description of the layout. *Optional*."
},
"nodes": {
"type": "array",
"description": "List of nodes in the layout. Nodes are locations where vehicles can navigate to.",
"items": {
"type": "object",
"properties": {
"nodeId": {
"type": "string",
"description": "Unique identifier for the node."
},
"nodeName": {
"type": "string",
"description": "Name of the node. *Optional*."
},
"nodeDescription": {
"type": "string",
"description": "Description of the node. *Optional*."
},
"mapId": {
"type": "string",
"description": "Identifier for the map that this node belongs to. *Optional*."
},
"nodePosition": {
"type": "object",
"description": "Position of the node on the map (in meters).",
"properties": {
"x": {
"type": "number",
"description": "X coordinate of the node in meters. Range: [float64.min ... float64.max]"
},
"y": {
"type": "number",
"description": "Y coordinate of the node in meters. Range: [float64.min... float64.max]"
}
},
"required": [
"x",
"y"
]
},
"vehicleTypeNodeProperties": {
"type": "array",
"description": "Vehicle-specific properties related to the node.",
"items": {
"type": "object",
"properties": {
"vehicleTypeId": {
"type": "string",
"description": "Identifier for the vehicle type."
},
"theta": {
"type": "number",
"description": "Absolute orientation of the vehicle on the node in reference to the global origins rotation. Range: [-Pi ... Pi]"
},
"actions": {
"type": "array",
"description": "List of actions that the vehicle can perform at the node. *Optional*.",
"items": {
"type": "object",
"properties": {
"actionType": {
"type": "string",
"description": "Type of action (e.g., move, load, unload)."
},
"actionDescription": {
"type": "string",
"description": "Description of the action. *Optional*."
},
"required": {
"type": "boolean",
"description": "Whether the action is mandatory."
},
"blockingType": {
"type": "string",
"description": "Specifies if the action is blocking (HARD or SOFT)."
},
"actionParameters": {
"type": "array",
"description": "Parameters associated with the action. *Optional*.",
"items": {
"type": "object",
"properties": {
"key": {
"type": "string",
"description": "Key of the action parameter."
},
"value": {
"type": "string",
"description": "Value of the action parameter."
}
},
"required": [
"key",
"value"
]
}
}
},
"required": [
"actionType",
"blockingType"
]
}
}
},
"required": [
"vehicleTypeId"
]
}
}
},
"required": [
"nodeId",
"nodePosition",
"vehicleTypeNodeProperties"
]
}
},
"edges": {
"type": "array",
"description": "List of edges in the layout. Edges represent paths between nodes.",
"items": {
"type": "object",
"properties": {
"edgeId": {
"type": "string",
"description": "Unique identifier for the edge."
},
"startNodeId": {
"type": "string",
"description": "ID of the starting node for this edge."
},
"endNodeId": {
"type": "string",
"description": "ID of the ending node for this edge."
},
"vehicleTypeEdgeProperties": {
"type": "array",
"description": "Vehicle-specific properties for the edge.",
"items": {
"type": "object",
"properties": {
"vehicleTypeId": {
"type": "string",
"description": "Identifier for the vehicle type."
},
"vehicleOrientation": {
"type": "number",
"description": "Orientation of the vehicle while traversing the edge, in degrees. Range: [0.0 ... 360.0]"
},
"orientationType": {
"type": "string",
"description": "Type of orientation (e.g., TANGENTIAL)."
},
"rotationAllowed": {
"type": "boolean",
"description": "Indicates if rotation is allowed while on the edge. *Optional*."
},
"rotationAtStartNodeAllowed": {
"type": "string",
"description": "Specifies if rotation is allowed at the start node. *Optional*."
},
"rotationAtEndNodeAllowed": {
"type": "string",
"description": "Specifies if rotation is allowed at the end node. *Optional*."
},
"maxSpeed": {
"type": "number",
"description": "Maximum speed allowed on this edge in meters per second. Range: [0.0 ... float64.max]"
},
"maxRotationSpeed": {
"type": "number",
"description": "Maximum rotation speed allowed on this edge in radians per second. *Optional*. Range: [0.0 ... float64.max]"
},
"minHeight": {
"type": "number",
"description": "Minimum height of the vehicle on this edge in meters. *Optional*. Range: [0.0 ... float64.max]"
},
"maxHeight": {
"type": "number",
"description": "Maximum height of the vehicle on this edge in meters. *Optional*. Range: [0.0 ... float64.max]"
},
"loadRestriction": {
"type": "object",
"description": "Load restrictions for this edge. *Optional*.",
"properties": {
"unloaded": {
"type": "boolean",
"description": "Indicates if the edge can be traversed without a load."
},
"loaded": {
"type": "boolean",
"description": "Indicates if the edge can be traversed with a load."
},
"loadSetNames": {
"type": "array",
"description": "Names of the load sets allowed on this edge. *Optional*.",
"items": {
"type": "string"
}
}
},
"required": [
"unloaded",
"loaded"
]
},
"trajectory": {
"type": "object",
"description": "Trajectory information for this edge, if applicable. *Optional*.",
"properties": {
"degree": {
"type": "integer",
"description": "Degree of the trajectory curve. Default is 3. Range: [1 ... 3]",
"default": 3
},
"knotVector": {
"type": "array",
"description": "Knot vector for the trajectory.",
"items": {
"type": "number"
}
},
"controlPoints": {
"type": "array",
"description": "Control points defining the trajectory.",
"items": {
"type": "object",
"properties": {
"x": {
"type": "number",
"description": "X coordinate of the control point in meters."
},
"y": {
"type": "number",
"description": "Y coordinate of the control point in meters."
},
"weight": {
"type": "number",
"description": "The weight with which this control point pulls on the curve. When not defined, the default is 1.0. Range: [0.0 ... float64.max]",
"default": 1.0
}
},
"required": [
"x",
"y"
]
}
}
},
"required": [
"knotVector",
"controlPoints"
]
}
},
"required": [
"vehicleTypeId"
]
}
}
},
"required": [
"edgeId",
"startNodeId",
"endNodeId",
"vehicleTypeEdgeProperties"
]
}
},
"stations": {
"type": "array",
"description": "List of stations in the layout where vehicles perform specific actions.",
"items": {
"type": "object",
"properties": {
"stationId": {
"type": "string",
"description": "Unique identifier for the station."
},
"interactionNodeIds": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of node IDs where the station interacts."
},
"stationName": {
"type": "string",
"description": "Name of the station. *Optional*."
},
"stationDescription": {
"type": "string",
"description": "Description of the station. *Optional*."
},
"stationHeight": {
"type": "number",
"description": "Height of the station, if applicable, in meters. *Optional*. Range: [0.0 ... float64.max]"
},
"stationPosition": {
"type": "object",
"description": "Position of the station on the map (in meters).",
"properties": {
"x": {
"type": "number",
"description": "X coordinate of the station in meters. Range: [float64.min ... float64.max]"
},
"y": {
"type": "number",
"description": "Y coordinate of the station in meters. Range: [float64.min ... float64.max]"
},
"theta": {
"type": "number",
"description": "Orientation of the station. Unit: radians. Range: [-Pi ... Pi]"
}
},
"required": [
"x",
"y"
]
}
},
"required": [
"stationId",
"interactionNodeIds"
]
}
}
},
"required": [
"layoutId",
"layoutVersion",
"nodes",
"edges",
"stations"
]
}
}
},
"required": [
"metaInformation",
"layouts"
]
}