4.2. Deployment Example

This tutorial aims to explore the various ways to personalize the voraus software stack. It provides an overview of the services available, how they can be configured, and how users can customize their setup to meet specific requirements. In this example a development container is used, for further information please refer to the documentation about how to use VS Code and Docker in the voraus.pioneer Examples documentation.

4.2.1. voraus Services

The Compose file declares different services. Each service is explained in the following sections. Information on ports and environment variables is provided.

voraus.core

The voraus.core is the Docker image that includes most of the services required to build a modern automation stack. Through its open API (OPC UA and Python) it ensures flexible integration of devices and functionality from the driver level to the top interface level. The latter allows the voraus.core to be connected to higher-level platforms such as graphical user interfaces like the voraus.operator, ERP, or cloud services. The voraus.core service depends on CodeMeter, this service is explained later in this Chapter, see CodeMeter.

Environment Variables

Table 7 Overview of the environment variables of the voraus.core

Variable

Purpose

Possible Value / Example

CODEMETER__HOST

Host name of the CodeMeter container for the license allocations.

codemeter

VORAUS__robot__robotType

Configuration of used robot type.

See table below or Requirements

VORAUS__robot__isVirtual

Changes the robot virtual mode in the system configuration.

{True, False}

VORAUS__components__{component-key}__enabled

Enables/Disables a component

{True, False}

VORAUS__components__{component-key}__bindIp

Modifies the bind IP of a component. It must be 0.0.0.0 in the Docker context.

0.0.0.0, 127.0.0.1, …

VORAUS__components__{component-key}__host

Can be used to specify the host in the connection URI to this component.

VORAUS__components__{component-key}__bindPort

Modifies the bind port of a component.

40401, 5000, …

VORAUS__components__{component-key}__bindProtocol

Modifies the bind protocol of a component.

opc.tcp, http, https

The table Robot Type Configuration all available robot types are listed that can be configured in the Docker Compose File via the VORAUS__robot__robotType variable.

voraus.core Ports

Ports refer to the Docker container; port mapping can be carried out in the Compose file. In the exemplary voraus Docker Compose files the voraus.operator is accessible via port 8080.

Table 8 Overview of the voraus.core ports

Component

Component Key

Docker Container Port

voraus System Control

voraus-system-control-py

48400

voraus Robot Control

voraus-robot-control

48401

voraus Userapp / voraus Robot

48403

voraus Error Handler

voraus-error-handler

48404

voraus.operator

voraus-hmi

80

voraus Gateway

voraus-gateway

4840

voraus System Control

Manages the startup of core components and provides system utile.

Environment Variables
Table 9 Overview of the environment variables of the voraus System Control

Variable

Purpose

Possible Value / Example

VORAUS_SC_{component-key}_DISABLE_AUTOSTART

Tells voraus-system-control to skip a component in the autostart config, even if it is enabled in the global system configuration.

{True, False}

voraus Robot Control

Controls the robot (Fieldbus communication, Motion Planning, Interpolation and OPC UA Interface).

Environment Variables

The environment variables are defined in the documentation of the voraus Robot Control.

File Management

The description of the file management of voraus Robot Control and the available configuration options is provided in the documentation of the voraus Robot Control.

voraus Userapp / voraus Robot

When an application is started via the voraus.operator, an OPC UA server is started, which can be reached via port 48403, via which information such as the progress of the command is forwarded to the voraus.operator. This component is close to the end of its life and soon will be changed to the voraus Robot Arm.

voraus Error Handler

Error communication manager between core components.

voraus Operator

Browser-based user interface for robot systems.

voraus Gateway

A communication interface for voraus.operator.

voraus 3D Visu

A Python package for creating web-based 3D visualizations. More Information can be found in the component documentation: voraus 3D Visu. The voraus 3D Visu service also depends on CodeMeter, this service is explained later in this Chapter, see CodeMeter.

Table 10 Overview of the voraus 3D Visu port

Component

Component Key

Docker Container Port

voraus 3D Visu

voraus-3d-visu

80

Environment Variables

The environment variables are defined in the documentation of the voraus 3D Visu, examples are also given.

CodeMeter

It contains all the components you need to access CodeMeter based licenses. All other services depend on CodeMeter.

Environment Variables

Table 11 Overview of the environment variables of CodeMeter

Variable

Purpose

Possible Value / Example

CM_REMOTE_SERVER

Sets the license server host. If you use a local license, please add the following to the CodeMeter container in the Compose file:

extra_hosts:
- host.docker.internal:host-gateway

host.docker.internal, if you use local licenses, or IP address/hostname of your own CodeMeter license server.

dev container

The dev container is a local development environment. As mentioned before, please refer to the voraus.pioneer Examples documentation for more information and to download the voraus.pioneer Examples, which also include Dev Container Example.

The dev container is started from the named image, volumes defines that the local workspace is mounted. Command indicates that the dev container is idle in idle mode. In the environment CodeMeter is defined for license purposes, the dev container depends on all other services, therefore health checks are performed on those services.

4.2.2. Files in the Container

The following files in the Docker container of voraus.core contain additional information and data for the development. It is recommended to use persistent volumes or bind mounts for these paths to prevent data loss. The files are ordered in a Linux folder structure.

  • /etc/voraus - Contains the configurations for the components.

  • /var/log/voraus - Contains the log files.

  • /root/data - Contains the custom commands and user applications.