Представь, что ты стоишь на пороге мира робототехники и автономных систем. Твой инструмент — Ubuntu, а фреймворк, который превратит код в движение, — ROS 2. Эта статья — твой проводник от чистого дистрибутива до работающего ROS 2 окружения. Давай разберем каждый шаг, как настоящий DevOps-ментор: без магии, только четкие команды и понимание происходящего.
Подготовка системы и выбор дистрибутива ROS 2
Первое и самое важное правило: версия Ubuntu должна соответствовать поддерживаемому дистрибутиву ROS 2. ROS 2 Humble Hawksbill, например, официально поддерживает Ubuntu 22.04 (Jammy Jellyfish). Работа на неподдерживаемой версии — верный путь к проблемам с зависимостями.
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 локализацию. Это важно для корректной работы многих инструментов.
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 в систему. Это ключевой момент — отсюда будут загружаться все пакеты.
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, который включает основные инструменты, туториалы и демо.
sudo apt update
sudo apt upgrade -y
# Установка полного рабочего стола ROS 2 (рекомендуется)
sudo apt install ros-humble-desktop -y
Если нужна минимальная установка (только базовые библиотеки, без GUI инструментов):
sudo apt install ros-humble-ros-base -y
Шаг 3: Установка зависимостей для разработки
Для комфортной работы с ROS 2 пакетами и их сборки установим дополнительные инструменты.
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.
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc
Проверим, что ROS 2 видит установленные пакеты:
ros2 pkg list | head -20
Проверка установки и первый запуск
Теперь самое время убедиться, что все работает. Запустим классический пример с "говорящим" узлом и подписчиком.
# В первом терминале запускаем издателя (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 установлен и работает корректно.
Fast DDS как реализацию промежуточного слоя. Если планируешь работать в сетевой среде с другими реализациями (Cyclone DDS, RTI Connext), изучи настройку переменной RMW_IMPLEMENTATION.
Создание и сборка своего первого пакета ROS 2
Давай создадим простой Python пакет, чтобы закрепить знания. Используем colcon — стандартный инструмент сборки для ROS 2.
# Создаем рабочее пространство
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:
# Открываем setup.py и находим блок entry_points
entry_points={
'console_scripts': [
'my_node = my_first_pkg.my_node:main',
],
},
Собираем пакет с помощью colcon:
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 установлен, можно углубиться в изучение. Рекомендую:
- Пройди официальные туториалы на docs.ros.org — они отлично структурированы.
- Изучи архитектуру ROS 2: узлы, топики, сервисы, действия.
- Освой инструменты:
rqt,ros2 topic,ros2 node. - Разберись с системой сборки
colconи системой зависимостейament. - Для промышленной разработки изучи CI/CD пайплайны для ROS 2 пакетов.
Установка ROS 2 — это первый, но самый важный шаг в мире робототехники. Теперь у тебя есть мощный инструмент для создания автономных систем. Не бойся экспериментировать, читать исходный код пакетов и участвовать в сообществе. Удачи в разработке!