Exemple #1
0
 def __init__(self,
              replayLog=None,
              speed=0.2,
              skipConfigure=False,
              metaLog=None,
              console=None):
     self.loggedVideoResult = None
     self.lastImageResult = None
     self.videoHighResolution = False
     ARDrone2.__init__(self, replayLog, speed, skipConfigure, metaLog,
                       console)
     if replayLog == None:
         name = timeName("logs/src_cv2_", "log")
         metaLog.write("cv2: " + name + '\n')
         self.loggedVideoResult = SourceLogger(getOrNone, name).get
         self.startVideo(wrapper,
                         g_queueResults,
                         record=True,
                         highResolution=self.videoHighResolution)
     else:
         assert metaLog
         self.loggedVideoResult = SourceLogger(None,
                                               metaLog.getLog("cv2:")).get
         self.startVideo(record=True,
                         highResolution=self.videoHighResolution)
Exemple #2
0
 def createLoggedInput( self, prefix, function ):
     if self.replay:
         return SourceLogger( None, self.getLog( prefix ) )
     else:
         filename = "logs/" + prefix + datetime.datetime.now().strftime("_%y%m%d_%H%M%S.txt") # bin? txt? log??
         self.f.write( prefix + ": " + filename + "\n")
         self.f.flush()
         return SourceLogger( function, filename )
Exemple #3
0
def h264drone(replayLog, metaLog, desiredSpeed=1.0, timeout=5.0):
    drone = ARDrone2(replayLog, metaLog=metaLog)
    if replayLog:
        for line in metaLog:  # TODO refactoring
            print "XXLINE", line.strip()
            if line.startswith("h264:"):
                loggedResult = SourceLogger(None, line.split()[1].strip()).get
                break
        drone.startVideo(record=False)
    else:
        name = timeName("logs/src_h264_", "log")
        metaLog.write("h264: " + name + '\n')
        loggedResult = SourceLogger(getOrNone, name).get
        drone.startVideo(wrapper, queueResults, record=False)

    if drone.userEmergencyLanding:
        drone.reset()
    try:
        drone.wait(1.0)
        drone.takeoff(enabledCorrections=False)
        # TODO some flying
        startTime = drone.time
        vz = 0.0
        while drone.time - startTime < timeout:
            #      print "SPEED", drone.vx
            if drone.vx > desiredSpeed:
                drone.moveXYZA(0.0, 0.0, vz, 0.0)
            else:
                drone.moveXYZA(drone.speed, 0.0, vz, 0.0)
            tmp = loggedResult()
            if tmp != None:
                print "QUEUE", drone.time, tmp
                frameNum, timestamp, (left, right, up, down) = tmp
                vz = 0.0
                if left + right < MAX_COUNT:  # limited max number of movements in the whole image
                    if down > up + MIN_STEP:
                        # move up
                        vz = drone.speed
                    if up > down + MIN_STEP:
                        # move down
                        vz = -drone.speed

        drone.land()
        drone.wait(1.0)
    except ManualControlException, e:
        print "ManualControlException"
        manualControl(drone)
        if drone.ctrlState == 3:  # CTRL_FLYING=3 ... i.e. stop the current motion
            drone.hover(0.1)
        drone.land()