Why SY Solitwin?
During my industrial design bachelors program I was inspired to do a personal side project. I wanted to do something that combines many of my skills and talents: computers, sailing, microelectronics and physics.
On bigger sailboats you often experience autopilot systems, that work in a comparable way like SY Solitwin. More often than not, you also experience problems with these systems.
I planned to build a model version of this to deeply understand how one would build a computer system that interacts with physical things and forces on the water.
Key Features
Arduino controlled: I wrote all the code to connect the sensors inputs and convert this in steering output
Autonomous Sailing: The boat can sail in two modes: course (wind-angle) hold and direction (magnetic) hold
Remote controlled modes: The operators is able to switch the autonomous modes via remote control
For more information and resources about this project, check out these pages:
Development Process
My background in sailing helped tremendously when working on the project.
Once I bought the boat, I started gathering all the sensors and hardware
Some 3D modeling and printing was involved to fit the parts together
I wrote the code to let the boat do what I as a human would do: calculating steering angle based on wind direction and heel
Testing on the lake to see what my code does, implementing these findings, repeating the cycle until it worked
Takeaways
Working with hardware and sensors is harder than I thought. It is fascinating to learn about all these low level systems working behind the scenes of our high performance computer systems nowadays.
It was very interesting, albeit annoying to work with the combination of electronics and water and learning about things like the capillary action.
In the next steps, I will implement the GPS logic, so that this boat can navigate waypoint missions.
. . . Random facts from this project
Main Codefile
Here is the result of letting your favorite LLM Ai describe my approach to make this little boat sail itself:
1. Sensors
The boat uses three sensors:
- Wind sensor (MLX90393): detects the direction the wind is
coming from.
- Compass (LSM303 magnetometer): shows which direction the
boat is pointing.
- Accelerometer (LSM303 accelerometer): measures the
tilt (heeling) of the boat.
The raw sensor data gets smoothed to avoid jitter.
2. Control Modes
Two main modes are selected using Switch A:
Manual Mode
- The RC transmitter directly controls the sail and rudder.
- The system still shows wind, compass, and tilt data for the operator.
Autonomous Mode
-
The boat sails by itself based on wind direction.
-
Switch D selects the sailing style:
- Close-hauled (upwind)
- Beam reach (side wind)
- Broad reach (rear-side wind)
The code checks whether the boat needs to:
- Hold course (straight)
- Bear away (turn away from the wind)
- Luff up (turn into the wind)
It then adjusts the sail and rudder accordingly.
3. Core Logic
The system repeatedly:
- Reads wind direction and which side it hits the boat from.
- Decides what maneuver is needed for the selected sailing mode.
- Calculates the correct rudder and sail positions.
- Moves the servos to steer the boat.
In manual mode, steps 1–3 are replaced by direct user input.
4. Smoothing & Stability
All inputs—wind readings, RC commands, and magnetic values—are averaged over several samples. This prevents sudden jumps and makes the boat behave smoothly and predictably.
5. Steering Helpers
Two functions handle directional changes:
- luffUp() – turn toward the wind
- bearAway() – turn away from the wind
They calculate how strongly to turn based on how far off the
desired wind angle the boat is.
. . .Curves to calculate the compass heading
In order to get a heading (like 270° West) from the magnetic sensor, you need to interpret the raw sensor readings in x,y and z. These values constantly changed when moving the sensor in space.
Below you find two curves I measured and used for this purpose. The two curves were measured in 2 different locations in my house to account for magnetic deviation of surroundings.
In times before LLM Ai this stuff was an effort!
Main Codefile
Here is the result of letting your favorite LLM Ai describe my approach to make this little boat sail itself:
1. Sensors
The boat uses three sensors:
- Wind sensor (MLX90393): detects the direction the wind is coming from.
- Compass (LSM303 magnetometer): shows which direction the boat is pointing.
- Accelerometer (LSM303 accelerometer): measures the tilt (heeling) of the boat.
The raw sensor data gets smoothed to avoid jitter.
2. Control Modes
Two main modes are selected using Switch A:
Manual Mode
- The RC transmitter directly controls the sail and rudder.
- The system still shows wind, compass, and tilt data for the operator.
Autonomous Mode
-
The boat sails by itself based on wind direction.
-
Switch D selects the sailing style:
- Close-hauled (upwind)
- Beam reach (side wind)
- Broad reach (rear-side wind)
The code checks whether the boat needs to:
- Hold course (straight)
- Bear away (turn away from the wind)
- Luff up (turn into the wind)
It then adjusts the sail and rudder accordingly.
3. Core Logic
The system repeatedly:
- Reads wind direction and which side it hits the boat from.
- Decides what maneuver is needed for the selected sailing mode.
- Calculates the correct rudder and sail positions.
- Moves the servos to steer the boat. In manual mode, steps 1–3 are replaced by direct user input.
4. Smoothing & Stability
All inputs—wind readings, RC commands, and magnetic values—are averaged over several samples. This prevents sudden jumps and makes the boat behave smoothly and predictably.
5. Steering Helpers
Two functions handle directional changes:
- luffUp() – turn toward the wind
- bearAway() – turn away from the wind
They calculate how strongly to turn based on how far off the desired wind angle the boat is.
. . .Curves to calculate the compass heading
In order to get a heading (like 270° West) from the magnetic sensor, you need to interpret the raw sensor readings in x,y and z. These values constantly changed when moving the sensor in space.
Below you find two curves I measured and used for this purpose. The two curves were measured in 2 different locations in my house to account for magnetic deviation of surroundings.
In times before LLM Ai this stuff was an effort!
Main Codefile
Here is the result of letting your favorite LLM Ai describe my approach to make this little boat sail itself:
1. Sensors
The boat uses three sensors:
- Wind sensor (MLX90393): detects the direction the wind is coming from.
- Compass (LSM303 magnetometer): shows which direction the boat is pointing.
- Accelerometer (LSM303 accelerometer): measures the tilt (heeling) of the boat.
The raw sensor data gets smoothed to avoid jitter.
2. Control Modes
Two main modes are selected using Switch A:
Manual Mode
- The RC transmitter directly controls the sail and rudder.
- The system still shows wind, compass, and tilt data for the operator.
Autonomous Mode
-
The boat sails by itself based on wind direction.
-
Switch D selects the sailing style:
- Close-hauled (upwind)
- Beam reach (side wind)
- Broad reach (rear-side wind)
The code checks whether the boat needs to:
- Hold course (straight)
- Bear away (turn away from the wind)
- Luff up (turn into the wind)
It then adjusts the sail and rudder accordingly.
3. Core Logic
The system repeatedly:
- Reads wind direction and which side it hits the boat from.
- Decides what maneuver is needed for the selected sailing mode.
- Calculates the correct rudder and sail positions.
- Moves the servos to steer the boat. In manual mode, steps 1–3 are replaced by direct user input.
4. Smoothing & Stability
All inputs—wind readings, RC commands, and magnetic values—are averaged over several samples. This prevents sudden jumps and makes the boat behave smoothly and predictably.
5. Steering Helpers
Two functions handle directional changes:
- luffUp() – turn toward the wind
- bearAway() – turn away from the wind
They calculate how strongly to turn based on how far off the desired wind angle the boat is.
. . .Curves to calculate the compass heading
In order to get a heading (like 270° West) from the magnetic sensor, you need to interpret the raw sensor readings in x,y and z. These values constantly changed when moving the sensor in space.
Below you find two curves I measured and used for this purpose. The two curves were measured in 2 different locations in my house to account for magnetic deviation of surroundings.
In times before LLM Ai this stuff was an effort!