diff --git a/docs/ru/SUMMARY.md b/docs/ru/SUMMARY.md index 5f85f158..3114670e 100644 --- a/docs/ru/SUMMARY.md +++ b/docs/ru/SUMMARY.md @@ -47,7 +47,7 @@ * [Ультразвуковой дальномер](sonar.md) * [Лазерный дальномер](laser.md) * [Работа с SITL](sitl.md) - * [SITL в Docker-контейнере](sitl_docker.md) + * [Контейнер с симулятором](sitl_docker.md) * [Автозапуск ПО](autolaunch.md) * [Взаимодействие с Arduino](arduino.md) * [3G-модем](3g.md) diff --git a/docs/ru/sitl.md b/docs/ru/sitl.md index c28459ef..c5fa1aad 100644 --- a/docs/ru/sitl.md +++ b/docs/ru/sitl.md @@ -1,6 +1,8 @@ Симуляция PX4 === +> **Hint** Мы также предоставляем [предварительно настроенный](sitl_docker.md) симулятор, поставляемый в виде Docker-контейнера! + Основная статья: https://dev.px4.io/en/simulation/ Симуляция PX4 возможна в ОС Linux и macOS с использованием систем симуляции физической среды [jMavSim](https://pixhawk.org/dev/hil/jmavsim) и [Gazebo](http://gazebosim.org). diff --git a/docs/ru/sitl_docker.md b/docs/ru/sitl_docker.md index ff73b9b8..1f45c07f 100644 --- a/docs/ru/sitl_docker.md +++ b/docs/ru/sitl_docker.md @@ -6,21 +6,23 @@ ## Состав контейнера -В Docker-контейнере с симулятором установлены и настроены: +В [Docker](https://docker.com/)-контейнере с симулятором установлены и настроены: * Симулятор Gazebo с плагинами для симуляции камеры, дальномера и связью с ROS * Пакеты [ROS](http://www.ros.org/), требуемые для запуска нод Клевера * Собранный для симулятора PX4 * Легковесный web-интерфейс для Gazebo [Gzweb](http://gazebosim.org/gzweb.html) -* Web-терминал Butterfly +* Web-терминал [Butterfly](http://paradoxxxzero.github.io/2014/02/28/butterfly.html) ## Предварительная настройка -Запуск контейнера рекомендуется производить на ОС Ubuntu версии не ниже 16.04 с использованием Docker версии не ниже 18.09. Для комфортной работы с симулятором следует использовать компьютер с не менее чем 4 ядрами CPU (Intel Core i5/i7, не ниже Haswell) и не менее чем 8 ГБ ОЗУ. На компьютере может быть установлена графическая среда и браузер, но это не является обязательным требованием: работа с симулятором может происходить на другом компьютере в той же локальной сети. +Запуск контейнера рекомендуется производить на ОС Ubuntu версии не ниже 16.04 с использованием Docker версии не ниже 18.09. Для комфортной работы с симулятором следует использовать компьютер с не менее чем 4 ядрами CPU (Intel Core i5/i7, не ниже Haswell) и не менее чем 8 ГБ ОЗУ. Работа с симулятором может происходить как на компьютере с запущенным контейнером, так и на другом компьютере в той же локальной сети. + +> **Hint** Не забудьте [установить](https://docs.docker.com/install/linux/docker-ce/ubuntu/) и [настроить](https://docs.docker.com/install/linux/linux-postinstall/) Docker на своей системе! ## Запуск симулятора -Для запуска симулятора можно воспользоваться [вспомогательным скриптом](https://github.com/sfalexrog/clever-sitl/blob/master/run_web_server.sh), либо использовать следующую команду: +Для запуска симулятора можно использовать следующую команду: ```bash docker run \ @@ -34,9 +36,12 @@ docker run \ -p 9090:9090 \ -p 35602:35602 \ -p 2222:22 \ + --name clever_sitl \ sfalexrog/clever-sitl:latest ``` +> **Note** Здесь и далее предполагается, что при настройке Docker на своей системе Вы [настроили запуск Docker от обычного пользователя](https://docs.docker.com/install/linux/linux-postinstall/) (раздел "Manage Docker as a non-root user") + Данная команда запускает контейнер ```sfalexrog/clever-sitl:latest```, содержащий последнюю версию контейнера с симулятором. Ключ ```-p``` позволяет задать соответствие между портом компьютера, на котором запущен контейнер, и портом "внутри" контейнера. Порты 14556 и 14557 нужны для подключения к симулятору с помощью [QGroundControl](http://qgroundcontrol.com/), порт 8080 - для просмотра топиков ROS с изображениями и видеопотоками, порт 8081 - для подключения к визуализации симуляции Gazebo, порт 8082 - для доступа к web-терминалу Butterfly. После запуска контейнера можно перейти по следующим ссылкам в браузере для доступа к сервисам симулятора: @@ -51,6 +56,8 @@ docker run \ Основное взаимодействие с симулятором происходит через Web-терминал Butterfly. По умолчанию в нём открывается сессия tmux, так что происходящее в терминале можно демонстрировать сразу на нескольких компьютерах. +> **Hint** Можно также создавать дополнительные сеансы средствами Docker. Для этого воспользуйтесь командой ```docker exec -it clever_sitl /bin/bash``` + В web-терминале работают команды ROS, доступны редакторы [vim](https://www.vim.org/) и [nano](https://www.nano-editor.org/), поддерживается работа с интерпретатором [Python](https://www.python.org/). В симуляторе можно запускать программы, написанные для Клевера и не использующие специфический функционал бортового компьютера или периферии (например, LED-ленты). Визуализация текущего состояния симулированного мира доступна в Gzweb. Камеру можно перемещать, передвигая мышь с зажатой левой кнопкой. Поворот камеры производится при зажатой средней кнопке мыши, приближение/удаление камеры - при повороте колёсика. При выполнении этих манипуляций появляется небольшая жёлтая сфера, означающая центр поворота/приближения. @@ -63,13 +70,42 @@ docker run \ Для переключения между панелями следует использовать комбинацию клавиш ```ctrl+B``` и последующее нажатие кнопки ```Q``` и номера панели. Номера панелей будут кратковременно выведены поверх самих панелей при нажатии ```ctrl+B``` и ```Q```. +## Подключение локальных директорий к контейнеру + +Для подключения директории, доступной как на основной системе, так и в контейнере, при запуске следует указать ключ ```-v``` с указанием директории в основной системе и в контейнере. + +Так, для того, чтобы текущая директория стала доступна в контейнере по пути ```/home/user/data```, запустите контейнер со следующими параметрами: + +```bash +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 \ + -v $(pwd):/home/user/data:rw \ + --name clever_sitl \ + sfalexrog/clever-sitl:latest +``` + +> **Note** В команде для запуска контейнера ключ ```-v``` может встречаться многократно. Это позволяет указать несколько общих директорий. + +Разумно использовать механизм подключения локальных директорий для добавления своих моделей в симулятор, сохранения и загрузки параметров PX4, а также своих программ для Клевера на Python. + +> **Warning** Программы, скомпилированные в контейнере, могут не запускаться на основной системе. Аналогично, программы, скомпилированные на основной системе, могут не запускаться в контейнере. Это следует учитывать при написании нод, использующих компилируемые языки. + ## Завершение работы с симулятором Для завершения работы с симулятором достаточно завершить работу соответствующего контейнера. Это можно сделать с помощью инструментов управления Docker-контейнерами или нажатием комбинации клавиш ```ctrl+C``` в терминале, в котором был запущен контейнер. ## Увеличение скорости работы симулятора -(Данная секция нуждается в доработке) +> **Warning** Предложенный в этом режиме метод является экспериментальным; вполне возможно, что он не заработает, и в этом случае некоторые элементы симулятора также перестанут работать По умолчанию симулятор будет создавать изображения в симулируемых камерах, используя программную растеризацию. Это создаёт повышенную нагрузку на CPU компьютера с запущенным симулятором, а также не позволяет получить приемлемую частоту кадров для большинства задач компьютерного зрения. Как правило, Docker не используют для графически интенсивных задач, поэтому возможности по увеличению производительности ограничены. @@ -83,13 +119,13 @@ touch /tmp/.docker.xauth xauth nlist $DISPLAY | sed -e 's/^..../ffff/' | xauth -f /tmp/.docker/xauth nmerge - docker run \ - -it \ - --rm \ - -v /tmp/.X11-unix:/tmp/.X11-unix:rw \ - -v /tmp/.docker.xauth:/tmp/.docker.xauth:rw \ - -e DISPLAY=$DISPLAY \ - -e XAUTHORITY=/tmp/.docker.xauth \ - --device /dev/dri/card0:/dev/dri/card0 \ + -it \ + --rm \ + -v /tmp/.X11-unix:/tmp/.X11-unix:rw \ + -v /tmp/.docker.xauth:/tmp/.docker.xauth:rw \ + -e DISPLAY=$DISPLAY \ + -e XAUTHORITY=/tmp/.docker.xauth \ + --device /dev/dri/card0:/dev/dri/card0 \ -p 14556:14556 \ -p 14557:14557 \ -p 8080:8080 \ @@ -98,7 +134,7 @@ docker run \ -p 9090:9090 \ -p 35602:35602 \ -p 2222:22 \ - sfalexrog/clever-sitl:latest + sfalexrog/clever-sitl:latest ``` При этом на компьютере с контейнером должна быть запущена графическая среда, использующая X Server.