If you want to explore the ocean, you face two persistent problems: it’s dangerous, and it’s huge. Humans need rest, and conventional boats need fuel. Propeller-driven autonomous vehicles are a good start, but their limited battery capacity limits their range. This reality is pushing researchers toward autonomous sailboats. A sailboat, powered by the wind, can patrol the seas for months, monitoring weather, conducting research, or exploring areas too hazardous for a human crew.
Making a sailboat steer itself is extremely difficult. The field is still in its early stages. However, research by Ruben van Tonder under supervision of Professors Jaco Versfeld and Japie Engelbrecht, confronts this challenge directly. It provides a practical, open-source blueprint for turning a common sailboat into a smart, autonomous vessel.
Why This Boat?
You can’t design a control system in a vacuum. You need a boat. Many past research projects built their own custom sailboats or used large, expensive models. This approach makes the research difficult to replicate.
Van Tonder took a different path. He chose the Dragonflite 95, a popular, commercially available remote-controlled racing sailboat. This choice is at the heart of the project. The boat is accessible and affordable. By building a system for this boat, the research becomes immediately useful to a wide community of hobbyists, students, and other researchers.
How It Works
The first major problem was that no public simulation model existed for the Dragonflite 95. Before you can teach a boat to sail, you must first build a digital version of that boat.
Part 1: The Digital Twin
You don’t test new autopilot code by just putting your boat in the water. The first and most demanding step was to build a “digital twin”, a detailed simulation model of the Dragonflite 95. It is a complex mathematical model built on physics:
- Hydrodynamics: How water moves around the hull, keel, and rudder.
- Hydrostatics: How the boat sits and balances in the water.
- Aerodynamics: How the wind hits the sail to generate force.
The thesis details the models for the forces acting on the sail, keel, rudder, and hull. To get the parameters right, Van Tonder used a mix of numerical estimates and practical tests. For example, he physically tilted the real boat and measured its “roll decay”, how it rocks back to a stable position, to obtain data for the simulation.
The final simulation is a 4-degree-of-freedom model. It focuses on surge (forward/back), sway (side-to-side), roll (tilting), and yaw (turning). It ignores heave (up/down) and pitch (front/back tilting), as those motions are less important for this type of sailing.
Before moving on, he had to prove the simulation was accurate. He performed tests on the physical boat, like “rudder step” tests (how fast does it turn?) and “surge dynamic” tests (how fast does it slow down?). The simulation’s results closely matched the practical tests. He now had a safe, reliable digital sandbox to build the boat’s brain.

Figure 1: Main components of a sailboat
Part 2: The Control System
With a proven simulation, van Tonder designed the control system. This “brain” is split into two parts that work together.
First is the Motion Control System (MCS). You can think of this as the boat’s muscle memory. It handles the immediate, physical tasks, namely steering and propulsion:
- Steering Controller: This system decides exactly how to move the rudder to achieve a desired heading.
- Sail Controller: This system adjusts the sail’s angle based on the apparent wind, trimming it to achieve maximum forward propulsion.
Second is the Guidance Control System (GCS). This is the navigator. It looks at the big-picture mission. It stores a database of waypoints (your GPS coordinates) and has a scheduler to decide which waypoint to head for next.
This is where sailing gets complicated. A sailboat cannot sail directly into the wind. To travel upwind, the boat must perform a zig-zag maneuver called tacking. The GCS contains a sailing mode state machine. This is the key piece that makes the high-level decision.
It asks: “Is my target waypoint in the no-go zone?”
If no, it uses a simple “cross-path controller” to sail in a straight line toward the target.
If yes, the state machine switches to the “tacking controller,” which begins the zig-zag pattern to make progress against the wind.
Part 3: Implementation and Testing
The entire system was designed to be open and accessible. The hardware is built from commercially available parts, with a Pixhawk 6C controller as the main computer. The software is Ardupilot, a popular open-source autopilot programme.
The new control logic was written in Lua scripts. This allows the code to be uploaded and modified on the Ardupilot software without having to rebuild the entire programme.
This code was first tested in a Software-in-the-Loop (SITL) simulation. This SITL runs the actual Ardupilot code and feeds it data from the digital twin. This test confirmed the scripts worked as intended.
Finally, the team took the physical boat to the lower dam at Bellville Golf Course to test each component. The steering controller successfully turned the boat to a new heading, performing much like the simulation. The cross-path controller successfully sailed a pre-planned zig-zag course of downwind waypoints. The tacking controller successfully sailed the boat both downwind and upwind, correctly switching tacks when it hit its programmed boundary.

Figure 2: Block diagram overview of physical system
Going Forward
The project was a success. It created an open-source, validated platform for autonomous sailing on an accessible boat. But van Tonder makes it clear that the research is not finished.
The physical hardware needs improvements. The sail servo should be upgraded to one that provides feedback; right now, the boat can command a sail angle but has no way to confirm the sail is actually in that position. The custom-built wind vane was also not sensitive enough in light winds and needs a redesign.
On the software side, the biggest step would be to move the control logic from Lua scripts directly into the core C++ code of Ardupilot. This would make the system faster and more reliable, and allow it to use Ardupilot’s built-in safety features. This move would also open the door to more advanced tacking maneuvers, such as dynamic tacking, in which the boat can adjust its course in response to real-time wind shifts rather than following a fixed path.
Read and download the full research: https://scholar.sun.ac.za/bitstreams/2ac41f9f-2789-4878-9001-05121ae5b596/download
 
			

 
		 
		