Added a demo on HF Spaces
Added a demo on HF Spaces
I was mostly working on tuning the model and fixing hardware since the previous circuit did not give the servo enough power. Hence, I added an external power supply (which took hours to debug… turns out I had to ground the ESP32 to the external GND)
I noticed the size of the ball and beam in simulation was not the same as the actual one, so I updated sim to be closer.
I also added the past action rolling list to the model, which allowed it to see what it tried to do previously. It now survives 1000 steps in simulation (~50 seconds)
Added simple PCB design
QT-Opt worked much better, but now the problem is with the hardware. The ball just falls forward since the beam is not thick enough.
I will print and try again with a thicker beam
Added dashboard side panel and wired chat messages to hit agent backend
Again I got feedback that the code and README looked too AI generated so this is Attempt 3 at restructuring and rewriting the README.
Idk what to put for the image so I put the README, which is now 100% written by me (I changed it to sort of match the Stardance format)
I also tried PID as a benchmark (only in simulation of course). It did pretty well as shown below, so I might try either imitation learning or a different model that just identifies ball and beam position to then apply PID on top.
In parallel, I also tested QT-Opt on hardware and it failed… I’m trying more training with visual distortions in the simulation environment so it becomes more robust
Created a mock dashboard and the MCP backend (trust I did a lot more than build this simple dashboard in all that time)
I tried QT-Opt and at least in simulation, it did a lot better (it also trained much faster due to the other architectural change I made; see next). I also switched the backbone to Dinov2 Small, which is newer and smaller than the previous Dino Base backbone.
Added the physical hardware bridge and it turns out the model does not do very well. I am going to try three approaches:
Writing code myself for the first time to refactor the codebase (jk I did write most of it myself the first time… but we obey the orders of the Shipwrights)
Fixed a serial-related bug and created demo
Adding hook for claude code to automatically trigger the notification when it asks the user a question (there is a clarify tool it uses)
Cleaning up code
The MCP server finally works (the notification in the image was sent by Claude using send_notification tool call), and I also added a push button to dismiss the notification once you have addressed it.
The next steps are:
Improved the training loop to reflect actual control rate (20 Hz vs 500 Hz in simulation previously). Used AMD GPU for faster training and this is what it looks like (able to balance for ~6 seconds in simulation)
I finally got the OLED to work via Arduino CLI + implemented text wrapping.
Soldering the OLED display and putting it on the breadboard