Установка Rasberry Pi OS
Ubuntu для Raspberry Pi доступна здесь.
Установка Docker
Настроим репозиторий apt для Docker для Debian (не для Ubuntu).
# Добавление официального GPG ключа Docker:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Добавление репозитория в источники Apt:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
Установим последнюю версию Docker
sudo apt-get install \
docker-ce \
docker-ce-cli \
containerd.io \
docker-buildx-plugin \
docker-compose-plugin
Проверим успешность установки, запустив образ hello-world:
sudo docker run hello-world

Установка ROS2
Официальные Docker-образы ROS 2 можно найти здесь.Мы можем выбрать из вариантов ros-core, ros-base или perception. Здесь дополнительная информации об этих дистрибутивах.
1. ros-core — самый минимальный вариант, включает только базовые компоненты и библиотеки ROS 2, необходимые для запуска. Содержит минимальный набор инструментов и библиотек.
1. ros-base — средний вариант, включает ros-core и добавляет общие библиотеки и инструменты, но без графических инструментов и компонентов для восприятия.
1. perception — наиболее полный из перечисленных вариантов. Включает ros-base и добавляет библиотеки для работы с восприятием (компьютерное зрение, обработка сенсорных данных, SLAM и т. д.).
Загрузка и запуск образа:
sudo docker pull ros:jazzy-perception

запуск:
sudo docker run \
-it \
ros:jazzy-perception

Чтобы выйти из контейнера, введем терминале команду exit:
exit
Подключение к запущенному контейнеру из двух терминалов
В первом терминале запустим контейнер:
sudo docker run \
-it \
--name ros_container \
ros:jazzy-perception
--name ros_container— задает имя контейнера какros_container
Во втором (третьем, четвертом и т. д.) терминале подключимся к этому же контейнеру:
sudo docker exec -it ros_container
Проверка работы ROS 2
# Обновим список пакетов
apt update
# Установим демонстрационные пакеты
apt install -y ros-jazzy-demo-nodes-cpp
В каждом терминале запустим команды ROS 2. Например:Терминал 1 (запуск издателя):
source /opt/ros/jazzy/setup.bash
ros2 run demo_nodes_cpp talker
Терминал 2 (запуск подписчика):
source /opt/ros/jazzy/setup.bash
ros2 run demo_nodes_cpp listener
Другие команды Docker
Запуск контейнера:
sudo docker start ros_container
Остановка контейнера:
sudo docker stop ros_container
Удаление контейнера:
sudo docker rm ros_container
Проверка статуса контейнеров (в том числе остановленных):
sudo docker ps -a
Чтобы увидеть только запущенные контейнеры:
sudo docker ps