Created: 2014-05-19 03:46
Updated: 2018-12-11 04:59
License: mit


ArduSailor is an autonomous sail boat project based on the Arduino platform. Using a modified Arduino Mega board (schematics under layout), ArduSailor can be programmed with a set of GPS waypoints that it can then sail to.

The platform is built around a simple, two-servo sail boat design, with a winch servo for sail plan control and a rudder servo for steering. The circuit layout included is for a modified Arduino Mega 2560, which includes:

  • A 9DOF IMU (an Invensense MPU9250)
  • A break-out for a weather vane (this circuit is also included)
  • A microSD card
  • Two servo breakouts
  • Three power regulators (one to provide 6V for the servos, one to provide 3.3V for the rest and one MPPT solar charger for the LiPo)
  • A GPS chip (Venus 638FPLx)
  • A breakout for a UART-based camera module (currently unused)
  • A battery input (currently running from a 3S LiPo battery pack)
  • A breakout for the main UART port for logging (on my build I have this routed to a 433MHz radio module)
  • ICSP header for programming

The included firmware operates off of a list of GPS waypoints, and is a very rudimentary implementation of a greedy algorithm for navigation. The pilot simply tries to point the boat as close to the next waypoint as it can, without falling into irons. Tacks are limited by a timer. A recent addition is stall control - if boat speed falls below a certain limit, it will fall off to beam reach (position itself with the wind coming in at a 90 degree angle) until it comes back up to speed. There is no cross-track correction


I've built several iterations of the circuit board, and it works reliably. When at speed, the navigation works .. somewhat. My current testing is in a sub-optimal body of water (a long, narrow channel), making certain tests difficult.

Here's what I need to tackle


  • Finish debugging basic piloting and navigation.
  • Add cross-track correction
  • Add heel compensation
  • Add camera module support


  • Improve the navigation algorithm to include no-go zones
  • Add wind speed sensor (hw)


I'd like to replace the pilot code entirely with AI. This should be reduce-able to an optimization problem... but that's a bit beyond me right now.


Cookies help us deliver our services. By using our services, you agree to our use of cookies Learn more