Skip to content

Установка ROS 2 для ПР01

Эта инструкция используется на первой лекции и лабораторной. Выберите одну поддерживаемую связку и не смешивайте её пакеты с другим ROS-дистрибутивом:

Если команды pwd, cd, source, | и > пока незнакомы, сначала пройдите «Терминал без магии». Настройка редактора, fish, uv и проверка дискретной графики вынесены в «Рабочее место разработчика».

UbuntuROS 2GazeboПакет интеграции
24.04JazzyHarmonicros-jazzy-ros-gz
26.04LyricalJettyros-lyrical-ros-gz

1. Выберите ROS-связку

ПР01–ПР04 поддерживают обе связки: базовый CLI, рабочее пространство и интерфейсы в них одинаковы. Точная пара для проектной симуляции указана в project/config/baseline.lock.yaml: физика и тестовые данные (fixtures) должны работать на одной версии.

2. Выберите способ запуска

Нативная Ubuntu

Ubuntu 24.04/Jazzy или Ubuntu 26.04/Lyrical дают наиболее предсказуемый доступ к GUI, сети DDS, GPU и USB-устройствам. Перед изменением разделов диска сделайте резервную копию данных.

Windows + WSL2

Откройте PowerShell от имени администратора:

powershell
wsl --update
wsl --set-default-version 2
wsl --list --online
wsl --install -d <имя Ubuntu 24.04 или 26.04 из списка>
wsl --list --verbose

После перезагрузки продолжайте все Linux-команды внутри Ubuntu. Для GUI нужен WSL2 с WSLg; приложения Linux GUI не работают в WSL1. Рабочее пространство храните в Linux-файловой системе, например ~/robotics_ws, а не в /mnt/c/...: это уменьшает проблемы с правами, наблюдением файлов и скоростью сборки.

Если несколько машин или процессов не обнаруживают друг друга, сначала проверьте, что все ноды запущены внутри одной WSL2-среды и используют одинаковый ROS_DOMAIN_ID. Mirrored networking — отдельный шаг диагностики, а не условие первой установки.

Docker

Docker — поддерживаемый вариант для Arch, Fedora и других Linux-систем, где Ubuntu deb-пакеты нельзя или нежелательно устанавливать на хост. Выберите образ той же ROS-связки:

Даже на нативной Ubuntu контейнер полезен как одинаковая среда безоконных тестов на ноутбуке и в CI/CD; GUI, GPU и DDS между хостами всё равно проверяются отдельно нативным запуском.

bash
docker pull osrf/ros:jazzy-desktop-full
docker pull osrf/ros:lyrical-desktop-full

Минимальная безоконная проверка из каталога решения:

bash
ROS_IMAGE=osrf/ros:jazzy-desktop-full  # либо lyrical-desktop-full
docker run --rm --init --network host \
  -v "$PWD:/work" -w /work \
  "$ROS_IMAGE" \
  bash -lc 'source /opt/ros/$ROS_DISTRO/setup.bash && ros2 doctor --report'

Исходники, рабочее пространство и evidence/ подключаются как каталоги хоста. Для turtlesim нужно отдельно настроить доступ к GUI; безоконные проверки и CI от него не зависят. Контейнер Playwright относится к сайту и презентациям, а не к ROS 2.

3. Проверьте Ubuntu до установки ROS

bash
cat /etc/os-release
uname -m
locale
sudo apt update
sudo apt upgrade

Ожидается выбранная Ubuntu 24.04 или 26.04 и локаль с UTF-8. Если UTF-8 не настроен:

bash
sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8
locale

4. Подключите официальный apt-репозиторий ROS 2

bash
sudo apt install software-properties-common curl
sudo add-apt-repository universe

export ROS_APT_SOURCE_VERSION=$(curl -s \
  https://api.github.com/repos/ros-infrastructure/ros-apt-source/releases/latest \
  | grep -F 'tag_name' | awk -F'"' '{print $4}')

curl -L -o /tmp/ros2-apt-source.deb \
  "https://github.com/ros-infrastructure/ros-apt-source/releases/download/${ROS_APT_SOURCE_VERSION}/ros2-apt-source_${ROS_APT_SOURCE_VERSION}.$(. /etc/os-release && echo ${UBUNTU_CODENAME:-${VERSION_CODENAME}})_all.deb"

sudo dpkg -i /tmp/ros2-apt-source.deb
sudo apt update
sudo apt upgrade

Пакет ros2-apt-source устанавливает ключи и конфигурацию официального репозитория. Не копируйте случайные ключи и sources.list из старых статей.

5. Установите ROS 2 и инструменты разработки

Для Ubuntu 24.04/Jazzy:

bash
sudo apt install ros-jazzy-desktop ros-dev-tools ros-jazzy-ros-gz git

Для Ubuntu 26.04/Lyrical:

bash
sudo apt install ros-lyrical-desktop ros-dev-tools ros-lyrical-ros-gz git

desktop включает ROS 2, RViz, демонстрационные пакеты и turtlesim, ros-dev-tools — инструменты сборки и зависимостей, а ros-*-ros-gz — соответствующую интеграцию с Gazebo.

Инициализация rosdep выполняется один раз на систему:

bash
sudo rosdep init
rosdep update

Если rosdep init сообщает, что файл источников уже существует, не удаляйте его вслепую: выполните rosdep update и сохраните сообщение для диагностики.

6. Осознанно настройте shell

Сначала выполните настройку вручную в каждом новом терминале:

bash
# Выберите одну строку:
source /opt/ros/jazzy/setup.bash
# source /opt/ros/lyrical/setup.bash

printenv | grep -E '^ROS_(DISTRO|VERSION|PYTHON_VERSION)='

Ожидаются ROS_DISTRO=jazzy либо ROS_DISTRO=lyrical и ROS_VERSION=2. Только после успешной проверки добавьте выбранную строку source в ~/.bashrc.

Не добавляйте одновременно setup.bash нескольких ROS-дистрибутивов.

7. Проверьте обмен между C++ и Python

Терминал A:

bash
source /opt/ros/jazzy/setup.bash  # либо lyrical
ros2 run demo_nodes_cpp talker

Терминал B:

bash
source /opt/ros/jazzy/setup.bash  # либо lyrical
ros2 run demo_nodes_py listener

listener должен получать сообщения talker. Эта проверка подтверждает установку обеих клиентских библиотек и базовый обмен данными, но ещё не подтверждает Gazebo, сеть между машинами или ваш workspace.

8. Запустите turtlesim и исследуйте граф

Терминал A:

bash
ros2 run turtlesim turtlesim_node

Терминал B:

bash
ros2 run turtlesim turtle_teleop_key

Терминал C:

bash
ros2 node list
ros2 topic list -t
ros2 topic info /turtle1/pose --verbose
ros2 topic echo /turtle1/pose --once
ros2 topic hz /turtle1/pose

Для каждого нового терминала сначала выполните source выбранной Jazzy- или Lyrical-связки.

9. Создайте рабочее пространство

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

Базовая установка /opt/ros/jazzy либо /opt/ros/lyrical — нижний слой (underlay). Каталог ~/robotics_ws/install после сборки — верхний слой (overlay). Порядок команд source определяет, какие пакеты и версии видит текущий shell.

10. Сохраните результат проверки

bash
ros2 doctor --report > doctor.txt
printf 'ROS_DISTRO=%s\nROS_DOMAIN_ID=%s\n' \
  "$ROS_DISTRO" "${ROS_DOMAIN_ID:-<not-set>}"
git rev-parse HEAD

Для ПР01 нужны doctor.txt, описание графа и структурированный отчёт окружения. Не прикладывайте полный env, домашние пути, токены, пароли и персональные данные.

Если проверка не прошла

  1. Зафиксируйте точную команду, код возврата и первые релевантные сообщения.
  2. Сравните /etc/os-release, ROS_DISTRO и путь выбранного setup.bash.
  3. Проверьте, выполнялся ли source именно в текущем терминале.
  4. Для проблем графа сравните ROS_DOMAIN_ID и параметры обнаружения.
  5. Не переустанавливайте всю систему до появления минимального воспроизводимого сценария.

См. также окружение курса, рабочее место разработчика, troubleshooting ПР и ПР01.

Официальные источники

Проверено 18 августа 2026 года:

Учебные материалы: CC BY 4.0 · Код: Apache-2.0