СПО симуляции БПЛА - DRONE520/DRONE520-main GitHub Wiki

Симуляция (моделирование)

Симуляторы позволяют использовать полетный код PX4 для управления моделируемым компьютером транспортным средством в моделируемом "мире". Вы можете взаимодействовать с этим транспортным средством так же, как с реальным транспортным средством, используя QGroundControl, автономный API или радиоконтроллер/геймпад.

PX4 поддерживает как программное обеспечение в цикле моделирования (SITL), где стек полета выполняется на компьютере, так и аппаратное обеспечение в цикле моделирования (HITL) с использованием встроенного ПО моделирования на реальной плате контроллера полета.

Цель симуляции

При разработке программного обеспечения для беспилотного летательного аппарата (БПЛА) основной сложностью является его отладка. В общем случае она требует лётных испытаний и сопряжена с риском потери летательного аппарата в случае ошибок. Для сравнительно простых формализованных постановок полётного задания отказ разработчика от моделирования может быть оправданным. Однако, для сложных многорежимных автономных систем отсутствие возможностей имитировать рабочие условия для ПО самолётовождения может многократно увеличить технические и финансовые риски проекта.

Основной целью симуляции является моделирование движения БПЛА вдоль различных траекторий с минимальной ошибкой отклонения, а так же отладка разработанного ПО.

Поддерживаемые Симуляторы

Следующие симуляторы работают с PX4 для моделирования HITL и/или SITL:

  1. Gazebo-мощная среда 3D-моделирования, подходит для тестирования уклонения от объекта, а также для тестирования компьютерного зрения. Данная среда позволяет одновременное моделирование нескольких транспортных средств и обычно используется совместно с ROS. Поддерживаемые транспортные средства: Quad(Iris и Solo, Hex (Typhoon H480)),Generic quad delta VTOL, Tailsitter, Plane, Rover, Submarine.
  2. FlightGear-cимулятор, который обеспечивает физически и визуально реалистичное моделирование. В частности, он может имитировать многие погодные условия, включая грозы, снег, дождь и град, а также может имитировать температуру и различные типы атмосферных потоков. Также поддерживается моделирование нескольких транспортных средств Multi-Vehicle Simulation with FlightGear. Поддерживаемые транспортные средства: Plane, Autogyro, Rover.
  3. JSBSim-это симулятор полета с открытым исходным кодом (модель динамики полета (FDM)). Поддерживаемые транспортные средства: Plane, Quad, Hex. К особенностям данного симулятора можно отнести:
    • Полностью настраиваемая система управления полетом, аэродинамика, двигательная установка, расположение шасси и т.д.
    • Влияние вращения земли на уравнения движения (моделируется кориолисово и центробежное ускорение).
    • Настраиваемые форматы вывода данных на экран, файл, сокет или любую их комбинацию.
  4. jMAVSim-это простой симулятор мультиротора/квадроцикла, который позволяет вам управлять транспортными средствами типа вертолета, работающими на PX4, по моделируемому миру. Он прост в настройке и может быть использован для проверки того, что ваша модель может взлетать, летать, приземляться и надлежащим образом реагировать на различные условия сбоя (например, сбой GPS). Он также может быть использован для моделирования нескольких транспортных средств.
  5. Simulation-In-Hardware-Альтернатива HITL, которая предлагает жесткое моделирование в реальном времени непосредственно на аппаратном автопилоте. Этот симулятор реализован на C++ в виде модуля PX4 непосредственно в коде прошивки . Поддерживаемые транспортные средства: Plane, Quad.
  6. Ignition Gazebo- является производным от популярного симулятора робототехники Gazebo, отличающегося более совершенной визуализацией, физикой и моделями датчиков.
  7. AirSim-кросс-платформенный симулятор, который обеспечивает физически и визуально реалистичное моделирование. Этот симулятор является ресурсоемким и требует значительно более мощного компьютера, чем другие симуляторы, описанные здесь. Поддерживаемые транспортные средства: Plane, Quad.

Инструкции по настройке и использованию симуляторов приведены в разделах, связанных выше.

Оставшаяся часть этого раздела представляет собой общее описание того, как работает инфраструктура моделирования.

Симулятор MAVLink API

Все симуляторы взаимодействуют с PX4 через MAVLink API. Этот интерфейс определяет набор сообщений, которые могут содержать в себе либо информацию с сенсоров из симуляции, либо информацию о работе моторов и приводов от полетного кода, которая будет передана аппарату в симуляторе. На рисунке ниже показан поток сообщений.

Примечание

Сборка SITL из PX4 использует simulator_mavlink.cpp для обработки этих сообщений. Данные датчиков с симулятора записываются в разделы PX4 uORB. Все двигатели / исполнительные механизмы заблокированы, но внутреннее программное обеспечение полностью работает.

Порты UDP по умолчанию PX4 MAVLink

По умолчанию PX4 использует обычно установленные порты UDP для связи MAVLink с наземными станциями управления (например, QGroundControl), внешними API (например, MAVSDK, MAVROS) и API симуляторов (например, Gazebo). Этими портами являются:

  • Удаленный UDP-порт PX4 14550 используется для связи с наземными станциями управления. Ожидается, что GCS будет прослушивать соединения по этому порту. QGroundControl по умолчанию прослушивает этот порт.
  • Удаленный UDP-порт PX4 14540 используется для связи с внешними API. Ожидается, что внешние API будут прослушивать соединения по этому порту.

Примечание

При моделировании нескольких транспортных средств для каждого экземпляра используется отдельный удаленный порт, выделяемый последовательно от 14540 до 14549 (все дополнительные экземпляры используют порт 14549).

  • Локальный TCP-порт симулятора (4560) используется для связи с PX4. Симулятор прослушивает этот порт, и PX4 инициирует TCP - соединение с ним.

Примечание

Порты для GCS, внешних API и симулятора определяются сценариями запуска. Дополнительные сведения см. в разделе Запуск системы.

Среда моделирования SITL

На приведенной ниже диаграмме показана типичная среда моделирования SITL для любого из поддерживаемых симуляторов.

Различные части системы подключаются через UDP и могут запускаться либо на одном компьютере, либо на другом компьютере в той же сети.

  • PX4 использует модуль, специфичный для моделирования, для подключения к локальному TCP-порту 4560 симулятора. Затем симуляторы обмениваются информацией с PX4 с помощью API MAVLink симулятора, описанного выше. PX4 на SITL и симулятор могут работать как на одном компьютере, так и на разных компьютерах в одной сети.
  • PX4 использует обычный модуль MAVLink для подключения к наземным станциям и внешним API-интерфейсам разработчиков, таким как MAVSDK или ROS.
  • PX4 определяет количество локальных портов UDP (14580 18570), которые иногда используются при подключении к сети с помощью PX4, работающего в контейнере или виртуальной машине. Они не рекомендуются для "общего" использования и могут измениться в будущем.
  • Последовательное соединение может использоваться для подключения оборудования джойстика/геймпада через QGroundControl. Если вы используете обычную систему сборки SITL для настройки целевых объектов, то и SITL, и симулятор будут запущены на одном компьютере, и указанные выше порты будут автоматически настроены. Вы можете настроить дополнительные UDP-соединения MAVLink и иным образом изменить среду моделирования в файлах конфигурации сборки и инициализации.

Способы симуляции окружения для СПО БПЛА

SITL работает на компьютере разработчика в смоделированной среде и использует встроенное ПО, специально созданное для этой среды. За исключением драйверов моделирования, обеспечивающих получение поддельных данных об окружающей среде из симулятора, система ведет себя нормально.

Симуляция HITL подразумевает, что прошивка PX4 запускается на реальном БПЛА, что позволяет тестировать компоненты прошивки на реальном устройстве. При этом симулятор обменивается данными с БПЛА с помощью USB-подключения. В этом случае через симулятор ведется обмен данными между PX4 и QGroundControl.

Запуск/Построение моделирования SITL

Система сборки позволяет очень легко создавать и запускать PX4 на SITL, запускать симулятор и подключать их. Синтаксис выглядит так: make px4_sitl simulator[_vehicle-model], где simulator-gazebo (в нашем случае) или какой-либо другой симулятор, а vehicle-model-это конкретный тип транспортного средства (в нашем случае-квадрокоптер), поддерживаемый этим симулятором. Ниже приведен ряд примеров: Start Gazebo with plane: make px4_sitl gazebo_plane

Start Gazebo with iris and optical flow: make px4_sitl gazebo_iris_opt_flow

Start JMavSim with iris (default vehicle model): make px4_sitl jmavsim

Start PX4 with no simulator (i.e. to use your own "custom" simulator): make px4_sitl none_iris

Настройка HITL для конкретного симулятора (Gazebo)

Hardware-in-the-Loop (HITL или HIL) - это режим моделирования, в котором обычная прошивка PX4 запускается на реальном оборудовании полетного контроллера. PX4 поддерживает HITL для мультикоптеров (с использованием jMAVSim или Gazebo) и VTOL (с использованием Gazebo).

Примечание

Убедитесь, что QGroundControl не запущен!

  1. Соберите PX4 с помощью Gazebo (для создания подключаемых модулей Gazebo).

cd <Firmware_clone>

DONT_RUN=1 make px4_sitl_default gazebo

  1. Откройте файл sdf модели автомобиля (например, Tools / sitl_gazebo / models / iris_hitl / iris_hitl.sdf ).

  2. При необходимости замените serialDeviceпараметр ( /dev/ttyACM0).

Примечание

Последовательное устройство зависит от того, какой порт используется для подключения квадрокоптера к компьютеру (обычно это бывает /dev/ttyACM0). Простой способ проверить Ubuntu - подключить автопилот, открыть терминал и ввести dmesg | grep "tty". Правильное устройство будет показано последним.

  1. Настройте переменные среды:

source Tools/setup_gazebo.bash $(pwd) $(pwd)/build/px4_sitl_default

и запускаем Gazebo в режиме HITL:

gazebo Tools/sitl_gazebo/worlds/hitl_iris.world

  1. Запустите QGroundControl. Он должен автоматически подключаться к PX4 и Gazebo.

Gazebo Simulation (Сборка ПО симуляции БПЛА)

Gazebo-это мощная среда 3D-моделирования для автономных роботов, которая подходит для тестирования избегания объектов и тестирования компьютерного зрения. Далее будем рассматривать его использование с SITL и одним транспортным средством.

Поддерживаемые транспортные средства: Quad (Iris and Solo, Hex (Typhoon H480), Generic quad delta VTOL, Tailsitter, Plane, Rover, Submarine/UUV.

Посмотреть на Youtube

Примечание

См. раздел Симуляция (моделирование) для получения общей информации о симуляторах, среде моделирования и конфигурации моделирования (например, поддерживаемые транспортные средства).

Установка

Запуск моделирования

Запустите моделирование, запустив PX4 SITL и gazebo с конфигурацией планера для загрузки (multicopters, planes, VTOL, optical flow and multi-vehicle simulations are supported).

Самый простой способ сделать это - открыть терминал в корневом каталоге репозитория PX4 PX4-Автопилот и вызвать make для достижения желаемой цели. Например, для запуска моделирования квадрокоптера(по умолчанию):

cd /path/to/PX4-Autopilot

make px4_sitl gazebo

Поддерживаемые транспортные средства и make команды перечислены ниже (нажмите ссылки, чтобы просмотреть изображения транспортных средств).

Транспортное средство Команда
Quadrotor make px4_sitl gazebo
Quadrotor with Optical Flow make px4_sitl gazebo_iris_opt_flow
3DR Solo (Quadrotor) make px4_sitl gazebo_solo
Typhoon H480 (Hexrotor) (supports video streaming) make px4_sitl gazebo_typhoon_h480
Standard Plane make px4_sitl gazebo_plane

Примечание

Для получения полного списка целей сборки выполните команду make px4_sitl list_vmd_make_targets (и отфильтруйте те, которые начинаются с gazebo_).

Приведенные выше make-команды сначала создают PX4, а затем запускают его вместе с симулятором.

Как только PX4 запустится, он запустит оболочку PX4, как показано ниже.

Консоль выведет состояние, когда PX4 загрузит файлы инициализации и параметров для конкретного планера, дождется (и подключится) к симулятору. Как только появится информационная строка [ecl/EKF] commencing GPS fusion, транспортное средство готово к работе.

Вы можете поднять его в воздух, набрав: pxh> commander takeoff

С более подробной информацией о функциональных возможностях, предлагаемых Gazebo, можно ознакомиться здесь.

ROS

ROS (операционная система роботов) может использоваться с PX4 и симулятором Gazebo. Он использует узел MAVROS MAVLink для связи с PX4.

Установка ROS и Gazebo

Примечание

ROS поддерживается только в Linux (нет в macOS или Windows).

Для установки ROS необходимо выполнить следующие шаги:

  1. Добавить официальный репозиторий ROS Noetic в файл списка источников Ubuntu 20.04:

$ echo "deb http://packages.ros.org/ros/ubuntu focal main" | sudo tee /etc/apt/sources.list.d/ros-focal.list

  1. Затем добавьте официальный ключ ROS в вашу систему Ubuntu 20.04:

$ sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

Второй способ - использовать команду curl для загрузки официального ключа ROS и добавления его локально:

$ curl -sSL 'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xC1CF6E31E6BADE8868B172B4F42ED6FBAB17C654' | sudo apt-key add –

  1. Затем обновите систему Ubuntu таким образом, чтобы получить информацию о пакете ROS Noetic из репозитория:

sudo apt update

  1. Установка ros-noetic-desktop-full:

$ sudo apt install ros-noetic-desktop-full

  1. Настройка среды ROS:

$ source /opt/ros/noetic/setup.bash

$ echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc

$ tail ~/.bashrc

$ source ~/.bashrc

What's Happening Behind the Scenes

В этом разделе показано, как на самом деле работают ранее предоставленные инструкции по запуску (вы можете следовать им, чтобы вручную запустить моделирование и ROS).

Сначала запустите симулятор, используя следующую команду:

no_sim=1 make px4_sitl_default gazebo

Консоль будет выглядеть так:

Базовая конфигурация платформы моделирования дронов на базе ROS и PX4 под Ubuntu 18.04

1. Установка необходимых пакетов:

1.1. sudo apt install -y \

ninja-build \

exiftool \

python-argparse \

python-empy \

python-toml \

python-numpy \

python-yaml \

python-dev \

python-pip \

ninja-build \

protobuf-compiler \

libeigen3-dev \

genromfs \

xmlstarlet \

libgstreamer1.0-dev \

libgstreamer-plugins-base1.0-dev

1.2. pip install \

pandas \

jinja2 \

pyserial \

cerberus \

pyulog \

numpy \

toml \

pyquaternion

Если возникает следующая ошибка, вы можете сначала обновить setuptools и pip

ошибка

pip install --upgrade setuptools

python -m pip install --upgrade pip

2. Установка ROS

2.1 Задайте список sources.list:

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

2.2 Установите ключ:

curl -sSL 'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xC1CF6E31E6BADE8868B172B4F42ED6FBAB17C654' | sudo apt-key add –

2.3 Установка ROS:

sudo apt update

sudo apt install ros-melodic-desktop

Если вы устанавливаете ROS в обычном режиме, вы можете sudo apt install ros-melodic-desktop-full

2.4 Настройте среду:

echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc

source ~/.bashrc

2.5 Создавайте зависимости:

sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential

sudo rosdep init

2.6 Выполните обновление rosdep:

rosdep update

Запустите ROS после установки:

roscore

Следующий вывод показывает, что установка прошла успешно:

roscore

Для создания нового рабочего пространства рекомендуется использовать catkin-tools для управления рабочим пространством. После этого, за исключением запуска среды моделирования PX4, остальные проекты, связанные с ROS, управляются в этом рабочем пространстве.

mkdir -p ~/catkin_ws/src

cd ~/catkin_ws

catkin_make

source devel/setup.bash

3. Установка Gazebo

Будь то ros Kinetic или Melodic, встроенный gazebo имеет дефекты. Если gazebo был установлен ​​при установке ros, рекомендуется удалить и переустановить. Рекомендуется, чтобы версия gazebo была выше 9.13. Пожалуйста, обратитесь к официальному сайту для установки Gazebo.

3.1. Настройте свой компьютер для приема программного обеспечения с package.osrfoundation.org:

sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable lsb_release -cs main" > /etc/apt/sources.list.d/gazebo-stable.list'

cat /etc/apt/sources.list.d/gazebo-stable.list

3.2. Установите ключ:

wget https://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -

sudo apt-get update

3.3. Установить Gazebo 9.1:

sudo apt-get install gazebo9=9.1*

3.4 Сама Gazebo не зависит от ROS, поэтому вам также необходимо установить плагин Gazebo для ROS:

sudo apt install ros-melodic-gazebo9-*

sudo apt install ros-melodic-gazebo-*

Tест:

roscore

rosrun gazebo_ros gazebo

Если Gazebo можно открыть, значит, плагин между Gazebo и ROS также был успешно установлен.

4. Установка МАВРОС

sudo apt install ros-melodic-mavros ros-melodic-mavros-extras

roscd mavros

sudo wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh

sudo chmod a+x ./install_geographiclib_datasets.sh

sudo ./install_geographiclib_datasets.sh

5. Конфигурация PX4 (версия 1.11)

git clone https://github.com/PX4/Firmware

mv Firmware PX4_Firmware

cd PX4_Firmware

git checkout -b xtdrone/dev v1.11.0-beta1

git submodule update --init --recursive

Установите необходимые зависимости Python:

cd ~/PX4_Firmware

bash

bash ./Tools/setup/ubuntu.sh --no-nuttx --no-sim-tools

Компилировать:

make px4_sitl_default gazebo

Способы расширения функциональности СПО симуляции БПЛА (добавление внешних факторов в симуляцию мира)

Программный комплекс Gazebo представляет собой среду для симулирования работы виртуальных роботов с различными сенсорами в окружении всевозможных объектов. Приложение состоит из графической части и части по имитированию взаимодействия твердых объектов, позволяя моделировать динамику и кинематику механизмов роботов (включая моменты взаимодействия с телами внешней среды) и формировать физически правдоподобные показания виртуальных датчиков. Программа Gazebo имеет гибкий дизайн и удобный интерфейс, поддерживающий одновременную работу с несколькими устройствами. Для работы в данной среде необходимо хорошее знание C++ и UNIX-систем.

Симулятор Gazebo имеет свой собственный редактор, позволяющий без программирования создавать трехмерные сцены и включающий огромную библиотеку моделей. Программа также предоставляет следующие возможности:

Использование популярных общеизвестных моделей роботов, таких как: iRobot Create, PR2, TurtleBot, Pioneer 2 DX, Segway RMP, Pioneer 2 AT. Помимо заранее созданных разработчиками моделей есть возможность самостоятельного проектирования необходимых устройств (сенсоров и роботов), загрузки их в мир и дальнейшей симуляции. Однако устройства, модели которых уже есть в программе, эмулируются с гораздо более высокой точностью. Поддержка и симулирование работы множества различных сенсоров, в том числе сонара, лазерного дальномера, датчиков семейства IMU, моно- и стереокамер, кинект-сенсоров, прибора для чтения RFID-меток и других.

Для создания качественной графики к ПО Gazebo можно подключить объектно-ориентированный графический движок OGRE с открытым исходным кодом. Также симулятор способен читать файлы в формате COLLADA, что позволяет добавлять в приложение объекты, созданные в сторонних редакторах 3D-моделей.

Наряду с программой Stage (двумерным симулятором роботов), Gazebo совместим с приложением Player – кросс-платформенным ПО для исследования робототехнических систем. Данная среда обеспечивает сетевой интерфейс между управляющими программами и добавляемыми разработчиками модулями/драйверами реального оборудования. Таким образом, написанная в Gazebo и там же отлаженная управляющая программа может без изменений быть перенесена на настоящее оборудование или на другой симулятор. Также среда симуляции Gazebo совместима с ROS – операционной системой для программирования роботов.

Добавление внешних факторов в симуляцию мира

Загрузка определенного мира

PX4 поддерживает несколько миров Gazebo, которые хранятся в PX4 / sitl_gazebo / worlds. По умолчанию Gazebo отображает плоскую безликую плоскость, как определено в empty.world.

Имитация обзорной камеры

Gazebo обзор камеры имитирует камеру MAVLink, который захватывает изображения в формате JPEG с геотегами и отправляет информацию, полученную с камеры, на подключенную наземную станцию. Камера также поддерживает потоковое видео. Его можно использовать для тестирования захвата камеры, в частности, в рамках исследовательских миссий.

Камера излучает CAMERA_IMAGE_CAPTURED сообщение каждый раз при захвате изображения. Захваченные изображения сохраняются в: PX4-Autopilot / build / px4_sitle_default / tmp / frames / DSC_n_.jpg (где n начинается как 00000 и повторяется по одному при каждом захвате).

Примечание

Смоделированная камера реализована в PX4 / PX4-SITL_gazebo / master / src / gazebo_camera_manager_plugin.cpp .

Расширение и настройка

Чтобы расширить или настроить интерфейс моделирования, отредактируйте файлы в Tools/sitl_gazebo папке. Код доступен в репозитории sitl_gazebo на Github.

Добавление/создание моделей в Gazebo

Существуют готовые реализации наборов плагинов, моделей для использования с OSRF Gazebo simulator в SITL и HITL (например, они доступны в PX4 / PX4-SITL_gazebo или osrf / gazebo_models). Так же имеется возможность добавление собственных моделей. Более подробно данный материал рассмотрен далее.

Для решения поставленной задачи (создания модели веревки) в данном проекте было использовано следующее руководство: Model editor. В данном руководстве описывается процесс создания модели с помощью редактора моделей, встроенного в Gazebo.

Алгоритм создания моделей

Откройте редактор моделей

  1. Убедитесь, что установлена актуальная версия симуляции Gazebo;
  2. Запустите среду моделирования gazebo;
  3. Для перехода в среду моделирования воспользуйтесь сочетанием клавиш Ctrl+M.

Редактор моделей

Графический пользовательский интерфейс

Редактор состоит из следующих двух частей:

  • Палитра (слева) имеет две вкладки. Вкладка Insert позволяет вставлять части (ссылки и другие модели) на сцену, чтобы построить необходимую модель. На вкладке Model отображается список всех деталей, из которых состоит модель, которую Вы строите;
  • 3D View (справа). На данной вкладке расположен предварительный просмотр модели.

Инструменты графического интерфейса пользователя на верхней панели инструментов могут использоваться для управления соединениями и связями в 3D-виде.

Добавление простых форм

В редакторе модели есть три примитивных геометрических объекта, которые пользователь может вставить в трехмерный вид.

  1. На палитре нажмите на box, sphere или cylinder значок под Simple Shapes;
  2. Наведите курсор мыши на 3D-вид, чтобы увидеть визуальный элемент, и щелкните/отпустите в любом месте, чтобы добавить его к модели.

Добавление простых форм

Создание соединений

Редактор модели поддерживает создание нескольких типов соединений между частями в редактируемой модели. Чтобы создать соединение (joints):

  1. Щелкните joint значок на панели инструментов. Это вызовет диалог создания соединения, который позволяет Вам указать различные свойства соединения, которое Вы хотите создать. Как Вы можете видеть в диалоговом окне, тип соединения по умолчанию - Revolute соединение;
  2. Укажите родительскую и дочернюю ссылку (объекты , между которыми необходимо создать связь).

Создание связи между частями модели

После создания связи появится линия.

Линия, представляющая соединение, имеет цветовую кодировку. Визуальное оформление сустава состоит из осей RGB, которые помогают составить представление о системе координат сустава. Желтая стрелка указывает основную ось соединения. Например, в случае поворотного шарнира это ось вращения.

  1. После того как Вы указали все желаемые свойства соединения в диалоговом окне «Создание соединения», нажмите Create кнопку внизу, чтобы завершить создание соединения.

Сохранение модели

Сохранение создаст directory, SDF and config files для вашей модели. Когда Вы будете довольны созданной моделью, перейдите на Model вкладку на левой панели и дайте ей имя.

имя модели

Чтобы сохранить модель, выберите File, затем Save As(или нажмите Ctrl+S) в верхнем меню. Появится диалоговое окно, в котором Вы можете выбрать место для вашей модели.

место хранения модели

Выход из редактора моделей

Когда Вы закончите создание модели и сохраните ее, перейдите к File,а затем Exit Model Editor. Ваша модель появится в главном окне.

Редактирование существующих моделей

Вместо того, чтобы создавать модель с нуля, Вы также можете редактировать существующие модели, которые уже находятся в симуляции. Чтобы отредактировать существующую модель:

  • Вставьте модель из Insert вкладки слева;
  • Щелкните правой кнопкой мыши только что вставленную модель и выберите Edit Model.

Теперь Вы находитесь в редакторе модели и можете добавлять новые ссылки на модель или редактировать существующие.

Создание модели "веревка"

Так как в редакторе Gazebo, а так же в рассмотренных выше репозиториях, нет аналога модели "веревка", был предложен следующий вариант моделирования.

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

В процессе работы была реализована следующая модель:

созданная модель

Однако данный подход требует больших временных затрат и его применение является малоэффективным, поэтому далее для решения задачи был использован Gazebo совместно с ROS. В процессе работы были написаны программа и ее сборка для добавления модели «веревки» заданной длины, прикрепленной к тяжелому блоку. Код программы для создания модели веревки доступен для участников группы по ссылке.

Сначала в xml-формате создается модель, каждая функциональная часть описывается отдельно, затем эти части соединяются вместе в модель. К таким частям модели, как камеры, моторы, сенсоры и т.д. необходимо подключать плагины, которые пишутся на C++ и описывают функциональность этих частей.

3-х мерная физическая модель робота в Gazebo описывается с помощью файла формата sdf, близкого родственника urdf, который обычно используется в ROS’е. В сети множество туториалов как использовать urdf в Gazebo, однако все они основаны на забагованной стандартной утилите gzsdf, которая преобразует один формат в другой.

Пример написанного sdf файла.

  1. Описание самой модели прописывается между тэгами model.

  2. Тэг link определяет базовый структурный элемент, их может быть несколько в одной модели. Внутри link нужно определить тэги:

    • pose в формате xyz rpy для определения позиции относительно начала координат модели, этот тэг используется очень часто и определяет позицию относительно родительского тэга.
    • collision (их может быть много внутри одного линка) используется для просчета столкновений, в нем можно использовать как стандартные примитивы, так и импортировать модель форматов .dae или .stl. Здесь же описываются свойства поверхности вроде трения.
    • visual (их так же может быть много) добавляется для рендеринга, здесь также можно использовать как стандартные примитивы, так и импортировать модель форматов .dae или .stl. Здесь же добавляются текстуры.
    • inertial (он в линке один) описывает физические инерциальные свойства линка: его массу, тензор инерции и т.д. Добавив сюда pose можно сдвинуть координаты центра масс относительно родительского линка.

Тэги link, collision, visual обязательно должны быть снабжены уникальными именами.

  1. Тэг joint используется, чтобы соединять линки между собой. Ему нужно задать уникальное имя и тип. Наиболее часто используются типы revolute и continuous.
  • child крепится к parent.
  • xyz определяет по какой оси будет вращение.
  • limit задает ограничение на сочленение.
  • effort - максимальные моменты сил Н*м, которые можно задать по оси.
  • velocity - максимальная скорость.
  • есть также upper и lower, они определят максимальный и минимальный угол поворота.
  • damping определяет возникающее сопротивление пропорциональное скорости. Варьированием этого параметра и момента силы, которая будет прикладываться по оси, задается максимальная скорость вращения сочленения и его динамика.

Более подробно с созданием sdf файла моделей с помощью утилиты xacro, с созданием launch файла и написанием плагинов можно ознакомиться здесь

веревка

Видео-пример работы программы:

rope in gazebo

Заключение.

Моделирование – важный этап проектирования роботов и исследования их поведения в ВС. Моделирование включает в себя проверку различных взаимодействий –физических или наблюдательных для построения карты (модели) ВС. Однако моделирование имеет и недостатки. Не всегда возможно построение адекватной модели ВС и/или робота, из-за чего поведение робота в искусственной среде не будет соответствовать его поведению в реальных условиях. Реальный мир обычно более беспорядочный и шумный, имеет огромное число физических свойств и параметров, которые не всегда можно учесть при моделировании, поэтому искусственную окружающую среду принципиально сложно (а иногда и невозможно) создать. Моделирование робота является сложным процессом, так как сенсоры в реальном мире могут часто показывать различные или неожиданные характеристики. Однако не смотря на эти недостатки, моделирование ВС и таких сложных роботов, как БПЛА, необходимо для создания надёжных, достаточно устойчивых алгоритмов для работы в реальных условиях систем БПЛА.

Полезные ссылки для работы с симулятором и разработки:

  1. Пример кода на С++, помещающий в симулятор робота и передвигающий его в точку (2, 0, 0).
  2. Вводное руководство по работе с Gazebo и ROS
  3. OpenAI Gym+ROS+Gazebo: обучение автономного робота в домашних условиях. Часть 1
  4. Установка ROS Noetic на Ubuntu 20.04
  5. Cборка mavlink
  6. Установка и сборка всех необходимых частей под Ubuntu 18.04
  7. Beginner: Model Editor
  8. Building your own robot
  9. Вводное руководство по работе с Gazebo