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,R10001P0.CSV
# remote_begin,BEGIN_REMOTE_CSV SOURCE=BOARD_REMOTE SPI=1 POINTS=49 MODE=SYNTHETIC STATUS=OK
x,y
261.57,252.44
258.73,255.19
255.80,257.85
252.78,260.41
249.68,262.86
246.50,265.22
243.25,267.47
239.92,269.62
236.53,271.65
233.07,273.57
229.55,275.38
225.98,277.07
222.35,278.65
218.67,280.10
214.94,281.43
211.18,282.64
207.37,283.73
203.53,284.69
199.67,285.53
195.77,286.23
191.86,286.81
187.93,287.27
183.99,287.59
180.04,287.78
176.08,287.85
172.12,287.78
168.17,287.59
164.23,287.27
160.30,286.81
156.39,286.23
152.49,285.53
148.63,284.69
144.79,283.73
140.99,282.64
137.22,281.43
133.49,280.10
129.81,278.65
126.18,277.07
122.61,275.38
119.09,273.57
115.63,271.65
112.24,269.62
108.91,267.47
105.66,265.22
102.48,262.86
99.38,260.41
96.37,257.85
93.43,255.19
90.59,252.44
1 # saved_on SYNTHETIC
2 # master_file R10001P0.CSV
3 # remote_begin BEGIN_REMOTE_CSV SOURCE=BOARD_REMOTE SPI=1 POINTS=49 MODE=SYNTHETIC STATUS=OK
4 x y
5 261.57 252.44
6 258.73 255.19
7 255.80 257.85
8 252.78 260.41
9 249.68 262.86
10 246.50 265.22
11 243.25 267.47
12 239.92 269.62
13 236.53 271.65
14 233.07 273.57
15 229.55 275.38
16 225.98 277.07
17 222.35 278.65
18 218.67 280.10
19 214.94 281.43
20 211.18 282.64
21 207.37 283.73
22 203.53 284.69
23 199.67 285.53
24 195.77 286.23
25 191.86 286.81
26 187.93 287.27
27 183.99 287.59
28 180.04 287.78
29 176.08 287.85
30 172.12 287.78
31 168.17 287.59
32 164.23 287.27
33 160.30 286.81
34 156.39 286.23
35 152.49 285.53
36 148.63 284.69
37 144.79 283.73
38 140.99 282.64
39 137.22 281.43
40 133.49 280.10
41 129.81 278.65
42 126.18 277.07
43 122.61 275.38
44 119.09 273.57
45 115.63 271.65
46 112.24 269.62
47 108.91 267.47
48 105.66 265.22
49 102.48 262.86
50 99.38 260.41
51 96.37 257.85
52 93.43 255.19
53 90.59 252.44
+53
View File
@@ -0,0 +1,53 @@
# saved_on,SYNTHETIC
# master_file,R20001P0.CSV
# remote_begin,BEGIN_REMOTE_CSV SOURCE=BOARD_REMOTE SPI=2 POINTS=49 MODE=SYNTHETIC STATUS=OK
x,y
90.59,252.44
87.84,249.59
85.18,246.66
82.62,243.65
80.16,240.55
77.81,237.37
75.56,234.12
73.41,230.79
71.38,227.40
69.46,223.94
67.65,220.42
65.96,216.84
64.38,213.21
62.93,209.54
61.60,205.81
60.39,202.04
59.30,198.24
58.34,194.40
57.50,190.53
56.80,186.64
56.21,182.73
55.76,178.80
55.44,174.86
55.25,170.90
55.18,166.95
55.25,162.99
55.44,159.04
55.76,155.10
56.21,151.17
56.80,147.25
57.50,143.36
58.34,139.49
59.30,135.66
60.39,131.85
61.60,128.09
62.93,124.36
64.38,120.68
65.96,117.05
67.65,113.48
69.46,109.96
71.38,106.50
73.41,103.10
75.56,99.78
77.81,96.53
80.16,93.35
82.62,90.25
85.18,87.23
87.84,84.30
90.59,81.46
1 # saved_on SYNTHETIC
2 # master_file R20001P0.CSV
3 # remote_begin BEGIN_REMOTE_CSV SOURCE=BOARD_REMOTE SPI=2 POINTS=49 MODE=SYNTHETIC STATUS=OK
4 x y
5 90.59 252.44
6 87.84 249.59
7 85.18 246.66
8 82.62 243.65
9 80.16 240.55
10 77.81 237.37
11 75.56 234.12
12 73.41 230.79
13 71.38 227.40
14 69.46 223.94
15 67.65 220.42
16 65.96 216.84
17 64.38 213.21
18 62.93 209.54
19 61.60 205.81
20 60.39 202.04
21 59.30 198.24
22 58.34 194.40
23 57.50 190.53
24 56.80 186.64
25 56.21 182.73
26 55.76 178.80
27 55.44 174.86
28 55.25 170.90
29 55.18 166.95
30 55.25 162.99
31 55.44 159.04
32 55.76 155.10
33 56.21 151.17
34 56.80 147.25
35 57.50 143.36
36 58.34 139.49
37 59.30 135.66
38 60.39 131.85
39 61.60 128.09
40 62.93 124.36
41 64.38 120.68
42 65.96 117.05
43 67.65 113.48
44 69.46 109.96
45 71.38 106.50
46 73.41 103.10
47 75.56 99.78
48 77.81 96.53
49 80.16 93.35
50 82.62 90.25
51 85.18 87.23
52 87.84 84.30
53 90.59 81.46
+53
View File
@@ -0,0 +1,53 @@
# saved_on,SYNTHETIC
# master_file,S10001P0.CSV
# remote_begin,BEGIN_REMOTE_CSV SOURCE=LOCAL SPI=1 POINTS=49 MODE=SYNTHETIC STATUS=OK
x,y
90.59,81.46
93.43,78.71
96.37,76.05
99.38,73.49
102.48,71.03
105.66,68.68
108.91,66.42
112.24,64.28
115.63,62.25
119.09,60.32
122.61,58.52
126.18,56.82
129.81,55.25
133.49,53.80
137.22,52.46
140.99,51.25
144.79,50.17
148.63,49.21
152.49,48.37
156.39,47.66
160.30,47.08
164.23,46.63
168.17,46.31
172.12,46.11
176.08,46.05
180.04,46.11
183.99,46.31
187.93,46.63
191.86,47.08
195.77,47.66
199.67,48.37
203.53,49.21
207.37,50.17
211.18,51.25
214.94,52.46
218.67,53.80
222.35,55.25
225.98,56.82
229.55,58.52
233.07,60.32
236.53,62.25
239.92,64.28
243.25,66.42
246.50,68.68
249.68,71.03
252.78,73.49
255.80,76.05
258.73,78.71
261.57,81.46
1 # saved_on SYNTHETIC
2 # master_file S10001P0.CSV
3 # remote_begin BEGIN_REMOTE_CSV SOURCE=LOCAL SPI=1 POINTS=49 MODE=SYNTHETIC STATUS=OK
4 x y
5 90.59 81.46
6 93.43 78.71
7 96.37 76.05
8 99.38 73.49
9 102.48 71.03
10 105.66 68.68
11 108.91 66.42
12 112.24 64.28
13 115.63 62.25
14 119.09 60.32
15 122.61 58.52
16 126.18 56.82
17 129.81 55.25
18 133.49 53.80
19 137.22 52.46
20 140.99 51.25
21 144.79 50.17
22 148.63 49.21
23 152.49 48.37
24 156.39 47.66
25 160.30 47.08
26 164.23 46.63
27 168.17 46.31
28 172.12 46.11
29 176.08 46.05
30 180.04 46.11
31 183.99 46.31
32 187.93 46.63
33 191.86 47.08
34 195.77 47.66
35 199.67 48.37
36 203.53 49.21
37 207.37 50.17
38 211.18 51.25
39 214.94 52.46
40 218.67 53.80
41 222.35 55.25
42 225.98 56.82
43 229.55 58.52
44 233.07 60.32
45 236.53 62.25
46 239.92 64.28
47 243.25 66.42
48 246.50 68.68
49 249.68 71.03
50 252.78 73.49
51 255.80 76.05
52 258.73 78.71
53 261.57 81.46
+53
View File
@@ -0,0 +1,53 @@
# saved_on,SYNTHETIC
# master_file,S20001P0.CSV
# remote_begin,BEGIN_REMOTE_CSV SOURCE=LOCAL SPI=2 POINTS=49 MODE=SYNTHETIC STATUS=OK
x,y
261.57,81.46
264.32,84.30
266.98,87.23
269.54,90.25
272.00,93.35
274.35,96.53
276.61,99.78
278.75,103.10
280.78,106.50
282.70,109.96
284.51,113.48
286.20,117.05
287.78,120.68
289.23,124.36
290.56,128.09
291.77,131.85
292.86,135.66
293.82,139.49
294.66,143.36
295.37,147.25
295.95,151.17
296.40,155.10
296.72,159.04
296.92,162.99
296.98,166.95
296.92,170.90
296.72,174.86
296.40,178.80
295.95,182.73
295.37,186.64
294.66,190.53
293.82,194.40
292.86,198.24
291.77,202.04
290.56,205.81
289.23,209.54
287.78,213.21
286.20,216.84
284.51,220.42
282.70,223.94
280.78,227.40
278.75,230.79
276.61,234.12
274.35,237.37
272.00,240.55
269.54,243.65
266.98,246.66
264.32,249.59
261.57,252.44
1 # saved_on SYNTHETIC
2 # master_file S20001P0.CSV
3 # remote_begin BEGIN_REMOTE_CSV SOURCE=LOCAL SPI=2 POINTS=49 MODE=SYNTHETIC STATUS=OK
4 x y
5 261.57 81.46
6 264.32 84.30
7 266.98 87.23
8 269.54 90.25
9 272.00 93.35
10 274.35 96.53
11 276.61 99.78
12 278.75 103.10
13 280.78 106.50
14 282.70 109.96
15 284.51 113.48
16 286.20 117.05
17 287.78 120.68
18 289.23 124.36
19 290.56 128.09
20 291.77 131.85
21 292.86 135.66
22 293.82 139.49
23 294.66 143.36
24 295.37 147.25
25 295.95 151.17
26 296.40 155.10
27 296.72 159.04
28 296.92 162.99
29 296.98 166.95
30 296.92 170.90
31 296.72 174.86
32 296.40 178.80
33 295.95 182.73
34 295.37 186.64
35 294.66 190.53
36 293.82 194.40
37 292.86 198.24
38 291.77 202.04
39 290.56 205.81
40 289.23 209.54
41 287.78 213.21
42 286.20 216.84
43 284.51 220.42
44 282.70 223.94
45 280.78 227.40
46 278.75 230.79
47 276.61 234.12
48 274.35 237.37
49 272.00 240.55
50 269.54 243.65
51 266.98 246.66
52 264.32 249.59
53 261.57 252.44