# Установка виртуальной машины

Для работы с платформой БВС рекомендуется иметь [установленное окружение ROS](ros.md) на своём компьютере. К сожалению, [установка ROS и симулятора](simulation_native.md) сопряжена с рядом трудностей: требуется использовать операционную систему Ubuntu 20.04, процесс установки длительный и требует выполнения большого количества команд в терминале.

Для облегчения процесса настройки окружения мы предлагаем использовать виртуальную машину со всем необходимым для работы с платформой БВС. В состав виртуальной машины входят:

* операционная система Ubuntu 20.04 с легковесной графической оболочкой XFCE;
* предустановленные пакеты ROS для работы с БВС;
* QGroundControl;
* предварительно настроенный симулятор Gazebo;
* среда разработки Visual Studio Code с плагинами для разработки на Python и C++.

> **Info** Имя пользователя по умолчанию на виртуальной машине - `clover`, пароль - `clover`.

Виртуальная машина может использоваться как для запуска симуляторов, так и для работы с настоящим дроном.

## Скачивание

Скачать текущую версию виртуальной машины можно [в релизах репозитория виртуальной машины](https://github.com/CopterExpress/clover_vm/releases/latest).

## Установка виртуальной машины

Для запуска виртуальной машины разработчика требуется использовать одну из совместимых сред виртуализации: [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* - название беспроводного адаптера, с помощью которого будет производиться подключение к дрону.
