Search
To successfully use ROS, you need to be able to perform basic tasks in Linux. Refer e.g. to MRS Cheatsheet to get a quick reference guide.
Apptainer is a virtualization technology somewhat similar to Docker. But there are some key differences:
sudo
/tmp
-B <dir>
ARO_MOUNT
We choose Apptainer over Docker because it is friendlier with GUI applications and it is the framework used in HPC (High-performance Computing) clusters such as the RCI cluster running at CTU, or Metacentrum. Also, running Apptainer containers doesn't require administrator privileges. We also used Apptainer with success for running local multi-robot simulation tests for DARPA SubT Challenge.
Singularity CE == Apptainer (the latter is just a newer name). You can find both terms when googling.
We use Apptainer, but Singularity would also work. It just uses singularity wherever we use apptainer.
singularity
apptainer
At labs (e.g., E130, E132) and the Turtlebot robots, Robot Operating System (ROS) is available through pre-downloaded Apptainer containers. The computers and robots automatically handle updating the images so you can be sure you're always using the latest image.
A general guide for connecting to the desktops/robots in the lab is here: TurtleBot Lab Guide. Use your CTU password to login to these machines.
To start using ROS in Apptainer, clone the deploy repository somewhere to your home directory. Once you have the deploy repository, you can run our Apptainer image with Ubuntu 24.04 + ROS Jazzy using: scripts/start_apptainer_aro .
scripts/start_apptainer_aro
First-time run:
git clone https://gitlab.fel.cvut.cz/robolab/deploy.git deploy/scripts/start_apptainer_aro # console prompt should start with ARO now
Following runs:
deploy/scripts/start_apptainer_aro # console prompt should start with ARO now
The script will create (or update) a ROS workspace in folder workspace next to deploy. The codes you need to edit for homeworks are all in workspace/src/student-packages.
workspace
deploy
workspace/src/student-packages
You can make use of the fact that the home directory in labs is a shared network mount, so changes you do on the desktop computer are almost instantly available also on the turtlebots.
You will get the smoothest and easiest experience on Ubuntu 24.04. Newer Ubuntus still offer a smooth experience. Other Linux distros can be used, but may require a few manual setup steps. Apptainer only runs on Linux. If you need to use a different operating system, there are alternatives, which are, however, not officially supported by the teaching team. We think it is good for you to get an Ubuntu installation and familiarize yourself with it during the study of Cybernetics.
First time, choose a folder on your computer that has enough disk space (at least 3 GB) and is preferably on an SSD. cd to the folder and run the following commands that will download the deploy repository, install Apptainer, download the image and finally start a container.
cd
The install_apptainer script works on Ubuntu 24.04+. If you have a different Linux flavor, you will need to install Apptainer manually. The install_apptainer script will point you to the relevant documentation.
install_apptainer
git clone https://gitlab.fel.cvut.cz/robolab/deploy.git deploy/scripts/install_apptainer deploy/scripts/download_apptainer_image deploy/scripts/start_apptainer_aro # console prompt should start with ARO now
The script will create (or update) a ROS workspace in folder workspace next to deploy. The codes you need to edit for homeworks are all in workspace/src/student-packages/aro_exploration.
workspace/src/student-packages/aro_exploration
Once you have the initial installation done, running Apptainer with ROS is as easy as:
The script will automatically check for new releases of the Apptainer ARO image and download them if necessary.
By default, Apptainer makes your normal home directory accessible inside the container, so you can edit files using any editor you like. However, to get a fully-featured IDE experience, it is better to start an IDE from within the container, as then it has access to all the ROS programs that are needed to test your code. The provided Apptainer image comes with several IDEs preinstalled:
code . # Start VSCode inside the Apptainer container pycharm # Start Pycharm inside the Apptainer container subl # Start Sublime editor inside the Apptainer container vim # start VIm nvim # start neovim
The start_apptainer_aro script will also auto-update the copy of student-packages repository where you work on your homeworks. We expect the updates of this repository should not be frequent, but we reserve the right to push updates during the semester. The automatic update works by calling git fetch origin && git merge origin/master in the repository. If you only edit the parts of files you are supposed to, the update should be seamless. If your local changes are not compatible with the update, you will be informed by the script and it will guide you through the next possible steps.
start_apptainer_aro
git fetch origin && git merge origin/master
For the curious, here's a short summary what all the provided scripts do for you:
apptainer exec robolab.sif initialize_workspace_aro
initialize_workspace_aro
colcon build
source ~/workspace/install/setup.bash
.bashrc
ImportError: "from catkin_pkg.package import parse_package" failed: No module named 'catkin_pkg'
if [ -z "$APPTAINER_NAME" ]; then ORIGINAL_CONDA_ACTIVATION_CODE; fi
pip3 install --user --upgrade numpy
pip3 uninstall numpy
sudo apt install --reinstall python3-numpy
aro_exploration
ros2 launch
~/.bashrc
if [ -z "$APPTAINER_NAME" ]; then YOUR_ROS_SOURCING_COMMANDS; fi
~/.profile
if [ -n "$BASH_VERSION" ]; then # include .bashrc if it exists if [ -f "$HOME/.bashrc" ]; then . "$HOME/.bashrc" fi fi
<Tab>
[ -n "$APPTAINER_NAME" ] && [ -n "$TMUX" ] && source /path/to/your/workspace/install/setup.bash
[rmw_zenoh_cpp]: Unable to connect to a Zenoh router. Have you started a router with `ros2 run rmw_zenoh_cpp rmw_zenohd`?