Ryan Jan

Featured Project

Two-Wheel Self-Balancing Robot

Step Response closed-loop sim
Setpoint Response
  • Modeled as an inverted pendulum on a custom 3D-printed chassis
  • PID and a hand-derived 4-state LQR compared on identical hardware
  • Full-state feedback gains from solving the algebraic Riccati equation in Java
  • IMU + encoder sensor fusion, evaluated live over FTC Dashboard telemetry
JavaFTC SDKOnshapeControl TheoryLQR
View on GitHub →
$ make test
Compiling test/*.c ...
Assembling + linking (x86-64) ...

362/362 assertions passed
15 test programs, 0 failures

Small C Compiler

2,800+ lines: lexer, parser, AST, and direct x86-64 codegen. 362 assertions across 15 test programs.

Cx86-64
GitHub →

Fused PID + Feedforward Drivetrain

Kalman filter fusing PID on motor velocity with feedforward on voltage for the FTC drivetrain.

JavaKalman Filter
The IR-controlled temperature regulator breadboard circuit, wired to an ELEGOO Mega, with the IR remote and cooling fan.

IR-Controlled Temp Regulator

Steinhart–Hart thermistor model actuates a fan above a 71°F setpoint via IR remote.

ATmega2560Arduino
GitHub →

Also built

  • 4-Bit Counter Alarm — seven-segment counter, direct GPIO segment control
  • Light-Scanning Servo System — photoconductive-cell sweep to find brightest direction
  • Bidirectional DC Motor Controller — L293D H-bridge, joystick input, dead zone
  • Two-Wheel Line-Following Robot — IR sensors, PID-controlled steering
  • RC Filter Analysis — low-pass design verified in LTspice and on the bench
  • Electronic Theremin — ultrasonic distance mapped to four tones
  • Digital Thermometer with LCD — DHT11 sensor, real-time LCD readout
  • Concert Audio Filter — MATLAB low-pass filter for a live recording