Appearance
Установка ROS 2 для ПР01
Эта инструкция используется на первой лекции и лабораторной. Выберите одну поддерживаемую связку и не смешивайте её пакеты с другим ROS-дистрибутивом:
Если команды pwd, cd, source, | и > пока незнакомы, сначала пройдите «Терминал без магии». Настройка редактора, fish, uv и проверка дискретной графики вынесены в «Рабочее место разработчика».
| Ubuntu | ROS 2 | Gazebo | Пакет интеграции |
|---|---|---|---|
| 24.04 | Jazzy | Harmonic | ros-jazzy-ros-gz |
| 26.04 | Lyrical | Jetty | ros-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
locale4. Подключите официальный 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 gitdesktop включает 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 listenerlistener должен получать сообщения 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, домашние пути, токены, пароли и персональные данные.
Если проверка не прошла
- Зафиксируйте точную команду, код возврата и первые релевантные сообщения.
- Сравните
/etc/os-release,ROS_DISTROи путь выбранногоsetup.bash. - Проверьте, выполнялся ли
sourceименно в текущем терминале. - Для проблем графа сравните
ROS_DOMAIN_IDи параметры обнаружения. - Не переустанавливайте всю систему до появления минимального воспроизводимого сценария.
См. также окружение курса, рабочее место разработчика, troubleshooting ПР и ПР01.
Официальные источники
Проверено 18 августа 2026 года: