I have been asking a couple of questions here and around on autonomous boats and finally I decided to post the design and gather some feedback.

The idea is to build a small vessel capable of advanced autonomous navigation (on a given path), path optimisation and obstacle avoidance, being at the same time completely independent from fuel thanks to renewable energy sources, only relying on solar panels and thermoelectric generators. The displacement of the boat is around 2m, with a bulb at the bottom containing LiFePo batteries.

On the electronics side, I thought to split tasks into several units, made of microcontrollers running a RTOS (ChibiOs or FreeRTOS, I still have to choose) and a Single Board Computer with Arch Linux. Up to now the units identified are:

  1. High level navigation unit
  2. Low level navigation unit
  3. Power unit
  4. Engine unit

The High level navigation unit would perform the following tasks:

  • Path planning: global route calculation, considering shorelines, high-traffic routes and sea bathymetry to avoid groundings;
  • Obstacle Avoidance: using a forward-looking sonar for underwater obstacles, AIS for boats, a thermal imaging camera and maybe a small radar for other types of objects;
  • Local navigation: optimise the path taking into account the general predefined path (from the path planner), use Inertial Navigation and dead reckoning in case of GPS failure.
  • Local System Management: put sensors in sleep mode when they're not needed or in case of power shortages.

The Low level navigation unit is responsible for:

  • Local navigation
  • Local System Management
  • Communication: transmit and receive messages via radio link or satellite;

The Power unit contains a MPPT solar charger and a battery monitor and is responsible for: - Charging and powering the units; - Sensing the battery and informing other units on the charge status; - Disabling units to go in low power mode (one after the other).

The last unit is simply an interface to the engines, basically it's an ESC connected to the other units.

The backbone of the boat would be the well-established CAN Bus running NMEA2000 since almost all sensors use this protocol, and both the SBC and the uC would share messages via CanBus. Locally, the SBC will have a CanBus interface and a MessageBus where threads responsible for the aforementioned tasks will stream messages (inter-thread) and eventually publish frames on the Can Bus to interface with sensors (say put the Sonar in sleep mode) or the other units. Ideally in case of failure the boat should be able to navigate with just one of the two navigation units, obviously losing some functionalities.

My main concern is to reduce failure points so that a single error or broken sensor/unit would not compromise the whole system. Ideally there could be failsafe additions such as a Draculino, an Arduino running on RF and piezoelectric harvested energy to stream QRSS and morse position messages to nearby boats, but probably it's useless.


Fun fact: this design should be COLREG compliant due to the several anti-collision features and some small details I didn't mention such as the navigation light or the manoeuvre normaliser (to make the boat steer in a human-understandable way).


AutoNaut Limited in the UK Chichester have been developing a vessel similar to your ideas, it might be worth getting in touch with them.

  • $\begingroup$ Welcome to Robotics David Brown. Thanks for your answer but we are looking for comprehensive answers that provide some explanation and context. Very short answers cannot do this, so please elaborate on your answer, ideally with citations. Answers that don't include explanations may be removed. See How to Answer for more info. $\endgroup$ – Ben Nov 9 '20 at 14:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.