You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tello_modules/README.md

136 lines
6.3 KiB

4 years ago
# Tello_modules
4 years ago
## API дрона
Для начала необходимо установить любую либу которая будет кидать команды на дрон по websocket. Возмем например [эту](https://github.com/Virodroid/easyTello)
```bash
pip3 install easytello opencv-python
```
Протестировать работу можно простым скриптом
```python
from easytello import tello
drone = tello.Tello()
drone.takeoff() #Команда взлета
for i in range(12):
drone.forward(30) #Лететь вперед на 30 см
drone.cw(90) #Повернутся на 90 градусов по часовой
drone.land()
```
Описание команд для дрона можно посмотреть [здесь](http://protello.com/tello-sdk-1/).
## Работа с модулями
1. Склонить данный репозиторий.
2. Воткнуть флешку приемника в компьютер.
3. Запустить модуль длительным нажатием на кнопку сверху.
4. Запустить TelloModule.py дабы убедится в его работоспособности.
```bash
python3 TelloModule.py
```
Вывод должен быть такой:
```log
-------- Test blocking mode ---------
Test 0 count = 2168 forward = 208 right = 234 back = 190 left = 115 light = 852
Test 1 count = 2169 forward = 203 right = 234 back = 196 left = 111 light = 847
Test 2 count = 2170 forward = 203 right = 235 back = 195 left = 113 light = 847
Test 3 count = 2171 forward = 209 right = 235 back = 192 left = 112 light = 852
Test 4 count = 2172 forward = 209 right = 233 back = 190 left = 114 light = 847
Test 5 count = 2173 forward = 206 right = 234 back = 193 left = 112 light = 842
Test 6 count = 2174 forward = 206 right = 235 back = 193 left = 112 light = 847
Test 7 count = 2175 forward = 208 right = 237 back = 189 left = 110 light = 842
Test 8 count = 2176 forward = 206 right = 234 back = 192 left = 114 light = 847
Test 9 count = 2177 forward = 208 right = 233 back = 192 left = 114 light = 842
------ Test NON Blocking mode -------
Test 0 count = 2179 forward = 205 right = 237 back = 193 left = 113 light = 847
Test 1 count = 2180 forward = 206 right = 234 back = 192 left = 114 light = 852
Test 2 count = 2181 forward = 204 right = 235 back = 191 left = 113 light = 847
Test 3 count = 2181 forward = 204 right = 235 back = 191 left = 113 light = 847
Test 4 count = 2182 forward = 207 right = 234 back = 192 left = 110 light = 842
Test 5 count = 2183 forward = 204 right = 235 back = 193 left = 114 light = 842
Test 6 count = 2184 forward = 208 right = 235 back = 190 left = 114 light = 847
Test 7 count = 2185 forward = 209 right = 233 back = 194 left = 114 light = 852
Test 8 count = 2185 forward = 209 right = 233 back = 194 left = 114 light = 852
Test 9 count = 2186 forward = 208 right = 236 back = 193 left = 113 light = 852
------------ Finish Test ------------
```
Если прошли 10 тестов в первом случае и 10 во втором то все хорошо, если нет то повторяем все сначала.
5. Запускаем test.py чтобы протестировать работу модуля вместе с коптером.
```bash
python3 test.py
```
## Описание работы с библиотекой.
1. Необходимо добавить файл библиотеки в свой скрипт.
```python
from TelloModule import TelloModule
```
2. Необходимо создать экземпляр класса работающего с модулем
```python
mod = TelloModule()
```
3. Далее нужно понимать что есть 2 режима работы библиотеки это Блокирующий и не Блокирующий.
4 years ago
### Блокирующий режим работы
В данном режиме при вызове метода приема информации с модуля, ждем когда придут новые значения, и только после этого скрипт продолжит исполнятся. Для его работы будет достаточно вызвать метод чтения значения и ждать его завершения.
```python
line = mod.get_block_dist()
```
Данный метод возвращает лист с 6-ю параметрами:
* счетчик (нужен для контроля количества пропущенных значений)
* передний дальномер
* правый дальномер
* задний дальномер
* левый дальномер
* Значение датчика освещенности
Так-же тут необходимо отметить что все команды для коптера работают в блокирующем режиме.
4 years ago
### НЕ Блокирующий режим работы
В этом режиме при вызове одного из методов происходит чтение прошлого значения с модуля из-за чего не происходит блокировки. Для использования этого режима нужна инициализация и де инициализация.
```python
mod.module_init('distance') # инициализация модуля 'distance', это название модуля с дальномерами
# ваш код
mod.module_deinit() # Де инициализация модуля
```
Для данного режима реализованно большее количество методов:
```python
count = mod.get_count() #вернет значение счетчика
forward = mod.get_forward_dist() #показание переднего сенсора
right = mod.get_right_dist() #показание правого сенсора
back = mod.get_back_dist() #показание заднего сенсора
left = mod.get_left_dist() #показание левого сенсора
light = mod.get_light() #показание датчика освещенности
dist = get_dist #вернет лист из показания следующих сенсоров 0) передний 1) правый 2) левый 3) задний.
```