Digital Twinning for the Air Force
A year (2020–2021) in a secure facility: led a team of four undergraduates building a digital twin that tracked individual units' radio signal strength inside a battlespace simulation, in near-real-time.
Worked on-site in a secure facility under a clearance, leading four undergraduates.
The hardest part was solo-leading the team despite having a PhD student on staff. He was a bit of an absentee father for the group. It was very embroadening. We got exposed to the extended lengths of time that governmental approvals require. We didn't get access to a git repo proper until 6 months in. We didn't get access to the training manuals for the programs we were supposed to use until 7 months in, so we had reverse engineered their scripting language's syntax. We also traversed source to figure out how the plugin system communicated externally to other programs. We were able to get data in and out of the base program, and get a PoC of the project.
I enjoyed making PowerPoints teaching the undergrads about tests, git, and other items. We all had many round tables where we tried to figure out how the hell to take vague notions of "digital twinning" and prediction and translate that into a workable piece of software.
After reverse-engineering AFSIM enough to drive its scripting, we built a Python handler that managed the AFSIM script generation and gave units their radio data by wrapping VOACAP CLI calls. The handler dumped VOACAP's output geolocation data as GeoJSON into MongoDB, then, given each unit's live location, it queried Mongo for the nearest "good signal" location. It then ranked candidates with a distance metric (Manhattan distance, or a slightly smarter earth-curvature-aware variant). This was also the first time I ever used a sorting algorithm in the wild (just binary search; it was ordered data!). The wrapper then relayed that resolved signal data back to the units in AFSIM. That closed the loop so per-unit radio strength tracked semi-live inside the sim, toward the ~5-minute lead-time goal.