things I built because I wanted to
An open-source PCVR headset I'm building as an alternative to Meta's, HTC's, Apple's, and everyone's closed-source VR ecosystems. Built around a Rockchip 3588 compute module (CM3588) that handles inside-out tracking from dual cameras, with a custom PCB to integrate it with two 2K displays (1440x1440 per eye), WiFi 6E for video streaming, and dual IMUs (BMI270) for head tracking. The controllers both run ESP32-S3s with infrared tracking markers and their own IMUs for sensor fusion. All firmware will be written in rust for both the headset and controllers. Still in the PCB design phase, but the repo documents my full design process, and all my thoughts throughout the process.
A glove that tracks your hand using 5 thin-film flex sensors (one per finger) and a BMI160 IMU, capturing 15 degrees of freedom total. An ESP32 reads the sensors and transmits data over BLE to a custom C++ application that parses the input and visualizes it as a 3D hand model through a web interface. The glove uses 3D printed TPU joints to house the flex sensors while allowing natural hand movement, plus an onboard housing for the electronics. Firmware runs calibration sequences on startup to account for individual finger lengths and variations in sensor placement.
Contributor to reverse-engineering and modernizing Valve's Steam Controller after discontinuation. Reverse-engineered the original firmware, then helped redesign the PCB—swapping the LPC11U37/501 for an ESP32, upgrading from a single IMU to dual BMI270s, and replacing Micro-USB with USB-C. Wrote Rust firmware implementing USB HID gamepad protocol and haptics. The project preserves these controllers for continued use.
Duncebot is my most favorite robot because it is the least functional and most rediculous battlebot I've ever built. Battlebots is a game, and games are meant to be fun. Duncebot delivers on that.
Vlad is my most technically interesting battlebot yet. Vlad uses two flywheels, that do not touch the ground, to lock the rotational axes of the bot through gyroscopic effect. With the rotational axes locked, the bot can only move forward or backward. To change direction, keep one wheel spinning, then change the direction the other wheel is spinning. Also features a giant bludgeoning weapon.