Buoy Bot Update - 20.09.2024

Hi Team,

In my last update, I was cautiously optimistic about integrating RTK GPS technology into our buoy bot project to achieve centimeter-level accuracy, keeping the buoy in a precise location. Since then, things have progressed in exciting and unexpected ways, but there have also been a few bumps along the road.

Challenges with the Raspberry Pi 5 AI Kit

After receiving the much-anticipated Raspberry Pi 5 AI Kit, I quickly realized it might not be the silver bullet for our buoy bot. While the Pi 5 has impressive processing power and AI capabilities, it ended up being a double-edged sword. The high power consumption posed a significant challenge, especially when running the AI models needed to train the buoy bot to "learn" how to maintain position in varying conditions.

The Pi 5 was also prone to crashing during power brownouts, making it unreliable for the constant field conditions we face. On top of that, adaptive learning with AI was far more complex than anticipated. While AI excels in situations where it has access to pre-trained models (like object detection or language processing), teaching it to actively learn from real-time data in our marine environment proved difficult. The sheer amount of training data required to get the AI models functioning accurately was overwhelming and hard to gather in a sailing environment.

In the end, the Raspberry Pi 5 AI Kit ended up feeling like too much complexity for our relatively simple task of holding the buoy on station.

The ESP32: A Return to Simplicity

After wrestling with the AI kit, I decided to circle back to something simpler, more robust, and—most importantly—reliable: ESP32 microcontrollers. These little devices have a fraction of the power consumption of the Pi 5, but they’re much better suited for our needs. Low power, high reliability, and long battery life are essential when we’re out on the water for hours or days at a time.

I’ve now focused my attention on a new approach: using whole-number wind speeds and power percentages for station-keeping. The idea is simple: at 10 knots of wind, the buoy needs about 10% motor power to hold position; at 15 knots, it needs closer to 50%, and so on. By keeping things predictable and consistent, I can store these power settings in the ESP32’s memory and use them to actively adjust motor output based on real-time wind speed data. No need for complex AI algorithms—just straightforward logic based on known wind-to-power ratios.

Training Data and Refinement

During operation, the ESP32 constantly logs wind speed data in simple CSV files. These are automatically saved and updated every hour so I can later analyze the numbers in Excel. The goal is to refine the system day by day. Every time the buoy completes a session and I bring it back to the dock, the data is saved. This means I can review the performance at the end of the day, tweak the wind-to-power ratios if needed, and feed that refined data back into the system for the next sailing session.

At the end of sailing sessions, I can see patterns emerge: at 10 knots, we need about 10% power; at 16 knots, closer to 60%. This ongoing learning process is simple but highly effective. Instead of training a complex AI model, I’m letting the buoy learn from real-world, real-time data—but in a way that’s manageable, transparent, and easy to adjust.

Where We Are Now

Thanks to the simplicity and reliability of the ESP32s, we’re theoretically getting closer to a buoy bot that can hold its position on station for long periods with minimal intervention. The RTK GPS still comes into play when drift correction is needed, but the ESP32-powered system is smart enough to stay locked onto its waypoint for longer stretches before any GPS correction is required. As a result, the buoy bot should show much better battery efficiency and overall reliability.

What’s really exciting is that this project has evolved into something more than just getting the buoy bot to hold a position—it’s now a dynamic system that learns and improves as we continue to test and refine it on the water.

I’m looking forward to continuing this journey and sharing the progress with you all. Stay tuned for more updates, and feel free to ask me any questions if you're curious about how it's all coming together!

Best regards and happy sailing,
Graham