
Create Your First Project
Start adding your projects to your portfolio. Click on "Manage Projects" to get started
Project Sunflower
Date
Spring, 2025
Location
Portland, Oregon
Project type
Personal Engineering and Artistic Challenge, Kinetic Installation
Key Tech
C++, Teensy 3.6, NASA Solar Position Algorithm (SPA), Vector Mathematics, Inverse Kinematics, Sensor Fusion (IMU Calibration), Gardening
The Vision: Living in a north-facing apartment with a shaded patio, I lacked the direct sunlight necessary to grow a vibrant flower garden. Treating this as both an art installation and a rigorous engineering challenge, I designed a robotic heliostat to redirect sunlight onto my balcony. I imposed a strict design constraint on the project: purely open-loop control. Rather than using simple light sensors to track the brightest point in the sky, I challenged myself to solve the problem entirely through mathematics and astronomical prediction.
The Engineering: The device is a custom cable-driven mechanism where a mirror is mounted on a universal joint and manipulated by linear actuators. The brain of the system is a Teensy 3.6 microcontroller running a ported version of NASA's Solar Position Algorithm (SPA) to calculate the sun's vector with high precision.
Kinematic Derivation: Deriving the inverse kinematics required mapping a desired 3D reflection normal to specific scalar cable lengths without a standard library. I constructed a custom solver that generated a rotation matrix representing the mirror's required orientation. The critical mathematical challenge was strictly defining the matrix multiplication order to match the physical degrees of freedom of the universal joint. Once solved, the system applies this transformation matrix to the mirror's anchor coordinates in 3D space and calculates the Euclidean distance to the fixed routing eyelet, translating abstract vector geometry into precise linear actuator commands.
IMU-Based Error Correction: Because the system runs open-loop based on calculated coordinates, physical alignment errors are inevitable. To resolve this without breaking the "no light sensor" rule, I engineered a self-alignment routine using a BNO055 IMU. By temporarily attaching the sensor to the mirror, the system runs a training sequence to map its physical pointing errors against its mathematical model, generating a correction table that allows the open-loop solver to drive the mechanics with closed-loop accuracy.
My main personal critique is the pale green color of the mount but that was simply a consideration made to match the color of my building to avoid static as I never actually asked permission to install it. I did make sure that my lease did not specifically prohibit the installation of robotics.











