You might run into a situation where you want to run multiple simulation instances of PlatformPilot, for example to test out a fleet of robots or to work simultaneously on multiple tasks. Hewever, if you just run multiple instances out of the box, they will all try to access the same network ports and write to the same log files, which is not going to work well. You can set up individual configurations to assign each instance its own resources without collisions, but that requires some work.

To simplify this task we provide a Docker configuration file which will help you to set up a testing environment. If you are not familiar with Docker please refer to the official documentation:

Building Container Image

Every neobotix-pilot-core- debian package contains the corresponding Dockerfile which can be easily extracted from the package.

  • Obtain the correct neobotix-pilot-core- debian package for your architechture and Ubuntu version.

  • Obtain the Dockerfile either by

    1. installing the debian package. Then you can find it in:

    2. or open the debian package with archiver program of your choice. Inside you will find another archive called data.tar.*. Open it and navigate to:

  • Put the Dockerfile in the same directory where the debian package is located and build the image like this:

    docker build -t <image_name> .
  • After successful build verify the image by running:

    docker images

Running Simulation In The Container

You can run multiple instances of a Docker container from one single Docker image. To run multiple pilot instances you need to redirect ports in order to access them. In this example four instances are started and the ports for the GTK GUI and the WebGUI are forwarded:

docker run --rm --name pilot-core-1 -p 5556:5555 -p 81:8888 <image_name>
docker run --rm --name pilot-core-2 -p 5557:5555 -p 82:8888 <image_name>
docker run --rm --name pilot-core-3 -p 5558:5555 -p 83:8888 <image_name>
docker run --rm --name pilot-core-4 -p 5559:5555 -p 84:8888 <image_name>

To stop runnning containers use:

docker stop pilot-core-1
docker stop pilot-core-2
docker stop pilot-core-3
docker stop pilot-core-4