Skip to content

Frequently Asked Questions

What is a Function Block?

They are individual execution blocks executed by the drag&bot state machine as part of the created programs. Programs are composed of Function Blocks. Function Blocks can be created directly in the drag&bot web interface and be programmed using drag&bot in-built IDE. Each function block includes the information in a standardized way:

  • Name: also known as title. It is an user friendly identification.
  • Description: detailed description of what the Function Block does.
  • ID: unique identification string
  • Python Snippet: code which is executed on entry
  • Input Parameters: users can link them and they are accessible in the python code
  • Output Parameters: users can link them and they are accessible in the python code
  • Version: for auto-updates, maintenance and version control.
  • Icon: for usability purposes
  • Errorcodes: string error codes which may trigger the function

Technically they are JSON objects. Python snippet is serialized as string field in the JSON.

What is a drag&bot component?

A drag&bot component (sometimes also called module) is a package typically containing:

  • drag&bot description of the component: drag&bot uses this information to identify the component, its properties and to know how to start it.
  • Function Blocks related to the component. Function Blocks packed in a component are automatically displayed to the user so that they can be easily imported. Updates will also be displayed to users.
  • Usually one ROS package following the common file structure, containing launch files, etc.
  • URDF and CAD meshes of the hardware: if needed, they can be packaged together. E.g. a 3D model of a gripper.
  • Readme and changelog: for maintainability. Notes and changes.
  • Any additional file or directory, e.g. in case of a robot driver, sometimes the program which needs to be installed in the robot controller is also included.

A component is usually stored as a directory in a git repository. Here is an example provided. Also, it is possible to fork a existing ROS repository and create the necessary overlay for running it as part of drag&bot. For example, this is the case with the driver for usb cameras.

Components are usually associated to drivers for specific hardware (e.g. robots, cameras, grippers, PLCs, etc.) but they can also provide any software functionality (e.g. vision algorithms, G-Code, etc.).

How to create a new component?

Please check this section for detailed information.

Where to place the components?

After installing drag&bot, a new directory tree is created in the user home directory:


This directory is mounted on drag&bot start-up and shared between host system and drag&bot. This directory contains the source code of each additional component added to drag&bot. This directory works as an overlaying system to the core.

The directory is a ROS catkin workspace which is built on drag&bot start-up. Therefore, any change in a ROS package will require drag&bot restart. Please check this section for detailed information.

What is the difference between a drag&bot Component and a Module?

Not from a technical point of view. Modules usually provide a bunch of new functionalities such as vision, while components are usually drivers for specific hardware. Sometimes, both terms are used indistinctly specially during development.

How does drag&bot work?

drag&bot is based on docker and runs different containers, creating a safe and stable environment independent from the host Ubuntu machine. Those containers provide an accessible web interface from any network interface of the host machine (including localhost) and a customized ROS system where a state machine and components run.

What is host system? What is guest?

Host is the computer running drag&bot. Guest is the container running ROS, as an independent operating system.

How can I access the ROS system?

Open the terminal and run the command:


It was created as bash alias during drag&bot installation. Please check this section for detailed information.

Can drag&bot be installed in a virtual machine?

No. This is not allowed and is blocked.

Can I create my own Wizards and Guides?

On demand we may able to provide some examples for frontend development. Currently there is no method to include your own developments without our active support. Please contact us for more information.

If you host your own web server, you can show the url content as iFrame through the Custom URL runtime panel in the drag&bot run view.

Which IDE do I need to program drag&bot function blocks?

For creating new function blocks you can use drag&bot web interface directly. It provides an in-built functionality for this purpose.

Which IDE do I need to program drag&bot components?

For creating new components, you need any text editor or programming IDE such as:

Which programming languages are used for programming for drag&bot?

Typically C++ and Python are the standard programming languages for creating ROS nodes. Function blocks are completely written in Python and JSON.

Can I install new libraries in drag&bot?

Yes, if you access through dnb-console alias to the docker container, then you can add new libraries through apt-get, pip or similar tools.

How can I use RVIZ, RQT or similar ROS tools?

As the drag&bot ROS container is provided without graphics environment, you will need to install rviz or rqt in your host system. Running ROS in host system is neither desired nor required for rviz and rqt, as they will communicate with the docker container automatically. If not you can always export the ROS master URI by executing the following command in a terminal:

export ROS_MASTER_URI=http://localhost:11311