Ejemplo n.º 1
0
def getData():
    #connect with IMU
    imu = lib.lsm9ds1_create()
    lib.lsm9ds1_begin(imu)
    if lib.lsm9ds1_begin(imu) == 0:
        print("Failed to communicate with LSM9DS1.")
        quit()
    lib.lsm9ds1_calibrate(imu)
    while True:
        #get IMU accel data
        global lasttime

        #new structure testing
        if lib.lsm9ds1_accelAvailable(imu) > 0 and ser.in_waiting > 8:
            lib.lsm9ds1_readAccel(imu)
            ax = lib.lsm9ds1_getAccelX(imu)
            ay = lib.lsm9ds1_getAccelY(imu)
            cax = lib.lsm9ds1_calcAccel(imu, ax)
            cay = lib.lsm9ds1_calcAccel(imu, ay)
            #TFmini data
            recv = ser.read(9)
            ser.reset_input_buffer()

            if recv[0] == 0x59 and recv[1] == 0x59:
                distance = recv[2] + recv[3] * 256
                ser.reset_input_buffer()
                currentTime = str(datetime.datetime.now())
                #timestamp data
                row = [
                    currentTime, distance, cax, cay
                ]  #the row being written to csv file, just x and y accel
                diff = time.time() - lasttime
                print(diff)
                lasttime = time.time()
                print(row)
Ejemplo n.º 2
0
def getData():
    global lasttime
    #connect with IMU
    imu = lib.lsm9ds1_create()
    lib.lsm9ds1_begin(imu)
    if lib.lsm9ds1_begin(imu) == 0:
        print("Failed to communicate with LSM9DS1.")
        quit()
    lib.lsm9ds1_calibrate(imu)

    current = time.time()
    while current - startTime < 10:
        
        current = time.time()
        if lib.lsm9ds1_accelAvailable(imu) > 0 and ser.in_waiting > 8:
            lib.lsm9ds1_readAccel(imu)
            ax = lib.lsm9ds1_getAccelX(imu)
            ay = lib.lsm9ds1_getAccelY(imu)
            az = lib.lsm9ds1_getAccelZ(imu)
            cax = lib.lsm9ds1_calcAccel(imu, ax)
            cay = lib.lsm9ds1_calcAccel(imu, ay)
            caz = lib.lsm9ds1_calcAccel(imu, az)
            gx = lib.lsm9ds1_getGyroX(imu)
            gy = lib.lsm9ds1_getGyroY(imu)
            gz = lib.lsm9ds1_getGyroZ(imu)
            cgx = lib.lsm9ds1_calcGyro(imu, gx)
            cgy = lib.lsm9ds1_calcGyro(imu, gy)
            cgz = lib.lsm9ds1_calcGyro(imu, gz)
            #TFmini data
            recv = ser.read(9)
            ser.reset_input_buffer()

            if recv[0] == 0x59 and recv[1] == 0x59:
                distance = recv[2] + recv[3] * 256
                ser.reset_input_buffer()
                currentTime = str(datetime.datetime.now()); #timestamp data
                row = [currentTime,distance,cax,cay,caz,cgx,cgy,cgz] #the row being written to csv file, just x and y accel
                rowList.append(row)
                diff = time.time() - lasttime
                timeDiffer.append(diff)
                #print(diff)
                lasttime = time.time()
                #print(row)

    print("start writing data")
    with open(datafile,"a",newline = '') as csvfile:
        spamwriter = csv.writer(csvfile, delimiter=',', quoting=csv.QUOTE_MINIMAL)
        for i in range(len(rowList)):
            row = [rowList[i]]
            spamwriter.writerow(row)
            
    print("start writing frequency")
    with open(filename,"a",newline = '') as csvfile:
        spamwriter = csv.writer(csvfile, delimiter=',', quoting=csv.QUOTE_MINIMAL)
        for i in range(len(timeDiffer)):
            row = [timeDiffer[i]]
            spamwriter.writerow(row)
Ejemplo n.º 3
0
 def __init__(self, name="I"):
     """
     Constructor of IMU object:
     Usage: IMU(self, name = "I")
     It initializes an IMU object using lsm9ds1 library
     """
     self.name = name
     self.type = "IMU"
     self.__conn = lib.lsm9ds1_create()
     if lib.lsm9ds1_begin(self.__conn)==0:
         self.__conn = None
         print("Connection failed")
         quit()
Ejemplo n.º 4
0
def getData():
    global lasttime
    #connect with IMU
    imu = lib.lsm9ds1_create()
    lib.lsm9ds1_begin(imu)
    if lib.lsm9ds1_begin(imu) == 0:
        print("Failed to communicate with LSM9DS1.")
        quit()
    lib.lsm9ds1_calibrate(imu)

    while True:
        #beforeIf = time.time()
        time.sleep(0.2)
        if lib.lsm9ds1_accelAvailable(imu) > 0:
            afterIf = time.time()
            lib.lsm9ds1_readAccel(imu)
            ax = lib.lsm9ds1_getAccelX(imu)
            ay = lib.lsm9ds1_getAccelY(imu)
            az = lib.lsm9ds1_getAccelZ(imu)
            cax = lib.lsm9ds1_calcAccel(imu, ax)
            cay = lib.lsm9ds1_calcAccel(imu, ay)
            caz = lib.lsm9ds1_calcAccel(imu, az)
            gx = lib.lsm9ds1_getGyroX(imu)
            gy = lib.lsm9ds1_getGyroY(imu)
            gz = lib.lsm9ds1_getGyroZ(imu)
            cgx = lib.lsm9ds1_calcGyro(imu, gx)
            cgy = lib.lsm9ds1_calcGyro(imu, gy)
            cgz = lib.lsm9ds1_calcGyro(imu, gz)

            ##            #add to list
            ##            caxl.append(cax)
            ##            cayl.append(cay)
            ##            cazl.append(caz)
            ##            cgxl.append(cgx)
            ##            cgyl.append(cgy)
            ##            cgzl.append(cgz)
            print(cax, cay, caz, cgx, cgy, cgz)
Ejemplo n.º 5
0
#rapidly capturing photos, number is frames
def capture():
    startC = time.time()
    print("pid for camera %i" % os.getpid())
    while time.time() - startC < 10:
        with picamera.PiCamera(resolution=(480, 480), framerate=40) as camera:
            camera.start_preview()
            # Give the camera some warm-up time
            time.sleep(3)
            camera.capture_sequence(filenames(), use_video_port=True)
    return 1


#IMU setup
imu = lib.lsm9ds1_create()
lib.lsm9ds1_begin(imu)

#main, which parallelizes sensors and camera reading
if __name__ == '__main__':
    if lib.lsm9ds1_begin(imu) == 0:
        print("Failed to communicate with LSM9DS1.")
        quit()
    lib.lsm9ds1_calibrate(imu)
    if ser.is_open == False:
        ser.open()

    start = time.time()
    lasttime = time.time()
    pool = Pool()
    sensors = pool.apply_async(getData)