Add alignment state indicator and pluggable data sources

- AlignmentThresholds dataclass + VisionEngine.__init__ for injection
- alignment_state computed per snapshot (ready/aligning/fault)
- MonitorPlot circle/vector/legend driven by state color
- Status dot + label moved into POSITION VISUALIZATION panel header
- CsvSessionSource + DemoSource pluggable DataSource layer
- Synthetic DATA/ready/ and DATA/aligning/ sessions for visual testing
- Fix CAM 3 label placement (below circle, not above)
This commit is contained in:
Your Name
2026-05-26 14:01:47 -07:00
parent b9adc7c0b8
commit 02327a7a21
60 changed files with 29018 additions and 71 deletions
+53
View File
@@ -0,0 +1,53 @@
# saved_on,SYNTHETIC
# master_file,R10002P0.CSV
# remote_begin,BEGIN_REMOTE_CSV SOURCE=BOARD_REMOTE SPI=1 POINTS=49 MODE=SYNTHETIC STATUS=OK
x,y
261.89,252.63
259.05,255.38
256.12,258.04
253.10,260.60
250.00,263.06
246.82,265.41
243.57,267.67
240.25,269.81
236.85,271.84
233.39,273.77
229.88,275.57
226.30,277.27
222.67,278.84
218.99,280.29
215.27,281.63
211.50,282.84
207.69,283.92
203.86,284.88
199.99,285.72
196.10,286.43
192.18,287.01
188.25,287.46
184.31,287.78
180.36,287.98
176.40,288.04
172.45,287.98
168.50,287.78
164.55,287.46
160.62,287.01
156.71,286.43
152.82,285.72
148.95,284.88
145.11,283.92
141.31,282.84
137.54,281.63
133.82,280.29
130.14,278.84
126.51,277.27
122.93,275.57
119.41,273.77
115.95,271.84
112.56,269.81
109.23,267.67
105.98,265.41
102.80,263.06
99.70,260.60
96.69,258.04
93.76,255.38
90.91,252.63
1 # saved_on SYNTHETIC
2 # master_file R10002P0.CSV
3 # remote_begin BEGIN_REMOTE_CSV SOURCE=BOARD_REMOTE SPI=1 POINTS=49 MODE=SYNTHETIC STATUS=OK
4 x y
5 261.89 252.63
6 259.05 255.38
7 256.12 258.04
8 253.10 260.60
9 250.00 263.06
10 246.82 265.41
11 243.57 267.67
12 240.25 269.81
13 236.85 271.84
14 233.39 273.77
15 229.88 275.57
16 226.30 277.27
17 222.67 278.84
18 218.99 280.29
19 215.27 281.63
20 211.50 282.84
21 207.69 283.92
22 203.86 284.88
23 199.99 285.72
24 196.10 286.43
25 192.18 287.01
26 188.25 287.46
27 184.31 287.78
28 180.36 287.98
29 176.40 288.04
30 172.45 287.98
31 168.50 287.78
32 164.55 287.46
33 160.62 287.01
34 156.71 286.43
35 152.82 285.72
36 148.95 284.88
37 145.11 283.92
38 141.31 282.84
39 137.54 281.63
40 133.82 280.29
41 130.14 278.84
42 126.51 277.27
43 122.93 275.57
44 119.41 273.77
45 115.95 271.84
46 112.56 269.81
47 109.23 267.67
48 105.98 265.41
49 102.80 263.06
50 99.70 260.60
51 96.69 258.04
52 93.76 255.38
53 90.91 252.63
+53
View File
@@ -0,0 +1,53 @@
# saved_on,SYNTHETIC
# master_file,R20002P0.CSV
# remote_begin,BEGIN_REMOTE_CSV SOURCE=BOARD_REMOTE SPI=2 POINTS=49 MODE=SYNTHETIC STATUS=OK
x,y
90.91,252.63
88.16,249.79
85.51,246.86
82.95,243.84
80.49,240.74
78.13,237.56
75.88,234.31
73.73,230.99
71.70,227.59
69.78,224.13
67.97,220.61
66.28,217.04
64.71,213.41
63.25,209.73
61.92,206.00
60.71,202.24
59.62,198.43
58.66,194.60
57.83,190.73
57.12,186.84
56.54,182.92
56.09,178.99
55.76,175.05
55.57,171.10
55.50,167.14
55.57,163.19
55.76,159.23
56.09,155.29
56.54,151.36
57.12,147.45
57.83,143.56
58.66,139.69
59.62,135.85
60.71,132.05
61.92,128.28
63.25,124.55
64.71,120.88
66.28,117.25
67.97,113.67
69.78,110.15
71.70,106.69
73.73,103.30
75.88,99.97
78.13,96.72
80.49,93.54
82.95,90.44
85.51,87.43
88.16,84.50
90.91,81.65
1 # saved_on SYNTHETIC
2 # master_file R20002P0.CSV
3 # remote_begin BEGIN_REMOTE_CSV SOURCE=BOARD_REMOTE SPI=2 POINTS=49 MODE=SYNTHETIC STATUS=OK
4 x y
5 90.91 252.63
6 88.16 249.79
7 85.51 246.86
8 82.95 243.84
9 80.49 240.74
10 78.13 237.56
11 75.88 234.31
12 73.73 230.99
13 71.70 227.59
14 69.78 224.13
15 67.97 220.61
16 66.28 217.04
17 64.71 213.41
18 63.25 209.73
19 61.92 206.00
20 60.71 202.24
21 59.62 198.43
22 58.66 194.60
23 57.83 190.73
24 57.12 186.84
25 56.54 182.92
26 56.09 178.99
27 55.76 175.05
28 55.57 171.10
29 55.50 167.14
30 55.57 163.19
31 55.76 159.23
32 56.09 155.29
33 56.54 151.36
34 57.12 147.45
35 57.83 143.56
36 58.66 139.69
37 59.62 135.85
38 60.71 132.05
39 61.92 128.28
40 63.25 124.55
41 64.71 120.88
42 66.28 117.25
43 67.97 113.67
44 69.78 110.15
45 71.70 106.69
46 73.73 103.30
47 75.88 99.97
48 78.13 96.72
49 80.49 93.54
50 82.95 90.44
51 85.51 87.43
52 88.16 84.50
53 90.91 81.65
+53
View File
@@ -0,0 +1,53 @@
# saved_on,SYNTHETIC
# master_file,S10002P0.CSV
# remote_begin,BEGIN_REMOTE_CSV SOURCE=LOCAL SPI=1 POINTS=49 MODE=SYNTHETIC STATUS=OK
x,y
90.91,81.65
93.76,78.90
96.69,76.24
99.70,73.68
102.80,71.23
105.98,68.87
109.23,66.62
112.56,64.47
115.95,62.44
119.41,60.52
122.93,58.71
126.51,57.02
130.14,55.44
133.82,53.99
137.54,52.66
141.31,51.45
145.11,50.36
148.95,49.40
152.82,48.56
156.71,47.86
160.62,47.28
164.55,46.82
168.50,46.50
172.45,46.31
176.40,46.24
180.36,46.31
184.31,46.50
188.25,46.82
192.18,47.28
196.10,47.86
199.99,48.56
203.86,49.40
207.69,50.36
211.50,51.45
215.27,52.66
218.99,53.99
222.67,55.44
226.30,57.02
229.88,58.71
233.39,60.52
236.85,62.44
240.25,64.47
243.57,66.62
246.82,68.87
250.00,71.23
253.10,73.68
256.12,76.24
259.05,78.90
261.89,81.65
1 # saved_on SYNTHETIC
2 # master_file S10002P0.CSV
3 # remote_begin BEGIN_REMOTE_CSV SOURCE=LOCAL SPI=1 POINTS=49 MODE=SYNTHETIC STATUS=OK
4 x y
5 90.91 81.65
6 93.76 78.90
7 96.69 76.24
8 99.70 73.68
9 102.80 71.23
10 105.98 68.87
11 109.23 66.62
12 112.56 64.47
13 115.95 62.44
14 119.41 60.52
15 122.93 58.71
16 126.51 57.02
17 130.14 55.44
18 133.82 53.99
19 137.54 52.66
20 141.31 51.45
21 145.11 50.36
22 148.95 49.40
23 152.82 48.56
24 156.71 47.86
25 160.62 47.28
26 164.55 46.82
27 168.50 46.50
28 172.45 46.31
29 176.40 46.24
30 180.36 46.31
31 184.31 46.50
32 188.25 46.82
33 192.18 47.28
34 196.10 47.86
35 199.99 48.56
36 203.86 49.40
37 207.69 50.36
38 211.50 51.45
39 215.27 52.66
40 218.99 53.99
41 222.67 55.44
42 226.30 57.02
43 229.88 58.71
44 233.39 60.52
45 236.85 62.44
46 240.25 64.47
47 243.57 66.62
48 246.82 68.87
49 250.00 71.23
50 253.10 73.68
51 256.12 76.24
52 259.05 78.90
53 261.89 81.65
+53
View File
@@ -0,0 +1,53 @@
# saved_on,SYNTHETIC
# master_file,S20002P0.CSV
# remote_begin,BEGIN_REMOTE_CSV SOURCE=LOCAL SPI=2 POINTS=49 MODE=SYNTHETIC STATUS=OK
x,y
261.89,81.65
264.64,84.50
267.30,87.43
269.86,90.44
272.32,93.54
274.68,96.72
276.93,99.97
279.07,103.30
281.11,106.69
283.03,110.15
284.83,113.67
286.53,117.25
288.10,120.88
289.55,124.55
290.89,128.28
292.10,132.05
293.18,135.85
294.14,139.69
294.98,143.56
295.69,147.45
296.27,151.36
296.72,155.29
297.04,159.23
297.24,163.19
297.30,167.14
297.24,171.10
297.04,175.05
296.72,178.99
296.27,182.92
295.69,186.84
294.98,190.73
294.14,194.60
293.18,198.43
292.10,202.24
290.89,206.00
289.55,209.73
288.10,213.41
286.53,217.04
284.83,220.61
283.03,224.13
281.11,227.59
279.07,230.99
276.93,234.31
274.68,237.56
272.32,240.74
269.86,243.84
267.30,246.86
264.64,249.79
261.89,252.63
1 # saved_on SYNTHETIC
2 # master_file S20002P0.CSV
3 # remote_begin BEGIN_REMOTE_CSV SOURCE=LOCAL SPI=2 POINTS=49 MODE=SYNTHETIC STATUS=OK
4 x y
5 261.89 81.65
6 264.64 84.50
7 267.30 87.43
8 269.86 90.44
9 272.32 93.54
10 274.68 96.72
11 276.93 99.97
12 279.07 103.30
13 281.11 106.69
14 283.03 110.15
15 284.83 113.67
16 286.53 117.25
17 288.10 120.88
18 289.55 124.55
19 290.89 128.28
20 292.10 132.05
21 293.18 135.85
22 294.14 139.69
23 294.98 143.56
24 295.69 147.45
25 296.27 151.36
26 296.72 155.29
27 297.04 159.23
28 297.24 163.19
29 297.30 167.14
30 297.24 171.10
31 297.04 175.05
32 296.72 178.99
33 296.27 182.92
34 295.69 186.84
35 294.98 190.73
36 294.14 194.60
37 293.18 198.43
38 292.10 202.24
39 290.89 206.00
40 289.55 209.73
41 288.10 213.41
42 286.53 217.04
43 284.83 220.61
44 283.03 224.13
45 281.11 227.59
46 279.07 230.99
47 276.93 234.31
48 274.68 237.56
49 272.32 240.74
50 269.86 243.84
51 267.30 246.86
52 264.64 249.79
53 261.89 252.63