Saving the calibration

Having calibrated the sensor once in its current position, it would be inconvenient to have to calibrate it each and every time that you ran the robot. Therefore, you can add the following code to your library to automatically save your calibration and read it from a file the next time you run your robot. To create a new calibration, either delete or rename mag.cal (which is created in the same folder as your script), or create your compass object compass(newCal=True).

Add the following code near the top of the file (after the imports statements):

FILENAME="mag.cal" 

Change __init__(self) to __init__(self,newCal=False).

Also, consider the following line:

self.offset,self.scaling=self.calibrateCompass() 

Change the previous line to the following line:

self.offset,self.scaling=self.readCal(newCal) 

Add readCal() to the compass class, as follows:

  def readCal(self,newCal=False,filename=FILENAME): 
    if newCal==False: 
      try: 
        with open(FILENAME,'r') as magCalFile: 
          line=magCalFile.readline() 
          offset=line.split() 
          line=magCalFile.readline() 
          scaling=line.split() 
          if len(offset)==0 or len(scaling)==0: 
            raise ValueError() 
          else: 
            offset=list(map(float, offset)) 
            scaling=list(map(float, scaling)) 
      except (OSError,IOError,TypeError,ValueError) as e: 
        print("No Cal Data") 
        newCal=True 
        pass 
    if newCal==True: 
      print("Perform New Calibration") 
      offset,scaling=self.calibrateCompass() 
      self.writeCal(offset,scaling) 
    return offset,scaling 

Add writeCal() to the compass class, as follows:

  def writeCal(self,offset,scaling): 
      if DEBUG:print("Write Calibration") 
      if DEBUG:print("offset:"+str(offset)) 
      if DEBUG:print("scaling:"+str(scaling)) 
      with open(FILENAME,'w') as magCalFile: 
        for value in offset: 
          magCalFile.write(str(value)+" ") 
        magCalFile.write("n") 
        for value in scaling: 
          magCalFile.write(str(value)+" ") 
        magCalFile.write("n") 
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.191.144.65