Projects

TrackGuard

TrackGuard adds a camera-based position signal for vehicles on a mapped course. Our team began the project at SchubKI’s National AI Hackathon 2026 and continued it afterwards.
SchubKI National AI Hackathon 2026, Constructor Labs trackView on GitHub
My contribution
Team leadership and coordination of teammates and AI agents. I connected agents running in different tools through a mailbox workflow. Geometry and fusion were team work.
Design decision
Mailbox handoffs let independent agents coordinate parallel approaches across different tools.
Evidence
Public code, replay and error charts. 17.5 cm position RMSE on two same-session development laps; 411 of 460 poses published.
Status
Research prototype. A separate session, starting-pose protocol and target-hardware latency still need testing.
Recorded replay on the real track: the TrackGuard estimate follows the reference line while position and yaw error charts fill in over time.
Recorded development laps 6 and 7 on the real track, sampled and sped up about 32 times (229.5 s in 7.2 s). The reference is used only for evaluation after the sealed run. The first truth seed is not scored, and missing estimates stay missing.
Measured results17.5 cm position RMSE on two same-session development laps. Show metrics, error charts and limits.

Development laps 6 and 7 from the same session, run continuously from one initial ground-truth seed with no reset on lap 7. These laps were used during development; they are not an untouched hold-out.

Position RMSE
17.5 cmTarget 20 cm or less
Lateral RMSE
11.4 cmTarget 20 cm or less
Longitudinal RMSE
13.2 cm95th percentile 26.0 cm
Yaw RMSE
0.107°95th percentile 0.210°
95th percentile position error
31.9 cmMedian 13.4 cm
One-second coverage
94.8%Target 90% or more
Frames published
411 of 46089.3%, 49 marked unavailable
Within 20 cm
71.2%327 of 459 planned frames

Error over time

Every frame of laps 6 and 7, two per second, on one time axis. Grey bands mark the 49 frames without a published estimate; they have no line and no error value. The first frame is the unscored seed. Yaw, lateral and longitudinal errors are signed. Move across the charts, or focus them and use the arrow keys, to read a single frame.

Laps 6 and 7: 229.5 s, 410 scored frames

Position errorcmRMSE 17.5 cm
60 cm20 cm0 cm
Lap 7
Yaw error°RMSE 0.107°
+0.5°0.0°−0.5°
Lateral errorcmRMSE 11.4 cm
+60 cm0 cm−60 cm
Longitudinal errorcmRMSE 13.2 cm
+40 cm0 cm−40 cm
Show all 460 frames as a table
Time (s)LapOutputPosition error (cm)Yaw error (°)Lateral error (cm)Longitudinal error (cm)
0.06seed, not scored––––
0.56no published estimate––––
1.06no published estimate––––
1.56published16.2+0.142+15.1+5.8
2.06published12.6+0.149+12.6+0.3
2.56published14.7+0.143+13.8−4.9
3.06published16.0+0.106+14.4−7.1
3.56published10.9+0.081+10.6−2.5
4.06published7.2+0.074+6.3+3.4
4.56published10.3−0.017+9.5+4.0
5.06published12.6−0.073+10.5−7.0
5.56published10.9−0.084+10.2−3.8
6.06published7.0−0.066+7.0+0.2
6.56published6.0−0.123+4.9+3.5
7.06published7.0−0.178+3.3−6.1
7.56published6.4−0.171+2.2−6.0
8.06published3.5−0.040−1.2+3.3
8.56published13.5−0.151−2.3+13.3
9.06published16.9−0.007−4.1+16.4
9.56published16.8+0.094+1.3+16.7
10.06published10.4+0.057+4.1+9.6
10.56published10.5+0.027+1.6+10.4
11.06published7.7+0.026−0.9+7.7
11.56published15.8+0.143−0.7+15.8
12.06published30.0+0.032−7.0−29.2
12.56no published estimate––––
13.06no published estimate––––
13.56no published estimate––––
14.06no published estimate––––
14.56no published estimate––––
15.06no published estimate––––
15.56no published estimate––––
16.06published6.4+0.049+5.9+2.5
16.56published7.9+0.141+7.2+3.2
17.06published5.7+0.183+2.5+5.1
17.56published3.0+0.144+1.7−2.4
18.06published7.9+0.106+3.4+7.1
18.56published4.9+0.090−0.7+4.8
19.06no published estimate––––
19.56published2.7+0.045−1.6−2.2
20.06published4.5−0.009+4.4−0.7
20.56published4.9−0.004+2.7+4.1
21.06published7.1+0.107+3.4−6.2
21.56published13.0−0.042+8.8−9.6
22.06published14.8−0.075+8.2−12.3
22.56published11.3−0.154+5.0−10.1
23.06published13.1−0.138+1.3−13.0
23.56published5.7−0.157+4.0−4.0
24.06published6.1−0.098+5.6+2.3
24.56published5.6−0.077+3.4+4.4
25.06published5.2−0.052−4.8+1.9
25.56published15.9+0.069−15.1−5.0
26.06published15.9+0.046−15.0−5.2
26.56published14.7−0.022−13.5−5.9
27.06no published estimate––––
27.56no published estimate––––
28.06published9.0+0.013+9.0−0.1
28.56published4.8+0.073+4.7−1.1
29.06published22.4−0.062+9.7+20.2
29.56published4.0+0.062+4.0+0.1
30.06published8.7+0.094+2.7−8.3
30.56published2.4+0.082+0.8−2.2
31.06no published estimate––––
31.56published7.8+0.071−6.2+4.7
32.06published9.1+0.035−5.2−7.5
32.56published14.4+0.084−0.8−14.4
33.06published14.6+0.137+6.4−13.1
33.56published21.1+0.213+7.2−19.8
34.06published6.7+0.027+3.5−5.7
34.56published6.8+0.008+6.5−2.0
35.06published3.8+0.090+3.7−1.1
35.56published16.8+0.182+14.1−9.0
36.06published23.1+0.094+16.8−15.9
36.56published16.3+0.007+11.8−11.2
37.06published13.5−0.046+8.7−10.4
37.56published17.1−0.103+4.4−16.5
38.06published18.0−0.113−1.4−18.0
38.56published26.3−0.102−1.7−26.3
39.06published25.7−0.093−4.2−25.3
39.56published20.4−0.093−3.6−20.1
40.06published17.0−0.077−1.9−16.9
40.56published21.2−0.058−2.8−21.0
41.06published18.3−0.046−1.9−18.2
41.56published16.0−0.090+0.4−15.9
42.06published10.4−0.092−1.1−10.3
42.56published14.8−0.050+1.1−14.8
43.06published4.7−0.048−2.3−4.1
43.56published4.8−0.126−2.5+4.2
44.06published1.1−0.068+0.6+0.9
44.56published6.6−0.094+0.4−6.6
45.06published5.8−0.086+1.2−5.6
45.56published13.9−0.073+0.4−13.9
46.06published6.1−0.066−2.6−5.5
46.56published8.6−0.111−0.6−8.6
47.06published12.7−0.057−0.4−12.7
47.56published3.7−0.098−3.4+1.3
48.06published6.5+0.036−3.6−5.5
48.56published19.1+0.150−11.2+15.5
49.06published8.1+0.082−5.3+6.2
49.56published8.5+0.236−3.6+7.7
50.06published8.1+0.125+4.3+6.8
50.56published9.6+0.126+9.5+1.3
51.06published13.2−0.088+5.4−12.0
51.56published30.5−0.089+8.3−29.4
52.06published26.1−0.097+5.1−25.6
52.56published7.6−0.083−0.9−7.6
53.06published7.8+0.024+4.2−6.6
53.56published22.1+0.010−8.0+20.6
54.06published7.3+0.013−6.7+2.9
54.56published9.9+0.036−6.2+7.7
55.06published5.8+0.051−3.9+4.3
55.56published12.5+0.064−0.6+12.4
56.06published4.0+0.047−2.0+3.5
56.56published4.6−0.013−3.1+3.4
57.06published3.0−0.005−2.1+2.1
57.56published8.5−0.056−8.2−2.3
58.06published14.7−0.047−8.6−11.9
58.56published9.9−0.036−5.4−8.3
59.06published14.0−0.035−6.2−12.6
59.56published6.9−0.028−5.2−4.6
60.06published14.2−0.051−8.2−11.6
60.56published17.5−0.086−9.8−14.5
61.06published16.1−0.042−8.0−14.0
61.56published18.9−0.024−8.3−17.0
62.06published17.4−0.026−4.9−16.7
62.56published18.9−0.053−8.7−16.8
63.06published18.0−0.050−7.9−16.2
63.56published17.9−0.061−10.7−14.4
64.06published17.6+0.055−6.9−16.1
64.56published30.8+0.083−1.3−30.8
65.06published28.7+0.076−2.5−28.6
65.56published29.5+0.063−1.3−29.5
66.06published19.9+0.050+0.0−19.9
66.56published21.6+0.006+3.7−21.3
67.06published18.8−0.087+2.8−18.6
67.56published17.8−0.046+3.4−17.5
68.06published22.0−0.046+1.2−22.0
68.56published22.0−0.077−5.5−21.3
69.06published24.7−0.095−1.8−24.6
69.56published18.5−0.109−7.3−17.0
70.06published17.4−0.100−6.4−16.2
70.56published13.4−0.065−0.5−13.4
71.06published5.2+0.042+1.7−4.9
71.56published10.9+0.080+2.4−10.6
72.06published2.9+0.047+2.8−0.8
72.56published4.2+0.047−1.2−4.1
73.06published14.1+0.109−13.3−4.8
73.56no published estimate––––
74.06published13.0+0.069−6.7−11.2
74.56no published estimate––––
75.06published12.8−0.035−7.0−10.8
75.56no published estimate––––
76.06no published estimate––––
76.56no published estimate––––
77.06no published estimate––––
77.56no published estimate––––
78.06no published estimate––––
78.56published13.8+0.018+2.0−13.6
79.06published10.9+0.039+0.3−10.9
79.56published22.0+0.040+0.1−22.0
80.06published14.4−0.027+3.6−13.9
80.56published11.4−0.042−0.0−11.4
81.06published8.8−0.117−4.5−7.6
81.56published9.2−0.049−0.1−9.2
82.06published9.6−0.022+3.2−9.1
82.56published9.6−0.049+0.0−9.6
83.06published7.0−0.015−1.3−6.8
83.56published13.6−0.066−2.0−13.4
84.06published12.5−0.028−1.4−12.4
84.56published11.9−0.012−1.7−11.8
85.06published2.1+0.036+1.1+1.8
85.56published13.6−0.010+4.2−12.9
86.06published16.6+0.057+4.9−15.8
86.56published18.3+0.023+6.1−17.2
87.06published14.4−0.011+5.4−13.4
87.56published5.8+0.016+3.3−4.8
88.06published2.6+0.021+2.2−1.4
88.56published4.5+0.005−1.6+4.3
89.06published9.2+0.025+0.9+9.2
89.56published18.8+0.040−4.6+18.2
90.06published2.8+0.117−2.5−1.2
90.56published18.6+0.098−3.8−18.2
91.06published27.9+0.109−0.7−27.9
91.56published21.5+0.024+2.8−21.3
92.06published26.9+0.039+3.5−26.7
92.56published13.6+0.046+1.7−13.5
93.06published12.1+0.032+3.8−11.5
93.56published10.1+0.016+4.3−9.1
94.06published2.6+0.004+2.6−0.4
94.56published3.0−0.009+2.1+2.2
95.06published13.2−0.026+2.4+12.9
95.56published11.7+0.005−0.1+11.7
96.06no published estimate––––
96.56published17.4−0.148−10.3+14.1
97.06published19.6−0.283−18.1+7.6
97.56published14.2−0.282−11.3−8.5
98.06published17.4−0.125−5.4+16.6
98.56published16.8+0.017+2.4+16.7
99.06published23.4+0.086−5.0+22.9
99.56published7.5+0.098−2.9−6.9
100.06published17.0+0.400+11.9−12.2
100.56published18.5+0.418+15.8+9.7
101.06published17.5+0.207+16.4−6.1
101.56published21.7+0.139+17.8−12.4
102.06published11.0+0.035+10.5−3.4
102.56published5.9+0.008+4.8−3.4
103.06published6.4−0.022+4.9−4.1
103.56published25.0−0.194−20.5+14.3
104.06no published estimate––––
104.56published40.5−0.162−40.1+5.5
105.06published35.3−0.031−35.1+4.0
105.56published31.6+0.105−31.4+3.4
106.06published25.9+0.132−25.3+5.5
106.56published26.9+0.288−21.1+16.6
107.06published7.2+0.170−7.2+0.2
107.56published4.1+0.175−1.1+4.0
108.06published12.2+0.223+11.1+5.0
108.56published15.5+0.096+6.7+14.0
109.06published11.4−0.009+11.4+0.1
109.56published19.0−0.041+2.7+18.8
110.06published12.7+0.001−1.5−12.6
110.56published13.9+0.026−11.7−7.5
111.06published23.4+0.105−23.2−2.6
111.56published28.1+0.156−27.3+6.7
112.06no published estimate––––
112.56published40.9+0.312−17.0−37.2
113.06published12.5+0.094−11.5−5.0
113.56published11.4+0.077−11.1+2.4
114.06published12.5+0.120−11.2+5.5
114.56published10.7+0.199−6.1+8.8
115.06published11.5+0.058+5.0+10.3
115.56published14.7+0.108+12.0+8.5
116.06published8.5−0.044+7.5−4.1
116.56published11.0+0.014+6.3−9.0
117.06published25.9+0.059+8.0−24.7
117.56published19.2+0.018+2.8−19.0
118.06published12.1−0.005+1.3−12.1
118.56published12.4−0.023+3.5−11.9
119.06published10.2−0.035+5.3−8.7
119.56published8.2−0.091+6.3−5.2
120.06published13.0−0.086+1.0−13.0
120.57published10.7−0.052+0.8−10.7
121.07published3.8−0.059−0.7−3.7
121.57no published estimate––––
122.07published11.4−0.030−8.8−7.3
122.57published10.3−0.068−4.0−9.4
123.07published15.1−0.073−0.6−15.1
123.57published14.4−0.080+0.2−14.4
124.07published5.9−0.042+3.7−4.6
124.57published14.6+0.001+5.8−13.4
125.07published12.4+0.015+3.0−12.0
125.57published20.1−0.034+7.2−18.8
126.07published11.4−0.071+6.0−9.6
126.57published21.3−0.043+5.5−20.6
127.07published22.7−0.079+11.0−19.9
127.57published16.9−0.061+10.2−13.5
128.07published15.4+0.023+15.3−0.2
128.57published16.6−0.082+12.1−11.4
129.07published12.1−0.084+8.4−8.7
129.57published13.5−0.086+11.4−7.3
130.07published6.8−0.016+6.7−0.5
130.57no published estimate––––
131.07published6.6−0.038+6.2−2.2
131.57published4.7+0.017+2.5+4.0
132.07published6.7−0.035−1.6+6.5
132.57published10.4+0.020−8.9+5.4
133.07published8.6−0.021−1.6+8.5
133.57published9.2−0.065−6.8+6.2
134.07published9.0−0.014−7.9+4.3
134.57published11.9−0.030−11.5+3.1
135.07published1.0−0.002−0.8−0.6
135.57published5.5−0.069+3.8−4.0
136.07published3.7+0.068+1.2−3.5
136.57no published estimate––––
137.07no published estimate––––
137.57no published estimate––––
138.07no published estimate––––
138.57published14.3−0.042+11.5−8.6
139.07published11.5+0.025+6.2−9.7
139.57published6.5+0.089+6.5+0.4
140.07published5.6+0.004+0.9+5.6
140.57published12.2+0.009−10.5+6.3
141.07published18.3+0.100−18.3−0.4
141.57published23.3+0.005−22.7+5.4
142.07no published estimate––––
142.57no published estimate––––
143.07published19.2+0.069−10.5−16.1
143.57published16.5−0.016−15.9−4.6
144.07published16.6−0.044−13.9−9.0
144.57published10.3−0.018−10.1−2.4
145.07published2.0−0.029−1.9+0.7
145.57published11.0−0.056−11.0+0.3
146.07published14.0+0.009−14.0−0.8
146.57published5.9−0.024−5.9+0.2
147.07published7.4−0.017−4.3−6.0
147.57published8.4−0.032+8.4−0.4
148.07published16.5−0.009+16.5−0.9
148.57published32.0+0.126+30.3−10.5
149.07published38.0+0.043+33.4−18.0
149.57published31.2−0.079+26.3−16.7
150.07published23.2−0.090+15.8−17.0
150.57published23.7−0.140+16.0−17.6
151.07published27.1−0.135+9.2−25.5
151.57no published estimate––––
152.07published13.1−0.012+1.8−12.9
152.57published31.3−0.038+4.3−31.0
153.07published17.3−0.117+6.7−15.9
153.57published5.7−0.134+2.5−5.1
154.07published17.3−0.215+7.8−15.5
154.57published21.3−0.341+3.3−21.1
155.07published5.2−0.294+4.1−3.2
155.57published8.1−0.062−4.2−6.9
156.07published16.0+0.008−6.6−14.5
156.57published28.1+0.068−5.0−27.7
157.07published22.8+0.002−1.8−22.7
157.57published19.3+0.014+2.8−19.1
158.07published8.2+0.008+1.7−8.0
158.57published6.5−0.001+1.0−6.4
159.07published6.8+0.038+2.3−6.4
159.57published0.9−0.087−0.9−0.2
160.07published4.7+0.001−0.6+4.6
160.57no published estimate––––
161.07no published estimate––––
161.57no published estimate––––
162.07no published estimate––––
162.57no published estimate––––
163.07published14.1+0.043+14.1+0.0
163.57published19.5−0.178+15.3−12.1
164.07published14.5−0.234+5.8−13.3
164.57published18.2−0.313−2.0−18.1
165.07published8.4−0.163−8.2+1.8
165.57published12.5−0.125−11.3+5.4
166.07published25.1−0.137−25.1−0.9
166.57published33.9−0.108−33.9+0.3
167.07published41.7−0.026−39.5−13.5
167.57published24.7+0.163−24.5−3.4
168.07published13.3+0.174−13.3+0.4
168.57published9.4+0.070−7.2+6.0
169.07published5.2−0.044−3.9+3.4
169.57published8.9−0.042−4.6−7.6
170.07published15.6−0.073−2.7−15.4
170.57published8.7−0.074−4.7−7.4
171.07published6.6−0.129−4.2−5.1
171.57published9.3−0.027−9.3+0.7
172.07published11.7+0.020−9.6+6.7
172.57published14.0+0.021−9.9−9.9
173.07published17.9+0.022−8.3−15.9
173.57published21.2+0.025−6.7−20.1
174.07published29.9+0.118−7.6−29.0
174.57published34.9+0.055−4.0−34.6
175.07published19.9+0.018−6.0−19.0
175.57published31.8+0.135−1.9−31.8
176.07published34.6+0.137+2.6−34.5
176.57published38.4+0.146+6.2−37.9
177.07published35.2+0.109+0.9−35.2
177.57published32.9+0.082+1.7−32.8
178.07published17.9+0.041−1.1−17.9
178.57published17.9+0.063+0.1−17.9
179.07published18.0−0.041−1.6−17.9
179.57published19.7+0.021+4.2−19.2
180.07published17.2−0.030+1.4−17.1
180.57no published estimate––––
181.07published15.0−0.113+0.0−15.0
181.57no published estimate––––
182.07published13.2−0.090−3.3−12.8
182.57published9.6−0.107−0.5−9.6
183.07published6.1−0.045−1.7−5.9
183.57published4.9−0.034−0.9−4.8
184.07published10.9−0.109+4.7−9.8
184.57published7.6−0.077+0.9−7.6
185.07published13.1−0.034−4.2−12.4
185.57published16.0−0.029−4.4−15.4
186.07published9.0−0.059−1.5−8.9
186.57no published estimate––––
187.07no published estimate––––
187.57published58.7+0.192+57.1−14.0
188.07no published estimate––––
188.57published34.6−0.073+23.9−25.0
189.07published16.5−0.057+11.1−12.2
189.57published12.2−0.029+4.8−11.3
190.07published6.9−0.002+2.2−6.6
190.57published13.7−0.042+1.0−13.6
191.07published7.0−0.018+3.4−6.0
191.57published12.1−0.047+4.5−11.3
192.07published8.8−0.018+2.1−8.6
192.57published12.4−0.089+2.0−12.2
193.07published6.8−0.054−1.5−6.7
193.57published6.3−0.022−4.7−4.2
194.07published13.2−0.049−12.8+2.9
194.57published14.5−0.092−8.1−12.1
195.07published12.0−0.060−7.3−9.5
195.57published5.9−0.026−5.7−1.7
196.07no published estimate––––
196.57published10.1+0.053+7.9−6.4
197.07published15.4−0.095+12.2−9.4
197.57published13.9−0.039+9.1−10.5
198.07no published estimate––––
198.57published19.6+0.040+7.2−18.2
199.07published16.8−0.086+11.6−12.1
199.57published8.7+0.028+8.5−1.6
200.07published10.8+0.092+8.7+6.3
200.57published7.9+0.021+7.8+1.4
201.07no published estimate––––
201.57published10.4−0.006+1.2+10.4
202.07published15.5−0.056−0.3−15.5
202.57published23.9−0.038−0.2−23.9
203.07published24.3−0.080+1.9−24.2
203.57published25.5−0.132+6.9−24.6
204.07published20.8−0.133+9.7−18.4
204.57published12.8−0.147+11.2−6.2
205.07published12.7−0.134+12.7−0.8
205.57published13.9−0.171+13.6−2.8
206.07no published estimate––––
206.57no published estimate––––
207.07published12.1−0.416+10.7−5.5
207.57published17.1−0.142+14.7+8.6
208.07published27.4−0.053+13.4+23.9
208.57published18.1+0.162+12.2+13.4
209.07published35.8+0.131−1.9+35.7
209.57no published estimate––––
210.07published26.2+0.378+18.7−18.4
210.57published16.4+0.338+16.0−3.4
211.07published16.0+0.271+15.4−4.3
211.57published21.3+0.184+17.3−12.4
212.07published15.7+0.128+14.0−7.1
212.57published7.7+0.051+7.7−0.7
213.07published3.5−0.037+2.6−2.3
213.57published10.8−0.114−0.6−10.8
214.07published28.6−0.339−27.0+9.4
214.57published55.4−0.354−54.7+9.1
215.07published56.5+0.061−54.7+14.4
215.57published37.7+0.086−37.4−4.9
216.07published33.1+0.181−32.5+6.7
216.57published21.2+0.219−18.7+9.9
217.07published4.9+0.112−4.2−2.4
217.57published5.8+0.148−0.6+5.7
218.07published18.3+0.194+16.9+7.1
218.57published18.8+0.056+14.6+11.9
219.07published18.8−0.086+18.5+3.4
219.57published9.6−0.200−4.4+8.5
220.07published20.4−0.073−5.2−19.7
220.57published17.5−0.082−14.3−10.1
221.07published24.6+0.028−24.0+5.4
221.57published27.5+0.056−27.0+5.3
222.07published55.2+0.137−38.0−40.0
222.57published51.6+0.117−35.5−37.5
223.07published31.6+0.027−31.0−6.4
223.57published26.7+0.038−26.7+1.3
224.07published14.6+0.053−13.3+6.0
224.57published14.0+0.054−7.5+11.8
225.07published14.8−0.033+3.4+14.4
225.57published18.3+0.050−0.8+18.3
226.07published14.7+0.022+1.7−14.6
226.57published4.6−0.012+3.4−3.2
227.07published2.6−0.015+1.6+2.0
227.57published2.4−0.094+1.0−2.2
228.07published10.2−0.045+3.6−9.5
228.57published2.9−0.025+1.7−2.3
229.07published6.4−0.062+3.5−5.3
229.57published14.7−0.035+4.4−14.0

Every evaluation window

WindowPosition RMSELateral RMSEYaw RMSECoveragePublishedResult
Development lap 615.3 cm8.6 cm0.103°95.0%217 of 241Meets targets
Development lap 7, no reset19.6 cm13.9 cm0.111°95.5%194 of 219Meets targets
131-second stress window18.5 cm10.0 cmNot reported72.0%179 of 263Coverage below 90%
Day session, blind replayUnavailableUnavailableUnavailable0.0%0 of 148Never initialized
  • Targets: position and lateral RMSE of 20 cm or less, one-second coverage of 90% or more. Coverage counts the seconds with at least one published pose; unavailable frames stay in every count.
  • The stress window is a separately seeded run: the published poses are accurate, but coverage misses the target.
  • The day session had no initial pose and no ground truth. TrackGuard never initialized, so there is no error figure and no 20 cm claim for daylight.
  • Evaluated offline at 2 Hz on a laptop CPU. Live and GPU performance have not been measured.

PythonOpenCVNumPyComputer VisionSensor fusion

More about TrackGuardHow it works, who built it and what a pilot would need to test.
How it works
Reference images of the course are mapped with SIFT features. For each moment, TrackGuard solves one shared vehicle pose across the cameras and accepts a fix only when at least three cameras agree. A causal filter then fuses that fix with the vehicle’s motion signals, using only data up to the current moment.
Team
Built at the hackathon with Tim Roth, Mohamed Lebdah, Rohel Shrestha and Jonas Klupsch. TrackGuard carries the team’s geometry and fusion work further after the event.
Pilot fit
For autonomy teams on a mapped course. A pilot should test a separate session, a declared starting-pose protocol, missing cameras and end-to-end latency on the target hardware. Cost savings and deployment readiness are not yet established.
Code
Portable Python source with synthetic tests, under the MIT License. Partner recordings, maps and labels are not included.

CraftGPT

My Minecraft mod for AI-assisted building: describe an idea, choose an area and review the generated draft before placing it. Available as an experimental v1.0.0 prerelease.
My contribution
Author and designer of the mod, workflow and generation pipeline, with AI-assisted implementation. My focus was improving build quality beyond raw model output.
Design decision
Make building an iterative process inside Minecraft: inspect a draft, request changes and confirm placement. Local validation checks the proposed changes.
Evidence
Public source, a v1.0.0 prerelease and automated checks. Images show real development builds; the daylight capture is from August 2026.
Status
Experimental v1.0.0 prerelease. Extensive gameplay, dedicated-server and modpack testing remains open.
  1. Select an area
  2. Describe the idea
  3. Inspect and revise
  4. Confirm placement

Download the v1.0.0 prerelease

MinecraftJavaFabricArtificial intelligence

More about CraftGPTHow a build works, what it needs and what is still rough.
How a build works
Mark an area with the CraftBook, describe the idea and inspect the draft. Ask for changes or rework a smaller part, then place it. Nothing is placed until you confirm, and placement history includes undo.
AI models
Generation runs through your own signed-in Codex CLI or an API provider you configure; there is no CraftGPT server. At higher effort the model reviews textured views and cutaways of its own build.
Materials
The model chooses the blocks. Local code expands the geometry and checks the result without swapping in a default palette.
Requirements
Minecraft Java 26.1.2 with Fabric Loader 0.19.3 or newer and Fabric API.
Still rough
v1.0.0 is an experimental prerelease without extensive in-game testing. Beds, chests and furnaces cannot be generated yet, so use a test world and keep backups.
Privacy
Settings, requests and history are stored locally. Prompts, block context and review images go only to the provider you choose.

GetMeOfThisRock

Build a rocket by day. Survive your own machines by night.
Alpha for DattelJam, October 2026Play on itch.io

Our DattelJam 2026 entry combines automation and defence.

My contribution
Team leadership, coordination and testing, focused on consistent difficulty and art direction. Developed with Tim Roth using AI assistance.
Design decision
Use playtest feedback to bring difficulty and visual style into line across the game’s systems.
Evidence
Playable alpha on itch.io and a captioned excerpt from the prepared Alpha 5 demonstration.
Status
Public playable alpha. Windows LAN co-op; desktop and mobile browsers for solo play.
30-second Alpha 5 demonstration: prepared scenes recorded in Godot using the game’s running rules. Not an earned campaign.

Video and stills from the prepared Alpha 5 demonstration. View the jam submission

GodotGame Jam

More about GetMeOfThisRockThe game loop, how to play together and how we tested it.
The game
Build a spaceship in your backyard. By day you grow and automate your supplies; at night your own plants, mines and robots turn against you. Research, defend your home and complete all five rocket systems to leave Earth.
How to play
Alone in a desktop or mobile browser, or with two to four players over a Windows LAN. Four difficulty levels range from Easy, where you respawn after five seconds, to Ironman.
Team and tools
Made with Tim Roth in Godot 4.7 and GDScript.
Playtesting
Feedback from each playtest is saved as a report tied to the exact build that was played.
Extras
German and English, remappable keys, accessibility options and a 90-second presentation film in the main menu.

SilenceAI

The new browser prototype connects DGS learning videos, personally taught examples stored on the device, and a conversation draft that you confirm before it is added to the conversation. Reliable recognition for unfamiliar signers and complete translation remain development goals.
Real DGS reference video with recorded classifier guess: Danke. Training example, not a live test.
Recorded guess: Danke Recorded training example from the new browser prototype. Not a live camera stream or evidence of unfamiliar-signer accuracy. Philipps · dgs.wikisign.org / SignDict · CC BY-SA 3.0 DE. Adapted: size, GIF encoding and labeled classifier result. The adaptation uses the same license.

Camera processing stays local. Its library contains 500 attributed dictionary references; these are not 500 evaluated recognition classes.

The recorded examples show real signing videos and the word suggested by the model.

The original team project reached the 2025/26 final of GROW, PionierGarage’s Student Founding Contest.

View the team repository
My contribution
Original team project: ideation, team coordination and presentation. My focus was organizing it; hand tracking and model training were technical team work. The browser prototype and GIFs above are a separate, later project, not the team’s model.
Design decision
In the original team project, break the complex goal into preprocessing, hand tracking, recognition, text processing and speech, with clear team responsibilities.
Evidence
Three real dictionary-video replays with recorded classifier guesses are training references for the new prototype. Separately: the original team’s GROW 2025/26 finalist history.
Status
Private experimental browser MVP with device-local personal teaching. Reliable unfamiliar-signer recognition and full sign-language translation have not been achieved.

What the current examples demonstrate

Recorded predictions
Bitte, Danke and Verstehen come from real DGS dictionary videos. The unchanged base model accepted these training references. The word appears in each GIF after the clip. This demonstrates video-to-model integration, not independent recognition accuracy. The overlay’s distance of 0 is the expected self-match for a training clip, not a confidence score.
Current model evidence
The experimental base model covers five isolated words and performed poorly on separate dictionary recordings. Personally taught words are experimental device-local matches. The experimental twenty-word situation expansion ranked 1 of 22 held-out clips correctly, so all four new camera packs remain disabled. Learning references and manually confirmed drafts remain usable.
Earlier team model
The original team’s separate model contains 1,216 output labels, including: HOLENMORGENWASSERWETTERREGENSCHNEEThis label set belongs only to the earlier model, not to the new browser base model, and does not establish reliable recognition of each sign. Historical model labels and source.

Earlier team-model sources: Training routine · Methods and known limits

More about SilenceAIWhat the prototype does and where the project stands.
What the prototype does
The new browser MVP processes camera images locally, provides dictionary references and supports personally taught examples stored on the device. Suggestions stay in an editable draft until confirmed. The GIFs show recorded predictions on training references.
Milestone
Original team project: finalist in GROW 2025/26, the student founding contest run by PionierGarage at KIT, where we presented the idea as a startup.
Status
Private experimental learning and conversation prototype. Reliable recognition for unfamiliar signers and full translation have not been achieved.

A Glass of Water

A browser card game made with Godot. My entry won first place at the 2025 Willigis Game Jam.
My contribution
My Godot entry for the Willigis Game Jam 2025.
Design decision
Card actions and an explicit end-turn step make combat turn-based.
Evidence
Playable in a browser on itch.io. First place at the Willigis Game Jam 2025.
Status
Published game-jam entry.
A Glass of Water gameplay: a water character faces an enemy, with cards, health and an End Turn button.
Gameplay from A Glass of Water.

GodotCard gameGame Jam

More about A Glass of WaterHow a turn plays out and how the game came about.
How it plays
Turn-based card battles: you play cards from your hand against an enemy, then end your turn.
Background
My entry for the 2025 Willigis Game Jam, built with Godot for the browser. It won first place.
Play
In the browser on itch.io.

Scrollpause

I’m building an Android app that introduces short pauses between rapid video changes. The idea is to interrupt endless scrolling and make the next choice more deliberate.
Local beta 0.8 · unpublished

Three confirmed video switches are allowed in a rolling 60 seconds. The fourth switch opens a pause. Continue unlocks when a slot becomes free; tapping it uses that slot. Detected ads do not count.

Current progress
An initial YouTube Shorts integration and a built-in test feed. Tested with one YouTube version in an Android emulator; real devices and newer app versions still need validation.
Local processing
The app uses Android accessibility features with the user’s permission. No account, server or app internet permission is required.

AndroidKotlinJetpack Compose

My contribution
Product concept and AI-assisted development of the Android app and its validation workflow.
Design decision
Three confirmed video switches in a rolling 60 seconds. After a pause, continuing needs an explicit tap.
Evidence
Captures from local beta 0.8 and Android emulator checks. No effectiveness claim.
Status
Local unpublished beta for YouTube Shorts. Personal acceptance on a real phone is still pending.

Original captures of local beta 0.8.0-beta.4 in the Android emulator, 22 October 2026.

More about ScrollpauseThe current beta rule, privacy and what is still open.
Current beta rule
Version 0.8 allows three video switches in any rolling 60 seconds, and each one expires on its own. The fourth switch puts a pause over the page. Continue unlocks when the countdown reaches zero, and tapping it uses one of the three switches. Detected ads do not count. The screenshots above show local beta 0.8.0-beta.4.
Privacy
No ads, payments, accounts, telemetry or internet permission. Settings and at most three expiry times stay on the phone; no viewing history, titles or images are stored.
Status
Local beta 0.8, not yet published. It covers YouTube Shorts only; TikTok, Instagram and iPhone are outside this beta. Testing on real devices is still pending.
Open questions
The three-switch limit is a product decision that still needs testing. The app makes no claim about health effects.
Licence
Free and MIT-licensed.

Create

Discover games, change their rules and pass on your own version. Create combines three original browser games with a remix editor and traceable version families.
Private local pilot

GamesMarketplaceArtificial intelligence

My contribution
I set product scope, UX goals and evidence requirements. Implementation and automated checks are developed with Codex assistance.
Design decision
Changes are proposed and previewed before applying. Published versions stay fixed and retain their source family.
Evidence
Three playable originals. The path from remix to saved local version was exercised. One real Codex proposal was checked for Lantern Wilds.
Status
Private local pilot. No public service; AI proposes bounded settings, not arbitrary game code.
Create Discover with Lantern Wilds, Cloudline and Scrapstorm.
Three authored games in the private local pilot, captured on 23 October 2026.
Remix editor with Outer ring selected as the new trail network and shown in the preview.
Change an existing setting and inspect it before applying.
Confirmation of a fixed game version saved in the local test.
Fixed version saved in a temporary local test session. The pictured address is not a public demo link.
More about CreateWhat players can do, the games and where the project stands.
The idea
A place to play short 2D games, remix their rules and publish your version, so others can play it and remix it further.
The games
Three originals: Lantern Wilds, a forest survival expedition; Cloudline, a rope-swinging courier climb; and Scrapstorm, where collected scrap becomes orbiting weapons against waves of enemies. Each runs fullscreen with touch and keyboard controls.
Remixing
Each game exposes settings for gameplay, progression and world. Publishing saves a fixed version, and every remix records where it came from, so families of versions stay traceable.
Role of AI
An optional local AI worker can generate game data, which is validated before it is used. The three originals are authored in advance and play the same way every time for a given setup, without live AI generation.
Status
A private local pilot. Publishing works on a Create server, but there is no public service yet.

WattSeal

Contributions to an existing desktop energy monitor: German language support, clearer preferences and a dashboard that works in narrow windows.
Open source · five merged contributionsView the upstream project
My contribution
Contributed language, preferences and dashboard improvements with AI-assisted implementation.
Design decision
Make existing data and preferences easier to use while preserving the project’s collection limits.
Evidence
Five merged upstream pull requests with source changes, review and documented checks.
Status
Merged upstream. WattSeal is an independent open-source project to which I contribute.

This portfolio

My bilingual portfolio with projects, speaking and CV. Developed with AI assistance.

Astro generates the static pages; Cloudflare Pages hosts them on my own domain.

AstroTypeScriptCSSCloudflare Pages

View the CV
My contribution
Content, visual direction and AI-assisted implementation of this bilingual website.
Design decision
Shared components keep both languages consistent. Pages and fonts are served as static files.
Evidence
English and German pages, downloadable CVs and automated link and language checks.
Status
Static bilingual website on my own domain.
More about this portfolioHow it is built, tested and published.
Structure
Astro builds static pages from shared components, and every page exists in English and German.
CV
A Python script generates both CV PDFs with ReportLab. The site shows them in its own PDF.js viewer with selectable text and working links.
Checks
Automated tests confirm that every page has its language pair, that internal links and section anchors resolve, and that both CV PDFs render with their links.
Hosting and privacy
Cloudflare Pages publishes every change pushed to GitHub. No analytics, no third-party embeds, and the fonts are served with the site.
Design
Forest green and lime, Bricolage Grotesque for large headings and Manrope for everything else, on one shared type scale.