README.md

tello_sim

За основу был взят симулятор Tello Sim который был переведен на русский с небольшими доработками и переходом на использование библиотеки tello-asyncio в место easyTello

tello_sim - это простой Python-симулятор, который может быть использован студентами для тестирования планов полета tello перед развертыванием их на реальном дроне. Он был вдохновлен библиотекой easyTello (сейчас это tello-asyncio) и использует ее для интерфейса дрона.

Основные примеры по tello_sim:

Примеры развертывания:

Документация по DJI Tello EDU:

Подключение библиотеки:

from tello_sim import Simulator

Инициализация симулятора:

my_drone = Simulator()

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

Взлететь:

my_drone.takeoff()   # взлёт

или

my_drone.takeoff(DISABLE_SEND_TAKEOFF = True)

Флаг DISABLE_SEND_TAKEOFF = True отключает сохранение команды для её отправки на дрон, необходимо в случае если мы другим способом передаём команду взлёта

Приземлиться:

my_drone.land()      # посадка

Движение вперед/назад, влево/вправо (тангаж и крен) и высота:

my_drone.forward(x)  # вперед
my_drone.back(x)     # назад
my_drone.left(x)     # налево
my_drone.right(x)    # направо
my_drone.up(x)       # вверх
my_drone.down(x)     # вниз

Поворот по/против часовой стрелки (рысканье):

my_drone.cw(x)       # вращение по часовой стрелке
my_drone.ccw(x)      # вращение против часовой стрелки

Сальто (направление сальто):

my_drone.flip('f')   # сальто вперед
my_drone.flip('b')   # сальто назад
my_drone.flip('l')   # сальто влево
my_drone.flip('r')   # сальто вправо

Пауза (ожидание) в миллисекундах:

my_drone.wait(1000) # задержка в 1 секунду

(Выполняется при развертывании команд)

Дополнительные команды управления

Перемещение к заданной точке x,y,z c заданной скоростью
Параметры (int): координаты x, y, z и скорость

my_drone.go(20, 20, 0, 10)

Перемещение по кривой из 3 точек (текущей и двух заданных)
Параметры (int):
координаты x1, y1, z1 (второй точки), x2, y2, z2 (третьей точки) и скорость:

my_drone.curve(30, 30, 0, 50, 70, 20, 10)

Команды сохранения маршрута в файл

Сохранение текущего рассчитанного маршрута в файл commands.json

my_drone.save()

Сохранение текущего рассчитанного маршрута с указанием имени файла:

my_drone.save("file_name.json")

Команды загрузки маршрута из файла

Загрузка маршрута из файла с построением графиков маршрута:

my_drone.load_commands("commands.json")

Загрузка маршрута из файла без построения графиков, для моментального развертывания:

my_drone.load_deploy("commands.json")

Команды развертывания маршрута на реальном дроне

Развертывание через симулятор

Развертывание текущего рассчитанного или загруженного с файла маршрута
В случае подключения к точке доступа дрона:

my_drone.deploy()

В случае если дрон подключается к заданной точке доступа
(необходимо заранее узнать его ip адрес):

my_drone.deploy(ip='192.168.1.100')

Развертывание через внешнюю программу

Для развертывания используется python генератор

# Для развертывания используется python генератор
for command_json in my_drone.deploy_gen():
	command = my_drone.serialize_command(command_json)
	# отправка на дрон через любую стороннюю библиотеку

Служебные команды

Отправка любых произвольных команд в формате:
send_command("команда", аргумент1, аргумент2...)

my_drone.send_command("battery?")     # получить уровень заряда батареи

Сброс текущего сохраненного маршрута (например перед загрузкой нового)

my_drone.reset()

Режимы индиации светодиода дрона

Color Pattern Drone State
Нормальное состояние Попеременно красный, зеленый и желтый Мигание Включение и выполнение тестов самодиагностики
Зеленый Периодически мигает дважды Система позиционирования зрения активна
Желтый Медленно мигает Видение недоступно (обычно из-за низкой освещенности)
Состояние зарядки Синий Постоянный Зарядка завершена
Синий Медленно мигает Выполнение зарядки
Синий Мигает быстро Ошибка зарядки
Состояния предупреждения Желтый Быстро мигает Потерян сигнал дистанционного управления
Красный Медленно мигающий Низкий заряд батареи
Красный Блистает быстро Критически низкий заряд батареи
Красный Постоянный Критическая ошибка

Запуск нескольких командных сценариев в одной сессии

Примечание: если вы запускаете несколько сценариев для дрона, вам, возможно, придется убить процесс, который связывает процесс python с портом Tello, если вы получите ошибку OSError: [Errno 48] Address already in use. Вы можете найти и убить этот процесс в консоли linux, MacOSX или Windows следующим образом. Замените XXXX на идентификатор процесса, который вы видите после выполнения команды lsof.

lsof -i:8889
kill XXXX

в windows Пример:

netstat -ano | findstr :8889
taskkill /F /PID XXXX
Описание

Это репозиторий для симулятора DJI Tello. Симулятор предназначен для студентов или школьников, которые хотят добавить симуляцию в проект Tello. В частности, мы используем его для того, чтобы студенты программировали путь через полосу препятствий в классе.

Конвейеры
0 успешных
0 с ошибкой