Gazebo Dev Container

Предупреждение

Текущая инструкция прeдназначена для пользователей операционной системы Ubuntu и на других системах не проверялась.

Эта инструкция поможет запустить симулятор Gazebo для разработки Clover2 в Visual Studio Code через Dev Container.

Dev Container

Dev Container — заранее подготовленная среда разработки внутри Docker, где уже установлены нужные программы. Без него пришлось бы вручную устанавливать ROS 2 Jazzy, Gazebo, MAVROS, PX4-зависимости и инструменты сборки. Dev Container запускает готовую среду внутри Docker.


1. Подготовка

Важно

Команды из этого раздела выполняются на вашем компьютере, а не внутри Dev Container. Если вы уже установили Docker, VS Code и расширение Dev Containers, этот раздел можно использовать как проверку.

1.1. Установка Docker

Воспользуйтесь документацией по установке Docker.


1.2. Установка Visual Studio Code

Скачайте Visual Studio Code с официального сайта и установите версию для вашей операционной системы.

VS Code загрузки

Для Linux скачайте файл .deb для вашей системы, например x64, и выполните:

sudo apt install -f ./путь-до-файла/code_*.deb

1.3. Установка расширения Dev Containers

  1. Откройте VS Code.

  2. Нажмите значок Extensions.

  3. Найдите Dev Containers.

  4. Установите расширение от Microsoft.

Dev Containers расширение

2. Клонирование проекта

Команды из этого раздела выполняются на компьютере, не внутри контейнера.

2.1. Перейти в папку для проектов

Например, можно использовать папку ~/projects:

mkdir -p ~/projects
cd ~/projects

2.2. Склонировать clover2-dev

Склонируйте репозиторий:

git clone https://github.com/klever-coex/clover2-dev.git
cd clover2-dev

3. Первый запуск Dev Container

Команды и действия из этого раздела выполняются на компьютере в VS Code.

3.1. Открыть проект в VS Code

Если вы находитесь в папке clover2-dev, можно открыть её командой:

code .

Если команда code не работает, откройте VS Code вручную и выберите папку clover2-dev через меню File -> Open Folder.


3.2. Запустить Dev Container

В VS Code:

  1. Нажмите Ctrl+Shift+P.

  2. Введите Reopen in Container.

  3. Выберите команду Dev Containers: Reopen in Container.

  4. Выберите один из вариантов:

    • clover2-dev:universe-devel;

    • clover2-dev:universe-devel (NVIDIA) — если у вас NVIDIA-видеокарта.

Важно

При первом запуске VS Code скачает необходимые зависимости, это может занять 5-10 минут.

Когда VS Code подключен к контейнеру в левом нижнем углу окна, это помечается.

Запушенный Dev Container

4. Загрузка зависимостей

Теперь нужно скачать исходные коды, из которых собирается симулятор. Команды выполняются внутри Dev Container.

4.1. Файл со списком зависимостей

В проекте используется файл:

repos/simulation.yaml

В нём указаны репозитории clover2-sim и clover2:

repositories:
  clover2-sim:
    type: git
    url: https://github.com/klever-coex/clover2-sim.git
    version: feature/clover2-dev

  clover2:
    type: git
    url: https://github.com/klever-coex/clover2.git
    version: feature/clover2-dev

Оба репозитория будут скачаны в папку src.


4.2. Скачать зависимости

В терминале Dev Container выполните:

vcs import src --recursive < repos/simulation.yaml

Важно

Загрузка может занять много времени так как скачивается исходный код PX4.


5. Сборка проекта

Сборка подготавливает исходный код и создаёт готовые ROS 2-пакеты. Команды выполняются внутри Dev Container.

5.1. Подключить ROS 2 Jazzy

В терминале Dev Container выполните:

source /opt/ros/jazzy/setup.bash

5.2. Собрать workspace

В терминале Dev Container выполните:

colcon build --symlink-install

Если все сделанно верно, то вывод в терминале будет выглядить примерно так:

Успешная сборка

6. Запуск симулятора

После сборки нужно подключить собранные пакеты. Команды выполняются внутри Dev Container.

6.1. Подключить собранный проект

В терминале Dev Container выполните:

source ./install/setup.bash

Результат: команда обычно ничего не выводит, после неё ROS 2 должен видеть пакеты из workspace.

Проверить можно командой:

ros2 pkg list | grep clover
Успешная настройка clover2 пакетов

6.2. Запустить симулятор

В терминале Dev Container, где уже выполнено source ./install/setup.bash, выполните:

ros2 launch clover2_sim gz_simple.launch.py

Результат:

  • в терминале появятся сообщения ROS 2;

  • должен начаться запуск Gazebo / Gz;

  • откроется графическое окно симулятора;

  • процесс не должен сразу завершиться с ошибкой.

Работа симулятора

7. Повторный запуск

После перезагрузки компьютера всё устанавливать заново не нужно.

7.1. Что делать после перезагрузки

  1. Откройте VS Code.

  2. Откройте папку clover2-dev.

  3. Выберите Dev Containers: Reopen in Container.

  4. Откройте терминал внутри контейнера.

  5. Подключите собранный проект:

source ./install/setup.bash

После этого можно запускать симулятор:

ros2 launch clover2_sim gz_simple.launch.py

7.2. Когда нужно пересобирать проект

Пересборка нужна, если:

  • вы впервые скачали исходники;

  • изменился C++-код;

  • изменились CMakeLists.txt или package.xml;

  • появились новые ROS 2-пакеты;

  • команда запуска не видит пакет;

  • после vcs import были обновлены репозитории.

Для пересборки используйте:

source /opt/ros/jazzy/setup.bash
colcon build --symlink-install

7.3. Когда достаточно только source ./install/setup.bash

Достаточно выполнить только:

source ./install/setup.bash

если:

  • проект уже был собран;

  • вы просто открыли новый терминал;

  • вы перезапустили контейнер;

  • вы хотите снова запустить симулятор без изменения кода.