vda5050_connector package from vda5050_connector repovda5050_connector |
|
Package Summary
Tags | No category tags. |
Version | 0.0.1 |
License | BSD |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/tum-fml/ros_vda5050_connector.git |
VCS Type | git |
VCS Version | current_ros_noetic |
Last Updated | 2022-12-20 |
Dev Status | MAINTAINED |
CI status | Continuous Integration |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- TUM fml
Authors
- Florian Rothmeyer
- Florian Spiegel
How to Use the VDA-5050-Connector
Aim of the Repository
The idea of the repository is to ensure an easy connection of the VDA 5050 with ROS. It is intended to ensure an immediate integration into ROS. For ease of use, you can customize all interfaces by adapting the configuration files in the /config folder to match your requirements.
The VDA5050 connector only covers ROS communication, which means that all messages coming from the main control must be published to ROS topics. Since MQTT is widely used to communicate from the main control to AGVs, an example implementation to achieve compatibility between ROS and MQTT is shown below.
Prerequisites
- This project was tested under Ubuntu 18.04 LTS + ROS Melodic (Python 2.7) and Ubuntu 20.04 LTS + ROS Noetic (Python 3.7).
- ROS must be installed and a workspace (e.g.,
catkin_ws
) must be initialized.
Since the VDA5050 connector solely relies on ROS communication, any other communication protocol must be translated accordingly. VDA5050 specifies the use of MQTT as it is widely used for communication between the main control and AGVs. In the following we will describe a method for translating MQTT messages to ROS messages. For this, we use the ROS MQTT bridge to connect to a server via TLS. Of course, any other solution can be used as well. Names of outgoing and incoming topics can be adapted accordingly.
Installation of the ROS MQTT bridge
Clone the mqtt_bridge
repository and install the additional requirements to run the bridge (see https://github.com/groove-x/mqtt_bridge#prerequisites).
git clone https://github.com/groove-x/mqtt_bridge.git
NOTE
Be careful to choose the correct branch. If you plan to use ROS melodic, checkout the branch called “python2.7”.
The master branch will only work with ROS noetic.
Installation of the VDA5050 connector
Go to your catkin workspace and cd into the src folder:
cd ./src
Clone the VDA-5050-Connector
repository:
git clone https://github.com/idealworks/VDA-5050-Connector.git
Clone the vda5050_msgs
repository:
git clone https://github.com/ipa320/vda5050_msgs.git
NOTE
Although thevda5050_msgs
repository provides most of the required message types, some additional message types must be defined in order to provide the full functionality of VDA5050.
Since we have not send a merge request to the vda5050_msgs repository yet, do the following after cloning the vda5050_msgs repository:
copy all .msg files in /msg of the
VDA-5050-Connector
repository into the /msg folder of thevda5050_msgs
repositoryreplace the CmakeLists.txt in the
vda5050_msgs
repository with the one within the /msg/CmakeLists of theVDA-5050-Connector
repository
After cloning all required repositories, build your catkin workspace.
Customization of the configuration
There are three distinct parts of the configuration that must be customized to fulfill your connection requirements.
- ROS MQTT bridge server connection (“mqtt_bridge_tls.yaml”)
- ROS MQTT bridge topic configuration (“mqtt_bridge_topics.yaml”)
- VDA5050 connector topic configuration (“vda5050_connector_topics.yaml”)
Each of them is represented by a single configuration file in the /config folder. In the following sections we will go through them step by step.
NOTE
Since we wanted to use the ROS MQTT bridge out of the box with no further customization,
all required parameters configuration files can be found in the /config folder in theVDA-5050-Connector
repository (and not in themqtt_bridge
repository).
ROS MQTT bridge server connection
To make the ROS MQTT bridge work with TLS, complete the “mqtt_bridge_tls.yaml” configuration file in the /config folder.
TLS configuration
```text tls: ca_certs:Topic example
```text ##### bridge from ROS to MQTT##### topic_from:ROS MQTT bridge output
```console started roslaunch server http://VDA5050 connector output
```console [ INFO] [1656490735.862272168]: Using 1.1.03 for parameter ~AGV_Data/version [ INFO] [1656490735.863479005]: Using template_1 for parameter ~AGV_Data/manufacturer [ INFO] [1656490735.864071660]: Using AGV721 for parameter ~AGV_Data/serialNumber [ INFO] [1656490735.865060948]: Using /error_1 as error topic [ INFO] [1656490735.866858541]: for connection_daemon/topics_publish use: [ INFO] [1656490735.868006928]: for connection_daemon/topics_subscribe use: [ INFO] [1656490735.868029030]: - parameter: /supervisor/connection_daemon/topics_subscribe/connectionState value: /connected [ INFO] [1656490735.868595221]: Using uagv for parameter ~AGV_Data/interfaceName [ INFO] [1656490735.869125729]: Using v2 for parameter ~AGV_Data/majorVersion [ INFO] [1656490735.869653581]: Using /connected for parameter ~connection_daemon/topics_subscribe/connectionState [ INFO] [1656490735.872009204]: Using 1.1.03 for parameter ~AGV_Data/version [ INFO] [1656490735.872491504]: Using template_1 for parameter ~AGV_Data/manufacturer [ INFO] [1656490735.872921588]: Using AGV721 for parameter ~AGV_Data/serialNumber [ INFO] [1656490735.873329962]: Using /error_1 as error topic [ INFO] [1656490735.874538560]: for state_daemon/topics_publish use: [ INFO] [1656490735.874560377]: - parameter: /supervisor/state_daemon/topics_publish/state value: /state [ INFO] [1656490735.893055466]: for state_daemon/topics_subscribe use: [ INFO] [1656490735.893084950]: - parameter: /supervisor/state_daemon/topics_subscribe/actionStates value: /actionStates [ INFO] [1656490735.893092672]: - parameter: /supervisor/state_daemon/topics_subscribe/agvPosition/deviationRange value: /deviationRange [ INFO] [1656490735.893108816]: - parameter: /supervisor/state_daemon/topics_subscribe/agvPosition/localizationScore value: /localizationScore [ INFO] [1656490735.893114964]: - parameter: /supervisor/state_daemon/topics_subscribe/agvPosition/mapDescription value: /mapDescription [ INFO] [1656490735.893126128]: - parameter: /supervisor/state_daemon/topics_subscribe/agvPosition/mapId value: /mapId [ INFO] [1656490735.893138406]: - parameter: /supervisor/state_daemon/topics_subscribe/agvPosition/pose value: /odometry [ INFO] [1656490735.893146836]: - parameter: /supervisor/state_daemon/topics_subscribe/agvPosition/positionInitialized value: /positionInitialized [ INFO] [1656490735.893154395]: - parameter: /supervisor/state_daemon/topics_subscribe/batteryState/batteryCharge value: /batteryCharge [ INFO] [1656490735.893162173]: - parameter: /supervisor/state_daemon/topics_subscribe/batteryState/batteryHealth value: /batteryHealth [ INFO] [1656490735.893169512]: - parameter: /supervisor/state_daemon/topics_subscribe/batteryState/batteryVoltage value: /batteryVoltage [ INFO] [1656490735.893177634]: - parameter: /supervisor/state_daemon/topics_subscribe/batteryState/charging value: /charging [ INFO] [1656490735.893185112]: - parameter: /supervisor/state_daemon/topics_subscribe/batteryState/reach value: /reach [ INFO] [1656490735.893192605]: - parameter: /supervisor/state_daemon/topics_subscribe/distanceSinceLastNode value: /distanceSinceLastNode [ INFO] [1656490735.893200330]: - parameter: /supervisor/state_daemon/topics_subscribe/driving value: /driving [ INFO] [1656490735.893207638]: - parameter: /supervisor/state_daemon/topics_subscribe/edgeStates value: /edgeState [ INFO] [1656490735.893216187]: - parameter: /supervisor/state_daemon/topics_subscribe/errors value: /errors [ INFO] [1656490735.893224128]: - parameter: /supervisor/state_daemon/topics_subscribe/information value: /information [ INFO] [1656490735.893231756]: - parameter: /supervisor/state_daemon/topics_subscribe/lastNodeId value: /lastNodeId [ INFO] [1656490735.893239590]: - parameter: /supervisor/state_daemon/topics_subscribe/lastNodeSequenceId value: /lastNodeSequenceId [ INFO] [1656490735.893246911]: - parameter: /supervisor/state_daemon/topics_subscribe/loads value: /loads [ INFO] [1656490735.893255322]: - parameter: /supervisor/state_daemon/topics_subscribe/newBaseRequest value: /newBaseRequest [ INFO] [1656490735.893262908]: - parameter: /supervisor/state_daemon/topics_subscribe/nodeStates value: /nodeState [ INFO] [1656490735.893272540]: - parameter: /supervisor/state_daemon/topics_subscribe/operatingMode value: /operatingMode [ INFO] [1656490735.893280114]: - parameter: /supervisor/state_daemon/topics_subscribe/orderId value: /orderId [ INFO] [1656490735.893287369]: - parameter: /supervisor/state_daemon/topics_subscribe/orderUpdateId value: /orderUpdateId [ INFO] [1656490735.893296333]: - parameter: /supervisor/state_daemon/topics_subscribe/paused value: /paused [ INFO] [1656490735.893304115]: - parameter: /supervisor/state_daemon/topics_subscribe/safetyState/eStop value: /eStop [ INFO] [1656490735.893311934]: - parameter: /supervisor/state_daemon/topics_subscribe/safetyState/fieldViolation value: /fieldViolation [ INFO] [1656490735.893320184]: - parameter: /supervisor/state_daemon/topics_subscribe/velocity value: /rosVelocity [ INFO] [1656490735.893327443]: - parameter: /supervisor/state_daemon/topics_subscribe/zoneSetId value: /zoneSetId [ INFO] [1656490735.893811918]: Using uagv for parameter ~AGV_Data/interfaceName [ INFO] [1656490735.894266591]: Using v2 for parameter ~AGV_Data/majorVersion ```Wiki Tutorials
Launch files
- launch/order_mockup.launch
- launch/vda5050_connector.launch
- launch/test_local.launch
-
- bridge_params
- launch/action_mockup.launch
- launch/test_aws.launch
-
- bridge_params
- launch/vda5050_mockup.launch
- launch/ros_mqtt_bridge.launch
-
- bridge_params
Messages
- msg/Info.msg
- msg/LoadDimensions.msg
- msg/Edge.msg
- msg/ControlPoint.msg
- msg/BoundingBoxReference.msg
- msg/Connection.msg
- msg/NodePosition.msg
- msg/Header.msg
- msg/Order.msg
- msg/Error.msg
- msg/Load.msg
- msg/ActionParameter.msg
- msg/Loads.msg
- msg/Velocity.msg
- msg/InfoReference.msg
- msg/AGVPosition.msg
- msg/InstantActions.msg
- msg/Visualization.msg
- msg/BatteryState.msg
- msg/ErrorReference.msg
- msg/OrderMotion.msg
- msg/Errors.msg
- msg/SafetyState.msg
- msg/NodeStates.msg
- msg/CurrentAction.msg
- msg/Node.msg
- msg/NodeState.msg
- msg/OrderInformation.msg
- msg/Information.msg
- msg/EdgeState.msg
- msg/Action.msg
- msg/Trajectory.msg
- msg/OrderActions.msg
- msg/EdgeStates.msg
- msg/ActionStates.msg
Services
Plugins
Recent questions tagged vda5050_connector at Robotics Stack Exchange
vda5050_connector package from vda5050_connector repovda5050_connector |
|
Package Summary
Tags | No category tags. |
Version | 0.0.1 |
License | BSD |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/tum-fml/ros_vda5050_connector.git |
VCS Type | git |
VCS Version | current_ros_melodic |
Last Updated | 2022-12-20 |
Dev Status | MAINTAINED |
CI status | Continuous Integration |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- TUM fml
Authors
- Florian Rothmeyer
- Florian Spiegel
How to Use the VDA-5050-Connector
Aim of the Repository
The idea of the repository is to ensure an easy connection of the VDA 5050 with ROS. It is intended to ensure an immediate integration into ROS. For ease of use, you can customize all interfaces by adapting the configuration files in the /config folder to match your requirements.
The VDA5050 connector only covers ROS communication, which means that all messages coming from the main control must be published to ROS topics. Since MQTT is widely used to communicate from the main control to AGVs, an example implementation to achieve compatibility between ROS and MQTT is shown below.
Prerequisites
- This project was tested under Ubuntu 18.04 LTS + ROS Melodic (Python 2.7) and Ubuntu 20.04 LTS + ROS Noetic (Python 3.7).
- ROS must be installed and a workspace (e.g.,
catkin_ws
) must be initialized.
Since the VDA5050 connector solely relies on ROS communication, any other communication protocol must be translated accordingly. VDA5050 specifies the use of MQTT as it is widely used for communication between the main control and AGVs. In the following we will describe a method for translating MQTT messages to ROS messages. For this, we use the ROS MQTT bridge to connect to a server via TLS. Of course, any other solution can be used as well. Names of outgoing and incoming topics can be adapted accordingly.
Installation of the ROS MQTT bridge
Clone the mqtt_bridge
repository and install the additional requirements to run the bridge (see https://github.com/groove-x/mqtt_bridge#prerequisites).
git clone https://github.com/groove-x/mqtt_bridge.git
NOTE
Be careful to choose the correct branch. If you plan to use ROS melodic, checkout the branch called “python2.7”.
The master branch will only work with ROS noetic.
Installation of the VDA5050 connector
Go to your catkin workspace and cd into the src folder:
cd ./src
Clone the VDA-5050-Connector
repository:
git clone https://github.com/idealworks/VDA-5050-Connector.git
Clone the vda5050_msgs
repository:
git clone https://github.com/ipa320/vda5050_msgs.git
NOTE
Although thevda5050_msgs
repository provides most of the required message types, some additional message types must be defined in order to provide the full functionality of VDA5050.
Since we have not send a merge request to the vda5050_msgs repository yet, do the following after cloning the vda5050_msgs repository:
copy all .msg files in /msg of the
VDA-5050-Connector
repository into the /msg folder of thevda5050_msgs
repositoryreplace the CmakeLists.txt in the
vda5050_msgs
repository with the one within the /msg/CmakeLists of theVDA-5050-Connector
repository
After cloning all required repositories, build your catkin workspace.
Customization of the configuration
There are three distinct parts of the configuration that must be customized to fulfill your connection requirements.
- ROS MQTT bridge server connection (“mqtt_bridge_tls.yaml”)
- ROS MQTT bridge topic configuration (“mqtt_bridge_topics.yaml”)
- VDA5050 connector topic configuration (“vda5050_connector_topics.yaml”)
Each of them is represented by a single configuration file in the /config folder. In the following sections we will go through them step by step.
NOTE
Since we wanted to use the ROS MQTT bridge out of the box with no further customization,
all required parameters configuration files can be found in the /config folder in theVDA-5050-Connector
repository (and not in themqtt_bridge
repository).
ROS MQTT bridge server connection
To make the ROS MQTT bridge work with TLS, complete the “mqtt_bridge_tls.yaml” configuration file in the /config folder.
TLS configuration
```text tls: ca_certs:Topic example
```text ##### bridge from ROS to MQTT##### topic_from:ROS MQTT bridge output
```console started roslaunch server http://VDA5050 connector output
```console [ INFO] [1656490735.862272168]: Using 1.1.03 for parameter ~AGV_Data/version [ INFO] [1656490735.863479005]: Using template_1 for parameter ~AGV_Data/manufacturer [ INFO] [1656490735.864071660]: Using AGV721 for parameter ~AGV_Data/serialNumber [ INFO] [1656490735.865060948]: Using /error_1 as error topic [ INFO] [1656490735.866858541]: for connection_daemon/topics_publish use: [ INFO] [1656490735.868006928]: for connection_daemon/topics_subscribe use: [ INFO] [1656490735.868029030]: - parameter: /supervisor/connection_daemon/topics_subscribe/connectionState value: /connected [ INFO] [1656490735.868595221]: Using uagv for parameter ~AGV_Data/interfaceName [ INFO] [1656490735.869125729]: Using v2 for parameter ~AGV_Data/majorVersion [ INFO] [1656490735.869653581]: Using /connected for parameter ~connection_daemon/topics_subscribe/connectionState [ INFO] [1656490735.872009204]: Using 1.1.03 for parameter ~AGV_Data/version [ INFO] [1656490735.872491504]: Using template_1 for parameter ~AGV_Data/manufacturer [ INFO] [1656490735.872921588]: Using AGV721 for parameter ~AGV_Data/serialNumber [ INFO] [1656490735.873329962]: Using /error_1 as error topic [ INFO] [1656490735.874538560]: for state_daemon/topics_publish use: [ INFO] [1656490735.874560377]: - parameter: /supervisor/state_daemon/topics_publish/state value: /state [ INFO] [1656490735.893055466]: for state_daemon/topics_subscribe use: [ INFO] [1656490735.893084950]: - parameter: /supervisor/state_daemon/topics_subscribe/actionStates value: /actionStates [ INFO] [1656490735.893092672]: - parameter: /supervisor/state_daemon/topics_subscribe/agvPosition/deviationRange value: /deviationRange [ INFO] [1656490735.893108816]: - parameter: /supervisor/state_daemon/topics_subscribe/agvPosition/localizationScore value: /localizationScore [ INFO] [1656490735.893114964]: - parameter: /supervisor/state_daemon/topics_subscribe/agvPosition/mapDescription value: /mapDescription [ INFO] [1656490735.893126128]: - parameter: /supervisor/state_daemon/topics_subscribe/agvPosition/mapId value: /mapId [ INFO] [1656490735.893138406]: - parameter: /supervisor/state_daemon/topics_subscribe/agvPosition/pose value: /odometry [ INFO] [1656490735.893146836]: - parameter: /supervisor/state_daemon/topics_subscribe/agvPosition/positionInitialized value: /positionInitialized [ INFO] [1656490735.893154395]: - parameter: /supervisor/state_daemon/topics_subscribe/batteryState/batteryCharge value: /batteryCharge [ INFO] [1656490735.893162173]: - parameter: /supervisor/state_daemon/topics_subscribe/batteryState/batteryHealth value: /batteryHealth [ INFO] [1656490735.893169512]: - parameter: /supervisor/state_daemon/topics_subscribe/batteryState/batteryVoltage value: /batteryVoltage [ INFO] [1656490735.893177634]: - parameter: /supervisor/state_daemon/topics_subscribe/batteryState/charging value: /charging [ INFO] [1656490735.893185112]: - parameter: /supervisor/state_daemon/topics_subscribe/batteryState/reach value: /reach [ INFO] [1656490735.893192605]: - parameter: /supervisor/state_daemon/topics_subscribe/distanceSinceLastNode value: /distanceSinceLastNode [ INFO] [1656490735.893200330]: - parameter: /supervisor/state_daemon/topics_subscribe/driving value: /driving [ INFO] [1656490735.893207638]: - parameter: /supervisor/state_daemon/topics_subscribe/edgeStates value: /edgeState [ INFO] [1656490735.893216187]: - parameter: /supervisor/state_daemon/topics_subscribe/errors value: /errors [ INFO] [1656490735.893224128]: - parameter: /supervisor/state_daemon/topics_subscribe/information value: /information [ INFO] [1656490735.893231756]: - parameter: /supervisor/state_daemon/topics_subscribe/lastNodeId value: /lastNodeId [ INFO] [1656490735.893239590]: - parameter: /supervisor/state_daemon/topics_subscribe/lastNodeSequenceId value: /lastNodeSequenceId [ INFO] [1656490735.893246911]: - parameter: /supervisor/state_daemon/topics_subscribe/loads value: /loads [ INFO] [1656490735.893255322]: - parameter: /supervisor/state_daemon/topics_subscribe/newBaseRequest value: /newBaseRequest [ INFO] [1656490735.893262908]: - parameter: /supervisor/state_daemon/topics_subscribe/nodeStates value: /nodeState [ INFO] [1656490735.893272540]: - parameter: /supervisor/state_daemon/topics_subscribe/operatingMode value: /operatingMode [ INFO] [1656490735.893280114]: - parameter: /supervisor/state_daemon/topics_subscribe/orderId value: /orderId [ INFO] [1656490735.893287369]: - parameter: /supervisor/state_daemon/topics_subscribe/orderUpdateId value: /orderUpdateId [ INFO] [1656490735.893296333]: - parameter: /supervisor/state_daemon/topics_subscribe/paused value: /paused [ INFO] [1656490735.893304115]: - parameter: /supervisor/state_daemon/topics_subscribe/safetyState/eStop value: /eStop [ INFO] [1656490735.893311934]: - parameter: /supervisor/state_daemon/topics_subscribe/safetyState/fieldViolation value: /fieldViolation [ INFO] [1656490735.893320184]: - parameter: /supervisor/state_daemon/topics_subscribe/velocity value: /rosVelocity [ INFO] [1656490735.893327443]: - parameter: /supervisor/state_daemon/topics_subscribe/zoneSetId value: /zoneSetId [ INFO] [1656490735.893811918]: Using uagv for parameter ~AGV_Data/interfaceName [ INFO] [1656490735.894266591]: Using v2 for parameter ~AGV_Data/majorVersion ```Wiki Tutorials
Launch files
- launch/order_mockup.launch
- launch/vda5050_connector.launch
- launch/test_local.launch
-
- bridge_params
- launch/action_mockup.launch
- launch/test_aws.launch
-
- bridge_params
- launch/vda5050_mockup.launch
- launch/ros_mqtt_bridge.launch
-
- bridge_params
Messages
- msg/Info.msg
- msg/LoadDimensions.msg
- msg/Edge.msg
- msg/ControlPoint.msg
- msg/BoundingBoxReference.msg
- msg/Connection.msg
- msg/NodePosition.msg
- msg/Header.msg
- msg/Order.msg
- msg/Error.msg
- msg/Load.msg
- msg/ActionParameter.msg
- msg/Loads.msg
- msg/Velocity.msg
- msg/InfoReference.msg
- msg/AGVPosition.msg
- msg/InstantActions.msg
- msg/Visualization.msg
- msg/BatteryState.msg
- msg/ErrorReference.msg
- msg/OrderMotion.msg
- msg/Errors.msg
- msg/SafetyState.msg
- msg/NodeStates.msg
- msg/CurrentAction.msg
- msg/Node.msg
- msg/NodeState.msg
- msg/OrderInformation.msg
- msg/Information.msg
- msg/EdgeState.msg
- msg/Action.msg
- msg/Trajectory.msg
- msg/OrderActions.msg
- msg/EdgeStates.msg
- msg/ActionStates.msg