Archive for the ‘The Lab’ Category

Hackerboat Progress

Posted by Pierce Nichols on 26 August 2016

Since the last update, we've gotten in the water one more time (in late July) and we've made some substantial design changes. First off, here's a video of my talk at Toorcamp that Alex was kind enough to put together:

During our July launch, we discovered a pretty serious limitation in our comms -- we lose connection on the 900 MHz at anything over about a quarter of a mile. You can really see it in our composite map from our October, June, and July launches:

Hackerboat Test Map

The placemark farther from the shore, at the top of the ramp, is our shore station for the October and June launches, while the one out on the point was our ground station in July. If you measure on the map, you will see we maxed out about a quarter mile from the shore station, which is a massive bummer. OTOH, we were able to bring the boat back to the dock under its own power in July, which was a nice change.

One of our big takeaways from this was that our system needed some major overhauling, and we decided to redo it from the ground up (again). Among other things, we decided to move the REST interface off the boat and on to a control server. This allows us to more easily use cellphone and satellite communications, since most of those systems are designed to exclude inbound communications. The biggest changes are as follows:

  • Remove the Arduino and go to a Beaglebone-only system. The BBB has the I/O capability to carry the whole load and it removes a major complication in the software. The difference in power consumption is not that high at the stage we are operating at today.
  • Add a cellphone module. We are going to be using an Adafruit Fona in the longer term, but in the shorter term, one of our supporters has promised us the use of a portable hotspot.
  • Replace the Wifi dongle with a Ubiquiti Nanostation. I already have the NanoStation, and this should end our odd dongle problems and provide a network access point for the onboard network. To this end, the new motherboard includes a boost converter to provide 15VDC PoE to the Nanostation.
  • Reconfigure the enable/stop function to be driven by a latching relay in a new power distribution box. This arrangement allows us to make the stop button enact a hard cut of all motor and actuator power.
  • Power distribution box with per-system power switches
  • Beaglebone reset switch and console accessible from outside the drybox.
  • New drybox and connectors. We'll be using SP-13s, since they are about the least expensive waterproof connectors available on eBay.
  • IMG_20160820_171611

  • Add an RC input to give us finer manual control. We bought a Turnigy 9XR with an FrSky XJT/X8R radio combo. Among the nice features of this radio, it has a serial output called S.BUS, an RSSI output, and telemetry back to the shore unit. We chose this one because the 9XR's firmware is open source and it has an embarrassment of buttons, switches and knobs.
  • Mast-mounted omnidirectional status lights. This also neatly solves our running lights issue for longer range operations.
  • The control server will be in the cloud, and the boat will contact it for commands.
  • Use of KML as our internal representation for waypoints. This makes designing the interface super easy, since we can use a Google Maps plugin directly. The resulting files can be readily managed with github.

Our top priority right now is getting the new hardware squared away, along with its software. We're also going to try to get the next rev of the sails done before mid-September. This is especially important because I realized I made a serious math error that overestimated the necessary power of the tail by a factor of four or five. Redoing it means I can get the tail right this time.

I will also be at XOXO in a couple of weeks and at the Open Source Hardware Summit at the beginning of October -- if you are going to be there, please come say hi. Hackerboat will also have a booth at Seattle Mini MakerFaire on Sep 17-18. We'll definitely be outside, although not quite sure of where yet.

Hackerboat launch!

Posted by Pierce Nichols on 26 June 2016

We launched the boat for a test on Saturday, 25 June 2016. I'll write bigger post later, but in the meantime, here's some awesome drone video shot by 3ric.

This is a bit late in coming, because Makerfaire ate my brain and there were some temporary blog issues. Toorcamp is next week and we're hoping that we can get some nice autonomous trips in while we are there.

At the end of our last episode, we had filled in the rough areas around the hatches, sanded, and primed the boat. The 'bright orange' paint looked a bit more ketchup red in the can, even after thinning for application. This, as it happens, is also the first time I've gone about thinning paint before applying it, and I'm kicking myself for only now discovering what a difference it makes.

Getting two coats of the orange paint on the boat stretched over a couple of weekends. This is because we needed to hand-sand between coats and because getting the boat outside while it's sunny turned out to be a bit of a production. At the end of painting, we even put a nice black diode stripe on the bow so we can tell what direction it's going even if it's several hundred yards away. That was a problem when we took it out last October.

That's enough talking; here are some nice pictures of the boat after we were mostly done:




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.

Hackerboat launch

Posted by Pierce Nichols on 22 November 2015

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  


Tag Cloud