Logbook
Everything, in order
A timeline of every entry on all my public projects.
33 entries, 4 projects
- October 2026
-
LED driver practice questions
Created a set of flashcards for some other members to learn about our LED driver.
- Entries lost to time Aerodesign Payload
hard to keep a log when things are moving so fast...
Jul 3 to Oct 12, 2026 -
Saving our vision system from the depths
Background subtraction saved our project.
- Entries lost to time Badminton Robot
hard to keep a log when things are moving so fast...
Apr 12 to Oct 2, 2026 - August 2026
-
Continuous Integration and Formatting
Deploying CI to our project repo.
-
It continues...
momentum push! added .clang-format to match Google conventions
- 87 days since the last entry for this project WaylessMay 10 to Aug 5, 2026
- July 2026
-
Mastering IR detection (part 3)
Completing my deep dive on phototransistors.
-
Mastering IR detection (part 2)
I forgot things aren't ideal in the world of ICs... digging deeper!
- June 2026
-
Mastering IR detection (part 1)
Studying opamps, documenting phase-reversal, and setting up for the best IR detection this world has ever seen.
- Entries lost to time Aerodesign Payload
hard to keep a log when things are moving so fast...
May 16 to Jun 30, 2026 - May 2026
- Shipped RL Arm Tracking last entry May 24, 2026. No more entries for now!
-
Submission and future scope of work
Polished the GitHub repo for submission (library code into an
arm/package, dead code removed, proper README pointing at this build log). Then some thoughts on GPU training, ripping out IK, learning physics directly, and comments on RL's observation space. -
v9 has arrived
v9 trains with an action delta penalty (β=0.1) and 5s episode duration. Jerk dropped 25%, mean error dropped 13%, and time in the 5cm band jumped from 54% to 73%. Shipping v9 as the submission model!
-
New metrics for v5 and planning v9
Passed on MuJoCo Warp (too much JAX rewrite for the time left), added action and tracking-lag metrics, and used them to characterise v5 as "noisy but on-time" versus classical's "clean but late". Set the stage for v9 with an action delta penalty.
-
Acceleration in obs and accidentally rewarding termination
Audited yesterday's collision penalty, removed it, and the eval mean error dropped by ~3 cm. Added target acceleration to the observation space and v5 beats classical by 4.55 cm with time-in-band more than doubled. Then tried letting RL learn collision avoidance with early termination, which caused a "model races to terminate" failure mode.
-
Comparing classical vs RL, then mixing in new trajectories
Got the first side-by-side classical vs RL comparison out the door: RL is ~30% tighter on mean error and spends 15 more points of time in the 5 cm band, but jerkier. Moved the tracked point to a green tip site past the gripper, tried DLS for the IK folding issue (no effect), then added a figure-8 and a random-walk "fly" trajectory and kicked off a 5M-step retrain with a self-collision penalty.
-
Wiring the RL pipeline end-to-end
Finished
trajectory.pyand wiredenv.py,train.py,eval.pyend-to-end. Drilled the RL terminology along the way and watched a PPO policy learn to lead moving targets over a 1M-step training run. Self-collisions and EE visibility flagged for the next session. -
Scoping RL and mapping the arm's reach
Settled on approach iv (RL on top of IK+PD) as the starting scope. Mapped the Panda arm's reachable workspace from 300,000 sampled joint configurations and laid out a plan to get training running.
-
Building out the morphological chart
General team status check, then a payload session building out the morphological chart. Last log's sensing table is now condensed into annotated cells with images. Next step is picking a complete stack.
-
Turning physics on, and a nagging decision
Turned dynamics on for the first time with a classical IK + PD controller tracking a moving circle, and found the Panda's actuators are already PD tuned. Now weighing how much RL to take on before the deadline.
-
Implementing inverse kinematics
Built the Jacobian pseudo-inverse IK solver. It drives the Panda's wrist to a hardcoded 3D target, and degrades as expected when the target is out of reach. This is the foundation for both the classical baseline and the RL Cartesian action wrapper.
-
Challenge accepted.
Kickoff for an 11-day RL challenge: train a policy to track a 3D Cartesian trajectory on a simulated Franka arm. Scoped the problem, set up the repo with uv, and got Franka loaded in MuJoCo for first signs of life.
-
Payload concept analysis
Built a document of payload options for the team, then sat down as a subteam and analysed concept fragments across motion, interaction, and detection plus localisation. Morphological chart and concept summaries are up next.
-
PR #4 feedback: typed angles and value-move
Addressed Saf's comments on PR #4. Applied copy + move utility on the builder, and introduced Angle and AngularVelocity types so that we explicitly state angle units.
- 15 days since the last entry for this project WaylessApr 25 to May 10, 2026
-
Avionics subteam onboarding
Second onboarding, this time with the full subteam. Delivery is locked in over release, and the payload direction is leaning towards being omnidirectional and self-centring.
-
Reading the payload history
Read through the team's internal payload history. Need to find what the broader community has done for short-distance localisation and docking.
-
Subteam alignment & concept gen kickoff
First proper subteam meeting. Confirmed avionics owns detection and localisation. Last year's approach failed by putting all locating on the plane. Timeline is more aggressive: 6 weeks to a solid design, then prototype.
-
First general meeting!
First SAE Aerodesign general meeting. Got oriented on team structure and the payload subteam mission: capture and release on the DLZ. Summer focus is research and derisking.
- April 2026
-
Vehicle kinematics on the drive to Kelowna
Six-hour commute to Kelowna. Worked out the kinematic model: bicycle model, no-slip assumption, back axle as reference. PR #4 is up.
-
Reviewing the ECS foundations
Reviewed Saf's ECS header PR. World, Entity, Pos2, Types are in. Clean.
-
Reviewing the first renderer
Reviewed Saf's SFML and vcpkg PR. Window is up, circle is on screen. Still writing finals for school...
-
It begins...
Kicked off Wayless with Saf. C++ car physics simulator, 2D first, 3D later. Repo is live!
-
Year 1, where we ended up
The vision and prediction pipeline is the year's primary achievement. Detection is unsolved, the motors came late, and the HTC Vive did not work out.
-
The robot
Four mecanum wheels, a one degree of freedom striking arm (for now), a mostly 3D printed chassis and an all off-the-shelf 24V electrical system.
-
Predicting where the birdie lands
Drag and gravity, an Extended Kalman Filter, and a Runge-Kutta forward simulation turn a stream of 3D positions into a landing spot and a time-to-arrival.
-
Stereo vision and detection
Two cameras triangulate the birdie's 3D position in real time. The geometry works, but picking the birdie out of a dark image does not.
- Entries lost to time Badminton Robot
hard to keep a log when things are moving so fast...
Sep 2 to Apr 9, 2026 - September 2025
-
What we set out to build
A fully autonomous badminton-playing robot that can sustain a reliable rally against a human opponent.































