Pilothouse - Robotic Sailboat
The goal of Pilothouse is to make an open source robotic sailboat that can autonomously navigate and sail itself long distances, and to prove that this can be done using the latest web technology: Node.js.
Additionally, robotic sailboats make the perfect platform for environmental sensing the world's oceans.
Pilothouse has a number of awesome features, including:
- Robotic sailing, with 100% all natural renewable energy.
- WiFi based monitoring with remote GUI.
- Full Ubuntu Linux environment onboard.
- Advanced sensors, including the latest GPS and MEMS.
- Potential for expansion into a fully autonomous ocean going science vessel.
- Javascript Node.js based control system.
- Open source software (GitHub).
At this time, this project is just starting to get into autonomous control. As part of the Pilothouse project the base station displays all relevant boat state information, sent over WiFi.
All code is hosted in the project GitHub repository:
Order Parts
You'll need some pieces to build a robotic sailboat. My total BOM cost is $1063.33 + S&H. Depending on how you configure your boat you may be able to reduce the cost some.
The boat is a ProBoat Regazza 1 meter sailboat, sold for $349. Total mechanical cost is $533.61.
The main controller is an Intel Edison mounted on Sparkfun's really cool Blocks. I've also added a GPS, a wind sensor (via US Digital's MA3 absolute magnetic encoder), and battery management. Total electronics cost is $529.72.
You can get the full BOM, with links to product pages, here: https://github.com/srlmproductions/pilothouse#bom
Watertight Hatch
The stock hatch on the Regazza is just held on with magnets, and is not at all water tight. With all of the very expensive electronics inside I wanted to make sure that as little water got in as possible.
The hatch is a piece of Lexan held to the deck with four stainless steel screws. A tight seal is achieved with two layers of epom rubber weatherseal. One layer is around the hatch opening, and the other is on the Lexan. When the thumbnuts are tightened down the seals squish together nicely.
The hatch is held on by four bolts, and a seal is achieved with a ring of epom rubber weatherseal.
Modify the Inside of the Boat
Hacking the Center Console
I've modified the inside of the boat a bit for three new features: an improved sheeting system, a water tight hatch, and an internally mounted Pelican case.
Before any of the other modifications, I hacked at the center console to make it shorter. This provided enough room to slip the Pelican case for the electronics into the stern.
Sheeting System
The sheeting system on the stock boat uses a witch that collects the jib sheet on the top spool, and the main sheet on the bottom spool. While this works ok, it's prone to problems with slack. Based on the options presented by the AMYA, I've implemented a continuous loop sheeting system.
http://www.theamya.org/hints/images/drumcont.jpg
My implementation essentially follows. Instead of pulleys, which are difficult to find at this small scale, I used steel rings.
The two sheets require approximately 18in of travel from full in to full out. To get that kind of distance I mounted the rings an aluminum U channel, and mounted it so that it passes through the center bulkhead and into the bow of the ship.
The sheeting system is visible at the top of the image (lines are green), with the return line going from the O-ring on the left, through a tensioner O ring and to the winch. The tensioner is a piece of elastic, doubled back on itself to get the required length.
For all lines I've used 65lb test Spectra fishing line. It's strong and doesn't have any stretch.
The sheeting support bar is on the left, and the sail winch is the black drum on the right. The continuous loop tensioner is the middle.
One return pulley (ring) is visible on the left. To tighten the sheets the winch pulls the loop clockwise. The sheets are attached to the knot in the middle of this view, and run to the ring on the left and then out the the respective sail.
Build the Electronics
The brains of the system is the Intel Edison, a dual Atom core processor made for embedded systems. It's running a variant of Ubuntu built for the Edison called Ubilinux.
Sparkfun has come up with a really cool "block" system for the Edison. They've designed a number of common peripheral blocks that can be stacked much like Arduino shields. For Pilothouse, I've used the following stack:
- EdisonBase
- BlockSD card block
- I2C block
- GPIO block
- PWM block
- 9DOF block
There are two servos on the boat: a multi-turn winch servo to control sail angle and a rudder servo.
Pilothouse uses a standard LSM9DS0 from ST, mounted on a Sparkfun block. The LSM9DS0 offers a 3 axis accelerometer, a 3 axis gyroscope, and a 3 axis magnetometer all in a single package.
The GPS is a U-Blox M8 series GPS with a large patch antenna from CSG Shop. I've been very pleased with the performance of this unit, even in difficult conditions like Boston.
Add the Wind Sensor
The wind sensor uses the MA3 absolute rotary encoder from US Digital. This sensor outputs a PWM pulse whose width is proportional to the position of the encoder shaft. The main advantage of this sensor over a potentiometer is the ball bearings, with allow for sensing even the lightest of winds.
The only problem is that the Intel Edison doesn't have a PWM input, and there doesn't seem to be any I2C PWM input chips available. To overcome this I'm using a Pro Micro Adruino to read the PWM and hang off the I2C bus. For the wind vane itself I'm using a product from the Western Reserve Model Yacht Club (link) with the addition of a bit more surface area.
The wind sensor is mounted on a piece of aluminum angle, with a stainless steel bolt through the mast.
Setup the Electronics and Base Station
This project is constantly in development, so check the repository for the latest code and setup procedures.
https://github.com/srlmproductions/pilothouse
Essentially what's involved is installing Ubilinux, setting up the WiFi, building Node.js 0.12, and installing all the Node packages.
Go Sailing
Have fun! Make sure to try it out dockside with the RC remote so that you won't have to go swimming afterwards.
Look for a day with light to moderate winds. Too light, and you'll be bored out of your mind. Too heavy and the boat will have a tough time tacking.
The best place to sail is a lake, pond, or very slow river. Don't sail in a place with lots of water plants: they'll get caught in the keel and rudder and make it impossible to sail. You'll have to swim out and recover your boat.