示例#1
0
def main():
    tello = Tello()
    frontend = FrontEnd(tello)

    yaw = tello.get_yaw()
    # run frontend
    frontend.run(yaw)
示例#2
0
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")
示例#3
0
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))
示例#4
0
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()
示例#5
0
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")
示例#6
0
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())
示例#7
0
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)
示例#8
0
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