Skip to content

Project Setup

TylerV edited this page Jan 17, 2026 · 20 revisions

STILL UNDER CONSTRUCTION (if any issues persist, edit the issue + fix under troubleshooting)

Ubuntu Setup:

What is Ubuntu and why do we use it?

Ubuntu is a Linux distribution, a ready-to-use operating system that is built on top of the Linux kernel. For the project, we will be using Ubuntu 22.04.3 (Codenamed Jammy Jellyfish) as our main OS, for many reasons:

  1. ROS2 is a library practically built to be compatible with Ubuntu.
  2. Ubuntu is the most common choice when it comes to messing around with the flight stack.
  3. Linux distros (distributions) are open source, meaning they can be used by anyone and are open to modifications, with excellent support.

Most packages and applications we will be using for drones (such as ROS2) do not support macOS or Windows OS. Its compatibility matches with a Linux OS, which is why we decided on using Ubuntu (a specific version of Linux) as a workspace. Beforehand, an Ubuntu image was used for a virtual machine setup on each computer, but it was agreed that this is not optimal, as VMs would dedicate a specific space on a computer to run, and no one knows how much space they actually need, which requires nonstop configuration. We will be using a Docker image instead, which is much better due to it taking up space dedicated to your host operating system. This means it does not need partition reconfiguration, and everyone will share the same setups. The section below will explain how Docker works, and how prepare your own environment.

Docker

Docker is a platform that uses OS-level virtualization to deliver software in packages called containers. A container is a standard unit of software that bundles up code and all its dependencies (libraries, configuration files, specific versions of programming languages). Unlike a Virtual Machine (VM), which includes another operating system (Linux in our case), a Docker container shares the host's operating system kernel. Think of an Image as a read-only template or a "blueprint." It contains the instructions for creating a Docker container. If you want to run a web server, you download a "Web Server Image", which in our case would be an Ubuntu image. When you "run" that image, it becomes a Container (the active, running process). This makes containers much smaller, faster to start, and less "heavy" on your computer's memory. Everyone will have the same workspace installed on their laptop, which provides flexibility. Note: on the rare occasion a member uses Linux as their main OS already, this step is not needed.

Docker installation

Start by installing Docker on your computer with this link. It doesn't matter which OS you are running. The process then differs from

How to set up a Virtual Machine(archived for future if needed)

Mac

For Macs, we will be using a virtual machine. A virtual machine takes storage on the disk and dedicates it to installing Ubuntu. The emulator we will be using is called UTM, which can be downloaded from this link.

Once downloaded, we want to ideally virtualize the OS (virtualize because we will use the same architecture image), so download the live server ubuntu jammy arm64 here.

once the .iso file is downloaded, open UTM, and click on "Add virtual machine" -> "virtualization" -> "Linux".

Screenshot 2025-09-16 at 2 51 32 PM

In the boot iso image section, search and insert the .iso file you just downloaded. Then, select an amount of memory and storage you want to allocate to the virtual machine. I have 8GB memory andd 64GiB storage. Then, click continue until you arrive at the summary section, where you can name your VM.

Once that is done, click save. The virtual machine should appear on your left. click on the start button, and wait. You will see what is called the GRUB boot menu. Select the "Try or install Ubuntu".

Screenshot 2025-09-17 at 11 34 15 PM Screenshot 2025-09-23 at 11 23 09 PM

You will be prompted through a bunch of settings. Do not update the installer, because we want to stay on 22.04, not 25.04. These are my settings:

  • Ubuntu Server (NOT minimized), no third party drivers
  • for mirror configurations, wait a bit until it fetches the ports, then continue
  • use entire disk and set up this disk as an LVM group (this resizes partitions dynamically without reboot)
  • no need to install openSSH (doable later)

After waiting, click on the option "reboot now". Screenshot 2025-09-23 at 11 42 20 PM

Then, go back to UTM menu window, and go down to the CD/DVD option. Click on "clear". If we dont do this, rebooting the vm will just run the startup bootloader. Then, go back to the VM window and click on the restart vm button in the top left.

Screenshot 2025-09-23 at 11 44 15 PM

You are now launching a live server image of Ubuntu 22.04!

Screenshot 2025-09-23 at 11 45 09 PM

However, working with CLI (Command Line Interface). So instead, we will download the GNOME desktop image. Write these commands in order.

sudo apt install

sudo apt upgrade

sudo apt install ubuntu-gnome-desktop

sudo reboot

Wait for a bit. You are now ready to work with your own Linux distro.

Screenshot 2025-09-24 at 12 09 52 AM

Windows

Download VirtualBox: Visit the VirtualBox site, and click on "Download". You should then be redirected to this page, where you can click "Windows Hosts" to begin the download of the VirtualBox Installer.

image image

Install VirtualBox: Once the download is complete, launch the installer and follow the instructions provided by the wizard.

image

Download Ubuntu ISO: Download the Ubuntu 22.04 from the Ubuntu Site.

image

Create a New Virtual Machine (VM): Once everything is done installing, open up VirtualBox and click on the "New" button to begin configuring your VM.

image

We should then be sent to this menu, and select the following:

  • OS: Linux
  • OS Distribution: Ubuntu
  • OS Version: Ubuntu 22.04 Jammy Jellyfish
image

Configure VM:

Name and ISO: Add an ISO File in the "ISO Image" input, and give your VM a name.

image

Credentials: Change the default credentials, as if you don't Ubuntu will create a default account without sudo permissions.

image

Hardware Allocation: Allocate as much memory as possible, as well as some CPU cores for your VM.

image

Storage: Allocate approximately 35GB of storage for your VM to use, then click "Finish".

image

Network Settings: Go to Settings > Network, and change the adapter to “Bridged Adapter” to allow the VM to communicate with your local network.

image

Start the VM: Now that everything is set up, you can select and start your VM. If everything's working as intended, then it should look like this!

image

Test Connectivity: Click on the dotted-grid button in the bottom-left to open the "App Drawer". Search for the terminal and run ping google.com to test your connectivity. If you get a response, then it works!

image

ROS2 installation

Next would be the ros2 installation. For that, its just easier to go through the installation guide here: https://docs.ros.org/en/humble/index.html

We are using ros2 Humble Hawksbill because its the most stable version of ros2, without many dependency issues as newer versions, all while still providing LTS (Long Term Support).

troubleshooting

Clone this wiki locally