Установка ROS 2 на Ubuntu: пошаговое руководство для разработчиков | AdminWiki

Установка ROS 2 на Ubuntu: Полное руководство от настройки до первого пакета

19 декабря 2025 7 мин. чтения #DDS #ROS 2 #linux #ubuntu #пакеты ROS #разработка #робототехника #установка ROS

Представь, что ты стоишь на пороге мира робототехники и автономных систем. Твой инструмент — Ubuntu, а фреймворк, который превратит код в движение, — ROS 2. Эта статья — твой проводник от чистого дистрибутива до работающего ROS 2 окружения. Давай разберем каждый шаг, как настоящий DevOps-ментор: без магии, только четкие команды и понимание происходящего.

Подготовка системы и выбор дистрибутива ROS 2

Первое и самое важное правило: версия Ubuntu должна соответствовать поддерживаемому дистрибутиву ROS 2. ROS 2 Humble Hawksbill, например, официально поддерживает Ubuntu 22.04 (Jammy Jellyfish). Работа на неподдерживаемой версии — верный путь к проблемам с зависимостями.

Проверь версию Ubuntu: Перед началом убедись, что используешь правильную версию ОС. Открой терминал и выполни lsb_release -a.

Давай определимся с дистрибутивом. Основные долгосрочные релизы (LTS) ROS 2 и их совместимость:

Дистрибутив ROS 2 Кодовое имя Поддерживаемые версии Ubuntu Рекомендация
Humble Hawksbill LTS (до мая 2027) Ubuntu 22.04 (Jammy) Для новой разработки
Iron Irwini Стабильный (ноябрь 2023) Ubuntu 22.04 Для последних функций
Rolling Ridley Разрабатываемая Ubuntu 22.04 / 24.04 Только для тестирования

Для этого руководства выберем ROS 2 Humble как стабильный LTS-дистрибутив. Начнем с настройки репозиториев.

Пошаговая установка ROS 2 Humble на Ubuntu

Установка ROS 2 состоит из нескольких логических этапов: настройка источников пакетов, установка базового окружения, компиляция и настройка окружения. Следуй шагам последовательно.

Шаг 1: Настройка локали и источников пакетов

Убедимся, что система использует UTF-8 локализацию. Это важно для корректной работы многих инструментов.

bash
sudo apt update && 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

Теперь добавим репозиторий ROS 2 в систему. Это ключевой момент — отсюда будут загружаться все пакеты.

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

# Добавляем ключ репозитория ROS
sudo apt update && sudo apt install curl -y
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg

# Добавляем сам репозиторий в sources.list.d
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 > /dev/null
Внимание на архитектуру: Команда $(dpkg --print-architecture) автоматически определит архитектуру твоего процессора (amd64, arm64). Не меняй это значение вручную.

Шаг 2: Установка ROS 2 базовых пакетов

Обновим список пакетов и установим базовый метапакет ROS 2. Рекомендую начать с ros-humble-desktop, который включает основные инструменты, туториалы и демо.

bash
sudo apt update
sudo apt upgrade -y

# Установка полного рабочего стола ROS 2 (рекомендуется)
sudo apt install ros-humble-desktop -y

Если нужна минимальная установка (только базовые библиотеки, без GUI инструментов):

bash
sudo apt install ros-humble-ros-base -y

Шаг 3: Установка зависимостей для разработки

Для комфортной работы с ROS 2 пакетами и их сборки установим дополнительные инструменты.

bash
sudo apt install python3-rosdep python3-colcon-common-extensions python3-vcstool -y

# Инициализация rosdep (менеджер системных зависимостей)
sudo rosdep init
rosdep update
Команда sudo rosdep init может завершиться ошибкой, если уже была выполнена ранее для другой версии ROS. Это нормально — просто пропусти ее и выполни rosdep update.

Шаг 4: Настройка окружения

ROS 2 использует переменные окружения для работы. Добавим их автоматическую загрузку в .bashrc.

bash
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc

Проверим, что ROS 2 видит установленные пакеты:

bash
ros2 pkg list | head -20

Проверка установки и первый запуск

Теперь самое время убедиться, что все работает. Запустим классический пример с "говорящим" узлом и подписчиком.

bash
# В первом терминале запускаем издателя (talker)
ros2 run demo_nodes_cpp talker

# Во втором терминале (новое окно) запускаем подписчика (listener)
ros2 run demo_nodes_py listener

Если в терминале с talker ты видишь сообщения "Publishing: 'Hello World: X'", а в терминале с listener — "I heard: [Hello World: X]", то поздравляю! ROS 2 установлен и работает корректно.

Совет по DDS: По умолчанию ROS 2 Humble использует Fast DDS как реализацию промежуточного слоя. Если планируешь работать в сетевой среде с другими реализациями (Cyclone DDS, RTI Connext), изучи настройку переменной RMW_IMPLEMENTATION.

Создание и сборка своего первого пакета ROS 2

Давай создадим простой Python пакет, чтобы закрепить знания. Используем colcon — стандартный инструмент сборки для ROS 2.

bash
# Создаем рабочее пространство
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src

# Создаем Python пакет
ros2 pkg create my_first_pkg --build-type ament_python --dependencies rclpy

# Переходим в директорию пакета и создаем простой узел
cd my_first_pkg/my_first_pkg
cat > my_node.py << 'EOF'
#!/usr/bin/env python3
import rclpy
from rclpy.node import Node

class MyNode(Node):
    def __init__(self):
        super().__init__('my_first_node')
        self.get_logger().info('Мой первый узел ROS 2 запущен!')

def main(args=None):
    rclpy.init(args=args)
    node = MyNode()
    rclpy.spin(node)
    rclpy.shutdown()

if __name__ == '__main__':
    main()
EOF

# Делаем файл исполняемым
chmod +x my_node.py

Теперь нужно добавить точку входа в setup.py:

python
# Открываем setup.py и находим блок entry_points
entry_points={
    'console_scripts': [
        'my_node = my_first_pkg.my_node:main',
    ],
},

Собираем пакет с помощью colcon:

bash
cd ~/ros2_ws
colcon build --symlink-install

# Источник нового окружения
source install/setup.bash

# Запускаем наш узел
ros2 run my_first_pkg my_node

Если в терминале появилось сообщение "Мой первый узел ROS 2 запущен!", ты успешно создал и запустил свой первый пакет!

Частые проблемы и их решение

Даже при четком следовании инструкциям могут возникнуть проблемы. Вот самые частые из них и способы решения.

  • Ошибка "Could not find a package configuration file": Убедись, что выполнил source install/setup.bash из своей рабочей директории (ros2_ws).
  • Пакеты не находятся после установки: Проверь, что добавил источник в .bashrc и перезапустил терминал или выполнил source ~/.bashrc.
  • Проблемы с зависимостями при сборке: В директории с пакетом выполни rosdep install --from-paths . --ignore-src -y для установки недостающих системных зависимостей.
  • Ошибки с DDS/сетью: Убедись, что брандмауэр не блокирует порты (по умолчанию 7400-7600). Для изоляции можно установить переменную ROS_LOCALHOST_ONLY=1.

Дальнейшие шаги и ресурсы

Теперь, когда ROS 2 установлен, можно углубиться в изучение. Рекомендую:

  1. Пройди официальные туториалы на docs.ros.org — они отлично структурированы.
  2. Изучи архитектуру ROS 2: узлы, топики, сервисы, действия.
  3. Освой инструменты: rqt, ros2 topic, ros2 node.
  4. Разберись с системой сборки colcon и системой зависимостей ament.
  5. Для промышленной разработки изучи CI/CD пайплайны для ROS 2 пакетов.
Производительность: Для работы с роботами в реальном времени рассмотри использование Real-Time версии ядра Linux (RT-Preempt) и настройку планировщика.

Установка ROS 2 — это первый, но самый важный шаг в мире робототехники. Теперь у тебя есть мощный инструмент для создания автономных систем. Не бойся экспериментировать, читать исходный код пакетов и участвовать в сообществе. Удачи в разработке!

Поделиться:
Сохранить гайд? В закладки браузера