Package Summary

Tags No category tags.
Version 1.1.1
License BSD Clause 3
Build type AMENT_CMAKE

Repository Summary

Checkout URI
VCS Type git
VCS Version galactic-devel
Last Updated 2022-11-11
CI status No Continuous Integration
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

ROS2 to VDA5050 / VDA5050 to ROS2 connector

Additional Links

No additional links.


  • Leandro Pineda


  • John Alejandro Duarte Carrasco
  • Leandro Pineda

VDA5050 Connector

A ROS2 package which implements a connector for VDA5050, a standardized interface for communication between fleets of AGVs/AMRs and a central Master Control.


The package names itself Connector, since it can be thought as a bridge between a VDA5050 Master Control (MC) and the ROS2 robot API.

VDA5050 General diagram

The connector is composed of three main parts (ROS2 nodes):

  • MQTT_bridge: Communicates the VDA5050 <> ROS2 topics, translating VDA5050 messages into ROS2 vda5050_msgs and vice versa.
  • Controller: Processes the VDA5050 robot execution as per standard specification. It validates, executes, or rejects orders and instant actions, as well as assembles feedback information to the MC.
  • Adapter: Provides the interaction between the controller and the Robot API. The adapter is the one who knows how to send a navigation goal request, execute an action or retrieve specific information robot such as battery or odometry.

Connector diagram

The way the adapter knows how to execute the different operations requested by the controller is using ROS2 plugins (components). The current project provides three plugin template interfaces, called handlers, which cover the main communication paths:

  • State handler: Designed for updating robot specific information on the VDA5050 order_state.
  • NavTONode handler: Designed for sending goals to the robot navigation stack.
  • VDA Action handler: Designed for handling requests to execute specific actions (localize, lift a load, etc).

Connector diagram

How to use it

The package is also a library package; it exports the headers and binary files to create and assemble a specific adapter. To create your own adapter package, add this package as a dependency and define the different plugin handlers for your robot. You can also customize the adapter core functionalities if desired.

To do this this, you can check the vda5050_examples repository, where you will find examples of adapter packages, for python and C++, as well as docker scripts to quickly start testing them.


  • ROS2 - ament_cmake: The package is based on ROS2, and uses ament_cmake.
  • vda5050_msgs: ROS2 messages for the VDA5050 standard (version 2.0).
  • pluginlib: The adapter uses plugins to load the different handlers.
  • python3-paho-mqtt: The mqtt_bridge uses the paho-mqtt library as the mqtt client.


Download vda5050_msgs package into your ROS2 workspace

cd ~/dev_ws/ &&
git clone --branch ros2-vda5050-v2 \
    && mv vda5050_msgs/vda5050_msgs ./src/vda5050_msgs \
    && mv vda5050_msgs/vda5050_serializer ./src/vda5050_serializer \
    && rm -rf vda5050_msgs

Then download this package into the ROS2 workspace src folder and compile it using colcon build.


The package provides several lint test (ament_pep257 and ament_flake8 for Python, ament_clang_format for C++ and ament_copyright), as well as specific unit tests to check the correct functionality of the different modules. To run the tests, execute:

colcon test --packages-select vda5050_connector && colcon test-result --verbose


Please see the CONTRIBUTING document.




Changelog for package vda5050_connector

1.1.1 (2022-10-28)

  • Fixed ROS buildfarm job (#29)

1.1.0 (2022-10-17)

  • Added VDA5050 connector package (#28)

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Launch files

No launch files found


No message files found.


No plugins found.

Recent questions tagged vda5050_connector at Robotics Stack Exchange