Tiny autonomous yacht

Tiny autonomous yacht

Similar projects worth following
A tiny autonomous yacht aimed at the MicroTransat challenge and other similar autonomous yacht challenges such as the Sailbot International Robotic Sailing Regatta.

The aim is to complete the MicroTransat Challenge autonomous division, but also to have fun and learn stuff along the way.

We start from the premise "small is beautiful".  Why small?

The MicroTransat Challenge is well known to be extremely physically tough and the major practical part of the challenge is to prevent mechanical parst fom breaking.

Small objects can be harder to break than large ones, since the moments and forces on the parts are smaller, therefore we aim to work out the smallest possible vessel capable of holding the required equipment and use that as the basis of the design.

So far we have been using Ardupilot Rover on an autonomous electric boat to master the basics. Currently we are constructing a basic autonomous sailing boat to learn more about the specifics of autonomous sailing on inland waters.

The basic autonomous yachet has now been tested.

  • Ardupilot Sailboat installed and tested on the V1 model yacht platform

    kwikius07/10/2023 at 14:21 0 comments

    Finally made some progress on the project, after a frustrating period of not being able to work on it.  I also now have access to  a large testing lake.

    I installed the same basic hardware as had been debugged on the electric boat. The important sensor on a yacht is the wind direction sensor. I had made an analogue wind vane using an AS5600 magnetic rotary encoder. I was using OpenPilot revolution flight controller and to add the wind vane, I had to further customise the hardware dat file for the Ardupilot Chibios HAL .  Since there are only 2 rc channels on the boat, I found it convenient to use one of the RC servo output pins as an analog input. This also provided 5v and ground on the Servo pins.  I use a BEC which provides around 5.5V . I used a MIC5205 LDO voltage regulator to get a stable 5V from the raw 5.5V input.

    I provided an Ac termination for the analog voltage both ends to give a dynamic impedance of 100 ohms looking in to the sensor and the flight controller input, to counter effects of rf noise.

     TODO Provide the circuit for the AS5600 sensor.

    The customised Ardupilot firmware loaned and found the wind vane without issues. The details of setting up Ardupilot sailboat can be found on the Ardupilot website, so I wo'nt repeat them here.

    I managed to get a video of the boat on a mission. As you can see ( though tis wasnt the first run), it worked well right out of the box.

    The main issue currently is that the boat isnt totally waterproof. I found some water in the boat after a couple of hours sailing. I don't know if this is coming in through one of the holes in the deck or through a hole somewhere below the waterline.

    One thing that has worked well is the balanced Rig. This allows use of a normal servo( though I used a powerfull servo) which sheets the sail in and out much faster than a winch and so tracks a varying wind much better. I plan now to have a go at tuning the PID controller that controls sheeting out the sail as the boat heels to try to make the action somewhat smoother. I suspect I may be able to raise the D term due to the repsonsivness of the sail servo.

  • Initial yacht finally rigged and nearly ready for testing at the lake

    kwikius06/29/2022 at 22:46 0 comments

    A sail was made from draughting film, with panels joined using standard double sided tape. The panels allow a little shape to be added to the sail, by gently pulling the seam at the luff.  The three corners were reinforced with extra layers of film stuck on with spray mount. The luff was reinforced with magic tape to form a bolt rope. Dressmakers eyelets were added to attach the sail to the mast. I found some grommets which were threaded on to the boom to allow the various lines to be adjusted.

  • Mast basically fitted on the V1 autonomous yacht platform

    kwikius06/15/2022 at 17:07 0 comments

    Progress on the autonomous yacht. Mast fitted in the mastbox. Need to mount a winch and rudder servo and make a sail and then can hopefully get it on the water in some shape or form! Th idea with the mastbox is to make it easy to move the rig in a fore and aft dimension.

  • Tuning the Ardupilot EKF3 on Zippy, the autonomous electric boat

    kwikius06/15/2022 at 16:53 0 comments

    Zippy is the foamboard boat thrown together to gain experience on Ardupilot, whose current version is based around the EKF3( Enhanced Kalman Filter V3) , a large and complicated mathematical object, that performs sensor fusion on the various sensors connected to it, and outputs data describing the attitude, speed and world position of the boat.

    I had previously used Ardupilot when the DCM (Direction Cosine Matrix) was the preferred algorithm used to perform the same function, but the EKF3 is designed to output a more precise result given the same data. However it is a much more complex beast than the DCM as I discovered.

    Over the last few weeks I had been getting issues with randomly not being able to switch from "Manual" mode into "Auto" mode in order to start a "mission". Sometimes, on attempting to switch auto mode, I would get the error message "Mode change failed" and would be kept in manual mode.  After some random period of time however, I would get the message "EKF anomaly cleared" at which point I would be able to switch into auto mode and run the mission.

    Only recently have I had time to investigate this issue. It took a while, however there were 2 sensor related problems. The first was the compass on board the OpenPilot Revolution flight controller which was very noisy (diagnosed using APM Planner's graph function), even without the motor switched on, but very bad with motor switched on. I solved this by adding an external compass , which involved creating a custom version of the Chibios firmware to get at the external I2C port ( which therefore also  necessitated resiting the GPS uart). I have to say doing the custom build was quite simple and only involved modifying the hardware description file. On uploading It to the flight controller, it worked first time, finding both the external compass and the UART.

    Calibrating the external compass however was frustrating. I initially tried to do it manually, but just couldn't get it moving correctly as I turned the boat around.  However I eventually managed it by just getting Ardupilot Mission Planner working in Linux ( involving installing Mono) and just letting the auto calibration do its thing.

    After getting the  compass calibrated, I also started searching for the "Mode change failed" message in the source code. After some grepping, this eventually led me to the Flags output which appears in APM Planner as one of the myriad variables in "Status" tab ( APM planner is my only available GCS when running on 32bit as I do at the lakeside/field) as a raw number. When the flags change from 169 to 831 then this indicates that the EKF3 is happy with the global position or IOW had given in and settled for what it was being served!, so this was the solution to the mystery of the last few weeks.  I also made changes to the barometer since EKF3  was also showing a large "vertical position variance", first modifying the Ardupilot parameters so that the EKF3 ignored barometer  as a height reference and used the GPS and second , adding a piece of sponge foam as a low pass filter for the barometer input.  

    Anyway the lesson learned is that after starting up it is necessary to watch the status flags in the GCS and wait for them to set correctly and only then can the boat be considered ready to go.

     I hope these changes have performed a tune of the EKF3 which  I hope to test out very soon.

  • autonomous yacht mastbox fitted

    kwikius05/25/2022 at 17:22 0 comments

    I decided to concentrate on the unstayed rig type for simplicity and  I am hoping to try out at least a balanced una rig with a "Z bend" mast ( similar to the one on Avalon)  and a wing sail  (used very successfully by SailBuoy on a previous Microtransat).   On previous model yachts I used to struggle to figure out where to place the mast. I have seen some models with two or three separate mast slots, hence the ultimate solution, the  mastbox., which  allows adjustment of the fore and aft mast position over a wide range. Each rig fits in place using a "cassette", ( basically just a rectangular block) which slides into the mastbox.

    Here is a pic of the mastbox being glued in position. To get it vertical, firstly the boat was clamped to the bench by the keel and adjusted so that the keel was vertical checked with a spirit level placed on the side of the keel.  The mastbox itself is a 20mm wide slot, so I inserted a 20mm diameter  tube into the mastbox slot and then checked that was also vertical side to side using the spirit level.

  • Optimising the electronics and autopilot on the autonomous electric boat

    kwikius05/13/2022 at 08:45 0 comments

    Up to now I had very poor range with my RC transmitter (which uses in band telemetry from the receiver for things like battery voltage and RSSI) giving me warnings about poor RSSI at the receiver onboard the boat, while being only a short distance away. Last session I swapped out the RC transmitter and have not had range issues since, so it appears it was the RC transmitter which was the cause of that problem.

    I am finally starting to figure out how to analyse the logs produced by Ardupilot to diagnose why the autopilot sometimes refuses to change into "Auto" mode from "Manual" mode. (In auto mode the boat follows a pre-planned course consisting of a list of waypoints.)

     The problem has been that sometimes Ardupilot would refuse to change from "Manual" to "Auto"  with the error message "Flight mode change failed", which doesn't help much!

    Luckily though Ardupilot sends large amounts of realtime data over the telemetry link and the data is received by the GCS ( Ground Control Station) running on a PC at the bank and saved in a log file. The logs can be viewed in "Apm Planner" , my GCS application, and am finally learning how to navigate the data.

    Currently it looks like the issue may be "compass variance". The compass I am currently using (HMC5883L) is mounted on the Flight controller PCB quite close to the servo outputs and that isnt the best place. It may be necessary to disable the onboard compass and mount an external one, possibly in the bow of the boat, away from the power electronics. First though, I should probably retry calibrating the compass and see if that helps.

  • autonomous yacht keelbox

    kwikius05/11/2022 at 09:32 0 comments

    Keelbox done for autonomous yacht. Not too pretty but feels quite sturdy.

    It may seem a faff to fit a detachable keel, but being able to remove the keel makes it much more convenient to work on the boat on the bench, as well as making it easier to transport, so saving time in the long run I hope. 

    Next task is to fit a mast box to allow the fore and aft position of the mast to be adjustable. This allows to adjust the balance of the rig to correct " lee helm", where the boat tends to turn away from the wind or " weather helm" , where the boat tends to steer towards the wind,  and also allows to balance the boat with different rig sizes, types and  styles. The mast box is just a rectangular box securely glued in place in the boat, into which you can fit a "cassette" holding the particular mast step for the rig you are using.

  • Initial autonomous sailboat

    kwikius05/04/2022 at 22:18 0 comments

    Work in progress on the (1st) sailing version. I bought a  2nd hand RC model yacht and unfortunately after inspecting inside the hull taking it sailing in a bit of wind,  , there was a lot of water in it. On looking at the keel which was made from 3mm metal plate, I could see a hairline crack along it both side where it joined the hull. Unfortunately access to the boat was very restricted to see what it looked like inside. There was a hatch in the deck under the headsail which had been glued down. On removing it I found the front of the boat had been stuffed with bubblewrap! . On removing that I saw a large fillet of car body putty along the keel hull joint which was probably an attempt at repairing the keel hull joint , probably by poking fingers or something down the forward hatch. So I decided to cut off the deck to get at the keel to remove the large fillet of putty obscuring the joint, which ultimately also meant chopping out the keel and the mast tube, which was attached to the front of the keel. Satisfying result though I could have just bought a kit!Anyway keel removed, I decided to add a keel box so that the keel could be removed in future.  Made some rough mouldings of the top of the keel.
    Next task is to join the halves and  fit that assembly into the hull.

  • Building an electric boat to learn about the basics

    kwikius05/04/2022 at 10:36 0 comments

    Part one of the project. I decided to use ArduPilot Rover as the software ecosystem , at least initially, since it is very mature and has already got autonomous sailing functionality built in. Before starting on the sailing boat, I decided make an autonomous electric boat to master the basics. The electric boat was actually constructed from foam board and I didn't initially expect it to survive very long, but in fact it has survived for quite a while now. Pic attached. I called the boat Zippy. Here is a video of Zippy in action.

    The hardware for Zippy consists of :

    • A Flight controller of the type used in quadcopters. In fact Ardupilot is very good in the range of flight controllers it will work with. I used an OpenPilot Revolution ("Revo") which I was given a few years ago and never used. I should probably get a flight controller with an SD card at some point, though it should be possible to attach one to the  Revo via a spare SPI port that is used for the onboard telemetry link that was never fitted. The Revo has a 3d gyro, 3d accelerometer, a 3d compass and a barometer, and an STM32F4 mcu. Rover is much less computationally expensive than  a quadcopter and is certainly adequae for the task. Since power use will be critical, it may be necessary to go to a lower power microcontroller such as the STM32L4
    • Telemetry radio. This is used to communicate to the ground station software. I used a pair of 3DR "Sik" telemetry radios.
    • GPS. Ardupilot will automatically figure out what GPS is attached. Currently I believe it is a NEO-6M, but it would be worth trying later ones which should provide more accurate position, especially since the pond I am currrently using for testing is quite small.
    • RC system. I used an Frsky D4R-II receiver, since the Revo is only set up to use PPM RC receiver input. I hope to try to get it to accept the "SBUS" inverted serial protocol at some point too.
    • Electric motor. I used a 1000kV "inrunner" brushless motor with a P35 style prop. Actually this is a lovely motor for this task and I would love to get another one. I think it is a Keda motor.
    • Electric speed controller. Ideally a boat speed controller should have reverse but currently an aeroplane speed controller is used. Lost the label, but think it is a Turnigy 20A speed controller.
    • Voltage converter. The Battery used is 12 volt so an efficient way to convert to lower voltage sis required to power the flight controller, rc receiver, GPS etc. I originally used the output of the  speed controller but it eventually overheated and expired  on me!
    • Battery. I used a 2200 maH 3S  "Lipo" battery. These size of battery are ubiquitous and provide a good running time on one charge. I

    Zippy has been out sailing on the lake quite a few times now. I have been using the APM planner as the Ground station. It looks like APM Planner may be near obsolete, but I am using an old 32 bit netbook at the lake with the Desktop version of Raspberry Pi OS installed. I will have to try the alternative Mission Planner, but it requires Mono to run on Linux and is another hurdle. There are other GCS about too. I may also try QGroundcontrol.

View all 9 project logs

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates