No description, website, or topics provided.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


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.