В результате итерации не удалось запустить рой. Исправлены недочеты прошлых итераций.
Зависимости:
Версия ОС: Ubuntu 22.04.4 LTS
Python 3.10.12
Заполнить конфигурационный файл
{
"ifaces" : {
"iface-name" : {
"ssid" : "",
"password" : "",
"ip": "172.18.0.3"
},
"iface-name": {
"ssid" : "",
"password" : "",
"ip": "172.18.0.4"
}
}
}
- Необходимо выполнить команду
ip a
и вставить имена необходимых wlan-интерфейсов вместоiface-name
. - Установить пакет
network-manager
:apt install network-manager=1.36.6-0ubuntu2
- Выполнить команду
nmcli dev wifi list
и определить SSID wifi сетей причастных к дрону и вставить вместоssid
Пример сконфигурированного файла
{
"ifaces" : {
"wlo0" : {
"ssid" : "DRONE 1",
"password" : "",
"ip": "172.18.0.3"
},
"wlo1": {
"ssid" : "DRONE 2",
"password" : "",
"ip": "172.18.0.4"
}
}
}
Установить зависимости
python3 -m pip install jsonrpcclient==4.0.3 requests==2.31.0
-
Необходимо выполнить команду
docker compose --file ./swarm/docker-compose.yml up -d --build
(в одном месте монтируется с хоста папка и этого не избежать, иначе из контейнера нельзя будет управлять сетевыми устройствами) -
После запуска необходимо вызвать скрипт client.py передав флаги -c --ip , где:
--ip - P-адреса сервера JSON-RPC, к которому скрипт будет отправлять запросы, у нас это 127.0.0.1.
-c - команда для дронов.
Пример:
python3 ./swarm/scripts/rpc/client.py -c takeoff --ip 127.0.0.1
Результат:
RESULT for 'http://127.0.0.1:65001' :
{'jsonrpc': '2.0', 'result': 'OK', 'id': 1}
docker compose --file ./swarm/docker-compose.yml stop
docker compose --file ./swarm/docker-compose.yml down
Презентация:ОУПРПО. Итерация 4. Проект 12
Зависимости:
Версия ОС: Ubuntu 22.04.4 LTS
Python 3.10.12
Заполнить конфигурационный файл
{
"ifaces" : {
"iface-name" : {
"ssid" : "",
"password" : "",
"ip": "172.18.0.3"
},
"iface-name": {
"ssid" : "",
"password" : "",
"ip": "172.18.0.4"
}
}
}
- Необходимо выполнить команду
ip a
и вставить имена необходимых wlan-интерфейсов вместоiface-name
. - Установить пакет
network-manager
:apt install network-manager=1.36.6-0ubuntu2
- Выполнить команду
nmcli dev wifi list
и определить SSID wifi сетей причастных к дрону и вставить вместоssid
Пример сконфигурированного файла
{
"ifaces" : {
"wlo0" : {
"ssid" : "DRONE 1",
"password" : "",
"ip": "172.18.0.3"
},
"wlo1": {
"ssid" : "DRONE 2",
"password" : "",
"ip": "172.18.0.4"
}
}
}
Установить зависимости
python3 -m pip install jsonrpcclient==4.0.3 requests==2.31.0
-
Необходимо выполнить команду
docker compose -f ./swarm/docker-compose.yml up -d --build
(в одном месте монтируется с хоста папка и этого не избежать, иначе из контейнера нельзя будет управлять сетевыми устройствами) -
После запуска необходимо вызвать скрипт client.py передав флаги -c --ip , где:
--ip - P-адреса сервера JSON-RPC, к которому скрипт будет отправлять запросы, у нас это 127.0.0.1.
-c - команда для дронов.
Пример:
python3 ./swarm/scripts/rpc/client.py -c takeoff --ip 127.0.0.1
Результат:
RESULT for 'http://127.0.0.1:65001' :
{'jsonrpc': '2.0', 'result': 'OK', 'id': 1}
Видео запуска из лаборатории
Логи запуска
Презентация:ОУПРПО. Итерация 3. Проект 12
Чтобы запустить рой из одного дрона (wiki скрипта), необходимо выполнить следующие команды:
docker build -t single_drone_swarm .
sudo docker run single_drone_swarm
Видео запуска из лаборатории
Инструкция находится на wiki-странице. Работает по wifi-адаптер Realtek 802.11ac.
docker build -t single_drone_swarm .
python run_swarm.py
Контейнеры отключаются через 21 секунду без дронов.
Видео запуска из лаборатории
Презентация:ОУПРПО. Итерация 2. Проект 12.pdf
Необходимые библиотеки лежат в requirements.txt
.
Установка происходит командой pip3 install -r requirements.txt
Перед запуском решений необходимо подключиться к сети дрона.
Все решения запускаются через main.py
: python3 main.py -s <solution>
Текущие решения:
default
-- решение по-умолчанию: после взлета поднимает дрона на 150см, поворачивает его на 360 градусов и приземляет его.simple_lib_demo
-- простой пример использования дрона при помощи библиотеки djitellopy (wiki страничка про библиотеки). Программа дрона:- пролететь вперёд на 100см
- подняться на 100см
- повернуться вправо на 90 градусов
- опуститься на 50см
- пролететь влево на 100см
- сдлеать сальто назад, вправо и вперёд
simple_socket_demo
-- использование дрона при помощи сокетов без каких-либо других библиотек. Решение максимально простое, поэтому нестабильное. Программа дрона:- пролететь вперёд на 100см
- подняться на 100см
- повернуться на 360 градусов вправо
test_all_sensors_demo
-- проверка всех сенсоров. Программа дрона как уsimple_lib_demo
решения. При этом на текущее видео с дрона наносятся данные с его сенсоров и датчиков.follow_marker_with_coords
-- следование за маркером при помощи опредлении координат маркера относительно дрона. Видео с дрона записывается вdrone_stream.avi
файл. Требуется откалиброванная камерыfollow_marker_with_pixels
-- аналогичноfollow_marker_with_coords
, только координаты вычисляются при помощи смещения маркера от центра изображения, перемещение дрона всегда на заданное расстояние по одной оси координат. Видео с дрона записывается вdrone_stream.avi
файл.camera_calibration
-- калибровка камеры. Результаты будут в папкеcalibration_results
Если решение требует параметров камеры, то оно будет пытаться их считать из файла camera_setting.npy
Папка | Описание |
---|---|
drone |
Базовые классы для взаимодействия с дроном, которые используются решениями |
utils |
Общие полезные функции |
wiki |
Wiki-странички с полезной информацией |
ros |
Использование дрона при помощи ROS |
solutions |
Решения для запуска на дроне |
solutions/calibration |
Калибровка дрона: камера |
solutions/simple_use |
Простое использование дрона. Решения simple_lib_demo , simple_socket_demo , test_all_sensors_demo |
solutions/following |
Решения для следования за маркером: follow_marker_with_coords , follow_marker_with_pixels |
Использование Tello дронов с ROS находится с папке ros