|
| 1 | +import pickle as pkl |
| 2 | +from datetime import datetime |
| 3 | +from time import sleep, strftime |
| 4 | + |
| 5 | +import pandas |
| 6 | +from tqdm import tqdm |
| 7 | + |
| 8 | +from src.hiveboard.HiveBoard import HiveBoard |
| 9 | +from src.hiveboard.proto.ethernet_stream import EthernetStream |
| 10 | +from src.hiveboard.proto.message_pb2 import STANDBY, OPERATING |
| 11 | +from src.hiveboard.usb_stream import UsbStream |
| 12 | + |
| 13 | +# To use ethernet, you must have a static IP of 192.168.1.101 on submask 255.255.255.0 |
| 14 | +from src.turning_station.TurningStation import tickToAngle, TurningStation |
| 15 | + |
| 16 | +USE_ETHERNET = False |
| 17 | + |
| 18 | +REMOTE_HB_ID = 1 |
| 19 | +NUM_DATA_POINTS_PER_ANGLE = 20 |
| 20 | + |
| 21 | +if not USE_ETHERNET: |
| 22 | + hb_stream = UsbStream('/dev/ttyACM0') |
| 23 | +else: |
| 24 | + hb_stream = EthernetStream(55551) |
| 25 | + hb_stream.wait_connection() |
| 26 | + |
| 27 | +hb = HiveBoard(hb_stream, log=True) |
| 28 | +testbench = TurningStation('/dev/ttyACM1', 115200) |
| 29 | + |
| 30 | +data = [] |
| 31 | + |
| 32 | +hb.greet() |
| 33 | +hb.set_interloc_state(STANDBY) |
| 34 | + |
| 35 | +# TODO: Add way to turn until position is 0 |
| 36 | +sleep(2) # arduino needs to reboot after uart initialisation |
| 37 | +testbench.resetPosition() |
| 38 | + |
| 39 | +stepSize = 20 |
| 40 | +for ticks in tqdm(range(0, 2060, stepSize)): |
| 41 | + hb.enable_interloc_dumps(True) |
| 42 | + hb.set_interloc_state(OPERATING) |
| 43 | + |
| 44 | + while len(hb.interloc_data.keys()) == 0 or REMOTE_HB_ID not in hb.interloc_data.keys() or len( |
| 45 | + hb.interloc_data[REMOTE_HB_ID]) < NUM_DATA_POINTS_PER_ANGLE: |
| 46 | + sleep(1) |
| 47 | + |
| 48 | + hb.enable_interloc_dumps(False) |
| 49 | + hb.set_interloc_state(STANDBY) |
| 50 | + |
| 51 | + testbench.goToTick(stepSize) |
| 52 | + |
| 53 | + for data_point in hb.interloc_data[REMOTE_HB_ID]: |
| 54 | + data_point_copy = data_point.copy() |
| 55 | + data_point_copy['ticks'] = ticks |
| 56 | + data_point_copy['angle'] = tickToAngle(ticks) |
| 57 | + |
| 58 | + data.append(data_point_copy) |
| 59 | + |
| 60 | + hb.interloc_data[REMOTE_HB_ID] = [] |
| 61 | + |
| 62 | + sleep(0.5) |
| 63 | + testbench.resetPosition() |
| 64 | + |
| 65 | +dataframe = pandas.DataFrame(data) |
| 66 | +dataframe.to_csv(f'data/validation_{datetime.now()}.{strftime("%Y%m%d_%H%M%S")}.csv') |
| 67 | + |
| 68 | +sleep(1) |
| 69 | +hb.enable_interloc_dumps(False) |
| 70 | +hb.set_interloc_state(OPERATING) |
| 71 | +hb.kill_receiver() |
0 commit comments