Hackerboat systems & software, part 1 of several

Hackerboat systems & software, part 1 of several

Our launch last fall proved that the Hackerboat hardware was working fine (other than the GPS) but that the software needed a complete rewrite. We've been working on that for the last few minutes. Debugging is a bit on the slow side, but we anticipate being ready to get back in the water in the next […]

Payload hull building!

Payload hull building!

JonM and I started construction on the payload hull tonight for AHAB3. We had a pretty easy job figuring out where to put everything, given that we only have one camera, a transmitter and some batteries. Then we cut some pink foam to rough size - 3 8" x 12" pieces of 2" foam and […]

High Speed Coin Shrinking

High Speed Coin Shrinking

We recently had a chance to work with the fine folks at Intellectual Ventures to quantify some of what goes on with our coin shrinker. Using a bunch of neat gear (including an extremely high speed camera), we were able to learn all sorts of things about our amazing chamber of shrink. Here is some […]

Hackerboat painting, part 1 of 2

Hackerboat painting, part 1 of 2

Last weekend, Jeremy, Wim, Alex, and I got together to paint the Hackerboat. The original plan was to get it all done during daylight hours last Saturday... but the filling and sanding steps took much longer than anticipated, so we only got to primer. Just that made a major improvement in the boat's appearance ahead of […]

Alex sanding the boat, early in the process.

Alex sanding the boat, early in the process.

Last weekend, Jeremy, Wim, Alex, and I got together to paint the Hackerboat. The original plan was to get it all done during daylight hours last Saturday... but the filling and sanding steps took much longer than anticipated, so we only got to primer. Just that made a major improvement in the boat's appearance ahead of MakerFaire next month.

The paint I bought for the job was Blue Water Mega Gloss topside paint. It's a single-part polyurethane marine paint. Since this iteration of the Hackerboat won't spend long periods in the water, we're going to do the whole thing with topside paint. It's not too horribly expensive -- about $18/qt. I want to paint the boat safety orange (so it can be seen easily), while Wim would like to paint it with dazzle camo. So we compromised on safety orange and black dazzle camo. I picked up one quart each of black, bright orange, and white primer.

The polyurethane paint is supposed to be very thoroughly mixed before use. Wim and I, in a bout of optimism, stirred both the primer and the orange paint. When the orange paint dried on the stir stick afterwards, we discovered that Blue Water's color department believes that ketchup is bright orange. I hope it will look more like orange over primer, but I am not all that hopeful.

The fiberglass work we did on the hatch coamings a couple of years back was pretty rough, so the first order of business was to get it filled and sanded. We went through about 3/4 of a gallon of Bondo getting the topsides in somewhat paintable shape. We probably could have used the rest of the gallon, but it was getting late and we wanted to get the primer on before the end of the day. There's not much description here because the tubes are full of tutorials on how to do this and it's not the world's most interesting work.

Bottom primed

Bottom primed

Once we'd gotten the last coat of Bondo on the boat, we immediately flipped it over to sand and prime the underside. This was nice and uneventful, and it made the bottom of the boat look less busted immediately.

The can of primer had led us to believe we'd be waiting a couple of hours before we could flip it over and finish sanding the Bondo. This turned out to be very pessimistic -- the first primer we laid down was dry to the touch by the time we were done priming the boat. We still waited half an hour (and time for a picture) before flipping the boat.

Wim and Alex priming the boat.

Wim and Alex priming the boat.

We masked off the hardware we couldn't remove and primed the topsides. It went on as quickly and painlessly as the primer on the bottom, and was mostly dry by the time we finished the coat. It took about 3/4 of a quart can to do the whole topsides. I think this is because we did not thin it; however, it is clear from that experience that we will have to thin the orange paint if we want to get two coats out of the can. We'll do the stripes in black over that as a third coat.

The boat looks better even with just the fill and primer; I am looking forward to finishing up the paint job today.

Filled and primed

Our launch last fall proved that the Hackerboat hardware was working fine (other than the GPS) but that the software needed a complete rewrite. We've been working on that for the last few minutes. Debugging is a bit on the slow side, but we anticipate being ready to get back in the water in the next couple of weeks. We will be at both MakerFaire Bay Area and Toorcamp with the Hackerboat in tow. This weekend, we're going to put some paint on the boat to it looks a bit better in preparation for the next launch and for public show. There will be pictures! But let's talk about the systems in preparation to talk about the software.

The current electronics configuration of the Hackerboat has a bit of a Rube Goldberg quality. The underlying intent is to build a system out of relatively small modules that can be added to without major hardware surgery. Here's a schematic diagram of the various bits and pieces. Dark red is power and power control, green is computers, yellow is propulsion, orange is communication, blue is sensors, and purple is non-propulsion actuators.


The first thing to notice is that we have two on-board computers -- a Beaglebone and an Arduino. The intent is that the the Arduino will handle all of the low-level real time functions while the Beaglebone handles all of the higher-level navigation, obstacle avoidance, and mission functions. Among other things, the relatively more power hungry Beaglebone can be put into a low-power sleep mode for extended periods, especially while in the open ocean. On the flip side, we can use the Linux environment and fast processor on the Beaglebone to support all manner of cool navigational modes and mission applications.

The communications is likewise a layer cake. Our ship to shore radio is a Ubiquiti 900 MHz Ethernet bridge. The shore side radio has a directional antenna built in to the radio and the ship side uses an external antenna on the mast. For internal data on the boat, we use a standard WiFi router. This means we don't have to futz with waterproof Ethernet cabling (expensive and troublesome)... and we can add new equipment to the boat for the cost of a WiFi interface.

Right now, the sensor fitout is very basic. We have an IMU/magnetometer combo for heading, a GPS for position, and start/stop buttons on the outside of the boat. We're planning to add cameras next, and of course we have the option to mount any sort of instruments we like for mission requirements later.

Next update will be painting, and after that I will get into our software architecture.

So, this is about a month after the fact because my blogging work ethic sucks.

Short version: On Oct 18, we put the Hackerboat in the water, drove it around a bit on a tether, and then recovered it. It didn't leak a drop and the motor ran beautifully. Therefore, we have a solid mechanical and electrical platform but we need to rework the software.

Long version:

Lots of people showed up to help, which was awesome! Jeremy, Alex, Ratha, Wim, Myles, Volty, Lexie, Mark, Alicia, Ben, Katherine, and Peter Novotnak all showed up to help.


Improved battery and control system mounting. The warning horn and backup GPS tracker are also visible.

Prior to this launch, we added a ballast bulb to the bottom of the boat and stripped off the solar panels and frame. This, along with proper battery anchoring, appears to have completely solved our previous stability issues.

Prepping the boat

Jeremy, Mark, Wim, and Pierce prepare the boat for launching.

We started the day by finally squashing an intermittent power bug. The status lights were powered from the 5V rail on the Arduino. This was fine when USB power was plugged into the Arduino, which is the usual condition when testing. When it was powered exclusively through the Vin pin, the extra current draw from the lights was enough to brown out the 5V rail some of the time but not always. Once we figured that out, we switched it over to the high current 5V supply we have to power the Beaglebone and all is well. In future revisions of the electronics, the status lights will have their own power circuit.

Our onboard GPS was not responding. We suspect this is due to a wiring problem, but since this was a manual-only trip, we put that on the squawk list.


With the power bug squashed, we loaded up and headed out to the boat launch. Upon arrival, Alex hauled the tether (500 feet of floating line) out to the end of the dock and tied it off to the dock. We discovered that we needed a power strip (one inverter, two AC loads), so Volty and Mark headed up to his place to get one. We unloaded the boat and once we had the boat down on the ground, we installed the ballast bulb and batteries. Once the power strip arrived, we did a comms check. We had to power cycle it several times to get everything to come up, but once it did, we rolled the boat down to the water on the dollies. The dollies worked fine on smooth pavement, but once we reached the rougher part of the ramp, we had to pick the boat up and carry it the last twenty feet or so. Using a pair of 2x4s made it much easier to carry than last time we did this. We will be adding some proper grab ropes before the next outing.


In the water!

Mark and Ratha guide the boat out from the ramp.

Ratha brought a recently repaired drysuit along to test, so she got in the water with the boat and was a huge help in keeping it under control. We got the motor deployed and moved the boat out to the end of the dock. We ran through the arming sequence and got ready to send it out and... no throttle response. So we disarmed it, restarted QGroundControl, cast some runes in its general vicinity, etc, etc... and the second time we had throttle control. The boat took off at a very solid clip (estimated 5-6 knots; we need to get the velocity profile off the the tracker before we know for sure).

We had some issues with visual steering control. The boat itself attempts to steer a magnetic course with a PID loop, and holding down the left or right button on the control pad shifts that course left or right at a pre-determined rate. We didn't have enough feedback to make this work well for control, so the boat ended up wandering a bunch. It also lacks any steering control whatsoever when the prop is not turning... I suspect this caused the integral term in the steering PID hitting the stops when the prop is not turning and it can't do anything. In the future, I will freeze the loop when the throttle setting is zero. More steering authority would also be nice, so I will be swapping the gears on the steering servo.

You can check out our drunkard's walk on Google MapsCAM00330

The boat wandered out to the point where the concrete structure on the north side of the boat ramp blocked the signal, and we hauled it back to shore with the tether. We pulled it out of the water, carried it back to the truck, and stowed everything.

Despite its steering issues, the boat floated very level and handled the small waves from boat wakes with no problems. The inside of the boat was bone dry, so we are solid there. We will probably need to add more ballast for next time, however. I suspect that a big part of the improved stability was also improved battery mounting.

During the testing and launch, Jeremy noted that the network seemed to occasionally drop for a second or two every so often, confusing both QGroundControl and us. This will require more work to isolate and diagnose.

Also, QGroundControl crashed at the end and dumped all of our motor current data. Jeremy and I are both entirely done with dealing with it. Our plan for the future is to replace QGroundControl with a webapp served from the Beaglebone and use REST for transmitting commands to the boat. This does not seem to be something anyone else has done with mobile robots, so I expect we'll be writing more about it if it works. You can check out our design documents for it in the restful-refactor branch of our project Github repository.

Since the weather in Seattle is now too cold and rainy for launching, we've got a few months for refactoring. We're aiming for a triumphant return to Toorcamp 2016 at Doe Bay in June.


Posted in: The Lab  

Last night, Jeremy showed off the bot he built around the Arachnio! The cool thing about it is that you can connect to it over WiFi from your phone or laptop and it will serve you a set of Javascript buttons that control the bot. It's still a work in progress, and it may get an SD card slot in the future to enable it to serve up a better joystick than it does now.

You can download the source code for the bot from Github.

Please support the Arachnio on Kickstarter!

The Arachnio is something I've been working on for a few months, and it's now up on Kickstarter! The subject line is the elevator pitch -- it's the first Arduino Micro variant with onboard WiFi, via the increasingly popular ESP8266. It's pin and software compatible with the existing Arduino Micro, and only slightly larger to accommodate the antenna. Naturally, it's entirely open source (unlike other Arduino variants with on-board WiFi, such as the Yun).



The Arachnio

The Arachnio

Putting WiFi together with the Arduino, especially in a small, low power package, is a really natural fit. For example, every Arduino-powered robotics or LED project is made immensely cooler by having the capability to control it from your smartphone baked right in.

Since the Arachnio is small and low power, it also makes a great brain for a remote sensor. The fact that it's an Arduino variant makes the programming simple and the wealth of on-board peripherals make it straightforward to connect most common sensors. WiFi lets your remote sensor connect to your phone or tap into the Internet to get the data back to you.

Including both the ESP8266 and the 32u4 on a single board provides a much more useful package than either one alone. The capabilities of the ESP8266 and the 32u4 complement each other nicely. Here are some of the advantages of the Arachnio over an ESP8266 module alone:

  • More GPIO -- The Arachnio has more than twice as many GPIO pins available as any ESP8266 module.
  • More ADC -- The Arachnio has twelve usable analog to digital channels versus a single channel for an ESP8266.
  • Hardware PWM
  • Dedicated hardware I2C and SPI interfaces
  • Full Arduino library compatibility 
  • Native USB -- The Arachnio's ATmega32u4 provides a full speed hardware USB interface. The Arduino environment provides libraries that make the USB function as a serial port, a mouse, or a USB keyboard.
  • Breadboard compatible -- The Arachnio's headers are on 0.1" centers and narrow enough to fit into standard breadboards with room to plug jumpers in on both sides.

And of course the ESP8266 provides WiFi and, for more advanced users, a more powerful processor to use for more computationally intensive tasks.

All of the vital statistics can be found on the Arachnio product page.

I decided I also needed a couple of expansion boards available immediately in order to really make it sing. The first is of course a prototyping board, the ArachnoProto.

ArachnoProto with Arachnio and supports

ArachnoProto with Arachnio and supports

The ArachnoProto is designed to fill the same role as an Arduino protoshield. It has two large prototyping areas, a programming header,  mounting holes for 3mm screws, two LEDs and a pair of push buttons.

You can tell this is a prototype because the board house managed to mess up my logo on the board.

There's also another less obvious feature here, which is that this board has been assembled with bottom-entry headers on the underside. The upshot of this is that the assembled Arachnio + ArachnoProto is much thinner than with conventional headers. These headers are included with every ArachoProto.

The Arachnode is designed to give users a way to quickly build flexible and independent sensor and network nodes. It has a solar battery charger, a real time clock, a microSD card slot, and an optional crypto module.

I just got a new release candidate board which has some tweaks arising from the testing we've been doing, mostly to improve fit and clearances. This is the first one that's really feature complete, since I've been focusing on the Arachnio rather than the Arachnode for most of my development. I haven't had time to assemble the new ones, but here's the bare PCB:

Arachnode bare board

Arachnode bare board

One of the things I've enjoyed doing that I wish more Kickstarter creators would do is post Instructables for the Arachnio. I've only got two of them up so far, but they address questions that people have asked me about using the Arachnio.

Please don't forget to back the Arachnio on Kickstarter so we can make it a reality!


Thanks to gorgeous weather here in Seattle yesterday, I was able to get some great pictures of the ArachnoProto and Arachnode prototypes.









Tag Cloud