def attachCamera(self, cameraExe=None, url="http://192.168.0.99/img.jpg", sleep=None): if self.replyLog is None: if cameraExe: proc = ImageProc(exe=cameraExe, verbose=0, priority=10) else: proc = DummyProc(sleep=sleep) self.camera = Camera(proc, verbose=0, url=url, sleep=sleep) name = timeName("logs/src_camera_", "log") if self.metaLog: self.metaLog.write("CAMERALOG:\t" + name + "\n") self.metaLog.flush() self.registerDataSource( 'camera', SourceLogger(self.camera.lastResultEx, name).get) else: self.camera = DummyCamera() if self.metaLog: cameraSrcLog = self.metaLogName("CAMERALOG:") else: cameraSrcLog = self.replyLog[: -18] + "src_camera_" + self.replyLog[ -17:] print "CAMERALOG:", cameraSrcLog self.registerDataSource('camera', SourceLogger(None, cameraSrcLog).get) self.cameraData = None self.addExtension(cameraDataExtension)
def analyseLaser(filename): all = [] scan = [] for i in range(541): angle = (i - 270) / 2.0 if math.fabs(angle) < 80: s = 2226.0 / math.cos(math.radians(angle)) else: s = 0 scan.append(s) all.append(scan) start = 1136 / 2 i = 0 for scan in SourceLogger(None, filename).generator(): if i >= start: all.append([s + (i - start) * 1000 for s in scan]) # all.append( [s+(i-start)*1000 for s in roughness(scan)] ) if i == start: all.append(median(scan)) # all.append( roughness(scan) ) i += 1 if i >= start + 5: break for i in range(len(all[0]) - 1, -1, -1): # revert so Excel view is left to right s = "" for a in all: s += "%d\t" % a[i] print s
def attachRemoteCamera(self, address=('localhost', 8431)): if self.replyLog is None: self.camera = RemoteCamera(address, verbose=0) self.registerDataSource( 'camera', SourceLogger(self.camera.lastResultEx, timeName("logs/src_camera_", "log")).get) else: self.camera = DummyGPS( ) # TODO some dummy device with start(), requestStop() functions cameraSrcLog = self.replyLog[:-18] + "src_camera_" + self.replyLog[ -17:] print "CAMERALOG:", cameraSrcLog self.registerDataSource('camera', SourceLogger(None, cameraSrcLog).get) self.cameraData = None self.addExtension(cameraDataExtension)
def analyseLaser0(filename): prev = None for scan in SourceLogger(None, filename).generator(): patch = scan[265:275] if prev: diff = [x - y for (x, y) in zip(prev, patch)] print diff prev = patch
def attachGPS(self): if self.replyLog is None: self.gps = GPS(verbose=0) name = timeName("logs/src_gps_", "log") if self.metaLog: self.metaLog.write("GPSLOG:\t" + name + "\n") self.metaLog.flush() self.registerDataSource('gps', SourceLogger(self.gps.coord, name).get) else: self.gps = DummyGPS() if self.metaLog: gpsSrcLog = self.metaLogName("GPSLOG:") else: gpsSrcLog = self.replyLog[:-18] + "src_gps_" + self.replyLog[ -17:] print "GPSLOG:", gpsSrcLog self.registerDataSource('gps', SourceLogger(None, gpsSrcLog).get) self.gpsData = None self.addExtension(gpsDataExtension)
def attachProcessingNode(self): if self.replyLog is None: self.node = SocketExtension() name = timeName("logs/src_node_", "log") if self.metaLog: self.metaLog.write("NODELOG:\t" + name + "\n") self.metaLog.flush() self.registerDataSource('node', SourceLogger(self.node.data, name).get) else: self.node = DummyGPS() # just start if self.metaLog: nodeSrcLog = self.metaLogName("NODELOG:") else: nodeSrcLog = self.replyLog[:-18] + "src_node_" + self.replyLog[ -17:] print "NODELOG:", nodeSrcLog self.registerDataSource('node', SourceLogger(None, nodeSrcLog).get) self.nodeData = None self.addExtension(nodeDataExtension)
def attachRasPi(self): if self.replyLog is None: self.raspi = RasPi() name = timeName("logs/src_raspi_", "log") if self.metaLog: self.metaLog.write("RASPILOG:\t" + name + "\n") self.metaLog.flush() self.registerDataSource('raspi', SourceLogger(self.raspi.getData, name).get) else: self.raspi = DummyGPS() if self.metaLog: barSrcLog = self.metaLogName("RASPILOG:") else: barSrcLog = self.replyLog[:-18] + "src_raspi_" + self.replyLog[ -17:] print "RASPILOG:", barSrcLog self.registerDataSource('raspi', SourceLogger(None, barSrcLog).get) self.raspiData = None self.addExtension(raspiDataExtension)
def attachRFID(self): if self.replyLog is None: self.rfid = RFID() name = timeName("logs/src_rfid_", "log") if self.metaLog: self.metaLog.write("RFIDLOG:\t" + name + "\n") self.metaLog.flush() self.registerDataSource('rfid', SourceLogger(self.rfid.data, name).get) else: self.rfid = DummyGPS() # just start if self.metaLog: rfidSrcLog = self.metaLogName("RFIDLOG:") else: rfidSrcLog = self.replyLog[:-18] + "src_rfid_" + self.replyLog[ -17:] print "RFIDLOG:", rfidSrcLog self.registerDataSource('rfid', SourceLogger(None, rfidSrcLog).get) self.rfidData = None self.rfidDataRaw = None self.addExtension(rfidDataExtension)
def attachBarcodeReader(self): if self.replyLog is None: self.barcode = BarcodeReader() name = timeName("logs/src_barcode_", "log") if self.metaLog: self.metaLog.write("BARCODELOG:\t" + name + "\n") self.metaLog.flush() self.registerDataSource( 'barcode', SourceLogger(self.barcode.getCode, name).get) else: self.barcode = DummyGPS() if self.metaLog: barSrcLog = self.metaLogName("BARCODELOG:") else: barSrcLog = self.replyLog[: -18] + "src_barcode_" + self.replyLog[ -17:] print "BARCODELOG:", barSrcLog self.registerDataSource('barcode', SourceLogger(None, barSrcLog).get) self.barcodeData = None self.addExtension(barcodeDataExtension)
def testMaxMatchingLine(filename): "find longest line in the scan --- brute force for PC, if it has any sense" for scan in SourceLogger(None, filename).generator(): assert (len(scan) == 541) # TODO failures or different counts arr = [ (d * math.cos(math.radians(a / 2.0)) / 1000.0, d * math.sin(math.radians(a / 2.0)) / 1000.0) for d, a in zip(scan, range(-270, 270 + 1, 1)) if d > 0 ] # ignore timeouts, so note that number of points does not have to be 541 any more break line = findBestLine(arr) for c in arr: if math.fabs(line.signedDistance(c)) < 0.05: print "%f\t%f" % c
def attachLaser(self, remission=False, usb=False, pose=None, index=None, errLog=None): if index == None: strIndex = '' else: strIndex = str(index) if self.replyLog is None: if usb: laser = LaserUSB(remission=remission, errLog=errLog) else: laser = LaserIP(remission=remission) name = timeName("logs/src_laser" + strIndex + "_", "log") if self.metaLog: self.metaLog.write("LASERLOG:\t" + name + "\n") self.metaLog.flush() self.registerDataSource('laser' + strIndex, SourceLogger(laser.scan, name).get) if remission: name = timeName("logs/src_remission" + strIndex + "_", "log") if self.metaLog: self.metaLog.write("REMISSIONLOG:\t" + name + "\n") self.metaLog.flush() self.registerDataSource( 'remission' + strIndex, SourceLogger(laser.remission, name).get) else: laser = DummyGPS() # just start if self.metaLog: laserSrcLog = self.metaLogName("LASERLOG:") else: laserSrcLog = self.replyLog[: -18] + "src_laser" + strIndex + "_" + self.replyLog[ -17:] print "LASERLOG:", laserSrcLog self.registerDataSource('laser' + strIndex, SourceLogger(None, laserSrcLog).get) if remission: if self.metaLog: remissionSrcLog = self.metaLogName("REMISSIONLOG:") else: remissionSrcLog = self.replyLog[: -18] + "src_remission" + strIndex + "_" + self.replyLog[ -17:] print "REMISSIONLOG:", remissionSrcLog self.registerDataSource( 'remission' + strIndex, SourceLogger(None, remissionSrcLog).get) if index == None: self.laser = laser self.laserData = None self.laserDataTimestamp = None self.remissionData = None self.laser.pose = pose self.addExtension(laserDataExtension) else: assert (index == 2) self.laser2 = laser self.laserData2 = None self.laserData2Timestamp = None self.remissionData2 = None self.laser2.pose = pose self.addExtension(laserDataExtension2)