Glossary

Ubuntu

Ubuntu – definition

Ubuntu is a Linux distribution maintained by Canonical. In mobile robotics, it is commonly used as the host operating system for the robot computer, development workstation, simulation environment, and CI/CD runner. Ubuntu provides the Linux kernel, device drivers, networking, package management through APT, system services managed by systemd, and user-space libraries required by ROS and ROS 2.

For UGV development, Ubuntu is not a robotics middleware or autonomy framework. It is the operating system layer below ROS 2, sensor drivers, container runtimes, GPU libraries, and application code. A Leo Rover compute unit based on Raspberry Pi can run Ubuntu and ROS 2 Humble or newer distributions. Raph Rover runs Ubuntu 24.04 LTS with ROS 2 Jazzy on its Intel N100 onboard computer, which suits projects requiring additional payload processing capacity, such as LiDAR point-cloud filtering, camera inference, or RTK GNSS integration.

Ubuntu releases are identified by year and month. For example, Ubuntu 22.04 LTS was released in April 2022, while Ubuntu 24.04 LTS was released in April 2024. LTS means Long-Term Support. Canonical publishes support timelines for every Ubuntu release.

Ubuntu versions relevant to ROS and ROS 2

ROS distributions are built and tested against defined operating-system targets. The target Ubuntu version affects binary package availability, compiler versions, Python versions, GPU drivers, and supported middleware dependencies. ROS 2 package compatibility should therefore be checked before upgrading an onboard robot computer.

ROS distribution Primary Ubuntu target ROS generation Engineering context Source
ROS Noetic Ninjemys Ubuntu 20.04 Focal Fossa ROS 1 Legacy ROS 1 systems. ROS 1 Noetic reached end of life in May 2025. ROS.org
ROS 2 Humble Hawksbill Ubuntu 22.04 Jammy Jellyfish ROS 2 Common LTS baseline for Raspberry Pi-based mobile robots, including Leo Rover deployments. REP 2000
ROS 2 Jazzy Jalisco Ubuntu 24.04 Noble Numbat ROS 2 Current LTS-oriented option for new systems using Ubuntu 24.04-compatible hardware and drivers. REP 2000

REP 2000 defines the ROS 2 release process, target platforms, supported middleware implementations, and distribution timelines. It is the primary reference for selecting an Ubuntu and ROS 2 combination. Ubuntu 22.04 standard security maintenance runs until May 2027, while Ubuntu 24.04 standard security maintenance runs until May 2029. Extended coverage depends on Canonical’s Ubuntu Pro terms.

How Ubuntu works on a mobile robot

On a UGV, Ubuntu usually runs on the onboard single-board computer or industrial PC. It starts network services, launches ROS 2 nodes, manages USB and Ethernet devices, stores ROS logs and bag files, and provides access to hardware interfaces such as serial ports, CAN adapters, GPIO, cameras, and LiDAR sensors.

A typical software stack on Leo Rover or Raph Rover contains the following layers:

  • Ubuntu kernel and device drivers
  • ROS 2 distribution, such as Humble or Jazzy
  • DDS implementation used by ROS 2, for example Fast DDS or Cyclone DDS
  • Platform drivers for drive control (differential drive on Leo Rover, Ackermann steering on Raph Rover), wheel odometry, battery telemetry, and IMU data
  • Sensor nodes for LiDAR, depth camera, GNSS, RTK receiver, or RGB camera
  • Navigation, SLAM, perception, and mission-control nodes

For a Leo Rover, Ubuntu must support the Raspberry Pi CPU architecture used by the installed compute unit. ROS 2 packages are normally installed from the ROS APT repository or built from source with colcon. Building from source is useful when a sensor driver has no binary package for the selected Ubuntu release or ARM architecture.

sudo apt update
sudo apt install ros-humble-ros-base python3-colcon-common-extensions
source /opt/ros/humble/setup.bash

mkdir -p ~/robot_ws/src
cd ~/robot_ws
colcon build --symlink-install
source install/setup.bash

Hardware access and sensor integration

Ubuntu exposes hardware interfaces that ROS 2 driver nodes use to acquire data. Stable device naming is important on a field robot because USB device enumeration may change after rebooting or reconnecting a sensor. Persistent udev rules can map a sensor serial number to a predictable device path.

The following interfaces are frequently used in UGV integrations:

Interface Typical UGV device ROS 2 integration concern
USB 2D LiDAR, depth camera, GNSS receiver Persistent /dev naming, bandwidth, user permissions
UART IMU, GNSS/RTK receiver, motor controller Baud rate, serial permissions, frame parsing
Ethernet 3D LiDAR, industrial camera, networked computer IP addressing, multicast DDS discovery, packet loss
GPIO, I2C, SPI Embedded sensors and custom electronics Kernel driver availability and electrical compatibility

For ROS 2 navigation, sensor messages must use consistent timestamps and coordinate frames. The robot description normally defines frames such as base_link, odom, and sensor frames. Transform relationships are published through tf2. Ubuntu itself does not create these frames. They are configured in robot drivers, URDF/Xacro files, and ROS 2 launch files.

Ubuntu configuration for Leo Rover and Raph Rover

Leo Rover has a four-wheel differential-drive base and an IP55-rated chassis. Its default compute unit is Raspberry Pi-based, so CPU load, storage capacity, thermal conditions, and ARM package support should be considered before adding compute-intensive perception workloads. A complete autonomous navigation stack is not included by the operating system. It requires integration of localization, mapping or SLAM, costmaps, and a navigation framework such as Nav2.

Raph Rover is intended for larger payloads and can accommodate project-specific computing and sensing configurations. Ubuntu is suitable for both platforms, but the hardware profile should match the workload. A system processing a 2D LiDAR scan and wheel odometry has different compute, power, and storage requirements than a system recording multiple camera streams and running neural-network inference.

A ROS 2 launch command can be registered as a systemd service so that core robot processes start after boot:

[Unit]
Description=Leo Rover ROS 2 bringup
After=network-online.target

[Service]
User=robot
ExecStart=/bin/bash -lc 'source /opt/ros/humble/setup.bash && ros2 launch leo_bringup leo_bringup.launch.xml'
Restart=on-failure

[Install]
WantedBy=multi-user.target

Containers, simulation, and reproducibility

Docker is frequently used on Ubuntu to make ROS 2 development environments reproducible. A container can pin the ROS distribution, compiler, Python dependencies, and application packages. However, a container still depends on the Ubuntu host kernel and must be explicitly granted access to hardware such as USB devices, GPU devices, serial interfaces, or host networking.

For simulation, Ubuntu workstations commonly run ROS 2 together with Gazebo, RViz, and robot-description tools. The same ROS 2 packages can then be tested against a simulated robot model before deployment to Leo Rover or Raph Rover. Simulation does not replace validation with real sensor latency, wheel slip, radio-network loss, or terrain-dependent odometry error.

See also