Симуляция PX4
ВНИМАНИЕ
Это статья описывает только установку PX4 и является устаревшей. Используйте официальную конфигурацию для Gazebo или образ виртуальной машины со всем необходимым для запуска симуляции Клевера.
Основная статья: https://dev.px4.io/en/simulation/
Симуляция PX4 возможна в ОС GNU/Linux и macOS с использованием систем симуляции физической среды jMAVSim и Gazebo.
jMAVSim является легковесной средой, предназначенной только для тестирование мультироторных летательных систем; Gazebo – универсальная среда для любых типов роботов.
Запуск PX4 SITL
- Склонировать репозиторий с PX4.
git clone https://github.com/PX4/Firmware.git
cd Firmware
jMAVSim
Основная статья: https://dev.px4.io/en/simulation/jmavsim.html
Для симуляции с использованием легковесной среды jMAVSim используйте команду:
make posix_sitl_default jmavsim
Для использования модуля расчета позиции LPE вместо EKF2, используйте:
make posix_sitl_lpe jmavsim
Gazebo
Основная статья: https://dev.px4.io/en/simulation/gazebo.html
Для начала установите Gazebo 7. На Mac:
brew install gazebo7
На Linux (Debian):
sudo apt-get install gazebo7 libgazebo7-dev
Запустите симуляцию, находясь в папке Firmware:
make posix_sitl_default gazebo
Можно запустить симуляцию в headless режиме (без оконного клиента). Для этого используйте команду:
HEADLESS=1 make posix_sitl_default gazebo
Подключение
QGroundControl автоматически подключится к запущенной симуляции при запуске. Работа будет осуществляться также, как и с настоящим полетным контроллером.
Для подключение MAVROS к симуляции необходимо использовать протокол UDP, локальный IP-адрес и порт 14557, например:
roslaunch mavros px4.launch fcu_url:=udp://@127.0.0.1:14557
Запуск SITL своими руками на чистой Ubuntu
Настройка среды для запуска Gazebo
Для того, чтобы запустить симулятор полета дрона, Gazebo или jMAVSim вам потребуется сделать соответственные настройки вашей среды.
ВНИМАНИЕ
Среда ROS Melodic
изначально ориентированна для Ubuntu версии 18.04 (Bionic), поэтому актуальность данной инструкции гарантируется только для данной версии операционной системы.
В первую очередь вам потребуется установить полный пакет ROS Melodic desktop-full, инструкцию по установке вы можете найти в статье по установке ROS.
После того, как вы выполнили указанные выше инструкции, вам нужно проверить, есть ли в вашем пакете ROS
все нужные пакеты.
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, для этого подключите необходимый репозиторий и добавьте соответствующие ключи:
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 -
Вам нужно установить пакеты которые потребуются во время запуска симуляции:
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:
wget -qO- http://bootstrap.pypa.io/get-pip.py | sudo python
Теперь установите необходимые модули:
pip install --user setuptools pkgconfig wheel && pip install --user argparse argcomplete coverage jinja2 empy numpy requests serial toml pyyaml cerberus
Вам необходимо установить спецификацию для библиотеки geographiclib
:
wget -qO- https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh | sudo bash
Склонируйте себе папку содержащую программное обеспечение PX4 и верните ее к стабильной версии v1.8.2:
git clone https://github.com/PX4/Firmware.git
cd Firmware/
git checkout v1.8.2
Если вы все настройки были произведены правильно, вы можете произвести сборку пакета Gazebo, чтобы в дальнейшем быстрее его запустить. Для этого вы должны находиться в директории Firmware
:
make posix_sitl_default sitl_gazebo
Теперь все готово к запуску самого симулятора, для этого пропишите в переменных окружения, где искать собранные библиотеки и запустите симулятор. Обратите внимание, что если вы хотите вызвать симулятор в другом окне терминала, вам повторно потребуется прописать переменные окружения (первая строка последующей команды):
. 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
СОВЕТ
Для того, чтобы открыть окно PX4 параллельно с симулятором, откройте дополнительное окно терминала.
Чтобы запустить PX4 и подключить его к Gazebo, в директории Firmware
соберите сам пакет симулятора:
make posix_sitl_default
Теперь при запущенном симуляторе, вы можете вызвать окно PX4
. Для этого в той же директории вызовите команду:
./build/posix_sitl_default/px4 . posix-configs/SITL/init/ekf2/iris
После загрузки консоли, вы можете проверить то что соединение с симулятором установлено, вызвав команду commander takeoff
для взлета и commander land
для посадки.
Сборка образа Клевера в симуляторе
Для того, чтобы пользоваться командами, предоставляемыми образом Клевера, вам потребуется его скачать и настроить. Создайте директорию, в которой вы будете собирать образ, перейдите в созданную директорию и воспользуйтесь системой сборки, предоставляемой ROS, для инициализации рабочей среды.
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws
catkin_make
Подтяните зависимости, прописанные в файле setup
и склонируйте образ Clover
в директорию src
:
./devel/setup.bash
cd src
git clone https://github.com/copterexpress/clover
Перейдите в корневую папку и обновите зависимости ROS:
cd ..
rosdep install -y --from-paths src --ignore-src -r
Повторите сборку среды, но теперь с добавленным пакетом Clover
:
catkin_make
Если сборка прошла успешно то вы можете запустить ноду Клевера и пользоваться пакетом clover
точно так же, как и на реальном коптере:
. devel/setup.bash
roslaunch clover_simulation simulator.launch type:=none
Для того, чтобы воспользоваться функциями предоставляемыми нашим пакетом, в новом окне терминала подтяните зависимости из файла setup
:
source ~/catkin_ws/devel/setup.bash
Теперь вы можете воспользоваться всеми возможностями пакета clover
в вашем симуляторе.