Зачем Docker?
ROS 2 устанавливается в контейнер с Ubuntu 24.04, независимо от вашей хостовой ОС. Хост может быть любой: Linux, macOS или Windows (через WSL2).
ROS 2 устанавливается в контейнер с Ubuntu 24.04, независимо от вашей хостовой ОС. Хост может быть любой: Linux, macOS или Windows (через WSL2).
Шаг 0. Предусловия
- Операционная система с установленным Docker Engine.
- Docker Compose (опционально, для удобства).
# Проверка версии Docker
docker --version
# Проверка, что контейнеры запускаются
docker run hello-world
Шаг 1. Получить образ ROS 2 Jazzy
ros:jazzy-ros-base
— минимальный набор (без GUI).ros:jazzy-desktop
— с RViz, rqt и другими GUI (рекомендовано для обучения).
docker pull ros:jazzy-desktop
# или минимальный:
# docker pull ros:jazzy-ros-base
Шаг 2. Настроить окружение (в хост-терминале)
# Задаём DOMAIN_ID (нужен для DDS/ROS 2 сетевого разделения)
export ROS_DOMAIN_ID=1
# Для X11 (Linux): разрешаем контейнеру доступ к X-серверу
xhost +local:docker
Для Windows и macOS: GUI-инструменты RViz/rqt требуют X-сервера (например, XQuartz на macOS или VcXsrv/Xming на Windows).
Шаг 3. Запуск контейнера
docker run -it --rm \
--name ros-jazzy \
--network host \
-e DISPLAY=$DISPLAY \
-e QT_QPA_PLATFORM=xcb \
-e ROS_DOMAIN_ID=$ROS_DOMAIN_ID \
-v /tmp/.X11-unix:/tmp/.X11-unix:rw \
-v $HOME/ros2_ws:/root/ros2_ws \
ros:jazzy-desktop \
bash -lc "echo 'source /opt/ros/jazzy/setup.bash' >> ~/.bashrc && bash"
--network host
упрощает обнаружение узлов ROS 2 в сети (Linux). На Windows/macOS можно использовать стандартную сеть Docker.-v $HOME/ros2_ws:/root/ros2_ws
монтирует вашу папку workspace внутрь контейнера.
Шаг 4. Проверка ROS 2 внутри контейнера
printenv ROS_DISTRO # должно вывести: jazzy
printenv ROS_DOMAIN_ID # должно вывести: 1
ros2 --help # список доступных команд
Шаг 5. Установка доп. пакетов внутри контейнера
apt update
apt install -y ros-dev-tools ros-jazzy-turtlesim
Шаг 6. Демонстрация turtlesim
# Терминал 1 (в контейнере)
ros2 run turtlesim turtlesim_node
# Терминал 2 (в контейнере)
ros2 run turtlesim turtle_teleop_key
Шаг 7. Создание рабочего пространства
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws
colcon build
source install/setup.bash
Опционально: docker-compose
services:
ros-jazzy:
image: ros:jazzy-desktop
container_name: ros-jazzy
network_mode: host
environment:
- DISPLAY=${DISPLAY}
- QT_QPA_PLATFORM=xcb
- ROS_DOMAIN_ID=${ROS_DOMAIN_ID:-1}
volumes:
- /tmp/.X11-unix:/tmp/.X11-unix:rw
- ${HOME}/ros2_ws:/root/ros2_ws
command: bash -lc "echo 'source /opt/ros/jazzy/setup.bash' >> ~/.bashrc && bash"
Опционально: GPU-поддержка
docker run -it --rm --gpus all \
--network host \
-e DISPLAY=$DISPLAY -e QT_QPA_PLATFORM=xcb \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e ROS_DOMAIN_ID=$ROS_DOMAIN_ID \
-v $HOME/ros2_ws:/root/ros2_ws \
ros:jazzy-desktop bash
Готово! ROS 2 Jazzy работает в Docker-контейнере с Ubuntu 24.04 внутри.
Хост может быть любым: Linux, Windows (WSL2) или macOS.
Оставить комментарий