πŸ”§ Master Computer Setup β€” Standalone (No Login Server)#

This guide walks through installing Ubuntu Desktop 24.04 LTS, ROS 2 Jazzy, and all dependencies on a standalone desktop computer with a single local Ubuntu account. This computer system is utilized in the United States Air Force Academy’s Electrical and Computer Engineering department in an embedded network with the ground robot, a TurtleBot3 Burger. The master system is used to run ROS GUI tools and create secure connections with the TurtleBot3.

Use this guide for a single master with a local Ubuntu account. If you are setting up the centralized multi-student lab (shared logins across many masters), see login-server.md and login-client.md instead.

This guide is adapted from the TurtleBot3 e-Manual.


Hardware#

For our application, we are using Intel NUC Kits but these instructions will work on any AMD64 architecture.

Software#

Ubuntu 24.04#

For the desktop machine you will first need to download Ubuntu Desktop 24.04 LTS.

Once downloaded, follow the instructions to create a bootable Ubuntu USB stick within Ubuntu. The guide provides links to create USB sticks from Windows and macOS as well.

Once the bootable USB stick is created, follow the guide to Install Ubuntu desktop selecting a useful computer name such as master0. The NUC requires you to press and hold F10 on startup to boot from a USB stick.

Update Alternatives#

Python3 is installed in Ubuntu 24.04 by default. Some packages utilize the python command instead of python3 so we need to create a new executable, /usr/bin/python that will call Python3 (basically use the command python to call Python3):

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10

After running this command, /usr/bin/python will point to /usr/bin/python3 with a priority of 10, allowing us to set and manage different versions of Python easily.

ROS2 Jazzy#

At this point, the Ubuntu environment is set up. Now we will install the ROS 2 requirements for the master. All of these instructions are adapted from the ROS 2 Documentation: Jazzy. ROS 2 Jazzy is the ROS 2 release that supports Ubuntu 24.04 LTS (Noble Numbat).

Installation#

Follow the official ROS2 documentation to install ROS2 Jazzy.

sudo apt install -y software-properties-common curl

sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key \
  -o /usr/share/keyrings/ros-archive-keyring.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] \
  http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | \
  sudo tee /etc/apt/sources.list.d/ros2.list

sudo apt update
sudo apt install -y ros-jazzy-desktop ros-dev-tools

ros-dev-tools (installed below) already bundles colcon, rosdep, and vcstool, so a separate python3-colcon-common-extensions install is no longer needed on Jazzy.

Install ROS dependencies for building packages:

# Gazebo Classic is end-of-life and is not packaged for Jazzy. Jazzy pairs with
# Gazebo Harmonic, integrated through the ros_gz vendor packages.
sudo apt install -y ros-jazzy-turtlebot3*
sudo apt install -y ros-jazzy-dynamixel-sdk
sudo apt install -y ros-jazzy-ros-gz
sudo apt install -y ros-jazzy-tf-transformations
sudo apt install -y ros-jazzy-usb-cam ros-jazzy-image-proc
sudo apt install -y ros-jazzy-v4l2-camera
sudo apt install -y ros-jazzy-camera-calibration
sudo apt install -y ros-jazzy-apriltag ros-jazzy-apriltag-ros libapriltag-dev
sudo apt install -y python3-pip
sudo apt install -y obs-studio qtwayland5
sudo apt install -y tree
sudo apt install -y ros-jazzy-cv-bridge
sudo apt install -y ros-jazzy-joy
sudo apt install -y ros-jazzy-teleop-twist-joy
sudo apt install -y jstest-gtk

Create a ROS workspace:

mkdir -p ~/master_ws/src
cd ~/master_ws/

TurtleBot3 Simulation Package#

cd ~/master_ws/src/
git clone -b jazzy https://github.com/ROBOTIS-GIT/turtlebot3_simulations.git
cd ~/master_ws && colcon build --symlink-install

ROS Environment#

Set up ROS environment variables and setup scripts within the ~/.bashrc file. Open the ~/.bashrc file with your favorite command line editor and add the following to the bottom:

alias gedit='gnome-text-edit'
alias bringup='ssh pi@robotX '\''ros2 launch turtlebot3_bringup robot.launch.py'\'

# Function to build with optional arguments
function ccbuild() {
    cd ~/master_ws && colcon build --symlink-install "$@"
    source ~/master_ws/install/setup.bash
}

# Export the function to make it available in the shell
export -f ccbuild

source /opt/ros/jazzy/setup.bash
source ~/master_ws/install/setup.bash
export ROS_DOMAIN_ID=0  # For master0 and robot0
export TURTLEBOT3_MODEL=burger
export LDS_MODEL=LDS-01 # replace with LDS-02 if using new LIDAR
source /usr/share/colcon_cd/function/colcon_cd.sh
export _colcon_cd_root=/opt/ros/jazzy/
source /usr/share/colcon_argcomplete/hook/colcon-argcomplete.bash

Any time you make changes to your ~/.bashrc file you must source it:

source ~/.bashrc

PIP#

For all users:

sudo pip install "pydantic<2"   # pip3 install pydantic
sudo pip install dlib
sudo pip install imutils
sudo pip install pupil-apriltags

Note

The dlib package will take quite a while to install.

For each user:

sudo adduser $USER video

Then, reboot the system.