Setup

Installation

RoboVAST is best installed within a virtual environment.

sudo apt install python3-venv
python3 -m venv venv
. venv/bin/activate

Clone the RoboVAST repository:

git clone https://github.com/cps-test-lab/robovast.git
cd robovast

Install RoboVAST and the navigation extension in editable mode:

pip install -e .
pip install -e src/robovast_nav

This will install the vast command and all its plugins. The vast command provides a unified interface to all RoboVAST functionality.

vast --help

# enable shell completions
vast install-completion
source ~/.bashrc  # or source the appropriate file for your shell

To be able to execute tests in a kubernetes cluster, execute the following command to install the required dependencies:

# get available cluster configs
vast execution cluster setup --list

# setup cluster with given config
vast execution cluster setup <cluster-config>

Dependencies

Kubernetes

Local execution is possible, but RoboVAST’s full capabilities—parallel, cluster-based test execution—require Kubernetes.

Either follow some Kubernetes Distribution Setup Instructions to set up your own cluster, e.g.

or use a managed Kubernetes service, e.g.,

For single-node testing and debugging, we recommend minikube. Follow the instructions here: minikube Installation Guide or this short summary:

# install minikube.
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube && rm minikube-linux-amd64
minikube start --extra-config=kubelet.housekeeping-interval=10s

# enable container registry
minikube addons enable registry

# install k9s
wget https://github.com/derailed/k9s/releases/latest/download/k9s_linux_amd64.deb
sudo dpkg -i k9s_linux_amd64.deb
rm k9s_linux_amd64.deb

# install kubectl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
source /usr/share/bash-completion/bash_completion
echo 'source <(kubectl completion bash)' >>~/.bashrc
echo 'alias k=kubectl' >>~/.bashrc
echo 'complete -o default -F __start_kubectl k' >>~/.bashrc
source ~/.bashrc

Note

By default, minikube does not encapsulate network communication by default. Communication between ROS2 nodes across tests might happen. Therefore ensure, that only a single test is executed at a time.

After setup, the following command should show the cluster information:

kubectl cluster-info

For debugging and monitoring, we recommend installing k9s.

Docker

RoboVAST uses Docker containers, e.g. for local test execution.

Follow the instructions here: Docker Installation Guide or this short summary:

sudo apt-get update
sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

sudo usermod -aG docker $USER
newgrp docker

docker --version