vda-5050-cli
Version:
Command line interface for developing VDA 5050 clients
305 lines • 15.2 kB
JSON
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "http://vda-5050-schema.org/v2.0/common.schema.json",
"title": "common",
"description": "Commonly referenced VDA 5050 type definitions.",
"documentVersion": "2.0, November 2023",
"definitions": {
"header": {
"type": "object",
"properties": {
"headerId": {
"title": "headerId",
"type": "integer",
"description": "headerId of the message. The headerId is defined per topic and incremented by 1 with each sent (but not necessarily received) message."
},
"timestamp": {
"title": "timestamp",
"type": "string",
"format": "date-time",
"description": "Timestamp (ISO8601, UTC); YYYY-MM-DDTHH:mm:ss.ssZ; e.g. 2017-04-15T11:40:03.12Z",
"examples": [
"2017-04-15T11:40:03.12Z"
]
},
"version": {
"title": "version",
"type": "string",
"description": "Version of the protocol [Major].[Minor].[Patch], e.g. 1.3.2",
"examples": [
"1.3.2"
]
},
"manufacturer": {
"title": "manufacturer",
"type": "string",
"description": "Manufacturer of the AGV"
},
"serialNumber": {
"title": "serialNumber",
"type": "string",
"description": "Serial number of the AGV"
}
},
"required": [
"headerId",
"timestamp",
"version",
"manufacturer",
"serialNumber"
]
},
"action": {
"type": "object",
"title": "action",
"required": [
"actionId",
"actionType",
"blockingType"
],
"properties": {
"actionType": {
"type": "string",
"title": "actionType",
"description": "Name of action as described in the first column of \"Actions and Parameters\"\nIdentifies the function of the action."
},
"actionId": {
"type": "string",
"title": "actionId",
"description": "ID to distinguish between multiple actions, either instant or with the same type on the same node/edge."
},
"actionDescription": {
"type": "string",
"title": "actionDescription",
"description": "Additional information on the action."
},
"blockingType": {
"type": "string",
"title": "blockingType",
"description": "Regulates if the action is allowed to be executed during movement and/or parallel to other actions.\nNONE: action can happen in parallel with others, including movement.\nSOFT: action can happen simultaneously with others, but not while moving.\nHARD: no other actions can be performed while this action is running.",
"enum": [
"NONE",
"SOFT",
"HARD"
]
},
"actionParameters": {
"type": "array",
"description": "Array of actionParameter objects for the indicated action e.g. deviceId, loadId, external triggers.",
"items": {
"type": "object",
"description": "ActionParameter Object",
"title": "actionParameter",
"required": [
"key",
"value"
],
"properties": {
"key": {
"type": "string",
"description": "The key of the action parameter. For example. duration, direction, signal.",
"examples": [
"duration",
"direction",
"signal"
]
},
"value": {
"type": [
"array",
"boolean",
"number",
"string"
],
"description": "The value of the action parameter. For example: 103.2, \"left\", true, [ 1, 2, 3].",
"examples": [
103.2,
"left",
true,
[
"arrays",
"are",
"also",
"valid"
]
]
}
}
}
}
}
},
"nodePosition": {
"title": "nodePosition",
"type": "object",
"required": [
"x",
"y",
"mapId"
],
"properties": {
"x": {
"type": "number",
"description": "X coordinate described in the world coordinate system."
},
"y": {
"type": "number",
"description": "Y coordinate described in the world coordinate system."
},
"theta": {
"title": "Theta",
"description": "Range: [-pi .. pi].\nOrientation of the AGV on the node.\nOptional: vehicle can plan the path by itself.\nIf defined, the AGV has to assume the theta angle on this node.\nIf previous edge disallows rotation, the AGV is to rotate on the node.\nIf following edge has a differing orientation defined but disallows rotation, the AGV is to rotate on the node to the edges desired rotation before entering the edge.",
"type": "number",
"minimum": -3.14159265359,
"maximum": 3.14159265359
},
"allowedDeviationXy": {
"title": "allowedDeviationXy",
"type": "number",
"description": "Indicates how exact an AGV has to drive over a node in order for it to count as traversed.\nIf = 0: no deviation is allowed (no deviation means within the normal tolerance of the AGV manufacturer).\nIf > 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
},
"allowedDeviationTheta": {
"title": "allowedDeviationTheta",
"type": "number",
"minimum": -3.14159265359,
"maximum": 3.141592654,
"description": "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.\nIf = 0: no deviation is allowed (no deviation means within the normal tolerance of the AGV manufacturer)."
},
"mapId": {
"title": "mapId",
"description": "Unique identification of the map in which the position is referenced.\nEach map has the same origin of coordinates. When an AGV uses an elevator, e. g. leading from a departure floor to a target floor, it will disappear off the map of the departure floor and spawn in the related lift node on the map of the target floor.",
"type": "string"
},
"mapDescription": {
"title": "mapDescription",
"description": "Verbose description of the Map",
"type": "string"
}
}
},
"trajectory": {
"type": "object",
"properties": {
"degree": {
"type": "integer",
"description": "Defines the number of control points that influence any given point on the curve. Increasing the degree increases continuity.\nIf not defined, the default value is 1.",
"minimum": 1
},
"knotVector": {
"type": "array",
"description": "Sequence of parameter values that determine where and how the control points affect the NURBS curve. knotVector has size of number of control points + degree + 1",
"items": {
"type": "number",
"maximum": 1.0,
"minimum": 0.0
}
},
"controlPoints": {
"type": "array",
"description": "List of JSON controlPoint objects defining the control points of the NURBS. This includes the start and end point.",
"items": {
"type": "object",
"title": "controlPoint",
"properties": {
"x": {
"type": "number",
"description": "X coordinate described in the world coordinate system."
},
"y": {
"type": "number",
"description": "Y coordinate described in the world coordinate system."
},
"weight": {
"type": "number",
"description": "Range: (0 .. Infinity). The weight with which this control point pulls on the curve.\nWhen not defined, the default will be 1.0."
},
"orientation": {
"type": "number",
"description": "Range: [-pi .. pi]. Orientation of the AGV on this position of the curve. The orientation is in world coordinates.\nWhen not defined the orientation of the AGV will be tangential to the curve.",
"minimum": -3.14159265359,
"maximum": 3.14159265359
}
},
"required": [
"x",
"y"
]
}
}
},
"required": [
"degree",
"knotVector",
"controlPoints"
]
},
"agvPosition": {
"type": "object",
"title": "agvPosition",
"properties": {
"x": {
"type": "number",
"description": "X-position on the map in reference to the map coordinate system. Precision is up to the specific implementation."
},
"y": {
"type": "number",
"description": "Y-position on the map in reference to the map coordinate system. Precision is up to the specific implementation."
},
"theta": {
"type": "number",
"description": "Range: [-pi ... pi]\nOrientation of the AGV.",
"minimum": -3.14159265359,
"maximum": 3.14159265359
},
"mapId": {
"type": "string",
"description": "Unique identification of the map in which the position is referenced.\nEach map has the same origin of coordinates. When an AGV uses an elevator, e.g. leading from a departure floor to a target floor, it will disappear off the map of the departure floor and spawn in the related lift node on the map of the target floor."
},
"mapDescription": {
"type": "string",
"description": "Additional information on the map."
},
"positionInitialized": {
"type": "boolean",
"description": "True if the AGVs position is initialized, false, if position is not initialized."
},
"localizationScore": {
"type": "number",
"description": "Describes the quality of the localization and therefore, can be used e.g. by SLAM-AGVs to describe how accurate the current position information is.\n0.0: position unknown\n1.0: position known\nOptional for vehicles that cannot estimate their localization score.\nOnly for logging and visualization purposes",
"minimum": 0.0,
"maximum": 1.0
},
"deviationRange": {
"type": "number",
"description": "Value for the deviation range of the position in meters.\nOptional for vehicles that cannot estimate their deviation e.g. grid-based localization.\nOnly for logging and visualization purposes."
}
},
"required": [
"x",
"y",
"theta",
"mapId",
"positionInitialized"
]
},
"velocity": {
"type": "object",
"title": "velocity",
"properties": {
"vx": {
"type": "number",
"description": "The AGVs velocity in its x direction."
},
"vy": {
"type": "number",
"description": "The AGVs velocity in its y direction."
},
"omega": {
"type": "number",
"description": " The AGVs turning speed around its z axis."
}
}
}
}
}