{"id":19004579,"url":"https://github.com/osll/tello-dev","last_synced_at":"2025-10-17T12:55:33.361Z","repository":{"id":43941747,"uuid":"506992064","full_name":"OSLL/tello-dev","owner":"OSLL","description":null,"archived":false,"fork":false,"pushed_at":"2024-05-28T09:39:19.000Z","size":195,"stargazers_count":0,"open_issues_count":14,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-01T02:01:42.307Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OSLL.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2022-06-24T11:53:15.000Z","updated_at":"2024-05-28T09:39:23.000Z","dependencies_parsed_at":"2024-04-13T09:22:51.330Z","dependency_job_id":"bfdbe6bf-5204-4223-a33c-73fc8b69f44d","html_url":"https://github.com/OSLL/tello-dev","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OSLL%2Ftello-dev","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OSLL%2Ftello-dev/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OSLL%2Ftello-dev/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OSLL%2Ftello-dev/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OSLL","download_url":"https://codeload.github.com/OSLL/tello-dev/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OSLL%2Ftello-dev/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":258569846,"owners_count":22722056,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-08T18:23:45.480Z","updated_at":"2025-10-17T12:55:28.334Z","avatar_url":"https://github.com/OSLL.png","language":"Python","readme":"# Итерация 4\nВ результате итерации не удалось запустить рой. Исправлены недочеты прошлых итераций.\nЗависимости:  \nВерсия ОС: Ubuntu 22.04.4 LTS  \nPython 3.10.12\n\n## Конфигурирование\nЗаполнить [конфигурационный файл](https://github.com/OSLL/tello-dev/blob/master/swarm/networks.json)\n```json\n{\n    \"ifaces\" : {\n        \"iface-name\" : {\n            \"ssid\" : \"\",\n            \"password\" : \"\",\n            \"ip\": \"172.18.0.3\"\n        },\n        \"iface-name\": {\n            \"ssid\" : \"\",\n            \"password\" : \"\",\n            \"ip\": \"172.18.0.4\"\n        }\n    }\n}\n```\n- Необходимо выполнить команду `ip a` и вставить имена необходимых wlan-интерфейсов вместо `iface-name`.\n- Установить пакет `network-manager`:\n  `apt install network-manager=1.36.6-0ubuntu2`\n- Выполнить команду `nmcli dev wifi list` и определить SSID wifi сетей причастных к дрону и вставить вместо `ssid`\n\n**Пример сконфигурированного файла**\n```json\n{\n    \"ifaces\" : {\n        \"wlo0\" : {\n            \"ssid\" : \"DRONE 1\",\n            \"password\" : \"\",\n            \"ip\": \"172.18.0.3\"\n        },\n        \"wlo1\": {\n            \"ssid\" : \"DRONE 2\",\n            \"password\" : \"\",\n            \"ip\": \"172.18.0.4\"\n        }\n    }\n}\n```\n\n## Запуск\nУстановить зависимости  \n```bash\npython3 -m pip install jsonrpcclient==4.0.3 requests==2.31.0\n```\n- Необходимо выполнить команду `docker compose --file ./swarm/docker-compose.yml up -d --build` (в одном месте монтируется с хоста папка и этого не избежать, иначе из контейнера нельзя будет управлять сетевыми устройствами)\n- После запуска необходимо вызвать скрипт *client.py* передав флаги -c \u003ccommand\u003e --ip \u003cip\u003e,\n  где:\n  \n  --ip - P-адреса сервера JSON-RPC, к которому скрипт будет отправлять запросы, у нас это 127.0.0.1.\n   \n  -c - команда для дронов.  \n  \nПример:\n```bash\npython3 ./swarm/scripts/rpc/client.py -c takeoff --ip 127.0.0.1\n```\nРезультат:  \n```bash\nRESULT for 'http://127.0.0.1:65001' :\n         {'jsonrpc': '2.0', 'result': 'OK', 'id': 1}\n```\n## Остановка контейнеров\n```bash\ndocker compose --file ./swarm/docker-compose.yml stop\n```\n## Удаление контейнеров\n```bash\ndocker compose --file ./swarm/docker-compose.yml down\n```\n\n## Презентация \nПрезентация:[ОУПРПО. Итерация 4. Проект 12](https://docs.google.com/presentation/d/15QLL1ix36oWb84pD0Ya88piNtv9CHaV_Dnr0AQvBDYY/edit?usp=sharing)\n\n\n# Итерация 3\nЗависимости:  \nВерсия ОС: Ubuntu 22.04.4 LTS  \nPython 3.10.12\n\n## Конфигурирование\nЗаполнить [конфигурационный файл](https://github.com/OSLL/tello-dev/blob/master/swarm/networks.json)\n```json\n{\n    \"ifaces\" : {\n        \"iface-name\" : {\n            \"ssid\" : \"\",\n            \"password\" : \"\",\n            \"ip\": \"172.18.0.3\"\n        },\n        \"iface-name\": {\n            \"ssid\" : \"\",\n            \"password\" : \"\",\n            \"ip\": \"172.18.0.4\"\n        }\n    }\n}\n```\n- Необходимо выполнить команду `ip a` и вставить имена необходимых wlan-интерфейсов вместо `iface-name`.\n- Установить пакет `network-manager`:\n  `apt install network-manager=1.36.6-0ubuntu2`\n- Выполнить команду `nmcli dev wifi list` и определить SSID wifi сетей причастных к дрону и вставить вместо `ssid`\n\n**Пример сконфигурированного файла**\n```json\n{\n    \"ifaces\" : {\n        \"wlo0\" : {\n            \"ssid\" : \"DRONE 1\",\n            \"password\" : \"\",\n            \"ip\": \"172.18.0.3\"\n        },\n        \"wlo1\": {\n            \"ssid\" : \"DRONE 2\",\n            \"password\" : \"\",\n            \"ip\": \"172.18.0.4\"\n        }\n    }\n}\n```\n\n## Запуск\nУстановить зависимости  \n```bash\npython3 -m pip install jsonrpcclient==4.0.3 requests==2.31.0\n```\n- Необходимо выполнить команду `docker compose -f ./swarm/docker-compose.yml up -d --build` (в одном месте монтируется с хоста папка и этого не избежать, иначе из контейнера нельзя будет управлять сетевыми устройствами)\n- После запуска необходимо вызвать скрипт *client.py* передав флаги -c \u003ccommand\u003e --ip \u003cip\u003e,\n  где:\n  \n  --ip - P-адреса сервера JSON-RPC, к которому скрипт будет отправлять запросы, у нас это 127.0.0.1.\n   \n  -c - команда для дронов.  \n  \nПример:\n```bash\npython3 ./swarm/scripts/rpc/client.py -c takeoff --ip 127.0.0.1\n```\nРезультат:  \n```bash\nRESULT for 'http://127.0.0.1:65001' :\n         {'jsonrpc': '2.0', 'result': 'OK', 'id': 1}\n```\n## Презентация и видео\n[Видео запуска из лаборатории](https://drive.google.com/file/d/1AlVOG27zfj0EoQd7CfunbafDo9c3x55g/view?usp=sharing)  \n[Логи запуска](https://drive.google.com/file/d/1QEGajXq3eJybhvswaCkATVJhRs7hSCsq/view?usp=sharing)  \nПрезентация:[ОУПРПО. Итерация 3. Проект 12](https://drive.google.com/file/d/1SChuYAM4CD_IQHj4QtwAoYbMkWu40w0_/view?usp=sharing)\n\n\n#\n#\n\n# Итерация 2\n## Версия 1\nЧтобы запустить рой из одного дрона [(wiki скрипта)](https://github.com/OSLL/tello-dev/wiki/%D0%97%D0%B0%D0%BF%D1%83%D1%81%D0%BA-%D0%BE%D0%B4%D0%B8%D0%BD%D0%BE%D1%87%D0%BD%D0%BE%D0%B3%D0%BE-%D0%B4%D1%80%D0%BE%D0%BD%D0%B0), необходимо выполнить следующие команды:    \n`docker build -t single_drone_swarm .`   \n`sudo docker run single_drone_swarm`  \n[Видео запуска из лаборатории](https://drive.google.com/file/d/1U_BEifhNsm7GAZkeG5-yhBLDRsZn3LQ_/view)\n## Скрипты для создания физических сетевых интерфейсов в сети docker\nИнструкция находится на [wiki-странице](https://github.com/OSLL/tello-dev/wiki/%D0%A4%D0%B8%D0%B7%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5-%D1%83%D1%81%D1%82%D1%80%D0%BE%D0%B9%D1%81%D1%82%D0%B2%D0%BE). Работает по wifi-адаптер Realtek 802.11ac.\n## Для создания контейнеров для каждого дрона, подключаемых к созданной сети  \n`docker build -t single_drone_swarm .`    \n`python run_swarm.py`     \nКонтейнеры отключаются через 21 секунду без дронов.\n## Презентация и видео\n[Видео запуска из лаборатории](https://drive.google.com/file/d/1U_BEifhNsm7GAZkeG5-yhBLDRsZn3LQ_/view)  \nПрезентация:[ОУПРПО. Итерация 2. Проект 12.pdf](https://github.com/OSLL/tello-dev/files/14780046/2.12.pdf)\n\n#\n#\n\n# Обучение управлению дронами Tello\n\n## Зависимости\n\nНеобходимые библиотеки лежат в `requirements.txt`.\n\nУстановка происходит командой `pip3 install -r requirements.txt`\n\n## Запуск\n\nПеред запуском решений необходимо подключиться к сети дрона.\n\nВсе решения запускаются через `main.py`: `python3 main.py -s \u003csolution\u003e`\n\nТекущие решения:\n* `default` -- решение по-умолчанию: после взлета поднимает дрона на 150см, поворачивает его на 360 градусов и приземляет его.\n* `simple_lib_demo` -- простой пример использования дрона при помощи библиотеки djitellopy ([wiki страничка про библиотеки](./wiki/simple_using.md)). Программа дрона:\n  * пролететь вперёд на 100см\n  * подняться на 100см\n  * повернуться вправо на 90 градусов\n  * опуститься на 50см\n  * пролететь влево на 100см\n  * сдлеать сальто назад, вправо и вперёд\n* `simple_socket_demo` -- использование дрона при помощи сокетов без каких-либо других библиотек. Решение максимально простое, поэтому нестабильное. Программа дрона:\n  * пролететь вперёд на 100см\n  * подняться на 100см\n  * повернуться на 360 градусов вправо\n* `test_all_sensors_demo` -- проверка всех сенсоров. Программа дрона как у `simple_lib_demo` решения. При этом на текущее видео с дрона наносятся данные с его сенсоров и датчиков.\n* `follow_marker_with_coords` -- следование за маркером при помощи опредлении координат маркера относительно дрона. Видео с дрона записывается в `drone_stream.avi` файл. *Требуется откалиброванная камеры*\n* `follow_marker_with_pixels` -- аналогично `follow_marker_with_coords`, только координаты вычисляются при помощи смещения маркера от центра изображения, перемещение дрона всегда на заданное расстояние по одной оси координат. Видео с дрона записывается в `drone_stream.avi` файл.\n* `camera_calibration` -- калибровка камеры. Результаты будут в папке `calibration_results`\n\nЕсли решение требует параметров камеры, то оно будет пытаться их считать из файла `camera_setting.npy`\n\n## Структура папок\n\n|     Папка         |        Описание         |\n|:------------------|:------------------------|\n|     `drone`       | Базовые классы для взаимодействия с дроном, которые используются решениями |\n|     `utils`       | Общие полезные функции |\n|     `wiki`        | Wiki-странички с полезной информацией |\n|     `ros`         | Использование дрона при помощи ROS |\n|   `solutions`     | Решения для запуска на дроне |\n| `solutions/calibration` | Калибровка дрона: камера |\n| `solutions/simple_use`  | Простое использование дрона. Решения `simple_lib_demo`, `simple_socket_demo`, `test_all_sensors_demo` |\n| `solutions/following`   | Решения для следования за маркером: `follow_marker_with_coords`, `follow_marker_with_pixels` |\n\n\n## ROS\n\nИспользование Tello дронов с ROS находится с [папке `ros`](./ros)\n\n## Полезные ссылки\n\n* [Оффициальные мануалы](https://www.ryzerobotics.com/tello-edu/downloads)\n* [Оффициальные примеры кода](https://github.com/dji-sdk/Tello-Python)\n* [Github репозиторий библиотеки DJITelloPy](https://github.com/damiafuentes/DJITelloPy)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fosll%2Ftello-dev","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fosll%2Ftello-dev","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fosll%2Ftello-dev/lists"}