Jason Kridner was kind enough to top up our stock of Beaglebone Blacks for development at MakerFaire this weekend, and in exchange he asked me to talk a bit about why we chose the Beaglebone.
Driving an autonomous boat around the world is a hard problem. The ocean is a very harsh environment, and even basic navigation and propulsion present major challenges. We realized early on that we needed more processing grunt than we could get out of an Arduino for making high-level navigation decisions. In particular, obstacle avoidance and weather routing require substantial amounts of memory and processing resources that Arduinos largely lack. At the same time, every watt is precious on a boat powered by solar cells or the wind, so we needed to keep the power requirements low.
This led us to choose a federated architecture, with an Arduino handling the low-level real time control and an embedded Linux computer handling the higher level functions. The intent is for the Linux box to spend most of its time asleep and only wake up ever five to ten minutes to scan the horizon, parse incoming weather data, make path planning decisions, and then go back to sleep. The Arduino handles steering a course, propulsion management, and vehicle health monitoring. If the Linux box does not wake up on time, the Arduino reboots it. Note that this time frame for sleep/wake cycles is more than fast enough. The fastest ships encountered in the open ocean typically travel at 30 knots or less. That means they only move 250-500 feet between cycles... and they can be seen for more than ten miles. The ocean is a big place, so things happen relatively slowly compared to other autonomous vehicle domains.
When we were making our initial hardware choices a couple of years back, there were really only three cheap embedded Linux boards we knew of -- Arduino Yun, Rasberry Pi, and Beaglebone Black. Despite the fact that it appears to combine the two things we want, we kicked Arduino Yun out immediately. It's dreadfully slow and its onboard storage and RAM are tiny. This left us looking at Raspberry Pi B vs the Beaglebone White. At that time, getting a BBB was a crap shoot, so our Beaglebone candidate was the Beaglebone Whites I had on hand from an earlier project.
The Raspberry Pi B had one major advantage -- it had 512 MB of RAM vs the 256 MB of the BBW. However, the BBW spanked it on just about every other metric and we knew we were going to get the RAM as soon as we were able to score a BBB. We didn't know about the PRUs yet, so it came down to two big advantages and one initially small one.
First, the Beaglebone is almost 50% faster, at 1 GHz (vs 700 MHz for the RasPi B). This is important because it meant we could wake it up for shorter periods to do the same work. Since the Beaglebone has slightly lower power consumption, this is a big advantage for the Beaglebone.
Second, it has several times as much I/O available as the RasPi, which meant that we had room to add future vehicle health monitoring and more subsystems without changing platforms or too much messing around. This was important enough that when we built the brain box, we broke out every pin to an empty header to allow us to quickly and easily add more stuff. As you can see, we wasted no time at all exploiting this.
Third, Beaglebone is a substantially more open platform than RasPi in practice. In particular, you can order small quantities of key parts rather than having to deal with massive minimum orders. This was a minor consideration at the time, but the announcement of the Beaglebone Blue reinforced it as a significant long term advantage. The RasPi notably does not have any special-purpose variants, and I believe that is due to a functionally much more closed hardware platform.
Our current brain box design mates the Beaglebone, an Arduino Mega, an Adafruit 9-axis IMU, and an Adafruit Ultimate GPS breakout. We stuffed it in an off the shelf IP-68 case. The connectors are M8 and M12s, which are a standard IP-68 connector system. Mouser, Automation Direct, and McMaster-Carr all carry the connectors and cable sets.
As soon as the Beaglebone Blue comes out, we're going to move over to it. Our current brain box includes a 9-axis IMU and a WiFi interface... which the Blue comes with out of the box. That's a really solid win in cost and complexity. The inclusion of BLE gives us interesting options for networking in remote sensors and actuators at minimal power cost.
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.
Thanks Pierce!
Are you sure? yes | no