Building A Self Driving Boat ArduPilot Rover
Building A Self Driving Boat ArduPilot Rover
by Basement Engineering
You know what's cool? Unmanned self-driving The project was nished in two parts and the
vehicles. They are so cool in fact that we (my uni Instructable follows the same structure. I'm going to
colleagues and me) started to build one ourselves refer to the rst part as the "muscles" as it includes all
back in 2018. That is also why I set out this year to of the power electronics and the boats hull. Then I'm
nally nish it in my free time. going to go over the "Brain" which is a little box on top
of the boat, that contains the main controller and all
of the receiver transmitter stu .
Another Spoiler: We we were never able to build a The goal was not to turn it into a fully edged
measuring assembly for blue algea and t it onto a measuring boat, but to get all the systems up and
boat, as such assemblies are verrrry costly and are running and install an autopilot. It does not have to
usually housed in a 1mx1mx2m rack on a ship, which be perfect. I just wanted to see this boat drive itself as
is an impractical size for a 1m long boat. The new a proof of concept.
focus is to automatically and cheaply create depth
maps o the lake to enable the local biologist to see I am then going to pass the WORKING autonomous
how the lake bed changes over time. Right now boat on to the university for future projects such as
scanning it is very costly due to the necesary manual mapping the seabed. By the way, I was not alone. My
labor. friend Ammar, who was also in the project group back
in 2018 helped me with testing the boat.
A Do w nw a rds Spira l
Without further ado, lets get into it
Back to the story. In the rst two months of gathering
background knowledge and planning we considered
what such a boat would need: A hull, an electric drive
train, self-driving capabilities, internet controlability, ...
. That was when I decided that we should build almost
everything ourselves with a focus on autonomous
driving. This was a bad idea, an idea that was pretty
much doomed to fail and guess what it did? Exactly, 6
months later we had poured our time and sweat into
a huge RC boat, the Kenterprise (Infographic in image
4). On the way we struggled with limited money, no
available electronics and bad team management,
which I take most of the responsibility for.
Download
https://www.instructables.com/ORIG/F12/HLJ7/KFS9DYJO/F12HLJ7KFS9DYJO.mp4
step took about 3 weeks and involved days of manual which translates to sinking and the Star Trek
sanding to get a decently smooth surface ( 0/10 Spaceship "USS Enterprise". We all thought that this
would not recommend). After that we painted it in a name is absolutely suitable for the monstrosity that
nice yellow and added the name "Kenterprise". The we created.
name is a combination of the German word "kentern"
https://www.instructables.com/ORIG/FTV/A40L/KH0ZY78P/FTVA40LKH0ZY78P.pdf
https://www.instructables.com/ORIG/FUH/G0P6/KFWJNI5Z/FUHG0P6KFWJNI5Z.stl
View in 3D Download
https://www.instructables.com/ORIG/F8L/UEZO/KFWJNI60/F8LUEZOKFWJNI60.stl
View in 3D Download
https://www.instructables.com/ORIG/FSJ/2Y5D/KFWJNI61/FSJ2Y5DKFWJNI61.stl
Propulsion is cool, but a boat also needs to turn. There the boat unable to steer. The nal weak point is the
are multiple ways to achieve that. The two most hole for those wires. This hole was so close to the
common solutions are Rudders and di erential thrust. water, that reversing caused it to be submerged,
therefore ooding the interior of the hull.
Rudders seemed like an obvious solution so we went
for it. I modeled a rudder assembly in Fusion and 3D Instead of trying to x those issues, i removed the
printed the rudders, hinges and a servo mount. For rudders all together, closed the holes and went for a
the servos we choose two big 25kg Servos to make di erential thrust solution. With di erential thrust,
sure that the relatively big rudders were able to the two motors turn in the opposite direction to make
withstand the drag of the water. Then the servo was the vehicle turn. As the boat is almost as wide as it is
positioned inside the hull and connected to the short and the motors are positioned far away from
rudder on the outside through a hole using thin wires. the center this allows turning on the spot. It only
I attached a video of the rudders in action. It is quite requires a little bit of con guration work
pleasing to watch this mechanical assembly move. (programming the ESC's and the main controller).
Keep in mind that a boat that uses di erential thrust
Although the rudders were looking great, the rst test will dirve in circles if one of the motors fails. I might
drives revealed that the turning radius with them is have experienced that once or twice due to the
around 10m which is just terrible. Furthermore the current spike problem described in the step before.
rudders tend to disconnect from the servos, making
https://www.instructables.com/ORIG/F16/8ZU3/KFQU0S1J/F168ZU3KFQU0S1J.mp4
View in 3D Download
https://www.instructables.com/ORIG/FCZ/6KTI/KFWJO0JF/FCZ6KTIKFWJO0JF.stl
View in 3D Download
https://www.instructables.com/ORIG/F2N/YRM7/KFWJO0JG/F2NYRM7KFWJO0JG.stl
View in 3D Download
https://www.instructables.com/ORIG/F25/E000/KFWJO0JH/F25E000KFWJO0JH.stl
To me it seems like RC Components, such as the ones used in this boat, can be powered by pretty much anything,
ranging from a watch battery all the way to a nuclear power plant. Obviously this is a little bit of an exaggeration
but they have a fairly wide voltage range. This range is not written into the data sheats, at least not in Volts. It is
hidden in the S-rating. This rating describes how many battery cells in series it can handle. In most cases it refers to
Lithium Polymere (LiPo) cells. Those have a voltage of 4.2V when fully charged and a voltage of around 3V when
empty.
The boats motors claim to be able to handle 2s to 6s which translates to a voltage range of 6V all the way to 25.2V.
Although i wouldn't always trust the upper limit, as some manufacturers are known to place components on their
boards that can only withstand lower voltages.
This means that there is a wide variety of usable batteries as long as they can deliver the required current. And I
actually went through a couple of di erent batteries before building a proper one. Here is a quick rundown of the
three battery iterations that the boat went through (so far).
1. LiPo B a t t e ry Pa ck
When we planned the boat we did not have any clue how much energy it would consume. For the rst battery we
choose to build a pack out of the well known 18650 Lithium Ion cells. We soldered them into a 4S 10P pack using
nickel strips. This pack has a voltage range of 12V to 16.8V. Each cell has 2200mAh and is rated at a maximum
discharge rate of 2C (pretty weak) so 2*2200mA. As there is 10 cells in parallel it can deliver peak currents of just
44A and has a capacity of 22Ah. We also equipped the pack with a battery management board (more on BMS later)
that takes care of charge balancing and limits the current to 20A.
2. Ca r B a t t e ry
For my 2020 proof of concept, I decided to use a bigger battery. However, I did not want to spend any extra money
so I used an old car battery. Car batteries are not meant to be fully discharged and recharged, they should always
be kept at full charge and only used for short current burst to start an engine. That is why they are called starter
batteries. Using them as a battery for an RC vehicle signi cantly reduces their lifespan. There is another type of lead
battery that often has the same form factor and is specially designed to be discharged and recharged multiple
times called a Deep Cycle battery.
I was well aware of the short comings of my battery, but I wanted to quickly test the boat and the battery was old
anyway. Well, it survived 3 cycles. Now the voltage dips from 12V to 5V whenever I hit the throttle.
3. LiFe Po 4 B a t t e ry Pa ck
"Third time is a charm" is what they say. As i still didn't want to spend my own money, I asked my university for help.
Sure enough they had my dream battery all along. Our Uni takes part in the "Formula Student Electic" competition
and therefore has an electric race car. The racing team previously switched from LiFePo4 cells to 18650 LiPo cells as
they are lighter. So they have a stash of multiple used LiFePo4 cells that they don't need anymore.
Those cells di er from LiPo or LiIon cells in their voltage range. The have a nominal voltage of 3.2V and it ranges
from 2.5V to 3.65V. I assembled 3 of those 60Ah cells into a 3S pack. This pack can deliver Peak currents of 3C aka.
180A and has a max voltage of just 11V. I decided to go for a lower system voltage to decrease the motor current.
This pack nally allowed me to drive the boat for more than 5 minutes and test the self driving capabilities.
A w o rd o n ba t t e ry cha rg ing a ns s a f e t y
Batteries concentrate energy. Energy can turn into heat and if this heat takes the shape of a battery re, you've got
a problem on your hand. That's why you should treat batteries with the respect they deserve and equipt them with
the right electronics.
A battery management system prevents all of those things, that is why you should use them.
The Wiring for the muscle part is shown in the rst drop over the shunt resistor. The rest of the wiring is
image. On the bottom we've got the battery which just red to red and black to black. As the servos are
should be fused with an appropriate fuse (right now not really used anymore, they can just be ignored. The
there is none). I added two external contacts to cooling pumps are the only component of the boat
connect a charger. It would be a good idea to replace that requires exactly 12V and they don't seem to work
those by a proper XT60 connector. well if the voltage is higher or lower than that.
Therefore they need a Regulator if the battery voltage
Then we have a big battery switch, that connects the is above 12V or a step up converter if it is below that.
rest of the system to the battery. This switch has an
actual key and let me tell you, it is so satisfying to turn With rudder steering both of the ESC signal wires
it and see the boat come to life. would go to the same channel on the brain. However
the boat now uses di erential thrust aka. skid
The brain is connected to the batteries ground while steering, so each ESC needs to have its own separate
the ESCs and Servos are separated by a shunt resistor. channel and the servos aren't needed at all.
This allows the current to be measured through the
little orange connection as it causes a small voltage
The brain is a big box full of interesting electronics. Many of which can be found in FPV racing drones, and some of
them were actually taken out of my own drone. The rst image shows all of the electronic modules. They are neatly
stacked on top of each other using brass PCB stando s. That is possible because FPV-components come in special
form factors refered to as the stack site. From bottom to top our stack contains the following:
Po w e r D is t ribut io n B o a rd ( PDB)
This thing does just what the name implies and distributes the power. Two wires from the battery come in and it
o ers multiple solder pads to connect di erent modules to the battery. This PDB also o ers a 12V and a 5V
regulator.
Flig ht Co nt ro lle r ( FC )
Building a Self-Driving Boat (ArduPilot Rover): Page 11
The ight controller runs the ArduPilot Rover Firmware. It does a variety of things. It controls the motor controllers
through several PWM Outputs, it monitors the battery voltage and current, it connects to the di erent sensors and
input and output devices and it also features a gyroscope. You could say that this little module is the actual brain.
RC Re ce iv e r
The receiver is connected to a remote control. In my case it is a FlySky remote for RC planes that has ten channels
and even establishes two way communication so the remote can also receive signals from the receiver. It's output
signals go straight to the FC through a single wire using the so called I-bus protocol.
Vide o Tra ns m it t e r ( V T X)
The brain box features a little analog camera. The video signal of the camera is passed to the FC that adds an on
screen display (OSD) to the video stream, containing information such as the battery voltage. It is then passed on to
the VTX which transmits it to a special 5.8GHz receiver on the other end. This part is not strictly necessary but it is
cool to be able to see what the boat sees.
On top of the box are a bunch of antennas. One is from the VTX, two from the RC Receiver. The other two antennas
are the following components.
Te le m e t ry M o dule
The 433MHz antenna belongs to a telemetry module. This little transmitter is an input/output device that connects
the ight controller to the ground station (a laptop with a 433MHz USB dongle). This connection allows the
operator to remotely change parameters and get data from the internal and external sensors. This link can also be
used to remotely control the boat.
GPS a nd Co m pa s s
The big round thing on top of the boat is actually not an antenna. Well it kind of is but it is also a whole GPS module
and a compass module. This is what enables the boat to know it's position, speed and orientation.
Thanks to the growth of the drone market there is a wide variety of components to choose from for each module.
The most likely that you might want to switch is the FC. If you want to connect more sensors and need more inputs
there is a variety of more powerful hardware options. Here is a list of all the FC's that ArduPilot supports, there is
even a raspberry pi on there.
The brain gets its operating voltage straight from the to the back of the enclosure (see image 3).
battery. It also gets an analog voltage from the
current shunt and it outputs the control signals for To mount the stack to the box I used a 3D printed
both of the motors. Those are the external connection base plate. As the components (especially the VTX)
that are accessible from the outside of the brain box. produce heat I also attached a 40mm fan with yet
another 3D printed adapter. I added 4 black plastic
The inside looks much more convoluted. That's why I pieces to the edges to screw the box onto the boat
made the little wiring diagram in the rst picture. This without the need to open the lid. The STL les for all
shows the connections between all of the di erent of the 3D printed parts are attached. I used epoxy and
components that I described in the previous step. I some hot glue to stick everything to the.
also made a couple of extension cords for the PWM
output channels and the USB port and routed them
https://www.instructables.com/ORIG/F1C/BTCA/KFS9DYDK/F1CBTCAKFS9DYDK.stl
View in 3D Download
https://www.instructables.com/ORIG/FF9/PKV4/KFS9DYDL/FF9PKV4KFS9DYDL.stl
View in 3D Download
https://www.instructables.com/ORIG/F65/469D/KFS9DYDM/F65469DKFS9DYDM.stl
The Ardupilot Wiki describes how to setup a rover in great detail. Here is the Rover documentation. I am only going
to scratch the surface here. There are basically the following steps to get an ArduPilot Rover up and running after
everything is wired up correctly:
1. Flash ArduPilot Firmware to FC (Tipp: you can use Beta ight, a common FPV drone software, for that)
2. Install a Ground Station software like Mission Planner and connect the board (see mission planner UI
in image 1)
3. Do a basic hardware setup
calibrate gyro and compass
calibrate remote control
setup output channels
5. Do a test drive and tune the parameters for throttle and steering (image 3)
And boom, you've got a self-driving rover. Of course all of those steps and settings take some time and things like
calibrating the compass can be quite tedious but with the help of the docs, the ArduPilot forums and YouTube
tutorials you can eventually get there.
Here is a little list of the Advanced settings that I did for my particular hardware setup:
Channel 8 = FlightMode
Channel 5 = Arming/Disarming
Setup Current and Battery Monitor
BATT_MONITOR=4
Then reboot. BATT_VOLT_PIN 12
BATT_CURR_PIN 11
BATT_VOLT_MULT 11.0
Let's face it, RGB LED's are very cool. They look good, My FC does not support scripting but I put 36
they have increased performance in gaming PC's for addressable LED's on the outside of my brain box and
years and in case of an ArduPilot vehicles, they I want to see all of them light up. To achieve that, I put
actually serve a purpose. They show you what's going an Arduino Nano in between the FC and the LED's. To
on inside the controller. Green is good, red is bad and the FC it behaves like an I2C RGB LED controller, that
there is also a lot of color codes in between here is a is able to make an LED strip light up in a single color.
full list. On the other end it controls the 36 WS2812b LED's. My
custom LED controller is basically just a translator
ArduPilot Rover supports a variety of LED types, such that turns the smart addressable LED's into a dumb
as addressable WS2812b RGB LED's aka. NeoPixels. RGB strip. I attached the Arduino sketch.
However, it only supports a single LED out of the box.
It also supports scripting, so you can write your own I am pretty sure that there is a way to make multiple
LED control script to control more LED's BUT your WS2812b LED's work with just the ArduPilot FC. This
ight controller has to have at least 2MB of RAM, to was just the easiest way for me after googling around
support this feature. for an hour.
https://www.instructables.com/ORIG/F9C/G8JH/KFS9DU2E/F9CG8JHKFS9DU2E.ino
After all of that hard work, the boat is nally able to the creation of ArduPilot.
drive itself, meaning that I can click on the map in my
mission planner software to create a waypoint I hope you enjoyed this Instructable and I hope that i
mission, upload it to the boat and it will drive the pre- got you hooked on ArduPilot as well.
con gured route. Although the boat is not perfectly
tuned and is also not yet well tested (this will Thank you for reading and a big thanks to everyone
hopefully be done by future project groups), it is able who supported our project team back in 2019 and me
to follow simple routes and sends a constant stream during my 2020 upgrade. A special thanks to Ammar
of telemetry data to the ground station. for helping me.
To me it is just a magic moment when I ip the switch If you have got any questions, that this Instructable
on my remote control and the boat just starts moving didn't answer, feel free to leave them in the
on its own, without me touching the throttle stick. comments. I will try my best to respond and expand it
And the route is highly repeatable. I can just store my if necessary, although it might not be instantly. Also if
waypoint map in a little le and the boat will drive the you build your own ArduPilot rover share it. I would
same route again and again and again. This makes it love to take a look at it. And one more thing, if you
possible to sample certain points on surface of a lake liked this project, you might want to vote for it in the
and generate heatmaps over time. This can make 2020 Make it Move Contest.
trends, that usually happen too slow or on too big of
a scale to notice visible. Therefore the Kenterprise a Happy Making
great survey vehicle that is relatively easy to operate
thanks to the great work of all the people involved in
https://www.instructables.com/ORIG/FDL/AF4Q/KFWJN1XW/FDLAF4QKFWJN1XW.mp4
Superbe réalisation , cela aurait été super de pouvoir cartographier le fonds de l'étang avec le gps /
écho sondeur , (profondeurs , nature du sol , température...) . peut-être pour plus tard ? ...
Thanks, the university is actually planning on incorporating such a sensor in the future to use the
boat for autonomous lake mapping. There is also the option to attach some kind of external
assembly that takes water samples at certain coordinates to be analysed in a lab and used for
water quality mapping.
génial, cela devrait beaucoup aider le milieu halieutique , espérant que ce projet ne soit pas limité
aux lacs , et s étende également aux fleuves et rivières , véritablement et définitivement un super
projet , tenez nous aux courants de son évolution et encore merci pour le partage ....
haaaa aux fait petite sujétion : pourquoi ne pas utiliser des hydrojets au lieu des hélices ,
l’avantage est de pouvoir passer là où il y’a des herbiers sans risque d’entrave ?
un peut comme ce model que je suis en trains de rénover .
Excellent description of your project. You did so much more than just buy a bunch of modules on
Aliexpress (or similar) and screw them together. I enjoyed reading about the parts of the project
where you really thought you had found the optimal approach, but testing showed that it definitely
Building a Self-Driving Boat (ArduPilot Rover): Page 18
wasn't :-)
And yes, autonomous vehicles ARE cool. even with their many flaws :-)
There are a few Arduino spectrophotometers here on Instructables - if blue green algae have a
predictable absorption spectrum, a spectrophotometer like this might be able to measure their
presence... https://www.instructables.com/Science-With-Rainbows-Spectrophotometry/
Thank you. You are probably right, I had to do a teeny tiny little bit more, to turn everything into a
moving vehicle, even swim through cold water a couple of times, tha are not shown in the video .
But it was definitely worth it.
We actually had a very expensive algea sensor that was loaned to us by a professor, that uses a
similar approach. Algea are fluorescent. The sensor simply shines light of a certain wavelength at
the algea and measures the wavelength and intensity of the light that comes back to determine the
algea concentration.
I even designed and 3D printed a full measuring assembly with pumps, sampling chambers,
sediment filtering and so on. I attached a couple of renderings. But as we had limited time to
produce a working prototype and realized that we designed the boat to small for all of that stuff, we
had to scrap that idea. I am actually thinking about incorporating an additional chapter on "the tale
of the lost measuring assembly" into the Instructable .
Your video made me laugh, and that isn't easy to do. Excellent project, of course. One random
questions; those props seem quite small. How did you arrive at the correct size?
Thank you, that is a very welcome reaction . The prop size is most certainly not ideal. Their design
was mainly driven by coincidence and the limits imposed by the previously designed hull.
I simply took a look at the props, that came with the stern tubes for the boat. The ones that I
accidentially broke and remodelled them in Fusion. They were about 30mm in diameter and had 3
blades. I scaled them up as much as possible until they would almost touch the bottom of the hull
in my model. After the First printed pair of propellers broke, I reduced the diameter a little bit and
increased the blade thickness to 2mm.
The project has probably schown, that I am not much of a boat guy but they work surprisingly well.
wow! thats cool!
Thank you:)
Thank you. I hope it gets a bunch of people to play around with ArduPilot. Well knowing that the
first and second and third and the ... attempt to make a vehicle self driving might fail, but those
issues are to bei expected and they can get there eventually:).
I enjoyed this quite a bit. It's great that you revisited it and saw it through to completion. Also, your
video is fantastic and really quite funny. Well done all around! : )
Thank you. I'm glad that you liked it. Especially the Video . It would habe been a real Shame to
leave this project unfinished. It might have been a pain in the a** but it was super interesting.
Maybe i'll sommeday finish all of my others unfinished projects as well