From 644c0f5519dc76f770862084c13eeb927b94b1a0 Mon Sep 17 00:00:00 2001 From: Guillaume Autran Date: Tue, 12 Jul 2022 16:48:42 -0400 Subject: [PATCH] Add support for VDA5050 v2.0 * Rename OrderInformation to OrderState * Add Factsheet, Error and SafetyState message definitions * Add enums for action scopes * Fix lowercase constants and several datatypes issue: #28 Co-authored-by: Alejandro Duarte Co-authored-by: Florencia Grosso --- vda5050_msgs/CMakeLists.txt | 25 ++++++++-- vda5050_msgs/msg/AGVAction.msg | 10 ++++ vda5050_msgs/msg/AGVGeometry.msg | 3 ++ vda5050_msgs/msg/AGVPosition.msg | 4 +- .../msg/ActionParameterDefinition.msg | 13 +++++ vda5050_msgs/msg/Connection.msg | 2 +- vda5050_msgs/msg/Edge.msg | 2 +- vda5050_msgs/msg/EdgeState.msg | 2 +- vda5050_msgs/msg/Envelope2D.msg | 3 ++ vda5050_msgs/msg/Envelope3D.msg | 5 ++ vda5050_msgs/msg/Error.msg | 4 +- vda5050_msgs/msg/Factsheet.msg | 26 ++++++++++ vda5050_msgs/msg/InstantActions.msg | 4 +- vda5050_msgs/msg/Load.msg | 2 +- vda5050_msgs/msg/LoadSet.msg | 35 ++++++++++++++ vda5050_msgs/msg/LoadSpecification.msg | 2 + vda5050_msgs/msg/MaxArrayLens.msg | 31 ++++++++++++ vda5050_msgs/msg/MaxStringLens.msg | 13 +++++ vda5050_msgs/msg/Node.msg | 6 +-- vda5050_msgs/msg/NodePosition.msg | 13 ++--- vda5050_msgs/msg/NodeState.msg | 2 +- vda5050_msgs/msg/OptionalParameter.msg | 7 +++ vda5050_msgs/msg/Order.msg | 12 ++--- .../{OrderInformation.msg => OrderState.msg} | 48 ++++++++----------- vda5050_msgs/msg/PhysicalParameters.msg | 15 ++++++ vda5050_msgs/msg/PolygonPoint.msg | 2 + vda5050_msgs/msg/Position.msg | 3 ++ vda5050_msgs/msg/ProtocolFeatures.msg | 2 + vda5050_msgs/msg/ProtocolLimits.msg | 3 ++ vda5050_msgs/msg/SafetyState.msg | 10 ++-- vda5050_msgs/msg/Timing.msg | 7 +++ vda5050_msgs/msg/Trajectory.msg | 4 +- vda5050_msgs/msg/TypeSpecification.msg | 37 ++++++++++++++ vda5050_msgs/msg/Visualization.msg | 2 +- vda5050_msgs/msg/WheelDefinition.msg | 14 ++++++ 35 files changed, 307 insertions(+), 66 deletions(-) create mode 100644 vda5050_msgs/msg/AGVAction.msg create mode 100644 vda5050_msgs/msg/AGVGeometry.msg create mode 100644 vda5050_msgs/msg/ActionParameterDefinition.msg create mode 100644 vda5050_msgs/msg/Envelope2D.msg create mode 100644 vda5050_msgs/msg/Envelope3D.msg create mode 100644 vda5050_msgs/msg/Factsheet.msg create mode 100644 vda5050_msgs/msg/LoadSet.msg create mode 100644 vda5050_msgs/msg/LoadSpecification.msg create mode 100644 vda5050_msgs/msg/MaxArrayLens.msg create mode 100644 vda5050_msgs/msg/MaxStringLens.msg create mode 100644 vda5050_msgs/msg/OptionalParameter.msg rename vda5050_msgs/msg/{OrderInformation.msg => OrderState.msg} (87%) create mode 100644 vda5050_msgs/msg/PhysicalParameters.msg create mode 100644 vda5050_msgs/msg/PolygonPoint.msg create mode 100644 vda5050_msgs/msg/Position.msg create mode 100644 vda5050_msgs/msg/ProtocolFeatures.msg create mode 100644 vda5050_msgs/msg/ProtocolLimits.msg create mode 100644 vda5050_msgs/msg/Timing.msg create mode 100644 vda5050_msgs/msg/TypeSpecification.msg create mode 100644 vda5050_msgs/msg/WheelDefinition.msg diff --git a/vda5050_msgs/CMakeLists.txt b/vda5050_msgs/CMakeLists.txt index 83d3e06..df6f782 100644 --- a/vda5050_msgs/CMakeLists.txt +++ b/vda5050_msgs/CMakeLists.txt @@ -16,9 +16,12 @@ find_package(rosidl_default_generators REQUIRED) find_package(std_msgs REQUIRED) set(msg_files - "msg/AGVPosition.msg" "msg/Action.msg" "msg/ActionParameter.msg" + "msg/ActionParameterDefinition.msg" + "msg/AGVAction.msg" + "msg/AGVGeometry.msg" + "msg/AGVPosition.msg" "msg/BatteryState.msg" "msg/BoundingBoxReference.msg" "msg/Connection.msg" @@ -26,27 +29,43 @@ set(msg_files "msg/CurrentAction.msg" "msg/Edge.msg" "msg/EdgeState.msg" + "msg/Envelope2D.msg" + "msg/Envelope3D.msg" "msg/Error.msg" "msg/ErrorReference.msg" + "msg/Factsheet.msg" "msg/Info.msg" "msg/InfoReference.msg" "msg/Header.msg" "msg/InstantActions.msg" "msg/Load.msg" "msg/LoadDimensions.msg" + "msg/LoadSet.msg" + "msg/LoadSpecification.msg" + "msg/MaxArrayLens.msg" + "msg/MaxStringLens.msg" "msg/Node.msg" "msg/NodePosition.msg" "msg/NodeState.msg" + "msg/OptionalParameter.msg" "msg/Order.msg" - "msg/OrderInformation.msg" + "msg/OrderState.msg" + "msg/PhysicalParameters.msg" + "msg/PolygonPoint.msg" + "msg/Position.msg" + "msg/ProtocolFeatures.msg" + "msg/ProtocolLimits.msg" "msg/SafetyState.msg" + "msg/Timing.msg" "msg/Trajectory.msg" + "msg/TypeSpecification.msg" "msg/Velocity.msg" "msg/Visualization.msg" + "msg/WheelDefinition.msg" ) rosidl_generate_interfaces(${PROJECT_NAME} ${msg_files} - DEPENDENCIES + DEPENDENCIES std_msgs builtin_interfaces ) diff --git a/vda5050_msgs/msg/AGVAction.msg b/vda5050_msgs/msg/AGVAction.msg new file mode 100644 index 0000000..6cc3fae --- /dev/null +++ b/vda5050_msgs/msg/AGVAction.msg @@ -0,0 +1,10 @@ +string action_type # Unique actionType corresponding to action.actionType +string action_description +string[] action_scopes # Allowed scopes for using this action-type +ActionParameterDefinition[] action_parameters # List of parameters defined for the action +string result_description + +# Enums for action scopes +string INSTANT = "INSTANT" +string NODE = "NODE" +string EDGE = "EDGE" \ No newline at end of file diff --git a/vda5050_msgs/msg/AGVGeometry.msg b/vda5050_msgs/msg/AGVGeometry.msg new file mode 100644 index 0000000..02be12f --- /dev/null +++ b/vda5050_msgs/msg/AGVGeometry.msg @@ -0,0 +1,3 @@ +WheelDefinition[] wheel_definitions # List of wheels, containing wheel-arrangement and geometry +Envelope2D[] envelopes2d +Envelope3D[] envelopes3d # List of AGV-envelope curves in 3D \ No newline at end of file diff --git a/vda5050_msgs/msg/AGVPosition.msg b/vda5050_msgs/msg/AGVPosition.msg index 87d8800..89f2107 100644 --- a/vda5050_msgs/msg/AGVPosition.msg +++ b/vda5050_msgs/msg/AGVPosition.msg @@ -14,9 +14,9 @@ float64 y # [m] Y-position on the map in reference to the ma float64 theta # [rad] Range: [-Pi … Pi] Orientation of the AGV. -string map_id # Unique identification of the map in which the position is referenced. Each map has the +string map_id # 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 map_description # Additional information on the map. +string map_description # Additional information on the map. diff --git a/vda5050_msgs/msg/ActionParameterDefinition.msg b/vda5050_msgs/msg/ActionParameterDefinition.msg new file mode 100644 index 0000000..f807f63 --- /dev/null +++ b/vda5050_msgs/msg/ActionParameterDefinition.msg @@ -0,0 +1,13 @@ +string key +string value_data_type +string description +bool is_optional + +# Enums for valueDataType +string BOOL = "BOOL" +string NUMBER = "NUMBER" +string INTEGER = "INTEGER" +string FLOAT = "FLOAT" +string STRING = "STRING" +string OBJECT = "OBJECT" +string ARRAY = "ARRAY" \ No newline at end of file diff --git a/vda5050_msgs/msg/Connection.msg b/vda5050_msgs/msg/Connection.msg index 296c26c..cb8f658 100644 --- a/vda5050_msgs/msg/Connection.msg +++ b/vda5050_msgs/msg/Connection.msg @@ -1,5 +1,5 @@ # HEADER -int32 header_id # header ID of the message. The headerId is defined per topic and incremented by 1 with each sent +uint32 header_id # 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”) diff --git a/vda5050_msgs/msg/Edge.msg b/vda5050_msgs/msg/Edge.msg index b6d166c..057cdc4 100644 --- a/vda5050_msgs/msg/Edge.msg +++ b/vda5050_msgs/msg/Edge.msg @@ -2,7 +2,7 @@ string edge_id # Unique edge identification -int32 sequence_id # Id to track the sequence of nodes and edges in an order and to simplify order +uint32 sequence_id # Id to track the sequence of nodes and edges in an order and to simplify order # updates. The variable sequence_id runs across all nodes and edges of the same order # and is reset when a new order_id is issued. diff --git a/vda5050_msgs/msg/EdgeState.msg b/vda5050_msgs/msg/EdgeState.msg index eaa82f8..3597af4 100644 --- a/vda5050_msgs/msg/EdgeState.msg +++ b/vda5050_msgs/msg/EdgeState.msg @@ -1,6 +1,6 @@ string edge_id # Unique edge identification -int32 sequence_id # sequenceId to differentiate between multiple edges with +uint32 sequence_id # sequenceId to differentiate between multiple edges with string edge_description # Additional information on the edge diff --git a/vda5050_msgs/msg/Envelope2D.msg b/vda5050_msgs/msg/Envelope2D.msg new file mode 100644 index 0000000..8f52d65 --- /dev/null +++ b/vda5050_msgs/msg/Envelope2D.msg @@ -0,0 +1,3 @@ +string set # Name of the envelope curve set +PolygonPoint[] polygon_points # Envelope curve as a x/y-polygon +string description \ No newline at end of file diff --git a/vda5050_msgs/msg/Envelope3D.msg b/vda5050_msgs/msg/Envelope3D.msg new file mode 100644 index 0000000..fab6237 --- /dev/null +++ b/vda5050_msgs/msg/Envelope3D.msg @@ -0,0 +1,5 @@ +string set # Name of the envelope curve set +string format +string data +string url # Protocol and url-definition for downloading the 3D-envelope curve data +string description \ No newline at end of file diff --git a/vda5050_msgs/msg/Error.msg b/vda5050_msgs/msg/Error.msg index 8bf2361..6fea297 100644 --- a/vda5050_msgs/msg/Error.msg +++ b/vda5050_msgs/msg/Error.msg @@ -8,5 +8,5 @@ string error_level # Enum {warning, fatal} warning: # intervention required (e.g. laser scanner is contaminated) # Enums for error_level -string WARNING="warning" -string FATAL="fatal" +string WARNING="WARNING" +string FATAL="FATAL" diff --git a/vda5050_msgs/msg/Factsheet.msg b/vda5050_msgs/msg/Factsheet.msg new file mode 100644 index 0000000..2592eee --- /dev/null +++ b/vda5050_msgs/msg/Factsheet.msg @@ -0,0 +1,26 @@ +# HEADER +uint32 header_id # 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 serial_number # Serial Number of the AGV + +# CONTENTS +TypeSpecification type_specification # Class and capabilities of the AGV + +PhysicalParameters physical_parameters # Physical properties of the AGV + +ProtocolLimits protocol_limits # Protocol limitations of the AGV + +ProtocolFeatures protocol_features # Supported and/or required optional parameters + +AGVGeometry agv_geometry # Detailed definition of AGV geometry + +LoadSpecification load_specification # Load positions / load handling devices + +int32 localization_parameters # Detailed specification of localization \ No newline at end of file diff --git a/vda5050_msgs/msg/InstantActions.msg b/vda5050_msgs/msg/InstantActions.msg index a8485ba..92f1eaf 100644 --- a/vda5050_msgs/msg/InstantActions.msg +++ b/vda5050_msgs/msg/InstantActions.msg @@ -1,4 +1,4 @@ -int32 header_id # header ID of the message. The headerId is defined per topic and incremented by 1 with each sent +uint32 header_id # 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”) @@ -9,4 +9,4 @@ string manufacturer # Manufacturer of the AGV string serial_number # Serial Number of the AGV -Action[] instant_actions # List of actions to execute +Action[] actions # List of actions to execute diff --git a/vda5050_msgs/msg/Load.msg b/vda5050_msgs/msg/Load.msg index ecfe2dc..fb091e0 100644 --- a/vda5050_msgs/msg/Load.msg +++ b/vda5050_msgs/msg/Load.msg @@ -14,4 +14,4 @@ vda5050_msgs/BoundingBoxReference bounding_box_reference # Point of reference f vda5050_msgs/LoadDimensions load_dimensions # Dimensions of the load’s bounding box in meters. -uint32 weight # Absolute weight of the load measured in kg. +float64 weight # Absolute weight of the load measured in kg. diff --git a/vda5050_msgs/msg/LoadSet.msg b/vda5050_msgs/msg/LoadSet.msg new file mode 100644 index 0000000..eb98a6d --- /dev/null +++ b/vda5050_msgs/msg/LoadSet.msg @@ -0,0 +1,35 @@ +string set_name + +string load_type + +string[] load_positions # List of load positions / load handling devices + +BoundingBoxReference bounding_box_reference # Bounding box reference as defined in parameter loads[] in state-message + +LoadDimensions load_dimensions + +float64 max_weight # Maximum weight of load type [kg] + +float64 min_loadhandling_height # Minimum allowed height for handling of this load-type and weight [m] + +float64 max_loadhandling_height # Maximum allowed height for handling of this load-type and weight [m] + +float64 min_loadhandling_depth # Minimum allowed depth for this load-type and weight [m] + +float64 max_loadhandling_depth # Maximum allowed depth for this load-type and weight [m] + +float64 min_loadhandling_tilt # Minimum allowed tilt for this load-type and weight [rad] + +float64 max_loadhandling_tilt # Maximum allowed tilt for this load-type and weight [rad] + +float64 agv_speed_limit # Maximum allowed speed for this load-type and weight [m/s^2] + +float64 agv_acceleration_limit # Maximum allowed acceleration for this load-type and weight [m/s^2] + +float64 agv_deceleration_limit # Maximum allowed deceleration for this load-type and weight [m/s^2] + +float64 pick_time # Approx. time for picking up the load [s] + +float64 drop_time # Approx. time for dropping the load [s] + +string description # Free description of the load handling set diff --git a/vda5050_msgs/msg/LoadSpecification.msg b/vda5050_msgs/msg/LoadSpecification.msg new file mode 100644 index 0000000..a0d172b --- /dev/null +++ b/vda5050_msgs/msg/LoadSpecification.msg @@ -0,0 +1,2 @@ +string[] load_positions # List of load positions / load handling devices +LoadSet[] load_sets # List of load-sets that can be handled by the AGV \ No newline at end of file diff --git a/vda5050_msgs/msg/MaxArrayLens.msg b/vda5050_msgs/msg/MaxArrayLens.msg new file mode 100644 index 0000000..9d01e70 --- /dev/null +++ b/vda5050_msgs/msg/MaxArrayLens.msg @@ -0,0 +1,31 @@ +uint32 order_nodes # Maximum number of nodes per order processable by the AGV + +uint32 order_edges # Maximum number of edges per order processable by the AGV + +uint32 node_actions # Maximum number of action per node processable by the AGV + +uint32 edge_actions # Maximum number of action per edge processable by the AGV + +uint32 actions_parameters # Maximum number of parameters per action processable by the AGV + +uint32 instant_actions # Maximum number of instant actions per message processable by the AGV + +uint32 trajectory_knot_vector # Maximum number of knots per trajectory processable by the AGV + +uint32 trajectory_control_points # Maximum number of control points per trajectory processable by the AGV + +uint32 state_node_states # Maximum number of nodeStates sent by the AGV, maximum number of nodes in base of AGV + +uint32 state_edge_states # Maximum number of edgeStates sent by the AGV, maximum number of edges in base of AGV + +uint32 state_loads # Maximum number of load-objects sent by the AGV + +uint32 state_action_states # Maximum number of actionStates sent by the AGV + +uint32 state_errors # Maximum number of errors sent by the AGV in one state-message + +uint32 state_information # Maximum number of information objects sent by the AGV in one state-message + +uint32 error_references # Maximum number of error references sent by the AGV for each error + +uint32 info_references # Maximum number of info references sent by the AGV for each information \ No newline at end of file diff --git a/vda5050_msgs/msg/MaxStringLens.msg b/vda5050_msgs/msg/MaxStringLens.msg new file mode 100644 index 0000000..d000212 --- /dev/null +++ b/vda5050_msgs/msg/MaxStringLens.msg @@ -0,0 +1,13 @@ +uint32 msg_len # Maximum MQTT Message length + +uint32 topic_serial_len # Maximum length of serial-number part in MQTT-topics + +uint32 topic_elem_len # Maximum length of all other parts in MQTT-topics (timestamp, versions, manufacturer) + +uint32 id_len # Maximum length of ID-Strings + +bool id_numerical_only # If true ID-strings need to contain numerical values only + +uint32 enum_len # Maximum length of ENUM- and Key-Strings + +uint32 load_id_len # Maximum length of loadId Strings \ No newline at end of file diff --git a/vda5050_msgs/msg/Node.msg b/vda5050_msgs/msg/Node.msg index 281dc2a..e4f4fe1 100644 --- a/vda5050_msgs/msg/Node.msg +++ b/vda5050_msgs/msg/Node.msg @@ -2,17 +2,17 @@ string node_id # Unique node identification. -int32 sequence_id # Id to track the sequence of nodes and edges in an order and to +uint32 sequence_id # Id to track the sequence of nodes and edges in an order and to # simplify order updates. The variable sequence_id runs across all # nodes and edges of the same order and is reset when a new order_id is # issued. -string node_description # Additional information on the node +string node_description # Additional information on the node 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 node_position # Node position +vda5050_msgs/NodePosition node_position # Node position vda5050_msgs/Action[] actions # Array of actions to be executed in node. Empty array if no actions diff --git a/vda5050_msgs/msg/NodePosition.msg b/vda5050_msgs/msg/NodePosition.msg index ea5e198..cab0238 100644 --- a/vda5050_msgs/msg/NodePosition.msg +++ b/vda5050_msgs/msg/NodePosition.msg @@ -5,12 +5,6 @@ float64 y # [m] Y-position on the map in float64 theta # [rad] The angular dimension -string map_id # 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 map_description # Additional information on the map float32 allowed_deviation_x_y # Indicates how exact an AGV has to drive over a node in order for it # to count as traversed. @@ -26,3 +20,10 @@ float32 allowed_deviation_theta # 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 map_id # 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 map_description # Additional information on the map diff --git a/vda5050_msgs/msg/NodeState.msg b/vda5050_msgs/msg/NodeState.msg index 721f214..e0f12de 100644 --- a/vda5050_msgs/msg/NodeState.msg +++ b/vda5050_msgs/msg/NodeState.msg @@ -1,7 +1,7 @@ # Array of nodes to be traversed for fulfilling the order string node_id # Unique node identification -int32 sequence_id # sequenceId to discern multiple nodes with same nodeId. +uint32 sequence_id # sequenceId to discern multiple nodes with same nodeId. string node_description # 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. diff --git a/vda5050_msgs/msg/OptionalParameter.msg b/vda5050_msgs/msg/OptionalParameter.msg new file mode 100644 index 0000000..ed94f60 --- /dev/null +++ b/vda5050_msgs/msg/OptionalParameter.msg @@ -0,0 +1,7 @@ +string parameter # Full name of optional parameter +string support # Type of support for the optional parameter +string description # Description of optional parameter + +# Enums for support +string SUPPORTED = "SUPPORTED" +string REQUIRED = "REQUIRED" \ No newline at end of file diff --git a/vda5050_msgs/msg/Order.msg b/vda5050_msgs/msg/Order.msg index 9ddf7ea..30faa74 100644 --- a/vda5050_msgs/msg/Order.msg +++ b/vda5050_msgs/msg/Order.msg @@ -1,5 +1,5 @@ # HEADER -int32 header_id # header ID of the message. The header_id is defined per topic and incremented by 1 with each sent +uint32 header_id # header ID of the message. The header_id 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”) @@ -16,16 +16,12 @@ string order_id # Unique order identification uint32 order_update_id # order_update identification. Is unique per order_id. 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. + +string zone_set_id # Unique identifier of the zone set that the AGV has to use for navigation or that was used by master controlfor planning + # Optional: Some master controlsystems do not use zones. Some AGVs do not understand zones. Do not add to message if no zones are used vda5050_msgs/Node[] nodes # Array of nodes to be traversed for fulfilling the order. The nodes come # in the sequence of the fulfilling. vda5050_msgs/Edge[] edges # Array of edges to be traversed for fulfilling the order -string zone_set_id # Unique identifier of the zone set that the AGV has to use for navigation or that was used by master controlfor planning - # Optional: Some master controlsystems do not use zones. Some AGVs do not understand zones. Do not add to message if no zones are used diff --git a/vda5050_msgs/msg/OrderInformation.msg b/vda5050_msgs/msg/OrderState.msg similarity index 87% rename from vda5050_msgs/msg/OrderInformation.msg rename to vda5050_msgs/msg/OrderState.msg index 4a6a456..a634f9b 100644 --- a/vda5050_msgs/msg/OrderInformation.msg +++ b/vda5050_msgs/msg/OrderState.msg @@ -1,5 +1,5 @@ # HEADER -int32 header_id # header ID of the message. The header_id is defined per topic and incremented by 1 with each sent +uint32 header_id # header ID of the message. The header_id 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”) @@ -21,26 +21,9 @@ string zone_set_id # Unique ID of the zone set string last_node_id # 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. -int32 last_node_sequence_id # sequence_id of the last reached node or, if the AGV is currently on a node, sequence_id of current node. +uint32 last_node_sequence_id # sequence_id of the last reached node or, if the AGV is currently on a node, sequence_id of current node. # “0” if no last_node_sequence_id is available. -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 - # because of an instantAction. The AGV can resume the order. - # False: The AGV is currently not in a paused state - -bool new_base_requested # 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 ne base - # False: no base update required - -# Optional -float64 distance_since_last_node # Used by line guided vehicles to indicate the distance it has been driving past the last_node_id. Distance is in meters - -string operating_mode # Enum {AUTOMATIC, SEMIAUTOMATIC, MANUAL, SERVICE, TEACHIN} - # For additional information see chapter 6.2 - vda5050_msgs/NodeState[] node_states # Array of node_state_objects (empty list if idle) vda5050_msgs/EdgeState[] edge_states # Array of edge_state_objects (empty list if idle) @@ -49,16 +32,25 @@ vda5050_msgs/AGVPosition agv_position # Current position of the A # AGVs without the capability to localize themselves, e.g. line # guided AGVs. -vda5050_msgs/Velocity velocity # AGV's velocity in vehicle coordinates - -vda5050_msgs/Trajectory trajectory # The trajectory is to be communicated as a NURBS and is defined in - # chapter 5.1. Optional: AGVs that plan their own path are to - # communicate their path via a trajectory object. +vda5050_msgs/Velocity velocity # AGV's 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 + # because of an instantAction. The AGV can resume the order. + # False: The AGV is currently not in a paused state + +bool new_base_requested # 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 ne base + # False: no base update required + +float64 distance_since_last_node # Used by line guided vehicles to indicate the distance it has been driving past the last_node_id. Distance is in meters + vda5050_msgs/CurrentAction[] action_states # 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 @@ -68,13 +60,15 @@ vda5050_msgs/CurrentAction[] action_states # Contains a list of the cu vda5050_msgs/BatteryState battery_state # Contains all batteryrelated information. -vda5050_msgs/Error[] errors # Array of errorobjects. Empty array if there are no errors. +string operating_mode # Enum {AUTOMATIC, SEMIAUTOMATIC, MANUAL, SERVICE, TEACHIN} + # For additional information see chapter 6.2 -vda5050_msgs/SafetyState safety_state # Contains all safetyrelated information. +vda5050_msgs/Error[] errors # Array of errorobjects. Empty array if there are no errors. -vda5050_msgs/Info[] informations # Array of info-objects. An empty array indicates that the AGV has no information. +vda5050_msgs/Info[] informations # 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 safety_state # Contains all safetyrelated information. diff --git a/vda5050_msgs/msg/PhysicalParameters.msg b/vda5050_msgs/msg/PhysicalParameters.msg new file mode 100644 index 0000000..e43b86a --- /dev/null +++ b/vda5050_msgs/msg/PhysicalParameters.msg @@ -0,0 +1,15 @@ +float64 speed_min # Minimal controlled continuous speed of the AGV [m/s] + +float64 speed_max # Maximum speed of the AGV [m/s] + +float64 acceleration_max # Maximum acceleration with maximum load [m/s^2] + +float64 deceleration_max # Maximum deceleration with maximum load [m/s^2] + +float64 height_min # Minimum height of the AGV [m] + +float64 height_max # Maximum height of the AGV [m] + +float64 width # Width of the AGV [m] + +float64 length # Length of the AGV [m] \ No newline at end of file diff --git a/vda5050_msgs/msg/PolygonPoint.msg b/vda5050_msgs/msg/PolygonPoint.msg new file mode 100644 index 0000000..5243296 --- /dev/null +++ b/vda5050_msgs/msg/PolygonPoint.msg @@ -0,0 +1,2 @@ +float64 x # x-position [m] of polygon-point +float64 y # y-position [m] of polygon-point \ No newline at end of file diff --git a/vda5050_msgs/msg/Position.msg b/vda5050_msgs/msg/Position.msg new file mode 100644 index 0000000..8b69d65 --- /dev/null +++ b/vda5050_msgs/msg/Position.msg @@ -0,0 +1,3 @@ +float64 x # x-position [m] in AGV-coordinate system +float64 y # y-position [m] in AGV-coordinate system +float64 theta # orientation of wheel [rad] in AGV-coordinate system - necessary for fixed wheels \ No newline at end of file diff --git a/vda5050_msgs/msg/ProtocolFeatures.msg b/vda5050_msgs/msg/ProtocolFeatures.msg new file mode 100644 index 0000000..4de34a0 --- /dev/null +++ b/vda5050_msgs/msg/ProtocolFeatures.msg @@ -0,0 +1,2 @@ +OptionalParameter[] optional_parameters # List of supported and/or required optional parameters +AGVAction[] agv_actions # List of all actions with parameters supported by this AGV \ No newline at end of file diff --git a/vda5050_msgs/msg/ProtocolLimits.msg b/vda5050_msgs/msg/ProtocolLimits.msg new file mode 100644 index 0000000..8da706e --- /dev/null +++ b/vda5050_msgs/msg/ProtocolLimits.msg @@ -0,0 +1,3 @@ +MaxStringLens max_string_lens # Maximum lengths of strings +MaxArrayLens max_array_lens # Maximum lengths of arrays +Timing timing # Timing information \ No newline at end of file diff --git a/vda5050_msgs/msg/SafetyState.msg b/vda5050_msgs/msg/SafetyState.msg index dfb5ffa..c14d8fb 100644 --- a/vda5050_msgs/msg/SafetyState.msg +++ b/vda5050_msgs/msg/SafetyState.msg @@ -1,12 +1,12 @@ string e_stop # 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 + # 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 field_violation # 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 AUTO_ACK="AUTOACK" +string MANUAL="MANUAL" +string REMOTE="REMOTE" +string NONE="NONE" diff --git a/vda5050_msgs/msg/Timing.msg b/vda5050_msgs/msg/Timing.msg new file mode 100644 index 0000000..feb0d6a --- /dev/null +++ b/vda5050_msgs/msg/Timing.msg @@ -0,0 +1,7 @@ +float32 min_order_interval # Minimum interval for sending order messages to the AGV [s] + +float32 min_state_interval # Minimum interval for sending state messages to the AGV [s] + +float32 default_state_interval # Default interval for sending state messages if not defined [s] + +float32 visualization_interval # Default interval for sending on visualization topic [s] diff --git a/vda5050_msgs/msg/Trajectory.msg b/vda5050_msgs/msg/Trajectory.msg index c6a714e..76b7807 100644 --- a/vda5050_msgs/msg/Trajectory.msg +++ b/vda5050_msgs/msg/Trajectory.msg @@ -1,10 +1,10 @@ # 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. -float64[] knot_vector # Range: [0.0 … 1.0] Sequence of parameter values that determines where and +float64[] knot_vector # Range: [0.0 … 1.0] Sequence of parameter values that determines where and # how the control points affect the NURBS curve. knot_vector has size of number # of control points + degree + 1. diff --git a/vda5050_msgs/msg/TypeSpecification.msg b/vda5050_msgs/msg/TypeSpecification.msg new file mode 100644 index 0000000..6a8bf44 --- /dev/null +++ b/vda5050_msgs/msg/TypeSpecification.msg @@ -0,0 +1,37 @@ +string series_name # Generalized series name as specified by manufacturer + +string series_description # Human readable description of the AGV type series + +string agv_kinematic # Simplified description of AGV kinematics-type + +string agv_class # Simplified description of AGV class + +float64 max_load_mass # Maximum loadable mass [Kg] + +string[] localization_types # Simplified description of localization type + +string[] navigation_types # Path planning types supported by the AGV, sorted by priority + +# Enums for agv_kinematic +string DIFF = "DIFF" +string OMNI = "OMNI" +string THREEWHEEL = "THREEWHEEL" + +# Enums for agv_class +string FORKLIFT = "FORKLIFT" +string CONVEYOR = "CONVEYOR" +string TUGGER = "TUGGER" +string CARRIER = "CARRIER" + +# Enums for localization_types +string NATURAL = "NATURAL" +string REFLECTOR = "REFLECTOR" +string RFID = "RFID" +string DMC = "DMC" +string SPOT = "SPOT" +string GRID = "GRID" + +# Enums for navigation_types +string PHYSICAL_LINE_GUIDED = "PHYSICAL_LINE_GUIDED" +string VIRTUAL_LINE_GUIDED = "VIRTUAL_LINE_GUIDED" +string AUTONOMOUS = "AUTONOMOUS" \ No newline at end of file diff --git a/vda5050_msgs/msg/Visualization.msg b/vda5050_msgs/msg/Visualization.msg index 4d7ae40..aeb243c 100644 --- a/vda5050_msgs/msg/Visualization.msg +++ b/vda5050_msgs/msg/Visualization.msg @@ -1,5 +1,5 @@ # HEADER -int32 header_id # header ID of the message. The headerId is defined per topic and incremented by 1 with each sent +uint32 header_id # 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”) diff --git a/vda5050_msgs/msg/WheelDefinition.msg b/vda5050_msgs/msg/WheelDefinition.msg new file mode 100644 index 0000000..7b75d0c --- /dev/null +++ b/vda5050_msgs/msg/WheelDefinition.msg @@ -0,0 +1,14 @@ +string type # Wheel type +bool is_active_driven +bool is_active_steered +Position position +float64 diameter # Nominal diameter of the wheel [m] +float64 width # Nominal width of the wheel [m] +float64 center_displacement # Nominal displacement of the wheel’s center to the rotation point [m] +string constraints + +# Enums for wheel type +string DRIVE = "DRIVE" +string CASTER = "CASTER" +string FIXED = "FIXED" +string MECANUM = "MECANUM" \ No newline at end of file