Exemplo n.º 1
0
    def gesture_ctrl(self, scf, fc, g):
        mc = MotionCommander(scf)
        mc._reset_position_estimator()

        print ('Enter to start (c to cancel)')
        char = raw_input()

        if char == 'c':
            print('\nClosing link...')
            scf.close_link()

            print('Shutting down...')
            os.kill(os.getpid(), signal.SIGINT)

        try:

            while True:

                g_id = gesture.get_gesture()

                if gesture is not None:
                    fc.perform_gesture(g_id, mc)

        except Exception, e:
            print (str(e))
            scf.close_link()
Exemplo n.º 2
0
    def gesture_ctrl(self, scf, fc, g):
        global gesture
        mc = MotionCommander(scf)
        mc._reset_position_estimator()

        self.resetYawInit()

        try:

            while True:

                g_id = gesture.get_gesture()

                if g_id is not None:
                    #print("Gesture detected: ")
                    #print(g_id)
                    fc.perform_gesture(scf, g_id, mc)

        except Exception, e:
            print(str(e))
            scf.close_link()
Exemplo n.º 3
0
    def key_ctrl(self, scf):
        mc = MotionCommander(scf)
        mc._reset_position_estimator()

        print 'Spacebar to start'
        raw_input()
        pygame.display.set_mode((400, 300))

        print 'WASD for throttle & yaw; arrow keys for left/right/forward/backward'
        print 'Spacebar to land'

        vel_x = 0
        vel_y = 0
        vel_z = 0
        yaw_rate = 0

        try:
            mc.take_off()

            #set inital Yaw value
            with open('SensorMaster.txt', 'r') as stbFile:
                stbLines = stbFile.readlines()

            while len(stbLines) == 0:
                with open('SensorMaster.txt', 'r') as stbFile:
                    stbLines = stbFile.readlines()

            currAttitude = stbLines[len(stbLines) - 1]
            need, to, currentYaw, test = currAttitude.split(',')
            self.yawCurr = float(currentYaw)

            Thread(target=self._updateYaw, args=(scf, )).start()

            while True:

                for event in pygame.event.get():

                    if event.type == pygame.KEYDOWN:

                        if event.key == pygame.K_w:
                            vel_z = 0.3

                        if event.key == pygame.K_SPACE:
                            print 'Space pressed, landing'

                            mc.land()
                            time.sleep(2)
                            print 'Closing link...'
                            scf.close_link()
                            print 'Link closed'
                            pygame.quit()
                            sys.exit(0)

                        if event.key == pygame.K_a:
                            yaw_rate = -45

                        if event.key == pygame.K_s:
                            vel_z = -0.3

                        if event.key == pygame.K_d:
                            yaw_rate = 45

                        if event.key == pygame.K_UP:
                            #vel_x = 0.3
                            vel_x = 0.2 * self.fwCoef[0]
                            vel_y = 0.2 * self.fwCoef[1]
                            print('vel_x = %.2f, vel_y = %.2f' %
                                  (vel_x * self.fwCoef[0],
                                   vel_y * self.fwCoef[1]))
                            print("the current yaw is:")
                            print(self.yawCurr)

                        if event.key == pygame.K_DOWN:
                            #vel_x = -0.3
                            vel_x = 0.2 * self.bkCoef[0]
                            vel_y = 0.2 * self.bkCoef[1]
                            print('vel_x = %.2f, vel_y = %.2f' %
                                  (vel_x * self.bkCoef[0],
                                   vel_y * self.bkCoef[1]))
                            print("the current yaw is:")
                            print(self.yawCurr)

                        if event.key == pygame.K_LEFT:
                            #vel_y = 0.3
                            vel_x = 0.2 * self.lfCoef[0]
                            vel_y = 0.2 * self.lfCoef[1]
                            print('vel_x = %.2f, vel_y = %.2f' %
                                  (vel_x * self.bkCoef[0],
                                   vel_y * self.bkCoef[1]))
                            print("the current yaw is:")
                            print(self.yawCurr)

                        if event.key == pygame.K_RIGHT:
                            #vel_y = -0.3
                            vel_x = 0.2 * self.rtCoef[0]
                            vel_y = 0.2 * self.rtCoef[1]
                            print('vel_x = %.2f, vel_y = %.2f' %
                                  (vel_x * self.bkCoef[0],
                                   vel_y * self.bkCoef[1]))
                            print("the current yaw is:")
                            print(self.yawCurr)

                        if event.key == pygame.K_r:
                            #set recalibrate initial Yaw value
                            with open('SensorMaster.txt', 'r') as stbFile:
                                stbLines = stbFile.readlines()

                            while len(stbLines) == 0:
                                with open('SensorMaster.txt', 'r') as stbFile:
                                    stbLines = stbFile.readlines()

                            print("yaw angle recalibrated :")
                            newInitAttitude = stbLines[len(stbLines) - 1]

                            need, to, initYaw, test = newInitAttitude.split(
                                ',')
                            print(initYaw)
                            self.yawInit = float(initYaw)

                        if event.key == pygame.K_RCTRL:
                            mc.stop()

                    if event.type == pygame.KEYUP:

                        if event.key == pygame.K_w or event.key == pygame.K_s:
                            vel_z = 0

                        if event.key == pygame.K_a or event.key == pygame.K_d:
                            yaw_rate = 0

                        if event.key == pygame.K_UP or event.key == pygame.K_DOWN:
                            vel_x = 0

                        if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
                            vel_y = 0

                    mc._set_vel_setpoint(vel_x, vel_y, vel_z, yaw_rate)

        except KeyboardInterrupt:
            print('\nShutting down...')
            scf.close_link()

        except Exception, e:
            print str(e)
            scf.close_link()