From 32d27f3f664c4e8c277db0095268df22309c0670 Mon Sep 17 00:00:00 2001 From: Dmitrii Okoneshnikov <39788810+MagicWinnie@users.noreply.github.com> Date: Wed, 29 Jul 2020 17:08:19 +0700 Subject: [PATCH] Tried translating simulator articles (#259) * Translation + fix broken links * Fix broken links * Changes * Fixed some typos * Fixed header * docs/simulation_native: Stylistic changes, fix typo (ru) * docs: Add old simulation_vm article (ru) * docs: Update SUMMARY.md (ru) * docs/simulation_native: Use main branch for simulation (ru) * Fixed some stuff * Update docs/ru/simulation_native.md Co-authored-by: Ilya Petrov <38784273+copterspace@users.noreply.github.com> * Fixed some stuff * Removed extra spaces Co-authored-by: Oleg Kalachev * Fixed typo Co-authored-by: Oleg Kalachev * Fixed typo Co-authored-by: Oleg Kalachev * Update docs/ru/simulation_vm.md Co-authored-by: Oleg Kalachev * Removed extra spaces Co-authored-by: Oleg Kalachev * Fixed typo Co-authored-by: Alexey Rogachevskiy Co-authored-by: Ilya Petrov <38784273+copterspace@users.noreply.github.com> Co-authored-by: Oleg Kalachev --- docs/ru/SUMMARY.md | 5 ++ docs/ru/simulation.md | 34 +++++++++++++ docs/ru/simulation_native.md | 96 ++++++++++++++++++++++++++++++++++++ docs/ru/simulation_usage.md | 49 ++++++++++++++++++ docs/ru/simulation_vm.md | 66 +++++++++++++++++++++++++ 5 files changed, 250 insertions(+) create mode 100644 docs/ru/simulation.md create mode 100644 docs/ru/simulation_native.md create mode 100644 docs/ru/simulation_usage.md create mode 100644 docs/ru/simulation_vm.md diff --git a/docs/ru/SUMMARY.md b/docs/ru/SUMMARY.md index ce558b84..a7b15192 100644 --- a/docs/ru/SUMMARY.md +++ b/docs/ru/SUMMARY.md @@ -48,6 +48,11 @@ * [Использование JavaScript](javascript.md) * [ROS](ros.md) * [MAVROS](mavros.md) + * Симулятор + * [Общая информация](simulation.md) + * [Сборка на собственной машине](simulation_native.md) + * [Установка виртуальной машины](simulation_vm.md) + * [Использование симулятора](simulation_usage.md) * Дополнительные материалы * [COEX Pix](coex_pix.md) * [Гид по автономному полету](auto_setup.md) diff --git a/docs/ru/simulation.md b/docs/ru/simulation.md new file mode 100644 index 00000000..e61607f3 --- /dev/null +++ b/docs/ru/simulation.md @@ -0,0 +1,34 @@ +# Общая информация + +Среда симуляции Клевера позволяет пользователям запускать и отлаживать свой код в симуляторе, используя большинство функций, доступных на реальном дроне. Симулятор использует [режим PX4 SITL](sitl.md) и тот же код, использующий ROS, что и настоящий дрон. Большинство железа также симулируется. + +## Особенности + +Устанавливаемая пользователем среда включает в себя: + +* высококачественную модель Клевера 4; +* плагины Gazebo для железа Клевера (например, для светодиодной ленты); +* легко изменяемые файлы описания дрона в формате [`xacro`](https://wiki.ros.org/xacro); +* примеры моделей и миров; +* [`roslaunch`](https://wiki.ros.org/roslaunch) файлы для быстрого запуска и настройки. + +Кроме того, предоставляется [образ виртуальной машины](simulation_vm.md), который максимально точно имитирует реальный дрон. + +Особенности: + +* легкий доступ к симулятору; +* установлен и настроен для работы с ROS Visual Studio Code; +* веб-сервер (Monkey) для плагинов Клевера, работающих в браузере; +* постоянно работающий сервис `roscore`; +* средства визуализации (`rviz`, `rqt`). + +## Состав симулятора + +Симулятор основан на следующих элементах: + +* [Gazebo](http://gazebosim.org/), универсальная среда симуляции для любых типов роботов; +* [PX4](https://px4.io/), в частности, его компонент SITL (software-in-the-loop); +* [`sitl_gazebo`](https://github.com/PX4/sitl_gazebo) пакет, содержащий плагины Gazebo для PX4; +* пакеты ROS и плагины Gazebo; + + diff --git a/docs/ru/simulation_native.md b/docs/ru/simulation_native.md new file mode 100644 index 00000000..c55c9854 --- /dev/null +++ b/docs/ru/simulation_native.md @@ -0,0 +1,96 @@ +# Сборка на собственной машине + +Настройка среды для симуляции с нуля требует некоторых усилий, однако это приведет к улучшению производительности и к уменьшению вероятности появления проблем с драйверами. + +Требования для сборки: установлены Ubuntu 18.04 и [ROS](ros-install.md). + +## Создание рабочего пространства для симулятора + +В этой статье мы будем использовать `catkin_ws` как имя рабочего пространства (вы можете поменять её). Мы создадим её в домашнем каталоге текущего пользователя (`~`). + +Создайте рабочее пространство и загрузите исходный код Клевера: + +```bash +mkdir -p ~/catkin_ws/src +cd ~/catkin_ws/src +git clone https://github.com/CopterExpress/clover +git clone https://github.com/CopterExpress/ros_led +``` + +Установите все зависимости, используя `rosdep`: + +```bash +cd ~/catkin_ws +rosdep update +rosdep install --from-paths src --ignore-src -y +``` + +## Загрузка исходного кода PX4 + +Сборка PX4 будет осуществлена вместе с другими пакетами в нашем рабочем пространстве. Вы можете загрузить его прямо в рабочее пространство или поместить куда-нибудь и создать симлинк к `~/catkin_ws/src`. Нам также нужно будет поместить его подмодуль `sitl_gazebo` в `~/catkin_ws/src`. Для упрощения мы загрузим прошивку прямо в рабочее пространство: + +```bash +cd ~/catkin_ws/src +git clone --recursive https://github.com/CopterExpress/Firmware -b v1.10.1-clever +ln -s Firmware/Tools/sitl_gazebo ./sitl_gazebo +``` + +## Установка зависимостей PX4 + +PX4 имеет свой собственный скрипт для установки зависимостей. Воспользуемся им: + +```bash +cd ~/catkin_ws/src/Firmware/Tools/setup +sudo ./ubuntu.sh +``` + +Он установит все, что нужно для сборки PX4 и SITL. + +Также вы можете пропустить установку ARM тулчейна, если вы не планируете компилировать PX4 для вашего полетного контроллера. Для этого воспользуйтесь флагом `--no-nuttx`: + +``` +sudo ./ubuntu.sh --no-nuttx +``` + +## Патчинг плагинов Gazebo + +Пакет `sitl_gazebo`, содержащий плагины нужно пропатчить, из-за недавних изменений в MAVLink. Эти патчи уже применены в [образе виртуальной машины](simulation_vm.md) и хранятся в репозитории CopterExpress/VM. Запустите следующие команды для загрузки и применения патчей: + +```bash +cd ~/catkin_ws/src/Firmware/Tools/sitl_gazebo +wget https://raw.githubusercontent.com/CopterExpress/clover_vm/master/assets/patches/sitl_gazebo.patch +patch -p1 < sitl_gazebo.patch +rm sitl_gazebo.patch +``` + +## Установка датасетов geographiclib + +Для `mavros` нужны датасеты geographiclib: + +```bash +cd ~ +wget https://raw.githubusercontent.com/mavlink/mavros/6f5bd5a1a67c19c2e605f33de296b1b1be9d02fc/mavros/scripts/install_geographiclib_datasets.sh +chmod +x ./install_geographiclib_datasets.sh +sudo ./install_geographiclib_datasets.sh +rm ./install_geographiclib_datasets.sh +``` + +## Сборка симулятора + +После установки всех зависимостей можно начинать сборку рабочего пространства: + +```bash +cd ~/catkin_ws +catkin_make +``` + +> **Note** Некоторые файлы, особенно плагины Gazebo, требуют большого объема оперативной памяти для сборки. Вы можете уменьшить количество параллельных процессов; количество параллельных процессов должно быть равно объёму RAM в гигабайтах, поделенному на 2. Например, для машины с 16Гб следует указывать не более 8 процессов. Вы можете указать количество процессов, используя флаг `-j` : ```catkin_make -j8``` + +## Запуск симулятора + +Чтобы удостовериться в том, что все было собрано корректно, попробуйте запустить симулятор: + +```bash +source ~/catkin_ws/devel/setup.bash +roslaunch clover_simulation simulator.launch +``` diff --git a/docs/ru/simulation_usage.md b/docs/ru/simulation_usage.md new file mode 100644 index 00000000..ba611324 --- /dev/null +++ b/docs/ru/simulation_usage.md @@ -0,0 +1,49 @@ +# Использование симулятора + +Среда симуляции Клевера позволяет пользователям тестировать свой код без какого-либо риска повреждения оборудования. Кроме того, в [виртуальной машине](simulation_vm.md) по умолчанию запущены дополнительные (не относящиеся к ROS) сервисы, которые присутствуют на реальном дроне, например, веб-сервер Monkey. + +## Запуск симулятора + +После [сборки симулятора с нуля](simulation_native.md) или [запуска виртуальной машины](simulation_vm.md), вы можете использовать `roslaunch` для запуска симулятора Gazebo: + +```bash +# Не забудьте сначала активировать ваше рабочее пространство +source ~/catkin_ws/devel/setup.bash +roslaunch clover_simulation simulator.launch +``` + +> **Note** Кроме того, если вы используете виртуальную машину, просто дважды щелкните `Gazebo PX4` на рабочем столе. + +Это запустит Gazebo сервер и клиент, бинарные файлы PX4 и ноды Клевера. Терминал, в котором была запущена команда, будет отображать отладочные сообщения от нод и PX4, а также принимать входные данные для интерпретатора команд PX4: + +![Скриншот симулятора Gazebo](../assets/simulation_usage/01_running_gazebo.jpg) + +Вы также можете использовать QGroundControl для настройки параметров дрона в симуляторе, планирование миссий полета (если GPS также симулируется) и управление дроном с пульта: + +![Gazebo и QGC](../assets/simulation_usage/02_gazebo_qgc.jpg) + +Также вы можете использовать [simplified OFFBOARD](simple_offboard.md) для управления дроном, и средства визуализации ROS, например, [rviz and rqt](rviz.md) для анализа состояния дрона: + +![Gazebo и RQT](../assets/simulation_usage/03_gazebo_rqt.jpg) + +## Настройка симулятора + +Симулятор можно настроить, передав дополнительные аргументы команде `roslaunch` или изменив файл `~/catkin_ws/src/clover/clover_simulation/launch/simulator.launch`. Ноды, обеспечивающие [распознавание ArUco](aruco.md), [расчет optical flow](optical_flow.md) и другие сервисы могут быть настроены изменением соответствующих `.launch` файлов, как на реальном дроне. + +### Изменение параметров дрона + +![Открытый в VSCode simulator.launch](../assets/simulation_usage/04_vscode_config.jpg) + +Вы можете включить или отключить некоторые датчики дрона, изменив параметры в файле `simulator.launch`. Например, чтобы включить GPS, установите аргумент `gps` в значение `true`: + +```xml + +``` + +Обратите внимание, что это просто включит датчик, вам придется также изменить параметры PX4. + +Если вы хотите добавить датчики или изменить их расположение, вам придется изменить файл описания дрона. Этот файл находится в `~/catkin_ws/src/clover/clover_description/urdf/clover/clover4.xacro`, и использует формат [xacro](http://wiki.ros.org/xacro) для сборки описания URDF. + +### Изменение мира по умолчанию + +Плагины Gazebo для дрона на данный момент требуют, чтобы значение параметра мира `real_time_update_rate` было равно 250, а значение `max_step_size` было равно 0.004. С другими параметрами симулятор не заработает. Используйте файл `~/catkin_ws/src/clover/clover_simulation/resources/worlds/clover.world` как шаблон. diff --git a/docs/ru/simulation_vm.md b/docs/ru/simulation_vm.md new file mode 100644 index 00000000..9e6c67fe --- /dev/null +++ b/docs/ru/simulation_vm.md @@ -0,0 +1,66 @@ +# Установка виртуальной машины + +Для работы с платформой Клевер рекомендуется иметь [установленное окружение ROS](ros.md) на своём компьютере. К сожалению, [установка ROS](ros-install.md) сопряжена с рядом трудностей: требуется использовать операционную систему Ubuntu 18.04, процесс установки длительный и требует выполнения большого количества команд в терминале. + +Для облегчения процесса настройки окружения мы предлагаем использовать виртуальную машину со всем необходимым для работы с платформой Клевер. В состав виртуальной машины входят: + +* операционная система Ubuntu 18.04 с легковесной графической оболочкой XFCE; +* предустановленные пакеты ROS для работы с Клевером; +* QGroundControl; +* предварительно настроенный симулятор Gazebo; +* среда разработки Visual Studio Code с плагинами для разработки на Python и C++. + +Виртуальная машина может использоваться как для запуска симуляторов, так и для работы с настоящим дроном. + +Скачать текущую версию виртуальной машины можно [в релизах репозитория виртуальной машины](https://github.com/CopterExpress/clover_vm/releases) + +> **Warning** Виртуальную машину следует использовать только в тех случаях, когда по каким-то причинам использование Ubuntu 18.04 напрямую невозможно. Производительность всех программ, особенно тех, которые используют 3D-графику - jMAVSim, Gazebo, rviz - будет существенно ниже; кроме того, в ряде случаев будут возникать графические ошибки, приводящие к частичной или полной неработоспособности указанных программ. + +## Установка виртуальной машины + +Для запуска виртуальной машины разработчика требуется использовать одну из совместимых сред виртуализации: [VirtualBox](https://www.virtualbox.org/wiki/Downloads), [VMware Player](https://www.vmware.com/products/workstation-player.html), [VMware Workstation](https://www.vmware.com/products/workstation-pro.html). + +> **Note** На момент написания данной статьи VirtualBox не обеспечивал достаточный уровень совместимости с виртуальной машиной. Рекомендуется по возможности использовать VMware Player или VMware Workstation; дальнейшая инструкция будет преимущественно написана для VMware Player. + +Убедитесь, что поддержка аппаратной виртуализации включена в настройках BIOS/UEFI вашего компьютера. Шаги для включения аппаратной виртуализации, как правило, описаны в руководстве пользователя компьютера. Проконсультируйтесь с производителем компьютера, если включить виртуализацию не получается. + +1. Импортируйте архив виртуальной машины в среду виртуализации. Для VMware Player используйте опцию **Open a Virtual Machine**: + + ![Open dialog with clever-devel.ova selected](../assets/simulation_setup_vm/01_import_vm.png) + + > **Note** При импорте архива, скорее всего, появится окно с предупреждением о формате виртуальной машины: + ![Import failure dialog](../assets/simulation_setup_vm/02_import_failure.png) + Это предупреждение можно игнорировать и нажать кнопку **Retry**. + +2. Откройте окно настроек виртуальной машины и измените параметры для наилучшего соответствия основной системе: + + * увеличьте объём оперативной памяти, отводимый для виртуальной машины: + ![Increasing avaliable memory](../assets/simulation_setup_vm/03_max_memory.png) + * увеличьте количество доступных процессорных ядер: + ![Increasing cpu cores](../assets/simulation_setup_vm/04_core_count.png) + * включите 3D-ускорение: + ![Enabling 3D acceleration](../assets/simulation_setup_vm/05_3d_acceleration.png) + * включите использование USB 2.0/3.0: + ![USB 3.0 controller](../assets/simulation_setup_vm/06_usb_3_0.png) + * опционально включите режим "мост" для виртуального сетевого адаптера: + ![Enabling bridge networking](../assets/simulation_setup_vm/07_bridge_networking.png) + + > **Note** Режим "мост" может некорректно работать с некоторыми сетевыми адаптерами. Если в режиме "мост" вы не можете подключиться к дрону, используйте USB Wi-Fi-адаптеры, "проброшенные" в виртуальную машину. + +3. Запустите виртуальную машину. Возможно, при первом запуске справа появятся сообщения об отсутствии поддержки 3D-ускорения со стороны основной системы: + + ![No 3D support from host](../assets/simulation_setup_vm/08_no_3d_acceleration.png) + + В этом случае убедитесь, что у вас установлены самые последние драйверы для видеокарты в основной системе. Если сообщения появляются при повторных запусках виртуальной машины, добавьте строку + + ``` + mks.gl.allowBlacklistedDrivers = "TRUE" + ``` + + в файл `clever-devel.vmx`, находящийся в папке, в которую был импортирован архив в п. 1. + +4. Настройте режим моста через настройки виртуальной машины (если используется VMware Player для Windows) или с помощью утилиты `vmware-netcfg` (если используется версия для Linux-дистрибутивов): + + ![vmware-netcfg interface](../assets/simulation_setup_vm/09_netcfg.png) + + В списке сетей выберите `vmnet0`, ниже - режим *Bridged*, в выпадающем списке *Bridged to* - название беспроводного адаптера, с помощью которого будет производиться подключение к дрону.