En-Vda5050-V2 0 0
En-Vda5050-V2 0 0
En-Vda5050-V2 0 0
#wirsindbereit
VDA 5050 Version 2.0.0, January 2022 2
Disclaimer
The VDA Recommendations are recommendations that may be freely adopted by anyone.
Users are responsible for correct implementation of the recommendations as required on a
case-by-case basis.
The recommendations take into account the prevailing technology at the time of publication.
Use of the VDA Recommendations does not absolve anyone from responsibility for his/her
own actions, and all users act at their own risk. Liability of VDA and those involved in drafting
of VDA Recommendations is excluded.
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 3
Table of contents
1 Foreword 5
3 Scope 7
3.1 Other applicable documents 7
6 Protocol specification 11
6.1 Symbols of the tables and meaning of formatting 11
6.2 MQTT connection handling, security and QoS 12
6.3 MQTT-Topic Levels 12
6.4 Protocol Header 13
6.5 Subtopics for communication 13
6.6 Topic: "order"(from master control to AGV) 14
6.7 Implementation of the order message 22
6.8 Actions 28
6.9 Topic: "instantActions" (from master to control to AGV) 34
6.10 Topic: "state" (from AGV to master control) 34
6.11 actionStates 45
6.12 Action Blocking Types and Sequence 46
6.13 Topic "visualization" 48
6.14 Topic "connection" 48
6.15 Topic "factsheet" 49
7 Best practice 58
7.1 Error reference 58
7.2 Format of parameters 58
8 Glossary 59
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 4
List of Figures
List of tables
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 5
1 Foreword
The interface was established in cooperation between the Verband der Automobilindustrie
e.V. (German abbreviation VDA) and Verband Deutscher Maschinen-und Anlagenbau e.V.
(German abbreviation VDMA). The aim of both parties is to create an universally applicable
interface. Proposals for changes to the interface shall be submitted to the VDA, are evaluated
jointly with the VDMA and adopted into a new version status in the event of a positive
decision. The contribution to this document via GitHub is greatly appreciated. The Repository
can be found at the following link: http://github.com/vda5050/vda5050.
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 6
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 7
3 Scope
This recommendation contains definitions and best practice regarding communication
between automated guided vehicles (AGVs) and master control. The goal is to allow AGV
with different characteristics (e.g., underrun tractor or forklift AGV) to communicate with
master control in uniform language. This creates the basis for operating any combination of
AGV in a master control. The master control provides orders and coordinates the AGV traffic.
The interface is based on the requirements from production and plant logistics in the
automotive industry. According to the formulated requirements, the requirements of
intralogistics cover the requirements of the logistics department, i.e., the logistical processes
from goods receiving to production supply to goods out, through control free navigating
vehicles and guided vehicles.
In contrast to automated vehicles, autonomous vehicles solve problems that occur based on
the corresponding sensor system and algorithms independently and can react accordingly to
changes in a dynamic environment or be adapted to them shortly afterwards. Autonomous
properties such as the independent bypassing of obstacles can be fulfilled by free navigating
vehicles as well as guided vehicles. However, as soon as the path planning is carried out on
the vehicle itself, this document describes free navigating vehicles (see glossary).
Autonomous systems are not completely decentralized (swarm intelligence) and have defined
behavior through predefined rules.
For the purpose of a sustainable solution, an interface is described below which can be
expanded in its structure. This should enable a complete coverage of the master control for
vehicles that are guided. Vehicles that are free navigating can be integrated into the structure;
a detailed specification required for this is not part of this recommendation.
For the integration of proprietary stock systems, individual definitions of the interface may be
required, which are not considered as part of this recommendation.
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 8
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 9
During the implementation phase, the driverless transport systems (DTS) consisting of
master control and AGV is set up. The necessary framework conditions are defined by the
operator and the required information is either entered manually by him or stored in the
master control by importing from other systems. Essentially, this concerns the following
content:
• Definition of routes: Using CAD import, routes can be taken over in the master
control. Alternatively, routes can also be implemented manually in the master control
by the operator. Routes can be one-way streets, restricted for certain vehicle groups
(based on the size ratios), etc.
• Route network configuration: Within the routes, stations for loading and unloading,
battery charging stations, peripheral environments (gates, elevators, barriers),
waiting positions, buffer stations, etc. are defined.
• Vehicle configuration: The physical properties of an AGV (size, available load carrier
mounts, etc.) are stored by the operator. The AGV must communicate this
information via the subtopic factsheet in a specific way that is defined in the AGV
Factsheet section (chapter 6.15) of this document.
The configuration of routes and the route network described above is not part of this
document. It forms the basis for enabling order control and driving course assignment by the
master control based on this information and the transport requirements to be completed.
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 10
The resulting orders for an AGV are then transferred to the vehicle via an MQTT message
broker. This then continuously reports its status to the master control in parallel with the
execution of the job. This is also done using the MQTT message broker.
Functions of the master control are:
• Assignment of orders to the AGV
• Route calculation and guidance of the AGV (taking into account the limitations of the
individual physical properties of each AGV, e.g., size, maneuverability, etc.)
• Detection and resolution of blockages ("deadlocks")
• Energy management: Charging orders can interrupt transfer orders
• Traffic control: Buffer routes and waiting positions
• (temporary) changes in the environment, such as freeing certain areas or changing
the maximum speed
• Communication with peripheral systems such as doors, gates, elevators, etc.
• Detection and resolution of communication errors
Functions of the AGV are:
• Localization
• Navigation along associated routes (guided or autonomous)
• Continuous transmission of vehicle status
In addition, the integrator must take into account the following when configuring the overall
system (incomplete list):
• Map configuration: The coordinate systems of the master control and the AGV must
be matched.
• Pivot point: The use of different points of the AGV or points of charge as a pivot point
leads to different envelopes of the vehicle. The reference point may vary depending
on the situation, e.g., it may be different for an AGV carrying a load and for an AGV
that does not carry a load.
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 11
6 Protocol specification
The following section describes the details of the communication protocol. The protocol
specifies the communication between the master control and the AGV. Communication
between the AGV and peripheral equipment, e.g., between the AGV and a gate, is excluded.
The different messages are presented in tables describing the contents of the fields of the
JSON that is sent as an order, state, etc.
In addition, JSON schemas are available for validation in the public Git repository
(https://github.com/VDA5050/vda5050). The JSON schemas are updated with every release
of the VDA5050.
All keywords are case sensitive. All field names are in camelCase. All enumerations are in
UPPERCASE.
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 12
Note: Since the / character is used to define topic hierarchies, it must not be used in any of
the aforementioned fields. The $ character is also used in some MQTT brokers for special
internal topics, so it should not be used either.
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 13
Protocol version
The protocol version uses semantic versioning as versioning schema.
Examples for major version changes:
• Breaking changes, e.g., new non-optional fields
Examples for minor version changes:
• New features like an additional topic for visualization
Examples for patch version:
• Higher available precision for a batteryCharge
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 14
The nodes and edges are passed as two lists in the order message. The lists order also
governs in which sequence the nodes and edges must be traversed.
For a valid order, at least one node must be present. The number of acceptable edges is the
number of nodes minus one, not more or less.
The first node of an order must be trivially reachable for the AGV. This means either that the
AGV is already standing on the node, or that the AGV is in the nodes deviation range.
Nodes and edges both have a boolean attribute “released”. If a node or edge is released, the
AGV is expected to traverse it. If a node or edge is not released, the AGV must not traverse
it.
An edge only can be released, if both the start and end node of the edge are released.
After an unreleased edge, no released nodes or edges can follow in the sequence.
The set of released nodes and edges are called the “base”. The set of unreleased nodes and
edges are called the “horizon”.
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 15
In Figure 4, an initial job is first sent by the control panel at time t = 1. Figure 5 shows the
pseudocode of a possible job. For the sake of readability, a complete JSON example has
been omitted here.
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 16
{
orderId: "1234"
orderUpdateId:0,
nodes: [
6 {released: True},
4 {released: True},
7 {released: True},
2 {released: False},
8 {released: False}
],
edges: [
e1 {released: True},
e3 {released: True},
e8 {released: False},
e9 {released: False}
]
}
At time t = 3, the order is updated by sending an extension of the order (see example in
Figure 6). Note that the "orderUpdateId" is incremented and that the first node of the job
update corresponds to the last shared base node of the previous order message.
This ensures that the AGV can also perform the job update, i.e., that the first node of the job
update is reachable by executing the edges already known to the AGV.
{
orderId: 1234,
orderUpdateId: 1,
nodes: [
7 {released: True},
2 {released: True},
8 {released: True},
9 {released: False}
],
edges: [
e8 {released: True},
e9 {released: True},
e10 {released: False}
]
}
Figure 6 Pseudocode of an order update. Please look out for the change of the "orderUpdateId"
This also aids in the event that an orderUpdate goes missing (because of unreliable wireless
network). The AGV can always check that the last known base node has the same nodeId
(and nodeSequenceId, more on that later) as the first new base node.
Also note that node 7 is the only base node that is sent again. Since the base cannot be
changed, a retransmission of nodes 6 and 4 is not valid.
It is important, that the contents of the stitching node (node 7 in the example case) are not
changed. For actions, deviation range, etc. the AGV must use the instructions provided in the
first order (Figure 5, orderUpdateId 0).
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 17
Figure 7 describes how an order should be extended. It shows the information, that is
currently available on the AGV. The orderId stays the same and the orderUpdateId is
incremented.
The last node of the previous base is the first base node in the updated order. With this node
the AGV can add the updated order onto the current order (stitching). The other nodes and
edges from the previous base are not resent.
Master control has the option to make changes to the horizon by sending entirely different
nodes as the new base. The horizon can also be deleted.
To allow loops in orders (like going from node 1 to 2 and then back to 1) a sequenceId is
assigned to the node and edge objects. This sequenceId runs over the nodes and edges (first
node of an order receives a 0, the first edge then gets the 1, the second node then gets the 2,
and so on). This allows for easier tracking of the order progress.
Once a sequenceId is assigned, it does not change with order updates (see Figure 7). This is
necessary to determine on AGV side to which node the master control refers to.
Figure 8 describes the process of accepting an order or orderUpdate.
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 18
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 19
successful and “failed”, if not). While actions are running, the cancelOrder action must report
“running”, until all actions are cancelled/finished. After all vehicle movements and all actions
are stopped, the cancelOrder action status must report “finished”.
The orderId and orderUpdateId is kept.
Figure 9 shows the expected behavior for different AGV capabilities.
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 20
In case of an AGV that can stop in-between nodes, the choice is up to master control how the
next order should be started. The AGV must accept both methods.
There are two options:
• Send an order, where the first node is a temporary node that is positioned where the
AGV currently stands. The AGV must then realize that this node is trivially reachable
and accept the order.
• Send an order, where the first node is the last traversed node of the previous order
but set the deviation range so large that the AGV is within this range. Thus, the AGV
must realize that this node must be counted as traversed and accept the order.
6.6.4.3 Vehicle gets a new order with the same orderId, but a
lower orderUpdateId than the current orderUpdateId
Resolution:
1. Vehicle does NOT take over the new order in its internal buffer.
2. Vehicle keeps the PREVIOUS order it its buffer.
3. The vehicle reports the warning "orderUpdateError"
4. The vehicle continues with the executing the previous order.
If the AGV receives an order with the same orderId and orderUpdateId twice, the second
order will be ignored. This might happen, if the master control sends the order again,
because the status message came too late, and the master control could not verify that the
first order was received.
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 21
6.6.5 Maps
To ensure consistent navigation among different types of AGV, the position is always
specified in reference to the local map coordinate system (see Figure 10). For the
differentiation between different levels a unique mapId is used. The map coordinate system is
to be specified as a right-handed coordinate system with the z-axis pointing skywards. A
positive rotation therefore is to be understood as a counterclockwise rotation. The vehicle
coordinate system is also specified as a right-handed coordinate system with the x-axis
pointing in the forward direction of the vehicle and the z-axis pointing skywards. This is in
accordance with chapter 2.11 in DIN ISO 8855.
The X, Y and Z coordinates must be in meters. The orientation must be in radians and must
be within +Pi and -Pi.
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 22
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 23
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 24
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 25
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 26
Optional:
No limit, if not set.
maxRotationSpeed rad/s float64 Maximum rotation speed
Optional:
No limit, if not set.
trajectory JSON-object Trajectory JSON-object for this edge as a
NURBS.
Defines the curve, on which the AGV
should move between startNode and
endNode.
Optional:
Can be omitted, if AGV cannot process
trajectories or if AGV plans its own
trajectory.
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 27
Optional:
This value is used by line-guided AGVs to
decrease their speed before reaching a
stop position.
actions [action] array Array of actionIds to be executed on the
edge.
Empty array, if no actions required.
} An action triggered by an edge will only be
active for the time that the AGV is
traversing the edge which triggered the
action.
When the AGV leaves the edge, the action
will stop and the state before entering the
edge will be restored.
trajectory { JSON-object
degree float64 Range: [1 ... infinity]
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 28
6.8 Actions
If the AGV supports actions other than driving, these actions are executed via the action field
that is attached to either a node or an edge, or sent via the separate topic instantActions (see
6.9).
Actions that are to be executed on an edge must only run while the AGV is on the edge (see
6.10.2).
Actions that are triggered on nodes can run as long as they need to run. Actions on nodes
should be self-terminating (e.g., an audio signal that lasts for five seconds or a pick action,
that is finished after picking up a load) or should be formulated pairwise (e.g.,
activateWarningLights and deactivateWarningLights), although there may be exceptions.
The following section presents predefined actions that must be used by the AGV, if the AGVs
capabilities map to the action description. If there is a sensible way to use the defined
parameters, they must be used. Additional parameters can be defined, if they are needed to
execute an action successfully.
If there is no way to map some action to one of the actions of the following section, the AGV
manufacturer can define additional actions that must be used by master control.
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 29
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 30
general scope
action counter action Description importent Parameter linked state instant node edge
logReport - Requests the AGV to generate and store a yes reason - yes no no
log report. (string)
pick drop Request the AGV to pick a load. no lhd (string, optional) .load no yes yes
AGVs with multiple load handling devices stationType (string)
(if automated) can process multiple pick operations in stationName(string,
parallel. optional)
In this case, the paramater lhd needs to be loadType (string)
present (e.g. LHD1). loadId(string, optional)
The paramater stationType informs how the height (float64) (optional)
pick operation is handled in detail (e.g., floor defines bottom of the load
location, rack location, passive conveyor, related to the floor
active conveyor, etc.). depth (float64) (optional)
The load type informs about the load unit for forklifts
and can be used to switch field for example side(string) (optional) e.g.
(e.g., EPAL, INDU, etc). conveyor
For preparing the load handling device (e.g.,
pre-lift operations based on the height
parameter), the action could be announced
in the horizon in advance.
But, pre-Lift operations, etc., are not
reported as running in the AGV state,
because the associated node is not released
yet.
If on an edge, the vehicle can use its
sensing device to detect the position for
picking the node.
drop pick Request the AGV to drop a load. no lhd (string, optional) .load no yes yes
See action pick for more details. stationType (string,
(if automated) optional)
stationName (string,
optional)
loadType (string, optional)
loadId(string, optional)
height (float64, optional)
depth (float64, optional)
…
detectObject - AGV detects object (e.g. load, charging yes objectType(string, optional) - no yes yes
spot, free parking position).
finePositioning - On a node, AGV will position exactly on a yes stationType(string, - no yes yes
target. optional)
The AGV is allowed to deviate from its node stationName(string,
position. optional)
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 31
general scope
action counter action Description importent Parameter linked state instant node edge
On an edge, AGV will e.g. align on
stationary equipment while traversing an
edge.
InstantAction: AGV starts positioning exactly
on a target.
waitForTrigger - AGV has to wait for a trigger on the AGV yes triggerType(string) - no yes no
(e.g. button press, manual loading).
Master control is responsible to handle the
timeout and has to cancel the order if
necessary.
cancelOrder - AGV stops as soon as possible. yes - - yes no no
This could be immediately or on the next
node.
Then the order is deleted. All actions are
canceled.
factsheetRequest - Requests the AGV to send a factsheet yes - - yes no no
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 32
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 33
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 34
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 35
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 36
6.10.4 Information
The AGV can submit arbitrary additional information to master control via the information
array. It is up to the AGV how long it reports information via an information message.
Master control must not use the info messages for logic, it must only be used for visualization
and debugging purposes.
6.10.5 Errors
The AGV reports errors via the errors array. Errors have two levels: WARNING and FATAL.
A WARNING is a self-resolving error, e.g., a field violation. A FATAL error needs human
intervention. Errors can pass references that help with finding the cause of the error via the
errorReferences array.
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 37
6.10.6 Implementation
Object structure Unit Data type Description
headerId uint32 Header ID of the message.
The headerId is defined per topic and
incremented by 1 with each sent (but
not necessarily received) message.
timestamp string Timestamp (ISO 8601, UTC); YYYY-
MM-DDTHH:mm:ss.ssZ (e.g.“2017-
04-15T11:40:03.12Z”).
version string Version of the protocol
[Major].[Minor].[Patch] (e.g. 1.3.2).
manufacturer string Manufacturer of the AGV.
serialNumber string Serial number of the AGV.
orderId string Unique order identification of the
current order or the previous finished
order.
The orderId is kept until a new order
is received.
Empty string (""), if no previous
orderId is available.
orderUpdateId uint32 Order Update Identification to
identify, that an order update has
been accepted by the AGV.
“0” if no previous orderUpdateId is
available.
zoneSetId string Unique ID of the zone set, that the
AGV currently uses for path planning.
Must be the same as the one used in
the order, otherwise the AGV has to
reject the order.
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 38
Optional:
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 39
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 40
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 41
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 42
Optional:
}
Set value only if known.
actionState { JSON-object
actionId string action_ID
actionType string actionType of the action.
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 43
State of Health.
charging boolean “true”: charging in progress.
“false”: AGV is currently not charging.
reach m uint32 Range: [0 ... infinity)
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 44
Acknowledge-Type of eStop:
AUTOACK: auto-acknowledgeable e-
stop is activated, e.g., by bumper or
protective field.
MANUAL: e-stop has to be
acknowledged manually at the
vehicle.
REMOTE: facility e-stop has to be
acknowledged remotely.
NONE: no e-stop activated.
fieldViolation boolean Protective field violation.
"true": field is violated
} "false": field is not violated.
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 45
6.11 actionStates
When an AGV receives an action (either attached to a node or edge or via an
instantAction), it must represent this action with an actionState in its
actionStates array.
actionStates describe in the field actionStatus at which stage of the actions lifecycle
the action is.
Table 1 describes, which value the enum actionStatus can hold.
actionStatus Description
WAITING Action was received by AGV but the node where it triggers was not yet
reached or the edge where it is active was not yet entered.
INITIALIZING Action was triggered, preparatory measures are initiated.
RUNNING The action is running.
PAUSED The action is paused because of a pause instantAction or external trigger
(pause button on AGV)
FINISHED The action is finished.
A result is reported via the resultDescription
FAILED Action could not be finished for whatever reason.
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 46
If there are multiple actions on the same node with different blocking types, Figure 15
describes how the AGV should handle these actions.
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 47
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 48
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 49
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 50
typeSpecification
This JSON object describes general properties of the AGV type.
Field data type description
seriesName string Free text generalized series name as specified
by manufacturer.
seriesDescription string Free text human readable description of the AGV
type series.
agvKinematic string Simplified description of AGV kinematics-type.
[DIFF, OMNI, THREEWHEEL]
DIFF: differential drive
OMNI: omni-directional vehicle
THREEWHEEL: three-wheel-driven vehicle or
vehicle with similar kinematics
agvClass string Simplified description of AGV class.
[FORKLIFT, CONVEYOR, TUGGER, CARRIER]
FORKLIFT: forklift.
CONVEYOR: AGV with conveyors on it.
TUGGER: tugger.
CARRIER: load carrier with or without lifting unit.
maxLoadMass float64 [kg], Maximum loadable mass.
localizationTypes Array of Simplified description of localization type.
String Example values:
NATURAL: natural landmarks;
REFLECTOR: laser reflectors;
RFID: RFID-tags;
DMC: data matrix code;
SPOT: magnetic spots;
GRID: magnetic grid.
navigationTypes Array of List of path planning types supported by the
String AGV, sorted by priority.
Example values:
PHYSICAL_LINE_GUIDED: No path planning,
AGV follows physical installed paths.
VIRTUAL_LINE_GUIDED: AGV goes fixed
(virtual) paths.
AUTONOMOUS: AGV plans its path
autonomously.
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 51
physicalParameters
This JSON-object describes physical properties of the AGV.
Field data type description
speedMin float64 [m/s] Minimal controlled continuous speed of the
AGV.
speedMax float64 [m/s] Maximum speed of the AGV.
accelerationMax float64 [m/s²] Maximum acceleration with maximum
load.
decelerationMax float64 [m/s²] Maximum deceleration with maximum
load.
heightMin float64 [m] Minimum height of AGV.
heightMax float64 [m] Maximum height of AGV.
width float64 [m] Width of AGV.
length float64 [m] Length of AGV.
protocolLimits
This JSON-object describes the protocol limitations of the AGV. If a parameter is not defined
or set to zero then there is no explicit limit for this parameter.
Field data type description
maxStringLens { JSON-object Maximum lengths of strings.
msgLen uint32 Maximum MQTT message length
topicSerialLen uint32 Maximum length of serial-number part in
MQTT-topics.
Affected parameters:
order.serialNumber
instantActions.serialNumber
state.SerialNumber
visualization.serialNumber
connection.serialNumber
topicElemLen uint32 Maximum length of all other parts in MQTT-
topics.
Affected parameters:
order.timestamp
order.version
order.manufacturer
instantActions.timestamp
instantActions.version
instantActions.manufacturer
state.timestamp
state.version
state.manufacturer
visualization.timestamp
visualization.version
visualization.manufacturer
connection.timestamp
connection.version
connection.manufacturer
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 52
Affected parameters:
order.orderId
order.zoneSetId
node.nodeId
nodePosition.mapId
action.actionId
edge.edgeId
edge.startNodeId
edge.endNodeId
idNumericalOnly boolean If "true" ID-strings need to contain numerical
values only.
enumLen uint32 Maximum length of ENUM- and Key-Strings.
Affected parameters:
action.actionType action.blockingType
edge.direction
actionParameter.key
state.operatingMode
load.loadPosition
load.loadType
actionState.actionStatus
error.errorType
error.errorLevel
errorReference.referenceKey
info.infoType
info.infoLevel
safetyState.eStop
connection.connectionState
loadIdLen uint32 Maximum length of loadId Strings
}
maxArrayLens { JSON-object Maximum lengths of arrays.
order.nodes uint32 Maximum number of nodes per order
processable by the AGV.
order.edges uint32 Maximum number of edges per order
processable by the AGV.
node.actions uint32 Maximum number of actions per node
processable by the AGV.
edge.actions uint32 Maximum number of actions per edge
processable by the AGV.
uint32 Maximum number of parameters per action
actions.actionsParameters processable by the AGV.
instantActions uint32 Maximum number of instant actions per
message processable by the AGV.
trajectory.knotVector uint32 Maximum number of knots per trajectory
processable by the AGV.
trajectory.controlPoints uint32 Maximum number of control points per
trajectory processable by the AGV.
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 53
agvProtocolFeatures
This JSON object defines actions and parameters which are supported by the AGV.
Field data type description
optionalParameters Array of List of supported and/or required optional
[optionalParameter] JSON-object parameters.
Optional parameters, that are not listed
here, are assumed to be not supported by
the AGV.
{
parameter string Full name of optional parameter, e.g.
“order.nodes.nodePosition.
allowedDeviationTheta”.
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 54
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 55
agvGeometry
This JSON object defines the geometry properties of the AGV, e.g., outlines and wheel
positions.
Field data type description
wheelDefinitions Array of List of wheels, containing wheel-
[wheelDefinition] JSON-object arrangement and geometry.
{
type enum Wheel type
DRIVE, CASTER, FIXED, MECANUM.
isActiveDriven boolean "true": wheel is actively driven (de:
angetrieben).
isActiveSteered boolean "true": wheel is actively steered (de: aktiv
gelenkt).
position { JSON-object
x float64 [m], x-position in AGV-coordinate. system
y float64 [m], y-position in AGV-coordinate. system
theta float64 [rad], orientation of wheel in AGV-coordinate
system Necessary for fixed wheels.
}
diameter float64 [m], nominal diameter of wheel.
width float64 [m], nominal width of wheel.
centerDisplacement float64 [m], nominal displacement of the wheel’s
center to the rotation point (necessary for
caster wheels).
If the parameter is not defined, it is assumed
to be 0.
constraints string Free-form text: can be used by the
manufacturer to define constraints.
}
envelopes2d [envelope2d] Array of List of AGV-envelope curves in 2D (german:
JSON-object „Hüllkurven“), e.g., the mechanical
envelopes for unloaded and loaded state,
the safety fields for different speed cases.
{
set string Name of the envelope curve set.
polygonPoints Array of Envelope curve as a x/y-polygon polygon is
[polygonPoint] JSON-object assumed as closed and must be non-self-
intersecting.
{
x float64 [m], x-position of polygon-point.
y float64 [m], y-position of polygon-point.
}
description string Free-form text: description of envelope
curve set.
}
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 56
loadSpecification
This JSON object specifies load handling and supported load types of the AGV.
Field data type description
loadPositions Array of List of load positions / load handling
String devices.
This lists contains the valid values for the
parameter “state.loads[].loadPosition” and
for the action parameter “lhd” of the actions
pick and drop.
If this list doesn’t exist or is empty, the AGV
has no load handling device.
loadSets [loadSet] Array of list of load-sets that can be handled by the
JSON-object AGV
{
setName string Unique name of the load set, e.g.,
DEFAULT, SET1, etc.
loadType string Type of load, e.g., EPAL, XLT1200, etc.
loadPositions Array of List of load positions btw. load handling
String devices, this load-set is valid for.
If this parameter does not exist or is empty,
this load-set is valid for all load handling
devices on this AGV.
boundingBoxReference JSON-object Bounding box reference as defined in
parameter loads[] in state-message.
loadDimensions JSON-object Load dimensions as defined in parameter
loads[] in state-message.
maxWeight float64 [kg], maximum weight of loadtype.
minLoadhandlingHeight float64 [m], minimum allowed height for handling of
this load-type and –weight
references to boundingBoxReference.
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 57
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 58
7 Best practice
This section includes additional information, which helps in facilitating a common
understanding concurrent with the logic of the protocol.
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 59
8 Glossary
Concept Description
Free navigation Vehicles that use a map to plan their own path.
AGV The master control sends only start and destination coordinates.
The vehicle sends its path to the master control.
When the communication to the master control is broken off, the
vehicle is able to continue its journey.
Free-navigation vehicles may be allowed to bypass local obstacles.
It may also be possible that a fine adjustment of the
receiving/dispensing position by the vehicle itself is carried out.
Guided vehicles Vehicles that get their path sent by the master control.
(physical or virtual) The calculation of the path takes place in the master control.
When communication to the master control is broken off, the vehicle
terminates its released nodes and edges (the "base") and then
stops.
Guided vehicles may be allowed to bypass local obstacles.
It may also be possible that a fine adjustment of the
receiving/dispensing position by the vehicle itself is carried out.
Central map The maps that will be held centrally in the master control.
This is initially created and then used.
A future version of the interface will make it possible to transfer this
map to the vehicles (e.g., for free navigation).
Copyright 2022
VDA 5050 Version 2.0.0, January 2022 60
If you notice any errors, omissions or ambiguities in these recommendations, please contact
VDA without delay so that these errors can be rectified.