diff --git a/CMakeLists.txt b/CMakeLists.txt index 1c94797..827344c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,30 +14,39 @@ add_message_files( AGVPosition.msg Action.msg ActionParameter.msg + ActionState.msg + ActionStates.msg BatteryState.msg BoundingBoxReference.msg Connection.msg ControlPoint.msg - CurrentAction.msg Edge.msg EdgeState.msg + EdgeStates.msg Error.msg + Errors.msg ErrorReference.msg - Header.msg InstantActions.msg Info.msg InfoReference.msg + Information.msg Load.msg LoadDimensions.msg + Loads.msg Node.msg NodePosition.msg NodeState.msg + NodeStates.msg Order.msg - OrderInformation.msg SafetyState.msg + State.msg Trajectory.msg Velocity.msg Visualization.msg + Zone.msg + ZoneParameter.msg + ZonePolygonPoint.msg + ZoneUpdate.msg ) generate_messages( DEPENDENCIES diff --git a/msg/AGVPosition.msg b/msg/AGVPosition.msg index 676aec2..e88178a 100644 --- a/msg/AGVPosition.msg +++ b/msg/AGVPosition.msg @@ -1,11 +1,14 @@ # Defines the position on a map in world coordinates. Each floor has its own map. -bool positionInitialized # False: position is not initialized True: position is initialized +bool positionInitialized # True: position is initialized + # False: position is not initialized -float64 localizationScore # Range: [0.0 … 1.0] Describes the quality of the localization and therefore, can be used +float64 localizationScore # Range: [0.0 … 1.0] Describes the quality of the localization and therefore, can be used # e. g. by SLAMAGVs to describe how accurate the current position information is. # 0.0: position unknown 1.0: position known -float64 deviationRange # Value for the deviation range of the position in meters. + +float64 deviationRange # Value for the deviation range of the position in meters. + float64 x # [m] X-position on the map in reference to the map coordinate system. Precision is up to # the specific implementation diff --git a/msg/Action.msg b/msg/Action.msg index 58d239e..0fb8801 100644 --- a/msg/Action.msg +++ b/msg/Action.msg @@ -25,7 +25,7 @@ vda5050_msgs/ActionParameter[] actionParameters # Array of actio # serialization is always a json dictionary with "key" # and "value" we decided to serialize the value as # string. This way the (de-)serialization has to be done by - # the user depending on the key, but the protocol is met + # the user depending on the key, but the protocol is met. # Enums for blockingType diff --git a/msg/ActionParameter.msg b/msg/ActionParameter.msg index 6f825d5..09ba795 100644 --- a/msg/ActionParameter.msg +++ b/msg/ActionParameter.msg @@ -1,2 +1,3 @@ string key + string value diff --git a/msg/ActionState.msg b/msg/ActionState.msg new file mode 100644 index 0000000..05406b7 --- /dev/null +++ b/msg/ActionState.msg @@ -0,0 +1,24 @@ +# CONTENTS +string actionID # action_ID + +string actionType # actionType of the action. + # Optional: Only for informational or visualization purposes. Order knows the type. + +string actionDescription # Additional information on the current action. + +string actionStatus # Waiting: waiting for trigger (passing the node, entering the edge) + # Paused: paused by instantAction or external trigger + # failed: action could not be performed. + +string resultDescription # Description of the result, e.g. the result of a RFID-read. + # Errors will be transmitted in errors. Examples for results are given in 6.5 + + +# Enums for actionStatus +string waiting=waiting +string initializing=initializing +string running=running +string paused=paused +string finished=finished +string failed=failed + diff --git a/msg/ActionStates.msg b/msg/ActionStates.msg new file mode 100644 index 0000000..50a5c2e --- /dev/null +++ b/msg/ActionStates.msg @@ -0,0 +1 @@ +vda5050_msgs/ActionState[] actionStates diff --git a/msg/BatteryState.msg b/msg/BatteryState.msg index a5df87a..ecd3422 100644 --- a/msg/BatteryState.msg +++ b/msg/BatteryState.msg @@ -1,6 +1,11 @@ float64 batteryCharge # [%] State of Charge: if AGV only provides values for good or bad battery levels, these will # be indicated as 20% (bad) and 80% (good). + float64 batteryVoltage # [V] Battery Voltage + int8 batteryHealth # [%] State of Health -bool charging # True: charging in progress False: AGV is currently not charging + +bool charging # True: Charging in progress + # False: AGV is currently not charging + uint32 reach # Estimated reach with current SoC diff --git a/msg/BoundingBoxReference.msg b/msg/BoundingBoxReference.msg index 96ce038..f6939fa 100644 --- a/msg/BoundingBoxReference.msg +++ b/msg/BoundingBoxReference.msg @@ -2,6 +2,9 @@ # box’s bottom surface (at height = 0) and is described in coordinates of the AGV’s coordinate system. float64 x # x-coordinate of the point of reference. + float64 y # y-coordinate of the point of reference. + float64 z # z-coordinate of the point of reference. + float64 theta # Orientation of the loads bounding box. Important for tugger trains etc diff --git a/msg/Connection.msg b/msg/Connection.msg index d083db2..cacb87f 100644 --- a/msg/Connection.msg +++ b/msg/Connection.msg @@ -2,15 +2,16 @@ int32 headerId # header ID of the message. The headerId is defined per topic and incremented by 1 with each sent # (but not necessarily received) message. -string timestamp # Timestamp after ISO8601 in the format YYYY-MM-DDTHH:mm:ss.ssZ (e.g.“2017-04-15T11:40:03.12Z”) +string timeStamp # Timestamp after ISO8601 in the format YYYY-MM-DDTHH:mm:ss.ssZ (e.g.“2017-04-15T11:40:03.12Z”) string version # Version of the protocol [Major].[Minor].[Patch] (e.g. 1.3.2) string manufacturer # Manufacturer of the AGV string serialNumber # Serial Number of the AGV + # CONTENTS -string connectionState # Enum{ONLINE, OFFLINE, CONNECTIONBROKEN} +string connectionState # Enum {ONLINE, OFFLINE, CONNECTIONBROKEN} # ONLINE: connection between AGV and broker is active. # OFFLINE: connection between AGV and broker has gone offline in a coordinated way. # CONNECTIONBROKEN: The connection between AGV and broker has unexpectedly ended. diff --git a/msg/ControlPoint.msg b/msg/ControlPoint.msg index ba0de85..a78d5ab 100644 --- a/msg/ControlPoint.msg +++ b/msg/ControlPoint.msg @@ -2,9 +2,5 @@ float64 x # X coordinate described in the world coordinate system. float64 y # Y coordinate described in the world coordinate system. -float64 orientation # [rad] Range [-pi...pi] Orientation of the AGV on this position of the curve. - # The orientation is in world coordinates. - # When not defined the orientation of the AGV will be tangential to the curve. - float64 weight # Range [0..infinity) The weight with which this control point pulls on the curve. # When not defined, the default will be 1.0 diff --git a/msg/CurrentAction.msg b/msg/CurrentAction.msg deleted file mode 100644 index b976f27..0000000 --- a/msg/CurrentAction.msg +++ /dev/null @@ -1,14 +0,0 @@ -string actionId # actionName_ID -string actionDescription # Additional information on the current action -string actionStatus # Enum {waiting; initializing; running; finished; failed} waiting: waiting for trigger - # failed: action could not be performed. -string resultDescription # Description of the result, e.g. the result of a RFID-read. Errors will be transmitted in - # errors. Examples for results are given in 5.2 - -# Enums for actionStatus -string WAITING=WAITING -string INITIALIZING=INITIALIZING -string RUNNING=RUNNING -string PAUSED=PAUSED -string FINISHED=FINISHED -string FAILED=FAILED diff --git a/msg/Edge.msg b/msg/Edge.msg index a952858..884464d 100644 --- a/msg/Edge.msg +++ b/msg/Edge.msg @@ -12,12 +12,16 @@ bool released # True indicates that the edge is part of th # part of the horizon. string startNodeId # nodeID of startNode + string endNodeId # nodeID of endNode + float64 maxSpeed # [m/s] Permitted maximum speed on the edge. Speed is defined by the fastest point of the # vehicle. float64 maxHeight # [m] Permitted maximum height of the vehicle, including the load, on edge + float64 minHeight # [m] Permitted minimal height of the edge measured at the bottom of the load + float64 orientation # [rad] Orientation of the AGV on the edge relative to the global project specific # map coordinate origin (for holonomic vehicles with more than one driving # direction). @@ -30,15 +34,20 @@ float64 orientation # [rad] Orientation of the AGV on the edge r # If a trajectory without orientation and the orientation field here is defined, # apply the orientation to the tangent of the trajectory. +string orientationType # Sets the orientation type of the edge. + string direction # Sets direction at junctions for line-guided vehicles, to be defined initially # (vehicle individual) Example: left, right, straight, 433MHz bool rotationAllowed # “true”: rotation is allowed on the edge. “false”: rotation is not allowed on the edge. # Optional: Default to “false”. If this value is set, rotation is allowed on the edge. + float64 maxRotationSpeed # [rad/s] Maximum rotation speed Optional: No limit if not set + vda5050_msgs/Trajectory trajectory # 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. + float64 length # [m] Length of the path from startNode to endNode. Optional: This value is used # by lineguided AGVs to decrease their speed before reaching a stop position. @@ -46,3 +55,8 @@ vda5050_msgs/Action[] actions # Array of actionIds to be executed on the e # 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. + + +# Enum for orientationType +string GLOBAL=GLOBAL +string TANGENTIAL=TANGENTIAL \ No newline at end of file diff --git a/msg/EdgeState.msg b/msg/EdgeState.msg index 1f81330..58fb581 100644 --- a/msg/EdgeState.msg +++ b/msg/EdgeState.msg @@ -1,11 +1,12 @@ string edgeId # Unique edge identification -int32 sequenceId # sequenceId to differentiate between multiple edges with +uint32 sequenceId # sequenceId to differentiate between multiple edges with string edgeDescription # Additional information on the edge bool released # True indicates that the edge is part of the base. False indicates that the edge is # part of the horizon. -vda5050_msgs/Trajectory trajectory # The trajectory is to be communicated as a NURBS and is defined in chapter6.4 + +vda5050_msgs/Trajectory trajectory # The trajectory is to be communicated as a NURBS. # Trajectory segments are from the point where the AGV starts to enter the edge # until the point where it reports that the next node was traversed. diff --git a/msg/EdgeStates.msg b/msg/EdgeStates.msg new file mode 100644 index 0000000..5a62062 --- /dev/null +++ b/msg/EdgeStates.msg @@ -0,0 +1 @@ +vda5050_msgs/EdgeState[] edgeStates diff --git a/msg/Error.msg b/msg/Error.msg index 1e0b248..8ea5bbc 100644 --- a/msg/Error.msg +++ b/msg/Error.msg @@ -1,12 +1,14 @@ -string errorType # Type / name of error +string errorType # Type / Name of the error + vda5050_msgs/ErrorReference[] errorReferences # Array of references to identify the source of the error (e. g. headerId, - # orderId, actionId, …). For additional information see best practice - # chapter 6.3 -string errorDescription # Error description -string errorLevel # Enum {warning, fatal} warning: AGV is ready to start (e.g. maintenance - # cycle expiration warning) fatal: AGV is not in running condition, user - # intervention required (e.g. laser scanner is contaminated) + # orderId, actionId, …). + +string errorDescription # Error description. + +string errorLevel # Enum {WARNING, FATAL} + # WARNING: AGV is ready to start (e.g. maintenance cycle expiration WARNING) + # FATAL: AGV is not in running condition, user intervention required (e.g. laser scanner is contaminated) # Enums for errorLevel -string WARNING=warning -string FATAL=fatal +string WARNING=WARNING +string FATAL=FATAL diff --git a/msg/ErrorReference.msg b/msg/ErrorReference.msg index 8d0610c..a29f22a 100644 --- a/msg/ErrorReference.msg +++ b/msg/ErrorReference.msg @@ -1,2 +1,3 @@ string referenceKey # References the type of reference (e. g. headerId, orderId, actionId, …). + string referenceValue # References the value the reference key. diff --git a/msg/Errors.msg b/msg/Errors.msg new file mode 100644 index 0000000..dcf6aa1 --- /dev/null +++ b/msg/Errors.msg @@ -0,0 +1 @@ +vda5050_msgs/Error[] errors diff --git a/msg/Header.msg b/msg/Header.msg deleted file mode 100644 index bbd6817..0000000 --- a/msg/Header.msg +++ /dev/null @@ -1,10 +0,0 @@ -int32 headerId # header ID of the message. The headerId is defined per topic and incremented by 1 with each sent - # (but not necessarily received) message. - -string timestamp # Timestamp after ISO8601 in the format YYYY-MM-DDTHH:mm:ss.ssZ (e.g.“2017-04-15T11:40:03.12Z”) - -string version # Version of the protocol [Major].[Minor].[Patch] (e.g. 1.3.2) - -string manufacturer # Manufacturer of the AGV - -string serialNumber # Serial Number of the AGV diff --git a/msg/Info.msg b/msg/Info.msg index b43cdac..6a917ef 100644 --- a/msg/Info.msg +++ b/msg/Info.msg @@ -1,8 +1,11 @@ -string infoType # Type / name of information -vda5050_msgs/InfoReference[] infoReferences # array of references -string infoDescription # Info description -string infoLevel # Enum {DEBUG, INFO} DEBUG: used for debugging, INFO: used for visualization +string infoType # Type / Name of information. +vda5050_msgs/InfoReference[] infoReferences # Array of references. +string infoDescription # Info description. + +string infoLevel # Enum {DEBUG, INFO} DEBUG: used for debugging, INFO: used for visualization. + +# Enum for infoLevel string DEBUG=DEBUG string INFO=INFO diff --git a/msg/InfoReference.msg b/msg/InfoReference.msg index 8d0610c..a29f22a 100644 --- a/msg/InfoReference.msg +++ b/msg/InfoReference.msg @@ -1,2 +1,3 @@ string referenceKey # References the type of reference (e. g. headerId, orderId, actionId, …). + string referenceValue # References the value the reference key. diff --git a/msg/Information.msg b/msg/Information.msg new file mode 100644 index 0000000..878928c --- /dev/null +++ b/msg/Information.msg @@ -0,0 +1 @@ +vda5050_msgs/Info[] information diff --git a/msg/InstantActions.msg b/msg/InstantActions.msg index e6742b9..7cc5590 100644 --- a/msg/InstantActions.msg +++ b/msg/InstantActions.msg @@ -1,12 +1,12 @@ -int32 headerId # header ID of the message. The headerId is defined per topic and incremented by 1 with each sent - # (but not necessarily received) message. +int32 headerId # header ID of the message. The headerId is defined per topic and incremented by 1 with each sent + # (but not necessarily received) message. -string timestamp # Timestamp after ISO8601 in the format YYYY-MM-DDTHH:mm:ss.ssZ (e.g.“2017-04-15T11:40:03.12Z”) +string timeStamp # Timestamp after ISO8601 in the format YYYY-MM-DDTHH:mm:ss.ssZ (e.g.“2017-04-15T11:40:03.12Z”) -string version # Version of the protocol [Major].[Minor].[Patch] (e.g. 1.3.2) +string version # Version of the protocol [Major].[Minor].[Patch] (e.g. 1.3.2) -string manufacturer # Manufacturer of the AGV +string manufacturer # Manufacturer of the AGV -string serialNumber # Serial Number of the AGV +string serialNumber # Serial Number of the AGV Action[] instantActions # List of actions to execute diff --git a/msg/Load.msg b/msg/Load.msg index 0d6e8cf..2ea0469 100644 --- a/msg/Load.msg +++ b/msg/Load.msg @@ -1,7 +1,7 @@ string loadId # Unique identification number of the load (e. g. barcode or # RFID) -string loadType # Type of load +string loadType # Type of load. string loadPosition # Indicates which load handling/carrying unit of the AGV is # used, e. g. in case the AGV has multiple spots/positions to @@ -14,4 +14,4 @@ vda5050_msgs/BoundingBoxReference boundingBoxReference # Point of reference for vda5050_msgs/LoadDimensions loadDimensions # Dimensions of the load’s bounding box in meters. -uint32 weight # Absolute weight of the load measured in kg. +float64 weight # [Kg] Absolute weight of the load measured. \ No newline at end of file diff --git a/msg/LoadDimensions.msg b/msg/LoadDimensions.msg index 74f3e8a..cff1eeb 100644 --- a/msg/LoadDimensions.msg +++ b/msg/LoadDimensions.msg @@ -1,5 +1,7 @@ # Dimensions of the load’s bounding box in meters. float64 length # Absolute length of the load’s bounding box. + float64 width # Absolute width of the load’s bounding box. + float64 height # Absolute height of the load’s bounding box. Optional: Set value only if known. diff --git a/msg/Loads.msg b/msg/Loads.msg new file mode 100644 index 0000000..cda43e0 --- /dev/null +++ b/msg/Loads.msg @@ -0,0 +1 @@ +vda5050_msgs/Load[] loads diff --git a/msg/Node.msg b/msg/Node.msg index cfea805..1572fbb 100644 --- a/msg/Node.msg +++ b/msg/Node.msg @@ -12,7 +12,7 @@ string nodeDescription # Additional information on th bool released # True indicates that the node is part of the base. False indicates # that the node is part of the horizon. -vda5050_msgs/NodePosition nodePosition # Node position +vda5050_msgs/NodePosition nodePosition # Node position vda5050_msgs/Action[] actions # Array of actions to be executed in node. Empty array if no actions diff --git a/msg/NodePosition.msg b/msg/NodePosition.msg index 959ebd6..71712d5 100644 --- a/msg/NodePosition.msg +++ b/msg/NodePosition.msg @@ -5,13 +5,6 @@ float64 y # [m] Y-position on the map in float64 theta # [rad] The angular dimension -string mapId # Unique identification of the map in which the position is referenced. Each 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. - -string mapDescription # Additional information on the map - float32 allowedDeviationXY # Indicates how exact an AGV has to drive over a node in order for it # to count as traversed. # @@ -26,3 +19,10 @@ float32 allowedDeviationTheta # Range: [0 ... Pi] # Indicates how big the deviation of theta angle can be. # The lowest acceptable angle is theta -allowedDevaitionTheta and # the highest acceptable angle is theta + allowedDeviationTheta + +string mapId # Unique identification of the map in which the position is referenced. Each 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. + +string mapDescription # Additional information on the map \ No newline at end of file diff --git a/msg/NodeState.msg b/msg/NodeState.msg index 8326bd4..a093d8f 100644 --- a/msg/NodeState.msg +++ b/msg/NodeState.msg @@ -1,8 +1,12 @@ # Array of nodes to be traversed for fulfilling the order -string nodeId # Unique node identification +string nodeId # Unique node identification. + int32 sequenceId # sequenceId to discern multiple nodes with same nodeId. + string nodeDescription # Additional information on the node + vda5050_msgs/NodePosition position # Node position (see Topic: Order) + bool released # true indicates that the node is part of the base. # false indicates that the node is part of the horizon. diff --git a/msg/NodeStates.msg b/msg/NodeStates.msg new file mode 100644 index 0000000..a51a8e4 --- /dev/null +++ b/msg/NodeStates.msg @@ -0,0 +1,3 @@ +# Array of nodes to be traversed for fulfilling the order + +vda5050_msgs/NodeState[] nodeStates diff --git a/msg/Order.msg b/msg/Order.msg index 7be76ba..2425891 100644 --- a/msg/Order.msg +++ b/msg/Order.msg @@ -2,7 +2,7 @@ int32 headerId # header ID of the message. The headerId is defined per topic and incremented by 1 with each sent # (but not necessarily received) message. -string timestamp # Timestamp after ISO8601 in the format YYYY-MM-DDTHH:mm:ss.ssZ (e.g.“2017-04-15T11:40:03.12Z”) +string timeStamp # Timestamp after ISO8601 in the format YYYY-MM-DDTHH:mm:ss.ssZ (e.g.“2017-04-15T11:40:03.12Z”) string version # Version of the protocol [Major].[Minor].[Patch] (e.g. 1.3.2) @@ -17,11 +17,6 @@ string orderId # Unique order identification uint32 orderUpdateId # orderUpdate identification. Is unique per orderId. If an order update is # rejected, this field is to be passed in the rejection message -bool replace # Indicates that previously released base nodes should be replaced by the - # base of this updated order. If this is not possible, the AGV returns an - # error code (see errors in topic “state”). The new base has to start at the - # following node from the current position which has not been traversed yet. - vda5050_msgs/Node[] nodes # Array of nodes to be traversed for fulfilling the order. The nodes come # in the sequence of the fulfilling. diff --git a/msg/OrderInformation.msg b/msg/OrderInformation.msg index 87ff62d..c323271 100644 --- a/msg/OrderInformation.msg +++ b/msg/OrderInformation.msg @@ -2,7 +2,7 @@ int32 headerId # header ID of the message. The headerId is defined per topic and incremented by 1 with each sent # (but not necessarily received) message. -string timestamp # Timestamp after ISO8601 in the format YYYY-MM-DDTHH:mm:ss.ssZ (e.g.“2017-04-15T11:40:03.12Z”) +string timeStamp # Timestamp after ISO8601 in the format YYYY-MM-DDTHH:mm:ss.ssZ (e.g.“2017-04-15T11:40:03.12Z”) string version # Version of the protocol [Major].[Minor].[Patch] (e.g. 1.3.2) @@ -39,7 +39,6 @@ bool newBaseRequested # True: AGV is almost at th float64 distanceSinceLastNode # Used by line guided vehicles to indicate the distance it has been driving past the „lastNodeId“. Distance is in meters string operatingMode # Enum {AUTOMATIC, SEMIAUTOMATIC, MANUAL, SERVICE, TEACHIN} - # For additional information see chapter 6.2 vda5050_msgs/NodeState[] nodeStates # Array of nodeStateObjects (empty list if idle) @@ -91,5 +90,4 @@ string MANUAL=MANUAL # Supervisor is not in control of the AGV. Supervisor doesn’t send driving order or actions to the AGV. Authorized personal can reconfigure the AGV. string SERVICE=SERVICE - # Supervisor is not in control of the AGV. Supervisor doesn’t send driving order or actions to the AGV. The AGV is being taught, e.g. mapping is done by a supervisor -string TEACHIN=TEACHIN +string TEACHIN=TEACHIN # Supervisor is not in control of the AGV. Supervisor doesn’t send driving order or actions to the AGV. The AGV is being taught, e.g. mapping is done by a supervisor. \ No newline at end of file diff --git a/msg/SafetyState.msg b/msg/SafetyState.msg index ad3346b..77264c7 100644 --- a/msg/SafetyState.msg +++ b/msg/SafetyState.msg @@ -1,12 +1,15 @@ -string eStop # Enum {autoAck, manual, remote, none} Acknowledge-Type of eStop: - # autoAck: autoacknowledgeable e-stop is activated e.g. by bumper or protective field - # manual: e-stop has to be acknowledged manually at the vehicle - # remote: facility estop has to be acknowledged remotely - # none: no e-stop activated -bool fieldViolation # Protective field violation. True: field is violated False: field is not violated +string eStop # Enum {AUTOACK, MANUAL, REMOTE, NONE} Acknowledge-Type of eStop: + # AUTOACK: autoacknowledgeable e-stop is activated e.g. by bumper or protective field + # MANUAL: e-stop has to be acknowledged manually at the vehicle + # REMOTE: facility estop has to be acknowledged remotely + # NONE: No e-stop activated + +bool fieldViolation # Protective field violation. + # True: field is violated. + # False: field is not violated # Enums for eStop -string AUTO_ACK=autoAck -string MANUAL=manual -string REMOTE=remote -string NONE=none +string AUTOACK=AUTOACK +string MANUAL=MANUAL +string REMOTE=REMOTE +string NONE=NONE \ No newline at end of file diff --git a/msg/State.msg b/msg/State.msg new file mode 100644 index 0000000..34b6a87 --- /dev/null +++ b/msg/State.msg @@ -0,0 +1,84 @@ +# state msg +# HEADER +int32 headerId # header ID of the message. The headerId is defined per topic and incremented by 1 with each sent + # (but not necessarily received) message. + +string timeStamp # Timestamp after ISO8601 in the format YYYY-MM-DDTHH:mm:ss.ssZ (e.g.“2017-04-15T11:40:03.12Z”) + +string version # Version of the protocol [Major].[Minor].[Patch] (e.g. 1.3.2) + +string manufacturer # Manufacturer of the AGV + +string serialNumber # Serial Number of the AGV + +# CONTENTS +string orderId # 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. + +uint32 orderUpdateId # Order Update Identification to identify that an order update has been accepted by the AGV. + # “0” if no previous orderUpdateId is available. + +string zoneSetId # Unique ID of the zone set that the AGV currently uses for path planning. + # Must bethe same as the one used in the order, otherwise the AGV has to reject the order. + # Optional: If the AGV does not use zones, this field can be omitted. + + +string lastNodeId # nodeId of last reached node or, if AGV is currently on a node, current node (e.g.„node7”). Empty string ("") if no lastNodeId is available. + +uint32 lastNodeSequenceId # sequenceId of the last reached node or, if the AGV is currently on a node, sequenceId of current node. + # “0” if no lastNodeSequenceId is available. + +vda5050_msgs/NodeState[] nodeStates # Array of nodeState-Objects that need to be traversed for fulfilling the order. + +vda5050_msgs/EdgeState[] edgeStates # Array of edgeState-Objects that need to be traversed for fulfilling the order (empty list if idle). + +vda5050_msgs/AGVPosition agvPosition # Current position of the AGV on the map. + # Optional: Can only be omitted for AGVs without the capability to localize themselves, e.g. line guided AGVs. + +vda5050_msgs/Velocity velocity # The AGVs velocity in vehicle coordinates. + +vda5050_msgs/Load[] loads # Loads that are currently handled by the AGV. + # Optional: If AGV cannot determine load state, leave the array out of the state. + # If the AGV can determine the load state, but the array is empty, the AGV is considered unloaded. + +bool driving # “true”: indicates that the AGV is driving and/or rotating. + # Other movements of the AGV (e.g. lift movements) are not included here. + # “false”: indicates that the AGV is neither driving nor rotating. + +bool paused # True: AGV is currently in a paused state, either because of the push of a physical button on the AGV or instantAction because of an instantAction. + # The AGV can resume the order. + # False: The AGV is currently not in a paused state. + +bool newBaseRequest # “true”: AGV is almost at the end of the base and will reduce speed if no new base is transmitted. + # Trigger for MC to send a new base. + # “false”: no base request required. + +float64 distanceSinceLastNode # [m] Used by line guided vehicles to indicate the distance it has been driving past the „lastNodeIdId“. + # Distance is in meters + + +vda5050_msgs/ActionState[] actionStates # Contains a list of the current actions and the actions which are yet to be finished. + # This may include actions from previous nodes that are still in progress. + # When an action is completed, an updated state message is published with actionStatus set to finished + # and if applicable with the corresponding resultDescription. + # The action state is kept until a new order is received. + +vda5050_msgs/BatteryState batteryState # Contains all battery-related information. + +string operatingMode # Current operating mode of the vehicle. + +vda5050_msgs/Error[] errors # Array of error-objects. All active errors of the AGV should be in the list. + # An empty array indicates that the AGV has no active errors. + +vda5050_msgs/Info[] information # Array of info-objects. An empty array indicates that the AGV has no information. + # This should only be used for visualization or debugging – it must not be used for logic in master control. + +vda5050_msgs/SafetyState safetyState # Contains all safety-related information. + +# Enums for operatingMode +string AUTOMATIC=AUTOMATIC +string SEMIAUTOMATIC=SEMIAUTOMATIC +string MANUAL=MANUAL +string SERVICE=SERVICE +string TEACHIN=TEACHIN \ No newline at end of file diff --git a/msg/Trajectory.msg b/msg/Trajectory.msg index 6df9436..4b61c10 100644 --- a/msg/Trajectory.msg +++ b/msg/Trajectory.msg @@ -1,6 +1,6 @@ # Points defining a spline. Theta allows holonomic vehicles to rotate along the trajecotry. -int32 degree # Range: [1 … infinity) Defines the number of control points that influence +float64 degree # Range: [1 … infinity) Defines the number of control points that influence # any given point on the curve. Increasing the degree increases continuity. # If not defined, the default value is 1. diff --git a/msg/Velocity.msg b/msg/Velocity.msg index d87cee4..a0ea613 100644 --- a/msg/Velocity.msg +++ b/msg/Velocity.msg @@ -1,3 +1,5 @@ float64 vx # [m/s] forward velocity + float64 vy # [m/s] sideways velocity + float64 omega # [rad/s] rotational velocity diff --git a/msg/Visualization.msg b/msg/Visualization.msg index de136d9..0163271 100644 --- a/msg/Visualization.msg +++ b/msg/Visualization.msg @@ -2,7 +2,7 @@ int32 headerId # header ID of the message. The headerId is defined per topic and incremented by 1 with each sent # (but not necessarily received) message. -string timestamp # Timestamp after ISO8601 in the format YYYY-MM-DDTHH:mm:ss.ssZ (e.g.“2017-04-15T11:40:03.12Z”) +string timeStamp # Timestamp after ISO8601 in the format YYYY-MM-DDTHH:mm:ss.ssZ (e.g.“2017-04-15T11:40:03.12Z”) string version # Version of the protocol [Major].[Minor].[Patch] (e.g. 1.3.2) @@ -11,6 +11,6 @@ string manufacturer # Manufacturer of the AGV string serialNumber # Serial Number of the AGV # CONTENTS -AGVPosition agvPosition # The AGV's position +AGVPosition agvPosition # The AGV/AMR's position -Velocity velocity # The AGV's velocity in vehicle coordinates +Velocity velocity # The AGV/AMR's velocity in vehicle coordinates diff --git a/msg/Zone.msg b/msg/Zone.msg new file mode 100644 index 0000000..5b12ebb --- /dev/null +++ b/msg/Zone.msg @@ -0,0 +1,13 @@ +string zoneId # ID of the zone + +string zoneType # Type of the zone + +string name # Name of the zone + +string description # Description of the zone + +string mapId # ID of the map that this zone belongs to. + +ZoneParameter[] zoneParameters # Parameters of the zone + +ZonePolygonPoint[] polygon # List of points that form the polygon of the zone diff --git a/msg/ZoneParameter.msg b/msg/ZoneParameter.msg new file mode 100644 index 0000000..14d70e3 --- /dev/null +++ b/msg/ZoneParameter.msg @@ -0,0 +1,3 @@ +string key # Key of the parameter + +string value # Value of the key \ No newline at end of file diff --git a/msg/ZonePolygonPoint.msg b/msg/ZonePolygonPoint.msg new file mode 100644 index 0000000..1c1484d --- /dev/null +++ b/msg/ZonePolygonPoint.msg @@ -0,0 +1,3 @@ +float64 x # Position of the polygon point on the X-axis + +float64 y # Position of the polygon point on the Y-axis \ No newline at end of file diff --git a/msg/ZoneUpdate.msg b/msg/ZoneUpdate.msg new file mode 100644 index 0000000..7b3e36e --- /dev/null +++ b/msg/ZoneUpdate.msg @@ -0,0 +1,20 @@ +# HEADER +int32 headerId # header ID of the message. The headerId is defined per topic and incremented by 1 with each sent + # (but not necessarily received) message. + +string timeStamp # Timestamp after ISO8601 in the format YYYY-MM-DDTHH:mm:ss.ssZ (e.g.“2017-04-15T11:40:03.12Z”) + +string version # Version of the protocol [Major].[Minor].[Patch] (e.g. 1.3.2) + +string manufacturer # Manufacturer of the AGV + +string serialNumber # Serial Number of the AGV + +# CONTENTS +string zoneSetId # The ID of the zone set being used + +string zoneDownloadLink # Link to download the zones + +string zoneDownloadProtocol # Protocol used to download the zones from the zoneDownloadLink + +Zone[] zones # List of zones to be used by the AGV \ No newline at end of file