def main(): tello = Tello() frontend = FrontEnd(tello) yaw = tello.get_yaw() # run frontend frontend.run(yaw)
def main(): print("ahahah") tello = Tello() tello.connect() tello.streamoff() tello.streamon() frontend = FrontEnd(tello) print("noooo") frontend.run(1, 0, tello.get_yaw()) #left,up print("found the end of the code")
def main(): print("now i am gonna start the mission") tello = Tello() tello.connect() try: tello.takeoff() except: pass tello.streamoff() tello.streamon() start = starting(tello) a, b, c = start.run(tello.get_yaw()) print("UP is {} and right is {}".format(a, b))
from djitellopy import Tello import cv2 from class_call import warehouse_overall Out_of_bounds = False # VARIABLE for detecting one end of shelf tello = Tello() tello.connect() tello.streamoff() tello.streamon() txt = warehouse_overall(tello) yaw = tello.get_yaw() # try: # tello.takeoff() # except: # pass txt.algo(yaw) tello.land() tello.streamoff() tello.end()
class starting(object): def __init__(self): self.tello = Tello() # self.joy = xbox.Joystick() self.tello.connect() self.tello.streamoff() self.tello.streamon() # print("nooooooooo") #self.left_right = left_right(self.tello) # print("yesssssssssssss") self.up_down = up_down(self.tello) # self.passing = passWin(self.tello) # self.after = after(self.tello) # print("outtttttttttttttt") self.orient = orient(self.tello) self.up = 0 self.right = 0 self.trig = 0 def run(self): # while(self.right<2): # self.trig, self.up = self.up_down.run() #up down return two values # self.up_down.clear() # if(self.trig == 1): # if(self.tello.get_h()>180): # self.up = 1 # break # else: initial_yaw = self.tello.get_yaw() while (True): # print("yooooo") print("now in up down wali class") self.trig = self.up_down.run() self.up_down.clear() # print("now yaw correction started") # self.orient.orient(initial_yaw) # # cv2.destroyAllWindows() # if(self.trig==1): # if(self.tello.get_h()>180): # self.up = 1 # return self.up,self.right # else: # print("now in left right wali class") # self.right = self.left_right.run(self.right) # self.left_right.clear() # print("adgfduasjdjjdahgvafshjskssgvhjxjnvvdh") # self.right = self.left_right.run(self.right) # self.left_right.clear() # if(self.trig == 0): # self.right = self.left_right.run(self.right) #left right returns only one value # self.left_right.clear() # if(self.trig == 1): # self.passing.run() # self.after.run(self.up,self.right) # break # self.after.run(self.up,self.right) self.tello.land() print("Ended")
from djitellopy import Tello import sys, time if len(sys.argv) > 1: tello = Tello(sys.argv[1]) else: tello = Tello() tello.connect() speed = tello.query_speed() snr = tello.query_wifi_signal_noise_ratio() sdk = tello.query_sdk_version() serial = tello.query_serial_number() print("Speed = ", speed) print("Battery = ", tello.get_battery()) print("Duration = ", tello.get_flight_time()) print("Height = ", tello.get_height()) print("Distance = ", tello.get_distance_tof()) print("Barometer = ", tello.get_barometer()) print("Attitude = ", tello.get_pitch(), tello.get_roll(), tello.get_yaw()) print("WiFi SNR = ", snr) print("SDK Version = ", sdk) print("Serial Number = ", serial) print(tello.get_current_state())
class FrontEnd(object): """ Maintains the Tello display and moves it through the keyboard keys. Press escape key to quit. The controls are: - T: Takeoff - L: Land - Arrow keys: Forward, backward, left and right. - A and D: Counter clockwise and clockwise rotations - W and S: Up and down. """ def __init__(self): # Init pygame pygame.init() # Creat pygame window pygame.display.set_caption("Tello video stream") self.screen = pygame.display.set_mode([960, 720]) # Init Tello object that interacts with the Tello drone self.tello = Tello() #initital r,p,y self.initial_roll=0.0 self.initial_pitch=0.0 self.initial_yaw=0.0 #initial accelerations self.initial_ax = 0.0 self.initial_ay = 0.0 self.initial_az = 9999.0 # Drone velocities between -100~100 self.for_back_velocity = 0 self.left_right_velocity = 0 self.up_down_velocity = 0 self.yaw_velocity = 0 self.speed = 10 self.send_rc_control = False self.ptx = 0.0 self.pty = 0.0 #self.ptz = 0.0 self.vx1 = 0.0 self.vy1 = 0.0 #self.vz1 = 0.0 self.ax = 0.0 self.ay = 0.0 #self.az = 0.0 # create update timer pygame.time.set_timer(USEREVENT + 1, 50) def get_acc(self): roll = math.radians(self.tello.get_roll()-self.initial_roll) pitch = math.radians(self.tello.get_pitch()-self.initial_pitch) yaw = -math.radians(self.tello.get_yaw()-self.initial_yaw) Tz = np.matrix([[math.cos(yaw), math.sin(yaw), 0], [-math.sin(yaw), math.cos(yaw), 0], [0, 0, 1]]) Ty = np.matrix([[math.cos(pitch), 0, math.sin(pitch)], [0, 1, 0], [-math.sin(pitch), 0, math.cos(pitch)]]) Tx = np.matrix([[1, 0, 0], [0, math.cos(roll), -math.sin(roll)], [0, math.sin(roll), math.cos(roll)]]) T_n = Tz*Ty*Tx A = np.matrix([[self.tello.get_agx()], [self.tello.get_agy()], [self.tello.get_agz()]]) A_correct = T_n*A A_correct[0] = A_correct[0]-self.initial_ax A_correct[1] = A_correct[1]-self.initial_ay A_correct[2] = A_correct[2]-self.initial_az return A_correct def run(self): if not self.tello.connect(): print("Tello not connected") return if not self.tello.set_speed(self.speed): print("Not set speed to lowest possible") return # In case streaming is on. This happens when we quit this program without the escape key. if not self.tello.streamoff(): print("Could not stop video stream") return if not self.tello.streamon(): print("Could not start video stream") return frame_read = self.tello.get_frame_read() should_stop = False while not should_stop: for event in pygame.event.get(): global px,py,pz,vx,vy,vz,i start = time.time() #v_x =self.tello.get_vgx() #v_y =self.tello.get_vgy() #v_z =self.tello.get_vgz() #ax = self.tello.get_agx() #ay = self.tello.get_agy() #az = self.tello.get_agz() A = self.get_acc() end = time.time() #start1 = time.time() self.ptx = px self.pty = py #self.ptz = pz self.vx1 = A[0]*(end-start) self.vy1 = A[1]*(end-start) #self.vz1 = self.az*(end-start) vx = vx + self.vx1 vy = vy + self.vy1 #vz = vz + self.vz1 px = self.ptx + (vx*1000)*((end-start)*1000)/1000000.0 py = self.pty + (vy*1000)*((end-start)*1000)/1000000.0 #pz = self.ptz + vz*(end-start) print("VX : "+ str(vx) + " VY : " + str(vy)) print("X : "+ str(px) + " Y : " + str(py)) print("AX : "+ str(A[0]) + " AY : " + str(A[1])+" AZ : " + str(A[2])) if event.type == USEREVENT + 1: #end1 = time.time() #print("Extra time lag : "+str(end1-start1)) self.update() elif event.type == QUIT: #end1 = time.time() #print("Extra time lag : "+str(end1-start1)) should_stop = True elif event.type == KEYDOWN: if event.key == K_ESCAPE: #end1 = time.time() #print("Extra time lag : "+str(end1-start1)) should_stop = True else: #end1 = time.time() #print("Extra time lag : "+str(end1-start1)) self.keydown(event.key) elif event.type == KEYUP: #end1 = time.time() #print("Extra time lag : "+str(end1-start1)) self.keyup(event.key) if frame_read.stopped: frame_read.stop() break self.screen.fill([0, 0, 0]) frame = cv2.cvtColor(frame_read.frame, cv2.COLOR_BGR2RGB) frame = np.rot90(frame) frame = np.flipud(frame) frame = pygame.surfarray.make_surface(frame) self.screen.blit(frame, (0, 0)) pygame.display.update() time.sleep(1 / FPS) # Call it always before finishing. I deallocate resources. self.tello.end() def keydown(self, key): """ Update velocities based on key pressed Arguments: key: pygame key """ if key == pygame.K_UP: # set forward velocity self.for_back_velocity = S elif key == pygame.K_DOWN: # set backward velocity self.for_back_velocity = -S elif key == pygame.K_LEFT: # set left velocity self.left_right_velocity = -S elif key == pygame.K_RIGHT: # set right velocity self.left_right_velocity = S elif key == pygame.K_w: # set up velocity self.up_down_velocity = S elif key == pygame.K_s: # set down velocity self.up_down_velocity = -S elif key == pygame.K_a: # set yaw clockwise velocity self.yaw_velocity = -S elif key == pygame.K_d: # set yaw counter clockwise velocity self.yaw_velocity = S def keyup(self, key): """ Update velocities based on key released Arguments: key: pygame key """ if key == pygame.K_UP or key == pygame.K_DOWN: # set zero forward/backward velocity self.for_back_velocity = 0 elif key == pygame.K_LEFT or key == pygame.K_RIGHT: # set zero left/right velocity self.left_right_velocity = 0 elif key == pygame.K_w or key == pygame.K_s: # set zero up/down velocity self.up_down_velocity = 0 elif key == pygame.K_a or key == pygame.K_d: # set zero yaw velocity self.yaw_velocity = 0 elif key == pygame.K_t: # takeoff self.tello.takeoff() self.send_rc_control = True elif key == pygame.K_l: # land self.tello.land() self.send_rc_control = False def update(self): """ Update routine. Send velocities to Tello.""" if self.send_rc_control: self.tello.send_rc_control(self.left_right_velocity, self.for_back_velocity, self.up_down_velocity, self.yaw_velocity)
tello.connect() print("Test 1 - Take off - Rotate - Land") tello.takeoff() tello.rotate_clockwise(360) tello.land() print("Test 2 - Take off - forward - back - left - right - Land") tello.takeoff() tello.move_forward(30) tello.move_back(30) tello.move_left(30) tello.move_right(30) tello.land() print("Test 3 - Take off - Ascend - Descend - Land") tello.takeoff() tello.move_up(50) tello.move_down(50) tello.land() print("Test 4 - Telemetry") tello.takeoff() tello.get_battery() tello.get_current_state() tello.get_height() tello.get_pitch() tello.get_roll() tello.get_yaw() tello.land