Набор для создания и запуска Docker-контейнеров с предустановленными ROS-пакетами Клевера и с симулятором на основе Gazebo из прошивки PX4
Цель создания данного репозитория - упрощение запуска симулятора SITL (software in the loop) из прошивки PX4 с подключением к ROS-пакетам Клевера. При запуске контейнера запускается одна из сред симуляции (jMAVSim или Gazebo), программное обеспечение полётного контроллера PX4 в режиме SITL, а также пакеты Клевера, настроенные для работы с симулятором.
Контейнер основывается на Ubuntu 16.04 как на дистрибутиве, официально совместимом с ROS Kinetic.
В контейнере также находятся интерпретаторы Python 2 и 3, а также компиляторы gcc и g++ версии 5.4.0 (стандарт для Ubuntu 16.04) и все необходимые для сборки PX4 и Клевера пакеты. Кроме того, установлены пакеты ROS Desktop, включающие в себя утилиты визуализации (например, rqt и rviz).
Для запуска контейнеров требуется использование свежей версии Docker. Руководство по установке и настройке можно найти в официальной документации. При установке на системы на базе GNU/Linux не забудьте выполнить шаги после установки.
Данный репозиторий предлагает две версии контейнера: с использованием графических возможностей основной системы и с использованием программной отрисовки. Первый вариант доступен только для систем на основе GNU/Linux с видеокартами, поддерживаемыми открытыми драйверами Mesa (точно работает для Intel, возможно - для AMD, точно не работает для NVidia).
Дополнительной экспериментальной возможностью является запуск контейнера с легковесным web-интерфейсом; в этом случае на стороне "сервера" будут производиться только вычисления, связанные с физикой, и программная отрисовка изображений с сенсоров дрона (имеющих, как правило, сравнительно низкое разрешение).
Запустите прилагаемый файл run_web_server.sh
:
$ ./run_web_server.sh
или выполните команду
$ docker run -it --rm \
-p 14556:14556 \
-p 14557:14557 \
-p 8080:8080 \
-p 8081:8081 \
-p 8082:8082 \
-p 9090:9090 \
-p 35602:35602 \
-p 2222:22 \
sfalexrog/clever-sitl:latest
После этого откройте в браузере страницу http://localhost:8081
для запуска web-интерфейса Gazebo, http://localhost:8082
для доступа к web-терминалу Butterfly, http://localhost:8080
для просмотра изображения с камеры коптера.
В web-терминале Вам доступны сервисы ROS, предоставляемые Клевером; также Вы можете подключиться к служебному окну, в котором будут выводиться диагностические сообщения запущенных сервисов.
Запустите прилагаемый файл run.sh
:
$ ./run.sh
Данный скрипт позволит подключиться запущенным приложениям к текущему сеансу X11, а также использовать аппаратное ускорение видеокарты.
При запуске с "прямой" отрисовкой запускается симулятор jMAVSim.
Запустите прилагаемый файл run_vnc.sh
:
$ ./run_vnc.sh
После этого откройте в браузере страницу встроенного VNC-клиента или подключитесь к сеансу VNC
на localhost:5900
с помощью любого VNC-клиента.
При запуске с программной отрисовкой запускается симулятор Gazebo (jMAVSim не хочет запускаться в этом режиме).
В контейнере запускается три окна терминала:
-
Окно с названием PX4 command window содержит сообщения от PX4 и среды симулятора; в этом же окне доступна консоль управления PX4
-
Окно с названием ROS Clever logs содержит сообщения от сервисов Клевера
-
Окно с названием User console позволяет работать с командной оболочкой внутри контейнера (для выполнения различных команд и запуска утилит ROS)
При необходимости можно запустить дополнительные пользовательские консоли, набрав в пользовательской консоли
$ xterm -e /bin/bash &
Кроме того, в контейнере будет запущено окно визуализации выбранного симулятора.
Примечание: При запуске контейнера с программной отрисовкой окно Gazebo, возможно, будет перекрывать окна терминалов. В этом случае можно воспользоваться панелью задач, расположенной внизу "экрана" VNC-сессии, для выбора нужного окна.
Контейнер завершит работу, как только все три начальных окна терминала будут закрыты. Также можно остановить контейнер, нажав
Ctrl+C
в терминале, в котором был запущен скрипт запуска. Наконец, контейнер можно остановить стандартными средствами
Docker.
В файле Dockerfile описан процесс установки пакетов ROS и сборки прошивки PX4. Эти команды можно поменять, но делать это следует на свой страх и риск.
Основные этапы, подлежащие изменению, - это установка пакетов Клевера, а также запуск программ при запуске контейнера. Всё это
настраивается в скриптах, находящихся в папке scripts
данного репозитория:
-
clever_install.sh
- скрипт для установки пакетов Клевера и их зависимостей. Запускается при сборке контейнера -
clever_update.sh
- скрипт для применения обновлений к пакетам Клевера. Запускается при запуске контейнера -
start_gui.sh
- скрипт, запускающий окна терминала, описанные выше. Настроен на запуск jMAVSim. Запускается при запуске контейнера с "прямой" отрисовкой -
start_gui_gazebo.sh
- скрипт, запускающий окна терминала. Настроен на запуск Gazebo. Запускается при запуске контейнера с программной отрисовкой -
start_px4_sitl.sh
- скрипт для запуска PX4 и симулятора jMAVSim -
start_px4_sitl_gazebo.sh
- скрипт для запуска PX4 и симулятора Gazebo -
start_clever.sh
- скрипт для запуска ROS и Клевера
Для того, чтобы изменения в этих файлах вступили в силу, требуется пересборка контейнеров. Для упрощения пересборки можно
воспользоваться файлом build.sh
, находящимся в корне репозитория.