top of page

Autonomous Sailboat

ENGS 147: Mechatronics // Professor Laura Ray

Team: Alex Brown, Andrew Schroeder, Elizabeth Treacy, Matt Wheeler, Audrey Landis, Erfan Azad

Project Objective

The objective of this project was to design and construct a 1 meter model sailboat that could be autonomously sailed around three GPS waypoints. 

I was responsible for developing, debugging, and implementing the sail and rudder motor control logic. I was also the primary design engineer for the foam and skeleton core for the boat's hull and determining the design and proper ballast for the boats keel.

Project Design and Fabrication

The design of the sailboat was broken into mechanical and electrical components. The design and fabrication of the hull and keel were my responsibilities in the first portion of the term. We used a ShopBot 3D routering machine to cut a 3D model of the foam core and a laser cutter to cut the skeleton sections. Once the boat was fabricated I developed the control system for the sail and rudder motors. I was also the lead engineer for the assembly and debugging of the fully constructed system.

Mechanical Overview

The sailboat design was based closely on the Racing Sparrow guide published by Bryn Heveldt. The design was modified to meet the International Radio Sailing Association's (IRSA) 1 meter specifications. Beyond the proportions used from the Racing Sparrow guide, the boat had a completely original hull, keel, and rudder construction. 

Figure 1 - Completer SolidWorks rendering of the final hull interior: includes the laser-cut plywood skeleton, rudder, and keel, the routered foam core, the 3D printed keel bulb, the laser-cut acrylic port-hole cover, and the motor mounts for the rudder and sails 

Hull Design and Construction

Figure 2 - SolidWorks model of the foam core (above) and the milling process of the final foam core (below). The core was split to accommodate the plywood skeleton and hollowed to allow space for the electrical and control components. The model includes the stock material and tabs attached to each piece so that it could be imported into the ShopBot 3D milling software

Figure 3 - Foam and plywood core. The foam core pieces were removed from the left-over stock foam and epoxied to the plywood skeleton

Figure 4 - Filled and sanded hull prior to final painting. Epoxy putty filler was used to fill any gaps and sanded smooth. A layer of fiberglass with a reinforcing strip along the spine of the hull was applied using wet layup techniques with fiberglass and epoxy resin

Figure 5 - Hull with keel attached. A slot for the keel was then cut in the hull and the keel and keel bulb epoxied to the hull

Figure 6 - SolidWorks model of the 3D printed keel bulb. The bulb is separated into three parts to fit into the printer and is hollow so it can be filled with steel BBs to provide the proper ballast to the sailboat

Figure 7 - Modified bulb and mounting bracket. The original bulb was not big enough to keep the sailboat upright when filled with BBs. A larger bulb with thinner walls was printed to accommodate more steel BBs 

Figure 8 - Painted hull assembly. Finally the boat was primed and painted using waterproof spray paint

Electrical Overview

The primary sensors needed for sailboat control were a GPS and a wind speed and direction sensor. The sailboat also needed a motor to control the sail and a motor to control the rudder. Most electrical components including the motors for the sail and rudder, the batteries, the microcontroller, and the power distribution board were housed inside the hull and accessed through a large watertight porthole. The GPS and the wind sensor were mounted on the top of the mast. The control system will be described in more detail in the next section.

Figure 9 - Interior of the sailboat. The hatch is sealed with an acrylic sheet clamped to the top of the hull

Rudder and Sail Motor Assemblies

Figure 10 - Mounting brackets for the rudder control (left) and the sail control (right). The rudder controlled a pully attached 

Power Distribution Board

Figure 11 - Power distribution board. Two twelve volt batteries provide power to the two motors and the microcontroller

Wind Sensor

Figure 12 - SolidWorks rendering of the wind sensor (right) the the completed sensor (left). The scoops and mounting plate were 3D printed and the direction sensor was laser-cut acrylic. The large hockey-puck looking thing is the GPS and the smaller black components are rotational encoders

Control Overview

 

Sailboat control was implemented with Dynamic C on a Rabbit BL2600 microcontroller board. Control with a co-state machine (exclusive to dynamic c) that read from the GPS and wind sensors, calculated the required path, and positioned the rudder and sail accordingly. A high-level diagram of the control system can be seen in Figure 12.

Figure 13 - A high-level diagram of the five co-states used to control the sailboat

Path Planning

An article from the Robotics and Autonomous Systems Journal by Petres, Romero-Ramirez, and Plumet titled "A Potential Field Approach for Reactive Navigation of Autonomous Sailboats" was used to generate a path planning algorithm for the sailboat. At a high level the potential field was used to determine the correct path to the desired GPS point. The potential is comprised of a global component, a local component, and a hysteresis related component. The global potential function creates a gradient that points towards the goal. The local component takes wind into account, resulting in higher potentials in the “no-sail” zones. An hourglass shape potential is created indicating the up-wind and down-wind sectors. Typically, the upwind no-sail zone extends about 45 degrees to either side of the direction of the wind.

 

Combining these potentials encourages tacking once the conic global potential approaches that of the wind-based. Finally, a hysteresis potential is added to account for the cost of tacking. This means that the more this function is weighted, the less the boat will tack. By combining the global, local, and hysteresis potentials, a total potential field is created that dictates the path of the boat.

The inputs into the path planning state are the current location, true wind direction, heading, and goal point. The state outputs the angle from the current heading that must be followed to reach the goal. This includes any necessary tacking or course adjustments. The path planning state also switches to the next waypoint when the boat gets within a specified distance of the current waypoint.

Figure 14 - Global potential field (left) and the wind-component of the local potential field (right). The spikes are due to the addition of poles that indicate the location of  obstacles, but were not included in the modeling for the sailboat presented here (image taken from "A Potential Field Approach for Reactive Navigation of Autonomous Sailboats")

Figure 15 - Comparison of the number of tacks with different hysteresis function weights. The frequency of tacks are reduced as the hysteresis potential is weighted less. Pink uses a constant of 3, blue a constant of 2, and black of 1 (image taken from "A Potential Field Approach for Reactive Navigation of Autonomous Sailboats")

Rudder and Sail Postion

Rudder position is determined based on a measurement of the actual heading of the boat provided by the GPS and the desired heading from the path planning algorithm. The rudder logic turns the rudder to the angle needed to align the current and desired heading, returning to straight once the headings match up. The rudder position will change once one of the headings changes from its current value because of a change in wind or a change in path.

 

The sail position is dictated by the relationship between the boat's current heading and the current apparent wind direction. The sail position changes depending on the degree the boat is traveling into the wind or away from the wind. 

Figure 16 - Sail position diagram. 5 sail positions were determined to be adequate to allow for proper boat navigation.

Rudder and Sail Motor Control

After characterizing the rudder and sail motors, control logic was determined using root locus analysis with MatLab's sisotool function. A proportional controller was determined to give the best response for both motors. The proportional controller allowed for a reasonable settling time, no overshoot (a vital requirement for the rudder), and relatively small error. More complicated controllers like proportional-integral (PI) or proportional-integral-derivative (PID) controllers  lead to consistent control effort saturation, slow settling times, and unacceptable overshoot.

Figure 17 - Root locus (left), control effort (green) and step response (blue) for the proportional rudder control system

Figure 18 - Root locus (left), control effort (green) and step response (blue) for the proportional sail control system

bottom of page