Docker and MoveIt Pro

Configure Docker

Manually Installing Docker on Ubuntu

The installation script linked in the Quick Start procedure will automatically install or update Docker. However, for manual setups,

Follow this guide for installing Docker on Ubuntu.

Then, follow this guide to complete the post-installation step to allow running Docker as a non-root user.

MoveIt Pro Images

Use the following command to pull down specific versions of MoveIt Pro.

docker pull picknikciuser/moveit-studio:<TAG>

Where <TAG> can be replaced by any version of feature name available in our public Docker Image repo.

Using Docker Images

MoveIt Pro provides standard docker-compose.yaml and .env files for launching the default simulated environment using Docker Compose. The environment variables defined in .env can be modified to run different versions of MoveIt Pro, or with different robot configurations.

When testing a certain feature on robot hardware, it is useful to use pre-built Docker images based on the feature tag or branch.

It is possible to use the STUDIO_DOCKER_TAG environment variable in the .env file to switch between versions of MoveIt Pro, e.g., STUDIO_DOCKER_TAG=2.7.0. However, we strongly recommend going through the official process of Upgrading MoveIt Pro since the standard docker-compose.yaml and .env files may change across versions.

A brief summary on some of the key environment variables defined in .env:

STUDIO_CONFIG_PACKAGE

The name of the robot configuration package to launch.

STUDIO_HOST_CONFIG_DIR

This environment variable sets the path to a directory where modifiable configuration for MoveIt Pro (in particular, custom Objectives, Waypoints, etc.) will be stored. This directory can be created by the install script, and must exist on the host machine before calling docker compose up.

STUDIO_HOST_DATA_DIR

This environment variable sets the path to a directory where the persistent data for MoveIt Pro will be stored. It is NOT recommended to modify the contents of this directory manually after installing MoveIt Pro - as doing so can break the installation on the host machine. This directory can be created by the install script, and must exist on the host machine before calling docker compose up.

STUDIO_HOST_USER_WORKSPACE

This environment variable sets the path to a directory where user-defined packages (configuration package, custom Behaviors, etc.) can be added. By default, MoveIt Pro will mount and build this workspace with colcon when starting up. This directory must be the root of a Colcon workspace containing your packages, and must exist on the host machine before calling docker compose up.

CYCLONEDDS_NETWORK_INTERFACE

The name of the network interface with which the host machine uses to communication with DDS peers. Can be determined using ip a or the like, e.g. CYCLONEDDS_NETWORK_INTERFACE=eno1

CYCLONEDDS_PEER_ADDRESSES

This environment variable should contain the IP addresses for all peer machines. For example, to run MoveIt Pro with the drivers on a realtime PC, and the agent/application on another, non-realtime PC, these might be set to 192.168.10.10 and 192.168.10.12 respectively. So, you would set CYCLONEDDS_PEER_ADDRESSES=192.168.10.10,192.168.10.12 on both machines.

Running MoveIt Pro

After setting the appropriate environment variables, you can run MoveIt Pro using Docker Compose. The provided docker-compose.yaml file specifies a number of services that can be executed across any machines in your DDS peer network. However, in the simplest case the entire application can be run with:

  • docker compose up

This is equivalent to using the moveit_pro executable installed with MoveIt Pro:

  • ./moveit_pro run

Setups that may have drivers or different services running on separate machines require specifying which services to launch. For example, suppose you are running non-realtime applications on an “agent PC” and drivers on a realtime PC. In this setup, both the docker-compose.yaml and the .env files should be copied to both machines, and the docker compose up command above should specify starting specific services on each machine:

  • On the realtime PC running the drivers:

    docker compose up drivers

  • On the non-realtime PC running the remainder of the applications:

    docker compose up agent_bridge rest_api frontend_agent web_ui

Once the application has started, open a web browser on the machine running the web_ui service and navigate to http://localhost.

Running Graphical Programs in Docker Containers

The standard docker-compose.yaml sets the necessary bind mounts and environment variables to allow the user to run graphical programs from within the docker container.

Building Docker Containers on ZFS

If you are using a non standard filesystem such as ZFS, you may run into errors when building containers locally. For instance, when executing docker compose build dev. To remedy this, follow the steps in the MoveIt Pro Troubleshooting Docker ZFS guide to update your Docker daemon to use the ZFS storage driver.