Skip to content

Содержит инструкции по быстрому развертыванию симулятора и зависимостей для программирования дронов на python

Notifications You must be signed in to change notification settings

tamerlan-b/drone-development

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 

Repository files navigation

drone-development

Содержит инструкции по быстрому развертыванию симулятора и зависимостей для программирования дронов на python

Описание

Данный проект предназначен для быстрого старта программирования дронов на python. Здесь рассказывается как:

  • установить контейнер с ROS для PX4;

  • установить и запустить PX4 SITL;

  • установить библиотеку dronekit и управлять дроном через нее.

Подготовка

На компьютере предварительно должны быть установлены git и docker (см. здесь).

  1. Загружаем docker-образ, содержащий ROS-Melodic, Gazebo и зависимости PX4
docker pull px4io/px4-dev-ros-melodic
  1. Скачиваем PX4 SITL
mkdir src
cd src
git clone https://github.com/PX4/PX4-Autopilot.git
cd ..
  1. Запускаем контейнер
Инструкция для Linux

Для Linux надо разрешить подключения к X Server для вывода графической информации:

xhost+

и запустить контейнер с параметрами:

docker run -it --privileged \
--network host \
--gpus=all \
--runtime=nvidia \
--tmpfs=/tmp \
-v /tmp/.X11-unix:/tmp/.X11-unix:ro \
-e DISPLAY=:0 \
-e QT_X11_NO_MITSHM=1 \
-e USE_NVIDIA=true \
-e NVIDIA_VISIBLE_DEVICES=${NVIDIA_VISIBLE_DEVICES:-all} \
-e NVIDIA_DRIVER_CAPABILITIES=${NVIDIA_DRIVER_CAPABILITIES:+$NVIDIA_DRIVER_CAPABILITIES,}graphics \
-v `pwd`/src/PX4-Autopilot:/src/PX4-Autopilot \
--name=mycontainer px4io/px4-dev-ros-melodic:latest bash
Инструкция для Windows

На Windows ситуация другая. Для запуска GUI приложений надо скачать, установить и запустить программу VcXsrv Windows X Server.

После чего запустить docker-контейнер с параметрами:

docker run -it --privileged \
--network host \
-e DISPLAY={DISPLAY_IP} \
-v `pwd`/src/PX4-Autopilot:/src/PX4-Autopilot \
--name=mycontainer px4io/px4-dev-ros-melodic:latest bash

где вместо {DISPLAY_IP} надо указать IP-адрес подключения к дисплею из программы VcXsrv Windows X Server. Его можно получить внутри контейнера командой (способ описан здесь):

grep nameserver /etc/resolv.conf

Пример вывода:

nameserver 127.0.1.1

Тогда при запуске контейнера указывается параметр вида:

-e DISPLAY=127.0.1.1:0 \

-v `pwd`/src/PX4-Autopilot:/src/PX4-Autopilot - означает, что мы подключаем папку `pwd`/src/PX4-Autopilot как том и в контейнере она будет располагаться по пути /src/PX4-Autopilot.

Параметр --name определяет имя контейнера. По умолчанию задается mycontainer, но можно задать и свое.

  1. Загрузка подмодулей PX4 После запуска контейнера в PX4 надо догрузить содержимое подмодулей.
cd /src/PX4-Autopilot
git submodule update --init --recursive

Проверить, что все успешно работает можно, запустив симулятор px4 вместе с gazebo:

cd /src/PX4-Autopilot
make px4_sitl gazebo

Если все ОК, то должно открыться окно симулятора вместе с дроном.

  1. Установка dronekit в контейнер
pip install dronekit
  1. Установка nano
    nano - это консольный текстовый редактор. Он устанавливается так:
apt-get update
apt-get install nano
  1. Если все вышеописанные шаги прошли успешно, то у Вас получился контейнер для разработки ПО для дронов на python. Выходите из контейнера:
exit

Запуск и работа

Запуск контейнера:

docker start mycontainer

Подключение к контейнеру:

docker attach mycontainer
Пример запуска программы на python с dronekit
  1. Запускаем PX4 SITL и симулятор gazebo:
cd /src/PX4-Autopilot
make px4_sitl gazebo
  1. Открывает новую консоль и подключаемся к контейнеру:
docker attach mycontainer
  1. Создаем python-файл:
cd /src
touch example.py
chmod a+x example.py
  1. Копируем в него код из туториала PX4
    Для этого открывает файл через nano:
nano example.py

Вставляем код, сохраняем изменения (Ctrl+O) и закрываем файл (Ctrl+X).

  1. Запускаем код:
python example.py
  1. Наслаждаемся полетом дрона по точкам:)

Примечание. Контейнер не удалять!!! Иначе придется заново устанавливать dronekit и nano.

Устранение неполадок

Ошибка при запуске симулятора JMAVSim

Текст ошибки:

Exception in thread "main" java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:61)
Caused by: java.awt.AWTError: Assistive Technology not found: org.GNOME.Accessibility.AtkWrapper
	at java.awt.Toolkit.loadAssistiveTechnologies(Toolkit.java:807)
	at java.awt.Toolkit.getDefaultToolkit(Toolkit.java:886)
	at java.awt.Window.getToolkit(Window.java:1358)
	at java.awt.Window.init(Window.java:506)
	at java.awt.Window.<init>(Window.java:537)
	at java.awt.Frame.<init>(Frame.java:420)
	at java.awt.Frame.<init>(Frame.java:385)
	at javax.swing.JFrame.<init>(JFrame.java:189)
	at me.drton.jmavsim.Visualizer3D.<init>(Visualizer3D.java:107)
	at me.drton.jmavsim.Simulator.<init>(Simulator.java:192)
	at me.drton.jmavsim.Simulator.main(Simulator.java:941)
	... 5 more

Решение:
В контейнере в файле /etc/java-8-openjdk/accessibility.properties надо закомментировать строчку assistive_technologies=org.GNOME.Accessibility.AtkWrapper.

Полезные ссылки

About

Содержит инструкции по быстрому развертыванию симулятора и зависимостей для программирования дронов на python

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published