# Симуляция PX4 > **Warning** Это статья описывает только установку PX4 и **является устаревшей**. Используйте официальную [конфигурацию для Gazebo](simulation.md) или [образ виртуальной машины](simulation_vm.md) со всем необходимым для запуска симуляции Клевера. Основная статья: https://dev.px4.io/en/simulation/ Симуляция PX4 возможна в ОС GNU/Linux и macOS с использованием систем симуляции физической среды [jMAVSim](https://docs.px4.io/master/en/simulation/jmavsim.html) и [Gazebo](http://gazebosim.org). jMAVSim является легковесной средой, предназначенной только для тестирование мультироторных летательных систем; Gazebo – универсальная среда для любых типов роботов. ## Запуск PX4 SITL 1. Склонировать репозиторий с PX4. ```bash git clone https://github.com/PX4/Firmware.git cd Firmware ``` ## jMAVSim Основная статья: https://dev.px4.io/en/simulation/jmavsim.html Для симуляции с использованием легковесной среды jMAVSim используйте команду: ```bash make posix_sitl_default jmavsim ``` Для использования модуля расчета позиции LPE вместо EKF2, используйте: ```bash make posix_sitl_lpe jmavsim ``` ## Gazebo Основная статья: https://dev.px4.io/en/simulation/gazebo.html Для начала установите Gazebo 7. На Mac: ```bash brew install gazebo7 ``` На Linux (Debian): ```bash sudo apt-get install gazebo7 libgazebo7-dev ``` Запустите симуляцию, находясь в папке Firmware: ```bash make posix_sitl_default gazebo ``` Можно запустить симуляцию в headless режиме (без оконного клиента). Для этого используйте команду: ```bash HEADLESS=1 make posix_sitl_default gazebo ``` ## Подключение QGroundControl автоматически подключится к запущенной симуляции при запуске. Работа будет осуществляться также, как и с настоящим полетным контроллером. Для подключение MAVROS к симуляции необходимо использовать протокол UDP, локальный IP-адрес и порт 14557, например: ```bash roslaunch mavros px4.launch fcu_url:=udp://@127.0.0.1:14557 ``` ## Запуск SITL своими руками на чистой Ubuntu ### Настройка среды для запуска Gazebo Для того, чтобы запустить симулятор полета дрона, Gazebo или jMAVSim вам потребуется сделать соответственные настройки вашей среды. > **Caution** Среда `ROS Melodic` изначально ориентированна для Ubuntu версии 18.04 (Bionic), поэтому актуальность данной инструкции гарантируется только для данной версии операционной системы. В первую очередь вам потребуется установить полный пакет ROS Melodic desktop-full, инструкцию по установке вы можете найти в [статье по установке ROS](ros-install.md). После того, как вы выполнили указанные выше инструкции, вам нужно проверить, есть ли в вашем пакете `ROS` все нужные пакеты. ```bash sudo apt-get install ros-melodic-gazebo-ros \ ros-melodic-gazebo-dev \ ros-melodic-gazebo-plugins \ ros-melodic-gazebo-ros-pkgs \ ros-melodic-gazebo-msgs \ ros-melodic-geographic-msgs ``` Чтобы избежать ошибок во время запуска симулятора, вам нужно будет установить Gazebo v9.11, для этого подключите необходимый репозиторий и добавьте соответствующие ключи: ```bash sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list' wget http://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add - ``` Вам нужно установить пакеты которые потребуются во время запуска симуляции: ```bash sudo apt-get update && sudo apt-get -y --quiet --no-install-recommends install bzip2 ca-certificates ccache cmake cppcheck curl dirmngr doxygen file g++ gcc gdb git gnupg gosu lcov libfreetype6-dev libgtest-dev libpng-dev lsb-release make ninja-build openjdk-8-jdk openjdk-8-jre openssh-client pkg-config python-pip python-pygments python-setuptools rsync shellcheck tzdata unzip wget xsltproc zip ant gazebo7 gstreamer1.0-plugins-bad gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly libeigen3-dev libgazebo7-dev libgstreamer-plugins-base1.0-dev libimage-exiftool-perl libopencv-dev libxml2-utils pkg-config protobuf-compiler libgeographic-dev geographiclib-tools libignition-math2-dev ``` Для того, чтобы установить актуальные Python-модули, вам потребуется новая версия системы управления пакетами pip: ```bash wget -qO- http://bootstrap.pypa.io/get-pip.py | sudo python ``` Теперь установите необходимые модули: ```bash pip install --user setuptools pkgconfig wheel && pip install --user argparse argcomplete coverage jinja2 empy numpy requests serial toml pyyaml cerberus ``` Вам необходимо установить спецификацию для библиотеки `geographiclib`: ```bash wget -qO- https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh | sudo bash ``` Склонируйте себе папку содержащую программное обеспечение PX4 и верните ее к стабильной версии v1.8.2: ```bash git clone https://github.com/PX4/Firmware.git cd Firmware/ git checkout v1.8.2 ``` Если вы все настройки были произведены правильно, вы можете произвести сборку пакета Gazebo, чтобы в дальнейшем быстрее его запустить. Для этого вы должны находиться в директории `Firmware`: ```bash make posix_sitl_default sitl_gazebo ``` Теперь все готово к запуску самого симулятора, для этого пропишите в переменных окружения, где искать собранные библиотеки и запустите симулятор. Обратите внимание, что если вы хотите вызвать симулятор в другом окне терминала, вам повторно потребуется прописать переменные окружения (первая строка последующей команды): ```bash . Tools/setup_gazebo.bash $(pwd) $(pwd)/build/posix_sitl_default roslaunch gazebo_ros empty_world.launch world_name:=$(pwd)/Tools/sitl_gazebo/worlds/iris_fpv_cam.world ``` #### Запуск PX4 для Gazebo > **Hint** Для того, чтобы открыть окно PX4 параллельно с симулятором, откройте дополнительное окно терминала. Чтобы запустить PX4 и подключить его к Gazebo, в директории `Firmware` соберите сам пакет симулятора: ```bash make posix_sitl_default ``` Теперь при запущенном симуляторе, вы можете вызвать окно `PX4`. Для этого в той же директории вызовите команду: ```bash ./build/posix_sitl_default/px4 . posix-configs/SITL/init/ekf2/iris ``` После загрузки консоли, вы можете проверить то что соединение с симулятором установлено, вызвав команду `commander takeoff` для взлета и `commander land` для посадки. #### Сборка образа Клевера в симуляторе Для того, чтобы пользоваться командами, предоставляемыми образом Клевера, вам потребуется его скачать и настроить. Создайте директорию, в которой вы будете собирать образ, перейдите в созданную директорию и воспользуйтесь системой сборки, предоставляемой ROS, для инициализации рабочей среды. ```bash mkdir -p ~/catkin_ws/src cd ~/catkin_ws catkin_make ``` Подтяните зависимости, прописанные в файле `setup` и склонируйте образ `Clover` в директорию `src`: ```bash ./devel/setup.bash cd src git clone https://github.com/copterexpress/clover ``` Перейдите в корневую папку и обновите зависимости ROS: ```bash cd .. rosdep install -y --from-paths src --ignore-src -r ``` Повторите сборку среды, но теперь с добавленным пакетом `Clover`: ```bash catkin_make ``` Если сборка прошла успешно то вы можете запустить ноду Клевера и пользоваться пакетом `clover` точно так же, как и на реальном коптере: ```bash . devel/setup.bash roslaunch clover_simulation simulator.launch type:=none ``` Для того, чтобы воспользоваться функциями предоставляемыми нашим пакетом, в новом окне терминала подтяните зависимости из файла `setup`: ```bash source ~/catkin_ws/devel/setup.bash ``` Теперь вы можете воспользоваться всеми возможностями пакета `clover` в вашем симуляторе.