parent
1b1593ad7c
commit
d9a0ed26d8
@ -0,0 +1,123 @@ |
|||||||
|
import serial |
||||||
|
import time |
||||||
|
import threading |
||||||
|
|
||||||
|
info = { 'count':0, |
||||||
|
'forward_dist':0, |
||||||
|
'right_dist':0, |
||||||
|
'back_dist':0, |
||||||
|
'left_dist':0, |
||||||
|
'light':0 } |
||||||
|
|
||||||
|
class SerialTread (threading.Thread): |
||||||
|
c = 0 |
||||||
|
def __init__(self, name, counter): |
||||||
|
threading.Thread.__init__(self) |
||||||
|
self.threadID = counter |
||||||
|
self.name = name |
||||||
|
self.counter = counter |
||||||
|
def run(self): |
||||||
|
while self.c == 0: |
||||||
|
line = str(ser.readline())[4:-3].split() |
||||||
|
info['count'] = int(line[0][2:]) |
||||||
|
info['forward_dist'] = int(line[1][6:]) |
||||||
|
info['right_dist'] = int(line[2][6:]) |
||||||
|
info['back_dist'] = int(line[3][6:]) |
||||||
|
info['left_dist'] = int(line[4][6:]) |
||||||
|
info['light'] = int(line[5][6:]) |
||||||
|
def join(self): |
||||||
|
self.c = 1 |
||||||
|
|
||||||
|
class TelloModule(): |
||||||
|
def __init__(self): |
||||||
|
"""Constructor""" |
||||||
|
pass |
||||||
|
|
||||||
|
def module_init(self, module): |
||||||
|
global type_module |
||||||
|
global t |
||||||
|
global ser |
||||||
|
|
||||||
|
t = SerialTread("Thread", 1) |
||||||
|
ser = serial.Serial('/dev/ttyUSB0', 115200) |
||||||
|
ser.readline() |
||||||
|
|
||||||
|
type_module = module |
||||||
|
if type_module == 'distance': |
||||||
|
t.start() |
||||||
|
time.sleep(1) |
||||||
|
else: |
||||||
|
print ("Error: There is NO module with this name, please select \"distance\".") |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def module_deinit(self): |
||||||
|
if type_module == 'distance': |
||||||
|
t.join() |
||||||
|
type_module == '' |
||||||
|
else: |
||||||
|
print ("Error: First you need to initialize the module.") |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def get_forward_dist(self): |
||||||
|
return info['forward_dist'] |
||||||
|
|
||||||
|
def get_left_dist(self): |
||||||
|
return info['left_dist'] |
||||||
|
|
||||||
|
def get_right_dist(self): |
||||||
|
return info['right_dist'] |
||||||
|
|
||||||
|
def get_back_dist(self): |
||||||
|
return info['back_dist'] |
||||||
|
|
||||||
|
def get_light(self): |
||||||
|
return info['light'] |
||||||
|
|
||||||
|
def get_count(self): |
||||||
|
return info['count'] |
||||||
|
|
||||||
|
def get_dist(self): |
||||||
|
return [info['forward_dist'], info['right_dist'], info['left_dist'], info['back_dist']] |
||||||
|
|
||||||
|
def get_block_dist(self): # count + forward + right + back + left + light |
||||||
|
ser = serial.Serial('/dev/ttyUSB0', 115200) |
||||||
|
line = str(ser.readline())[4:-3].split() |
||||||
|
ser.close() |
||||||
|
if line[0][3] == "r" : |
||||||
|
return [int(line[0][6:]), int(line[1][6:]), int(line[2][6:]), int(line[3][6:]), int(line[4][6:]), int(line[5][6:])] |
||||||
|
else: |
||||||
|
return [int(line[0]), int(line[1][6:]), int(line[2][6:]), int(line[3][6:]), int(line[4][6:]), int(line[5][6:])] |
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__": |
||||||
|
mod = TelloModule() |
||||||
|
|
||||||
|
print ("\n -------- Test blocking mode --------- \n") |
||||||
|
for i in range(10): |
||||||
|
line = mod.get_block_dist() |
||||||
|
print ("Test " + str(i) + |
||||||
|
" count = " + str(line[0]) + |
||||||
|
" forward = " + str(line[1]) + |
||||||
|
" right = " + str(line[2]) + |
||||||
|
" back = " + str(line[3]) + |
||||||
|
" left = " + str(line[4]) + |
||||||
|
" light = " + str(line[5])) |
||||||
|
|
||||||
|
print ("\n ------ Test NON Blocking mode ------- \n") |
||||||
|
mod.module_init('distance') |
||||||
|
for i in range(10): |
||||||
|
print ("Test " + str(i) + |
||||||
|
" count = " + str(mod.get_count()) + |
||||||
|
" forward = " + str(mod.get_forward_dist()) + |
||||||
|
" right = " + str(mod.get_right_dist()) + |
||||||
|
" back = " + str(mod.get_back_dist()) + |
||||||
|
" left = " + str(mod.get_left_dist()) + |
||||||
|
" light = " + str(mod.get_light())) |
||||||
|
time.sleep(0.5) |
||||||
|
mod.module_deinit() |
||||||
|
|
||||||
|
print ("\n ------------ Finish Test ------------ \n") |
||||||
|
|
||||||
|
|
@ -0,0 +1,10 @@ |
|||||||
|
from easytello import tello |
||||||
|
|
||||||
|
drone = tello.Tello() |
||||||
|
drone.takeoff() #Команда взлета |
||||||
|
|
||||||
|
for i in range(12): |
||||||
|
drone.forward(30) #Лететь вперед на 30 см |
||||||
|
drone.cw(90) #Повернутся на 90 градусов по часовой |
||||||
|
|
||||||
|
drone.land() |
@ -0,0 +1,28 @@ |
|||||||
|
from TelloModule import TelloModule |
||||||
|
import time |
||||||
|
|
||||||
|
mod = TelloModule() |
||||||
|
|
||||||
|
print ("\n -------- Test blocking mode --------- \n") |
||||||
|
for i in range(10): |
||||||
|
line = mod.get_block_dist() |
||||||
|
print ("Test " + str(i) + |
||||||
|
" count = " + str(line[0]) + |
||||||
|
" forward = " + str(line[1]) + |
||||||
|
" right = " + str(line[2]) + |
||||||
|
" back = " + str(line[3]) + |
||||||
|
" left = " + str(line[4]) + |
||||||
|
" light = " + str(line[5])) |
||||||
|
print ("\n ------ Test NON Blocking mode ------- \n") |
||||||
|
mod.module_init('distance') |
||||||
|
for i in range(10): |
||||||
|
print ("Test " + str(i) + |
||||||
|
" count = " + str(mod.get_count()) + |
||||||
|
" forward = " + str(mod.get_forward_dist()) + |
||||||
|
" right = " + str(mod.get_right_dist()) + |
||||||
|
" back = " + str(mod.get_back_dist()) + |
||||||
|
" left = " + str(mod.get_left_dist()) + |
||||||
|
" light = " + str(mod.get_light())) |
||||||
|
time.sleep(0.5) |
||||||
|
mod.module_deinit() |
||||||
|
print ("\n ------------ Finish Test ------------ \n") |
Loading…
Reference in new issue