|
5 | 5 | import random
|
6 | 6 | import datetime
|
7 | 7 |
|
8 |
| -# Creating Fake Simulation Data To Then Pretend It's Live Telemetry Data |
9 |
| - |
10 |
| -# Note: Each characteristic does not act in relation to each other as it would |
11 |
| -# in real life, but the indvidual characteristics themselves are reflective of reality(if that makes any sense) |
12 |
| - |
13 |
| -# Cols 0-27: Acc Temp(Cel) |
14 |
| -# Cols 28-55: Acc Voltage(V) |
15 |
| -# Cols 56-57: Break Pressure Front & Rear(PSI) |
16 |
| -# Col 58: Current to Acc(A) |
17 |
| -# Cols 59-62: Hall Effect Sensors - FL,FR,RL,RR(Hz) |
18 |
| -# Col 63: Altitude(ft) |
19 |
| -# Col 64: Latitude(ft) |
20 |
| -# Col 65: Longitude(ft) |
21 |
| -# Col 66: Speed(mph) |
22 |
| -# Col 67-69: x,y, and z acceleration(m/s^2) |
23 |
| -# Col 70-72: x, y, and z gyro(deg) |
24 |
| -# Cols 73-76: Suspension Travel - FL,FR,RL,RR(V) |
25 |
| -# Cols 77-80: Suspension Force - FL,FR,RL,RR(Oh) |
26 |
| -# Col 81: Acc Air Intake Temp(C) |
27 |
| -# Col 82: Acc Air Exhaust Temp(C) |
28 |
| -# Col 83: Steering(Deg) |
29 |
| -# Col 84: Acc Air Intake Pressure(PSI) |
30 |
| -# Col 85: Acc Intake Air Flow Rate(m^3/sec) |
31 |
| - |
32 |
| -# data_columns = { |
33 |
| -# "Acc Temp 1(Cel)": pa.float32(), |
34 |
| -# "Acc Temp 2(Cel)": pa.float32(), |
35 |
| -# "Acc Temp 3(Cel)": pa.float32(), |
36 |
| -# "Acc Temp 4(Cel)": pa.float32(), |
37 |
| -# "Acc Temp 5(Cel)": pa.float32(), |
38 |
| -# "Acc Temp 6(Cel)": pa.float32(), |
39 |
| -# "Acc Temp 7(Cel)": pa.float32(), |
40 |
| -# "Acc Temp 8(Cel)": pa.float32(), |
41 |
| -# "Acc Temp 9(Cel)": pa.float32(), |
42 |
| -# "Acc Temp 10(Cel)": pa.float32(), |
43 |
| -# "Acc Temp 11(Cel)": pa.float32(), |
44 |
| -# "Acc Temp 12(Cel)": pa.float32(), |
45 |
| -# "Acc Temp 13(Cel)": pa.float32(), |
46 |
| -# "Acc Temp 14(Cel)": pa.float32(), |
47 |
| -# "Acc Temp 15(Cel)": pa.float32(), |
48 |
| -# "Acc Temp 16(Cel)": pa.float32(), |
49 |
| -# "Acc Temp 17(Cel)": pa.float32(), |
50 |
| -# "Acc Temp 18(Cel)": pa.float32(), |
51 |
| -# "Acc Temp 19(Cel)": pa.float32(), |
52 |
| -# "Acc Temp 20(Cel)": pa.float32(), |
53 |
| -# "Acc Temp 21(Cel)": pa.float32(), |
54 |
| -# "Acc Temp 22(Cel)": pa.float32(), |
55 |
| -# "Acc Temp 23(Cel)": pa.float32(), |
56 |
| -# "Acc Temp 24(Cel)": pa.float32(), |
57 |
| -# "Acc Temp 25(Cel)": pa.float32(), |
58 |
| -# "Acc Temp 26(Cel)": pa.float32(), |
59 |
| -# "Acc Temp 27(Cel)": pa.float32(), |
60 |
| -# "Acc Temp 28(Cel)": pa.float32(), |
61 |
| -# "Acc Voltage 1(V)": pa.float32(), |
62 |
| -# "Acc Voltage 2(V)": pa.float32(), |
63 |
| -# "Acc Voltage 3(V)": pa.float32(), |
64 |
| -# "Acc Voltage 4(V)": pa.float32(), |
65 |
| -# "Acc Voltage 5(V)": pa.float32(), |
66 |
| -# "Acc Voltage 6(V)": pa.float32(), |
67 |
| -# "Acc Voltage 7(V)": pa.float32(), |
68 |
| -# "Acc Voltage 8(V)": pa.float32(), |
69 |
| -# "Acc Voltage 9(V)": pa.float32(), |
70 |
| -# "Acc Voltage 10(V)": pa.float32(), |
71 |
| -# "Acc Voltage 11(V)": pa.float32(), |
72 |
| -# "Acc Voltage 12(V)": pa.float32(), |
73 |
| -# "Acc Voltage 13(V)": pa.float32(), |
74 |
| -# "Acc Voltage 14(V)": pa.float32(), |
75 |
| -# "Acc Voltage 15(V)": pa.float32(), |
76 |
| -# "Acc Voltage 16(V)": pa.float32(), |
77 |
| -# "Acc Voltage 17(V)": pa.float32(), |
78 |
| -# "Acc Voltage 18(V)": pa.float32(), |
79 |
| -# "Acc Voltage 19(V)": pa.float32(), |
80 |
| -# "Acc Voltage 20(V)": pa.float32(), |
81 |
| -# "Acc Voltage 21(V)": pa.float32(), |
82 |
| -# "Acc Voltage 22(V)": pa.float32(), |
83 |
| -# "Acc Voltage 23(V)": pa.float32(), |
84 |
| -# "Acc Voltage 24(V)": pa.float32(), |
85 |
| -# "Acc Voltage 25(V)": pa.float32(), |
86 |
| -# "Acc Voltage 26(V)": pa.float32(), |
87 |
| -# "Acc Voltage 27(V)": pa.float32(), |
88 |
| -# "Acc Voltage 28(V)": pa.float32(), |
89 |
| -# "Brake Pressure Front(PSI)": pa.float32(), |
90 |
| -# "Brake Pressure Rear(PSI)": pa.float32(), |
91 |
| -# "Current to Acc(A)": pa.float32(), |
92 |
| -# "Hall Effect Sensor - FL(Hz)": pa.float32(), |
93 |
| -# "Hall Effect Sensor - FR(Hz)": pa.float32(), |
94 |
| -# "Hall Effect Sensor - RL(Hz)": pa.float32(), |
95 |
| -# "Hall Effect Sensor - RR(Hz)": pa.float32(), |
96 |
| -# "Altitude(ft)": pa.float32(), |
97 |
| -# "Latitude(ft)": pa.float32(), |
98 |
| -# "Longitude(ft)": pa.float32(), |
99 |
| -# "Speed(mph)": pa.float32(), |
100 |
| -# "x acceleration(m/s^2)": pa.float32(), |
101 |
| -# "y acceleration(m/s^2)": pa.float32(), |
102 |
| -# "z acceleration(m/s^2)": pa.float32(), |
103 |
| -# "x gyro(deg)": pa.float32(), |
104 |
| -# "y gyro(deg)": pa.float32(), |
105 |
| -# "z gyro(deg)": pa.float32(), |
106 |
| -# "Suspension Travel - FL(V)": pa.float32(), |
107 |
| -# "Suspension Travel - FR(V)": pa.float32(), |
108 |
| -# "Suspension Travel - RL(V)": pa.float32(), |
109 |
| -# "Suspension Travel - RR(V)": pa.float32(), |
110 |
| -# "Suspension Force - FL(Oh)": pa.float32(), |
111 |
| -# "Suspension Force - FR(Oh)": pa.float32(), |
112 |
| -# "Suspension Force - RL(Oh)": pa.float32(), |
113 |
| -# "Suspension Force - RR(Oh)": pa.float32(), |
114 |
| -# "Acc Air Intake Temp(C)": pa.float32(), |
115 |
| -# "Acc Air Exhaust Temp(C)": pa.float32(), |
116 |
| -# "Steering(Deg)": pa.float32(), |
117 |
| -# "Acc Air Intake Pressure(PSI)": pa.float32(), |
118 |
| -# "Acc Intake Air Flow Rate(m^3/sec)": pa.float32(), |
119 |
| -# } |
| 8 | +# List of some data to consider: |
| 9 | +# Acc Temp(Cel) |
| 10 | +# Acc Voltage(V) |
| 11 | +# Break Pressure Front & Rear(PSI) |
| 12 | +# Current to Acc(A) |
| 13 | +# Hall Effect Sensors - FL,FR,RL,RR(Hz) |
| 14 | +# Altitude(ft) |
| 15 | +# Latitude(ft) |
| 16 | +# Longitude(ft) |
| 17 | +# Speed(mph) |
| 18 | +# x,y, and z acceleration(m/s^2) |
| 19 | +# x, y, and z gyro(deg) |
| 20 | +# Suspension Travel - FL,FR,RL,RR(V) |
| 21 | +# Suspension Force - FL,FR,RL,RR(Oh) |
| 22 | +# Acc Air Intake Temp(C) |
| 23 | +# Acc Air Exhaust Temp(C) |
| 24 | +# Steering(Deg) |
| 25 | +# Acc Air Intake Pressure(PSI) |
| 26 | +# Acc Intake Air Flow Rate(m^3/sec) |
| 27 | + |
| 28 | +# Real data schema: |
120 | 29 | data_columns = {
|
121 | 30 | ":Lap": pa.float32(), # 91
|
122 | 31 | ":LapTime": pa.float32(), # 91
|
|
305 | 214 |
|
306 | 215 |
|
307 | 216 | def createdf():
|
308 |
| - simLength: float = 5.0 # how many seconds to run the simulation for |
309 |
| - simStepsPerSec: int = 100 # how many simulation steps per second |
310 |
| - # rowcount = int(simLength * simStepsPerSec) |
311 |
| - rowcount = 1 |
312 |
| - |
313 |
| - column_names = list(data_columns.keys()) |
314 |
| - total_cols = len(column_names) |
315 |
| - # table = [rowcount][total_cols] |
316 |
| - |
317 |
| - # Initialize the data array |
318 |
| - data = np.zeros((rowcount, total_cols)) |
319 |
| - |
320 |
| - # Generate Acc Temp Data |
321 |
| - for col in range(0, 28): |
322 |
| - # horiz_shift = random.uniform(-0.5, 0.5) |
323 |
| - # time = np.arange(rowcount) / simStepsPerSec |
324 |
| - # data[:, col] = 1 + np.sin(time - horiz_shift) * 0.5 |
325 |
| - t = (datetime.datetime.now() - t0).total_seconds() |
326 |
| - data[:, col] = math.sin(t) |
327 |
| - |
328 |
| - # Generate Acc Voltage Data |
329 |
| - for col in range(28, 56): |
330 |
| - horiz_shift = random.uniform(-0.3, 0.3) |
331 |
| - time = np.arange(rowcount) / simStepsPerSec |
332 |
| - data[:, col] = 1 + np.sin(time - horiz_shift) * 0.5 |
333 |
| - |
334 |
| - # Brake Pressure |
335 |
| - data[: int(300), 56:58] = 0 # First 3 seconds are zero |
336 |
| - data[300:, 56] = ( |
337 |
| - np.arange(300, rowcount) / simStepsPerSec |
338 |
| - ) * 0.5 - 3 # Arbitrary equation for brake pressure |
339 |
| - |
340 |
| - # Current to Acc |
341 |
| - total_voltage = 6000 # Arbitrary voltage |
342 |
| - resistance = 50 # Arbitrary resistance |
343 |
| - capacitance = 300 # Arbitrary capacitance |
344 |
| - data[:, 58] = ( |
345 |
| - total_voltage |
346 |
| - / resistance |
347 |
| - * np.exp(-np.arange(rowcount) / (resistance * capacitance)) |
348 |
| - ) |
349 |
| - |
350 |
| - # RPM Wheel Data |
351 |
| - for col in range(59, 63): |
352 |
| - time = np.arange(rowcount) / simStepsPerSec |
353 |
| - data[:, col] = np.where( |
354 |
| - time < 4, 1000 * time, 4000 |
355 |
| - ) # Linear eq up to 4 seconds, then peak |
356 |
| - |
357 |
| - # Altitude and Latitude: Assuming constant at 0 |
358 |
| - data[:, 63] = 0 # Altitude |
359 |
| - data[:, 64] = 0 # Latitude |
360 |
| - |
361 |
| - # Longitude: Arbitrary quadratic function |
362 |
| - data[:, 65] = 10.73 * (np.arange(rowcount) / simStepsPerSec) ** 2 |
363 |
| - |
364 |
| - # Speed: Same arbitrary acceleration |
365 |
| - data[:, 66] = 10.73 * (np.arange(rowcount) / simStepsPerSec) |
366 |
| - |
367 |
| - # Assuming gyro is 0 |
368 |
| - data[:, 70:73] = 0 |
369 |
| - |
370 |
| - # I do not have enough physics knowledge to do these |
371 |
| - data[:, 73:] = 0 |
372 |
| - |
373 |
| - data[:, 2] = (datetime.datetime.now() - t0).total_seconds() |
| 217 | + # Default item |
| 218 | + series_list = [pl.Series(k, [math.sin((datetime.datetime.now() - t0).total_seconds() + i/10)], pl.Float32) for i, k in enumerate(data_columns)] |
| 219 | + # :Time |
| 220 | + series_list[2] = pl.Series(":Time", [(datetime.datetime.now() - t0).total_seconds()], pl.Float32) |
| 221 | + df = pl.DataFrame(series_list) |
374 | 222 |
|
375 |
| - # df = pl.DataFrame(data, schema=column_names).cast(pl.Float32) |
376 |
| - # timestamps = pl.Series( |
377 |
| - # "Timestamp(s)", [(datetime.datetime.now() - t0).total_seconds()] |
378 |
| - # ).cast(pl.Float32) |
379 |
| - # return df.with_columns(timestamps) |
380 |
| - return pl.DataFrame(data, schema=column_names).cast(pl.Float32) |
| 223 | + return df |
381 | 224 |
|
382 | 225 | # def get_schema():
|
383 | 226 | # # for now, we use nullable: True. In the future, the backend should
|
|
0 commit comments