2012/Projects/OwlPlatform/TransmitterTester: test.py

File test.py, 1.9 KB (added by silasw, 5 years ago)

Sphere test

Line 
1#!/usr/bin/env python
2import time
3import nxt
4import threading
5from nxt.motor import *
6from nxt.sensor import Ultrasonic
7from nxt.sensor import PORT_1
8
9def report(f, aAngle, bAngle):
10        f.write('StartTime: '+str(time.time()-1))
11        f.write(' EndTime: '+str(time.time()))
12        f.write(' Rotator: '+str(aAngle))
13        f.write(' Turntable: '+str(bAngle)+' \n')
14        return
15
16def go(motor, power):
17        while(1):       
18                motor.run(power)
19                if(ultra.get_distance()<10):   
20                        motor.turn(45-power,360*4)
21
22f = open('dataFile.txt', 'w')
23brick = nxt.locator.find_one_brick()
24turntable = Motor(brick, PORT_A)
25rotator = Motor(brick, PORT_B)
26drive = Motor(brick, PORT_C)
27ultra = Ultrasonic(brick, PORT_1)
28
29t=threading.Thread(target=go,args=(drive, 70))
30t.start()
31aDegrees=0
32bDegrees=0
33GR = 56/24
34GR2 = 24/8
35report(f, 0, 0);
36for i in range(18):
37        rotator.turn(70, 10*GR2)
38        aDegrees+=10
39        ## Motor is inaccurate when turning by less than 50 degrees
40        ## Turn by 60, then turn back by 50 each time
41        report(f, aDegrees, bDegrees)
42        for i in range(10):
43
44                turntable.turn(70, 90*GR, True, 1, False)
45                time.sleep(1)
46                bDegrees-=90
47                print(bDegrees)
48                report(f, aDegrees, bDegrees)
49                turntable.turn(-70, 80*GR, True, 1, False)
50                time.sleep(1)
51                bDegrees+=80
52                print(bDegrees)
53                report(f, aDegrees, bDegrees)
54        time.sleep(2)
55        turntable.turn(-70, 100*GR, True, 1, False)
56        print(turntable.get_tacho())
57        bDegrees+=100
58        print(bDegrees)
59        time.sleep(2)
60        for i in range(10):
61                turntable.turn(-70, 90*GR, True, 1, False)
62                time.sleep(1)
63                bDegrees+=90
64                print(bDegrees)
65                report(f, aDegrees, bDegrees)
66                turntable.turn(70, 80*GR, True, 1, False)
67                time.sleep(1)
68                bDegrees-=80
69                print(bDegrees)
70                report(f, aDegrees, bDegrees)
71        time.sleep(2)
72        turntable.turn(70, 100*GR, True, 1, False)
73        print(turntable.get_tacho())
74        bDegrees-=100
75        print(bDegrees)
76        time.sleep(2)
77
78# Make program increment angles, then write an angle value with a timestamp in a data file.
79# Aggregate this data with the data from the test program using MATLAB