{"id":13710980,"url":"https://github.com/Keleas/Tello_Laser_Shot","last_synced_at":"2025-05-06T20:31:26.467Z","repository":{"id":75715486,"uuid":"223333417","full_name":"Keleas/Tello_Laser_Shot","owner":"Keleas","description":"🚁🔦🎯 Система управления автономного БПЛА «ПроеКТОриЯ 2019»","archived":false,"fork":false,"pushed_at":"2020-03-28T16:51:49.000Z","size":2359,"stargazers_count":4,"open_issues_count":0,"forks_count":4,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-11-13T21:44:46.430Z","etag":null,"topics":["computer-vision","python","tello"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Keleas.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"publiccode":null,"codemeta":null}},"created_at":"2019-11-22T05:54:19.000Z","updated_at":"2023-11-29T12:41:03.000Z","dependencies_parsed_at":"2023-06-07T11:15:32.264Z","dependency_job_id":null,"html_url":"https://github.com/Keleas/Tello_Laser_Shot","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/Keleas%2FTello_Laser_Shot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Keleas%2FTello_Laser_Shot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Keleas%2FTello_Laser_Shot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Keleas%2FTello_Laser_Shot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Keleas","download_url":"https://codeload.github.com/Keleas/Tello_Laser_Shot/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252764297,"owners_count":21800668,"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":["computer-vision","python","tello"],"created_at":"2024-08-02T23:01:03.024Z","updated_at":"2025-05-06T20:31:26.386Z","avatar_url":"https://github.com/Keleas.png","language":"Python","funding_links":[],"categories":["Examples"],"sub_categories":[],"readme":"# Tello Laser Shot\n\nВысокоурвневый интерфейс управления для дрона DJI Tello EDU, написаный для применения в качестве исходной архитектуры для решения кейса __«Разработка системы управления для автономного ударного беспилотного летательного аппарата»__ на форуме __«ПроеКТОриЯ 2019»__ в г.Ярославль 23.11.19 — 25.11.19.\n\n## Содержание\n- [Условия кейса](#условия-кейса)\n- [Демонстрация решения](#демонстрация-решения)\n- [Установка](#установка)\n- [Описание файлов в репозитории](#описание-файлов-в-репозитории)\n- [Архитектура системы управления](#архитектура-системы-управления)\n\t- [Структурная схема](#структурная-схема)\n\t- [Реализованная часть](#реализованная-часть)\n\t- [Особенности управления](#особенности-управления)\n- [Contributing](#contributing)\n- [Авторы](#авторы)\n\n\n## Условия кейса\n\n[Постановка инженерно-технической задачи кейса](https://github.com/Keleas/Tello_Laser_Shot/blob/master/case_conditions.md), которая включает в себя цели, задачи, принятые ограничения и характеристики объектов кейса.\n\n[Техническое описание](https://docs.google.com/document/d/17kr19o82x-43bqUDP20d9jeDlM1DWrNjdxtdaQakFNs/edit?usp=sharing) модуля лазерной указки и мишени. \n\n[Презентация](https://docs.google.com/presentation/d/1biOTNeaPVXXxxrHvvTEWBiLqoUdYQppOPbZNus6Bpf4/edit?usp=sharing) с защиты кейса.\n\n## Демонстрация решения\n\n![Alt Text](demo_1.gif)\n\n## Установка\n\nЧтобы установить окружение с помощью __conda__: ```conda env create -f tello_drone_env.yml```\n\n## Описание файлов в репозитории\n\n - __drone/djitellopy__ — [DJI Tello](https://github.com/damiafuentes/DJITelloPy) Python интерфейс с использованием официального Tello SDK.\n\n - __drone/main.py__ — Главный исполняемый файл, запускающий весь цикл работы дрона или отладочной системы.\n \n - __drone/base_controls.py__ — Система ручного управления всеми модулями ЛА.\n \n- __drone/controller.py__ — Обвязка системы управления дрона для автопилота.\n\n- __drone/cv_system.py__ — Система технического зрения.\n\n- __drone/tools.py__ — Инструменты для передачи информации между модулями, инициализация вспомогательных классов.\n\n- __drone/virtual_drone.py__ — Модуль для моделирования полета дрона.\n\n*Код обновляется ...*\n\n## Архитектура системы управления\n\nНиже представлено описание решения по разработке системы управления автономного БПЛА с полезной нагрузкой в виде системы лазерной подсветки целей (мишеней).\n\n### Структурная схема\n\nКомплексную систему управления БПЛА предлагается разбить на ряд подсистем (модулей):\n- технического зрения;\n- прицеливания;\n- управления полезной нагрузкой;\n- БПЛА–вождения;\n- диспетчера.\n\nСтруктурная схема взаимодействия всех модулей описана на рисунке ниже:\n\n\u003cimg src=\"https://i.ibb.co/RpNnSfq/fig.png\" width=80%\u003e\n\n### Реализованная часть\n\n*Изначально участникам кейса предоставляется интерфейс системы управления с инициализированными модулями и архитектурой.*\n\n__Готово:__\n- [x] __Модуль диспетчера для обмена сообщенями управления и проверки состояний с дроном__\n- [x] __Модуль ручного управления с возможностью выбора типа системы управления: 1-го или 4-ех канального__\n- [ ] __Модуль пересчета сигналов управления в физические величины__\n- [ ] __Модуль технического зрения__\n\t- [x] Система прицеливания\n\t- [ ] Система выбора оптимальной цели\n\t- [x] Система определения успешного поражения\n- [ ] __Модуль автопилота__\n\t- [ ] Система выбора оптимальной стратегии поведения\n\t- [x] Система построения маршрута движения\n\t- [ ] Система наведения\n- [ ] __Модуль управления полезной нагрузкой__\n\t- [x] Система ведения огня\n\t- [ ] Система выбора оптимальной стратегии ведения огня\n\n*Код обновляется ...*\n\n### Особенности управления\n\nУправление дроном происходит за счет обмена закодированных сообщений по протоколу UDP, не имющего обратной связи. Однако реализация передачи сообщений включает проверку получения обратного сигнала от дрона после выполнения заданной ему команды. \n\nДвижение дрона осуществлятся с помощью 1-го или 4-ех канального управления. Ограничения первого типа управления состоят в невозможности обмена сообщенями во время выполнения команд движения, команды движения ограничены и строго дискретизированы по каждому направлению. Из-за этих недостатков применение такого типа управления в режиме автопилота считается невозможным.\n\nПреимущество 4-ех канальной передачи команд управления состоит в возможности изменения направления двжиения по нескольким атомарным командам: \n- движение вперед/назад;\n- поворот налево/направо;\n- движение вверх/вниз;\n- двжиение влево/вправо.\n\nВсе команды и допустимые значения сигналов указаны в [Tello EDU SDK](https://dl-cdn.ryzerobotics.com/downloads/Tello/Tello%20SDK%202.0%20User%20Guide.pdf).\n\n__Команды ручного управления:__\n\n- \"w\"/\"s\" — движение вперед/назад\n- \"a\"/\"d\" — поворот налево/направо\n- \"q\"/\"e\" — движение вверх/вниз\n- \"z\"/\"c\" — движение влево/вправо\n- \"t\" — взлет\n- \"l\" — посадка\n- \"m\" — переключение типа рученого управления\n- \"p\" — включение/выключение автопилота\n- \"h\" — тестовый импульс лазерной указки\n- \"1\" - 5\" — переключение передачи скорости \n\n## Contributing \n\nПравила внесения изменений в репозиторий для коллективной работы над кейсом:\n\n1. Сделать ```fork``` репозитория\n\n2. Склонировать на локальное устройство\n\n3. Внести изменения\n\n4. Сделать ```pull request```\n\n## Авторы\n\n__Кураторы кейса:__\n\n[Nikita Grishin](https://github.com/Keleas)\n\n[Daniil Makhotkin](https://github.com/Ken-chan)\n\n__Участники кейса:__\n\n[laptevaarina](https://github.com/laptevaarina)\n\n*Список пополняется ...*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FKeleas%2FTello_Laser_Shot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FKeleas%2FTello_Laser_Shot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FKeleas%2FTello_Laser_Shot/lists"}