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)
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 )
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()